int TangibleObjectImplementation::inflictDamage(TangibleObject* attacker, int damageType, float damage, bool destroy, bool notifyClient) { if(hasAntiDecayKit()) return 0; float newConditionDamage = conditionDamage + damage; if (!destroy && newConditionDamage >= maxCondition) newConditionDamage = maxCondition - 1; else if (newConditionDamage >= maxCondition) newConditionDamage = maxCondition; setConditionDamage(newConditionDamage, notifyClient); if (attacker->isCreatureObject()) { CreatureObject* creature = attacker->asCreatureObject(); if (damage > 0 && attacker != asTangibleObject()) getThreatMap()->addDamage(creature, (uint32)damage); } if (newConditionDamage >= maxCondition) notifyObjectDestructionObservers(attacker, newConditionDamage); return 0; }
int TangibleObjectImplementation::inflictDamage(TangibleObject* attacker, int damageType, float damage, bool destroy, const String& xp, bool notifyClient) { float newConditionDamage = conditionDamage + damage; if (!destroy && newConditionDamage >= maxCondition) newConditionDamage = maxCondition - 1; setConditionDamage(newConditionDamage, notifyClient); if (attacker->isCreatureObject()) { CreatureObject* creature = cast<CreatureObject*>( attacker); if (damage > 0 && attacker != _this.get()) getThreatMap()->addDamage(creature, (uint32)damage, xp); } if (newConditionDamage >= maxCondition) notifyObjectDestructionObservers(attacker, newConditionDamage); return 0; }