Beispiel #1
0
    public static Int32 FF9Level_GetEquipBonus(CharacterEquipment equip, Int32 base_type)
    {
        Int32 num = 0;

        for (Int32 i = 0; i < 5; i++)
        {
            if (equip[i] != 255)
            {
                FF9ITEM_DATA ff9ITEM_DATA    = ff9item._FF9Item_Data[(Int32)equip[i]];
                ItemStats    equip_PRIVILEGE = ff9equip.ItemStatsData[(Int32)ff9ITEM_DATA.bonus];
                switch (base_type)
                {
                case 0:
                    num += (Int32)equip_PRIVILEGE.dex;
                    break;

                case 1:
                    num += (Int32)equip_PRIVILEGE.str;
                    break;

                case 2:
                    num += (Int32)equip_PRIVILEGE.mgc;
                    break;

                case 3:
                    num += (Int32)equip_PRIVILEGE.wpr;
                    break;
                }
            }
        }
        return(num);
    }
Beispiel #2
0
    private static FF9ITEM_DATA[] LoadItems()
    {
        try
        {
            String inputPath = DataResources.ItemsDirectory + "Items.csv";
            if (!File.Exists(inputPath))
            {
                throw new FileNotFoundException($"[ff9item] Cannot load items because a file does not exist: [{inputPath}].", inputPath);
            }

            ItemInfo[] items = CsvReader.Read <ItemInfo>(inputPath);
            if (items.Length != 256)
            {
                throw new NotSupportedException($"You must set 256 items, but there {items.Length}. Any number of items will be available after a game stabilization."); // TODO
            }
            FF9ITEM_DATA[] result = new FF9ITEM_DATA[items.Length];
            for (Int32 i = 0; i < result.Length; i++)
            {
                result[i] = items[i].ToItemData();
            }

            return(result);
        }
        catch (Exception ex)
        {
            Log.Error(ex, "[ff9abil] Load character commands failed.");
            UIManager.Input.ConfirmQuit();
            return(null);
        }
    }
Beispiel #3
0
    private void AddAp(Int32 id, UInt32 ap)
    {
        Character player = FF9StateSystem.Common.FF9.party.GetCharacter(id);

        if (ap == 0u)
        {
            return;
        }
        if (player == null)
        {
            return;
        }
        if (!ff9abil.FF9Abil_HasAp(player))
        {
            return;
        }
        this.apValue[id].current += ap;
        for (Int32 i = 0; i < 5; i++)
        {
            if (player.Equipment[i] != 255)
            {
                FF9ITEM_DATA ff9ITEM_DATA = ff9item._FF9Item_Data[(Int32)player.Equipment[i]];
                for (Int32 j = 0; j < 3; j++)
                {
                    if (ff9ITEM_DATA.ability[j] != 0)
                    {
                        Int32 num = ff9abil.FF9Abil_GetIndex(player.Index, ff9ITEM_DATA.ability[j]);
                        if (num >= 0)
                        {
                            Int32 max_ap = ff9abil._FF9Abil_PaData[player.PresetId][num].Ap;
                            Int32 num2   = (Int32)player.Data.pa[num];
                            if (max_ap > num2)
                            {
                                if ((Int64)(max_ap - num2) <= (Int64)((UInt64)ap))
                                {
                                    player.Data.pa[num] = (Byte)max_ap;
                                    this.ApLearned(id, (Int32)ff9ITEM_DATA.ability[j]);
                                }
                                else
                                {
                                    Byte[] pa   = player.Data.pa;
                                    Int32  num3 = num;
                                    pa[num3] = (Byte)(pa[num3] + (Byte)ap);
                                }
                            }
                        }
                    }
                }
            }
        }
    }
Beispiel #4
0
        public static void FF9Sell_Sell(Byte item_id, UInt16 sell_ct)
        {
            FF9ITEM_DATA ff9ITEM_DATA = ff9item._FF9Item_Data[(Int32)item_id];
            Int64        num          = (Int64)(ff9ITEM_DATA.price >> 1);
            Int32        num2;

            if ((num2 = ff9item.FF9Item_Remove((Int32)item_id, (Int32)sell_ct)) > 0)
            {
                FF9StateSystem.Common.FF9.party.gil += UInt32.Parse((num * (Int64)num2).ToString());
                if (FF9StateSystem.Common.FF9.party.gil > 9999999u)
                {
                    FF9StateSystem.Common.FF9.party.gil = 9999999u;
                }
            }
        }
Beispiel #5
0
 public static ItemInfo FromItemData(FF9ITEM_DATA entry)
 {
     return(new ItemInfo
     {
         Price = entry.price,
         CharacterMask = (ItemCharacter)entry.equip,
         GraphicsId = entry.shape,
         ColorId = entry.color,
         Quality = entry.eq_lv,
         BonusId = entry.bonus,
         AbilityIds = entry.ability,
         TypeMask = (ItemType)entry.type,
         Order = entry.sort
     });
 }
Beispiel #6
0
    private void ArrangeAuto()
    {
        FF9ITEM[] ff9ItemArray = new FF9ITEM[256];
        Int32     num          = 0;

        for (Int32 index = 0; index < 256; ++index)
        {
            if (FF9StateSystem.Common.FF9.item[index].count != 0 && FF9StateSystem.Common.FF9.item[index].id != Byte.MaxValue)
            {
                ff9ItemArray[num++] = new FF9ITEM(FF9StateSystem.Common.FF9.item[index].id, FF9StateSystem.Common.FF9.item[index].count);
            }
        }
        for (Int32 index1 = 0; index1 < num - 1; ++index1)
        {
            for (Int32 index2 = index1 + 1; index2 < num; ++index2)
            {
                FF9ITEM_DATA ff9ItemData1 = ff9item._FF9Item_Data[ff9ItemArray[index1].id];
                FF9ITEM_DATA ff9ItemData2 = ff9item._FF9Item_Data[ff9ItemArray[index2].id];
                if (ff9ItemData1.sort > ff9ItemData2.sort)
                {
                    FF9ITEM ff9Item = ff9ItemArray[index1];
                    ff9ItemArray[index1] = ff9ItemArray[index2];
                    ff9ItemArray[index2] = ff9Item;
                }
                else if (ff9ItemData1.sort == ff9ItemData2.sort && ff9ItemArray[index1].id > ff9ItemArray[index2].id)
                {
                    FF9ITEM ff9Item = ff9ItemArray[index1];
                    ff9ItemArray[index1] = ff9ItemArray[index2];
                    ff9ItemArray[index2] = ff9Item;
                }
            }
        }
        for (Int32 index = 0; index < num; ++index)
        {
            FF9StateSystem.Common.FF9.item[index].id    = ff9ItemArray[index].id;
            FF9StateSystem.Common.FF9.item[index].count = ff9ItemArray[index].count;
        }
        for (Int32 index = num; index < 256; ++index)
        {
            FF9StateSystem.Common.FF9.item[index].count = 0;
        }
    }
Beispiel #7
0
 private static void FF9FEqp_UpdateSA(PLAYER play)
 {
     Boolean[] array = new Boolean[64];
     if (!ff9abil.FF9Abil_HasAp(new Character(play)))
     {
         return;
     }
     for (Int32 i = 0; i < 5; i++)
     {
         if (play.equip[i] != 255)
         {
             FF9ITEM_DATA ff9ITEM_DATA = ff9item._FF9Item_Data[(Int32)play.equip[i]];
             for (Int32 j = 0; j < 3; j++)
             {
                 Int32 num;
                 if ((num = (Int32)ff9ITEM_DATA.ability[j]) != 0 && 192 <= num)
                 {
                     array[num - 192] = true;
                 }
             }
         }
     }
     CharacterAbility[] array2 = ff9abil._FF9Abil_PaData[play.PresetId];
     for (Int32 i = 0; i < 48; i++)
     {
         if (192 <= array2[i].Id && ff9abil.FF9Abil_GetEnableSA(play.Index, array2[i].Id) && !array[array2[i].Id - 192] && play.pa[i] < array2[i].Ap)
         {
             ff9abil.FF9Abil_SetEnableSA(play.Index, array2[i].Id, false);
             Int32 capa_val = ff9abil._FF9Abil_SaData[array2[i].Id - 192].GemsCount;
             if (play.max.capa - play.cur.capa >= capa_val)
             {
                 POINTS cur = play.cur;
                 cur.capa = (Byte)(cur.capa + (Byte)capa_val);
             }
             else
             {
                 play.cur.capa = play.max.capa;
             }
         }
     }
 }
Beispiel #8
0
    public static Int32 FF9Item_GetEquipPart(Int32 id)
    {
        FF9ITEM_DATA ff9ItemData = _FF9Item_Data[id];

        Byte[] numArray = new Byte[5]
        {
            128,
            32,
            64,
            16,
            8
        };
        for (Int32 index = 0; index < 5; ++index)
        {
            if ((ff9ItemData.type & numArray[index]) != 0)
            {
                return(index);
            }
        }
        return(-1);
    }
Beispiel #9
0
    public override Boolean OnKeyConfirm(GameObject go)
    {
        if (base.OnKeyConfirm(go))
        {
            if (_isShowingKeyItemDesp)
            {
                FF9Sfx.FF9SFX_Play(103);
                DisplayKeyItemSkin(false);
            }
            if (ButtonGroupState.ActiveGroup == SubMenuGroupButton)
            {
                FF9Sfx.FF9SFX_Play(103);
                _currentMenu = GetSubMenuFromGameObject(go);
                switch (_currentMenu)
                {
                case SubMenu.Use:
                    _currentArrangeMode          = 0;
                    ButtonGroupState.ActiveGroup = ItemGroupButton;
                    ButtonGroupState.SetSecondaryOnGroup(SubMenuGroupButton);
                    ButtonGroupState.HoldActiveStateOnGroup(SubMenuGroupButton);
                    break;

                case SubMenu.Arrange:
                    _arrangeTransition.TweenIn(() =>
                    {
                        Loading = false;
                        ButtonGroupState.ActiveGroup = ArrangeMenuGroupButton;
                        ButtonGroupState.HoldActiveStateOnGroup(SubMenuGroupButton);
                    });
                    Loading = true;
                    break;

                case SubMenu.Key:
                    if (_keyItemIdList.Count > 0)
                    {
                        ButtonGroupState.ActiveGroup = KeyItemGroupButton;
                        ButtonGroupState.SetSecondaryOnGroup(SubMenuGroupButton);
                        ButtonGroupState.HoldActiveStateOnGroup(SubMenuGroupButton);
                    }
                    break;
                }
            }
            else if (ButtonGroupState.ActiveGroup == ArrangeMenuGroupButton)
            {
                FF9Sfx.FF9SFX_Play(103);
                _currentArrangeMode = go.transform.GetSiblingIndex() + 1;
                switch (_currentArrangeMode)
                {
                case 1:
                    _arrangeTransition.TweenOut(() => Loading = false);
                    Loading = true;
                    ButtonGroupState.ActiveGroup = SubMenuGroupButton;
                    ArrangeAuto();
                    DisplayItem();
                    break;

                case 2:
                    _arrangeTransition.TweenOut(() => Loading = false);
                    Loading = true;
                    ButtonGroupState.ActiveGroup = ItemGroupButton;
                    ButtonGroupState.SetSecondaryOnGroup(SubMenuGroupButton);
                    ButtonGroupState.HoldActiveStateOnGroup(SubMenuGroupButton);
                    DisplayItem();
                    break;
                }
            }
            else if (ButtonGroupState.ActiveGroup == ItemGroupButton)
            {
                if (ButtonGroupState.ContainButtonInGroup(go, ItemGroupButton))
                {
                    _currentItemIndex = go.GetComponent <RecycleListItem>().ItemDataIndex;
                    if (_currentArrangeMode == 0)
                    {
                        PLAYER       player      = FF9StateSystem.Common.FF9.party.member[0];
                        Int32        itemId      = _itemIdList[_currentItemIndex];
                        FF9ITEM_DATA ff9ItemData = ff9item._FF9Item_Data[itemId];
                        if (citem.YCITEM_IS_ITEM(itemId))
                        {
                            ITEM_DATA tbl = ff9item._FF9Item_Info[itemId - 224];
                            if ((ff9ItemData.type & 1) == 1)
                            {
                                if (!_usedItemIdList.Contains(itemId))
                                {
                                    if ((FF9FITEM_ID_VEGETABLE != itemId ? tbl.info.DisplayStats : 0) == 0)
                                    {
                                        if (SFieldCalculator.FieldCalcMain(player, player, tbl, tbl.Ref.ScriptId, 0U))
                                        {
                                            FF9Sfx.FF9SFX_Play(106);
                                            ff9item.FF9Item_Remove(itemId, 1);
                                            if (ff9item.FF9Item_GetCount(itemId) == 0)
                                            {
                                                _usedItemIdList.Add(itemId);
                                            }
                                            DisplayItem();
                                        }
                                        else
                                        {
                                            FF9Sfx.FF9SFX_Play(102);
                                        }
                                    }
                                    else
                                    {
                                        FF9Sfx.FF9SFX_Play(103);
                                        if (_currentItemIndex % 2 == 0)
                                        {
                                            _targetTransition.animatedInStartPosition = new Vector3(1543f, 0.0f, 0.0f);
                                            _targetTransition.animatedOutEndPosition  = new Vector3(1543f, 0.0f, 0.0f);
                                            TargetListPanel.transform.localPosition   = new Vector3(TargetPositionXOffset, 0.0f, 0.0f);
                                        }
                                        else
                                        {
                                            _targetTransition.animatedInStartPosition = new Vector3(-1543f, 0.0f, 0.0f);
                                            _targetTransition.animatedOutEndPosition  = new Vector3(-1543f, 0.0f, 0.0f);
                                            TargetListPanel.transform.localPosition   = new Vector3((Single)(-TargetPositionXOffset - 60.0), 0.0f, 0.0f);
                                        }
                                        _targetTransition.DestinationPosition = new Vector3[1]
                                        {
                                            TargetListPanel.transform.localPosition
                                        };
                                        DisplayTarget();
                                        Loading = true;
                                        _targetTransition.TweenIn(new Byte[1], () =>
                                        {
                                            Loading = false;
                                            ButtonGroupState.RemoveCursorMemorize(TargetGroupButton);
                                            ButtonGroupState.ActiveGroup = TargetGroupButton;
                                            ButtonGroupState.HoldActiveStateOnGroup(ItemGroupButton);
                                        });
                                    }
                                }
                                else
                                {
                                    FF9Sfx.FF9SFX_Play(102);
                                }
                            }
                            else
                            {
                                FF9Sfx.FF9SFX_Play(102);
                            }
                        }
                        else
                        {
                            FF9Sfx.FF9SFX_Play(102);
                        }
                    }
                    else if (_currentArrangeMode == 2)
                    {
                        FF9Sfx.FF9SFX_Play(103);
                        ButtonGroupState.SetCursorMemorize(go.GetChild(1), ItemArrangeGroupButton);
                        ButtonGroupState.ActiveGroup = ItemArrangeGroupButton;
                        ButtonGroupState.HoldActiveStateOnGroup(ItemGroupButton);
                        ButtonGroupState.SetOutsideLimitRectBehavior(PointerManager.LimitRectBehavior.Hide, ItemGroupButton);
                    }
                }
                else
                {
                    OnSecondaryGroupClick(go);
                }
            }
            else if (ButtonGroupState.ActiveGroup == KeyItemGroupButton)
            {
                if (ButtonGroupState.ContainButtonInGroup(go, KeyItemGroupButton))
                {
                    _currentItemIndex = go.GetComponent <RecycleListItem>().ItemDataIndex;
                    if (_keyItemIdList[_currentItemIndex] != FF9FITEM_RARE_NONE)
                    {
                        FF9Sfx.FF9SFX_Play(103);
                        DisplayKeyItemSkin(true);
                    }
                    else
                    {
                        FF9Sfx.FF9SFX_Play(102);
                    }
                }
                else
                {
                    OnSecondaryGroupClick(go);
                }
            }
            else if (ButtonGroupState.ActiveGroup == TargetGroupButton)
            {
                if (ButtonGroupState.ContainButtonInGroup(go, TargetGroupButton))
                {
                    Int32     siblingIndex = go.transform.GetSiblingIndex();
                    Int32     itemId       = _itemIdList[_currentItemIndex];
                    PLAYER    player       = FF9StateSystem.Common.FF9.party.member[siblingIndex];
                    ITEM_DATA tbl          = ff9item._FF9Item_Info[itemId - 224];
                    if (SFieldCalculator.FieldCalcMain(player, player, tbl, tbl.Ref.ScriptId, 0U))
                    {
                        FF9Sfx.FF9SFX_Play(106);
                        ff9item.FF9Item_Remove(itemId, 1);
                        if (ff9item.FF9Item_GetCount(itemId) > 0)
                        {
                            DisplayItem();
                            DisplayTarget();
                        }
                        else
                        {
                            _usedItemIdList.Add(itemId);
                            DisplayItem();
                            ButtonGroupState.ActiveGroup = ItemGroupButton;
                            Loading = true;
                            // ISSUE: method pointer
                            _targetTransition.TweenOut(new Byte[1], () => Loading = false);
                        }
                    }
                    else
                    {
                        FF9Sfx.FF9SFX_Play(102);
                    }
                }
            }
            else if (ButtonGroupState.ActiveGroup == ItemArrangeGroupButton)
            {
                if (ButtonGroupState.ContainButtonInGroup(go, ItemArrangeGroupButton))
                {
                    FF9Sfx.FF9SFX_Play(103);
                    _currentArrangeItemIndex = go.transform.parent.GetComponent <RecycleListItem>().ItemDataIndex;
                    FF9ITEM ff9Item = FF9StateSystem.Common.FF9.item[_currentItemIndex];
                    FF9StateSystem.Common.FF9.item[_currentItemIndex]        = FF9StateSystem.Common.FF9.item[_currentArrangeItemIndex];
                    FF9StateSystem.Common.FF9.item[_currentArrangeItemIndex] = ff9Item;
                    _switchingItem = true;
                    DisplayItem();
                    _itemScrollList.JumpToIndex(_currentArrangeItemIndex, false);
                    ButtonGroupState.RemoveCursorMemorize(ItemGroupButton);
                    ButtonGroupState.ActiveGroup = ItemGroupButton;
                    ButtonGroupState.SetOutsideLimitRectBehavior(PointerManager.LimitRectBehavior.Limit, ItemGroupButton);
                    _switchingItem = false;
                }
                else
                {
                    OnSecondaryGroupClick(go);
                }
            }
        }
        return(true);
    }
Beispiel #10
0
    public static void FF9FEqp_Equip(Byte charPosID, ref Int32 currentItemIndex)
    {
        ff9feqp._FF9FEqp.player  = charPosID;
        ff9feqp._FF9FEqp.equip   = 0;
        ff9feqp._FF9FEqp.item[0] = new FF9ITEM(Byte.MaxValue, 0);
        FF9StateGlobal ff  = FF9StateSystem.Common.FF9;
        Int32          num = 0;

        UInt16[] array = new UInt16[]
        {
            2048,
            1024,
            512,
            256,
            128,
            64,
            32,
            16,
            8,
            4,
            2,
            1
        };
        Byte[] array2 = new Byte[]
        {
            128,
            32,
            64,
            16,
            8
        };
        PLAYER play = FF9StateSystem.Common.FF9.party.member[(Int32)ff9feqp._FF9FEqp.player];
        UInt16 num2 = array[(CharacterId)ff9play.FF9Play_GetCharID2(play.Index, play.IsSubCharacter)];
        Byte   b    = array2[(Int32)ff9feqp._FF9FEqp.equip];

        for (Int32 i = 0; i < 256; i++)
        {
            if (ff.item[i].count != 0)
            {
                FF9ITEM_DATA ff9ITEM_DATA = ff9item._FF9Item_Data[(Int32)ff.item[i].id];
                if ((ff9ITEM_DATA.equip & num2) != 0 && (ff9ITEM_DATA.type & b) != 0)
                {
                    ff9feqp._FF9FEqp.item[num++] = ff.item[i];
                }
            }
        }
        if (currentItemIndex >= num)
        {
            currentItemIndex = 0;
        }
        else if (currentItemIndex < 0)
        {
            currentItemIndex = num - 1;
        }
        PLAYER player  = FF9StateSystem.Common.FF9.party.member[(Int32)ff9feqp._FF9FEqp.player];
        Int32  itemId1 = (Int32)player.equip[(Int32)ff9feqp._FF9FEqp.equip];
        Int32  itemId2 = (Int32)ff9feqp._FF9FEqp.item[currentItemIndex].id;

        if (itemId1 != CharacterEquipment.EmptyItemId)
        {
            ff9item.FF9Item_Add(itemId1, 1);
        }
        if (ff9item.FF9Item_Remove(itemId2, 1) != 0)
        {
            player.equip[(Int32)ff9feqp._FF9FEqp.equip] = (Byte)itemId2;
            ff9feqp.FF9FEqp_UpdatePlayer(player);
        }
    }
Beispiel #11
0
    public static FF9PLAY_SKILL FF9Play_GetSkill(ref FF9PLAY_INFO info, ref FF9PLAY_SKILL skill)
    {
        byte[] numArray1 = { 197, 198, 199, 200 };
        byte[] numArray2 = { 50, 99, 99, 50 };
        skill = new FF9PLAY_SKILL
        {
            cur_hp = info.cur_hp,
            cur_mp = info.cur_mp,
            max_hp = (ushort)info.Base.max_hp,
            max_mp = (ushort)info.Base.max_mp,
            Base   =
            {
                [0] = info.Base.dex,
                [1] = info.Base.str,
                [2] = info.Base.mgc,
                [3] = info.Base.wpr
            }
        };
        int index1;

        if ((index1 = info.equip[0]) != byte.MaxValue)
        {
            skill.weapon[0] = ff9weap._FF9Weapon_Data[index1].Ref.power;
        }
        for (int index2 = 0; index2 < 4; ++index2)
        {
            int num;
            if ((num = info.equip[1 + index2]) != byte.MaxValue && num >= 88 && num < 224)
            {
                DEF_PARAMS defParams = ff9armor._FF9Armor_Data[num - 88];
                skill.weapon[1] += defParams.p_def;
                skill.weapon[2] += defParams.p_ev;
                skill.weapon[3] += defParams.m_def;
                skill.weapon[4] += defParams.m_ev;
            }
        }
        for (int index2 = 0; index2 < 5; ++index2)
        {
            int index3;
            if ((index3 = info.equip[index2]) != byte.MaxValue)
            {
                FF9ITEM_DATA    ff9ItemData    = ff9item._FF9Item_Data[index3];
                EQUIP_PRIVILEGE equipPrivilege = ff9equip._FF9EquipBonus_Data[ff9ItemData.bonus];
                skill.Base[0] += equipPrivilege.dex;
                skill.Base[1] += equipPrivilege.str;
                skill.Base[2] += equipPrivilege.mgc;
                skill.Base[3] += equipPrivilege.wpr;
            }
        }
        for (int index2 = 0; index2 < 4; ++index2)
        {
            if (ff9abil.FF9Abil_IsEnableSA(info.sa, numArray1[index2]))
            {
                switch (numArray1[index2])
                {
                case 197:
                    skill.max_hp = (ushort)(skill.max_hp + skill.max_hp / 10U);
                    continue;

                case 198:
                    skill.max_hp = (ushort)(skill.max_hp + skill.max_hp / 5U);
                    continue;

                case 199:
                    skill.max_mp = (ushort)(skill.max_mp + skill.max_mp / 10U);
                    continue;

                case 200:
                    skill.max_mp = (ushort)(skill.max_mp + skill.max_mp / 5U);
                    continue;

                default:
                    continue;
                }
            }
        }
        for (int index2 = 0; index2 < 4; ++index2)
        {
            if (skill.Base[index2] > numArray2[index2])
            {
                skill.Base[index2] = numArray2[index2];
            }
        }
        for (int index2 = 0; index2 < 5; ++index2)
        {
            if (skill.weapon[index2] > 999)
            {
                skill.weapon[index2] = 999;
            }
        }
        if (skill.max_hp > 9999)
        {
            skill.max_hp = 9999;
        }
        if (skill.max_mp > 999)
        {
            skill.max_mp = 999;
        }
        if (skill.cur_hp > skill.max_hp)
        {
            skill.cur_hp = skill.max_hp;
        }
        if (skill.cur_mp > skill.max_mp)
        {
            skill.cur_mp = skill.max_mp;
        }
        return(skill);
    }
Beispiel #12
0
 private void DisplayHelp(MainMenuUI.SubMenu currentMenu)
 {
     if (currentMenu == MainMenuUI.SubMenu.Ability || currentMenu == MainMenuUI.SubMenu.Order)
     {
         foreach (CharacterDetailHUD characterDetailHUD in this.CharacterHUDList)
         {
             ButtonGroupState component = characterDetailHUD.Self.GetComponent <ButtonGroupState>();
             component.Help.TextKey = ((!FF9StateSystem.MobilePlatform) ? "TargetHelp" : "TargetHelpMobile");
         }
     }
     else if (currentMenu == MainMenuUI.SubMenu.Equip)
     {
         Int32 num = 0;
         foreach (CharacterDetailHUD characterDetailHUD2 in this.CharacterHUDList)
         {
             ButtonGroupState component2 = characterDetailHUD2.Self.GetComponent <ButtonGroupState>();
             String           text       = Localization.Get((!FF9StateSystem.MobilePlatform) ? "TargetHelp" : "TargetHelpMobile") + "\n";
             PLAYER           player     = FF9StateSystem.Common.FF9.party.member[num];
             if (player != null)
             {
                 for (Int32 i = 0; i < 5; i++)
                 {
                     text = text + "[ICON=" + (625 + i).ToString() + "] [FEED=1]:[FEED=2]";
                     Int32 num2 = (Int32)player.equip[i];
                     if (num2 != 255)
                     {
                         FF9ITEM_DATA ff9ITEM_DATA       = ff9item._FF9Item_Data[num2];
                         String       itemIconSpriteName = "item" + ff9ITEM_DATA.shape.ToString("0#") + "_" + ff9ITEM_DATA.color.ToString("0#");
                         Int32        key   = FF9UIDataTool.IconSpriteName.FirstOrDefault((KeyValuePair <Int32, String> pair) => pair.Value == itemIconSpriteName).Key;
                         String       text2 = text;
                         text = String.Concat(new String[]
                         {
                             text2,
                             "[ICON=",
                             key.ToString(),
                             "] [FEED=1]",
                             FF9TextTool.ItemName(num2)
                         });
                     }
                     if (i < 4)
                     {
                         text += "\n";
                     }
                 }
             }
             component2.Help.TextKey = String.Empty;
             component2.Help.Text    = text;
             num++;
         }
     }
     else if (currentMenu == MainMenuUI.SubMenu.Status)
     {
         Int32 num3 = 0;
         foreach (CharacterDetailHUD characterDetailHUD3 in this.CharacterHUDList)
         {
             ButtonGroupState component3 = characterDetailHUD3.Self.GetComponent <ButtonGroupState>();
             String           text3      = Localization.Get((!FF9StateSystem.MobilePlatform) ? "TargetHelp" : "TargetHelpMobile") + "\n";
             PLAYER           player2    = FF9StateSystem.Common.FF9.party.member[num3];
             if (player2 != null)
             {
                 UInt32 exp = (player2.level < 99) ? ff9level.CharacterLevelUps[player2.level].ExperienceToLevel : player2.exp;
                 Int32  num5;
                 if (Localization.language == "English(US)" || Localization.language == "English(UK)" || Localization.language == "German")
                 {
                     num5 = 82;
                 }
                 else
                 {
                     num5 = 64;
                 }
                 String text2 = text3;
                 text3 = String.Concat(new Object[]
                 {
                     text2,
                     Localization.Get("EXP"),
                     "[XTAB=",
                     num5,
                     "]",
                     player2.exp.ToString(),
                     "\n"
                 });
                 text2 = text3;
                 text3 = String.Concat(new Object[]
                 {
                     text2,
                     Localization.Get("NextLevel"),
                     " [XTAB=",
                     num5,
                     "]",
                     (exp - player2.exp).ToString()
                 });
             }
             component3.Help.TextKey = String.Empty;
             component3.Help.Text    = text3;
             num3++;
         }
     }
 }
Beispiel #13
0
    public static FF9PLAY_SKILL FF9Play_GetSkill(ref FF9PLAY_INFO info, ref FF9PLAY_SKILL skill)
    {
        Byte[] numArray1 = { 197, 198, 199, 200 };
        Byte[] numArray2 = { 50, 99, 99, 50 };
        skill = new FF9PLAY_SKILL
        {
            cur_hp = info.cur_hp,
            cur_mp = info.cur_mp,
            max_hp = (UInt16)info.Base.max_hp,
            max_mp = (UInt16)info.Base.max_mp,
            Base   =
            {
                [0] = info.Base.dex,
                [1] = info.Base.str,
                [2] = info.Base.mgc,
                [3] = info.Base.wpr
            }
        };
        Int32 index1;

        if ((index1 = info.equip[0]) != Byte.MaxValue)
        {
            skill.weapon[0] = ff9weap.WeaponData[index1].Ref.Power;
        }
        for (Int32 index2 = 0; index2 < 4; ++index2)
        {
            Int32 num;
            if ((num = info.equip[1 + index2]) != Byte.MaxValue && num >= 88 && num < 224)
            {
                ItemDefence defParams = ff9armor.ArmorData[num - 88];
                skill.weapon[1] += defParams.PhisicalDefence;
                skill.weapon[2] += defParams.PhisicalEvade;
                skill.weapon[3] += defParams.MagicalDefence;
                skill.weapon[4] += defParams.MagicalEvade;
            }
        }
        for (Int32 index2 = 0; index2 < 5; ++index2)
        {
            Int32 index3;
            if ((index3 = info.equip[index2]) != Byte.MaxValue)
            {
                FF9ITEM_DATA ff9ItemData    = ff9item._FF9Item_Data[index3];
                ItemStats    equipPrivilege = ff9equip.ItemStatsData[ff9ItemData.bonus];
                skill.Base[0] += equipPrivilege.dex;
                skill.Base[1] += equipPrivilege.str;
                skill.Base[2] += equipPrivilege.mgc;
                skill.Base[3] += equipPrivilege.wpr;
            }
        }
        for (Int32 index2 = 0; index2 < 4; ++index2)
        {
            if (ff9abil.FF9Abil_IsEnableSA(info.sa, numArray1[index2]))
            {
                switch (numArray1[index2])
                {
                case 197:
                    skill.max_hp = (UInt16)(skill.max_hp + skill.max_hp / 10U);
                    continue;

                case 198:
                    skill.max_hp = (UInt16)(skill.max_hp + skill.max_hp / 5U);
                    continue;

                case 199:
                    skill.max_mp = (UInt16)(skill.max_mp + skill.max_mp / 10U);
                    continue;

                case 200:
                    skill.max_mp = (UInt16)(skill.max_mp + skill.max_mp / 5U);
                    continue;

                default:
                    continue;
                }
            }
        }
        for (Int32 index2 = 0; index2 < 4; ++index2)
        {
            if (skill.Base[index2] > numArray2[index2])
            {
                skill.Base[index2] = numArray2[index2];
            }
        }
        for (Int32 index2 = 0; index2 < 5; ++index2)
        {
            if (skill.weapon[index2] > 999)
            {
                skill.weapon[index2] = 999;
            }
        }
        if (skill.max_hp > 9999)
        {
            skill.max_hp = 9999;
        }
        if (skill.max_mp > 999)
        {
            skill.max_mp = 999;
        }
        if (skill.cur_hp > skill.max_hp)
        {
            skill.cur_hp = skill.max_hp;
        }
        if (skill.cur_mp > skill.max_mp)
        {
            skill.cur_mp = skill.max_mp;
        }
        return(skill);
    }