2024-06-20 15:47:42 -04:00

93 lines
3.3 KiB
Plaintext

void Raise(object oPC)
{
effect eVisual = EffectVisualEffect(VFX_IMP_RESTORATION);
effect eBad = GetFirstEffect(oPC);
ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectResurrection(),oPC);
ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectHeal(GetMaxHitPoints(oPC)), oPC);
//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(oPC, eBad);
}
eBad = GetNextEffect(oPC);
}
//Fire cast spell at event for the specified target
SignalEvent(oPC, EventSpellCastAt(OBJECT_SELF, SPELL_RESTORATION, FALSE));
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVisual, oPC);
}
void main()
{
object oPC = GetLastPlayerDied();
//give anti-cheat item
if (GetItemPossessedBy(oPC, "Death")== OBJECT_INVALID)
{
CreateItemOnObject("death", oPC, 1);
}
//gets rid of flag FX if player is a CTF flag carrier
if (GetLocalInt(oPC, "HasFlag") == 1)
{
string sName = GetName(oPC);
SendMessageToAllDMs (" "+ sName +" has died with the flag!");
SetLocalInt (oPC, "HasFlag", 0);
//removes flag effect
effect eLoop=GetFirstEffect(oPC);
while (GetIsEffectValid(eLoop))
{
if (GetEffectType(eLoop)==EFFECT_TYPE_VISUALEFFECT)
RemoveEffect(oPC, eLoop);
eLoop=GetNextEffect(oPC);
}
}
// * make friendly to Each of the 3 common factions
AssignCommand(oPC, ClearAllActions());
// * Note: waiting for Sophia to make SetStandardFactionReptuation to clear all personal reputation
if (GetStandardFactionReputation(STANDARD_FACTION_COMMONER, oPC) <= 10)
{ SetLocalInt(oPC, "NW_G_Playerhasbeenbad", 10); // * Player bad
SetStandardFactionReputation(STANDARD_FACTION_COMMONER, 80, oPC);
}
if (GetStandardFactionReputation(STANDARD_FACTION_MERCHANT, oPC) <= 10)
{ SetLocalInt(oPC, "NW_G_Playerhasbeenbad", 10); // * Player bad
SetStandardFactionReputation(STANDARD_FACTION_MERCHANT, 80, oPC);
}
if (GetStandardFactionReputation(STANDARD_FACTION_DEFENDER, oPC) <= 10)
{ SetLocalInt(oPC, "NW_G_Playerhasbeenbad", 10); // * Player bad
SetStandardFactionReputation(STANDARD_FACTION_DEFENDER, 80, oPC);
}
DelayCommand(2.5, PopUpGUIPanel(oPC,GUI_PANEL_PLAYER_DEATH));
//PrC2 stuff
ExecuteScript("prc_ondeath", OBJECT_SELF);
}