Clear out experimental .35 files
Clear out experimental .35 files
This commit is contained in:
@@ -1,121 +0,0 @@
|
||||
#include "prc_alterations"
|
||||
#include "prgt_inc"
|
||||
#include "prc_inc_racial"
|
||||
|
||||
void main()
|
||||
{
|
||||
//SendMessageToPC(GetFirstPC(), "Firing Trap");
|
||||
object oTarget = GetLocalObject(OBJECT_SELF, "Target");
|
||||
if(!GetIsObjectValid(oTarget))
|
||||
oTarget = GetLastUsedBy();
|
||||
if(!GetIsObjectValid(oTarget))
|
||||
oTarget = GetEnteringObject();
|
||||
struct trap tTrap = GetLocalTrap(OBJECT_SELF, "TrapSettings");
|
||||
//if no trap exists, create a random one
|
||||
struct trap tInvalid;
|
||||
if(tTrap == tInvalid)
|
||||
tTrap = CreateRandomTrap(GetECL(oTarget));
|
||||
//for traps that duplicate spells
|
||||
if(tTrap.nSpellID)
|
||||
{
|
||||
ActionCastSpell(tTrap.nSpellID,
|
||||
tTrap.nSpellLevel,
|
||||
0,
|
||||
tTrap.nSpellDC,
|
||||
tTrap.nSpellMetamagic,
|
||||
CLASS_TYPE_INVALID,
|
||||
FALSE,
|
||||
FALSE,
|
||||
oTarget);
|
||||
}
|
||||
else
|
||||
{
|
||||
float fRadius = IntToFloat(tTrap.nRadius);
|
||||
|
||||
effect eTrapVFX;
|
||||
if(tTrap.nTrapVFX)
|
||||
eTrapVFX = EffectVisualEffect(tTrap.nTrapVFX);
|
||||
if(GetIsEffectValid(eTrapVFX))
|
||||
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eTrapVFX, GetLocation(OBJECT_SELF));
|
||||
|
||||
effect eTargetVFX;
|
||||
if(tTrap.nTargetVFX)
|
||||
eTargetVFX = EffectVisualEffect(tTrap.nTargetVFX);
|
||||
|
||||
effect eBeamVFX;
|
||||
if(tTrap.nBeamVFX)
|
||||
eBeamVFX = EffectBeam(tTrap.nBeamVFX, OBJECT_SELF, BODY_NODE_CHEST);
|
||||
|
||||
int i = 1;
|
||||
object oVictim = GetFirstObjectInShape(SHAPE_SPHERE, fRadius, GetLocation(OBJECT_SELF), TRUE);
|
||||
if(fRadius == 0.0)
|
||||
oVictim = oTarget;
|
||||
|
||||
while(GetIsObjectValid(oVictim))
|
||||
{
|
||||
|
||||
int nDamage;
|
||||
int nDiceCount;
|
||||
while(nDiceCount < tTrap.nDamageDice)
|
||||
{
|
||||
nDamage += Random(tTrap.nDamageSize)+1;
|
||||
nDiceCount++;
|
||||
}
|
||||
nDamage+= tTrap.nDamageBonus;
|
||||
|
||||
effect eDamage;
|
||||
//handle negative vs undead and positive vs non-undead
|
||||
if((tTrap.nDamageType == DAMAGE_TYPE_NEGATIVE
|
||||
&& (MyPRCGetRacialType(oTarget) == RACIAL_TYPE_UNDEAD
|
||||
|| (GetHasFeat(FEAT_TOMB_TAINTED_SOUL, oTarget) && GetAlignmentGoodEvil(oTarget) != ALIGNMENT_GOOD)
|
||||
|| GetLocalInt(oTarget, "AcererakHealing"))
|
||||
|| (tTrap.nDamageType == DAMAGE_TYPE_POSITIVE
|
||||
&& MyPRCGetRacialType(oTarget) != RACIAL_TYPE_UNDEAD
|
||||
&& !(GetHasFeat(FEAT_TOMB_TAINTED_SOUL, oTarget) && GetAlignmentGoodEvil(oTarget) != ALIGNMENT_GOOD))))
|
||||
{
|
||||
eDamage = EffectHeal(nDamage);
|
||||
}
|
||||
else
|
||||
{
|
||||
if(tTrap.nAllowReflexSave)
|
||||
nDamage = PRCGetReflexAdjustedDamage(nDamage, oVictim, tTrap.nSaveDC, SAVING_THROW_TYPE_TRAP);
|
||||
if(tTrap.nAllowFortSave)
|
||||
{
|
||||
int nSave = PRCMySavingThrow(SAVING_THROW_FORT, oVictim, SAVING_THROW_TYPE_TRAP);
|
||||
if(nSave)
|
||||
{
|
||||
nDamage /= 2;
|
||||
if (GetHasMettle(oTarget, SAVING_THROW_FORT))
|
||||
// This script does nothing if it has Mettle, bail
|
||||
nDamage = 0;
|
||||
}
|
||||
}
|
||||
if(tTrap.nAllowWillSave)
|
||||
{
|
||||
int nSave = PRCMySavingThrow(SAVING_THROW_WILL, oVictim, SAVING_THROW_TYPE_TRAP);
|
||||
if(nSave)
|
||||
nDamage /= 2;
|
||||
}
|
||||
eDamage = EffectDamage(nDamage, tTrap.nDamageType);
|
||||
}
|
||||
|
||||
if(GetIsEffectValid(eTargetVFX))
|
||||
ApplyEffectToObject(DURATION_TYPE_INSTANT, eTargetVFX, oVictim);
|
||||
if(GetIsEffectValid(eBeamVFX))
|
||||
ApplyEffectToObject(DURATION_TYPE_INSTANT, eBeamVFX, oVictim);
|
||||
if(GetIsEffectValid(eDamage))
|
||||
ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oVictim);
|
||||
if(!tTrap.nFakeSpell)
|
||||
ActionCastFakeSpellAtObject(tTrap.nFakeSpell, oVictim);
|
||||
if(!tTrap.nFakeSpellLoc)
|
||||
ActionCastFakeSpellAtLocation(tTrap.nFakeSpell, GetLocation(oVictim));
|
||||
|
||||
i++;
|
||||
if(fRadius == 0.0)
|
||||
oVictim = OBJECT_INVALID;
|
||||
else
|
||||
oVictim = GetNextObjectInShape(SHAPE_SPHERE, fRadius, GetLocation(OBJECT_SELF), TRUE);
|
||||
}
|
||||
}
|
||||
DoTrapXP(OBJECT_SELF, oTarget, TRAP_EVENT_TRIGGERED);
|
||||
}
|
Reference in New Issue
Block a user