PDA

View Full Version : Rune spells


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!

neotokyo
11-24-2002, 03:49 AM
OMG this code has so many problems i cant even start to think about it

did you actually test this??

Wiz
11-24-2002, 07:18 PM
Yes, it works fine. What problems do you refer to?

neotokyo
11-25-2002, 01:38 AM
well ok, actually its just one thing

in case you dont have any special code for damage calculation that you didnt post, the rune buff icon will almost never fade when expired by hitting. except in the few cases where damage equals exactly the amount of rune hp left

the line should read

if (ramt <= 0)
this->BuffFadeByEffect(SE_Rune);


i thought it was more, but obviously i was just confused :rolleyes:

DeletedUser
11-25-2002, 02:48 AM
Does it properly say that the person absorbs the damage tho?

Wiz
11-25-2002, 04:33 AM
Yeah, that's what damage = -6 is for. It says "Your magical skin absorbs the blow!"

And you're right neo. Fixing that. I actually just forgot a ramt = 0; when adapting the code.