Files
Anphillia_PRC8/_module/nss/hc_fugue_enter.nss
Jaysyn904 28cdb617b3 Initial commit
Adding all of the current content for Anphillia Unlimited.
2024-01-04 07:49:38 -05:00

78 lines
2.6 KiB
Plaintext

//hc_fugue_enter
#include "hc_inc_htf"
#include "hc_inc"
#include "hc_inc_remeff"
#include "chr_inc"
#include "dbg_inc"
#include "faction_inc"
#include "util_inc"
void CreateCorpse (object oPlayer)
{
string sName = GetName (oPlayer);
string sCDK = GetPCPublicCDKey (oPlayer);
string sID = sName + sCDK;
location lDiedHere;
lDiedHere = GetLocalLocation (oPlayer, "DeathLocation");
WriteTimestampedLogEntry ("Creating corpse for player " +
sName);
object oDeathCorpse = CreateObject (OBJECT_TYPE_PLACEABLE, "DeathCorpse", lDiedHere);
object oDeadMan = CreateItemOnObject ("playercorpse", oDeathCorpse);
SetLocalObject (oDeathCorpse, "Owner", oPlayer);
SetLocalString (oDeathCorpse, "Name", sName);
SetLocalString (oDeathCorpse, "Key", sCDK);
SetLocalObject (oDeathCorpse, "PlayerCorpse", oDeadMan);
SetLocalObject (oDeadMan, "Owner", oPlayer);
SetLocalObject (oDeadMan, "DeathCorpse", oDeathCorpse);
SetLocalString (oDeadMan, "Name", sName);
SetLocalString (oDeadMan, "Key", sCDK);
SetLocalInt (oDeadMan, "Alignment", GetAlignmentGoodEvil(oPlayer));
SetLocalString (oDeadMan, "Deity", GetDeity (oPlayer));
SetLocalObject (oMod, "PlayerCorpse" + sID, oDeadMan);
SetLocalObject (oMod, "DeathCorpse" + sID, oDeathCorpse);
}
void main()
{
object oPC = GetEnteringObject();
if (!GetIsPC(oPC))
return;
ApplyEffectToObject (DURATION_TYPE_INSTANT,
EffectResurrection(), oPC);
int nPCID = chr_GetPCID(oPC);
if (!sql_GetPCDead(nPCID) && !GetIsDM(oPC))
{
dbg_ReportBug("PC in fugue but not marked as dead. How did you get here?", oPC);
}
CreateCorpse (oPC);
fctn_UpdateReputation(oPC);
DelayCommand(5.0, DeleteLocalInt (oPC, "DiedButNotInFugue"));
DelayCommand(1.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectHeal(
GetMaxHitPoints(oPC)), oPC));
RemoveEffects(oPC);
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,SupernaturalEffect(EffectKnockdown()),oPC,1.0);
SetPlotFlag(oPC, TRUE);
if (!GetIsDM(oPC))
{
DelayCommand(4.0, util_PopUp(oPC, "You have died",
"You have died and entered the Fugue Plane. You have suffered one half of the experience loss from death.\n\n"
+ "If you were not alone, your allies may revive you and bring you back avoiding the other half. Or they may bury you to ease your XP loss.\n\n"
+ "If there is no one coming for you, you may speak with the glowing Orb to return you to your starting location for a second XP penalty. Only do this as a last resort"));
}
}