public override int RefixHpDamage(CharacterInfo obj, int impactId, int hpDamage, int senderId, ref bool isCritical, int impactOwnerId)
        {
            ImpactInfo impactInfo = obj.GetSkillStateInfo().GetImpactInfoById(impactId);

            if (null != impactInfo)
            {
                SuperArmorShieldInfo info = impactInfo.LogicDatas.GetData <SuperArmorShieldInfo>();
                if (null != info)
                {
                    info.DamageRemain -= hpDamage;
                    if (info.DamageRemain > 0)
                    {
                        if (null != EventUpdateSuperArmorShield)
                        {
                            EventUpdateSuperArmorShield(obj, impactId);
                        }
                        if (!obj.UltraArmor)
                        {
                            obj.UltraArmor = true;
                        }
                    }
                    else
                    {
                        if (null != EventStopSuperArmorShield)
                        {
                            EventStopSuperArmorShield(obj, impactId);
                        }
                        impactInfo.m_IsActivated = false;
                        obj.UltraArmor           = false;
                    }
                }
            }
            return(hpDamage);
        }
 public override void StartImpact(CharacterInfo obj, int impactId)
 {
     if (null != obj)
     {
         ImpactInfo impactInfo = obj.GetSkillStateInfo().GetImpactInfoById(impactId);
         if (null != impactInfo)
         {
             obj.UltraArmor = true;
             if (impactInfo.ConfigData.ParamNum > 1)
             {
                 SuperArmorShieldInfo info = impactInfo.LogicDatas.GetData <SuperArmorShieldInfo>();
                 if (null == info)
                 {
                     info = new SuperArmorShieldInfo();
                     impactInfo.LogicDatas.AddData <SuperArmorShieldInfo>(info);
                 }
                 info.DamageRemain = (int)(float.Parse(impactInfo.ConfigData.ExtraParams[0]) * obj.GetActualProperty().HpMax);
                 info.DamageMax    = info.DamageRemain;
                 info.EffectPath   = impactInfo.ConfigData.ExtraParams[1];
                 if (null != EventStartSuperArmorShield)
                 {
                     EventStartSuperArmorShield(obj, impactId);
                 }
             }
         }
     }
 }