Wiz
11-24-2002, 02:35 AM
This is a really simple code structure.
First, put:
int16 rune;
void SetRune(int16 amount) {rune = amount;}
int16 GetRune() {return rune;}
into mob.h
Then:
rune = 0;
into Mob::Mob in mob.cpp
Then, put this into ChangeHP() in attack.cpp:
int16 ramt = GetRune();
if (ramt > 0 && amount < 0)
{
if (amount + ramt <= 0)
{
amount += ramt;
ramt = 0;
}
else
{
ramt += amount;
amount = 0;
}
if (ramt == 0)
this->BuffFadeByEffect(SE_Rune);
SetRune(ramt);
}
And this under both Damage functions in attack.cpp:
int16 ramt = GetRune();
if (ramt > 0 && damage > 0)
{
if (damage > ramt)
{
damage -= ramt;
ramt = 0;
}
else
{
ramt -= damage;
damage = -6;
}
if (ramt == 0)
this->BuffFadeByEffect(SE_Rune);
SetRune(ramt);
}
Finally, this under SE_Rune in spells.cpp:
SetRune(CalcSpellValue(spells[spell_id].formula[i] , spells[spell_id].base[i], spells[spell_id].max[i], caster_level));
And you're done!
First, put:
int16 rune;
void SetRune(int16 amount) {rune = amount;}
int16 GetRune() {return rune;}
into mob.h
Then:
rune = 0;
into Mob::Mob in mob.cpp
Then, put this into ChangeHP() in attack.cpp:
int16 ramt = GetRune();
if (ramt > 0 && amount < 0)
{
if (amount + ramt <= 0)
{
amount += ramt;
ramt = 0;
}
else
{
ramt += amount;
amount = 0;
}
if (ramt == 0)
this->BuffFadeByEffect(SE_Rune);
SetRune(ramt);
}
And this under both Damage functions in attack.cpp:
int16 ramt = GetRune();
if (ramt > 0 && damage > 0)
{
if (damage > ramt)
{
damage -= ramt;
ramt = 0;
}
else
{
ramt -= damage;
damage = -6;
}
if (ramt == 0)
this->BuffFadeByEffect(SE_Rune);
SetRune(ramt);
}
Finally, this under SE_Rune in spells.cpp:
SetRune(CalcSpellValue(spells[spell_id].formula[i] , spells[spell_id].base[i], spells[spell_id].max[i], caster_level));
And you're done!