//:://///////////////////////////////////////////// //:: Regenerate //:: NW_S0_Regen //:: Copyright (c) 2001 Bioware Corp. //::////////////////////////////////////////////// /* Grants the selected target 6 HP of regeneration every round. */ //::////////////////////////////////////////////// //:: Created By: Preston Watamaniuk //:: Created On: Oct 22, 2001 //::////////////////////////////////////////////// #include "x2_inc_spellhook" #include "x0_i0_spells" void main() { /* Spellcast Hook Code Added 2003-06-23 by GeorgZ If you want to make changes to all spells, check x2_inc_spellhook.nss to find out more */ if (!X2PreSpellCastCode()) { // If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell return; } // End of Spell Cast Hook //Declare major variables object oTarget = GetSpellTargetObject(); // Activating Tarashon's unique regenerate spell system for "Alangara - New Dawn" ! int nHP; nHP = 3; // *** Setting the various class modifications to all healing *** // // * SINGLE CLASS Fighters gain +6 * 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 = 6; } // * 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 = 8; } // * Any character having Barbarian levels gain +3 * else if ( GetLevelByClass(CLASS_TYPE_BARBARIAN, oTarget) > 0 ) { nHP = 5; } // * Any character having Fighter levels gain +3 * else if ( GetLevelByClass(CLASS_TYPE_FIGHTER, oTarget) > 0 ) { nHP = 5; } // * Any character having Ranger or Paladin levels get +2. * else if ( GetLevelByClass(CLASS_TYPE_RANGER, oTarget) > 0 || GetLevelByClass(CLASS_TYPE_PALADIN, oTarget) > 0 ) { nHP = 4; } // *** End of Tarashon's regenerate system modifiers *** // 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); //Meta-Magic Checks if (nMeta == METAMAGIC_EXTEND) { nLevel *= 2; } SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_REGENERATE, FALSE)); // Prevent stacking - seeker 17/6/05 RemoveEffectsFromSpell(oTarget, GetSpellId()); //Apply effects and VFX ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eLink, oTarget, HoursToSeconds(nLevel)); ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oTarget); }