Clear out experimental .35 files
Clear out experimental .35 files
This commit is contained in:
@@ -1,136 +0,0 @@
|
||||
//::///////////////////////////////////////////////
|
||||
//:: OnPlayerDying eventscript
|
||||
//:: prc_ondying
|
||||
//:://////////////////////////////////////////////
|
||||
|
||||
#include "inc_utility"
|
||||
#include "x0_i0_position"
|
||||
#include "moi_inc_moifunc"
|
||||
|
||||
//////////////////////////////////////////
|
||||
// Private Functions //
|
||||
//////////////////////////////////////////
|
||||
|
||||
void Kill_PC(object oPC)
|
||||
{
|
||||
effect eDeath = EffectDeath(FALSE, FALSE);
|
||||
ApplyEffectToObject(DURATION_TYPE_INSTANT, eDeath, oPC);
|
||||
}
|
||||
|
||||
void feat_save(object oDying)
|
||||
{
|
||||
//////////////////////////////////////////
|
||||
// FEAT_SHADOWDISCOPOR
|
||||
//////////////////////////////////////////
|
||||
|
||||
// Telflammar Shadowlord Shadow Discorporation. If successfull, prevents the rest of the script from executing
|
||||
/// @todo TLK the feedback strings
|
||||
if(GetHasFeat(FEAT_SHADOWDISCOPOR, oDying) &&
|
||||
(GetIsAreaAboveGround(GetArea(oDying)) == AREA_UNDERGROUND ||
|
||||
GetIsNight() ||
|
||||
PRCGetHasEffect(EFFECT_TYPE_DARKNESS, oDying)
|
||||
))
|
||||
{
|
||||
int nRoll = d20();
|
||||
int nDC = 5 + GetLocalInt(oDying, "PRC_LastDamageTaken");
|
||||
int bSuccess = nRoll + GetReflexSavingThrow(oDying) >= nDC;
|
||||
|
||||
// Some informational spam
|
||||
string sFeedback = "*Reflex Save vs Death : "
|
||||
+ (bSuccess ? "*success*" : "*failure*")
|
||||
+ " :(" + IntToString(nRoll) + " + " + IntToString(GetReflexSavingThrow(oDying)) + " = " + IntToString(nRoll + GetReflexSavingThrow(oDying)) + " vs. DC:" + IntToString(nDC) + ")";
|
||||
FloatingTextStringOnCreature(sFeedback, oDying);
|
||||
|
||||
// Handle keeping the character alive
|
||||
if(bSuccess)
|
||||
{// Resurrect the character. Necessary because the game considers them already dead at this point
|
||||
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectResurrection(), oDying);
|
||||
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectHeal(1 - (GetCurrentHitPoints(oDying))), oDying);
|
||||
SignalEvent(oDying, EventSpellCastAt(OBJECT_SELF, SPELL_RESTORATION, FALSE));
|
||||
|
||||
// Move the character to a random nearby location
|
||||
location locJump = GetRandomLocation(GetArea(oDying), oDying, 30.0f);
|
||||
AssignCommand(oDying, ClearAllActions(TRUE));
|
||||
AssignCommand(oDying, ActionJumpToLocation(locJump));
|
||||
|
||||
// The character is not dying after all, so skip the rest of the script to avoid complications
|
||||
// Though, the module's own OnDying script may very well supply complications anyway
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
//////////////////////////////////////////
|
||||
// FEAT_REMAIN_CONSCIOUS
|
||||
//////////////////////////////////////////
|
||||
|
||||
// Code added by Oni5115 for Remain Concious
|
||||
if(GetHasFeat(FEAT_REMAIN_CONSCIOUS, oDying) && GetCurrentHitPoints(oDying) > -10)
|
||||
{
|
||||
int pc_Damage = (GetCurrentHitPoints(oDying) * -1) + 1;
|
||||
int prev_Damage = GetLocalInt(oDying, "PC_Damage");
|
||||
|
||||
// Store damage taken in a local variable
|
||||
pc_Damage = pc_Damage + prev_Damage;
|
||||
SetLocalInt(oDying, "PC_Damage", pc_Damage);
|
||||
|
||||
if(pc_Damage < 10)
|
||||
{
|
||||
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectResurrection(), oDying);
|
||||
}
|
||||
|
||||
|
||||
string sFeedback = GetName(oDying) + " : Current HP = " + IntToString(pc_Damage * -1);
|
||||
SendMessageToPC(oDying, sFeedback);
|
||||
}
|
||||
|
||||
//////////////////////////////////////////
|
||||
// FEAT_DIEHARD
|
||||
//////////////////////////////////////////
|
||||
|
||||
// When your hit points are reduced to 0 or below, you automatically become stable.
|
||||
// You heal to 1 HP, but behave as if disabled.
|
||||
|
||||
int nHP = GetCurrentHitPoints(oDying);
|
||||
if ((GetHasFeat(FEAT_DIEHARD, oDying)) && (nHP > -10) && (nHP <= 0))
|
||||
{
|
||||
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectResurrection(), oDying);
|
||||
SetPersistantLocalInt(oDying, "STATUS", DISABLED);
|
||||
}
|
||||
|
||||
//////////////////////////////////////////
|
||||
// Rageclaws Meld
|
||||
//////////////////////////////////////////
|
||||
nHP = GetCurrentHitPoints(oDying);
|
||||
int nLimit = (10 + GetEssentiaInvested(oDying, MELD_RAGECLAWS)) * -1;
|
||||
if ((GetHasSpellEffect(MELD_RAGECLAWS, oDying)) && (nHP > nLimit) && (nHP <= 0))
|
||||
{
|
||||
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectResurrection(), oDying);
|
||||
}
|
||||
|
||||
//////////////////////////////////////////
|
||||
// End of Feat/abilities
|
||||
//////////////////////////////////////////
|
||||
}
|
||||
|
||||
//////////////////////////////////////////
|
||||
// End of private Functions //
|
||||
//////////////////////////////////////////
|
||||
|
||||
void main()
|
||||
{
|
||||
object oDying = GetLastPlayerDying();
|
||||
|
||||
// Fire code for ANY Feats or abilities which can prevent death here.
|
||||
feat_save(oDying);
|
||||
|
||||
// Execute scripts hooked to this event for the player triggering it
|
||||
ExecuteAllScriptsHookedToEvent(oDying, EVENT_ONPLAYERDYING);
|
||||
|
||||
// Trigger the death/bleed if the PRC Death system is enabled (ElgarL).
|
||||
if(GetPRCSwitch(PRC_PNP_DEATH_ENABLE))
|
||||
AddEventScript(oDying, EVENT_ONHEARTBEAT, "prc_timer_dying", TRUE, FALSE);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user