EQEmulator Forums

EQEmulator Forums (https://www.eqemulator.org/forums/index.php)
-   Archive::Development (https://www.eqemulator.org/forums/forumdisplay.php?f=621)
-   -   Rune spells (https://www.eqemulator.org/forums/showthread.php?t=4022)

Wiz 11-24-2002 02:35 AM

Rune spells
 
This is a really simple code structure.

First, put:
Code:

       
                int16        rune;
        void        SetRune(int16 amount) {rune = amount;}
        int16        GetRune() {return rune;}

into mob.h

Then:
Code:

        rune = 0;
into Mob::Mob in mob.cpp

Then, put this into ChangeHP() in attack.cpp:
Code:

        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:
Code:

        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:
Code:

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
Code:

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.


All times are GMT -4. The time now is 11:46 PM.

Powered by vBulletin®, Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.