46 lines
1.9 KiB
Plaintext
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);
|
|
}
|
|
}
|