Esempio n. 1
0
    public static int GetSkillPowerCorrectionValue(List <ExtraEffectStatus> extraEffectStatusList, AffectEffectProperty skillPropety, CharacterStateControl character)
    {
        List <ExtraEffectStatus> list = ChipEffectStatus.CheckStageEffectInvalid(extraEffectStatusList, character);

        if (list.Count == 0)
        {
            return(skillPropety.GetPower(character));
        }
        return((int)ExtraEffectStatus.GetExtraEffectCorrectionValue(list, (float)skillPropety.GetPower(character), character.characterStatus.monsterIntegrationIds, character.groupId, character.tolerance, character.characterDatas.tribe, character.characterDatas.growStep, skillPropety, character.currentSufferState, ExtraEffectStatus.GetExtraTargetType(character), EffectStatusBase.ExtraEffectType.SkillPower));
    }
    private static int GetExtraStageValue(int baseValue, MonsterData monsterData, MonsterData[] party, GameWebAPI.RespDataMA_GetWorldDungeonExtraEffectM.WorldDungeonExtraEffectM[] effectArray, AffectEffectProperty affectEffectProperty, EffectStatusBase.ExtraEffectType extraEffectType)
    {
        if (effectArray == null || effectArray.Length == 0)
        {
            return(baseValue);
        }
        List <ExtraEffectStatus> list = new List <ExtraEffectStatus>();

        foreach (GameWebAPI.RespDataMA_GetWorldDungeonExtraEffectM.WorldDungeonExtraEffectM worldDungeonExtraEffectM in effectArray)
        {
            ExtraEffectStatus item = new ExtraEffectStatus(worldDungeonExtraEffectM);
            list.Add(item);
        }
        if (extraEffectType == EffectStatusBase.ExtraEffectType.SkillPower)
        {
            return(ExtraEffectStatus.GetExtraEffectCorrectionValue(ExtraEffectUtil.GetAreaId(), list, affectEffectProperty.GetPower(null), party, new MonsterData[0], monsterData, affectEffectProperty, extraEffectType));
        }
        if (extraEffectType == EffectStatusBase.ExtraEffectType.SkillHit)
        {
            return(ExtraEffectStatus.GetExtraEffectCorrectionValue(ExtraEffectUtil.GetAreaId(), list, (int)(affectEffectProperty.hitRate * 100f), party, new MonsterData[0], monsterData, affectEffectProperty, extraEffectType));
        }
        return(ExtraEffectStatus.GetExtraEffectCorrectionValue(ExtraEffectUtil.GetAreaId(), list, baseValue, party, new MonsterData[0], monsterData, null, extraEffectType));
    }
    public static void GetExtraEffectFluctuationValue(out int result, out int change, MonsterData monsterData, GameWebAPI.RespDataMA_GetWorldDungeonExtraEffectM.WorldDungeonExtraEffectM[] effectArray, EffectStatusBase.ExtraEffectType extraEffectType, int skillType = 0, bool isChipValue = true)
    {
        int num  = (int)ExtraEffectUtil.GetStatusValue(extraEffectType, monsterData, skillType);
        int num2 = 0;

        if (isChipValue)
        {
            num2 = ExtraEffectUtil.GetExtraChipValue(monsterData, extraEffectType);
        }
        MonsterData[] party = new MonsterData[]
        {
            monsterData
        };
        if (CMD_PartyEdit.instance != null)
        {
            MonsterData[] array = CMD_PartyEdit.instance.GetSelectedMD().ToArray();
            bool          flag  = array.Where((MonsterData item) => item.userMonster.userMonsterId == monsterData.userMonster.userMonsterId).Any <MonsterData>();
            if (flag)
            {
                party = array;
            }
            else
            {
                GameWebAPI.RespDataMN_GetDeckList.DeckList[] deckList = DataMng.Instance().RespDataMN_DeckList.deckList;
                string deckNoText = DataMng.Instance().RespDataMN_DeckList.selectDeckNum;
                GameWebAPI.RespDataMN_GetDeckList.DeckList deckList2 = deckList.Where((GameWebAPI.RespDataMN_GetDeckList.DeckList item) => item.deckNum == deckNoText.ToString()).SingleOrDefault <GameWebAPI.RespDataMN_GetDeckList.DeckList>();
                bool flag2 = deckList2.monsterList.Where((GameWebAPI.RespDataMN_GetDeckList.MonsterList item) => item.userMonsterId == monsterData.userMonster.userMonsterId).Any <GameWebAPI.RespDataMN_GetDeckList.MonsterList>();
                if (flag2)
                {
                    List <MonsterData> list = new List <MonsterData>();
                    foreach (GameWebAPI.RespDataMN_GetDeckList.MonsterList monsterList2 in deckList2.monsterList)
                    {
                        MonsterData monsterDataByUserMonsterID = MonsterDataMng.Instance().GetMonsterDataByUserMonsterID(monsterList2.userMonsterId, false);
                        list.Add(monsterDataByUserMonsterID);
                    }
                    party = list.ToArray();
                }
            }
        }
        int num3 = 0;
        AffectEffectProperty affectEffectProperty = null;

        if (extraEffectType == EffectStatusBase.ExtraEffectType.SkillPower)
        {
            List <AffectEffectProperty> affectEffectPropertyListForUtil = BattleServerControl.GetAffectEffectPropertyListForUtil(num.ToString());
            if (affectEffectPropertyListForUtil != null && affectEffectPropertyListForUtil.Count <AffectEffectProperty>() > 0)
            {
                affectEffectProperty = affectEffectPropertyListForUtil[0];
                num  = affectEffectProperty.GetPower(null);
                num3 = ExtraEffectUtil.GetExtraStageValue(num, monsterData, party, effectArray, affectEffectProperty, extraEffectType);
            }
            else
            {
                num = num3;
            }
        }
        else if (extraEffectType == EffectStatusBase.ExtraEffectType.SkillHit)
        {
            List <AffectEffectProperty> affectEffectPropertyListForUtil2 = BattleServerControl.GetAffectEffectPropertyListForUtil(num.ToString());
            if (affectEffectPropertyListForUtil2 != null && affectEffectPropertyListForUtil2.Count <AffectEffectProperty>() > 0)
            {
                affectEffectProperty = affectEffectPropertyListForUtil2[0];
                num  = (int)(affectEffectProperty.hitRate * 100f);
                num3 = ExtraEffectUtil.GetExtraStageValue(num, monsterData, party, effectArray, affectEffectProperty, extraEffectType);
            }
            else
            {
                num = num3;
            }
        }
        else
        {
            num3 = ExtraEffectUtil.GetExtraStageValue(num, monsterData, party, effectArray, affectEffectProperty, extraEffectType);
        }
        result = num3 + num2;
        change = 0;
        if (num2 > 0 || num < num3)
        {
            change = 1;
        }
        else if (num2 < 0 || num > num3)
        {
            change = -1;
        }
    }
Esempio n. 4
0
    public void GetDifferenceExtraPram(out int upCount, out int downCount)
    {
        upCount   = 0;
        downCount = 0;
        int num = this.extraMaxHp - this.maxHp;

        if (num > 0)
        {
            upCount++;
        }
        else if (num < 0)
        {
            downCount++;
        }
        num = this.extraAttackPower - this.attackPower;
        if (num > 0)
        {
            upCount++;
        }
        else if (num < 0)
        {
            downCount++;
        }
        num = this.extraDefencePower - this.defencePower;
        if (num > 0)
        {
            upCount++;
        }
        else if (num < 0)
        {
            downCount++;
        }
        num = this.extraSpecialAttackPower - this.specialAttackPower;
        if (num > 0)
        {
            upCount++;
        }
        else if (num < 0)
        {
            downCount++;
        }
        num = this.extraSpecialDefencePower - this.specialDefencePower;
        if (num > 0)
        {
            upCount++;
        }
        else if (num < 0)
        {
            downCount++;
        }
        num = this.extraSpeed - this.speed;
        if (num > 0)
        {
            upCount++;
        }
        else if (num < 0)
        {
            downCount++;
        }
        if (this.skillStatus.Length > 1)
        {
            AffectEffectProperty affectEffectFirst = this.skillStatus[1].GetAffectEffectFirst();
            if (affectEffectFirst != null)
            {
                if (AffectEffectProperty.IsDamage(affectEffectFirst.type))
                {
                    int num2 = this.m_extraDeathblowSkillPower - affectEffectFirst.GetPower(this);
                    if (num2 > 0)
                    {
                        upCount++;
                    }
                    else if (num2 < 0)
                    {
                        downCount++;
                    }
                }
                float num3 = this.m_extraDeathblowSkillHitRate - affectEffectFirst.hitRate;
                if (num3 > 0f)
                {
                    upCount++;
                }
                else if (num3 < 0f)
                {
                    downCount++;
                }
            }
        }
        if (this.skillStatus.Length > 2)
        {
            AffectEffectProperty affectEffectFirst2 = this.skillStatus[2].GetAffectEffectFirst();
            if (affectEffectFirst2 != null)
            {
                if (AffectEffectProperty.IsDamage(affectEffectFirst2.type))
                {
                    int num4 = this.m_extraInheritanceSkillPower - affectEffectFirst2.GetPower(this);
                    if (num4 > 0)
                    {
                        upCount++;
                    }
                    else if (num4 < 0)
                    {
                        downCount++;
                    }
                }
                float num5 = this.m_extraInheritanceSkillHitRate - affectEffectFirst2.hitRate;
                if (num5 > 0f)
                {
                    upCount++;
                }
                else if (num5 < 0f)
                {
                    downCount++;
                }
            }
        }
        if (this.skillStatus.Length > 3)
        {
            AffectEffectProperty affectEffectFirst3 = this.skillStatus[3].GetAffectEffectFirst();
            if (affectEffectFirst3 != null)
            {
                if (AffectEffectProperty.IsDamage(affectEffectFirst3.type))
                {
                    int num6 = this.m_extraInheritanceSkillPower2 - affectEffectFirst3.GetPower(this);
                    if (num6 > 0)
                    {
                        upCount++;
                    }
                    else if (num6 < 0)
                    {
                        downCount++;
                    }
                }
                float num7 = this.m_extraInheritanceSkillHitRate2 - affectEffectFirst3.hitRate;
                if (num7 > 0f)
                {
                    upCount++;
                }
                else if (num7 < 0f)
                {
                    downCount++;
                }
            }
        }
    }
Esempio n. 5
0
    public static SkillResults GetSkillResults(AffectEffectProperty affectEffectProperty, CharacterStateControl attackerCharacter, CharacterStateControl targetCharacter, bool onRandomAttack = true, int attackNum = 0)
    {
        SkillResults      skillResults        = new SkillResults();
        LeaderSkillResult leaderSkillResult   = attackerCharacter.leaderSkillResult;
        HaveSufferState   currentSufferState  = attackerCharacter.currentSufferState;
        HaveSufferState   currentSufferState2 = targetCharacter.currentSufferState;

        float[] array = new float[2];
        skillResults.useAffectEffectProperty = affectEffectProperty;
        skillResults.hitIconAffectEffect     = AffectEffect.Damage;
        skillResults.attackCharacter         = attackerCharacter;
        skillResults.targetCharacter         = targetCharacter;
        if (targetCharacter.isDied)
        {
            return(skillResults);
        }
        skillResults.onWeakHit = ((!affectEffectProperty.canUseAttribute) ? Strength.None : targetCharacter.tolerance.GetAttributeStrength(affectEffectProperty.attribute));
        if (attackerCharacter.hittingTheTargetType == BattleInvariant.Type.Non)
        {
            skillResults.onMissHit = !affectEffectProperty.OnHit(attackerCharacter, targetCharacter);
        }
        else if (attackerCharacter.hittingTheTargetType == BattleInvariant.Type.Up)
        {
            skillResults.onMissHit = false;
        }
        else if (attackerCharacter.hittingTheTargetType == BattleInvariant.Type.Down)
        {
            skillResults.onMissHit = true;
        }
        if (skillResults.onWeakHit == Strength.None || skillResults.onWeakHit == Strength.Weak)
        {
            if (attackerCharacter.criticalTheTargetType == BattleInvariant.Type.Non)
            {
                float num = affectEffectProperty.satisfactionRate;
                SufferStateProperty sufferStateProperty = currentSufferState.GetSufferStateProperty(SufferStateProperty.SufferType.SatisfactionRateUp);
                if (sufferStateProperty.isActive)
                {
                    num += sufferStateProperty.upPercent;
                }
                SufferStateProperty sufferStateProperty2 = currentSufferState.GetSufferStateProperty(SufferStateProperty.SufferType.SatisfactionRateDown);
                if (sufferStateProperty2.isActive)
                {
                    num -= sufferStateProperty2.downPercent;
                }
                if (attackerCharacter.isSelectSkill > 0)
                {
                    num += leaderSkillResult.satisfactionRateUpPercent;
                }
                num += attackerCharacter.chipAddCritical;
                skillResults.onCriticalHit = RandomExtension.Switch(num);
            }
            else if (attackerCharacter.criticalTheTargetType == BattleInvariant.Type.Up)
            {
                skillResults.onCriticalHit = true;
            }
            else if (attackerCharacter.criticalTheTargetType == BattleInvariant.Type.Down)
            {
                skillResults.onCriticalHit = false;
            }
        }
        if (!skillResults.onMissHit)
        {
            if (affectEffectProperty.powerType == PowerType.Percentage && skillResults.onWeakHit == Strength.Invalid)
            {
                skillResults.hitIconAffectEffect = AffectEffect.Invalid;
                skillResults.onMissHit           = false;
                skillResults.onWeakHit           = Strength.Invalid;
                skillResults.onCriticalHit       = false;
            }
            else if (skillResults.targetCharacter.currentSufferState.FindSufferState(SufferStateProperty.SufferType.TurnBarrier))
            {
                skillResults.hitIconAffectEffect = AffectEffect.TurnBarrier;
                skillResults.onMissHit           = false;
                skillResults.onWeakHit           = Strength.None;
                skillResults.onCriticalHit       = false;
            }
            else if (skillResults.targetCharacter.currentSufferState.FindSufferState(SufferStateProperty.SufferType.CountBarrier))
            {
                skillResults.hitIconAffectEffect = AffectEffect.CountBarrier;
                skillResults.onMissHit           = false;
                skillResults.onWeakHit           = Strength.None;
                skillResults.onCriticalHit       = false;
            }
            else if (skillResults.targetCharacter.currentSufferState.FindSufferState(SufferStateProperty.SufferType.TurnEvasion))
            {
                skillResults.hitIconAffectEffect = AffectEffect.TurnEvasion;
                skillResults.onMissHit           = false;
                skillResults.onWeakHit           = Strength.None;
                skillResults.onCriticalHit       = false;
            }
            else if (skillResults.targetCharacter.currentSufferState.FindSufferState(SufferStateProperty.SufferType.CountEvasion))
            {
                skillResults.hitIconAffectEffect = AffectEffect.CountEvasion;
                skillResults.onMissHit           = false;
                skillResults.onWeakHit           = Strength.None;
                skillResults.onCriticalHit       = false;
            }
            else if (affectEffectProperty.type == AffectEffect.ReferenceTargetHpRate)
            {
                SufferStateProperty.DamageRateResult reduceDamageRate = SkillStatus.GetReduceDamageRate(affectEffectProperty, attackerCharacter, targetCharacter);
                skillResults.damageRateResult = reduceDamageRate;
                float attributeDamegeResult = SkillStatus.GetAttributeDamegeResult(skillResults.onWeakHit);
                float num2 = 1f;
                if (skillResults.onCriticalHit)
                {
                    num2 = 1.2f;
                }
                int num3 = (int)(affectEffectProperty.damagePercent * (float)targetCharacter.hp);
                for (int i = 0; i < array.Length; i++)
                {
                    array[i] = (float)num3 * attributeDamegeResult * num2 * reduceDamageRate.damageRate;
                }
            }
            else if (affectEffectProperty.type == AffectEffect.RefHpRateNonAttribute)
            {
                SufferStateProperty.DamageRateResult reduceDamageRate2 = SkillStatus.GetReduceDamageRate(affectEffectProperty, attackerCharacter, targetCharacter);
                skillResults.damageRateResult = reduceDamageRate2;
                float num4 = 1f;
                if (skillResults.onCriticalHit)
                {
                    num4 = 1.2f;
                }
                int num5 = (int)(affectEffectProperty.damagePercent * (float)targetCharacter.hp);
                for (int j = 0; j < array.Length; j++)
                {
                    array[j] = (float)num5 * num4 * reduceDamageRate2.damageRate;
                }
            }
            else if (affectEffectProperty.powerType == PowerType.Percentage)
            {
                bool  flag = affectEffectProperty.techniqueType == TechniqueType.Physics;
                float attributeDamegeResult2 = SkillStatus.GetAttributeDamegeResult(skillResults.onWeakHit);
                float num6 = 1f;
                if (skillResults.onCriticalHit)
                {
                    num6 = 1.2f;
                }
                float num7 = 1f;
                if (onRandomAttack)
                {
                    num7 = UnityEngine.Random.Range(0.85f, 1f);
                }
                SufferStateProperty.DamageRateResult reduceDamageRate3 = SkillStatus.GetReduceDamageRate(affectEffectProperty, attackerCharacter, targetCharacter);
                skillResults.damageRateResult = reduceDamageRate3;
                float num8 = 1f;
                if (flag)
                {
                    SufferStateProperty sufferStateProperty3 = targetCharacter.currentSufferState.GetSufferStateProperty(SufferStateProperty.SufferType.Counter);
                    if (sufferStateProperty3.isActive)
                    {
                        num8 *= sufferStateProperty3.recieveDamageRate;
                    }
                }
                else
                {
                    SufferStateProperty sufferStateProperty4 = targetCharacter.currentSufferState.GetSufferStateProperty(SufferStateProperty.SufferType.Reflection);
                    if (sufferStateProperty4.isActive)
                    {
                        num8 *= sufferStateProperty4.recieveDamageRate;
                    }
                }
                float num9 = 1f;
                SufferStateProperty sufferStateProperty5 = currentSufferState.GetSufferStateProperty(SufferStateProperty.SufferType.PowerCharge);
                if (sufferStateProperty5.isActive)
                {
                    if (flag)
                    {
                        num9 *= sufferStateProperty5.physicUpPercent;
                    }
                    else
                    {
                        num9 *= sufferStateProperty5.specialUpPercent;
                    }
                }
                float num10 = 1f;
                float num11 = 0f;
                float num12 = 0f;
                SufferStateProperty sufferStateProperty6 = currentSufferState.GetSufferStateProperty(SufferStateProperty.SufferType.DamageRateUp);
                if (sufferStateProperty6.isActive)
                {
                    SufferStateProperty.DamageRateResult caseDamageRate = sufferStateProperty6.GetCaseDamageRate(affectEffectProperty, targetCharacter);
                    num11 += caseDamageRate.damageRate;
                }
                SufferStateProperty sufferStateProperty7 = currentSufferState.GetSufferStateProperty(SufferStateProperty.SufferType.DamageRateDown);
                if (sufferStateProperty7.isActive)
                {
                    SufferStateProperty.DamageRateResult caseDamageRate2 = sufferStateProperty7.GetCaseDamageRate(affectEffectProperty, targetCharacter);
                    num12 += caseDamageRate2.damageRate;
                }
                num10 = Mathf.Max(0f, num10 + num11 - num12);
                for (int k = 0; k < array.Length; k++)
                {
                    int   num13 = 0;
                    float num14 = 1f;
                    foreach (int num15 in attackerCharacter.potencyChipIdList.Keys)
                    {
                        GameWebAPI.RespDataMA_ChipEffectM.ChipEffect chipEffectDataToId = ChipDataMng.GetChipEffectDataToId(num15.ToString());
                        if (k != 0 || chipEffectDataToId.effectTrigger.ToInt32() != 11)
                        {
                            GameWebAPI.RespDataMA_ChipEffectM.ChipEffect[] chipEffects = new GameWebAPI.RespDataMA_ChipEffectM.ChipEffect[]
                            {
                                chipEffectDataToId
                            };
                            num13 += ChipEffectStatus.GetSkillPowerCorrectionValue(chipEffects, affectEffectProperty, attackerCharacter, attackNum);
                            num14 += ChipEffectStatus.GetSkillDamageCorrectionValue(chipEffects, affectEffectProperty, attackerCharacter);
                        }
                    }
                    float num16 = 1f;
                    foreach (int num17 in targetCharacter.potencyChipIdList.Keys)
                    {
                        GameWebAPI.RespDataMA_ChipEffectM.ChipEffect chipEffectDataToId2 = ChipDataMng.GetChipEffectDataToId(num17.ToString());
                        if (k != 0 || chipEffectDataToId2.effectTrigger.ToInt32() != 11)
                        {
                            GameWebAPI.RespDataMA_ChipEffectM.ChipEffect[] chipEffects2 = new GameWebAPI.RespDataMA_ChipEffectM.ChipEffect[]
                            {
                                chipEffectDataToId2
                            };
                            num16 += ChipEffectStatus.GetSkillDamageCorrectionValue(chipEffects2, affectEffectProperty, targetCharacter);
                        }
                    }
                    float num18 = 0f;
                    float num19 = 0f;
                    SkillStatus.CalculationBasePower(ref num18, ref num19, flag, k == 0, attackerCharacter, targetCharacter);
                    int num20;
                    if (k == 0)
                    {
                        num20 = affectEffectProperty.GetPower(attackerCharacter);
                    }
                    else
                    {
                        List <ExtraEffectStatus> extraEffectStatus = BattleStateManager.current.battleStateData.extraEffectStatus;
                        List <ExtraEffectStatus> invocationList    = ExtraEffectStatus.GetInvocationList(extraEffectStatus, EffectStatusBase.EffectTriggerType.Usually);
                        num20 = ExtraEffectStatus.GetSkillPowerCorrectionValue(invocationList, affectEffectProperty, attackerCharacter);
                    }
                    if (affectEffectProperty.type == AffectEffect.DefenseThroughDamage || affectEffectProperty.type == AffectEffect.SpDefenseThroughDamage)
                    {
                        num19 = (float)affectEffectProperty.DefenseThrough;
                    }
                    if (num18 <= 0f)
                    {
                        array[k] = 0f;
                    }
                    else
                    {
                        num18 = Mathf.Max(num18, 0f);
                        num19 = Mathf.Max(num19, 1f);
                        float num21 = (float)attackerCharacter.level * 0.01f + 1f;
                        float num22 = (float)(num20 + num13) * (1f + leaderSkillResult.damageUpPercent);
                        float num23 = num21 * num22 * num18 * num9 / num19 + 2f;
                        float num24 = num14 * num16 * reduceDamageRate3.damageRate * num8 * num7 * num6 * attributeDamegeResult2 * num10;
                        array[k] = num23 * num24;
                    }
                }
            }
            else if (affectEffectProperty.powerType == PowerType.Fixable)
            {
                for (int l = 0; l < array.Length; l++)
                {
                    array[l] = (float)affectEffectProperty.damagePower;
                }
                skillResults.onWeakHit = Strength.None;
            }
        }
        skillResults.originalAttackPower = Mathf.FloorToInt(array[0]);
        skillResults.attackPower         = Mathf.FloorToInt(array[1]);
        if (skillResults.hitIconAffectEffect == AffectEffect.Damage && skillResults.attackPower <= 0)
        {
            skillResults.onMissHit     = true;
            skillResults.onCriticalHit = false;
        }
        if (skillResults.onWeakHit != Strength.Drain)
        {
            targetCharacter.hp -= skillResults.attackPower;
        }
        else
        {
            targetCharacter.hp += skillResults.attackPower;
        }
        if (skillResults.attackPower < skillResults.originalAttackPower)
        {
            skillResults.extraEffectType = ExtraEffectType.Down;
        }
        else if (skillResults.attackPower > skillResults.originalAttackPower)
        {
            skillResults.extraEffectType = ExtraEffectType.Up;
        }
        else
        {
            skillResults.extraEffectType = ExtraEffectType.Non;
        }
        return(skillResults);
    }
Esempio n. 6
0
    public int GetPowerFirst(CharacterStateControl characterStateControl = null)
    {
        AffectEffectProperty affectEffectAttackFirst = this.GetAffectEffectAttackFirst();

        return((affectEffectAttackFirst == null) ? 0 : affectEffectAttackFirst.GetPower(characterStateControl));
    }
 public static int GetSkillPowerCorrectionValue(GameWebAPI.RespDataMA_ChipEffectM.ChipEffect[] chipEffects, AffectEffectProperty skillPropety, CharacterStateControl character, int attackNum = 0)
 {
     return((int)ChipEffectStatus.GetChipEffectValueToFloat(chipEffects, (float)skillPropety.GetPower(character), character.isEnemy, character.characterStatus.monsterIntegrationIds, character.groupId, character.tolerance, character.characterDatas.tribe, character.characterDatas.growStep, skillPropety, character.currentSufferState, ChipEffectStatus.GetTargetType(character, character), EffectStatusBase.ExtraEffectType.SkillPower, attackNum));
 }