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); } }