void ProcessRenderMessage_TakeDamage(TakeDamageRenderMessage msg) { RenderEntity render_entity = m_render_entity_manager.GetObject(msg.EntityID); if (render_entity == null) { return; } //ZZWTODO }
public void TakeDamage(Damage damage) { if (ObjectUtil.IsDead(ParentObject)) { RecyclableObject.Recycle(damage); return; } if (damage.m_damage_amount < 0) { ChangeHealth(-damage.m_damage_amount, damage.m_attacker_id); RecyclableObject.Recycle(damage); return; } if (!IsEnable()) { RecyclableObject.Recycle(damage); return; } Entity attacker = GetLogicWorld().GetEntityManager().GetObject(damage.m_attacker_id); LastDamage = damage; FixPoint original_damage_amount = damage.m_damage_amount; FixPoint final_damage_amount = CalculateFinalDamageAmount(damage, attacker); ChangeHealth(-final_damage_amount, damage.m_attacker_id); ParentObject.SendSignal(SignalType.TakeDamage, damage); #if COMBAT_CLIENT TakeDamageRenderMessage msg = RenderMessage.Create <TakeDamageRenderMessage>(); msg.Construct(GetOwnerEntityID(), original_damage_amount, final_damage_amount, damage.m_render_effect_cfgid, damage.m_sound_cfgid); GetLogicWorld().AddRenderMessage(msg); #endif if (m_current_health <= 0) { ApplyExperience(attacker); } GetLogicWorld().OnCauseDamage(attacker, (Entity)ParentObject, damage); }