In response to Toadfish
Are you talking about taking 25% from the current health rather than the value of 25% of the maximum health? That's just... odd... in my opinion... but it could work that way too I suppose. I was just going to make it so their current health would never drop below 1 as a result of being fatigued. So in the case you speak of, the person would have 1 health instead of 0.
In response to Spunky_Girl
It's a matter of intention: are you trying to equally scale down maximum health and current health, or are you trying to reduce both health and maximum health by the same number? In the first case, the ratio of the maximum health and current health remains the same (because x / y = (x - 0.25x) / (y - 0.25y)), but in the second case it changes (as x / y != (x - 0.25y)/(y - 0.25y)). Will this do, or would you like a more detailed explanation?
In response to Toadfish
This particular condition is modeled after the condition "Deep Wound" on Guild Wars. Here is where you can read about it. Yes, it's a Wikia page, but the wikia is much better than the "official" wiki in my opinion.
In response to Spunky_Girl
In this case, the scaling is uneven, so I suppose what you're doing is correct if you want to copy the effect. It does look like a very poorly thought of status effect, though (pretty much kills a target if it's within 20% of its maximum HP... I do hope bosses are immune to it).
In response to Toadfish
How is the scaling uneven? When you lose an amount of maximum health, you should lose the same amount in your current health. If you're at 1 health already, then the condition wouldn't make much of a difference, now would it? It's basically just you losing 25% health in general, permanently (even though it's temporary, so you get it back eventually). It's like you never had that health in the first place, which is the whole idea.
In response to Spunky_Girl
Scaling is the act of measuring according to a relative magnitude. In other words, keeping the ratio. As I explained, the ratio between health and maximum health is preserved in the case of 0.75x/0.75y, but not in the case of (x - 0.25y)/(y - 0.25y) (think of x as 'current health' and y as 'maximum health). You're doing the latter.
In response to Toadfish
Oh, I see what you're getting at. But again, the whole idea is to make it seem like you never had the health in the first place. So someone who had 100 max HP and 25 current HP would be in the same situation as someone with 200 max HP and 50 current HP if they both were inflicted with fatigue. It can be scaled in that way, if I am correct?
In response to Spunky_Girl
A percentage is a relative representation of quantity. To say my current health is 50% of my maximum health is to say I have the half of my maximum health as my current health. It doesn't deal with the quantities themselves.

So, in short, yes, you're correct, but only if all your attacks deal with percentages. But a good combat system will combine status effects that deal both direct, and relative damage. A regular attack, for example, should most likely deal a set quantity of damage (such as "1d6"). While your "fatigue" status effect can be used to deal relative damage. Note that the effect of "fatigue" is relative to the amount of HP your opponent has, while the effect of a regular attack remains the same (well, a less abstract RPG would make this not entirely clear-cut, because your opponent can have "elemental resistance", armour, or somesuch).
In response to Toadfish
Fatigue is the only condition that will deal any sort of damage (relative damage as you call it), even though it's "temporary" damage. But this is starting to stray from the original topic. I appreciate everyone's help on my original dilemma. :) Thank you, all.
In response to Spunky_Girl
Making a certain datum for stats would not be such a bad idea.

For the sake of example
stat1
var
// base values
val = 100
max = 100
// buffs
buff = 0
maxbuff = 0 // in percent
tmp // buffs that won't be saved
tbuff = 0
tmaxbuff = 0

proc
value()
return val+buff+tbuff
max()
return max*(1+(maxbuff+tmaxbuff)/100)
New(n)
if(isnum(n))
max=n
val=n // full by default
mob
var/stat1/hp = new(100)

condition/fatigue
var/value
effect(mob/a)
var/orig_max = a.hp.max()
a.hp.tmaxbuff += -25 // percent
value = -(orig_max - a.hp.max())
a.hp.tbuff += value
//... more action

remove(mob/a)
a.hp.tmaxbuff += 25
a.hp.tbuff += -value


The calculations are up to you. Hope you get the idea.
Page: 1 2