RATDOG/_module/nss/codi_userdef.nss
Jaysyn904 37b68cf6b6 Updated TLK for PRC8 update
Updated TLK for PRC8 update.  Added placeable house blueprints.  Updated NWNxEE.  Full compile.
2024-08-31 20:38:17 -04:00

171 lines
4.6 KiB
Plaintext

//::///////////////////////////////////////////////
//:: Name codi_userdef
//::
//:://////////////////////////////////////////////
/*
NPC OnUserDefined event script caller to run
CODI AI & PRC events.
May need to actually disable most of this for
the CODI AI.
*/
//:://////////////////////////////////////////////
//:: Created By: Jaysyn
//:: Created On: 20240331
//:://////////////////////////////////////////////
const int EVENT_USER_DEFINED_PRESPAWN = 1510;
const int EVENT_USER_DEFINED_POSTSPAWN = 1511;
void main()
{
//:: Declare major variables
int nUser = GetUserDefinedEventNumber();
int nFireDamage = 0;
int nAcidDamage = 0;
int nColdDamage = 0;
int nDivineDamage = 0;
int nElectricalDamage = 0;
int nPositiveDamage = 0;
int nNegativeDamage = 0;
int nMagicalDamage = 0;
int nSonicDamage = 0;
string sResRef = GetResRef(OBJECT_SELF);
effect eSleep = EffectSleep();
effect eSlow = EffectSlow();
if(nUser == EVENT_HEARTBEAT ) //HEARTBEAT
{
if(sResRef == "ra_troll001" || sResRef == "TROLL_FEDORLA")
{
if(GetLocalInt(OBJECT_SELF, "nSubDual") > 0)
{
SetLocalInt(OBJECT_SELF, "nSubDual", GetLocalInt(OBJECT_SELF, "nSubDual") - 5);
if(GetLocalInt(OBJECT_SELF, "nSubDual") < GetCurrentHitPoints(OBJECT_SELF))
{
RemoveEffect(OBJECT_SELF, eSleep);
}
//SpeakString("My Subdual is now " + IntToString(GetLocalInt(OBJECT_SELF, "nSubDual")));
}
}
}
else if(nUser == EVENT_PERCEIVE) // PERCEIVE
{
}
else if(nUser == EVENT_END_COMBAT_ROUND) // END OF COMBAT
{
}
else if(nUser == EVENT_DIALOGUE) // ON DIALOGUE
{
}
else if(nUser == EVENT_ATTACKED) // ATTACKED
{
}
else if(nUser == EVENT_DAMAGED) // DAMAGED
{
//:: Handles swarm immunity to physical weapons
if(sResRef == "ds_minkankswrm01" || sResRef == "ds_locustswarm01")
{
int nTotalDamage = GetTotalDamageDealt();
if(GetDamageDealtByType(DAMAGE_TYPE_FIRE) > 0)
{
nFireDamage = GetDamageDealtByType(DAMAGE_TYPE_FIRE);
}
if(GetDamageDealtByType(DAMAGE_TYPE_ACID) > 0)
{
nAcidDamage = GetDamageDealtByType(DAMAGE_TYPE_ACID);
}
if(GetDamageDealtByType(DAMAGE_TYPE_COLD) > 0)
{
nColdDamage = GetDamageDealtByType(DAMAGE_TYPE_COLD);
}
if(GetDamageDealtByType(DAMAGE_TYPE_DIVINE) > 0)
{
nDivineDamage = GetDamageDealtByType(DAMAGE_TYPE_DIVINE);
}
if(GetDamageDealtByType(DAMAGE_TYPE_ELECTRICAL) > 0)
{
nElectricalDamage = GetDamageDealtByType(DAMAGE_TYPE_ELECTRICAL);
}
if(GetDamageDealtByType(DAMAGE_TYPE_MAGICAL) > 0)
{
nMagicalDamage = GetDamageDealtByType(DAMAGE_TYPE_MAGICAL);
}
if(GetDamageDealtByType(DAMAGE_TYPE_NEGATIVE) > 0)
{
nNegativeDamage = GetDamageDealtByType(DAMAGE_TYPE_NEGATIVE);
}
if(GetDamageDealtByType(DAMAGE_TYPE_POSITIVE) > 0)
{
nPositiveDamage = GetDamageDealtByType(DAMAGE_TYPE_POSITIVE);
}
if(GetDamageDealtByType(DAMAGE_TYPE_SONIC) > 0)
{
nSonicDamage = GetDamageDealtByType(DAMAGE_TYPE_SONIC);
}
int nSubDmg = nTotalDamage - (nFireDamage
+ nAcidDamage
+ nColdDamage
+ nDivineDamage
+ nElectricalDamage
+ nMagicalDamage
+ nNegativeDamage
+ nPositiveDamage
+ nSonicDamage);
int nActDmg = (nFireDamage + nAcidDamage
+ nColdDamage
+ nDivineDamage
+ nElectricalDamage
+ nMagicalDamage
+ nNegativeDamage
+ nPositiveDamage
+ nSonicDamage);
effect eHeal = EffectHeal(nSubDmg);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eHeal, OBJECT_SELF, 0.0f);
}
}
else if(nUser == 1007) // DEATH - do not use for critical code, does not fire reliably all the time
{
}
else if(nUser == EVENT_DISTURBED) // DISTURBED
{
}
else if (nUser == EVENT_USER_DEFINED_PRESPAWN)
{
}
else if (nUser == EVENT_USER_DEFINED_POSTSPAWN)
{
}
//:: Execute the PRC NPC OnUserDef script
ExecuteScript("prc_npc_userdef", OBJECT_SELF);
}