64 lines
2.4 KiB
Plaintext
64 lines
2.4 KiB
Plaintext
//raise_immo
|
|
|
|
//This script will automatically ressurect the immortal back to life
|
|
//This script is controlled from the OnPlayerDeath event!
|
|
|
|
//Prototype
|
|
void Raise(object oPlayer);
|
|
|
|
//Main Script...
|
|
void main()
|
|
{
|
|
//The caller of the script...
|
|
object oPC = OBJECT_SELF;
|
|
|
|
//Raise the PC back to life..
|
|
Raise(oPC);
|
|
|
|
//Do a fancy visual effect on them :)
|
|
effect eVis = EffectVisualEffect(VFX_FNF_NATURES_BALANCE, FALSE);
|
|
DelayCommand(0.3, ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPC, 0.0f));
|
|
|
|
//Restore their immortal powers
|
|
DelayCommand(0.5, ExecuteScript("powerimmortal", oPC));
|
|
}
|
|
|
|
///////////////////////////////////////////////////////////////
|
|
// Raise OnDeath function (Standard Bioware Function)
|
|
void Raise(object oPlayer)
|
|
{
|
|
effect eVisual = EffectVisualEffect(VFX_IMP_RESTORATION);
|
|
|
|
effect eBad = GetFirstEffect(oPlayer);
|
|
ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectResurrection(),oPlayer);
|
|
ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectHeal(GetMaxHitPoints(oPlayer)), oPlayer);
|
|
|
|
//Search for negative effects
|
|
while(GetIsEffectValid(eBad))
|
|
{
|
|
if (GetEffectType(eBad) == EFFECT_TYPE_ABILITY_DECREASE ||
|
|
GetEffectType(eBad) == EFFECT_TYPE_AC_DECREASE ||
|
|
GetEffectType(eBad) == EFFECT_TYPE_ATTACK_DECREASE ||
|
|
GetEffectType(eBad) == EFFECT_TYPE_DAMAGE_DECREASE ||
|
|
GetEffectType(eBad) == EFFECT_TYPE_DAMAGE_IMMUNITY_DECREASE ||
|
|
GetEffectType(eBad) == EFFECT_TYPE_SAVING_THROW_DECREASE ||
|
|
GetEffectType(eBad) == EFFECT_TYPE_SPELL_RESISTANCE_DECREASE ||
|
|
GetEffectType(eBad) == EFFECT_TYPE_SKILL_DECREASE ||
|
|
GetEffectType(eBad) == EFFECT_TYPE_BLINDNESS ||
|
|
GetEffectType(eBad) == EFFECT_TYPE_DEAF ||
|
|
GetEffectType(eBad) == EFFECT_TYPE_PARALYZE ||
|
|
GetEffectType(eBad) == EFFECT_TYPE_NEGATIVELEVEL)
|
|
{
|
|
//Remove effect if it is negative.
|
|
RemoveEffect(oPlayer, eBad);
|
|
}
|
|
eBad = GetNextEffect(oPlayer);
|
|
}
|
|
//Fire cast spell at event for the specified target
|
|
SignalEvent(oPlayer, EventSpellCastAt(OBJECT_SELF, SPELL_RESTORATION, FALSE));
|
|
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVisual, oPlayer);
|
|
|
|
object oDeath = GetItemPossessedBy(oPlayer, "death");
|
|
DestroyObject(oDeath, 0.0f);
|
|
}
|