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

59 lines
1.8 KiB
Plaintext

float fRadius = RADIUS_SIZE_MEDIUM;
int nDC = 22;
int nDice = 2;
int nDamageRounds = 4;
int nACPenalty = 1;
int nACPenaltyHeavy = 2;
float fACPenaltyDuration = RoundsToSeconds(5);
int nTargetVisualFail = VFX_IMP_ACID_L;
int nTargetVisualSuccess = VFX_IMP_ACID_S;
int nTargetVisualTick = VFX_IMP_ACID_S;
int nImpactVisual = VFX_FNF_LOS_NORMAL_20;
void ApplyDamage(object oTarget)
{
int nDamage = d6(nDice);
effect eDamage = EffectDamage(nDamage, DAMAGE_TYPE_ACID);
effect eVisual = EffectVisualEffect(nTargetVisualFail);
eDamage = EffectLinkEffects(eVisual, eDamage);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eDamage, oTarget);
}
void main()
{
location lTargetLocation = GetItemActivatedTargetLocation();
object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, fRadius,
lTargetLocation, TRUE);
while(oTarget != OBJECT_INVALID)
{
int nSave = ReflexSave(oTarget, nDC, SAVING_THROW_TYPE_ACID);
if(nSave == 0)
{
int i;
for(i = 0; i < nDamageRounds; ++i)
{
float fDelay = IntToFloat(i + 1) * RoundsToSeconds(1);
DelayCommand(fDelay, ApplyDamage(oTarget));
}
}
int nPenalty = nACPenalty;
object oArmor = GetItemInSlot(INVENTORY_SLOT_CHEST, oTarget);
if(GetItemACValue(oArmor) > 5)
{
nPenalty = nACPenaltyHeavy;
}
effect eACPenalty = EffectACDecrease(nPenalty,
AC_ARMOUR_ENCHANTMENT_BONUS);
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, eACPenalty, oTarget,
fACPenaltyDuration);
oTarget = GetNextObjectInShape(SHAPE_SPHERE, fRadius,
lTargetLocation, TRUE);
}
effect eVisual = EffectVisualEffect(nImpactVisual);
ApplyEffectAtLocation(DURATION_TYPE_INSTANT, eVisual, lTargetLocation);
}