Ejemplo n.º 1
0
 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);
 }
Ejemplo n.º 2
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);
    }
Ejemplo n.º 3
0
    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);
    }
Ejemplo n.º 4
0
 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));
         }
     }
 }
Ejemplo n.º 5
0
 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);
 }
Ejemplo n.º 6
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);
    }
Ejemplo n.º 7
0
 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);
         }
     }
 }