public bool IsAnyNotUpdate(MonsterAbilityStatusInfo mas)
        {
            bool result = false;

            if (!mas.hpNoMaterial && mas.hpAbilityRate <= 0f)
            {
                result = true;
            }
            if (!mas.attackNoMaterial && mas.attackAbilityRate <= 0f)
            {
                result = true;
            }
            if (!mas.defenseNoMaterial && mas.defenseAbilityRate <= 0f)
            {
                result = true;
            }
            if (!mas.spAttackNoMaterial && mas.spAttackAbilityRate <= 0f)
            {
                result = true;
            }
            if (!mas.spDefenseNoMaterial && mas.spDefenseAbilityRate <= 0f)
            {
                result = true;
            }
            if (!mas.speedNoMaterial && mas.speedAbilityRate <= 0f)
            {
                result = true;
            }
            return(result);
        }
        public float GetTotalAbilityRate(MonsterAbilityStatusInfo mas)
        {
            float num = 0f;

            num += mas.hpAbilityRate;
            num += mas.attackAbilityRate;
            num += mas.defenseAbilityRate;
            num += mas.spAttackAbilityRate;
            num += mas.spDefenseAbilityRate;
            num += mas.speedAbilityRate;
            num += mas.hpAbilityMinGuaranteeRate;
            num += mas.attackAbilityMinGuaranteeRate;
            num += mas.defenseAbilityMinGuaranteeRate;
            num += mas.spAttackAbilityMinGuaranteeRate;
            num += mas.spDefenseAbilityMinGuaranteeRate;
            return(num + mas.speedAbilityMinGuaranteeRate);
        }
        public MonsterAbilityStatusInfo CreateAbilityStatus(MonsterData baseData, MonsterData partnerData)
        {
            MonsterAbilityStatusInfo monsterAbilityStatusInfo = new MonsterAbilityStatusInfo();
            float campaignFix = this.GetCampaignFix();

            GameWebAPI.RespDataUS_GetMonsterList.UserMonsterList userMonster  = baseData.userMonster;
            GameWebAPI.RespDataUS_GetMonsterList.UserMonsterList userMonster2 = partnerData.userMonster;
            string growStep = partnerData.monsterMG.growStep;

            this.SetAbilityInfo(userMonster.hpAbility, userMonster2.hpAbility, growStep, campaignFix, ref monsterAbilityStatusInfo.hpAbilityFlg, ref monsterAbilityStatusInfo.hpAbility, ref monsterAbilityStatusInfo.hpAbilityRate, ref monsterAbilityStatusInfo.hpNoMaterial, ref monsterAbilityStatusInfo.hpIsAbilityMax, ref monsterAbilityStatusInfo.hpAbilityMinGuarantee, ref monsterAbilityStatusInfo.hpAbilityMinGuaranteeRate);
            this.SetAbilityInfo(userMonster.attackAbility, userMonster2.attackAbility, growStep, campaignFix, ref monsterAbilityStatusInfo.attackAbilityFlg, ref monsterAbilityStatusInfo.attackAbility, ref monsterAbilityStatusInfo.attackAbilityRate, ref monsterAbilityStatusInfo.attackNoMaterial, ref monsterAbilityStatusInfo.attackIsAbilityMax, ref monsterAbilityStatusInfo.attackAbilityMinGuarantee, ref monsterAbilityStatusInfo.attackAbilityMinGuaranteeRate);
            this.SetAbilityInfo(userMonster.defenseAbility, userMonster2.defenseAbility, growStep, campaignFix, ref monsterAbilityStatusInfo.defenseAbilityFlg, ref monsterAbilityStatusInfo.defenseAbility, ref monsterAbilityStatusInfo.defenseAbilityRate, ref monsterAbilityStatusInfo.defenseNoMaterial, ref monsterAbilityStatusInfo.defenseIsAbilityMax, ref monsterAbilityStatusInfo.defenseAbilityMinGuarantee, ref monsterAbilityStatusInfo.defenseAbilityMinGuaranteeRate);
            this.SetAbilityInfo(userMonster.spAttackAbility, userMonster2.spAttackAbility, growStep, campaignFix, ref monsterAbilityStatusInfo.spAttackAbilityFlg, ref monsterAbilityStatusInfo.spAttackAbility, ref monsterAbilityStatusInfo.spAttackAbilityRate, ref monsterAbilityStatusInfo.spAttackNoMaterial, ref monsterAbilityStatusInfo.spAttackIsAbilityMax, ref monsterAbilityStatusInfo.spAttackAbilityMinGuarantee, ref monsterAbilityStatusInfo.spAttackAbilityMinGuaranteeRate);
            this.SetAbilityInfo(userMonster.spDefenseAbility, userMonster2.spDefenseAbility, growStep, campaignFix, ref monsterAbilityStatusInfo.spDefenseAbilityFlg, ref monsterAbilityStatusInfo.spDefenseAbility, ref monsterAbilityStatusInfo.spDefenseAbilityRate, ref monsterAbilityStatusInfo.spDefenseNoMaterial, ref monsterAbilityStatusInfo.spDefenseIsAbilityMax, ref monsterAbilityStatusInfo.spDefenseAbilityMinGuarantee, ref monsterAbilityStatusInfo.spDefenseAbilityMinGuaranteeRate);
            this.SetAbilityInfo(userMonster.speedAbility, userMonster2.speedAbility, growStep, campaignFix, ref monsterAbilityStatusInfo.speedAbilityFlg, ref monsterAbilityStatusInfo.speedAbility, ref monsterAbilityStatusInfo.speedAbilityRate, ref monsterAbilityStatusInfo.speedNoMaterial, ref monsterAbilityStatusInfo.speedIsAbilityMax, ref monsterAbilityStatusInfo.speedAbilityMinGuarantee, ref monsterAbilityStatusInfo.speedAbilityMinGuaranteeRate);
            return(monsterAbilityStatusInfo);
        }
        public void AdjustMedalInheritanceRate(MonsterAbilityStatusInfo statusInfo, List <AbilityData.GoldMedalInheritanceState> inheritanceStates, int maxGoldMedalCount)
        {
            int num = 0;

            for (int i = 0; i < inheritanceStates.Count; i++)
            {
                if (inheritanceStates[i].goldUpState == AbilityData.GOLD_UPGRADE_STATE.HAS)
                {
                    num++;
                }
            }
            for (int j = 0; j < inheritanceStates.Count; j++)
            {
                if (num >= maxGoldMedalCount)
                {
                    this.AdjustGoldMedalInheritanceRate(inheritanceStates[j], statusInfo);
                }
            }
        }
        private void AdjustGoldMedalInheritanceRate(AbilityData.GoldMedalInheritanceState upgradeState, MonsterAbilityStatusInfo info)
        {
            if (upgradeState.goldUpState == AbilityData.GOLD_UPGRADE_STATE.INHERIT || upgradeState.goldUpState == AbilityData.GOLD_UPGRADE_STATE.UPGRADE)
            {
                switch (upgradeState.abilityState)
                {
                case AbilityData.ABILITY_STATE.HP:
                    info.hpAbilityRate = 0f;
                    break;

                case AbilityData.ABILITY_STATE.ATK:
                    info.attackAbilityRate = 0f;
                    break;

                case AbilityData.ABILITY_STATE.DEF:
                    info.defenseAbilityRate = 0f;
                    break;

                case AbilityData.ABILITY_STATE.S_ATK:
                    info.spAttackAbilityRate = 0f;
                    break;

                case AbilityData.ABILITY_STATE.S_DEF:
                    info.spDefenseAbilityRate = 0f;
                    break;

                case AbilityData.ABILITY_STATE.SPD:
                    info.speedAbilityRate = 0f;
                    break;
                }
            }
        }