// //:: Changed script so that spell restoration does not remove subracial bonus //:: ability changes. //:://///////////////////////////////////////////// //:: [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 // Jasperre: // - To make this operate effectivly, the AI that is, the PC speaks silently // when they are raised, to let NPC's get them :-P // This is not required, but is a simple addition. // - It also adds NPC re-targeting to get them back into combat. #include "x2_inc_spellhook" #include "sha_subr_methds" #include "x0_i0_campaign" 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)); // Jasperre's additions... AssignCommand(oTarget, SpeakString("I AM ALIVE!", TALKVOLUME_SILENT_TALK)); if(!GetIsPC(oTarget) && !GetIsDMPossessed(oTarget)) { // Default AI script ExecuteScript("nw_c2_default3", oTarget); } //-----------Modification made for Shayan's Subrace Engine if(GetIsPC(oTarget)) { SetCampaignDBInt(oTarget, "PLAYERHASDIED", FALSE); SetLocalInt(oTarget, "DEAD_TIME_REMAINING", 0); ReapplySubraceAbilities(oTarget); } //---------End Modification by Shayan } 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); } } } } }