Пример #1
0
    /// <summary>
    /// リンクキャラの作成
    /// </summary>
    /// <param name="unit"></param>
    void SetupLinkChara(PartyMemberUnitContext unit)
    {
        if (unit != null && unit.UnitData != null)
        {
            var linkData = CharaLinkUtil.GetLinkUnit(unit.UnitData.link_unique_id);
            List <MasterDataParamChara> charaMasterList = MasterFinder <MasterDataParamChara> .Instance.FindAll();

            if (linkData != null && linkData.id > 0)
            {
                unit.LinkCharaMaster = charaMasterList.Find((v) => v.fix_id == linkData.id);
                UnitIconImageProvider.Instance.Get(
                    linkData.id,
                    sprite =>
                {
                    unit.LinkUnitImage = sprite;
                });
                unit.IsEmptyLinkUnit = false;

                if (unit.LinkCharaMaster != null)
                {
                    unit.LinkOutSideCircleImage = MainMenuUtil.GetElementCircleSprite(unit.LinkCharaMaster.element);
                }
                return;
            }
        }
        unit.LinkOutSideCircleImage = ResourceManager.Instance.Load("icon_circle_deco", ResourceType.Common);
        unit.LinkUnitImage          = ResourceManager.Instance.Load("icon_empty2", ResourceType.Menu);
        unit.IsEmptyLinkUnit        = true;
    }
Пример #2
0
    public void SetLinkEffectSkill(MasterDataParamChara cCharaMasterData, uint nLinkPoint)
    {
        //------------------------------------------------------------
        // LINK SKILL
        //------------------------------------------------------------
        MasterDataSkillActive cSkillParamLinkActive = null;

        if (cCharaMasterData != null)
        {
            cSkillParamLinkActive = MasterDataUtil.GetActiveSkillParamFromID(cCharaMasterData.link_skill_active);
        }
        if (null != cSkillParamLinkActive)
        {
            // スキル名
            LinkSkillName = cSkillParamLinkActive.skill_link_name;

            // 説明文
            LinkSkillMessage = cSkillParamLinkActive.skill_link_detail;

            //発動率
            float fSkillOdds = CharaLinkUtil.GetLinkSkillOdds(cSkillParamLinkActive, (int)nLinkPoint) * 0.01f;
            LinkSkillRate = string.Format(GameTextUtil.GetText("unit_linkstatus2"), fSkillOdds.ToString("F1"));
        }
        else
        {
            // スキル名
            LinkSkillName = EmptyStr;
            // 説明文
            LinkSkillMessage = EmptyStr;
            // 発動率
            LinkSkillRate = "";
        }

        //------------------------------------------------------------
        // LINK PASSIVE
        //------------------------------------------------------------
        MasterDataSkillPassive cSkillParamLinkPassive = null;

        if (cCharaMasterData != null)
        {
            cSkillParamLinkPassive = MasterDataUtil.GetPassiveSkillParamFromID(cCharaMasterData.link_skill_passive);
        }
        if (null != cSkillParamLinkPassive)
        {
            // スキル名
            LinkPassiveName = cSkillParamLinkPassive.name;

            // 説明文
            LinkPassiveMessage = cSkillParamLinkPassive.detail;
        }
        else
        {
            // スキル名
            LinkPassiveName = EmptyStr;

            // 説明文
            LinkPassiveMessage = EmptyStr;
        }
    }
Пример #3
0
    /// <summary>
    /// ソートパラメータ設定(ユニット共通)
    /// </summary>
    /// <param name="_main"></param>
    /// <param name="_mainMaster"></param>
    /// <param name="_sub"></param>
    private void setSortParamUnit(PacketStructUnit _main, MasterDataParamChara _mainMaster, PacketStructUnit _sub)
    {
        CharaOnce baseChara = new CharaOnce();

        if (_main.link_info == (uint)ServerDataDefine.CHARALINK_TYPE.CHARALINK_TYPE_BASE &&
            _sub != null)
        {
            baseChara.CharaSetupFromParam(
                _mainMaster,
                (int)_main.level,
                (int)_main.limitbreak_lv,
                (int)_main.limitover_lv,
                (int)_main.add_pow,
                (int)_main.add_hp,
                _sub.id,
                (int)_sub.level,
                (int)_sub.add_pow,
                (int)_sub.add_hp,
                (int)_main.link_point,
                (int)_sub.limitover_lv
                );
        }
        else
        {
            baseChara.CharaSetupFromParam(
                _mainMaster,
                (int)_main.level,
                (int)_main.limitbreak_lv,
                (int)_main.limitover_lv,
                (int)_main.add_pow,
                (int)_main.add_hp,
                0,
                0,
                0,
                0,
                0,
                0
                );
        }

        draw_id = (int)_mainMaster.draw_id;
        level   = (int)_main.level;
        hp      = baseChara.m_CharaHP;
        pow     = baseChara.m_CharaPow;
        plus    = baseChara.m_CharaPlusHP + baseChara.m_CharaPlusPow;
        cost    = _mainMaster.party_cost;
        if (_main.link_info == (uint)ServerDataDefine.CHARALINK_TYPE.CHARALINK_TYPE_BASE && _sub != null)
        {
            cost += CharaLinkUtil.GetLinkUnitCost(_sub.id);
        }
        rare         = (int)_mainMaster.rare;
        element      = _mainMaster.element;
        kind         = _mainMaster.kind;
        sub_kind     = _mainMaster.sub_kind;
        limitover_lv = (int)_main.limitover_lv;
        charm        = baseChara.m_CharaCharm;
    }
Пример #4
0
    static public void setupCharaParty(ref CharaParty _party, PacketStructUnit[] unitList, PacketStructUnit[] linkUnitList = null)
    {
        if (_party == null || unitList == null)
        {
            return;
        }

        CharaOnce[] acCharaList = new CharaOnce[(int)GlobalDefine.PartyCharaIndex.MAX];

        for (int j = 0; j < unitList.Length; j++)
        {
            if (unitList[j] == null)
            {
                continue;
            }
            PacketStructUnit cBaseUnit = unitList[j];

            // リンクの情報
            int  nLinkLimitOverLV = 0;
            uint nLinkId          = 0;
            int  nLinkLevel       = 0;
            int  nLinkPlusPow     = 0;
            int  nLinkPlusHp      = 0;

            PacketStructUnit cLinkUnit;
            if (linkUnitList != null && linkUnitList.IsRange(j))
            {
                cLinkUnit = linkUnitList[j];
            }
            else
            {
                cLinkUnit = CharaLinkUtil.GetLinkUnit(cBaseUnit.link_unique_id);
            }

            if (cLinkUnit != null)
            {
                nLinkId          = cLinkUnit.id;
                nLinkLevel       = (int)cLinkUnit.level;
                nLinkPlusPow     = (int)cLinkUnit.add_pow;
                nLinkPlusHp      = (int)cLinkUnit.add_hp;
                nLinkLimitOverLV = (int)cLinkUnit.limitover_lv;
            }


            acCharaList[j] = new CharaOnce();
            acCharaList[j].CharaSetupFromID(cBaseUnit.id, (int)cBaseUnit.level, (int)cBaseUnit.limitbreak_lv, (int)cBaseUnit.limitover_lv, (int)cBaseUnit.add_pow, (int)cBaseUnit.add_hp,
                                            nLinkId, nLinkLevel, nLinkPlusPow, nLinkPlusHp, (int)cBaseUnit.link_point, nLinkLimitOverLV);
        }

        _party.PartySetupMenu(acCharaList, false);
    }
Пример #5
0
    public void SetUnitData(ref PartyMemberStatusListItemContext unitStatus, PacketStructUnit unitData, PacketStructUnit[] partyUnits)
    {
        if (unitStatus == null)
        {
            return;
        }

        MasterDataParamChara charMaster = null;

        if (unitData == null || unitData.id == 0)
        {
            unitStatus.HpText  = "";
            unitStatus.AtkText = "";
            unitStatus.Cost    = 0;
            unitStatus.Charm   = 0;
        }
        else
        {
            charMaster = MasterFinder <MasterDataParamChara> .Instance.Find((int)unitData.id);

            SetUpCharaData(ref unitStatus, unitData, CharaLinkUtil.GetLinkUnit(unitData.link_unique_id), false, partyUnits);
        }

        MasterDataSkillActive skill1 = null;

        if (charMaster != null && charMaster.skill_active0 > 0)
        {
            skill1 = MasterFinder <MasterDataSkillActive> .Instance.Find((int)charMaster.skill_active0);
        }
        unitStatus.IsActiveSkill1Empty = (skill1 == null);
        unitStatus.Skill1Cost1         = (skill1 != null) ? MainMenuUtil.GetSkillElementIcon(skill1.cost1) : null;
        unitStatus.Skill1Cost2         = (skill1 != null) ? MainMenuUtil.GetSkillElementIcon(skill1.cost2) : null;
        unitStatus.Skill1Cost3         = (skill1 != null) ? MainMenuUtil.GetSkillElementIcon(skill1.cost3) : null;
        unitStatus.Skill1Cost4         = (skill1 != null) ? MainMenuUtil.GetSkillElementIcon(skill1.cost4) : null;
        unitStatus.Skill1Cost5         = (skill1 != null) ? MainMenuUtil.GetSkillElementIcon(skill1.cost5) : null;
        unitStatus.Skill1Color         = (skill1 != null) ? MainMenuUtil.GetSkillElementColor("S1", skill1.skill_element) : null;

        MasterDataSkillActive skill2 = null;

        if (charMaster != null && charMaster.skill_active1 > 0)
        {
            skill2 = MasterFinder <MasterDataSkillActive> .Instance.Find((int)charMaster.skill_active1);
        }
        unitStatus.IsActiveSkill2Empty = (skill2 == null);
        unitStatus.Skill2Cost1         = (skill2 != null) ? MainMenuUtil.GetSkillElementIcon(skill2.cost1) : null;
        unitStatus.Skill2Cost2         = (skill2 != null) ? MainMenuUtil.GetSkillElementIcon(skill2.cost2) : null;
        unitStatus.Skill2Cost3         = (skill2 != null) ? MainMenuUtil.GetSkillElementIcon(skill2.cost3) : null;
        unitStatus.Skill2Cost4         = (skill2 != null) ? MainMenuUtil.GetSkillElementIcon(skill2.cost4) : null;
        unitStatus.Skill2Cost5         = (skill2 != null) ? MainMenuUtil.GetSkillElementIcon(skill2.cost5) : null;
        unitStatus.Skill2Color         = (skill2 != null) ? MainMenuUtil.GetSkillElementColor("S2", skill2.skill_element) : null;
    }
Пример #6
0
    private void setParam(CharaOnce baseChara, MasterDataParamChara _masterMain, MasterDataLimitOver _masterMainLO, PacketStructUnit _subUnit = null, int battleHP = 0, int battleHPMax = 0, int battleATK = -1)
    {
        /**
         * メインユニット情報
         */
        {
            string levelFormat = GameTextUtil.GetText("unit_status17");
            Level = string.Format(levelFormat, baseChara.m_CharaLevel, _masterMain.level_max);
        }
        if (battleHPMax != 0)
        {
            Hp = string.Format(GameTextUtil.GetText("unit_status_battle1"), battleHP, battleHPMax);
        }
        else
        {
            if (baseChara.m_CharaPlusHP != 0)
            {
                Hp = string.Format(GameTextUtil.GetText("unit_status19"), baseChara.m_CharaHP, baseChara.m_CharaPlusHP);
            }
            else
            {
                Hp = string.Format("{0}", baseChara.m_CharaHP);
            }
        }
        if (battleATK >= 0)
        {
            Atk = string.Format(GameTextUtil.GetText("unit_status_battle2"), battleATK);
        }
        else
        {
            if (baseChara.m_CharaPlusPow != 0)
            {
                Atk = string.Format(GameTextUtil.GetText("unit_status19"), baseChara.m_CharaPow, baseChara.m_CharaPlusPow);
            }
            else
            {
                Atk = string.Format("{0}", baseChara.m_CharaPow);
            }
        }
        int _cost = _masterMain.party_cost;

        if (_subUnit != null)
        {
            _cost += CharaLinkUtil.GetLinkUnitCost(_subUnit.id);
        }
        Cost  = _cost.ToString();
        Charm = string.Format(GameTextUtil.GetText("kyouka_text1"), baseChara.m_CharaCharm.ToString("F1"));
        Lo    = baseChara.m_CharaLimitOver.ToString();
        LoMax = _masterMainLO.limit_over_max.ToString();
    }
Пример #7
0
    /// <summary>
    /// アサインするとパーティコストを超えるかチェック
    /// </summary>
    /// <returns>true:コストオーバー false:コスト内</returns>
    bool CheckCostOver()
    {
        int nAssignedCost = 0;

        for (int i = 0; i < m_PartyMemberUnitGroup.Units.Count; ++i)
        {
            nAssignedCost += ServerDataUtil.GetPacketUnitCost(m_PartyMemberUnitGroup.Units[i].UnitData);
            // リンクユニット分のコストを加算
            nAssignedCost += CharaLinkUtil.GetLinkUnitCost(m_PartyMemberUnitGroup.Units[i].UnitData);
        }

        bool bAssignedCostOver = nAssignedCost > UserDataAdmin.Instance.m_StructPlayer.total_party;

        return(bAssignedCostOver);
    }
Пример #8
0
    /// <summary>
    /// リンクスキル設定
    /// </summary>
    /// <param name="skill_id"></param>
    public void setupLinkSkill(MasterDataParamChara cCharaMasterData, uint nLinkPoint)
    {
        BaseHeight  = BASE_DEFAULT_HEIGHT;
        TitleHeight = TITLE_DEFAULT_HEIGHT;
        TitleWidth  = LINK_SKILL_TITLE_WIDTH;
        MessageBgH  = MESSAGE_BG_HEIGHT;
        setLinkTitleImage("skill_name_bg3", "LINK SKILL");
        IsSkillItem  = false;
        IsViewStatus = false;
        IsViewIcon   = false;
        //------------------------------------------------------------
        // LINK SKILL
        //------------------------------------------------------------
        MasterDataSkillActive cSkillParamLinkActive = null;

        if (cCharaMasterData != null)
        {
            cSkillParamLinkActive = MasterDataUtil.GetActiveSkillParamFromID(cCharaMasterData.link_skill_active);
        }
        if (null != cSkillParamLinkActive)
        {
            // スキル名
            LinkTitleText = cSkillParamLinkActive.skill_link_name;

            // 説明文
            SkillDetailText = cSkillParamLinkActive.skill_link_detail;

            //発動率
            float fSkillOdds = CharaLinkUtil.GetLinkSkillOdds(cSkillParamLinkActive, (int)nLinkPoint) * 0.01f;
            LinkSkillRate = string.Format(GameTextUtil.GetText("unit_linkstatus2"), fSkillOdds.ToString("F1"));
        }
        else
        {
            // スキル名
            LinkTitleText = EmptyStr;
            // 説明文
            SkillDetailText = EmptyStr;
            // 発動率
            LinkSkillRate = "";
        }
        MessageBgResize();
    }
Пример #9
0
    /// <summary>
    /// ソートパラメータ設定(ユニット)
    /// </summary>
    /// <param name="_main"></param>
    /// <param name="_mainMaster"></param>
    /// <param name="_sub"></param>
    public void setSortParamUnit(PacketStructUnit _main, MasterDataParamChara _mainMaster, bool bEvolCheck = true)
    {
        unit_id   = _main.id;
        unique_id = _main.unique_id;
        unit      = _main;
        master    = _mainMaster;

        setSortParamUnit(_main, _mainMaster, CharaLinkUtil.GetLinkUnit(_main.link_unique_id));

        party_assign = MainMenuUtil.ChkUnitPartyAssign(_main.unique_id);
        favorite     = MainMenuUtil.ChkFavoritedUnit(_main.unique_id);
        get_time     = (long)_main.get_time;

        if (bEvolCheck)
        {
            MasterDataParamCharaEvol evol = MasterFinder <MasterDataParamCharaEvol> .Instance.SelectFirstWhere(" where unit_id_pre = ? ", _mainMaster.fix_id);

            evolve = (evol != null) ? true : false;
        }
    }
Пример #10
0
 /// <summary>
 /// 種族ボーナス設定
 /// </summary>
 /// <param name="skill_id"></param>
 public void setupRaceBonus(MasterDataParamChara cCharaMasterData)
 {
     BaseHeight  = BASE_DEFAULT_HEIGHT;
     TitleHeight = TITLE_DEFAULT_HEIGHT;
     TitleWidth  = RACE_BONUS_TITLE_WIDTH;
     MessageBgH  = MESSAGE_BG_HEIGHT;
     setLinkTitleImage("skill_name_bg0", "RACE BONUS");
     IsSkillItem  = false;
     IsViewStatus = false;
     IsViewIcon   = false;
     if (cCharaMasterData != null)
     {
         // 種族
         LinkTitleText = GameTextUtil.GetKindToText(cCharaMasterData.kind, cCharaMasterData.sub_kind);
         // 説明文
         SkillDetailText = CharaLinkUtil.GetLinkBonusRaceText(cCharaMasterData);
     }
     else
     {
         // 説明文
         SkillDetailText = EmptyStr;
     }
     MessageBgResize();
 }
Пример #11
0
    /// <summary>
    /// ソートパラメータ設定(フレンド)
    /// </summary>
    /// <param name="_friend"></param>
    public void setSortParamFriend(
        PacketStructFriend _friend,
        CharaOnce _baseChara,
        MasterDataParamChara _master
        )
    {
        PacketStructUnit _sub = null;

        if (_friend.unit.link_info == (uint)ServerDataDefine.CHARALINK_TYPE.CHARALINK_TYPE_BASE)
        {
            _sub = _friend.unit_link;
        }
        int _cost = _master.party_cost;

        if (_sub != null)
        {
            _cost += CharaLinkUtil.GetLinkUnitCost(_sub.id);
        }
        UnitParam              = new UnitGridParam();
        UnitParam.draw_id      = (int)_master.draw_id;
        UnitParam.level        = (int)_friend.unit.level;
        UnitParam.hp           = _baseChara.m_CharaHP;
        UnitParam.pow          = _baseChara.m_CharaPow;
        UnitParam.plus         = _baseChara.m_CharaPlusHP + _baseChara.m_CharaPlusPow;
        UnitParam.cost         = _cost;
        UnitParam.rare         = (int)_master.rare;
        UnitParam.element_int  = SortUtil.GetSortNumElement(_master.element);
        UnitParam.kind_int     = SortUtil.GetSortNumKind(_master.kind);
        UnitParam.sub_kind_int = SortUtil.GetSortNumKind(_master.sub_kind);
        UnitParam.limitover_lv = (int)_friend.unit.limitover_lv;
        UnitParam.charm        = _baseChara.m_CharaCharm;
        UnitParam.rank         = (int)_friend.user_rank;
        UnitParam.login_time   = SortUtil.GetSortNumLoginTime(_friend.last_play);
        UnitParam.favorite     = MainMenuUtil.ChkFavoridFriend(_friend.user_id);
        UnitParam.friend_state = (int)_friend.friend_state;
    }
Пример #12
0
    private void SetLinkEffectInfo(CharaOnce cCharaOnce, MasterDataParamChara cCharaMasterData, bool bLink)
    {
        //----------------------------------------
        // リンク効果設定
        //----------------------------------------
        //int nUnitId = (int)cCharaMasterData.fix_id;
        int    nLv      = cCharaOnce.m_CharaLevel;
        int    nPlusHp  = cCharaOnce.m_CharaPlusHP;
        int    nPlusPow = cCharaOnce.m_CharaPlusPow;
        int    nCost    = cCharaMasterData.party_cost;
        uint   unID     = cCharaMasterData.fix_id;
        double nCharm   = 0;

        //------------------------------------------------------------
        // LINK BONUS
        //------------------------------------------------------------
        //レベル
        Lv = nLv;

        //HP
        int nHp = (CharaLinkUtil.GetLinkUnitBonusElement(unID, nLv, 0, CharaUtil.VALUE.HP) +
                   CharaLinkUtil.GetLinkUnitBonusPlus(nPlusHp, CharaUtil.VALUE.HP));

        // ATK
        int nPow = (CharaLinkUtil.GetLinkUnitBonusElement(unID, nLv, 0, CharaUtil.VALUE.POW) +
                    CharaLinkUtil.GetLinkUnitBonusPlus(nPlusPow, CharaUtil.VALUE.POW));

        //COST
        Cost = nCost;

        uint nLinkPoint = 0;

        //リンクポイント
        if (bLink)
        {
            //リンク子の場合はリンクポイントを反映
            nLinkPoint = (uint)cCharaOnce.m_LinkParam.m_CharaLinkPoint;
            float fLinkPoint = nLinkPoint * 0.01f;
            Link = string.Format(GameTextUtil.GetText("unit_linkstatus4"), fLinkPoint);
        }
        else
        {
            //ハイフン表示
            Link = EmptyStr;
        }

        uint nLimitOverLevel = (uint)cCharaOnce.m_CharaLimitOver;

        if (nLimitOverLevel > 0)
        {
            // 限界突破タイプ
            int nLimitOverType = cCharaMasterData.limit_over_type;

            // 限界突破後のコスト
            //Cost = (int)CharaLimitOver.GetParam(nLimitOverLevel, nLimitOverType, (int)CharaLimitOver.EGET.ePARAM_COST);

            // 限界突破後のHp
            nHp = CharaLinkUtil.GetLinkUnitBonusElement(unID, nLv, nLimitOverLevel, CharaUtil.VALUE.HP) + CharaLinkUtil.GetLinkUnitBonusPlus(nPlusHp, CharaUtil.VALUE.HP);

            // 限界突破後のPow
            nPow = CharaLinkUtil.GetLinkUnitBonusElement(unID, nLv, nLimitOverLevel, CharaUtil.VALUE.POW) + CharaLinkUtil.GetLinkUnitBonusPlus(nPlusPow, CharaUtil.VALUE.POW);

            // CHARM
            nCharm = CharaLimitOver.GetParamCharm(nLimitOverLevel, nLimitOverType);
        }

        if (nPlusHp > 0)
        {
            Hp = string.Format(GameTextUtil.GetText("unit_linkstatus1"), nHp, nPlusHp);
        }
        else
        {
            Hp = nHp.ToString();
        }

        if (nPlusPow > 0)
        {
            Atk = string.Format(GameTextUtil.GetText("unit_linkstatus1"), nPow, nPlusPow);
        }
        else
        {
            Atk = nPow.ToString();
        }

        Charm = nCharm.ToString("F1");

        //------------------------------------------------------------
        // RACE BONUS
        //------------------------------------------------------------
        // 種族
        //RaceName = GameTextUtil.GetKindToText(cCharaOnce.kind, cCharaOnce.kind_sub);
        RaceName = GameTextUtil.GetKindToText(cCharaMasterData.kind, cCharaMasterData.sub_kind);

        // 説明文
        RaceBonusMessage = CharaLinkUtil.GetLinkBonusRaceText(cCharaMasterData);

        SetLinkEffectSkill(cCharaMasterData, nLinkPoint);
    }
Пример #13
0
    /// <summary>
    /// リンクボーナス設定
    /// </summary>
    /// <param name="skill_id"></param>
    public uint setupLinkEffectInfo(CharaOnce cCharaOnce, MasterDataParamChara cCharaMasterData, bool bLink)
    {
        BaseHeight  = BASE_LINK_BONUS_HEIGHT;
        TitleHeight = TITLE_DEFAULT_HEIGHT;
        TitleWidth  = LINK_BONUS_TITLE_WIDTH;
        MessageBgH  = LINK_MESSAGE_BG_HEIGHT;
        setLinkTitleImage("skill_name_bg1", "linkubo-nasu");
        LvLabel      = GameTextUtil.GetText("unit_status4");
        HpLabel      = GameTextUtil.GetText("unit_status5");
        AtkLabel     = GameTextUtil.GetText("unit_status6");
        CostLabel    = GameTextUtil.GetText("unit_status8");
        LinkLabel    = GameTextUtil.GetText("unit_linkstatus3");
        CharmLabel   = GameTextUtil.GetText("unit_status9");
        IsSkillItem  = false;
        IsViewStatus = true;
        IsViewIcon   = true;


        //
        LinkTitleText = "";

        //----------------------------------------
        // リンク効果設定
        //----------------------------------------
        //int nUnitId = (int)cCharaMasterData.fix_id;
        int    nLv      = cCharaOnce.m_CharaLevel;
        int    nPlusHp  = cCharaOnce.m_CharaPlusHP;
        int    nPlusPow = cCharaOnce.m_CharaPlusPow;
        int    nCost    = cCharaMasterData.party_cost;
        uint   unID     = cCharaMasterData.fix_id;
        double nCharm   = 0;

        //------------------------------------------------------------
        // LINK BONUS
        //------------------------------------------------------------
        //レベル
        Lv = nLv;

        //HP
        int nHp = (CharaLinkUtil.GetLinkUnitBonusElement(unID, nLv, 0, CharaUtil.VALUE.HP) +
                   CharaLinkUtil.GetLinkUnitBonusPlus(nPlusHp, CharaUtil.VALUE.HP));

        // ATK
        int nPow = (CharaLinkUtil.GetLinkUnitBonusElement(unID, nLv, 0, CharaUtil.VALUE.POW) +
                    CharaLinkUtil.GetLinkUnitBonusPlus(nPlusPow, CharaUtil.VALUE.POW));

        //COST
        Cost = nCost;

        //アイコン
        IsViewIcon = false;

        uint nLinkPoint = 0;

        //リンクポイント
        if (bLink)
        {
            //リンク子の場合はリンクポイントを反映
            nLinkPoint = (uint)cCharaOnce.m_LinkParam.m_CharaLinkPoint;
            float fLinkPoint = nLinkPoint * 0.01f;
            Link = string.Format(GameTextUtil.GetText("unit_linkstatus4"), fLinkPoint);
        }
        else
        {
            //ハイフン表示
            Link = EmptyStr;
        }

        uint nLimitOverLevel = (uint)cCharaOnce.m_CharaLimitOver;

        if (nLimitOverLevel > 0)
        {
            // 限界突破タイプ
            int nLimitOverType = cCharaMasterData.limit_over_type;

            // 限界突破後のコスト
            //Cost = (int)CharaLimitOver.GetParam(nLimitOverLevel, nLimitOverType, (int)CharaLimitOver.EGET.ePARAM_COST);

            // 限界突破後のHp
            nHp = CharaLinkUtil.GetLinkUnitBonusElement(unID, nLv, nLimitOverLevel, CharaUtil.VALUE.HP) + CharaLinkUtil.GetLinkUnitBonusPlus(nPlusHp, CharaUtil.VALUE.HP);

            // 限界突破後のPow
            nPow = CharaLinkUtil.GetLinkUnitBonusElement(unID, nLv, nLimitOverLevel, CharaUtil.VALUE.POW) + CharaLinkUtil.GetLinkUnitBonusPlus(nPlusPow, CharaUtil.VALUE.POW);

            // CHARM
            nCharm = CharaLimitOver.GetParamCharm(nLimitOverLevel, nLimitOverType);
        }

        if (nPlusHp > 0)
        {
            Hp = string.Format(GameTextUtil.GetText("unit_status19"), nHp, nPlusHp);
        }
        else
        {
            Hp = nHp.ToString();
        }

        if (nPlusPow > 0)
        {
            Atk = string.Format(GameTextUtil.GetText("unit_status19"), nPow, nPlusPow);
        }
        else
        {
            Atk = nPow.ToString();
        }

        Charm = nCharm.ToString("F1");

        return(nLinkPoint);
    }
Пример #14
0
    /// <summary>
    /// リンクボーナス設定
    /// </summary>
    /// <param name="skill_id"></param>
    public void setupUnitData(CharaOnce cCharaParam, MasterDataParamChara cCharaMasterData)
    {
        BaseHeight  = BASE_LINK_BONUS_HEIGHT;
        TitleHeight = TITLE_DEFAULT_HEIGHT;
        TitleWidth  = LINK_BONUS_TITLE_WIDTH;
        MessageBgH  = LINK_MESSAGE_BG_HEIGHT;
        setLinkTitleImage("skill_name_bg1", "linkubo-nasu");
        LvLabel      = GameTextUtil.GetText("unit_status4");
        HpLabel      = GameTextUtil.GetText("unit_status5");
        AtkLabel     = GameTextUtil.GetText("unit_status6");
        CostLabel    = GameTextUtil.GetText("unit_status8");
        LinkLabel    = GameTextUtil.GetText("unit_linkstatus3");
        CharmLabel   = GameTextUtil.GetText("unit_status9");
        IsSkillItem  = false;
        IsViewStatus = true;
        IsViewIcon   = true;


        //--------------------------------
        // 選択されているユニット情報を選定
        //--------------------------------
        uint unCharaLevel = (uint)cCharaParam.m_CharaLevel;  // キャラレベル
                                                             // +情報

        //----------------------------------------
        // リンク情報の設定 v300対応
        //----------------------------------------

        //リンクキャラの定義取得
        uint unCharaId = cCharaParam.m_LinkParam.m_CharaID;
        // リンク対象ユニット
        MasterDataParamChara cCharaParamLink = MasterDataUtil.GetCharaParamFromID(unCharaId);
        // コスト
        int nCharaCost = cCharaMasterData.party_cost;

        if (unCharaId > 0 &&
            cCharaParamLink != null)
        {
            //------------------------------------------------------------
            // LINK BONUS
            //------------------------------------------------------------
            //ユニット名
            LinkTitleText = cCharaParamLink.name;

            //レベル
            Lv = cCharaParam.m_LinkParam.m_CharaLv;

            //HP
            int nHp = (CharaLinkUtil.GetLinkUnitBonusElement(cCharaParamLink, cCharaParam.m_LinkParam.m_CharaLv, 0, CharaUtil.VALUE.HP) +
                       CharaLinkUtil.GetLinkUnitBonusPlus(cCharaParam.m_LinkParam.m_CharaPlusHP, CharaUtil.VALUE.HP));
            int nPlusHp = cCharaParam.m_LinkParam.m_CharaPlusHP;
            // ATK
            int nPow = (CharaLinkUtil.GetLinkUnitBonusElement(cCharaParamLink, cCharaParam.m_LinkParam.m_CharaLv, 0, CharaUtil.VALUE.POW) +
                        CharaLinkUtil.GetLinkUnitBonusPlus(cCharaParam.m_LinkParam.m_CharaPlusPow, CharaUtil.VALUE.POW));
            int nPlusPow = cCharaParam.m_LinkParam.m_CharaPlusPow;

            double nCharm = 0;

            //COST
            Cost = cCharaParamLink.party_cost;

            // リンクポイント
            float fLinkPoint = (cCharaParam.m_LinkParam.m_CharaLinkPoint) * 0.01f;
            Link = string.Format(GameTextUtil.GetText("unit_linkstatus4"), fLinkPoint);

            uint nLimitOverLevel = (uint)cCharaParam.m_LinkParam.m_CharaLOLevel;

            if (nLimitOverLevel > 0)
            {
                // 限界突破タイプ
                int nLimitOverType = cCharaParamLink.limit_over_type;

                // 限界突破後のコスト
                //Cost = (int)CharaLimitOver.GetParam(nLimitOverLevel, nLimitOverType, (int)CharaLimitOver.EGET.ePARAM_COST);

                // 限界突破後のHp
                nHp = CharaLinkUtil.GetLinkUnitBonusElement(unCharaId, Lv, nLimitOverLevel, CharaUtil.VALUE.HP) + CharaLinkUtil.GetLinkUnitBonusPlus(nPlusHp, CharaUtil.VALUE.HP);

                // 限界突破後のPow
                nPow = CharaLinkUtil.GetLinkUnitBonusElement(unCharaId, Lv, nLimitOverLevel, CharaUtil.VALUE.POW) + CharaLinkUtil.GetLinkUnitBonusPlus(nPlusPow, CharaUtil.VALUE.POW);

                // CHARM
                nCharm = CharaLimitOver.GetParamCharm(nLimitOverLevel, nLimitOverType);
            }

            //キャラアイコン
            IsViewIcon = true;
            IconSelect = MainMenuUtil.GetElementCircleSprite(cCharaParamLink.element);
            UnitIconImageProvider.Instance.Get(
                cCharaParamLink.fix_id,
                sprite =>
            {
                IconImage = sprite;
            });

            if (nPlusHp > 0)
            {
                Hp = string.Format(GameTextUtil.GetText("unit_status19"), nHp, nPlusHp);
            }
            else
            {
                Hp = nHp.ToString();
            }

            if (nPlusPow > 0)
            {
                Atk = string.Format(GameTextUtil.GetText("unit_status19"), nPow, nPlusPow);
            }
            else
            {
                Atk = nPow.ToString();
            }

            Charm = nCharm.ToString("F1");
        }
    }
Пример #15
0
    private void setParam(CharaOnce baseChara, MasterDataParamChara _masterMain, MasterDataLimitOver _masterMainLO, MasterDataSkillLimitBreak _masterMainLB, PacketStructUnit _subUnit = null, CharaOnce prevUnit = null)
    {
        /**
         * メインユニット情報
         */
        {
            string levelFormat = GameTextUtil.GetText("unit_status17");
            Level = string.Format(levelFormat, baseChara.m_CharaLevel, _masterMain.level_max);
        }
        {
            if (baseChara.m_CharaPlusHP != 0)
            {
                Hp = string.Format(GameTextUtil.GetText("unit_status19"), baseChara.m_CharaHP, baseChara.m_CharaPlusHP);
            }
            else
            {
                Hp = string.Format("{0}", baseChara.m_CharaHP);
            }
        }
        {
            if (baseChara.m_CharaPlusPow != 0)
            {
                Atk = string.Format(GameTextUtil.GetText("unit_status19"), baseChara.m_CharaPow, baseChara.m_CharaPlusPow);
            }
            else
            {
                Atk = string.Format("{0}", baseChara.m_CharaPow);
            }
        }
        int _cost = _masterMain.party_cost;

        if (_subUnit != null)
        {
            _cost += CharaLinkUtil.GetLinkUnitCost(_subUnit.id);
        }
        Cost  = _cost.ToString();
        Charm = baseChara.m_CharaCharm.ToString("F1");

        int limitBreakSkill    = 0;
        int limitBreakSkillMax = 0;

        if (_masterMainLB != null)
        {
            limitBreakSkill    = baseChara.m_CharaLBSLv + 1;
            limitBreakSkillMax = _masterMainLB.level_max + 1;
        }
        Aslv    = limitBreakSkill.ToString();
        AslvMax = limitBreakSkillMax.ToString();

        Lo    = baseChara.m_CharaLimitOver.ToString();
        LoMax = _masterMainLO.limit_over_max.ToString();
        if (prevUnit != null)
        {
            if (baseChara.m_CharaHP > prevUnit.m_CharaHP)
            {
                Hp = string.Format(GameTextUtil.GetText("kyouka_text1"), Hp);
            }
            if (baseChara.m_CharaPow > prevUnit.m_CharaPow)
            {
                Atk = string.Format(GameTextUtil.GetText("kyouka_text1"), Atk);
            }
            if (_cost > prevUnit.m_CharaMasterDataParam.party_cost)
            {
                Cost = string.Format(GameTextUtil.GetText("kyouka_text1"), Cost);
            }
            if (baseChara.m_CharaCharm > prevUnit.m_CharaCharm)
            {
                Charm = string.Format(GameTextUtil.GetText("kyouka_text1"), baseChara.m_CharaCharm.ToString("F1"));
            }
        }
    }
Пример #16
0
    //----------------------------------------------------------------------------

    /*!
     *  @brief	基底継承:MainMenuSeq:ページ切り替えにより有効化された際に呼ばれる関数
     *  @note	ページのレイアウト再構築を兼ねる
     */
    //----------------------------------------------------------------------------
    protected override void PageSwitchSetting(bool initalize)
    {
        base.PageSwitchSetting(initalize);

        //--------------------------------
        // 情報破棄
        //
        // リソースの参照が残ると破棄処理で抜けが生じるので
        // ページを無効にしたタイミングでも破棄するよう対応してる
        //--------------------------------
        //--------------------------------
        // オブジェクト破棄
        //--------------------------------
        if (m_AssetAutoSetBefore != null)
        {
            m_AssetAutoSetBefore.DestroyCharaMesh();
        }
        if (m_AssetAutoSetAfter != null)
        {
            m_AssetAutoSetAfter.DestroyCharaMesh();
        }

        //--------------------------------
        // 進行情報クリア
        //--------------------------------
        m_WorkStep       = STEP_000_START;
        m_WorkStepDelta  = 0;
        m_WorkStepTriger = true;
        m_CharaMeshAnim.ResetAnimation();

        //----------------------------------------
        // パッチ処理を行わないようにする.
        //----------------------------------------
        MainMenuManager.Instance.m_ResumePatchUpdateRequest = false;

        //--------------------------------
        // 進化前後のユニット情報を取得
        //--------------------------------
        PacketStructUnit cEvolUnit     = MainMenuParam.m_EvolveBaseAfter;
        PacketStructUnit cEvolUnitPrev = MainMenuParam.m_EvolveBaseBefore;

        if (cEvolUnit == null ||
            cEvolUnitPrev == null
            )
        {
            Debug.LogError("Evol Unit Error!!");
            //とりあえずホームへ
            MainMenuManager.Instance.AddSwitchRequest(MAINMENU_SEQ.SEQ_HOME_MENU, false, false);
            return;
        }

        //--------------------------------
        // 選択されているユニット情報を選定
        //--------------------------------
        uint unCharaMasterDataID     = cEvolUnit.id;        // 進化後
        uint unCharaMasterDataIDPrev = cEvolUnitPrev.id;    // 新化前

        MasterDataParamChara cCharaMasterData     = MasterDataUtil.GetCharaParamFromID(unCharaMasterDataID);
        MasterDataParamChara cCharaMasterDataPrev = MasterDataUtil.GetCharaParamFromID(unCharaMasterDataIDPrev);

        if (cCharaMasterData == null || cCharaMasterDataPrev == null)
        {
            Debug.LogError("SelectUnit MasterData Is None! - " + unCharaMasterDataID);
            return;
        }
        // 表示ユニット情報を設定
        //MainMenuParam.SetCharaDetailParam( cEvolUnit );
        m_UnitNamePanel.setup(cCharaMasterDataPrev);

        // リンクユニット情報取得
        PacketStructUnit cLinkUnit = CharaLinkUtil.GetLinkUnit(cEvolUnit);

        // 表示ユニット情報を設定
        MainMenuParam.SetCharaDetailParam(cEvolUnit, cLinkUnit);

        //----------------------------------------
        // キャラメッシュ生成
        //----------------------------------------
        {
            // 新化前ユニット
            if (m_AssetAutoSetBefore == null)
            {
                m_AssetAutoSetBefore = m_ReferObject[OBJECT_CHARA_MESH_BEFORE].AddComponent <AssetAutoSetCharaMesh>();
                m_AssetAutoSetBefore.m_AssetBundleMeshScaleUp  = true;
                m_AssetAutoSetBefore.m_AssetBundleMeshPosition = true;
            }
            m_AssetAutoSetBefore.SetCharaID(unCharaMasterDataIDPrev, true);
            // 進化後ユニット
            if (m_AssetAutoSetAfter == null)
            {
                m_AssetAutoSetAfter = m_ReferObject[OBJECT_CHARA_MESH_AFTER].AddComponent <AssetAutoSetCharaMesh>();
                m_AssetAutoSetAfter.m_AssetBundleMeshScaleUp  = true;
                m_AssetAutoSetAfter.m_AssetBundleMeshPosition = true;
            }
            m_AssetAutoSetAfter.SetCharaID(unCharaMasterDataID, true);
        }

        {
            TemplateList <uint> cPartsUnitIDList = new TemplateList <uint>();
            for (int i = 0; i < MainMenuParam.m_EvolveParts.m_BufferSize; i++)
            {
                cPartsUnitIDList.Add(MainMenuParam.m_EvolveParts[i].id);
            }

            m_EvolCutinParts = new MainMenuCutin[cPartsUnitIDList.m_BufferSize];
            for (int i = 0; i < cPartsUnitIDList.m_BufferSize; i++)
            {
                m_EvolCutinParts[i] = new MainMenuCutin();
                m_EvolCutinParts[i].Setup(m_ReferObject[OBJECT_CUTIN_PARENT], cPartsUnitIDList[i], MainMenuDefine.CUTIN_OBJ_TYPE_COST);
            }
        }

        //----------------------------------------
        // とりあえず非表示へ
        //----------------------------------------
        m_LayoutWindow.SetLayoutAllDisable();
        m_LayoutEvolve.SetLayoutAllDisable();
        m_LayoutCategory.SetLayoutAllDisable();

        //遷移ボタン非表示
        m_UnitResultButton.IsActiveButton1 = false;
        m_UnitResultButton.IsActiveButton2 = false;
    }
Пример #17
0
    void SetUpCharaData(ref PartyMemberStatusListItemContext item, PacketStructUnit _mainUnit, PacketStructUnit _subUnit, bool dispCharm, PacketStructUnit[] partyUnits)
    {
        CharaOnce baseChara = new CharaOnce();

        if (_mainUnit.link_info == (uint)ServerDataDefine.CHARALINK_TYPE.CHARALINK_TYPE_BASE &&
            _subUnit != null)
        {
            baseChara.CharaSetupFromID(
                _mainUnit.id,
                (int)_mainUnit.level,
                (int)_mainUnit.limitbreak_lv,
                (int)_mainUnit.limitover_lv,
                (int)_mainUnit.add_pow,
                (int)_mainUnit.add_hp,
                _subUnit.id,
                (int)_subUnit.level,
                (int)_subUnit.add_pow,
                (int)_subUnit.add_hp,
                (int)_mainUnit.link_point,
                (int)_subUnit.limitover_lv
                );
        }
        else
        {
            baseChara.CharaSetupFromID(
                _mainUnit.id,
                (int)_mainUnit.level,
                (int)_mainUnit.limitbreak_lv,
                (int)_mainUnit.limitover_lv,
                (int)_mainUnit.add_pow,
                (int)_mainUnit.add_hp,
                0,
                0,
                0,
                0,
                0,
                0
                );
        }

        var changeHp   = (int)(baseChara.m_CharaHP * MainMenuUtil.GetLeaderSkillHpRate(baseChara, partyUnits));
        var statusText = string.Format(GameTextUtil.GetText("questlast_text4"), changeHp);

        if (changeHp > baseChara.m_CharaHP)
        {
            statusText = string.Format(GameTextUtil.GetText("questlast_text8"), changeHp);
        }
        else if (changeHp < baseChara.m_CharaHP)
        {
            statusText = string.Format(GameTextUtil.GetText("questlast_text9"), changeHp);
        }
        item.HpText = statusText;

        var changePow = (int)(baseChara.m_CharaPow * MainMenuUtil.GetLeaderSkillDamageRate(baseChara, MainMenuUtil.GetPartyCharaOnceArray(partyUnits)));

        statusText = string.Format(GameTextUtil.GetText("questlast_text4"), changePow);
        if (changePow > baseChara.m_CharaPow)
        {
            statusText = string.Format(GameTextUtil.GetText("questlast_text8"), changePow);
        }
        else if (changePow < baseChara.m_CharaPow)
        {
            statusText = string.Format(GameTextUtil.GetText("questlast_text9"), changePow);
        }
        item.AtkText = statusText;

        item.Cost  = ServerDataUtil.GetPacketUnitCost(_mainUnit) + CharaLinkUtil.GetLinkUnitCost(_mainUnit);
        item.Charm = baseChara.m_CharaCharm;
    }
Пример #18
0
    //----------------------------------------------------------------------------

    /*!
     *          @brief	基底継承:MainMenuSeq:ページ切り替えにより有効化された際に呼ばれる関数
     *          @note	ページのレイアウト再構築を兼ねる
     */
    //----------------------------------------------------------------------------
    protected override void PageSwitchSetting(bool initalize)
    {
        base.PageSwitchSetting(initalize);

        //--------------------------------
        // 情報破棄
        //
        // リソースの参照が残ると破棄処理で抜けが生じるので
        // ページを無効にしたタイミングでも破棄するよう対応してる
        //--------------------------------
        //--------------------------------
        // オブジェクト破棄
        //--------------------------------
        if (m_AssetAutoSet != null)
        {
            m_AssetAutoSet.DestroyCharaMesh();
        }

        //--------------------------------
        // リンク情報クリア
        //--------------------------------
        m_WorkStep       = STEP_000_START;
        m_WorkStepDelta  = 0;
        m_WorkStepTriger = true;


        //--------------------------------
        // Bugweb:5925 関連
        // アチーブメント達成演出をスキップされる可能性を考慮しアチーブメント取得フラグONにしとく。
        //  フラグをONにすることで、次回、ミッション画面に遷移したとき、
        //  ローカルで保持してるアチーブメントマスタのリスト情報を破棄し、新しく一からマスタを取得し直すようになる。
        //--------------------------------
        if (MainMenuParam.m_AchievementListGet == false)
        {
            MainMenuParam.m_AchievementListGet = true;
        }

        //--------------------------------
        // リンク前後の情報を保持しておく
        //--------------------------------
        PacketStructUnit UnitBefore = new PacketStructUnit();   //!< ユニット情報:リンク前
        PacketStructUnit UnitAfter  = new PacketStructUnit();   //!< ユニット情報:リンク後

        UnitBefore.Copy(MainMenuParam.m_LinkBaseBefore);
        UnitAfter.Copy(MainMenuParam.m_LinkBaseAfter);
        MasterDataParamChara m_UnitMasterData = MasterDataUtil.GetCharaParamFromID(UnitAfter.id);       //!< ユニット情報:マスターデータ

        m_UnitNamePanel.setup(m_UnitMasterData);


        UnitBefore.add_hp         = UnitAfter.add_hp;
        UnitBefore.add_pow        = UnitAfter.add_pow;
        UnitBefore.link_unique_id = UnitAfter.link_unique_id;

        //--------------------------------
        // リンク先のユニット情報を取得する
        //--------------------------------
        PacketStructUnit cLinkUnit = CharaLinkUtil.GetLinkUnit(UnitBefore.link_unique_id);

        //----------------------------------------
        // 初期情報としてリンク前のユニット情報を表示
        //----------------------------------------
        // 表示ユニット情報を設定
        MainMenuParam.SetCharaDetailParam(UnitBefore, cLinkUnit);

        //----------------------------------------
        // キャラメッシュ生成
        //----------------------------------------
        if (m_AssetAutoSet == null)
        {
            m_AssetAutoSet = m_ReferObject[OBJECT_CHARA_MESH].AddComponent <AssetAutoSetCharaMesh>();
            m_AssetAutoSet.m_AssetBundleMeshScaleUp  = true;
            m_AssetAutoSet.m_AssetBundleMeshPosition = true;
        }
        m_AssetAutoSet.SetCharaID(m_UnitMasterData.fix_id, true);

        //----------------------------------------
        // カットインオブジェクト生成
        //----------------------------------------
        //--------------------------------
        // リンクユニット
        //--------------------------------
        m_CutinLink = new MainMenuCutin();
        m_CutinLink.Setup(m_ReferObject[OBJECT_CUTIN_PARENT], MainMenuParam.m_LinkUnit.id, MainMenuDefine.CUTIN_OBJ_TYPE_FIX);

        //--------------------------------
        // 素材ユニット
        //--------------------------------
        if (MainMenuParam.m_LinkParts != null &&
            MainMenuParam.m_LinkParts.m_BufferSize > 0)
        {
            m_CutinParts = new MainMenuCutin[MainMenuParam.m_LinkParts.m_BufferSize];
            for (int i = 0; i < MainMenuParam.m_LinkParts.m_BufferSize; i++)
            {
                m_CutinParts[i] = new MainMenuCutin();
                m_CutinParts[i].Setup(m_ReferObject[OBJECT_CUTIN_PARENT], MainMenuParam.m_LinkParts[i].id, MainMenuDefine.CUTIN_OBJ_TYPE_COST);
            }
        }

        //----------------------------------------
        // とりあえず非表示へ
        //----------------------------------------
        m_LayoutCategory.SetLayoutAllDisable();
        m_LayoutWindow.SetLayoutAllDisable();

        //遷移ボタンOFF
        m_UnitResultButton.IsActiveButton1 = false;
        m_UnitResultButton.IsActiveButton2 = false;

        // ロゴ情報
        for (int i = 0; i < m_AnimationShotLogo.Length; i++)
        {
            if (m_AnimationShotLogo[i] == null)
            {
                continue;
            }
            UnityUtil.SetObjectEnabled(m_AnimationShotLogo[i].gameObject, false);
        }
    }
Пример #19
0
    //----------------------------------------------------------------------------

    /*!
     *  @brief		リンクスキルの最大発動数をチェック
     *  @param[in]	BattleSkillActivity[]	(activityArray)	ノーマルスキル発動情報
     */
    //----------------------------------------------------------------------------
    private static int CheckLinkSkillNum(SkillRequestParam skill_requeset_param, bool[] dest_skill_owner)
    {
        int ret_val = 0;

        for (int idx = 0; idx < dest_skill_owner.Length; idx++)
        {
            dest_skill_owner[idx] = false;
        }

        //--------------------------------
        // ノーマルスキル発動者を取得
        //--------------------------------
        for (int num = 0; num < skill_requeset_param.getRequestCount(); ++num)
        {
            BattleSkillActivity normalActivity = skill_requeset_param.getSkillRequestByIndex(num);
            if (normalActivity == null ||
                normalActivity.m_SkillType != ESKILLTYPE.eACTIVE ||
                normalActivity.m_SkillParamOwnerNum == GlobalDefine.PartyCharaIndex.GENERAL)
            {
                continue;
            }

            // 発動者の登録処理
            for (int ownerNum = 0; ownerNum < dest_skill_owner.Length; ++ownerNum)
            {
                if ((GlobalDefine.PartyCharaIndex)ownerNum == normalActivity.m_SkillParamOwnerNum &&
                    dest_skill_owner[ownerNum] == false)
                {
                    dest_skill_owner[ownerNum] = true;
                    break;
                }
            }
        }


        //--------------------------------
        // リンクスキル発動判定
        //--------------------------------
        for (int num = 0; num < dest_skill_owner.Length; ++num)
        {
            if (dest_skill_owner[num] == false)
            {
                continue;
            }

            // リンクキャラを取得
            CharaOnce partyChara = BattleParam.m_PlayerParty.getPartyMember((GlobalDefine.PartyCharaIndex)num, CharaParty.CharaCondition.SKILL_ACTIVE);
            if (partyChara == null)
            {
                continue;
            }

            MasterDataParamChara charaMaster = BattleParam.m_MasterDataCache.useCharaParam(partyChara.m_LinkParam.m_CharaID);
            if (charaMaster == null)
            {
                dest_skill_owner[num] = false;
                continue;
            }

            // リンクスキル発動判定(基本発動率 + リンクポイント)
            uint odds = CharaLinkUtil.GetLinkSkillOdds(charaMaster, partyChara.m_LinkParam.m_CharaLinkPoint);
            if (BattleSceneUtil.checkChancePercentSkill((int)odds, (int)CharaLinkUtil.SKILL_LINK_ODDS_MAX))
            {
                ret_val++;
            }
            else
            {
                dest_skill_owner[num] = false;
            }
        }

        return(ret_val);
    }
Пример #20
0
    /// <summary>
    /// パーティリストの作成
    /// </summary>
    void CreatePartyList()
    {
        PacketStructUnit[][] partys = UserDataAdmin.Instance.m_StructPartyAssign;
        m_PartySelectGroup.ClearPartyGroups();

        var       partyModels         = new List <PartySelectGroupUnitListItemModel>();
        const int AnimationFirstIndex = 0;
        const int AnimationLastIndex  = 4;

        for (int i = 0; i < partys.Length; ++i)
        {
            PacketStructUnit[] party = partys[i];
            int index = i;
            var model = new PartySelectGroupUnitListItemModel((uint)index);

            PartySelectGroupUnitContext partyGroup = new PartySelectGroupUnitContext(model);
            partyGroup.Index    = index;                                                           // 番号の設定
            partyGroup.NameText = string.Format(GameTextUtil.GetText("questlast_tub"), index + 1); // パーティ名
            Array.Copy(party, partyGroup.PartyData, partyGroup.PartyData.Length);                  // ユニット情報をコピー
            for (int pt_cout = 0; pt_cout < partyGroup.PartyData.Length; ++pt_cout)
            {
                // リンクユニット情報を設定
                if (partyGroup.PartyData[pt_cout] == null)
                {
                    continue;
                }
                partyGroup.PartyLinkData[pt_cout] = CharaLinkUtil.GetLinkUnit(partyGroup.PartyData[pt_cout].link_unique_id);
            }

            PacketStructUnit leaderUnit = partyGroup.PartyData[(int)GlobalDefine.PartyCharaIndex.LEADER];
            if (leaderUnit != null)
            {
                // リーダーユニット画像
                UnitIconImageProvider.Instance.Get(
                    leaderUnit.id,
                    sprite =>
                {
                    partyGroup.UnitImage = sprite;
                });
                //partyGroup.IsActiveLinkIcon = (leaderUnit.link_info != (uint)ServerDataDefine.CHARALINK_TYPE.CHARALINK_TYPE_NONE); // リンクアイコン
                MasterDataParamChara _master = MasterFinder <MasterDataParamChara> .Instance.Find((int)leaderUnit.id);

                partyGroup.IconSelect = MainMenuUtil.GetElementCircleSprite(_master.element);
            }
            partyGroup.IsSelect = (index == m_UnitPartyCurrent);
            m_PartySelectGroup.AddData(partyGroup);
            model.OnClicked += () =>
            {
                OnSelectPartyGroup(partyGroup);
            };

            model.OnShowedNextIcon += () =>
            {
                if (index <= AnimationFirstIndex ||
                    index > AnimationLastIndex)
                {
                    return;
                }

                partyModels[index - 1].ShowIcon();
            };
            model.OnShowedNextName += () =>
            {
                if (index >= AnimationLastIndex)
                {
                    return;
                }

                partyModels[index + 1].ShowName();
            };

            model.OnViewStarted += () =>
            {
                bool showName = index == AnimationFirstIndex ||
                                index > AnimationLastIndex;
                bool showIcon = index == AnimationLastIndex ||
                                index > AnimationLastIndex;

                if (showName)
                {
                    model.ShowName();
                }
                if (showIcon)
                {
                    model.ShowIcon();
                }
            };

            partyModels.Add(model);
        }
    }
Пример #21
0
    //----------------------------------------------------------------------------

    /*!
     *          @brief	ステータス更新
     *          @note
     */
    //----------------------------------------------------------------------------
    void SetupBlendAfterStatus()
    {
        //-----------------------
        // 合成時のパラメータ数値表示部分を更新
        //-----------------------

        if (m_BaseUnit != null)
        {
            MasterDataParamChara cBaseMasterData = m_BaseUnit.master;
            if (cBaseMasterData != null)
            {
                CharaOnce cCharaParam = new CharaOnce();

                PacketStructUnit cBaseUnit = m_BaseUnit.unit;

                // リンクの限界突破
                int nLinkLimitOverLV = 0;

                PacketStructUnit cLinkUnit = CharaLinkUtil.GetLinkUnit(cBaseUnit.link_unique_id);

                if (cLinkUnit != null)
                {
                    nLinkLimitOverLV = (int)cLinkUnit.limitover_lv;
                }

                if (cBaseUnit.link_info == (uint)ServerDataDefine.CHARALINK_TYPE.CHARALINK_TYPE_BASE)
                {
                    cCharaParam.CharaSetupFromID(cBaseUnit.id
                                                 , (int)cBaseUnit.level
                                                 , (int)cBaseUnit.limitbreak_lv
                                                 , 0
                                                 , (int)cBaseUnit.add_pow
                                                 , (int)cBaseUnit.add_hp
                                                 , cLinkUnit.id
                                                 , (int)cLinkUnit.level
                                                 , (int)cLinkUnit.add_pow
                                                 , (int)cLinkUnit.add_hp
                                                 , (int)cBaseUnit.link_point
                                                 , nLinkLimitOverLV
                                                 );
                }
                else
                {
                    cCharaParam.CharaSetupFromID(cBaseUnit.id
                                                 , (int)cBaseUnit.level
                                                 , (int)cBaseUnit.limitbreak_lv
                                                 , 0
                                                 , (int)cBaseUnit.add_pow
                                                 , (int)cBaseUnit.add_hp
                                                 , 0
                                                 , 0
                                                 , 0
                                                 , 0
                                                 , 0
                                                 , nLinkLimitOverLV
                                                 );
                }

                m_BlendLevelMaxWarning = false;
                if (m_BaseUnit.level >= cBaseMasterData.level_max)
                {
                    m_BlendLevelMaxWarning = true;
                }


                uint unBaseAtk = (uint)cCharaParam.m_CharaPow;
                uint unBaseHP  = (uint)cCharaParam.m_CharaHP;

                //-----------------------
                // 合成費用を算出
                // 合成費用 = ( ベースキャラレベル * 100 * 素材数 ) + ( 関連キャラのプラス値合計 * 1000 )
                //-----------------------
                m_BlendPoint  = 0;
                m_BlendPoint += (cBaseMasterData != null) ? (uint)cBaseMasterData.limit_over_unitpoint : 0;

                //-----------------------
                // プラス値を算出
                //-----------------------
                uint unUnitPlusHP  = (uint)cCharaParam.m_CharaPlusHP;
                uint unUnitPlusAtk = (uint)cCharaParam.m_CharaPlusPow;

                //-----------------------
                // ユニットが持ってる総合経験値を算出
                // ※今回の合成で得られる経験値含む
                //-----------------------
                int nTotalEXP      = 0;// GetTotalEXP(ref Parts, fBonusRateTotal, cBaseMasterData.element);
                int nTotalEXPAfter = nTotalEXP + (int)cBaseUnit.exp;
                //-----------------------
                // レベルを算出
                //-----------------------
                uint unUnitLevelMax = (uint)cBaseMasterData.level_max;
                uint unUnitLevel    = (uint)CharaUtil.GetLevelFromExp(cBaseMasterData, nTotalEXPAfter);
                //-----------------------
                // HPとATKを算出
                //-----------------------
                uint unBuildUpHP  = 0;
                uint unBuildUpAtk = 0;

                if (cBaseUnit.link_info == (uint)ServerDataDefine.CHARALINK_TYPE.CHARALINK_TYPE_BASE)
                {
                    //リンク親の場合はリンクキャラの値を反映しておく
                    CharaOnce cCharaParamBuildUp = new CharaOnce();
                    cCharaParamBuildUp.CharaSetupFromID(cBaseUnit.id
                                                        , (int)unUnitLevel
                                                        , (int)cBaseUnit.limitbreak_lv
                                                        , 0
                                                        , (int)unUnitPlusAtk
                                                        , (int)unUnitPlusHP
                                                        , cLinkUnit.id
                                                        , (int)cLinkUnit.level
                                                        , (int)cLinkUnit.add_pow
                                                        , (int)cLinkUnit.add_hp
                                                        , (int)cBaseUnit.link_point
                                                        , nLinkLimitOverLV
                                                        );
                    unBuildUpHP  = (uint)cCharaParamBuildUp.m_CharaHP;
                    unBuildUpAtk = (uint)cCharaParamBuildUp.m_CharaPow;
                }
                else
                {
                    unBuildUpHP  = (uint)CharaUtil.GetStatusValue(cBaseMasterData, (int)unUnitLevel, CharaUtil.VALUE.HP);
                    unBuildUpAtk = (uint)CharaUtil.GetStatusValue(cBaseMasterData, (int)unUnitLevel, CharaUtil.VALUE.POW);
                    //プラス値より合成後のHPとATK値を求める
                    unBuildUpHP  += unUnitPlusHP * GlobalDefine.PLUS_RATE_HP;
                    unBuildUpAtk += unUnitPlusAtk * GlobalDefine.PLUS_RATE_POW;
                }

                //-----------------------
                // HPとATKの表示形式とカラーの設定
                // 強化後のHP/ATK、プラス値更新があったら色つける
                //-----------------------
                //フォーマット
                string strFormatUp      = GameTextUtil.GetText("kyouka_text1"); //値上昇時
                string strFormatMax     = "{0}";                                //値MAX
                string strFormat        = "{0}";                                //値変更なし
                string strFormatPlus    = "[{0}]";
                string strFormatPlusNum = "+{0}";

                string strUnitPlusHP    = "";
                string strUnitPlusHPNum = string.Format(strFormatPlusNum, unUnitPlusHP);
                if (unUnitPlusHP > (uint)cCharaParam.m_CharaPlusHP)
                {
                    strUnitPlusHP = string.Format(strFormatUp, strUnitPlusHPNum);
                }
                else if (unUnitPlusHP == GlobalDefine.PLUS_MAX)
                {
                    strUnitPlusHP = string.Format(strFormatMax, strUnitPlusHPNum);
                }
                else if (unUnitPlusHP == 0)
                {
                    strUnitPlusHP = "";
                }
                else
                {
                    strUnitPlusHP = string.Format(strFormat, strUnitPlusHPNum);
                }
                if (strUnitPlusHP != string.Empty)
                {
                    strUnitPlusHP = string.Format(strFormatPlus, strUnitPlusHP);
                }

                string strUnitPlusAtk   = "";
                string strUnitPlusAtkum = string.Format(strFormatPlusNum, unUnitPlusAtk);
                if (unUnitPlusAtk > (uint)cCharaParam.m_CharaPlusPow)
                {
                    strUnitPlusAtk = string.Format(strFormatUp, strUnitPlusAtkum);
                }
                else if (unUnitPlusAtk == GlobalDefine.PLUS_MAX)
                {
                    strUnitPlusAtk = string.Format(strFormatMax, strUnitPlusAtkum);
                }
                else if (unUnitPlusAtk == 0)
                {
                    strUnitPlusAtk = "";
                }
                else
                {
                    strUnitPlusAtk = string.Format(strFormat, strUnitPlusAtkum);
                }
                if (strUnitPlusAtk != string.Empty)
                {
                    strUnitPlusAtk = string.Format(strFormatPlus, strUnitPlusAtk);
                }

                m_BlendLimitOverResult    = 0;
                m_BlendLimitOverWarning   = false;
                m_BlendLinkPointUpFlag    = false;
                m_BlendLinkPointMaxFlag   = false;
                m_BlendRarityWarning      = false;
                m_BlendPartsSameCharacter = false;
                m_BlendPartsSameSkill     = false;


                // 限界突破レベル
                int nLimitOverCount = 1;

                // ベースユニットの限界突破MAXレベル
                int nLimitOverMaxLevel = (int)CharaLimitOver.GetParam(0, cBaseMasterData.limit_over_type, (int)CharaLimitOver.EGET.ePARAM_LIMITOVER_MAX);

                //
                uint unBaseLinkPoint = 0;

                //リンクの子をベースにしている場合は親のリンクポイントを参照する
                if (m_BaseUnit.unit.link_info == (uint)ServerDataDefine.CHARALINK_TYPE.CHARALINK_TYPE_LINK)
                {
                    PacketStructUnit cTmpLinkUnit = CharaLinkUtil.GetLinkUnit(m_BaseUnit.unit.link_unique_id);
                    unBaseLinkPoint = cTmpLinkUnit.link_point;
                }
                else if (m_BaseUnit.unit.link_info == (uint)ServerDataDefine.CHARALINK_TYPE.CHARALINK_TYPE_BASE)
                {
                    unBaseLinkPoint = m_BaseUnit.unit.link_point;
                }

                //リンクポイントが最大かどうか
                if (unBaseLinkPoint >= CharaLinkUtil.LINK_POINT_MAX)
                {
                    m_BlendLinkPointMaxFlag = true;
                }

                // ベースユニットの限界突破レベル
                uint nLimitOverLevel = m_BaseUnit.unit.limitover_lv + (uint)nLimitOverCount;

                string strBuilupLO    = "";
                string strBuilupCharm = "";
                bool   bChangeLO      = false;
                if (nLimitOverCount > 0 && nLimitOverMaxLevel > 0)
                {
                    bChangeLO = true;
                    // 限界突破が元々MAXの場合
                    if (nLimitOverMaxLevel == m_BaseUnit.limitover_lv)
                    {
                        m_BlendLimitOverResult = (int)CharaLimitOver.RESULT_TYPE.eValueMax;
                    }
                    // 限界突破の上限値を超える場合
                    else if (nLimitOverMaxLevel < nLimitOverLevel)
                    {
                        m_BlendLimitOverResult = (int)CharaLimitOver.RESULT_TYPE.eValueOver;
                    }
                    else
                    {
                        m_BlendLimitOverResult = (int)CharaLimitOver.RESULT_TYPE.ePossible;
                    }
                }

                //限界突破LV最大チェック
                if (nLimitOverMaxLevel < nLimitOverLevel)
                {
                    nLimitOverLevel = (uint)nLimitOverMaxLevel;
                }

                // 限界突破の加算値
                float fLoHp  = ((float)CharaLimitOver.GetParam((uint)nLimitOverLevel, cBaseMasterData.limit_over_type, (int)CharaLimitOver.EGET.ePARAM_HP) / 100);
                float fLoAtk = ((float)CharaLimitOver.GetParam((uint)nLimitOverLevel, cBaseMasterData.limit_over_type, (int)CharaLimitOver.EGET.ePARAM_ATK) / 100);

                // ベースユニットの元々のHPと攻撃力を算出
                int nCharaHP  = CharaUtil.GetStatusValue(cBaseMasterData, (int)unUnitLevel, CharaUtil.VALUE.HP);
                int nCharaPow = CharaUtil.GetStatusValue(cBaseMasterData, (int)unUnitLevel, CharaUtil.VALUE.POW);

                // 限界突破のパラメーターを反映
                uint unLO_HP  = (uint)(nCharaHP * fLoHp);
                uint unLO_Atk = (uint)(nCharaPow * fLoAtk);

                double dLimitOverCharm = CharaLimitOver.GetParamCharm(nLimitOverLevel, cBaseMasterData.limit_over_type);
                //int nLimitOverCost = (int)CharaLimitOver.GetParam(nLimitOverLevel, cBaseMasterData.limit_over_type, (int)CharaLimitOver.EGET.ePARAM_COST);

                string strBuildUpHP  = (unBuildUpHP + unLO_HP).ToString();
                string strBuildUpAtk = (unBuildUpAtk + unLO_Atk).ToString();


                if (unBuildUpHP > unBaseHP || nLimitOverLevel != m_BaseUnit.limitover_lv)
                {
                    strBuildUpHP = string.Format(strFormatUp, strBuildUpHP);
                }
                else if (unBuildUpHP == GlobalDefine.VALUE_MAX_HP)
                {
                    strBuildUpHP = string.Format(strFormatMax, strBuildUpHP);
                }
                else
                {
                    strBuildUpHP = string.Format(strFormat, strBuildUpHP);
                }

                if (unBuildUpAtk > unBaseAtk || nLimitOverLevel != m_BaseUnit.limitover_lv)
                {
                    strBuildUpAtk = string.Format(strFormatUp, strBuildUpAtk);
                }
                else if (unBuildUpAtk == GlobalDefine.VALUE_MAX_POW)
                {
                    strBuildUpAtk = string.Format(strFormatMax, strBuildUpAtk);
                }
                else
                {
                    strBuildUpAtk = string.Format(strFormat, strBuildUpAtk);
                }

                if (bChangeLO && nLimitOverLevel != m_BaseUnit.limitover_lv)
                {
                    strBuilupLO    = string.Format(strFormatUp, nLimitOverLevel);
                    strBuilupCharm = string.Format(strFormatUp, dLimitOverCharm.ToString("F1"));
                }
                else
                {
                    strBuilupLO    = nLimitOverLevel.ToString();
                    strBuilupCharm = dLimitOverCharm.ToString("F1");
                }

                //----------------------------------------
                // LVカラー
                //----------------------------------------

                string strBuildUpLevel = "";
                if (unUnitLevel == cCharaParam.m_CharaMasterDataParam.level_max)
                {
                    strBuildUpLevel = string.Format(strFormatUp, GameTextUtil.GetText("unit_status18"));
                }
                else
                {
                    if (unUnitLevel != (uint)cCharaParam.m_CharaLevel)
                    {
                        strBuildUpLevel = string.Format("{0}><color=#f90974>{1}</color>/{2}", cCharaParam.m_CharaLevel, unUnitLevel, cCharaParam.m_CharaMasterDataParam.level_max);
                    }
                    else
                    {
                        strBuildUpLevel = string.Format(GameTextUtil.GetText("unit_status17"), cCharaParam.m_CharaLevel, cCharaParam.m_CharaMasterDataParam.level_max);
                    }
                }

                m_UnitStatusPanel.Level = strBuildUpLevel;
                m_UnitStatusPanel.Lo    = strBuilupLO;
                m_UnitStatusPanel.Hp    = strBuildUpHP + strUnitPlusHP;
                m_UnitStatusPanel.Atk   = strBuildUpAtk + strUnitPlusAtk;
                m_UnitStatusPanel.Charm = strBuilupCharm;
                m_UnitBGPanel.Point     = (int)m_BlendPoint;
            }
            else
            {
#if BUILD_TYPE_DEBUG
                Debug.LogError("MasterData None!");
#endif
            }
        }
        m_UnitBGPanel.TotalPoint = (int)UserDataAdmin.Instance.m_StructPlayer.have_unit_point;
    }
Пример #22
0
    //----------------------------------------------------------------------------
    /*!
		@brief	キャラ情報セットアップ:マスターデータ指定
		@param	MasterDataParamChara	cMasterData		キャラマスター
		@param	int						nLevel			キャラレベル
		@param	int						lbsLv			リミットブレイクスキルレベル
		@param	int						nPlusPow		プラス値:攻撃
		@param	int						nPlusHP			プラス値:体力
		@param	int						nLOLevel		プラス値:限界突破値
		@note
	*/
    //----------------------------------------------------------------------------
    public bool CharaSetupFromParam(MasterDataParamChara cMasterData, int nLevel, int lbsLv, int nPlusPow, int nPlusHP, int nLOLevel)
    {
        m_CharaMasterDataParam = cMasterData;
        m_bHasCharaMasterDataParam = (null != m_CharaMasterDataParam);

        if (m_CharaMasterDataParam == null)
        {
            Debug.LogError("CharaSetup Error! - InstanceNone!! ");
            return false;
        }

        // @change Developer 2015/09/03 ver300
        #region ==== 通常処理 ====
        int nPlusValuePow = 0;
        int nPlusValueHP = 0;

        m_CharaLevel = nLevel;
        m_CharaLBSLv = lbsLv;

        float fLimitOverHP = 0;
        float fLimitOverATK = 0;

        #region ==== スキルレベルまるめ処理 ====
        MasterDataSkillLimitBreak cSkillLimitBreak = BattleParam.m_MasterDataCache.useSkillLimitBreak(cMasterData.skill_limitbreak);
        if (cSkillLimitBreak != null)
        {
            if (lbsLv > cSkillLimitBreak.level_max)
            {
                m_CharaLBSLv = cSkillLimitBreak.level_max;
            }
        }
        #endregion

        #region ==== リミットオーバーまるめ処理 ====
        MasterDataLimitOver _masterMainLO = MasterFinder<MasterDataLimitOver>.Instance.Find((int)cMasterData.limit_over_type);
        if (_masterMainLO != null)
        {
            if (nLOLevel > _masterMainLO.limit_over_max)
            {
                nLOLevel = _masterMainLO.limit_over_max;
            }
        }
        #endregion

        m_CharaPow = CharaUtil.GetStatusValue(m_CharaMasterDataParam, nLevel, CharaUtil.VALUE.POW);
        m_CharaDef = CharaUtil.GetStatusValue(m_CharaMasterDataParam, nLevel, CharaUtil.VALUE.DEF);
        m_CharaHP = CharaUtil.GetStatusValue(m_CharaMasterDataParam, nLevel, CharaUtil.VALUE.HP);
        m_CharaLimitBreak = 0;
        m_CharaPlusPow = nPlusPow;
        m_CharaPlusDef = 0;
        m_CharaPlusHP = nPlusHP;
        m_CharaLimitOver = nLOLevel;
        m_CharaCharm = CharaLimitOver.GetParamCharm((uint)nLOLevel, cMasterData.limit_over_type);
        // レベルMAXなら限界突破の値を追加

        float fLimitOverAddHp = CharaLimitOver.GetParam((uint)nLOLevel, cMasterData.limit_over_type, (int)CharaLimitOver.EGET.ePARAM_HP);
        float fLimitOverAddAtk = CharaLimitOver.GetParam((uint)nLOLevel, cMasterData.limit_over_type, (int)CharaLimitOver.EGET.ePARAM_ATK);


        fLimitOverHP = m_CharaHP * (fLimitOverAddHp / 100);
        fLimitOverATK = m_CharaPow * (fLimitOverAddAtk / 100);

        // プラス値を算出
        nPlusValuePow = m_CharaPlusPow * GlobalDefine.PLUS_RATE_POW;
        nPlusValueHP = m_CharaPlusHP * GlobalDefine.PLUS_RATE_HP;
        #endregion

        // @add Developer 2015/09/03 ver300
        #region ==== リンクシステム処理 ====
        int nElemValuePow = 0;
        int nElemValueHP = 0;
        int nRaceValuePow = 0;
        int nRaceValueHP = 0;
        int nLinkPlusValuePow = 0;
        int nLinkPlusValueHP = 0;
        double nLinkCharm = 0;
        // リンク中の場合
        //MasterDataParamChara cLinkCharaMaster = BattleParam.m_MasterDataCache.useCharaParam(m_LinkParam.m_CharaID);
        MasterDataParamChara cLinkCharaMaster = m_LinkParam.m_cCharaMasterDataParam;
        if (cLinkCharaMaster != null)
        {
            float fWork = 0.0f;

            // 属性ボーナスを加算
            nElemValuePow = CharaLinkUtil.GetLinkUnitBonusElement(cLinkCharaMaster, m_LinkParam.m_CharaLv, (uint)m_LinkParam.m_CharaLOLevel, CharaUtil.VALUE.POW);
            nElemValueHP = CharaLinkUtil.GetLinkUnitBonusElement(cLinkCharaMaster, m_LinkParam.m_CharaLv, (uint)m_LinkParam.m_CharaLOLevel, CharaUtil.VALUE.HP);

            // 種族ボーナス:攻撃力の+%値を算出
            fWork = CharaLinkUtil.GetLinkUnitBonusRace(cLinkCharaMaster, cLinkCharaMaster.kind, CharaUtil.VALUE.POW);           // %値取得(メイン)
            fWork += CharaLinkUtil.GetLinkUnitBonusRace(cLinkCharaMaster, cLinkCharaMaster.sub_kind, CharaUtil.VALUE.POW);          // %値取得(サブ)
            fWork = InGameUtilBattle.GetDBRevisionValue(fWork);                                                                 // 数値変換
            nRaceValuePow = (int)InGameUtilBattle.AvoidErrorMultiple((float)m_CharaPow, fWork);                                         // 増加量

            // 種族ボーナス:体力の実値を取得
            nRaceValueHP = (int)CharaLinkUtil.GetLinkUnitBonusRace(cLinkCharaMaster, cLinkCharaMaster.kind, CharaUtil.VALUE.HP);        // 実値取得(メイン)
            nRaceValueHP += (int)CharaLinkUtil.GetLinkUnitBonusRace(cLinkCharaMaster, cLinkCharaMaster.sub_kind, CharaUtil.VALUE.HP);       // 実値取得(サブ)

            // +値の算出
            nLinkPlusValuePow = CharaLinkUtil.GetLinkUnitBonusPlus(m_LinkParam.m_CharaPlusPow, CharaUtil.VALUE.POW);
            nLinkPlusValueHP = CharaLinkUtil.GetLinkUnitBonusPlus(m_LinkParam.m_CharaPlusHP, CharaUtil.VALUE.HP);
            nLinkCharm = CharaLimitOver.GetParamCharm((uint)m_LinkParam.m_CharaLOLevel, cLinkCharaMaster.limit_over_type);
        }
        else
        {
            // リンク用変数の初期化
            m_LinkParam.Setup();
        }
        #endregion

#if BUILD_TYPE_DEBUG
        DebugBattleLog.writeText(DebugBattleLog.StrOpe + "キャラ基本情報"
            + "[" + cMasterData.name + "]"
            + " FixID:" + cMasterData.fix_id
            + " DrawID:" + cMasterData.draw_id
            + " LV:" + m_CharaLevel.ToString()
            + " SkillLV:" + m_CharaLBSLv.ToString()
            + " LimOverLv:" + m_CharaLimitOver.ToString()
            + " PlusPow:" + m_CharaPlusPow.ToString()
            + " PlusHp:" + m_CharaPlusHP.ToString()
            + " 属性:" + cMasterData.element.ToString()
            + " 種族1:" + cMasterData.kind.ToString()
            + " 種族2:" + cMasterData.sub_kind.ToString()
        );

        DebugBattleLog.writeText(DebugBattleLog.StrOpe + "  HP(" + (m_CharaHP + nPlusValueHP + nElemValueHP + nRaceValueHP + nLinkPlusValueHP + (int)fLimitOverHP).ToString() + ")"
            + " = LV(" + m_CharaHP.ToString() + ")"
            + " + PlusHP(" + nPlusValueHP.ToString() + ")"
            + " + LinkElem(" + nElemValueHP.ToString() + ")"
            + " + LinkRace(" + nRaceValueHP.ToString() + ")"
            + " + LinkPlus(" + nLinkPlusValueHP.ToString() + ")"
            + " + LimitOver(" + ((int)fLimitOverHP).ToString() + ")"
            );
        DebugBattleLog.writeText(DebugBattleLog.StrOpe + "  POW(" + (m_CharaPow + nPlusValuePow + nElemValuePow + nRaceValuePow + nLinkPlusValuePow + (int)fLimitOverATK).ToString() + ")"
            + " = LV(" + m_CharaPow.ToString() + ")"
            + " + PlusPow(" + nPlusValuePow.ToString() + ")"
            + " + LinkElem(" + nElemValuePow.ToString() + ")"
            + " + LinkRace(" + nRaceValuePow.ToString() + ")"
            + " + LinkPlus(" + nLinkPlusValuePow.ToString() + ")"
            + " + LimitOver(" + ((int)fLimitOverATK).ToString() + ")"
            );

        const int ADD_SKILL_COUNT_LIMIT = 50;	// スキル連結数の上限

        if (cMasterData.skill_leader != 0)
        {
            DebugBattleLog.writeText(DebugBattleLog.StrOpe + "   リーダースキル(fixid:" + cMasterData.skill_leader.ToString(), false);
            MasterDataSkillLeader master_data = BattleParam.m_MasterDataCache.useSkillLeader(cMasterData.skill_leader);
            if (master_data == null)
            {
                DebugBattleLog.writeText(DebugBattleLog.StrOpe + "ERROR!(存在しないfix_id))");
            }
            else
            {
                DebugBattleLog.writeText(DebugBattleLog.StrOpe + ")[" + master_data.name + "]" + master_data.detail);
            }
        }

        if (cMasterData.skill_limitbreak != 0)
        {
            DebugBattleLog.writeText(DebugBattleLog.StrOpe + "   リミブレスキル(fixid:" + cMasterData.skill_limitbreak.ToString(), false);
            MasterDataSkillLimitBreak master_data = BattleParam.m_MasterDataCache.useSkillLimitBreak(cMasterData.skill_limitbreak);
            if (master_data == null)
            {
                DebugBattleLog.writeText(DebugBattleLog.StrOpe + "ERROR!(存在しないfix_id))");
            }
            else
            {
                int loop_limit = ADD_SKILL_COUNT_LIMIT;
                int add_fix_id = master_data.add_fix_id;
                while (add_fix_id != 0)
                {
                    DebugBattleLog.writeText(DebugBattleLog.StrOpe + "+" + add_fix_id.ToString(), false);
                    MasterDataSkillLimitBreak add_master_data = BattleParam.m_MasterDataCache.useSkillLimitBreak((uint)add_fix_id);
                    if (add_master_data == null)
                    {
                        DebugBattleLog.writeText(DebugBattleLog.StrOpe + "ERROR!(存在しないfix_id))");
                        break;
                    }

                    add_fix_id = add_master_data.add_fix_id;
                    loop_limit--;
                    if (loop_limit <= 0)
                    {
                        DebugBattleLog.writeText(DebugBattleLog.StrOpe + "ERROR!(無限ループ))");
                    }
                }

                DebugBattleLog.writeText(DebugBattleLog.StrOpe + ")[" + master_data.name + "]" + master_data.detail);
            }
        }

        if (cMasterData.skill_active0 != 0)
        {
            DebugBattleLog.writeText(DebugBattleLog.StrOpe + "   ノーマルスキル1(fixid:" + cMasterData.skill_active0.ToString(), false);
            MasterDataSkillActive master_data = BattleParam.m_MasterDataCache.useSkillActive(cMasterData.skill_active0);
            if (master_data == null)
            {
                DebugBattleLog.writeText(DebugBattleLog.StrOpe + "ERROR!(存在しないfix_id))");
            }
            else
            {
                DebugBattleLog.writeText(DebugBattleLog.StrOpe + ")[" + master_data.name + "]" + master_data.detail);
            }
        }

        if (cMasterData.skill_active1 != 0)
        {
            DebugBattleLog.writeText(DebugBattleLog.StrOpe + "   ノーマルスキル2(fixid:" + cMasterData.skill_active1.ToString(), false);
            MasterDataSkillActive master_data = BattleParam.m_MasterDataCache.useSkillActive(cMasterData.skill_active1);
            if (master_data == null)
            {
                DebugBattleLog.writeText(DebugBattleLog.StrOpe + "ERROR!(存在しないfix_id))");
            }
            else
            {
                DebugBattleLog.writeText(DebugBattleLog.StrOpe + ")[" + master_data.name + "]" + master_data.detail);
            }
        }

        if (cMasterData.skill_passive != 0)
        {
            DebugBattleLog.writeText(DebugBattleLog.StrOpe + "   パッシブスキル(fixid:" + cMasterData.skill_passive.ToString(), false);
            MasterDataSkillPassive master_data = BattleParam.m_MasterDataCache.useSkillPassive(cMasterData.skill_passive);
            if (master_data == null)
            {
                DebugBattleLog.writeText(DebugBattleLog.StrOpe + "ERROR!(存在しないfix_id))");
            }
            else
            {
                int loop_limit = ADD_SKILL_COUNT_LIMIT;
                int add_fix_id = master_data.add_fix_id;
                while (add_fix_id != 0)
                {
                    DebugBattleLog.writeText(DebugBattleLog.StrOpe + "+" + add_fix_id.ToString(), false);
                    MasterDataSkillPassive add_master_data = BattleParam.m_MasterDataCache.useSkillPassive((uint)add_fix_id);
                    if (add_master_data == null)
                    {
                        DebugBattleLog.writeText(DebugBattleLog.StrOpe + "ERROR!(存在しないfix_id))");
                        break;
                    }

                    add_fix_id = add_master_data.add_fix_id;
                    loop_limit--;
                    if (loop_limit <= 0)
                    {
                        DebugBattleLog.writeText(DebugBattleLog.StrOpe + "ERROR!(無限ループ))");
                    }
                }

                DebugBattleLog.writeText(DebugBattleLog.StrOpe + ")[" + master_data.name + "]" + master_data.detail);
            }
        }

        if (cLinkCharaMaster != null)
        {
            DebugBattleLog.writeText(DebugBattleLog.StrOpe + " リンクキャラ"
                + "[" + cLinkCharaMaster.name + "]"
                + " FixID:" + cLinkCharaMaster.fix_id
                + " DrawID:" + cLinkCharaMaster.draw_id
                + " LV:" + m_LinkParam.m_CharaLv.ToString()
                + " LimOverLv:" + m_LinkParam.m_CharaLOLevel.ToString()
                + " PlusPow:" + m_LinkParam.m_CharaPlusPow.ToString()
                + " PlusHp:" + m_LinkParam.m_CharaPlusHP.ToString()
                + " LinkPoint:" + m_LinkParam.m_CharaLinkPoint.ToString()
            );

            if (cLinkCharaMaster.link_skill_active != 0)
            {
                DebugBattleLog.writeText(DebugBattleLog.StrOpe + "    リンクスキル(fixid:" + cLinkCharaMaster.link_skill_active.ToString(), false);
                MasterDataSkillActive master_data = BattleParam.m_MasterDataCache.useSkillActive(cLinkCharaMaster.link_skill_active);
                if (master_data == null)
                {
                    DebugBattleLog.writeText(DebugBattleLog.StrOpe + "ERROR!(存在しないfix_id))");
                }
                else
                {
                    DebugBattleLog.writeText(DebugBattleLog.StrOpe + ")[" + master_data.name + "]" + master_data.detail);
                }
            }

            if (cLinkCharaMaster.link_skill_passive != 0)
            {
                DebugBattleLog.writeText(DebugBattleLog.StrOpe + "    リンクパッシブスキル(fixid:" + cLinkCharaMaster.link_skill_passive.ToString(), false);
                MasterDataSkillPassive master_data = BattleParam.m_MasterDataCache.useSkillPassive(cLinkCharaMaster.link_skill_passive);
                if (master_data == null)
                {
                    DebugBattleLog.writeText(DebugBattleLog.StrOpe + "ERROR!(存在しないfix_id))");
                }
                else
                {
                    int loop_limit = ADD_SKILL_COUNT_LIMIT;
                    int add_fix_id = master_data.add_fix_id;
                    while (add_fix_id != 0)
                    {
                        DebugBattleLog.writeText(DebugBattleLog.StrOpe + "+" + add_fix_id.ToString(), false);
                        MasterDataSkillPassive add_master_data = BattleParam.m_MasterDataCache.useSkillPassive((uint)add_fix_id);
                        if (add_master_data == null)
                        {
                            DebugBattleLog.writeText(DebugBattleLog.StrOpe + "ERROR!(存在しないfix_id))");
                            break;
                        }

                        add_fix_id = add_master_data.add_fix_id;
                        loop_limit--;
                        if (loop_limit <= 0)
                        {
                            DebugBattleLog.writeText(DebugBattleLog.StrOpe + "ERROR!(無限ループ))");
                        }
                    }

                    DebugBattleLog.writeText(DebugBattleLog.StrOpe + ")[" + master_data.name + "]" + master_data.detail);
                }
            }
        }
#endif //BUILD_TYPE_DEBUG


        // 攻撃力、体力の増加値を加算
        m_CharaPow += nPlusValuePow + nElemValuePow + nRaceValuePow + nLinkPlusValuePow + (int)fLimitOverATK;
        m_CharaHP += nPlusValueHP + nElemValueHP + nRaceValueHP + nLinkPlusValueHP + (int)fLimitOverHP;
        m_CharaCharm += nLinkCharm;

        if (m_CharaPow > GlobalDefine.VALUE_MAX_POW)
        {
            m_CharaPow = GlobalDefine.VALUE_MAX_POW;
        }

        if (m_CharaHP > GlobalDefine.VALUE_MAX_HP)
        {
            m_CharaHP = GlobalDefine.VALUE_MAX_HP;
        }

        return true;
    }
Пример #23
0
    //----------------------------------------------------------------------------

    /*!
     *          @brief	基底継承:MainMenuSeq:ページ切り替えにより有効化された際に呼ばれる関数
     *          @note	ページのレイアウト再構築を兼ねる
     */
    //----------------------------------------------------------------------------
    protected override void PageSwitchSetting(bool initalize)
    {
        base.PageSwitchSetting(initalize);

        //----------------------------------------
        // ゲリラボス情報を取得
        //----------------------------------------
        m_GuerrillaBoss = MasterDataUtil.GetGuerrillaBossParamFromQuestID(MainMenuParam.m_QuestSelectMissionID);

        //----------------------------------------
        // ゲーム本編に引き渡す情報を色々設定
        //----------------------------------------
        {
            //----------------------------------------
            // 選択されている助っ人を取得
            //----------------------------------------
            PacketStructFriend cHelper = MainMenuParam.m_QuestHelper;
            if (cHelper == null)
            {
                Debug.LogError("SelectFriendNone");
            }

            //----------------------------------------
            //
            //----------------------------------------
            int nPartyCurrent = UserDataAdmin.Instance.m_StructPlayer.unit_party_current;
            PacketStructUnit[] acUnitStruct =
            {
                UserDataAdmin.Instance.m_StructPartyAssign[nPartyCurrent][0]
                , UserDataAdmin.Instance.m_StructPartyAssign[nPartyCurrent][1]
                , UserDataAdmin.Instance.m_StructPartyAssign[nPartyCurrent][2]
                , UserDataAdmin.Instance.m_StructPartyAssign[nPartyCurrent][3]
                , cHelper.unit
            };

            // @add Developer 2015/09/07 ver300
            PacketStructUnit cLinkUnitStruct = null;

            UserDataUnitParam[] acUnitParam = new UserDataUnitParam[acUnitStruct.Length];
            for (int i = 0; i < acUnitStruct.Length; i++)
            {
                if (acUnitStruct[i] == null)
                {
                    continue;
                }

                acUnitParam[i] = new UserDataUnitParam();
                acUnitParam[i].m_UnitDataID            = acUnitStruct[i].id;
                acUnitParam[i].m_UnitParamLevel        = (int)acUnitStruct[i].level;
                acUnitParam[i].m_UnitParamEXP          = (int)acUnitStruct[i].exp;
                acUnitParam[i].m_UnitParamUniqueID     = acUnitStruct[i].unique_id;
                acUnitParam[i].m_UnitParamLimitBreakLV = (int)acUnitStruct[i].limitbreak_lv;
                acUnitParam[i].m_UnitParamLimitOverLV  = (int)acUnitStruct[i].limitover_lv;
                acUnitParam[i].m_UnitParamPlusPow      = (int)acUnitStruct[i].add_pow;
                acUnitParam[i].m_UnitParamPlusHP       = (int)acUnitStruct[i].add_hp;

                // @add Developer 2015/09/07 ver300
                // リンクユニットを取得
                if (i != acUnitStruct.Length - 1)
                {
                    cLinkUnitStruct = CharaLinkUtil.GetLinkUnit(acUnitStruct[i].link_unique_id);
                }
                else
                {
                    cLinkUnitStruct = cHelper.unit_link;
                }

                // リンクユニットのパラメータ設定
                if (cLinkUnitStruct == null)
                {
                    continue;
                }
                acUnitParam[i].m_UnitParamLinkID          = cLinkUnitStruct.id;
                acUnitParam[i].m_UnitParamLinkLv          = (int)cLinkUnitStruct.level;
                acUnitParam[i].m_UnitParamLinkPlusPow     = (int)cLinkUnitStruct.add_pow;
                acUnitParam[i].m_UnitParamLinkPlusHP      = (int)cLinkUnitStruct.add_hp;
                acUnitParam[i].m_UnitParamLinkPoint       = (int)acUnitStruct[i].link_point;
                acUnitParam[i].m_UnitParamLinkLimitOverLV = (int)cLinkUnitStruct.limitover_lv;
            }


            //----------------------------------------
            // 固定パーティ情報でパーティ情報を上書き
            //----------------------------------------
            FixPartyAssign(ref acUnitParam, MainMenuParam.m_QuestSelectMissionID);

            {
                SceneGoesParamToQuest2 cSceneGoesParamToQuest2 = new SceneGoesParamToQuest2();

                cSceneGoesParamToQuest2.m_QuestAreaID        = MainMenuParam.m_QuestSelectAreaID;
                cSceneGoesParamToQuest2.m_QuestAreaAmendCoin = MainMenuParam.m_QuestSelectAreaAmendCoin;      // ※パーセント表記
                cSceneGoesParamToQuest2.m_QuestAreaAmendDrop = MainMenuParam.m_QuestSelectAreaAmendDrop;      // ※パーセント表記
                cSceneGoesParamToQuest2.m_QuestAreaAmendExp  = MainMenuParam.m_QuestSelectAreaAmendEXP;       // ※パーセント表記
                cSceneGoesParamToQuest2.m_QuestMissionID     = MainMenuParam.m_QuestSelectMissionID;
                cSceneGoesParamToQuest2.m_QuestRandSeed      = RandManager.GetRand();
                cSceneGoesParamToQuest2.m_IsUsedAutoPlay     = false;
                cSceneGoesParamToQuest2.m_QuestGuerrillaBoss = m_GuerrillaBoss;

                cSceneGoesParamToQuest2.m_PartyFriend      = cHelper;
                cSceneGoesParamToQuest2.m_PartyChara0Param = acUnitParam[0];
                cSceneGoesParamToQuest2.m_PartyChara1Param = acUnitParam[1];
                cSceneGoesParamToQuest2.m_PartyChara2Param = acUnitParam[2];
                cSceneGoesParamToQuest2.m_PartyChara3Param = acUnitParam[3];
                cSceneGoesParamToQuest2.m_PartyChara4Param = acUnitParam[4];

                cSceneGoesParamToQuest2.m_NextAreaCleard = MainMenuUtil.ChkActiveNextArea(MainMenuParam.m_QuestSelectAreaID);

                SceneGoesParam.Instance.m_SceneGoesParamToQuest2 = cSceneGoesParamToQuest2;

                //----------------------------------------
                // ゲーム開始情報をローカル保存。
                //
                // 通信前に保存しているため、通信中にアプリを終了させるとサーバー側の諸々消費を飛ばして次回起動時に開始情報が残ってしまう。
                // そのままクエストに入られるとサーバー上でコスト消費が行われずにクエストに移行する可能性があるがので、
                // タイトル画面で「サーバーにクエスト開始が届いているか」をチェックするAPIを投げて届いている場合のみ適用することで対応する。
                //----------------------------------------
                if (LocalSaveManager.Instance != null)
                {
                    LocalSaveManager.Instance.SaveFuncGoesToMenuResult(null);
                    LocalSaveManager.Instance.SaveFuncGoesToMenuRetire(null);
                    LocalSaveManager.Instance.SaveFuncGoesToQuest2Restore(null);
                    LocalSaveManager.Instance.SaveFuncGoesToQuest2Start(cSceneGoesParamToQuest2);
                    LocalSaveManager.Instance.SaveFuncInGameContinue(null);
                    LocalSaveManager.Instance.SaveFuncInGameReset(null);
                }
            }
        }
        //----------------------------------------
        // 通信発行
        //----------------------------------------
        ServerCommunicate();
    }
Пример #24
0
    public void SetUnitData(ref PartyMemberUnitContext unit, PacketStructUnit unitData)
    {
        if (unit == null)
        {
            return;
        }
        if (unitData == null || unitData.id == 0)
        {
            return;
        }
        MasterDataParamChara charMaster = MasterFinder <MasterDataParamChara> .Instance.Find((int)unitData.id);

        if (charMaster == null)
        {
            return;
        }
        if (charMaster.skill_active0 > 0)
        {
            MasterDataSkillActive skill1 = MasterFinder <MasterDataSkillActive> .Instance.Find((int)charMaster.skill_active0);

            if (skill1 != null)
            {
                unit.IsActiveSkill1Empty = false;
                unit.Skill1Cost1         = MainMenuUtil.GetSkillElementIcon(skill1.cost1);
                unit.Skill1Cost2         = MainMenuUtil.GetSkillElementIcon(skill1.cost2);
                unit.Skill1Cost3         = MainMenuUtil.GetSkillElementIcon(skill1.cost3);
                unit.Skill1Cost4         = MainMenuUtil.GetSkillElementIcon(skill1.cost4);
                unit.Skill1Cost5         = MainMenuUtil.GetSkillElementIcon(skill1.cost5);
                unit.Skill1Color         = MainMenuUtil.GetSkillElementColor("S1", skill1.skill_element);
            }
        }

        if (charMaster.skill_active1 > 0)
        {
            MasterDataSkillActive skill2 = MasterFinder <MasterDataSkillActive> .Instance.Find((int)charMaster.skill_active1);

            if (skill2 != null)
            {
                unit.IsActiveSkill2Empty = false;
                unit.Skill2Cost1         = MainMenuUtil.GetSkillElementIcon(skill2.cost1);
                unit.Skill2Cost2         = MainMenuUtil.GetSkillElementIcon(skill2.cost2);
                unit.Skill2Cost3         = MainMenuUtil.GetSkillElementIcon(skill2.cost3);
                unit.Skill2Cost4         = MainMenuUtil.GetSkillElementIcon(skill2.cost4);
                unit.Skill2Cost5         = MainMenuUtil.GetSkillElementIcon(skill2.cost5);
                unit.Skill2Color         = MainMenuUtil.GetSkillElementColor("S2", skill2.skill_element);
            }
        }

        unit.ParamText = (unitData.level >= charMaster.level_max) ? GameTextUtil.GetText("uniticon_flag1")
                                    : string.Format(GameTextUtil.GetText("uniticon_flag2"), unitData.level); // レベル

        uint plusPoint = unitData.add_hp + unitData.add_pow;                                                 // プラス値の計算

        if (plusPoint != 0)
        {
            unit.ParamText += string.Format(GameTextUtil.GetText("uniticon_flag3"), plusPoint);
        }

        unit.LinkIcon           = MainMenuUtil.GetLinkMark(unitData, null); // リンクアイコン
        unit.OutSideCircleImage = MainMenuUtil.GetElementCircleSprite(charMaster.element);
        SetUpCharaData(ref unit, unitData, CharaLinkUtil.GetLinkUnit(unitData.link_unique_id), false);
    }
Пример #25
0
    private CharaOnce setParam()
    {
        int mainLv;
        int mainLOLv;

        limitOverMaster = MasterFinder <MasterDataLimitOver> .Instance.Find((int)charaMaster.limit_over_type);

        CharaOnce charaOnce = new CharaOnce();

        if (m_mainUnit == null)
        {
            mainLv   = 1;
            mainLOLv = 0;
            if (lvMax == true)
            {
                mainLv   = charaMaster.level_max;
                mainLOLv = limitOverMaster.limit_over_max;
            }
            charaOnce.CharaSetupFromID(
                m_UnitId,
                mainLv,
                0,
                mainLOLv,
                0,
                0,
                0,
                0,
                0,
                0,
                0,
                0
                );
        }
        else
        {
            mainLv   = (int)m_mainUnit.level;
            mainLOLv = (int)m_mainUnit.limitover_lv;
            if (lvMax == true)
            {
                mainLv   = charaMaster.level_max;
                mainLOLv = limitOverMaster.limit_over_max;
            }
            if (m_mainUnit.link_info == (uint)ServerDataDefine.CHARALINK_TYPE.CHARALINK_TYPE_BASE &&
                m_subUnit != null)
            {
                charaOnce.CharaSetupFromID(
                    m_UnitId,
                    mainLv,
                    (int)m_mainUnit.limitbreak_lv,
                    mainLOLv,
                    (int)m_mainUnit.add_pow,
                    (int)m_mainUnit.add_hp,
                    m_subUnit.id,
                    (int)m_subUnit.level,
                    (int)m_subUnit.add_pow,
                    (int)m_subUnit.add_hp,
                    (int)m_mainUnit.link_point,
                    (int)m_subUnit.limitover_lv
                    );
            }
            else
            {
                charaOnce.CharaSetupFromID(
                    charaMaster.fix_id,
                    mainLv,
                    (int)m_mainUnit.limitbreak_lv,
                    mainLOLv,
                    (int)m_mainUnit.add_pow,
                    (int)m_mainUnit.add_hp,
                    0,
                    0,
                    0,
                    0,
                    0,
                    0
                    );
            }
        }

        Level = string.Format(GameTextUtil.GetText("unit_status16"), charaOnce.m_CharaLevel, charaMaster.level_max);
        Hp    = charaOnce.m_CharaHP.ToString();
        if (charaOnce.m_CharaPlusHP != 0)
        {
            Hp = string.Format(GameTextUtil.GetText("unit_status19"), charaOnce.m_CharaHP, charaOnce.m_CharaPlusHP);
        }

        Atk = charaOnce.m_CharaPow.ToString();
        if (charaOnce.m_CharaPlusPow != 0)
        {
            Atk = string.Format(GameTextUtil.GetText("unit_status19"), charaOnce.m_CharaPow, charaOnce.m_CharaPlusPow);
        }

        int _cost = charaMaster.party_cost;

        if (m_subUnit != null)
        {
            _cost += CharaLinkUtil.GetLinkUnitCost(m_subUnit.id);
        }
        Cost = _cost.ToString();

        LimitOver = string.Format(GameTextUtil.GetText("unit_status16"), charaOnce.m_CharaLimitOver, limitOverMaster.limit_over_max);

        Charm = charaOnce.m_CharaCharm.ToString("F1");

        if (lvMax == true)
        {
            Level     = string.Format(GameTextUtil.GetText("kyouka_text1"), Level);
            Hp        = string.Format(GameTextUtil.GetText("kyouka_text1"), Hp);
            Atk       = string.Format(GameTextUtil.GetText("kyouka_text1"), Atk);
            Cost      = string.Format(GameTextUtil.GetText("kyouka_text1"), Cost);
            LimitOver = string.Format(GameTextUtil.GetText("kyouka_text1"), LimitOver);
            Charm     = string.Format(GameTextUtil.GetText("kyouka_text1"), Charm);
        }

        return(charaOnce);
    }