public static Int32 SeqExecWaitAnim(SEQ_WORK pSeqWork, BTL_DATA pMe) { btlseq.BattleLog("SeqExecWaitAnim"); if (pSeqWork.AnmCnt != 0 && ((UInt16)pMe.evt.animFrame >= GeoAnim.geoAnimGetNumFrames(pMe) || (pMe.stat.cur & 33558530u) != 0u)) { SFX.SetEffCamTrigger(); pSeqWork.CurPtr++; return(1); } return(0); }
private static Boolean BattleIdleLoop(FF9StateGlobal sys, FF9StateBattleSystem btlsys) { //uint id = sys.id; Boolean flag = true; foreach (BattleUnit next in FF9StateSystem.Battle.FF9Battle.EnumerateBattleUnits()) { BTL_DATA data = next.Data; if (data.bi.disappear == 0) { btlseq.DispCharacter(data); if (btlsys.btl_phase == 3) { data.bi.stop_anim = 0; if (data.evt.animFrame >= GeoAnim.geoAnimGetNumFrames(data)) { if (!next.IsUnderStatus(BattleStatus.Death)) { btl_mot.setMotion(next, data.bi.def_idle); } data.evt.animFrame = 0; } if (!next.IsUnderStatus(BattleStatus.Petrify) && !btl_mot.checkMotion(data, data.bi.def_idle) && !btl_mot.checkMotion(data, 4)) { flag = false; } } else if (btlsys.btl_phase == 6 && next.IsPlayer && !next.IsUnderStatus((BattleStatus)4355U) && btlsys.btl_scene.Info.WinPose != 0 && (next.Player.Data.info.win_pose != 0 && data.evt.animFrame >= GeoAnim.geoAnimGetNumFrames(data))) { btl_mot.setMotion(next, 19); data.evt.animFrame = 0; } btl_stat.SetStatusVfx(next); } btl_mot.DieSequence(data); } if (btlsys.btl_phase == 7 && btlsys.btl_scene.Info.NoGameOver == 0 && !btl_util.ManageBattleSong(sys, 30U, 6U)) { flag = false; } battle.BattleSubSystem(sys, btlsys); return(flag); }
private static Boolean BattleIdleLoop(FF9StateGlobal sys, FF9StateBattleSystem btlsys) { //uint id = sys.id; Boolean flag = true; for (BTL_DATA next = btlsys.btl_list.next; next != null; next = next.next) { if (next.bi.disappear == 0) { btlseq.DispCharacter(next); if (btlsys.btl_phase == 3) { next.bi.stop_anim = 0; if (next.evt.animFrame >= GeoAnim.geoAnimGetNumFrames(next)) { if (!Status.checkCurStat(next, 256U)) { btl_mot.setMotion(next, next.bi.def_idle); } next.evt.animFrame = 0; } if (!Status.checkCurStat(next, 1U) && !btl_mot.checkMotion(next, next.bi.def_idle) && !btl_mot.checkMotion(next, 4)) { flag = false; } } else if (btlsys.btl_phase == 6 && next.bi.player != 0 && (!Status.checkCurStat(next, 4355U) && btlsys.btl_scene.Info.WinPose != 0) && (btl_util.getPlayerPtr(next).info.win_pose != 0 && next.evt.animFrame >= GeoAnim.geoAnimGetNumFrames(next))) { btl_mot.setMotion(next, 19); next.evt.animFrame = 0; } btl_stat.SetStatusVfx(next); } btl_mot.DieSequence(next); } if (btlsys.btl_phase == 7 && btlsys.btl_scene.Info.NoGameOver == 0 && !btl_util.ManageBattleSong(sys, 30U, 6U)) { flag = false; } battle.BattleSubSystem(sys, btlsys); return(flag); }
public static void OrganizeEnemyData(FF9StateBattleSystem btlsys) { for (Int32 i = 0; i < BTL_SCENE.GetMonCount(); i++) { ENEMY_TYPE et = btlsys.enemy[i].et; BTL_DATA btl_DATA = btlsys.btl_data[4 + i]; btl_DATA.level = et.level; btl_DATA.max.at = (Int16)((60 - btl_DATA.elem.dex) * 40 << 2); btl_para.InitATB(btl_DATA); btl_DATA.cur.at = (Int16)(Comn.random16() % (Int32)btl_DATA.max.at); btl_DATA.weapon = (ItemAttack)null; btl_stat.InitCountDownStatus(btl_DATA); btl_mot.HideMesh(btl_DATA, btl_DATA.mesh_current, false); if (btl_DATA.bi.slave != 0) { btl_DATA.cur.at = 0; btl_DATA.cur.at_coef = 0; btl_DATA.gameObject.transform.localRotation = btl_DATA.rot; btl_DATA.gameObject.transform.localPosition = btl_DATA.evt.posBattle; btl_DATA.currentAnimationName = btl_DATA.mot[(Int32)btl_DATA.bi.def_idle]; btl_mot.setMotion(btl_DATA, btl_DATA.currentAnimationName); btl_mot.setSlavePos(btl_DATA, ref btl_DATA.base_pos); UnityEngine.Object.Destroy(btl_DATA.gameObject); UnityEngine.Object.Destroy(btl_DATA.getShadow()); btl_DATA.gameObject = btl_util.GetMasterEnemyBtlPtr().Data.gameObject; } else { btl_DATA.base_pos[0] = btl_DATA.evt.posBattle[0]; btl_DATA.base_pos[1] = btl_DATA.evt.posBattle[1]; btl_DATA.base_pos[2] = btl_DATA.evt.posBattle[2]; btl_DATA.currentAnimationName = btl_DATA.mot[(Int32)btl_DATA.bi.def_idle]; btl_DATA.evt.animFrame = (Byte)(Comn.random8() % (Int32)GeoAnim.geoAnimGetNumFrames(btl_DATA)); } } }
private static Int32 SeqExecEnd(SEQ_WORK pSeqWork, BTL_DATA pMe) { btlseq.BattleLog("SeqExecEnd!!!!!!!!!!!!"); if (!pSeqWork.Flags.FinishIdle && pSeqWork.AnmCnt != 0 && (UInt16)pMe.evt.animFrame >= GeoAnim.geoAnimGetNumFrames(pMe)) { btl_mot.setMotion(pMe, pMe.bi.def_idle); pMe.evt.animFrame = 0; pSeqWork.Flags.FinishIdle = true; } if ((pMe.stat.cur & 33558530u) == 0u && !pSeqWork.Flags.FinishIdle) { return(0); } if (SFX.isRunning) { return(0); } if (pSeqWork.TurnTime != 0) { return(0); } if (UIManager.Battle.BtlWorkLibra) { return(0); } if (!pSeqWork.Flags.EventMode) { btl_cmd.ReqFinishCommand(); } pSeqWork.CmdPtr = (CMD_DATA)null; if (FF9StateSystem.Battle.isDebug) { pMe.pos = (pMe.base_pos = pMe.original_pos); pMe.gameObject.transform.localPosition = pMe.pos; } return(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 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); } } }