EQEmulator Forums

EQEmulator Forums (https://www.eqemulator.org/forums/index.php)
-   Archive::Development (https://www.eqemulator.org/forums/forumdisplay.php?f=621)
-   -   Code for Healing Adept and Healing Gift cleric AAs - UPDATED (https://www.eqemulator.org/forums/showthread.php?t=8555)

killspree 07-07-2003 04:39 AM

Code for Healing Adept and Healing Gift cleric AAs - UPDATED
 
The following are additions to the SE_CurrentHP code in spells.cpp to allow players to increase their heal values by a certain percentage permenantly, as well as crit their heals for double the value of the spell on occasion.

zone/spells.cpp ~line 1907 change:

Code:

                else if (spells[spell_id].effectid[i] == SE_CurrentHP && dmg > 0) {
                        if (caster && caster->IsClient()) {
                                dmg = caster->CastToClient()->GetActSpellValue(spell_id, dmg);
                        }
                }

To:

Code:

                else if (spells[spell_id].effectid[i] == SE_CurrentHP && dmg > 0) {
                        if (caster && caster->IsClient()) {
                                dmg = caster->CastToClient()->GetActSpellValue(spell_id, dmg);
                               
                                /*healing adept*/

                uint8 *aa_item = &(((uint8 *)&caster->CastToClient()->aa)[18]);

                                if(*aa_item == 1) { dmg = dmg*1.02; }
            if(*aa_item == 2) { dmg = dmg*1.05; }
                                if(*aa_item == 3) { dmg = dmg*1.10; }

                                int chance =0;float ratio =1.0;

                                /*healing gift*/

                uint8 *aa_item2 = &(((uint8 *)&caster->CastToClient()->aa)[19]);

                                if(*aa_item2 == 1) {chance+=3; ratio += 1.0;}

                                if(*aa_item2 == 2) {chance+=6; ratio += 1.0;}

                                if(*aa_item2 == 3) {chance+=10; ratio += 1.0;}

                                if(rand()%100 <= chance) { dmg*= ratio;                               
                               
                                CastToClient()->Message(0, "You perform an exceptional heal! (%d)", dmg); // crit message
                                }
                        }
                }


Jong3503 07-07-2003 02:17 PM

toss me an email at callieaoem@yahoo.com bud.

kathgar 07-07-2003 02:26 PM

That would also effect any cleric or whatever direct damage spells, through a if(beneficial) in there

killspree 07-08-2003 03:08 AM

Ok, thanks kathgar for reminding me about the beneficial check - here's updated code with a beneficial check so it only improves heals.


zone/spells.cpp ~line 1907 change:

Code:

      else if (spells[spell_id].effectid[i] == SE_CurrentHP && dmg > 0) {
        if (caster && caster->IsClient()) {
            dmg = caster->CastToClient()->GetActSpellValue(spell_id, dmg);
        }
      }

To:

Code:

      else if (spells[spell_id].effectid[i] == SE_CurrentHP && dmg > 0) {
        if (caster && caster->IsClient() && spells[spell_id].goodEffect == 1) {
            dmg = caster->CastToClient()->GetActSpellValue(spell_id, dmg);
           
            /*healing adept*/

                uint8 *aa_item = &(((uint8 *)&caster->CastToClient()->aa)[18]);

            if(*aa_item == 1) { dmg = dmg*1.02; }
            if(*aa_item == 2) { dmg = dmg*1.05; }
            if(*aa_item == 3) { dmg = dmg*1.10; }

            int chance =0;float ratio =1.0;

            /*healing gift*/

                uint8 *aa_item2 = &(((uint8 *)&caster->CastToClient()->aa)[19]);

            if(*aa_item2 == 1) {chance+=3; ratio += 1.0;}

            if(*aa_item2 == 2) {chance+=6; ratio += 1.0;}

            if(*aa_item2 == 3) {chance+=10; ratio += 1.0;}

            if(rand()%100 <= chance) { dmg*= ratio; }
        }
      }

Took out the crit message for now.


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

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