158 lines
6.4 KiB
Plaintext
158 lines
6.4 KiB
Plaintext
|
//::///////////////////////////////////////////////
|
||
|
//:: 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);
|
||
|
|
||
|
}
|