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); } } } } }