//:://///////////////////////////////////////////// //:: Monstrous Regeneration //:: X2_S0_MonRegen //:: Copyright (c) 2001 Bioware Corp. //::////////////////////////////////////////////// /* Grants the selected target 3 HP of regeneration every round. */ //::////////////////////////////////////////////// //:: Created By: Andrew Nobbs //:: Created On: Nov 25, 2002 //::////////////////////////////////////////////// //:: Last Updated By: Andrew Nobbs May 09, 2003 //:: 2003-07-07: Stacking Spell Pass, Georg Zoeller #include "x2_inc_spellhook" #include "x0_i0_spells" void main() { // tarashon //-------------------------------------------------------------------------- // Spellcast Hook Code // Added 2003-06-20 by Georg // If you want to make changes to all spells, check x2_inc_spellhook.nss to // find out more //-------------------------------------------------------------------------- if (!X2PreSpellCastCode()) { return; } // End of Spell Cast Hook object oTarget = GetSpellTargetObject(); // Activating Tarashon's unique regenerate spell system for "Alangara - New Dawn" ! int nHP; nHP = 1; // *** Setting the various class modifications to all healing *** // // * SINGLE CLASS Fighters gain +4 * if ( GetLevelByClass(CLASS_TYPE_BARBARIAN, oTarget) == 0 && GetLevelByClass(CLASS_TYPE_BARD, oTarget) == 0 && GetLevelByClass(CLASS_TYPE_CLERIC, oTarget) == 0 && GetLevelByClass(CLASS_TYPE_DRUID, oTarget) == 0 && GetLevelByClass(CLASS_TYPE_MONK, oTarget) == 0 && GetLevelByClass(CLASS_TYPE_PALADIN, oTarget) == 0 && GetLevelByClass(CLASS_TYPE_RANGER, oTarget) == 0 && GetLevelByClass(CLASS_TYPE_ROGUE, oTarget) == 0 && GetLevelByClass(CLASS_TYPE_SORCERER, oTarget) == 0 && GetLevelByClass(CLASS_TYPE_WIZARD, oTarget) == 0 && GetLevelByClass(CLASS_TYPE_ARCANE_ARCHER, oTarget) == 0 && GetLevelByClass(CLASS_TYPE_ASSASSIN, oTarget) == 0 && GetLevelByClass(CLASS_TYPE_BLACKGUARD, oTarget) == 0 && GetLevelByClass(CLASS_TYPE_DIVINE_CHAMPION, oTarget) == 0 && GetLevelByClass(CLASS_TYPE_DWARVEN_DEFENDER, oTarget) == 0 && GetLevelByClass(CLASS_TYPE_HARPER, oTarget) == 0 && GetLevelByClass(CLASS_TYPE_PALE_MASTER, oTarget) == 0 && GetLevelByClass(CLASS_TYPE_PURPLE_DRAGON_KNIGHT, oTarget) == 0 && GetLevelByClass(CLASS_TYPE_DRAGON_DISCIPLE, oTarget) == 0 && GetLevelByClass(CLASS_TYPE_SHADOWDANCER, oTarget) == 0 && GetLevelByClass(CLASS_TYPE_SHIFTER, oTarget) == 0 && GetLevelByClass(CLASS_TYPE_WEAPON_MASTER, oTarget) == 0 ) { nHP = 4; } // * SINGLE CLASS Barbarians gain +5 * else if ( GetLevelByClass(CLASS_TYPE_FIGHTER, oTarget) == 0 && GetLevelByClass(CLASS_TYPE_BARD, oTarget) == 0 && GetLevelByClass(CLASS_TYPE_CLERIC, oTarget) == 0 && GetLevelByClass(CLASS_TYPE_DRUID, oTarget) == 0 && GetLevelByClass(CLASS_TYPE_MONK, oTarget) == 0 && GetLevelByClass(CLASS_TYPE_PALADIN, oTarget) == 0 && GetLevelByClass(CLASS_TYPE_RANGER, oTarget) == 0 && GetLevelByClass(CLASS_TYPE_ROGUE, oTarget) == 0 && GetLevelByClass(CLASS_TYPE_SORCERER, oTarget) == 0 && GetLevelByClass(CLASS_TYPE_WIZARD, oTarget) == 0 && GetLevelByClass(CLASS_TYPE_ARCANE_ARCHER, oTarget) == 0 && GetLevelByClass(CLASS_TYPE_ASSASSIN, oTarget) == 0 && GetLevelByClass(CLASS_TYPE_BLACKGUARD, oTarget) == 0 && GetLevelByClass(CLASS_TYPE_DIVINE_CHAMPION, oTarget) == 0 && GetLevelByClass(CLASS_TYPE_DWARVEN_DEFENDER, oTarget) == 0 && GetLevelByClass(CLASS_TYPE_HARPER, oTarget) == 0 && GetLevelByClass(CLASS_TYPE_PALE_MASTER, oTarget) == 0 && GetLevelByClass(CLASS_TYPE_PURPLE_DRAGON_KNIGHT, oTarget) == 0 && GetLevelByClass(CLASS_TYPE_DRAGON_DISCIPLE, oTarget) == 0 && GetLevelByClass(CLASS_TYPE_SHADOWDANCER, oTarget) == 0 && GetLevelByClass(CLASS_TYPE_SHIFTER, oTarget) == 0 && GetLevelByClass(CLASS_TYPE_WEAPON_MASTER, oTarget) == 0 ) { nHP = 5; } // * Any character having Barbarian levels gain +3 * else if ( GetLevelByClass(CLASS_TYPE_BARBARIAN, oTarget) > 0 ) { nHP = 3; } // * Any character having Fighter levels gain +3 * else if ( GetLevelByClass(CLASS_TYPE_FIGHTER, oTarget) > 0 ) { nHP = 3; } // * Any character having Ranger or Paladin levels get +2. * else if ( GetLevelByClass(CLASS_TYPE_RANGER, oTarget) > 0 || GetLevelByClass(CLASS_TYPE_PALADIN, oTarget) > 0 ) { nHP = 2; } // *** End of Tarashon's regenerate system modifiers *** // /* Bug fix 21/07/03: Andrew. Lowered regen to 3 HP per round, instead of 10. */ effect eRegen = EffectRegenerate(nHP, 6.0); effect eVis = EffectVisualEffect(VFX_IMP_HEAD_NATURE); effect eDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE); effect eLink = EffectLinkEffects(eRegen, eDur); int nMeta = GetMetaMagicFeat(); int nLevel = (GetCasterLevel(OBJECT_SELF)/2)+1; if (nMeta == METAMAGIC_EXTEND) { nLevel *= 2; } // Stacking Spellpass, 2003-07-07, Georg ... just in case RemoveEffectsFromSpell(oTarget, GetSpellId()); SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, GetSpellId(), FALSE)); //Apply effects and VFX ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, HoursToSeconds(nLevel)); ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); }