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