public override void Unapply()
        {
            if (m_modifier_id == 0)
            {
                return;
            }
            Entity owner_entity = GetOwnerEntity();
            DamageModificationComponent damage_modification_component = owner_entity.GetComponent(DamageModificationComponent.ID) as DamageModificationComponent;

            if (damage_modification_component == null)
            {
                return;
            }
            damage_modification_component.RemoveModifier(m_modifier_id);
            m_modifier_id = 0;
        }
        FixPoint CalculateFinalDamageAmount(Damage damage, Entity attacker)
        {
            FixPoint damage_amount = damage.m_damage_amount;

            if (attacker != null)
            {
                DamageModificationComponent attacker_cmp = attacker.GetComponent(DamageModificationComponent.ID) as DamageModificationComponent;
                if (attacker_cmp != null)
                {
                    damage_amount = attacker_cmp.ApplyModifiersToDamage(damage, damage_amount, ParentObject, true);
                }
            }
            DamageModificationComponent self_cmp = ParentObject.GetComponent(DamageModificationComponent.ID) as DamageModificationComponent;

            if (self_cmp != null)
            {
                damage_amount = self_cmp.ApplyModifiersToDamage(damage, damage_amount, attacker, false);
            }
            return(damage_amount);
        }
        public override void Apply()
        {
            if (m_modifier_type == 0)
            {
                return;
            }
            Entity owner_entity = GetOwnerEntity();
            DamageModificationComponent damage_modification_component = owner_entity.GetComponent(DamageModificationComponent.ID) as DamageModificationComponent;

            if (damage_modification_component == null)
            {
                return;
            }
            DamageModifier modifier = DamageModifier.Create(m_modifier_type);

            if (modifier == null)
            {
                return;
            }
            m_modifier_id = GetLogicWorld().GenerateDamageModifierID();
            modifier.Contruct(m_modifier_id, m_variables);
            damage_modification_component.AddModifier(modifier);
        }