//:://///////////////////////////////////////////// //:: Name Primogenitors Respawning Ground Trap include //:: FileName prgt_inc //:: Copyright (c) 2001 Bioware Corp. //::////////////////////////////////////////////// /* This was orignally designed to allow respawning ground traps However, as of NWN 1.67 this is no longer needed. The secondary purpose of this is now most useful and that is to provide a system where a wide variety of traps can be set and used. This particular file provides interface functions */ //::////////////////////////////////////////////// //:: Created By: Primogenitor //:: Created On: Quite some time ago //::////////////////////////////////////////////// /* int DAMAGE_TYPE_BLUDGEONING = 1; int DAMAGE_TYPE_PIERCING = 2; int DAMAGE_TYPE_SLASHING = 4; int DAMAGE_TYPE_MAGICAL = 8; int DAMAGE_TYPE_ACID = 16; int DAMAGE_TYPE_COLD = 32; int DAMAGE_TYPE_DIVINE = 64; int DAMAGE_TYPE_ELECTRICAL = 128; int DAMAGE_TYPE_FIRE = 256; int DAMAGE_TYPE_NEGATIVE = 512; int DAMAGE_TYPE_POSITIVE = 1024; int DAMAGE_TYPE_SONIC = 2048; */ #include "prgt_inc_trap" #include "inc_utility" #include "prc_misc_const" const int TRAP_EVENT_TRIGGERED = 1; const int TRAP_EVENT_DISARMED = 2; const int TRAP_EVENT_RECOVERED = 3; //this is in addition to being disarmed object PRGT_CreateTrapAtLocation(location lLoc, struct trap tTrap) { object oTrap; oTrap = CreateTrapAtLocation(TRAP_BASE_TYPE_PRGT, lLoc, tTrap.fSize, "",//tag STANDARD_FACTION_HOSTILE, tTrap.sDisarmScript, tTrap.sTriggerScript); SetLocalTrap(oTrap, "TrapSettings", tTrap); SetTrapOneShot(oTrap, FALSE); SetTrapRecoverable(oTrap, FALSE); return oTrap; } void PRGT_CreateTrapOnObject(object oTrap, struct trap tTrap) { CreateTrapOnObject(TRAP_BASE_TYPE_PRGT, oTrap, STANDARD_FACTION_HOSTILE, tTrap.sDisarmScript, tTrap.sTriggerScript); SetLocalTrap(oTrap, "TrapSettings", tTrap); SetTrapOneShot(oTrap, FALSE); SetTrapRecoverable(oTrap, FALSE); } void PRGT_VoidCreateTrapAtLocation(location lLoc, struct trap tTrap) { PRGT_CreateTrapAtLocation(lLoc, tTrap); } void DoTrapXP(object oTrap, object oTarget, int nEvent) { switch(nEvent) { case TRAP_EVENT_TRIGGERED: if(GetLocalString(GetModule(), PRC_PRGT_XP_SCRIPT_TRIGGERED) != "") ExecuteScript(PRC_PRGT_XP_SCRIPT_TRIGGERED, oTarget); else if(GetPRCSwitch(PRC_PRGT_XP_AWARD_FOR_TRIGGERED)) GiveXPRewardToParty(oTarget, OBJECT_INVALID, GetLocalTrap(oTrap, "TrapSettings").nCR); break; case TRAP_EVENT_DISARMED: if(GetLocalString(GetModule(), PRC_PRGT_XP_SCRIPT_DISARMED) != "") ExecuteScript(PRC_PRGT_XP_SCRIPT_TRIGGERED, oTarget); else if(GetPRCSwitch(PRC_PRGT_XP_AWARD_FOR_DISARMED)) GiveXPRewardToParty(oTarget, OBJECT_INVALID, GetLocalTrap(oTrap, "TrapSettings").nCR); break; case TRAP_EVENT_RECOVERED: if(GetLocalString(GetModule(), PRC_PRGT_XP_SCRIPT_RECOVERED) != "") ExecuteScript(PRC_PRGT_XP_SCRIPT_TRIGGERED, oTarget); else if(GetPRCSwitch(PRC_PRGT_XP_AWARD_FOR_RECOVERED)) GiveXPRewardToParty(oTarget, OBJECT_INVALID, GetLocalTrap(oTrap, "TrapSettings").nCR); break; } }