public static UInt32 GetCharacterData(BTL_DATA btl, UInt32 id) { UInt32 result = 16777215u; switch (id) { case 35u: result = btl.max.hp; break; case 36u: result = btl.cur.hp; break; case 37u: result = (UInt32)btl.max.mp; break; case 38u: result = (UInt32)btl.cur.mp; break; case 39u: result = (UInt32)btl.max.at; break; case 41u: if (btl.bi.player != 0) { result = btl_util.getPlayerPtr(btl).level; } else { result = btl_util.getEnemyTypePtr(btl).level; } break; case 42u: result = ((UInt32)btl.stat.invalid >> 24); break; case 43u: result = ((UInt32)btl.stat.invalid & 16777215u); break; case 44u: result = (UInt32)btl.stat.permanent >> 24; break; case 45u: result = ((UInt32)btl.stat.permanent & 16777215u); break; case 46u: result = (UInt32)btl.stat.cur >> 24; break; case 47u: result = ((UInt32)btl.stat.cur & 16777215u); break; case 48u: result = btl.def_attr.invalid; break; case 49u: result = btl.def_attr.absorb; break; case 50u: result = btl.def_attr.half; break; case 51u: result = btl.def_attr.weak; break; case 52u: result = btl.bi.target; break; case 53u: result = btl.bi.disappear; break; case 57u: result = (UInt32)btl.dms_geo_id; break; case 58u: result = btl.mesh_current; break; case 64u: result = btl.bi.row; break; case 65u: result = btl.bi.line_no; break; case 66u: result = btl_util.getPlayerPtr(btl).info.serial_no; break; case 67u: result = btl_util.getPlayerPtr(btl).category; break; case 68u: result = btl_util.getEnemyTypePtr(btl).category; break; case 69u: result = btl.bi.def_idle; break; case 70u: result = btl.bi.slot_no; break; case 72u: result = btl.elem.str; break; case 73u: result = btl.elem.mgc; break; case 74u: result = btl.defence.PhisicalDefence; break; case 75u: result = btl.defence.PhisicalEvade; break; case 76u: result = btl.defence.MagicalDefence; break; case 77u: result = btl.defence.MagicalEvade; break; } return(result); }
public static void OrganizePlayerData(PLAYER p, BTL_DATA btl, UInt16 cnt, UInt16 btl_no) { btl.btl_id = (UInt16)(1 << (Int32)btl_no); BONUS btl_bonus = battle.btl_bonus; btl_bonus.member_flag = (Byte)(btl_bonus.member_flag | (Byte)(1 << (Int32)cnt)); btl.bi.player = 1; btl.bi.slot_no = p.info.slot_no; btl.bi.target = 1; btl.bi.line_no = (Byte)cnt; btl.bi.slave = 0; if (battle.TRANCE_GAUGE_FLAG == 0 || (p.category & 16) != 0 || (btl.bi.slot_no == 2 && battle.GARNET_DEPRESS_FLAG != 0)) { btl.bi.t_gauge = 0; btl.trance = 0; } else { btl.bi.t_gauge = 1; btl.trance = p.trance; } btl.tar_bone = 0; btl.sa = p.sa; btl.elem.dex = p.elem.dex; btl.elem.str = p.elem.str; btl.elem.mgc = p.elem.mgc; btl.elem.wpr = p.elem.wpr; btl.level = p.level; btl.max = p.max; btl_init.CopyPoints(btl.cur, p.cur); Byte serial_no = p.info.serial_no; FF9Char ff9Char = new FF9Char(); ff9Char.btl = btl; ff9Char.evt = btl.evt; FF9StateSystem.Common.FF9.charArray.Add((Int32)p.info.slot_no, ff9Char); btl_init.InitBattleData(btl, ff9Char); btl.mesh_banish = UInt16.MaxValue; btl_stat.InitCountDownStatus(btl); btl.max.at = (Int16)((60 - btl.elem.dex) * 40 << 2); btl_para.InitATB(btl); if (FF9StateSystem.Battle.FF9Battle.btl_scene.Info.StartType == 0) { btl.cur.at = 0; } else if (FF9StateSystem.Battle.FF9Battle.btl_scene.Info.StartType == 1) { btl.cur.at = (Int16)(btl.max.at - 1); } else { btl.cur.at = (Int16)(Comn.random16() % (Int32)btl.max.at); } btl_mot.SetPlayerDefMotion(btl, (UInt32)p.info.serial_no, (UInt32)btl_no); BattlePlayerCharacter.InitAnimation(btl); btl_eqp.InitWeapon(p, btl); btl.defence.PhisicalDefence = p.defence.PhisicalDefence; btl.defence.PhisicalEvade = p.defence.PhisicalEvade; btl.defence.MagicalDefence = p.defence.MagicalDefence; btl.defence.MagicalEvade = p.defence.MagicalEvade; btl_eqp.InitEquipPrivilegeAttrib(p, btl); btl_util.GeoSetColor2Source(btl.weapon_geo, 0, 0, 0); if (btl.cur.hp * 6 < btl.max.hp) { btl.stat.cur |= 512u; } btl_stat.AlterStatuses(btl, (UInt32)p.status & 4294967294u); if ((p.status & 1) != 0) { btl_stat.AlterStatus(btl, 1u); } btl_abil.CheckStatusAbility(btl); btl.base_pos = btl.evt.posBattle; Int16 geoID = btl.dms_geo_id; btl.height = 0; btl.radius = 0; FF9BattleDBHeightAndRadius.TryFindHeightAndRadius(geoID, ref btl.height, ref btl.radius); if (btl.cur.hp == 0 && btl_stat.AlterStatus(btl, 256u) == 2u) { btl.die_seq = 5; btl_mot.DecidePlayerDieSequence(btl); return; } btl.bi.def_idle = Convert.ToByte(btl_stat.CheckStatus(btl, 197122u)); btl_mot.setMotion(btl, btl.bi.def_idle); btl.evt.animFrame = 0; }
public static void DispCharacter(BTL_DATA btl) { PosObj evt = btl.evt; if (btl.bi.slave == 0) { if (btl.bi.player != 0 && btl_mot.checkMotion(btl, 17)) { Vector3 eulerAngles = btl.rot.eulerAngles; eulerAngles.y = 180f; btl.gameObject.transform.localRotation = Quaternion.Euler(eulerAngles); } else { btl.gameObject.transform.localRotation = btl.rot; } if ((!(HonoluluBattleMain.battleSceneName == "EF_E006") && !(HonoluluBattleMain.battleSceneName == "EF_E007")) || btl != FF9StateSystem.Battle.FF9Battle.btl_data[5]) { btl.gameObject.transform.localPosition = btl.pos; } btl_mot.PlayAnim(btl); if ((UInt16)evt.animFrame >= GeoAnim.geoAnimGetNumFrames(btl)) { if (!btl_mot.SetDefaultIdle(btl)) { btl.evt.animFrame = 0; } else if (Status.checkCurStat(btl, 33558531u)) { PosObj evt2 = btl.evt; evt2.animFrame = (Byte)(evt2.animFrame - 1); } } if (!Status.checkCurStat(btl, 33558531u) && btl.bi.stop_anim == 0) { if (btl.animation != (UnityEngine.Object)null) { btl.animation.enabled = true; } PosObj posObj = evt; posObj.animFrame = (Byte)(posObj.animFrame + 1); } else if (btl.animation != (UnityEngine.Object)null) { btl.animation.enabled = false; } Int32 num = btl.meshCount; Int32 num2 = 0; Int32 num3 = 0; btl.flags = (UInt16)(btl.flags & (UInt16)(~geo.GEO_FLAGS_RENDER)); for (Int32 i = 0; i < num; i++) { if (geo.geoMeshChkFlags(btl, i) == 0) { btl.flags = (UInt16)(btl.flags | geo.GEO_FLAGS_RENDER); btl.SetIsEnabledMeshRenderer(i, true); num3++; } else { btl.SetIsEnabledMeshRenderer(i, false); num2++; } } if (num2 == num) { btl.SetIsEnabledBattleModelRenderer(false); if ((btl.bi.slot_no == 2 && btl.bi.player != 0) || (btl.bi.player == 0 && btl.dms_geo_id == 671)) { Renderer[] componentsInChildren = btl.gameObject.transform.GetChildByName("long_hair").GetComponentsInChildren <Renderer>(); Renderer[] array = componentsInChildren; for (Int32 j = 0; j < (Int32)array.Length; j++) { Renderer renderer = array[j]; renderer.enabled = false; } Renderer[] componentsInChildren2 = btl.gameObject.transform.GetChildByName("short_hair").GetComponentsInChildren <Renderer>(); Renderer[] array2 = componentsInChildren2; for (Int32 k = 0; k < (Int32)array2.Length; k++) { Renderer renderer2 = array2[k]; renderer2.enabled = false; } } } if (num3 == num) { btl.SetIsEnabledBattleModelRenderer(true); if ((btl.bi.slot_no == 2 && btl.bi.player != 0) || (btl.bi.player == 0 && btl.dms_geo_id == 671)) { Byte serialNumber = btl_util.getSerialNumber(btl); if (Configuration.Graphics.GarnetHair != 2 && (serialNumber == 4 || serialNumber == 3 || Configuration.Graphics.GarnetHair == 1)) { Renderer[] componentsInChildren3 = btl.gameObject.transform.GetChildByName("long_hair").GetComponentsInChildren <Renderer>(); Renderer[] array3 = componentsInChildren3; for (Int32 l = 0; l < (Int32)array3.Length; l++) { Renderer renderer3 = array3[l]; renderer3.enabled = true; } } else { Renderer[] componentsInChildren4 = btl.gameObject.transform.GetChildByName("short_hair").GetComponentsInChildren <Renderer>(); Renderer[] array4 = componentsInChildren4; for (Int32 m = 0; m < (Int32)array4.Length; m++) { Renderer renderer4 = array4[m]; renderer4.enabled = true; } } } else if (btl.bi.slot_no == 0 && btl.bi.player != 0) { Byte serialNumber2 = btl_util.getSerialNumber(btl); if (serialNumber2 == 1) { btl.SetIsEnabledBattleModelRenderer(false); } } } if (!Status.checkCurStat(btl, 1073741824u)) { GeoTexAnim.geoTexAnimService(btl.texanimptr); GeoTexAnim.geoTexAnimService(btl.tranceTexanimptr); } if (btl.weapon_geo != (UnityEngine.Object)null) { num = btl.weaponMeshCount; btl.weaponFlags = (UInt16)(btl.weaponFlags & (UInt16)(~geo.GEO_FLAGS_RENDER)); for (Int32 n = 0; n < num; n++) { if (geo.geoWeaponMeshChkFlags(btl, n) == 0) { btl.weaponFlags = (UInt16)(btl.weaponFlags | geo.GEO_FLAGS_RENDER); btl.weaponRenderer[n].enabled = true; } else { btl.weaponRenderer[n].enabled = false; } } } return; } BattleUnit masterEnemyBtlPtr = btl_util.GetMasterEnemyBtlPtr(); if (masterEnemyBtlPtr == null) { return; } btl.rot = masterEnemyBtlPtr.Data.rot; btl_mot.setSlavePos(btl, ref btl.base_pos); btl_mot.setBasePos(btl); }
public BattleUnit GetUnit(Int32 index) { BTL_DATA data = btl_data[index]; return(new BattleUnit(data)); }
public static void InitPlayerData(FF9StateBattleSystem btlsys) { ObjList objList = new ObjList(); if (!FF9StateSystem.Battle.isDebug) { objList = PersistenSingleton <EventEngine> .Instance.GetActiveObjList().next; } Int16 num2; Int16 num = num2 = 0; PLAYER p; while (num2 < 4) { p = FF9StateSystem.Common.FF9.party.member[(Int32)num2]; if (p != null) { BTL_DATA btl_DATA = btlsys.btl_data[(Int32)num]; btl_DATA.dms_geo_id = (Int16)FF9BattleDB.GEO.FirstOrDefault((KeyValuePair <Int32, String> x) => x.Value == btl_init.model_id[(Int32)p.info.serial_no]).Key; btl_init.OrganizePlayerData(p, btl_DATA, (UInt16)num2, (UInt16)num); btl_init.SetBattleModel(btl_DATA); if (Status.checkCurStat(btl_DATA, 256u)) { GeoTexAnim.geoTexAnimStop(btl_DATA.texanimptr, 2); GeoTexAnim.geoTexAnimPlayOnce(btl_DATA.texanimptr, 0); if (btl_DATA.bi.player != 0) { GeoTexAnim.geoTexAnimStop(btl_DATA.tranceTexanimptr, 2); GeoTexAnim.geoTexAnimPlayOnce(btl_DATA.tranceTexanimptr, 0); } } else { GeoTexAnim.geoTexAnimPlay(btl_DATA.texanimptr, 2); } if (!FF9StateSystem.Battle.isDebug) { objList = objList.next; } num = (Int16)(num + 1); btl_sys.AddCharacter(btl_DATA); } num2 = (Int16)(num2 + 1); } while (num < 4) { btlsys.btl_data[(Int32)num].btl_id = 0; num = (Int16)(num + 1); } btlsys.btl_load_status = (Byte)(btlsys.btl_load_status | 16); btl_init.SetupBattlePlayer(); if (btlsys.btl_scene.Info.StartType == 0) { for (BTL_DATA btl_DATA = btlsys.btl_list.next; btl_DATA != null; btl_DATA = btl_DATA.next) { if (btl_DATA.bi.player != 0) { btl_DATA.cur.at = 0; } } } else if (btlsys.btl_scene.Info.StartType == 1) { for (BTL_DATA btl_DATA = btlsys.btl_list.next; btl_DATA != null; btl_DATA = btl_DATA.next) { if (btl_DATA.bi.player == 0) { btl_DATA.cur.at = 0; } } } }
public static void SetBattleVfx(CMD_DATA cmd, UInt32 fx_no, Int16[] arg) { BTL_VFX_REQ fx_req = FF9StateSystem.Battle.FF9Battle.fx_req; PSX_LIBGTE.VECTOR vector = default(PSX_LIBGTE.VECTOR); vector.vx = 0; vector.vy = 0; vector.vz = 0; UInt16 num = 0; fx_req.exe = cmd.regist; if (arg != null) { fx_req.monbone[0] = (Byte)arg[0]; fx_req.monbone[1] = (Byte)arg[1]; fx_req.arg0 = (Int16)((Byte)arg[2]); fx_req.flgs = (UInt16)((Byte)arg[3]); } else { fx_req.monbone[0] = (fx_req.monbone[1] = 0); fx_req.flgs = 0; fx_req.arg0 = 0; } fx_req.trgno = (fx_req.rtrgno = 0); cmd.regist.fig = (cmd.regist.m_fig = 0); cmd.regist.fig_info = 0; if (cmd.info.reflec == 0) { num = btl_cmd.CheckReflec(cmd); if (cmd.cmd_no == BattleCommandId.Item || cmd.cmd_no == BattleCommandId.AutoPotion) { fx_req.flgs = 2; } else if (cmd.cmd_no == BattleCommandId.MagicSword) { fx_req.flgs = 4; } else if (cmd.cmd_no == BattleCommandId.SysPhantom || cmd.cmd_no == BattleCommandId.SysLastPhoenix) { fx_req.flgs = 1; } } else if (cmd.info.reflec == 2) { cmd.info.reflec = 1; if (cmd.regist.bi.player == 0) { cmd.info.mon_reflec = 1; } fx_req.flgs = 17; } for (BTL_DATA next = FF9StateSystem.Battle.FF9Battle.btl_list.next; next != null; next = next.next) { if ((next.btl_id & cmd.tar_id) != 0) { BTL_DATA[] trg = fx_req.trg; BTL_VFX_REQ btl_VFX_REQ = fx_req; SByte b; btl_VFX_REQ.trgno = (SByte)((b = btl_VFX_REQ.trgno) + 1); trg[(Int32)((Byte)b)] = next; next.fig = (next.m_fig = 0); next.fig_info = 0; vector.vx += (Int32)next.base_pos[0]; vector.vz += (Int32)next.base_pos[2]; } if ((next.btl_id & num) != 0) { BTL_DATA[] rtrg = fx_req.rtrg; BTL_VFX_REQ btl_VFX_REQ2 = fx_req; SByte b; btl_VFX_REQ2.rtrgno = (SByte)((b = btl_VFX_REQ2.rtrgno) + 1); rtrg[(Int32)((Byte)b)] = next; } if (cmd.cmd_no == BattleCommandId.MagicSword && btl_util.getSerialNumber(next) == 2) { fx_req.mexe = next; } } fx_req.trgcpos.vx = vector.vx / (Int32)fx_req.trgno; fx_req.trgcpos.vy = 0; fx_req.trgcpos.vz = vector.vz / (Int32)fx_req.trgno; ENEMY_TYPE[] enemy_type = FF9StateSystem.Battle.FF9Battle.enemy_type; SFX.Begin(fx_req.flgs, fx_req.arg0, fx_req.monbone, fx_req.trgcpos); SFX.SetExe(fx_req.exe); SFX.SetMExe(fx_req.mexe); SFX.SetTrg(fx_req.trg, fx_req.trgno); SFX.SetRTrg(fx_req.rtrg, fx_req.rtrgno); SFX.Play((Int32)fx_no); }
internal BattleUnit(BTL_DATA data) { Data = data; }
private static void FinishCommand(FF9StateBattleSystem btlsys) { CMD_DATA cmd = btlsys.cur_cmd; BTL_DATA btl1 = cmd.regist; if (cmd.cmd_no < 48) { if (cmd == btl1.cmd[0] && cmd.cmd_no != 3 && cmd.cmd_no != 12) { ResetCurrentBattlerActiveTime(btl1); } else if (cmd.cmd_no == 21 && btl1.bi.slot_no == 6 && (cmd == btl1.cmd[3] && !CheckUsingCommand(btl1.cmd[0]))) { ResetCurrentBattlerActiveTime(btl1); } else if (cmd.cmd_no == 10) { /*int num = (int)*/ btl_stat.RemoveStatus(btl1, 1073741824U); FF9StateSystem.Battle.FF9Battle.cmd_status &= 65519; } else if (cmd.cmd_no == 11) { /*int num = (int)*/ btl_stat.AlterStatus(btl1, 1073741824U); btl1.tar_mode = 2; btl1.SetDisappear(1); FF9StateSystem.Battle.FF9Battle.cmd_status &= 65519; } if (Status.checkCurStat(btl1, 16384U) && cmd.cmd_no != 3 && cmd.cmd_no != 12) { byte num1 = (byte)((300 - btl1.level) / btl1.elem.wpr * 10); if (cmd.cmd_no == 21 || cmd.cmd_no == 23) { num1 /= 2; } if (FF9StateSystem.Settings.IsTranceFull) { num1 = 0; } if (btl1.trance > num1) { btl1.trance -= num1; } else if (!FF9StateSystem.Battle.isDebug) { /*int num2 = (int)*/ btl_stat.RemoveStatus(btl1, 16384U); } if (cmd.cmd_no == 18 && btlsys.phantom_no != 0) { btlsys.cmd_status |= 4; btlsys.phantom_cnt = setPhantomCount(btl1); } } } else if (cmd.cmd_no == 57) { btlsys.cmd_status &= 65527; btlsys.phantom_cnt = setPhantomCount(btl1); } else if (cmd.cmd_no < 53 && CheckUsingCommand(btl1.cmd[0])) { btl1.bi.cmd_idle = 1; } if (cmd.info.cover != 0) { for (BTL_DATA btl2 = FF9StateSystem.Battle.FF9Battle.btl_list.next; btl2 != null; btl2 = btl2.next) { if (btl2.bi.player != 0) { btl_mot.setBasePos(btl2); if (btl2.bi.cover != 0) { btl2.bi.cover = 0; btl_mot.SetDefaultIdle(btl2); } } } } if (cmd.info.dodge != 0) { BTL_DATA btl2 = btl_scrp.GetBtlDataPtr(cmd.tar_id); btl2.bi.dodge = 0; if (btl2.bi.player != 0) { btl_mot.SetDefaultIdle(btl2); } else if (btl2.bi.slave != 0) { btl2 = btl_util.GetMasterEnemyBtlPtr(); } btl2.pos[2] = btl2.base_pos[2]; } if (cmd.regist != null && cmd == btl1.cmd[0]) { UIManager.Battle.RemovePlayerFromAction(cmd.regist.btl_id, true); } ClearCommand(cmd); btlsys.cur_cmd = null; btlsys.cmd_mode = 0; if (btl1 != null && btl1.bi.player != 0 && FF9StateSystem.Settings.IsATBFull) { btl1.cur.at = (short)(btl1.max.at - 1); } if (FF9StateSystem.Battle.isDebug) { return; } HonoluluBattleMain.playerEnterCommand = true; }
public static void CheckCommandLoop(CMD_DATA cmd) { if (!SFX.isRunning) { BTL_DATA btlData = cmd.regist; if (!FF9StateSystem.Battle.isDebug && (UIManager.Battle.BtlWorkLibra || UIManager.Battle.BtlWorkPeep)) { return; } if (cmd.cmd_no == 4) { if (btl_mot.checkMotion(btlData, 12)) { if (btlData.evt.animFrame < GeoAnim.geoAnimGetNumFrames(btlData)) { return; } btl_mot.setMotion(btlData, 13); btlData.evt.animFrame = 0; } } else if (cmd.cmd_no == 7) { if (btl_mot.checkMotion(btlData, 9)) { if (btlData.evt.animFrame < GeoAnim.geoAnimGetNumFrames(btlData, btlData.currentAnimationName)) { return; } btl_mot.setMotion(btlData, (byte)(29U + btlData.bi.row)); btlData.evt.animFrame = 0; } if (btl_mot.checkMotion(btlData, (byte)(29U + btlData.bi.row))) { ushort numFrames = GeoAnim.geoAnimGetNumFrames(btlData); ushort num1 = btlData.evt.animFrame; if (num1 < numFrames) { ushort num2 = (ushort)(num1 + 1U); btlData.pos[2] = btlData.bi.row == 0 ? 400 * num2 / numFrames - 1960 : -400 * num2 / numFrames - 1560; btlData.gameObject.transform.localPosition = btlData.pos; return; } ExecVfxCommand(btlData); btl_mot.setMotion(btlData, 32); btlData.evt.animFrame = 0; return; } if (btl_mot.checkMotion(btlData, 32)) { if (btlData.evt.animFrame < GeoAnim.geoAnimGetNumFrames(btlData)) { return; } btl_mot.setMotion(btlData, 0); btlData.evt.animFrame = 0; } } BattleAchievement.UpdateCommandAchievement(cmd); ReqFinishCommand(); if (cmd.cmd_no != 59) { return; } btl_stat.SetPresentColor(btlData); } else { if (cmd.cmd_no != 59 || SFX.frameIndex != 75) { return; } BTL_DATA btl = cmd.regist; if (Status.checkCurStat(btl, 16384U)) { btl_vfx.SetTranceModel(btl, true); BattleAchievement.UpdateTranceStatus(); } else { btl_vfx.SetTranceModel(btl, false); } } }
private static void Btl2dStatIcon() { FF9StateBattleSystem ff9Battle = FF9StateSystem.Battle.FF9Battle; BTL2D_WORK btl2d_work_set = ff9Battle.btl2d_work_set; Vector3 rot; rot.x = 0f; rot.z = 0f; for (BTL_DATA next = ff9Battle.btl_list.next; next != null; next = next.next) { if (next.bi.disappear == 0) { if ((next.flags & geo.GEO_FLAGS_CLIP) == 0) { if ((btl2d_work_set.OldDisappear & next.btl_id) == 0) { BattleStatus num = next.stat.cur | next.stat.permanent; if ((num & BattleStatus.Death) == 0u) { if ((num & STATUS_2D_ICON) != 0u) { if (next.bi.player == 0 || !btl_mot.checkMotion(next, 17)) { Int32 num2 = ff9.rsin(fixedPointAngle: (Int32)(next.rot.eulerAngles.y / 360f * 4096f)); Int32 num3 = ff9.rcos(fixedPointAngle: (Int32)(next.rot.eulerAngles.y / 360f * 4096f)); Int16 num4; Byte[] array; SByte[] array2; SByte[] array3; if (next.bi.player != 0) { num4 = FF9StateSystem.Common.FF9.player[next.bi.slot_no].info.serial_no; array = btl2d.wBonePC[num4]; array2 = btl2d.wYofsPC[num4]; array3 = btl2d.wZofsPC[num4]; } else { ENEMY_TYPE et = ff9Battle.enemy[next.bi.slot_no].et; array = et.icon_bone; array2 = et.icon_y; array3 = et.icon_z; } Int32 num5 = 0; num4 = 12; for (;;) { Int16 num6 = num4; num4 = (Int16)(num6 - 1); if (num6 == 0) { break; } btl2d.STAT_ICON_TBL stat_ICON_TBL = btl2d.wStatIconTbl[num5]; if ((num & stat_ICON_TBL.Mask) != 0u) { if ((num & stat_ICON_TBL.Mask2) == 0u) { Int16 num7 = (Int16)(array2[stat_ICON_TBL.Pos] << 4); Int16 num8 = (Int16)(array3[stat_ICON_TBL.Pos] << 4); if ((next.flags & geo.GEO_FLAGS_SCALE) != 0) { num7 = (Int16)((Int32)(num7 * next.gameObject.transform.localScale.y)); num8 = (Int16)((Int32)(num8 * next.gameObject.transform.localScale.z)); } Vector3 position = next.gameObject.transform.GetChildByName("bone" + array[stat_ICON_TBL.Pos].ToString("D3")).position; Vector3 pos; pos.x = position.x + (num8 * num2 >> 12); pos.y = position.y - num7; pos.z = position.z + (num8 * num3 >> 12); if (stat_ICON_TBL.Type != 0) { rot.y = 0f; HonoluluBattleMain.battleSPS.UpdateBtlStatus(next, stat_ICON_TBL.Mask, pos, rot, btl2d_work_set.Timer); } else { Int32 ang = stat_ICON_TBL.Ang; if (ang != 0) { Int32 num9 = (Int32)(next.rot.eulerAngles.y / 360f * 4095f); num9 = (num9 + 3072 & 4095); rot.y = num9 / 4095f * 360f; } else { rot.y = 0f; } HonoluluBattleMain.battleSPS.UpdateBtlStatus(next, stat_ICON_TBL.Mask, pos, rot, btl2d_work_set.Timer); } } } num5++; } } } } } } } } }
private static void Btl2dStatCount() { btl2d.STAT_CNT_TBL[] array = new btl2d.STAT_CNT_TBL[] { new btl2d.STAT_CNT_TBL(BattleStatus.Doom, 11, 0), new btl2d.STAT_CNT_TBL(BattleStatus.GradualPetrify, 15, 1) }; FF9StateBattleSystem ff9Battle = FF9StateSystem.Battle.FF9Battle; BattleStatus status = BattleStatus.Doom | BattleStatus.GradualPetrify; Int16 num2 = 2; for (BTL_DATA next = ff9Battle.btl_list.next; next != null; next = next.next) { if (next.bi.disappear == 0) { if ((next.flags & geo.GEO_FLAGS_CLIP) == 0) { if ((ff9Battle.btl2d_work_set.OldDisappear & next.btl_id) == 0) { BattleStatus cur = next.stat.cur; if ((cur & BattleStatus.Death) == 0u) { if ((cur & status) != 0u) { Int16 num3; Int16 num4; Int16 num5; if (next.bi.player != 0) { num3 = FF9StateSystem.Common.FF9.player[next.bi.slot_no].info.serial_no; num4 = btl2d.wBonePC[num3][5]; num5 = btl2d.wYofsPC[num3][5]; } else { ENEMY_TYPE et = ff9Battle.enemy[next.bi.slot_no].et; num4 = et.icon_bone[5]; num5 = et.icon_y[5]; } if ((next.flags & geo.GEO_FLAGS_SCALE) != 0) { num5 = (Int16)((Int32)(num5 * next.gameObject.transform.localScale.y)); } Transform childByName = next.gameObject.transform.GetChildByName("bone" + num4.ToString("D3")); Int32 num6 = -(num5 << 4); Int32 num7 = 0; num3 = num2; for (;;) { Int16 num8 = num3; num3 = (Int16)(num8 - 1); if (num8 == 0) { break; } btl2d.STAT_CNT_TBL stat_CNT_TBL = array[num7]; if ((cur & stat_CNT_TBL.Mask) != 0u) { Int16 cdown_max; if ((cdown_max = next.stat.cnt.cdown_max) < 1) { break; } Int16 num9; if ((num9 = next.stat.cnt.conti[stat_CNT_TBL.Idx]) < 0) { break; } Int16 num10 = next.cur.at_coef; num4 = (Int16)(num9 * 10 / cdown_max); UInt16 num11; if (num9 <= 0) { num11 = 2; } else { num5 = (Int16)((num9 - num10) * 10 / cdown_max); num11 = (UInt16)((num4 == num5) ? 0 : 2); } Int32 num12; if (stat_CNT_TBL.Col != 0) { Byte b = (Byte)((num4 << 4) + 32); num12 = (b << 16 | b << 8 | b); } else { num12 = 16777216; } num12 |= num11 << 24; num4 = (Int16)(num4 + 1); if (num4 > 10) { num4 = 10; } if (num7 == 0) { if (next.deathMessage == null) { next.deathMessage = Singleton <HUDMessage> .Instance.Show(childByName, "10", HUDMessage.MessageStyle.DEATH_SENTENCE, new Vector3(0f, num6), 0); UIManager.Battle.DisplayParty(); } else { next.deathMessage.Label = num4.ToString(); } } else if (num7 == 1) { if (next.petrifyMessage == null) { next.petrifyMessage = Singleton <HUDMessage> .Instance.Show(childByName, "10", HUDMessage.MessageStyle.PETRIFY, new Vector3(0f, num6), 0); UIManager.Battle.DisplayParty(); } else { String str = "[" + (num12 & 16777215).ToString("X6") + "]"; next.petrifyMessage.Label = str + num4.ToString(); } } } num7++; } } } } } } } }
public static void Btl2dMain() { FF9StateBattleSystem ff9Battle = FF9StateSystem.Battle.FF9Battle; BTL2D_WORK btl2d_work_set = ff9Battle.btl2d_work_set; Int16 num = btl2d_work_set.NewID; for (Int16 num2 = 0; num2 < 16; num2 = (Int16)(num2 + 1)) { BTL2D_ENT btl2D_ENT = btl2d_work_set.Entry[num]; if (btl2D_ENT.BtlPtr != null) { if (btl2D_ENT.Type > 2) { btl2D_ENT.BtlPtr = null; } else if (btl2D_ENT.Delay != 0) { BTL2D_ENT btl2D_ENT2 = btl2D_ENT; btl2D_ENT2.Delay = (Byte)(btl2D_ENT2.Delay - 1); } else { String text = String.Empty; HUDMessage.MessageStyle style = HUDMessage.MessageStyle.DAMAGE; if (btl2D_ENT.Type == 0) { if (btl2D_ENT.Work.Num.Color == 0) { style = HUDMessage.MessageStyle.DAMAGE; } else { style = HUDMessage.MessageStyle.RESTORE_HP; } text = btl2D_ENT.Work.Num.Value.ToString(); } else if (btl2D_ENT.Type == 1) { if (btl2D_ENT.Work.Num.Color == 0) { style = HUDMessage.MessageStyle.DAMAGE; } else { style = HUDMessage.MessageStyle.RESTORE_MP; } text = btl2D_ENT.Work.Num.Value.ToString() + " " + Localization.Get("MPCaption"); } else if (btl2D_ENT.Type == 2) { if (btl2D_ENT.Work.Num.Value == 0u) { text = Localization.Get("Miss"); style = HUDMessage.MessageStyle.MISS; } else if (btl2D_ENT.Work.Num.Value == 1u) { text = Localization.Get("Death"); style = HUDMessage.MessageStyle.DEATH; } else if (btl2D_ENT.Work.Num.Value == 2u) { text = Localization.Get("Guard"); style = HUDMessage.MessageStyle.GUARD; } else if (btl2D_ENT.Work.Num.Value == 3u) { text = NGUIText.FF9YellowColor + Localization.Get("Critical") + "[-] \n " + text; style = HUDMessage.MessageStyle.CRITICAL; } } Singleton <HUDMessage> .Instance.Show(btl2D_ENT.trans, text, style, new Vector3(0f, btl2D_ENT.Yofs, 0f), 0); UIManager.Battle.DisplayParty(); btl2D_ENT.BtlPtr = null; } } num = (Int16)(num + 1); if (num >= 16) { num = 0; } } btl2d.Btl2dStatCount(); if (SFX.GetEffectJTexUsed() == 0) { btl2d.Btl2dStatIcon(); } BTL2D_WORK btl2D_WORK = btl2d_work_set; btl2D_WORK.Timer = (UInt16)(btl2D_WORK.Timer + 1); Byte b = Byte.MaxValue; for (BTL_DATA next = ff9Battle.btl_list.next; next != null; next = next.next) { if (next.bi.disappear == 0) { b = (Byte)(b & (Byte)(~(Byte)next.btl_id)); } } btl2d_work_set.OldDisappear = b; }
public static void Btl2dReq(BTL_DATA pBtl) { Byte b = 0; UInt16 fig_info = pBtl.fig_info; if (pBtl.bi.disappear == 0) { if ((fig_info & 256) != 0) { btl_para.SetTroubleDamage(new BattleUnit(pBtl)); } if ((fig_info & 128) != 0) { btl2d.Btl2dReqSymbol(pBtl, 2, 0, 0); } else if ((fig_info & 96) != 0) { if ((fig_info & 32) != 0) { btl2d.Btl2dReqSymbol(pBtl, 0, 0, 0); b = 2; } if ((fig_info & 64) != 0) { btl2d.Btl2dReqSymbol(pBtl, 1, 0, b); } } else { if ((fig_info & 1) != 0) { if ((fig_info & 4) != 0) { BTL2D_ENT btl2D_ENT = btl2d.Btl2dReqSymbol(pBtl, 3, 128, 0); b = 2; } if ((fig_info & 2) != 0) { btl2d.Btl2dReqHP(pBtl, pBtl.fig, 192, b); } else { btl2d.Btl2dReqHP(pBtl, pBtl.fig, 0, b); } b = (Byte)(b + 4); } if ((fig_info & 8) != 0) { if ((fig_info & 16) != 0) { btl2d.Btl2dReqMP(pBtl, pBtl.m_fig, 192, b); } else { btl2d.Btl2dReqMP(pBtl, pBtl.m_fig, 0, b); } } } } pBtl.fig_info = 0; pBtl.fig = 0; pBtl.m_fig = 0; }
public Int32 GetObjSpsIndex(BTL_DATA btl, BattleStatus status) { Int32 statusSPSIndex = this.GetStatusSPSIndex(status); return((Int32)(btl.bi.line_no * 12) + statusSPSIndex); }
// ReSharper disable PossibleNullReferenceException public static bool CheckCommandCondition(FF9StateBattleSystem btlsys, CMD_DATA cmd) { BTL_DATA btlData = cmd.regist; FF9StateGlobal ff9StateGlobal = FF9StateSystem.Common.FF9; if (btlData != null) { if (cmd.cmd_no < 55) { int num = btl_mot.setDirection(btlData); btlData.evt.rotBattle.eulerAngles = new Vector3(btlData.evt.rotBattle.eulerAngles.x, num, btlData.evt.rotBattle.eulerAngles.z); btlData.rot.eulerAngles = new Vector3(btlData.rot.eulerAngles.x, num, btlData.rot.eulerAngles.z); } if (battle.GARNET_DEPRESS_FLAG != 0 && btlData.bi.player != 0 && (btlData.bi.slot_no == 2 && cmd.cmd_no < 48) && Comn.random8() < 64) { UIManager.Battle.SetBattleFollowMessage(27); return(false); } if (!CheckMagicCondition(cmd)) { return(false); } } byte num1 = cmd.cmd_no; switch (num1) { case 11: btlData.cmd[3].tar_id = btl_util.GetStatusBtlID(1U, 0U); break; case 12: label_12: /*int num2 = (int)*/ btl_stat.AlterStatus(btlData, 1073741824U); btlData.cmd[3].cmd_no = cmd.cmd_no; btlData.cmd[3].tar_id = cmd.cmd_no != 3 ? btl_util.GetStatusBtlID(1U, 0U) : cmd.tar_id; cmd.tar_id = btlData.btl_id; break; case 14: case 15: label_14: if (ff9item.FF9Item_GetCount(cmd.sub_no) == 0) { UIManager.Battle.SetBattleFollowMessage(24); return(false); } if (cmd.cmd_no == 51) { UIManager.Battle.SetBattleFollowMessage(9); } break; case 16: case 18: case 20: btl_calc.DecideSummonType(cmd); break; case 22: case 23: if (cmd.sub_no == 46) { btl_calc.DecideMeteor(cmd); } break; case 24: if (cmd.sub_no == 82) { cmd.tar_id = btl_util.GetRandomBtlID((uint)(Comn.random8() & 1)); break; } if (cmd.sub_no == 93 && ff9item.FF9Item_GetCount(cmd.aa.Ref.power) < btl_util.SumOfTarget(1U)) { UIManager.Battle.SetBattleFollowMessage(24); return(false); } break; case 28: case 29: if (cmd.sub_no == 126 || cmd.sub_no == 134) { uint num3 = cmd.aa.Ref.power * (uint)btlData.level; if (num3 > ff9StateGlobal.party.gil) { UIManager.Battle.SetBattleFollowMessage(20); return(false); } ff9StateGlobal.party.gil -= num3; break; } if (cmd.sub_no == 129 || cmd.sub_no == 137) { cmd.aa.Ref.attr = (byte)(1 << Comn.random8() % 8); } break; case 31: return(btl_calc.DecideMagicSword(btlData, cmd.aa.MP)); default: switch (num1) { case 49: BTL_DATA btlDataPtr1; if ((btlDataPtr1 = btl_scrp.GetBtlDataPtr(cmd.tar_id)) == null || btlDataPtr1.bi.target == 0 || Status.checkCurStat(btlDataPtr1, 256U)) { return(false); } if (btlsys.btl_scene.Info.NoNeighboring != 0 && (btlData.weapon.category & 1) != 0) { UIManager.Battle.SetBattleFollowMessage(23); return(false); } if (cmd.cmd_no == 49) { UIManager.Battle.SetBattleFollowMessage(7); } break; case 50: BTL_DATA btlDataPtr2; if ((btlDataPtr2 = btl_scrp.GetBtlDataPtr(cmd.tar_id)) == null || btlDataPtr2.bi.target == 0 || Status.checkCurStat(btlDataPtr2, 256U)) { return(false); } UIManager.Battle.SetBattleFollowMessage(8); break; case 51: goto label_14; case 52: if (btlsys.btl_scene.Info.NoNeighboring != 0 && (btlData.weapon.category & 1) != 0) { UIManager.Battle.SetBattleFollowMessage(23); return(false); } if (cmd.cmd_no == 49) { UIManager.Battle.SetBattleFollowMessage(7); } break; case 56: if (btlsys.btl_phase == 4) { for (BTL_DATA btl = btlsys.btl_list.next; btl != null; btl = btl.next) { if (btl.bi.player != 0 && !Status.checkCurStat(btl, 1107431747U) && btl.cur.hp > 0) { if (!btl_mot.checkMotion(btl, 17)) { btl_mot.setMotion(btl, 17); btl.evt.animFrame = 0; } btlsys.btl_phase = 5; btlsys.btl_seq = 3; } } if (btlsys.btl_phase == 5 && btlsys.btl_seq == 3) { UIManager.Battle.SetIdle(); ++ff9StateGlobal.party.escape_no; if (cmd.sub_no == 0) { ff9StateGlobal.btl_flag |= 4; } KillAllCommand(btlsys); } else { btlsys.cmd_status &= 65534; } return(false); } break; case 57: if (cmd.sub_no != btlsys.phantom_no) { cmd.sub_no = btlsys.phantom_no; cmd.aa = btlsys.aa_data[cmd.sub_no]; } break; case 59: if (Status.checkCurStat(btlData, 16384U)) { UIManager.Battle.SetBattleFollowMessage(6); btlData.dms_geo_id = btl_init.GetModelID(btl_util.getSerialNumber(btlData) + 19); } else { btlData.dms_geo_id = btl_init.GetModelID(btl_util.getSerialNumber(btlData)); } return(true); case 60: btl_sys.CheckBattleMenuOff(btlData); if (btlData.die_seq == 0) { btlData.die_seq = btlData.bi.player == 0 ? btlData.bi.slave != 0 || btlData.bi.death_f == 0 ? (byte)1 : (byte)3 : (!btl_mot.checkMotion(btlData, 4) ? (byte)1 : (byte)5); } return(false); case 61: btlData.cur.hp = 1; /*int num4 = (int)*/ btl_stat.RemoveStatus(btlData, 256U); btlData.bi.dmg_mot_f = 1; FF9StateSystem.Settings.SetHPFull(); return(false); case 62: btl_stat.StatusCommandCancel(btlData, 1U); btlData.stat.cur |= 1U; btlData.bi.atb = 0; btl_sys.CheckBattlePhase(btlData); /*int num5 = (int)*/ btl_stat.RemoveStatus(btlData, 2147483648U); btl_stat.SetStatusClut(btlData, true); return(false); default: switch (num1) { case 1: if (btlsys.btl_scene.Info.NoNeighboring != 0 && (btlData.weapon.category & 1) != 0 && cmd.tar_id > 15) { UIManager.Battle.SetBattleFollowMessage(23); return(false); } break; case 3: goto label_12; } break; } break; } return(true); }
public static void ExecVfxCommand(BTL_DATA target) { CMD_DATA curCmdPtr = btl_util.getCurCmdPtr(); if (curCmdPtr == null) { Debug.LogError("no command!"); } else { BTL_DATA caster = curCmdPtr.regist; byte num = curCmdPtr.cmd_no; switch (num) { case 12: label_7: caster.tar_mode = 2; caster.SetDisappear(1); break; case 14: label_8: UIManager.Battle.ItemUse(curCmdPtr.sub_no); btl_calc.CalcMain(caster, target, curCmdPtr, ff9item._FF9Item_Info[btl_util.btlItemNum(curCmdPtr.sub_no)].Ref.prog_no); break; case 15: UIManager.Battle.ItemUse(curCmdPtr.sub_no); btl_calc.CalcMain(caster, target, curCmdPtr, curCmdPtr.aa.Ref.prog_no); break; default: switch (num) { case 49: case 52: label_6: btl_calc.CalcMain(caster, target, curCmdPtr, caster.weapon.Ref.prog_no); return; case 51: goto label_8; default: switch (num) { case 1: goto label_6; case 3: goto label_7; default: if (num == 58) { ushort battleId = btl_scrp.GetBattleID(1U); ushort statusBtlId = btl_util.GetStatusBtlID(1U, 4355U); if (battleId == 0 || battleId == statusBtlId) { FF9StateBattleSystem btlsys = FF9StateSystem.Battle.FF9Battle; UIManager.Battle.FF9BMenu_EnableMenu(false); if (btlsys.btl_phase != 5) { btlsys.btl_phase = 5; btlsys.btl_seq = 0; KillAllCommand(btlsys); } } btl_calc.CalcMain(caster, target, curCmdPtr, curCmdPtr.aa.Ref.prog_no); return; } btl_calc.CalcMain(caster, target, curCmdPtr, curCmdPtr.aa.Ref.prog_no); return; } } } } }
public static void SelectCommandVfx(CMD_DATA cmd) { BTL_DATA regist = cmd.regist; BattleUnit caster = regist == null ? null : new BattleUnit(regist); BattleCommandId cmd_no = cmd.cmd_no; switch (cmd_no) { case BattleCommandId.EnemyAtk: if (cmd.tar_id < 16 && (cmd.aa.Category & 8) != 0 && cmd.info.cursor == 0) { UInt16 num = btl_abil.CheckCoverAbility(cmd.tar_id); if (num != 0) { cmd.tar_id = num; cmd.info.cover = 1; } } btlseq.RunSequence(cmd); return; case BattleCommandId.Counter: case BattleCommandId.RushAttack: SetBattleVfx(cmd, (UInt32)(100 + btl_util.getSerialNumber(regist)), null); return; case BattleCommandId.AutoPotion: SetBattleVfx(cmd, (UInt32)ff9item._FF9Item_Info[btl_util.btlItemNum(cmd.sub_no)].info.VfxIndex, null); return; case BattleCommandId.EnemyCounter: case BattleCommandId.EnemyDying: case BattleCommandId.EnemyReaction: btlseq.RunSequence(cmd); return; case BattleCommandId.SysTrans: SetBattleVfx(cmd, !caster.IsUnderStatus(BattleStatus.Trance) ? 489u : 257u, null); return; case BattleCommandId.Attack: SetBattleVfx(cmd, (UInt32)(100 + btl_util.getSerialNumber(regist)), null); return; case BattleCommandId.Item: SetBattleVfx(cmd, (UInt32)ff9item._FF9Item_Info[btl_util.btlItemNum(cmd.sub_no)].info.VfxIndex, null); return; case BattleCommandId.Defend: UIManager.Battle.SetBattleCommandTitle(cmd); btl_mot.setMotion(regist, 12); regist.evt.animFrame = 0; btl_cmd.ExecVfxCommand(regist); return; case BattleCommandId.Change: UIManager.Battle.SetBattleCommandTitle(cmd); btl_mot.setMotion(regist, 9); return; case BattleCommandId.Steal: { Byte serialNumber = btl_util.getSerialNumber(regist); if (serialNumber == 0) { SetBattleVfx(cmd, 200u, null); } else if (serialNumber == 1) { SetBattleVfx(cmd, 273u, null); } else if (serialNumber == 14) { SetBattleVfx(cmd, 19u, null); } else if (serialNumber == 15) { SetBattleVfx(cmd, 119u, null); } else { SetBattleVfx(cmd, 20u, null); } return; } case BattleCommandId.Throw: switch (ff9item._FF9Item_Data[(Int32)cmd.sub_no].shape) { case 1: SetBattleVfx(cmd, 272u, null); break; case 2: SetBattleVfx(cmd, 266u, null); break; case 3: case 4: SetBattleVfx(cmd, 267u, null); break; case 5: SetBattleVfx(cmd, 268u, null); break; case 6: SetBattleVfx(cmd, 269u, null); break; case 7: SetBattleVfx(cmd, 265u, null); break; case 8: case 9: case 10: SetBattleVfx(cmd, 270u, null); break; case 11: SetBattleVfx(cmd, 271u, null); break; case 12: SetBattleVfx(cmd, 277u, null); break; } return; case BattleCommandId.Phantom: { FF9StateBattleSystem ff9Battle = FF9StateSystem.Battle.FF9Battle; switch (cmd.sub_no) { case 49: ff9Battle.phantom_no = 153; break; case 51: ff9Battle.phantom_no = 154; break; case 53: ff9Battle.phantom_no = 155; break; case 55: ff9Battle.phantom_no = 156; break; case 58: ff9Battle.phantom_no = 157; break; case 60: ff9Battle.phantom_no = 158; break; case 62: ff9Battle.phantom_no = 159; break; case 64: ff9Battle.phantom_no = 160; break; } if ((cmd.aa.Info.Target == TargetType.ManyAny && cmd.info.cursor == 0) || cmd.info.meteor_miss != 0 || cmd.info.short_summon != 0 || cmd.cmd_no == BattleCommandId.HolySword1 || cmd.cmd_no == BattleCommandId.HolySword2) { SetBattleVfx(cmd, cmd.aa.Vfx2, null); } else { SetBattleVfx(cmd, (UInt32)cmd.aa.Info.VfxIndex, null); } return; } case BattleCommandId.BoundaryCheck: case BattleCommandId.MagicCounter: case BattleCommandId.SysEscape: case BattleCommandId.SysPhantom: case BattleCommandId.SysLastPhoenix: case BattleCommandId.Jump: case BattleCommandId.Escape: case BattleCommandId.FinishBlow: default: if ((cmd.aa.Info.Target == TargetType.ManyAny && cmd.info.cursor == 0) || cmd.info.meteor_miss != 0 || cmd.info.short_summon != 0 || cmd.cmd_no == BattleCommandId.HolySword1 || cmd.cmd_no == BattleCommandId.HolySword2) { SetBattleVfx(cmd, cmd.aa.Vfx2, null); } else { SetBattleVfx(cmd, (UInt32)cmd.aa.Info.VfxIndex, null); } return; } }
public static void DispSelectCursor(FF9StateGlobal sys, FF9StateBattleSystem btlsys, BTL_DATA btl) { GameObject gameObject = btlsys.s_cur; Vector3 localPosition = btl.gameObject.transform.localPosition; Vector3 eulerAngles = gameObject.transform.localRotation.eulerAngles; gameObject.transform.localPosition = new Vector3(localPosition.x, localPosition.y + btl.height, localPosition.z); float num = (float)((((btlsys.btl_cnt & 15) << 8) + 1265) % 4096 / 4096.0 * 360.0); gameObject.transform.localRotation = Quaternion.Euler(eulerAngles.x, -num, eulerAngles.z); }
public BattleTarget(BTL_DATA data, CalcContext context) : base(data) { _context = context; }
public static void SetCommand(CMD_DATA cmd, uint cmd_no, uint sub_no, ushort tar_id, uint cursor) { BTL_DATA btl = cmd.regist; uint num1 = cmd_no; switch (num1) { case 56: if ((FF9StateSystem.Battle.FF9Battle.cmd_status & 1) != 0) { cmd.sub_no = (byte)sub_no; return; } FF9StateSystem.Battle.FF9Battle.cmd_status |= 1; cmd.aa = FF9StateSystem.Battle.FF9Battle.aa_data[180]; break; case 60: case 61: case 62: cmd.aa = FF9StateSystem.Battle.FF9Battle.aa_data[0]; break; default: switch (num1) { case 10: case 11: FF9StateSystem.Battle.FF9Battle.cmd_status |= 16; cmd.aa = FF9StateSystem.Battle.FF9Battle.aa_data[sub_no]; break; case 14: cmd.aa = FF9StateSystem.Battle.FF9Battle.aa_data[0]; break; case 15: cmd.aa = FF9StateSystem.Battle.FF9Battle.aa_data[190]; break; default: if ((int)num1 != 50) { if ((int)num1 != 51) { if ((int)num1 == 2) { if (((int)btl.sa[1] & 536870912) != 0) { sub_no = 181U; } cmd.aa = FF9StateSystem.Battle.FF9Battle.aa_data[sub_no]; break; } cmd.aa = FF9StateSystem.Battle.FF9Battle.aa_data[sub_no]; break; } goto case 14; } cmd.aa = FF9StateSystem.Battle.FF9Battle.enemy_attack[sub_no]; break; } break; } cmd.tar_id = tar_id; cmd.cmd_no = (byte)cmd_no; cmd.sub_no = (byte)sub_no; cmd.info.cursor = (byte)cursor; cmd.info.cover = 0; cmd.info.dodge = 0; cmd.info.reflec = 0; if (cmd_no > 48U) { cmd.info.priority = 1; } else { /*int num2 = (int)*/ btl_stat.RemoveStatus(btl, 32768U); } if (cmd_no < 55U) { if (btl_util.getCurCmdPtr() != btl.cmd[4]) { if (btl_mot.checkMotion(btl, 0)) { btl_mot.setMotion(btl, btl.mot[10]); btl.evt.animFrame = 0; } else if (btl_mot.checkMotion(btl, 1)) { btl_mot.setMotion(btl, 11); btl.evt.animFrame = 0; } else if (btl_mot.checkMotion(btl, 13) && cmd_no < 48U) { btl_mot.setMotion(btl, 14); btl.evt.animFrame = 0; } } btl.bi.cmd_idle = 1; } EnqueueCommand(cmd); }
public static void OrganizePlayerData(PLAYER p, BTL_DATA btl, UInt16 cnt, UInt16 btl_no) { btl.btl_id = (UInt16)(1 << btl_no); BONUS btl_bonus = battle.btl_bonus; btl_bonus.member_flag = (Byte)(btl_bonus.member_flag | (Byte)(1 << cnt)); btl.bi.player = 1; btl.bi.slot_no = p.info.slot_no; btl.bi.target = 1; btl.bi.line_no = (Byte)cnt; btl.bi.slave = 0; if (battle.TRANCE_GAUGE_FLAG == 0 || (p.category & 16) != 0 || (btl.bi.slot_no == 2 && battle.GARNET_DEPRESS_FLAG != 0)) { btl.bi.t_gauge = 0; btl.trance = 0; } else { btl.bi.t_gauge = 1; btl.trance = p.trance; } btl.tar_bone = 0; btl.sa = p.sa; btl.elem.dex = p.elem.dex; btl.elem.str = p.elem.str; btl.elem.mgc = p.elem.mgc; btl.elem.wpr = p.elem.wpr; btl.level = p.level; btl.max = p.max; btl_init.CopyPoints(btl.cur, p.cur); Byte serial_no = p.info.serial_no; FF9Char ff9Char = new FF9Char(); ff9Char.btl = btl; ff9Char.evt = btl.evt; FF9StateSystem.Common.FF9.charArray.Add(p.info.slot_no, ff9Char); btl_init.InitBattleData(btl, ff9Char); btl.mesh_banish = UInt16.MaxValue; btl_stat.InitCountDownStatus(btl); btl.max.at = (Int16)((60 - btl.elem.dex) * 40 << 2); btl_para.InitATB(btl); if (FF9StateSystem.Battle.FF9Battle.btl_scene.Info.StartType == 0) { btl.cur.at = 0; } else if (FF9StateSystem.Battle.FF9Battle.btl_scene.Info.StartType == 1) { btl.cur.at = (Int16)(btl.max.at - 1); } else { btl.cur.at = (Int16)(Comn.random16() % btl.max.at); } btl_mot.SetPlayerDefMotion(btl, p.info.serial_no, btl_no); BattlePlayerCharacter.InitAnimation(btl); btl_eqp.InitWeapon(p, btl); btl.defence.PhisicalDefence = p.defence.PhisicalDefence; btl.defence.PhisicalEvade = p.defence.PhisicalEvade; btl.defence.MagicalDefence = p.defence.MagicalDefence; btl.defence.MagicalEvade = p.defence.MagicalEvade; btl_eqp.InitEquipPrivilegeAttrib(p, btl); btl_util.GeoSetColor2Source(btl.weapon_geo, 0, 0, 0); if (btl.cur.hp * 6 < btl.max.hp) { btl.stat.cur |= BattleStatus.LowHP; } btl_stat.AlterStatuses(btl, (BattleStatus)p.status & (BattleStatus.Venom | BattleStatus.Virus | BattleStatus.Silence | BattleStatus.Blind | BattleStatus.Trouble | BattleStatus.Zombie | BattleStatus.EasyKill | BattleStatus.Death | BattleStatus.LowHP | BattleStatus.Confuse | BattleStatus.Berserk | BattleStatus.Stop | BattleStatus.AutoLife | BattleStatus.Trance | BattleStatus.Defend | BattleStatus.Poison | BattleStatus.Sleep | BattleStatus.Regen | BattleStatus.Haste | BattleStatus.Slow | BattleStatus.Float | BattleStatus.Shell | BattleStatus.Protect | BattleStatus.Heat | BattleStatus.Freeze | BattleStatus.Vanish | BattleStatus.Doom | BattleStatus.Mini | BattleStatus.Reflect | BattleStatus.Jump | BattleStatus.GradualPetrify)); if ((p.status & 1) != 0) { btl_stat.AlterStatus(btl, BattleStatus.Petrify); } btl_abil.CheckStatusAbility(new BattleUnit(btl)); btl.base_pos = btl.evt.posBattle; Int16 geoID = btl.dms_geo_id; btl.height = 0; btl.radius = 0; FF9BattleDBHeightAndRadius.TryFindHeightAndRadius(geoID, ref btl.height, ref btl.radius); if (btl.cur.hp == 0 && btl_stat.AlterStatus(btl, BattleStatus.Death) == 2u) { btl.die_seq = 5; btl_mot.DecidePlayerDieSequence(btl); return; } btl.bi.def_idle = Convert.ToByte(btl_stat.CheckStatus(btl, BattleStatus.IdleDying)); btl_mot.setMotion(btl, btl.bi.def_idle); btl.evt.animFrame = 0; }
public static short setPhantomCount(BTL_DATA btl) { return((short)((60 - btl.elem.wpr) * 4 * 50)); }
public static void InitEnemyData(FF9StateBattleSystem btlsys) { BTL_DATA btl_DATA = (BTL_DATA)null; ObjList objList = new ObjList(); if (!FF9StateSystem.Battle.isDebug) { objList = PersistenSingleton <EventEngine> .Instance.GetActiveObjList().next; } Int32 monCount = (Int32)FF9StateSystem.Battle.FF9Battle.btl_scene.PatAddr[(Int32)FF9StateSystem.Battle.FF9Battle.btl_scene.PatNum].MonCount; Int32 i = 0; Int32 j = 4; while (i < monCount) { ENEMY enemy = btlsys.enemy[i]; BTL_DATA btl_DATA2 = btlsys.btl_data[j]; enemy.info.die_fade_rate = 32; if ((btl_DATA2.dms_geo_id = BTL_SCENE.GetMonGeoID(i)) < 0) { enemy.info.slave = 1; } else { btl_init.SetBattleModel(btl_DATA2); enemy.info.slave = 0; if (!FF9StateSystem.Battle.isDebug) { objList = objList.next; } } btl_DATA2.btl_id = (UInt16)(16 << i); btl_DATA2.bi.player = 0; btl_DATA2.bi.slot_no = (Byte)i; btl_DATA2.bi.line_no = (Byte)(4 + i); btl_DATA2.bi.t_gauge = 0; btl_DATA2.bi.slave = enemy.info.slave; BTL_SCENE btl_scene = FF9StateSystem.Battle.FF9Battle.btl_scene; SB2_PATTERN sb2_PATTERN = btl_scene.PatAddr[(Int32)FF9StateSystem.Battle.FF9Battle.btl_scene.PatNum]; SB2_MON_PARM sb2_MON_PARM = btl_scene.MonAddr[(Int32)sb2_PATTERN.Put[i].TypeNo]; UInt16 geoID = sb2_MON_PARM.Geo; btl_DATA2.height = 0; btl_DATA2.radius = 0; FF9Char ff9char = new FF9Char(); btl_init.InitBattleData(btl_DATA2, ff9char); btl_DATA2.bi.def_idle = 0; btl_DATA2.base_pos = enemy.base_pos; String path = (btl_DATA2.dms_geo_id == -1) ? String.Empty : FF9BattleDB.GEO.GetValue((Int32)btl_DATA2.dms_geo_id); if (!ModelFactory.IsUseAsEnemyCharacter(path)) { btl_DATA2.weapon_geo = (GameObject)null; } btl_DATA2.sa = btl_init.enemy_dummy_sa; FF9BattleDBHeightAndRadius.TryFindHeightAndRadius(geoID, ref btl_DATA2.height, ref btl_DATA2.radius); if (btl_DATA != null) { btl_DATA.next = btl_DATA2; } btl_DATA = btl_DATA2; i++; j++; } while (j < 8) { btlsys.btl_data[j].btl_id = 0; j++; } btl_DATA.next = (BTL_DATA)null; btlsys.btl_list.next = btlsys.btl_data[4]; btlsys.btl_load_status = (Byte)(btlsys.btl_load_status | 8); btl_init.SetupBattleEnemy(); btlseq.InitSequencer(); }
public static void SetEnemyCommandBySequence(ushort tar_id, uint cmd_no, uint sub_no) { FF9StateBattleSystem stateBattleSystem = FF9StateSystem.Battle.FF9Battle; BTL_DATA btl = btl_scrp.GetBtlDataPtr(16); BTL_DATA[] btlDataArray = stateBattleSystem.btl_data; SEQ_WORK_SET seqWorkSet = stateBattleSystem.seq_work_set; int num1 = Array.IndexOf(seqWorkSet.AnmOfsList.Distinct().ToArray(), seqWorkSet.AnmOfsList[sub_no]); for (int index = 0; index < btlDataArray.Length; ++index) { if (num1 == btlDataArray[index].typeNo) { btl = btlDataArray[index]; break; } } if (btl == null) { return; } if ((stateBattleSystem.cmd_status & 1) != 0 || Status.checkCurStat(btl, 33689859U)) { btl.sel_mode = 0; } else { CMD_DATA cmd; if ((int)cmd_no == 47) { if (stateBattleSystem.btl_phase != 4) { btl.sel_mode = 0; return; } cmd = btl.cmd[0]; if (Status.checkCurStat(btl, 1024U)) { tar_id = btl_util.GetRandomBtlID((uint)(Comn.random8() & 1)); sub_no = btl_util.getEnemyTypePtr(btl).p_atk_no; } else if (Status.checkCurStat(btl, 2048U)) { tar_id = btl_util.GetRandomBtlID(1U); sub_no = btl_util.getEnemyTypePtr(btl).p_atk_no; } } else if ((int)cmd_no == 53) { cmd = btl.cmd[1]; } else if ((int)cmd_no == 54) { cmd = btl.cmd[1]; } else { btl.sel_mode = 0; return; } cmd.aa = stateBattleSystem.enemy_attack[sub_no]; cmd.aa.Ref.prog_no = 26; cmd.tar_id = tar_id; cmd.cmd_no = (byte)cmd_no; cmd.sub_no = (byte)sub_no; cmd.info.cursor = cmd.aa.Info.cursor < 6 || cmd.aa.Info.cursor >= 13 ? (byte)0 : (byte)1; if (cmd_no > 48U) { cmd.info.priority = 1; } else { /*int num2 = (int)*/ btl_stat.RemoveStatus(cmd.regist, 32768U); } cmd.info.cover = 0; cmd.info.dodge = 0; cmd.info.reflec = 0; btl.bi.cmd_idle = 1; EnqueueCommand(cmd); } }
public static void SetupBattlePlayer() { BTL_SCENE btl_scene = FF9StateSystem.Battle.FF9Battle.btl_scene; Int16 num2; Int16 num = num2 = 0; while (num2 < 4) { if (FF9StateSystem.Common.FF9.party.member[(Int32)num2] != null) { num = (Int16)(num + 1); } num2 = (Int16)(num2 + 1); } Int16 num3 = 632; Int16 num4 = -1560; Int16 num5 = (Int16)((num - 1) * num3 / 2); Int16 num6 = (Int16)((btl_scene.Info.StartType != 0) ? 180 : 0); num2 = 0; BTL_DATA next = FF9StateSystem.Battle.FF9Battle.btl_list.next; while (num2 < num) { if (next.bi.player == 0) { break; } next.bi.row = FF9StateSystem.Common.FF9.player[(Int32)next.bi.slot_no].info.row; if (btl_scene.Info.StartType == 0) { BTL_INFO bi = next.bi; bi.row = (Byte)(bi.row ^ 1); } BTL_DATA btl_DATA = next; Int32 index = 0; Single num7 = (Single)num5; next.evt.posBattle[0] = num7; next.base_pos[0] = num7; btl_DATA.pos[index] = num7; BTL_DATA btl_DATA2 = next; Int32 index2 = 1; num7 = (Single)((!btl_stat.CheckStatus(next, 2097152u)) ? 0 : -200); next.evt.posBattle[1] = num7; next.base_pos[1] = num7; btl_DATA2.pos[index2] = num7; BTL_DATA btl_DATA3 = next; Int32 index3 = 2; num7 = (Single)(num4 + (Int16)((next.bi.row == 0) ? -400 : 0)); next.evt.posBattle[2] = num7; next.base_pos[2] = num7; btl_DATA3.pos[index3] = num7; next.rot = (next.evt.rotBattle = Quaternion.Euler(new Vector3(0f, (Single)num6, 180f))); next.gameObject.transform.localPosition = next.pos; next.gameObject.transform.localRotation = next.rot; Int16 serial_no = (Int16)FF9StateSystem.Common.FF9.player[(Int32)next.bi.slot_no].info.serial_no; next.shadow_bone[0] = btl_init.ShadowDataPC[(Int32)serial_no][0]; next.shadow_bone[1] = btl_init.ShadowDataPC[(Int32)serial_no][1]; btl_util.SetShadow(next, (UInt16)btl_init.ShadowDataPC[(Int32)serial_no][2], (UInt32)btl_init.ShadowDataPC[(Int32)serial_no][3]); GameObject gameObject = FF9StateSystem.Battle.FF9Battle.map.shadowArray[(Int32)next.bi.slot_no]; Vector3 localPosition = gameObject.transform.localPosition; localPosition.z = (Single)btl_init.ShadowDataPC[(Int32)serial_no][4]; gameObject.transform.localPosition = localPosition; num2 = (Int16)(num2 + 1); num5 = (Int16)(num5 - num3); next = next.next; } }
public static void SetEnemyCommand(ushort own_id, ushort tar_id, uint cmd_no, uint sub_no) { FF9StateBattleSystem stateBattleSystem = FF9StateSystem.Battle.FF9Battle; BTL_DATA btlDataPtr = btl_scrp.GetBtlDataPtr(own_id); if ((stateBattleSystem.cmd_status & 1) != 0 || Status.checkCurStat(btlDataPtr, 33689859U)) { btlDataPtr.sel_mode = 0; } else { CMD_DATA cmd; if ((int)cmd_no == 47) { if (stateBattleSystem.btl_phase != 4) { btlDataPtr.sel_mode = 0; return; } cmd = btlDataPtr.cmd[0]; if (Status.checkCurStat(btlDataPtr, 1024U)) { tar_id = btl_util.GetRandomBtlID((uint)(Comn.random8() & 1)); sub_no = btl_util.getEnemyTypePtr(btlDataPtr).p_atk_no; } else if (Status.checkCurStat(btlDataPtr, 2048U)) { tar_id = btl_util.GetRandomBtlID(1U); sub_no = btl_util.getEnemyTypePtr(btlDataPtr).p_atk_no; } } else if ((int)cmd_no == 53) { cmd = btlDataPtr.cmd[1]; } else if ((int)cmd_no == 54) { cmd = btlDataPtr.cmd[1]; } else { btlDataPtr.sel_mode = 0; return; } cmd.aa = stateBattleSystem.enemy_attack[sub_no]; cmd.tar_id = tar_id; cmd.cmd_no = (byte)cmd_no; cmd.sub_no = (byte)sub_no; cmd.info.cursor = cmd.aa.Info.cursor < 6 || cmd.aa.Info.cursor >= 13 ? (byte)0 : (byte)1; if (cmd_no > 48U) { cmd.info.priority = 1; } else { /*int num = (int)*/ btl_stat.RemoveStatus(cmd.regist, 32768U); } cmd.info.cover = 0; cmd.info.dodge = 0; cmd.info.reflec = 0; btlDataPtr.bi.cmd_idle = 1; EnqueueCommand(cmd); } }
public static void Sequencer() { btlseq.wSeqCode = 0; SEQ_WORK[] seqWork = btlseq.seq_work_set.SeqWork; for (Int32 i = 0; i < 4; i++) { if (seqWork[i].CmdPtr != null) { SEQ_WORK seq_WORK = seqWork[i]; seq_WORK.IncCnt = (Int16)(seq_WORK.IncCnt + 1); SEQ_WORK seq_WORK2 = seqWork[i]; seq_WORK2.DecCnt = (Int16)(seq_WORK2.DecCnt - 1); SEQ_WORK seq_WORK3 = seqWork[i]; seq_WORK3.AnmCnt = (Int16)(seq_WORK3.AnmCnt + 1); BTL_DATA regist = seqWork[i].CmdPtr.regist; Int32 num = 1; using (btlseq.sequenceReader = new BinaryReader(new MemoryStream(btlseq.data))) { while (num != 0) { btlseq.sequenceReader.BaseStream.Seek((Int64)(seqWork[i].CurPtr + 4), SeekOrigin.Begin); btlseq.wSeqCode = (Int32)btlseq.sequenceReader.ReadByte(); if (btlseq.wSeqCode > (Int32)btlseq.gSeqProg.Length) { btlseq.wSeqCode = 0; } if (seqWork[i].Flags.WaitLoadVfx && SFX.GetTaskMonsteraStartOK() != 0) { seqWork[i].Flags.DoneLoadVfx = true; seqWork[i].Flags.WaitLoadVfx = false; } if (seqWork[i].CurPtr != seqWork[i].OldPtr && btlseq.gSeqProg[btlseq.wSeqCode].Init != null) { btlseq.gSeqProg[btlseq.wSeqCode].Init(seqWork[i], regist); } seqWork[i].OldPtr = seqWork[i].CurPtr; num = btlseq.gSeqProg[btlseq.wSeqCode].Exec(seqWork[i], regist); } } if (seqWork[i].TurnTime != 0) { Vector3 eulerAngles = regist.rot.eulerAngles; eulerAngles.y = (Single)(seqWork[i].TurnOrg + seqWork[i].TurnRot * (Int16)seqWork[i].TurnCnt / (Int16)seqWork[i].TurnTime); regist.rot = Quaternion.Euler(eulerAngles); SEQ_WORK seq_WORK4 = seqWork[i]; Byte turnCnt; seq_WORK4.TurnCnt = (Byte)((turnCnt = seq_WORK4.TurnCnt) + 1); if (turnCnt >= seqWork[i].TurnTime) { seqWork[i].TurnTime = 0; } } if (seqWork[i].SfxTime != 0) { SEQ_WORK seq_WORK5 = seqWork[i]; if ((seq_WORK5.SfxTime = (Byte)(seq_WORK5.SfxTime - 1)) == 0) { btl_util.SetBattleSfx(regist, seqWork[i].SfxNum, seqWork[i].SfxVol); } } if (seqWork[i].SVfxTime != 0) { SEQ_WORK seq_WORK6 = seqWork[i]; if ((seq_WORK6.SVfxTime = (Byte)(seq_WORK6.SVfxTime - 1)) == 0) { Int16[] arg = new Int16[] { (Int16)seqWork[i].SVfxParam, 0, 0, 0 }; btl_vfx.SetBattleVfx(seqWork[i].CmdPtr, (UInt32)seqWork[i].SVfxNum, arg); } } if (seqWork[i].FadeTotal != 0) { SEQ_WORK seq_WORK7 = seqWork[i]; seq_WORK7.FadeStep = (Byte)(seq_WORK7.FadeStep - 1); btl_util.SetEnemyFadeToPacket(regist, (Int32)(seqWork[i].FadeStep * 32 / seqWork[i].FadeTotal)); if (seqWork[i].FadeStep == 0) { seqWork[i].FadeTotal = 0; } } } } }
public static void CommandEngine(FF9StateBattleSystem btlsys) { if (btlsys.cur_cmd == null) { if (btlsys.cmd_queue.next == null) { return; } CMD_DATA cmd = btlsys.cmd_queue.next; while (cmd != null && (cmd.cmd_no <= 59 && cmd.cmd_no != 56 && (cmd.cmd_no != 58 && Status.checkCurStat(cmd.regist, 33558531U)) || cmd.cmd_no == 57 && Status.checkCurStat(cmd.regist, 256U))) { cmd = cmd.next; } if (cmd == null || !FF9StateSystem.Battle.isDebug && !((BattleHUD)(object)UIManager.Battle).IsNativeEnableAtb() && cmd.cmd_no < 48) { return; } if (cmd.cmd_no < 55) { BTL_DATA btl = cmd.regist; if (cmd.cmd_no > 48 && cmd.cmd_no < 53) { btl_mot.setMotion(btl, 9); btl.evt.animFrame = 0; } if (btl.bi.player != 0 && !btl_mot.checkMotion(btl, 9) && (!btl_mot.checkMotion(btl, 17) && !Status.checkCurStat(btl, 1073741824U))) { if (!btl_mot.checkMotion(btl, btl.bi.def_idle) || btl.bi.cmd_idle != 0) { return; } btl_mot.setMotion(btl, 9); btl.evt.animFrame = 0; return; } if (Status.checkCurStat(btl, 16777216U)) { /*int num = (int)*/ btl_stat.AlterStatus(btl, 256U); return; } } btlsys.cur_cmd = cmd; KillCommand(cmd); } CMD_DATA cmd1 = btlsys.cur_cmd; if (cmd1 == null) { return; } BTL_DATA btl1 = cmd1.regist; switch (btlsys.cmd_mode) { case 0: if (!CheckCommandCondition(btlsys, cmd1) || !CheckTargetCondition(btlsys, cmd1) || !CheckMpCondition(cmd1)) { ResetItemCount(cmd1); if (btl1 != null && btl1.bi.player != 0 && btl_mot.checkMotion(btl1, 9)) { btl_mot.setMotion(btl1, 32); } btlsys.cmd_mode = 3; break; } if (btl1 != null && !btl_mot.checkMotion(btl1, 9) && cmd1.cmd_no < 47) { btl_mot.setMotion(btl1, 9); btl1.evt.animFrame = 0; } ++btlsys.cmd_mode; break; case 1: btl_vfx.SelectCommandVfx(cmd1); ++btlsys.cmd_mode; break; case 2: if (btl1.bi.player != 0 || cmd1.info.mon_reflec != 0) { CheckCommandLoop(cmd1); } break; case 3: if (cmd1.cmd_no != 56) { ReqFinishCommand(); break; } FinishCommand(btlsys); break; } if (!btl_mot.ControlDamageMotion(cmd1) || btlsys.cmd_mode != 4) { return; } FinishCommand(btlsys); }
public static void SeqInitWait(SEQ_WORK pSeqWork, BTL_DATA pMe) { btlseq.BattleLog("SeqInitWait"); pSeqWork.DecCnt = (Int16)btlseq.sequenceReader.ReadByte(); }
public static void SetBattleData(UInt32 id, Int32 val) { FF9StateBattleSystem ff9Battle = FF9StateSystem.Battle.FF9Battle; FF9StateGlobal ff = FF9StateSystem.Common.FF9; switch (id) { case 32u: UIManager.Battle.FF9BMenu_EnableMenu(false); ff9Battle.btl_escape_key = 0; ff9Battle.cmd_status = (UInt16)(ff9Battle.cmd_status & -2); ff9Battle.btl_phase = 5; ff9Battle.btl_seq = 2; btl_cmd.KillAllCommand(ff9Battle); for (BTL_DATA next = ff9Battle.btl_list.next; next != null; next = next.next) { next.bi.cmd_idle = 0; } break; case 33u: if (ff9Battle.btl_phase == 1) { ff.btl_result = (Byte)val; if (val == 1 && ff9Battle.btl_scene.Info.WinPose != 0) { ff9Battle.btl_phase = 5; ff9Battle.btl_seq = 4; } else { if (ff.btl_result == 1) { ff.btl_result = 2; } ff9Battle.btl_phase = 8; ff9Battle.btl_seq = 0; } } break; case 34u: if (ff9Battle.btl_phase == 1) { ff9Battle.btl_phase = 7; ff9Battle.btl_seq = 0; ff.btl_result = 3; } break; case 35u: if (ff9Battle.btl_phase == 1) { BTL_SCENE_INFO info = ff9Battle.btl_scene.Info; ff9Battle.btl_phase = 3; ff9Battle.btl_seq = 0; if (info.SpecialStart == 0 || info.BackAttack == 0) { info.StartType = 2; } } break; case 36u: if (ff9Battle.btl_phase == 1) { SFX.SetCamera(val); } break; case 37u: { FF9StateGlobal ff9StateGlobal = ff; ff9StateGlobal.btl_flag = (Byte)(ff9StateGlobal.btl_flag | 1); PersistenSingleton <EventEngine> .Instance.SetNextMap(val); break; } case 38u: ff.party.gil += (UInt32)val; if (ff.party.gil > 9999999u) { ff.party.gil = 9999999u; } break; case 39u: if (ff.dragon_no < 9999) { FF9StateGlobal ff9StateGlobal2 = ff; ff9StateGlobal2.dragon_no = (Int16)(ff9StateGlobal2.dragon_no + 1); } break; case 40u: { btlsnd.ff9btlsnd_song_vol_intplall(30, 0); FF9StateGlobal ff2 = FF9StateSystem.Common.FF9; ff2.btl_flag = (Byte)(ff2.btl_flag | 16); break; } } }