HiddenTradition_PRC8/_module/nss/troll_exec_pc_02.nss
2024-06-20 15:47:42 -04:00

46 lines
1.9 KiB
Plaintext

void main()
{
object oTroll = GetLocalObject(oTroll,"LAST_TROLL_ATTACKED");
int iADmg = GetLocalInt(oTroll,"TROLL_LAST_ACID_DMG_AMT");
int iFDmg = GetLocalInt(oTroll,"TROLL_LAST_FIRE_DMG_AMT");
int iNewTHPF;
// Track HP
int iHP = GetMaxHitPoints(oTroll);
int iLastHP = GetLocalInt(oTroll,"HIT_POINTS");
// check for acid damage and if so lower creature's HP
if (iADmg > 0 && iFDmg <= 0)
{
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectVisualEffect(VFX_COM_HIT_ACID),oTroll,1.0);
ApplyEffectToObject(DURATION_TYPE_PERMANENT,EffectDamage(iADmg,DAMAGE_TYPE_ACID,DAMAGE_POWER_NORMAL),oTroll,0.0);
iNewTHPF = iLastHP+iADmg;
SetLocalInt(oTroll,"HIT_POINTS",iNewTHPF);
SetLocalInt(oTroll,"TROLL_PC_NRML_DMG",1);
}
// Check for Fire damage and if so lower creature's HP
if (iFDmg > 0 && iADmg <= 0)
{
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectVisualEffect(VFX_IMP_FLAME_S),oTroll,1.0);
AssignCommand(GetModule(),ApplyEffectToObject(DURATION_TYPE_PERMANENT,EffectDamage(iFDmg,DAMAGE_TYPE_FIRE,DAMAGE_POWER_NORMAL),oTroll,0.0));
iNewTHPF = iLastHP+iFDmg;
SetLocalInt(oTroll,"HIT_POINTS",iNewTHPF);
SetLocalInt(oTroll,"TROLL_PC_NRML_DMG",1);
}
// Check for both fire and acid and lower for both
if (iFDmg > 0 && iADmg > 0)
{
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectVisualEffect(VFX_COM_HIT_FIRE),oTroll,1.0);
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectVisualEffect(VFX_COM_HIT_ACID),oTroll,1.0);
ApplyEffectToObject(DURATION_TYPE_PERMANENT,EffectDamage(iFDmg,DAMAGE_TYPE_FIRE,DAMAGE_POWER_NORMAL),oTroll,0.0);
ApplyEffectToObject(DURATION_TYPE_PERMANENT,EffectDamage(iADmg,DAMAGE_TYPE_ACID,DAMAGE_POWER_NORMAL),oTroll,0.0);
iNewTHPF = iLastHP+iFDmg+iADmg;
SetLocalInt(oTroll,"HIT_POINTS",iNewTHPF);
SetLocalInt(oTroll,"TROLL_PC_NRML_DMG",1);
}
}