Files
HeroesStone_PRC8/_module/nss/trap_disarm.nss
Jaysyn904 1eefc84201 Initial Commit
Initial Commit.
2025-09-14 15:40:46 -04:00

42 lines
1.9 KiB
Plaintext

// Ben W-Husey (B G P Hughes)
// This script rewards the PC for disarming the trap based on trap difficulty - the whole party is also rewarded a lesser amount for trap removal
// Include cu_functions for PartyGotEntry to work
#include "cu_functions"
#include "nw_i0_tool"
void main()
{
string sTrapName = GetTag(OBJECT_SELF); //Set variable sTrapName to object's tag
int nOnce = GetLocalInt(GetLastDisarmed(), sTrapName); //Check to see if PC has disarmed this trap before
int nTrapXPGain = GetTrapDisarmDC(OBJECT_SELF) -10; //Give xp equal to disarm DC - 10 (set as you like)
object oPC = GetLastDisarmed(); // oPC is the disarming PC
if (nTrapXPGain < 0) // Make sure minimum xp given is 10
{nTrapXPGain = 10;}
if (nOnce==FALSE) //If not given XP before for disarming this trap, then run the routine now
{
GiveXPToCreature (GetLastDisarmed(), nTrapXPGain*2); // Give XP (nTrapXPGain) to disarming PC (in this case doubled as hard trap).
FloatingTextStringOnCreature("XP Gained - use of skill",GetLastDisarmed()); //Inform PC of XP for use of skill
PartyGotEntry(sTrapName,oPC,nTrapXPGain/2, "XP gain - trap disarmed"); //Reward whole party TrapXPGain/2 for trap removal, tell all party members what XP is for, and set the variable so the XP cannot be gained again for this trap.
}
object oAOE;
object oPlcbl = GetLocalObject(OBJECT_SELF,"TRP_PLCBL_OBJ");
oAOE = GetNearestObject(OBJECT_TYPE_AREA_OF_EFFECT,oPlcbl);
if(GetAreaOfEffectCreator(oAOE)==OBJECT_SELF)
{
DestroyObject(oAOE);
}
if(GetIsObjectValid(oPlcbl))
{
AssignCommand(oPlcbl, PlayAnimation(ANIMATION_PLACEABLE_DEACTIVATE));
if(GetTag(oPlcbl)=="RazorWire")
DestroyObject(oPlcbl);
}
DeleteLocalInt(OBJECT_SELF,"TRP_PLCBL_SHOW");
DeleteLocalObject(OBJECT_SELF,"TRP_PLCBL_OBJ");
DeleteLocalLocation(OBJECT_SELF,"TRP_PLCBL_LOC");
}