#include "prc_inc_racial" #include "utl_i_sqluuid" #include "utl_i_sqlocals" void GetKiller(); 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); } void main() { object oPlayer = GetLastPlayerDied(); // * increment global tracking number of times that I died SQLocalsUUID_SetInt(oPlayer, "NW_L_PLAYER_DIED", SQLocalsUUID_GetInt(oPlayer, "NW_L_PLAYER_DIED") + 1); int iLevel = GetHitDice(oPlayer); int iDeaths; int iDeathAllowed; AssignCommand(oPlayer,GetKiller()); iDeaths = SQLocalsUUID_GetInt(oPlayer,"PCDeaths"); iDeathAllowed = 3 + iLevel - SQLocalsUUID_GetInt(oPlayer,"PCEnterLevel"); if (SQLocalsUUID_GetInt(oPlayer,"PCHardCoreSpecial") == 1) iDeathAllowed = (iLevel+5)/10; if (SQLocalsUUID_GetInt(oPlayer,"PCHardcore") == 0 && SQLocalsUUID_GetInt(oPlayer,"PCHardCorePNP") == 0) { if ((iDeathAllowed - iDeaths) == 1) SendMessageToPC(oPlayer,"You have 1 life left."); else SendMessageToPC(oPlayer,"You have " + IntToString(iDeathAllowed - iDeaths) + " lives left."); } // * make friendly to Each of the 3 common factions AssignCommand(oPlayer, ClearAllActions()); // * Note: waiting for Sophia to make SetStandardFactionReptuation to clear all personal reputation if (GetStandardFactionReputation(STANDARD_FACTION_COMMONER, oPlayer) <= 10) { SQLocalsUUID_SetInt(oPlayer, "NW_G_Playerhasbeenbad", 10); // * Player bad SetStandardFactionReputation(STANDARD_FACTION_COMMONER, 80, oPlayer); } if (GetStandardFactionReputation(STANDARD_FACTION_MERCHANT, oPlayer) <= 10) { SQLocalsUUID_SetInt(oPlayer, "NW_G_Playerhasbeenbad", 10); // * Player bad SetStandardFactionReputation(STANDARD_FACTION_MERCHANT, 80, oPlayer); } if (GetStandardFactionReputation(STANDARD_FACTION_DEFENDER, oPlayer) <= 10) { SQLocalsUUID_SetInt(oPlayer, "NW_G_Playerhasbeenbad", 10); // * Player bad SetStandardFactionReputation(STANDARD_FACTION_DEFENDER, 80, oPlayer); } DelayCommand(2.0, PopUpDeathGUIPanel(oPlayer,TRUE, TRUE,0,"Death has taken you.")); } void GetKiller() { object oKiller = GetLastKiller(); if (oKiller == GetModule()) oKiller = GetLastHostileActor(); SQLocalsUUID_SetString(OBJECT_SELF,"Killer",GetName(oKiller)); SQLocalsUUID_SetInt(OBJECT_SELF,"KillerType",0); if (MyPRCGetRacialType(oKiller) == RACIAL_TYPE_DWARF || MyPRCGetRacialType(oKiller) == RACIAL_TYPE_ELF || MyPRCGetRacialType(oKiller) == RACIAL_TYPE_GIANT || MyPRCGetRacialType(oKiller) == RACIAL_TYPE_GNOME || MyPRCGetRacialType(oKiller) == RACIAL_TYPE_HALFELF || MyPRCGetRacialType(oKiller) == RACIAL_TYPE_HALFLING || MyPRCGetRacialType(oKiller) == RACIAL_TYPE_HALFORC || MyPRCGetRacialType(oKiller) == RACIAL_TYPE_HUMAN || MyPRCGetRacialType(oKiller) == RACIAL_TYPE_HUMANOID_GOBLINOID || MyPRCGetRacialType(oKiller) == RACIAL_TYPE_HUMANOID_MONSTROUS || MyPRCGetRacialType(oKiller) == RACIAL_TYPE_HUMANOID_ORC || MyPRCGetRacialType(oKiller) == RACIAL_TYPE_HUMANOID_REPTILIAN) SQLocalsUUID_SetInt(OBJECT_SELF,"KillerType",1); else if (MyPRCGetRacialType(oKiller) == RACIAL_TYPE_UNDEAD) SQLocalsUUID_SetInt(OBJECT_SELF,"KillerType",2); else if (MyPRCGetRacialType(oKiller) == RACIAL_TYPE_OUTSIDER) SQLocalsUUID_SetInt(OBJECT_SELF,"KillerType",3); }