113 lines
3.2 KiB
Plaintext
113 lines
3.2 KiB
Plaintext
//::///////////////////////////////////////////////
|
|
//:: [Ressurection]
|
|
//:: [NW_S0_Ressurec.nss]
|
|
//:: Copyright (c) 2000 Bioware Corp.
|
|
//:://////////////////////////////////////////////
|
|
//:: Brings a character back to life with full
|
|
//:: health.
|
|
//:: When cast on placeables, you get a default error message.
|
|
//:: * You can specify a different message in
|
|
//:: X2_L_RESURRECT_SPELL_MSG_RESREF
|
|
//:: * You can turn off the message by setting the variable
|
|
//:: to -1
|
|
//:://////////////////////////////////////////////
|
|
//:: Created By: Preston Watamaniuk
|
|
//:: Created On: Jan 31, 2001
|
|
//:://////////////////////////////////////////////
|
|
//:: Last Updated By: Georg Z on 2003-07-31
|
|
//:: VFX Pass By: Preston W, On: June 22, 2001
|
|
|
|
#include "x2_inc_spellhook"
|
|
#include "mn_i_pcskin"
|
|
|
|
void main()
|
|
{
|
|
|
|
/*
|
|
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())
|
|
{
|
|
// If code within the PreSpellCastHook (i.e. UMD) reports FALSE, do not run this spell
|
|
return;
|
|
}
|
|
|
|
// End of Spell Cast Hook
|
|
|
|
|
|
//Get the spell target
|
|
object oTarget = GetSpellTargetObject();
|
|
//Check to make sure the target is dead first
|
|
//Fire cast spell at event for the specified target
|
|
if (GetIsObjectValid(oTarget))
|
|
{
|
|
SignalEvent(oTarget, EventSpellCastAt(OBJECT_SELF, SPELL_RESURRECTION, FALSE));
|
|
if (GetIsDead(oTarget))
|
|
{
|
|
//Declare major variables
|
|
int nHealed = GetMaxHitPoints(oTarget);
|
|
effect eRaise = EffectResurrection();
|
|
effect eHeal = EffectHeal(nHealed + 10);
|
|
effect eVis = EffectVisualEffect(VFX_IMP_RAISE_DEAD);
|
|
//Apply the heal, raise dead and VFX impact effect
|
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, eRaise, oTarget);
|
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, eHeal, oTarget);
|
|
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eVis, GetLocation(oTarget));
|
|
|
|
/// tarashon is messing around
|
|
{
|
|
int nXP = GetXP(oTarget);
|
|
int nPenalty = 45 * GetHitDice(oTarget);
|
|
|
|
if (nPenalty > 1125)
|
|
{
|
|
nPenalty = 1125;
|
|
}
|
|
|
|
|
|
int nHD = GetHitDice(oTarget);
|
|
|
|
int nNewXP = nXP + nPenalty;
|
|
|
|
SetXP(oTarget, nNewXP);
|
|
int nGoldToGive = FloatToInt(0.05 * GetGold(oTarget));
|
|
// * a cap of 10 000gp taken from you
|
|
|
|
if (nGoldToGive > 45000)
|
|
{
|
|
nGoldToGive = 45000;
|
|
}
|
|
|
|
AssignCommand(oTarget, TakeGoldFromCreature(-nGoldToGive, oTarget, TRUE));
|
|
DelayCommand(4.0, FloatingTextStrRefOnCreature(58299, oTarget, FALSE));
|
|
DelayCommand(4.8, FloatingTextStrRefOnCreature(58300, oTarget, FALSE));
|
|
setupSpecialEffects(oTarget);
|
|
|
|
}
|
|
/// tarashon stopped
|
|
|
|
}
|
|
else
|
|
{
|
|
if (GetObjectType(oTarget) == OBJECT_TYPE_PLACEABLE)
|
|
{
|
|
int nStrRef = GetLocalInt(oTarget,"X2_L_RESURRECT_SPELL_MSG_RESREF");
|
|
if (nStrRef == 0)
|
|
{
|
|
nStrRef = 83861;
|
|
}
|
|
if (nStrRef != -1)
|
|
{
|
|
FloatingTextStrRefOnCreature(nStrRef,OBJECT_SELF);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|