Exemplo n.º 1
0
    public static void UpdateEndBattleAchievement()
    {
        Int32       battleMapIndex = FF9StateSystem.Battle.battleMapIndex;
        BTL_SCENE   btl_scene      = FF9StateSystem.Battle.FF9Battle.btl_scene;
        SB2_PATTERN sb2_PATTERN    = btl_scene.PatAddr[(Int32)FF9StateSystem.Battle.FF9Battle.btl_scene.PatNum];

        BattleAchievement.IncreseNumber(ref BattleAchievement.achievement.enemy_no, (Int32)sb2_PATTERN.MonCount);
        AchievementManager.ReportAchievement(AcheivementKey.Defeat100, BattleAchievement.achievement.enemy_no);
        AchievementManager.ReportAchievement(AcheivementKey.Defeat1000, BattleAchievement.achievement.enemy_no);
        AchievementManager.ReportAchievement(AcheivementKey.Defeat10000, BattleAchievement.achievement.enemy_no);
        if (battleMapIndex == 932)
        {
            AchievementManager.ReportAchievement(AcheivementKey.DefeatMaliris, 1);
        }
        else if (battleMapIndex == 933)
        {
            AchievementManager.ReportAchievement(AcheivementKey.DefeatTiamat, 1);
        }
        else if (battleMapIndex == 934)
        {
            AchievementManager.ReportAchievement(AcheivementKey.DefeatKraken, 1);
        }
        else if (battleMapIndex == 935)
        {
            AchievementManager.ReportAchievement(AcheivementKey.DefeatLich, 1);
        }
        else if (battleMapIndex == 211 || battleMapIndex == 57)
        {
            AchievementManager.ReportAchievement(AcheivementKey.DefeatOzma, 1);
        }
        else if (battleMapIndex == 634 || battleMapIndex == 627 || battleMapIndex == 755 || battleMapIndex == 753)
        {
            Int32 varManually = PersistenSingleton <EventEngine> .Instance.eBin.getVarManually(50900);

            Int32 num  = varManually >> 3 & 31;
            Int32 num2 = num * 100 / 16;
            if (num2 >= 100)
            {
                AchievementManager.ReportAchievement(AcheivementKey.AllOX, 1);
            }
        }
        else if (battleMapIndex == 920 || battleMapIndex == 921)
        {
            Int32 varManually2 = PersistenSingleton <EventEngine> .Instance.eBin.getVarManually(405732);

            if (varManually2 == 1)
            {
                AchievementManager.ReportAchievement(AcheivementKey.YanBlessing, 1);
            }
        }
        else if (battleMapIndex == 339 && BattleAchievement.IsChallengingPlayerIsGarnet())
        {
            AchievementManager.ReportAchievement(AcheivementKey.DefeatBehemoth, 1);
        }
    }
Exemplo n.º 2
0
    public static void SetupBattleEnemy()
    {
        SB2_PATTERN[] patAddr   = FF9StateSystem.Battle.FF9Battle.btl_scene.PatAddr;
        SB2_HEAD      header    = FF9StateSystem.Battle.FF9Battle.btl_scene.header;
        BTL_SCENE     btl_scene = FF9StateSystem.Battle.FF9Battle.btl_scene;

        if (FF9StateSystem.Battle.isDebug)
        {
            btl_scene.Info.StartType = FF9StateSystem.Battle.debugStartType;
        }
        else
        {
            btl_scene.Info.StartType = btl_sys.StartType(btl_scene.Info);
        }
        SB2_MON_PARM[] monAddr = FF9StateSystem.Battle.FF9Battle.btl_scene.MonAddr;
        AA_DATA[]      atk     = FF9StateSystem.Battle.FF9Battle.btl_scene.atk;
        Int16          num     = (Int16)(header.TypCount + header.AtkCount);
        UInt16         num2    = 0;

        SB2_MON_PARM[] array      = monAddr;
        ENEMY_TYPE[]   enemy_type = FF9StateSystem.Battle.FF9Battle.enemy_type;
        Int16          num3;

        for (num3 = 0; num3 < (Int16)header.TypCount; num3 = (Int16)(num3 + 1))
        {
            btl_init.SetMonsterParameter(array[(Int32)num3], ref enemy_type[(Int32)num3]);
            enemy_type[(Int32)num3].name = FF9TextTool.BattleText((Int32)num2);
            enemy_type[(Int32)num3].mes  = (Byte)num;
            num  = (Int16)(num + (Int16)array[(Int32)num3].MesCnt);
            num2 = (UInt16)(num2 + 1);
        }
        AA_DATA[] array2       = atk;
        AA_DATA[] enemy_attack = FF9StateSystem.Battle.FF9Battle.enemy_attack;
        for (num3 = 0; num3 < (Int16)header.AtkCount; num3 = (Int16)(num3 + 1))
        {
            btl_init.SetAttackData(ref array2[(Int32)num3], ref enemy_attack[(Int32)num3]);
            enemy_attack[(Int32)num3].Name = FF9TextTool.BattleText((Int32)num2);
            num2 = (UInt16)(num2 + 1);
        }
        BTL_DATA    next        = FF9StateSystem.Battle.FF9Battle.btl_list.next;
        SB2_PATTERN sb2_PATTERN = patAddr[(Int32)FF9StateSystem.Battle.FF9Battle.btl_scene.PatNum];

        num3 = 0;
        while (num3 < (Int16)sb2_PATTERN.MonCount && next != null)
        {
            btl_init.PutMonster(sb2_PATTERN.Put[(Int32)num3], next, btl_scene, num3);
            btl_init.SetMonsterData(monAddr[(Int32)sb2_PATTERN.Put[(Int32)num3].TypeNo], next, num3);
            num3 = (Int16)(num3 + 1);
            next = next.next;
        }
    }
Exemplo n.º 3
0
    private void CreateBattleData(FF9StateGlobal FF9)
    {
        BTL_DATA[] btlDataArray = btlseq.btl_list = FF9StateSystem.Battle.FF9Battle.btl_data;
        Int32      index1       = 0;

        for (Int32 index2 = index1; index2 < 4; ++index2)
        {
            btlDataArray[index2] = new BTL_DATA();
            if (FF9.party.member[index2] != null)
            {
                Byte num = FF9.party.member[index2].info.serial_no;
                BattlePlayerCharacter.CreatePlayer(btlDataArray[index1], (BattlePlayerCharacter.PlayerSerialNumber)num);
                Int32       length     = 0;
                IEnumerator enumerator = btlDataArray[index1].gameObject.transform.GetEnumerator();
                try
                {
                    while (enumerator.MoveNext())
                    {
                        if ((enumerator.Current as UnityEngine.Object)?.name.Contains("mesh") == true)
                        {
                            ++length;
                        }
                    }
                }
                finally
                {
                    IDisposable disposable = enumerator as IDisposable;
                    disposable?.Dispose();
                }
                btlDataArray[index1].meshIsRendering = new Boolean[length];
                for (Int32 index3 = 0; index3 < length; ++index3)
                {
                    btlDataArray[index1].meshIsRendering[index3] = true;
                }
                btlDataArray[index1].meshCount = length;
                btlDataArray[index1].animation = btlDataArray[index1].gameObject.GetComponent <Animation>();
                ++index1;
            }
            btlDataArray[index2].typeNo            = 5;
            btlDataArray[index2].idleAnimationName = this.animationName[index2];
        }
        for (Int32 index2 = 4; index2 < 4 + (Int32)this.btlScene.PatAddr[FF9StateSystem.Battle.FF9Battle.btl_scene.PatNum].MonCount; ++index2)
        {
            SB2_PATTERN  sb2Pattern = this.btlScene.PatAddr[FF9StateSystem.Battle.FF9Battle.btl_scene.PatNum];
            Byte         num        = sb2Pattern.Put[index2 - 4].TypeNo;
            SB2_MON_PARM sb2MonParm = this.btlScene.MonAddr[num];
            String       path       = FF9BattleDB.GEO.GetValue(sb2MonParm.Geo);
            //var vector3 = new Vector3(sb2Pattern.Put[index2 - 4].Xpos, sb2Pattern.Put[index2 - 4].Ypos * -1, sb2Pattern.Put[index2 - 4].Zpos);
            btlDataArray[index2] = new BTL_DATA {
                gameObject = ModelFactory.CreateModel(path, true)
            };
            if (ModelFactory.IsUseAsEnemyCharacter(path))
            {
                if (path.Contains("GEO_MON_B3_168"))
                {
                    btlDataArray[index2].gameObject.transform.FindChild("mesh5").gameObject.SetActive(false);
                }
                btlDataArray[index2].weapon_geo = ModelFactory.CreateDefaultWeaponForCharacterWhenUseAsEnemy(path);
                MeshRenderer[] componentsInChildren = btlDataArray[index2].weapon_geo.GetComponentsInChildren <MeshRenderer>();
                btlDataArray[index2].weaponMeshCount = componentsInChildren.Length;
                btlDataArray[index2].weaponRenderer  = new Renderer[btlDataArray[index2].weaponMeshCount];
                for (Int32 index3 = 0; index3 < btlDataArray[index2].weaponMeshCount; ++index3)
                {
                    btlDataArray[index2].weaponRenderer[index3] = componentsInChildren[index3].GetComponent <Renderer>();
                }
                geo.geoAttach(btlDataArray[index2].weapon_geo, btlDataArray[index2].gameObject, ModelFactory.GetDefaultWeaponBoneIdForCharacterWhenUseAsEnemy(path));
            }
            Int32       length     = 0;
            IEnumerator enumerator = btlDataArray[index2].gameObject.transform.GetEnumerator();
            try
            {
                while (enumerator.MoveNext())
                {
                    if ((enumerator.Current as UnityEngine.Object)?.name.Contains("mesh") == true)
                    {
                        ++length;
                    }
                }
            }
            finally
            {
                IDisposable disposable = enumerator as IDisposable;
                disposable?.Dispose();
            }
            btlDataArray[index2].meshIsRendering = new Boolean[length];
            for (Int32 index3 = 0; index3 < length; ++index3)
            {
                btlDataArray[index2].meshIsRendering[index3] = true;
            }
            btlDataArray[index2].meshCount         = length;
            btlDataArray[index2].animation         = btlDataArray[index2].gameObject.GetComponent <Animation>();
            btlDataArray[index2].animation         = btlDataArray[index2].gameObject.GetComponent <Animation>();
            btlDataArray[index2].typeNo            = num;
            btlDataArray[index2].idleAnimationName = this.animationName[index2];
        }
    }
Exemplo n.º 4
0
    public void InitBattleScene()
    {
        FF9StateGlobal FF9 = FF9StateSystem.Common.FF9;

        FF9.charArray.Clear();
        this.btlScene = FF9StateSystem.Battle.FF9Battle.btl_scene = new BTL_SCENE();
        Debug.Log("battleID = " + FF9StateSystem.Battle.battleMapIndex);
        Dictionary <String, Int32> source = FF9BattleDB.SceneData;

        battleSceneName = source.FirstOrDefault(p => p.Value == FF9StateSystem.Battle.battleMapIndex).Key;
        battleSceneName = battleSceneName.Substring(4);
        Debug.Log("battleSceneName = " + battleSceneName);
        this.btlScene.ReadBattleScene(battleSceneName);
        this.StartCoroutine(PersistenSingleton <FF9TextTool> .Instance.UpdateBattleText(FF9BattleDB.SceneData["BSC_" + battleSceneName]));
        WMProfiler.Begin("Start Load Text");
        String battleModelPath = FF9BattleDB.MapModel["BSC_" + battleSceneName];

        FF9StateSystem.Battle.FF9Battle.map.btlBGPtr     = ModelFactory.CreateModel("BattleMap/BattleModel/battleMap_all/" + battleModelPath + "/" + battleModelPath, Vector3.zero, Vector3.zero, true);
        FF9StateSystem.Battle.FF9Battle.btl_scene.PatNum = FF9StateSystem.Battle.isDebug ? FF9StateSystem.Battle.patternIndex : (Byte)this.ChoicePattern();
        this.btlSeq = new btlseq();
        this.btlSeq.ReadBattleSequence(battleSceneName);
        BeginInitialize();
        battle.InitBattle();
        EndInitialize();
        if (!FF9StateSystem.Battle.isDebug)
        {
            String            ebFileName        = "EVT_BATTLE_" + battleSceneName;
            FF9StateBattleMap ff9StateBattleMap = FF9StateSystem.Battle.FF9Battle.map;
            ff9StateBattleMap.evtPtr = EventEngineUtils.loadEventData(ebFileName, "Battle/");
            PersistenSingleton <EventEngine> .Instance.StartEvents(ff9StateBattleMap.evtPtr);

            PersistenSingleton <EventEngine> .Instance.eTb.InitMessage();
        }
        this.CreateBattleData(FF9);
        if (battleSceneName == "EF_E006" || battleSceneName == "EF_E007")
        {
            BTL_DATA btlData1 = FF9StateSystem.Battle.FF9Battle.btl_data[4];
            BTL_DATA btlData2 = FF9StateSystem.Battle.FF9Battle.btl_data[5];
            this.GeoBattleAttach(btlData2.gameObject, btlData1.gameObject, 55);
            btlData2.attachOffset = 100;
        }
        FF9StateBattleSystem stateBattleSystem = FF9StateSystem.Battle.FF9Battle;
        GEOTEXHEADER         geotexheader      = new GEOTEXHEADER();

        geotexheader.ReadBGTextureAnim(battleModelPath);
        stateBattleSystem.map.btlBGTexAnimPtr = geotexheader;
        BBGINFO bbginfo = new BBGINFO();

        bbginfo.ReadBattleInfo(battleModelPath);
        FF9StateSystem.Battle.FF9Battle.map.btlBGInfoPtr = bbginfo;
        btlshadow.ff9battleShadowInit(13);
        battle.InitBattleMap();
        this.seqList = new List <Int32>();
        SB2_PATTERN sb2Pattern = this.btlScene.PatAddr[FF9StateSystem.Battle.FF9Battle.btl_scene.PatNum];

        Int32[] numArray = new Int32[sb2Pattern.MonCount];
        for (Int32 index = 0; index < (Int32)sb2Pattern.MonCount; ++index)
        {
            numArray[index] = sb2Pattern.Put[index].TypeNo;
        }
        foreach (Int32 num in numArray.Distinct().ToArray())
        {
            for (Int32 index1 = 0; index1 < this.btlSeq.sequenceProperty.Length; ++index1)
            {
                SequenceProperty sequenceProperty = this.btlSeq.sequenceProperty[index1];
                if (sequenceProperty.Montype == num)
                {
                    for (Int32 index2 = 0; index2 < sequenceProperty.PlayableSequence.Count; ++index2)
                    {
                        this.seqList.Add(sequenceProperty.PlayableSequence[index2]);
                    }
                }
            }
        }
        this.btlIDList          = FF9StateSystem.Battle.FF9Battle.seq_work_set.AnmOfsList.Distinct().ToArray();
        this.battleState        = BattleState.PlayerTurn;
        playerEnterCommand      = false;
        this.playerCastingSkill = false;
        this.enemyEnterCommand  = false;
    }
Exemplo n.º 5
0
    public void InitBattleScene()
    {
        FF9StateGlobal ff = FF9StateSystem.Common.FF9;

        ff.charArray.Clear();
        this.btlScene = (FF9StateSystem.Battle.FF9Battle.btl_scene = new BTL_SCENE());
        global::Debug.Log("battleID = " + FF9StateSystem.Battle.battleMapIndex);
        HonoluluBattleMain.battleSceneName = FF9BattleDB.SceneData.FirstOrDefault((KeyValuePair <string, int> x) => x.Value == FF9StateSystem.Battle.battleMapIndex).Key;
        HonoluluBattleMain.battleSceneName = HonoluluBattleMain.battleSceneName.Substring(4);
        global::Debug.Log("battleSceneName = " + HonoluluBattleMain.battleSceneName);
        this.btlScene.ReadBattleScene(HonoluluBattleMain.battleSceneName);
        base.StartCoroutine(PersistenSingleton <FF9TextTool> .Instance.UpdateBattleText(FF9BattleDB.SceneData["BSC_" + HonoluluBattleMain.battleSceneName]));
        WMProfiler.Begin("Start Load Text");
        string text = FF9BattleDB.MapModel["BSC_" + HonoluluBattleMain.battleSceneName];
        string path = "BattleMap/BattleModel/battleMap_all/" + text + "/" + text;

        FF9StateSystem.Battle.FF9Battle.map.btlBGPtr = ModelFactory.CreateModel(path, Vector3.zero, Vector3.zero, true);
        checked {
            if (!FF9StateSystem.Battle.isDebug)
            {
                FF9StateSystem.Battle.FF9Battle.btl_scene.PatNum = (byte)this.ChoicePattern();
            }
            else
            {
                FF9StateSystem.Battle.FF9Battle.btl_scene.PatNum = FF9StateSystem.Battle.patternIndex;
            }
            this.btlSeq = new btlseq();
            this.btlSeq.ReadBattleSequence(HonoluluBattleMain.battleSceneName);
            FF9StateSystem.Battle.FF9Battle.attr = 0;
            battle.InitBattle();
            FF9StateBattleSystem ff9Battle = FF9StateSystem.Battle.FF9Battle;
            ff9Battle.attr |= 1;
            if (!FF9StateSystem.Battle.isDebug)
            {
                string            ebFileName = "EVT_BATTLE_" + HonoluluBattleMain.battleSceneName;
                FF9StateBattleMap map        = FF9StateSystem.Battle.FF9Battle.map;
                map.evtPtr = EventEngineUtils.loadEventData(ebFileName, EventEngineUtils.ebSubFolderBattle);
                PersistenSingleton <EventEngine> .Instance.StartEvents(map.evtPtr);

                PersistenSingleton <EventEngine> .Instance.eTb.InitMessage();
            }
            this.CreateBattleData(ff);
            if (HonoluluBattleMain.battleSceneName == "EF_E006" || HonoluluBattleMain.battleSceneName == "EF_E007")
            {
                BTL_DATA btl_DATA  = FF9StateSystem.Battle.FF9Battle.btl_data[4];
                BTL_DATA btl_DATA2 = FF9StateSystem.Battle.FF9Battle.btl_data[5];
                this.GeoBattleAttach(btl_DATA2.gameObject, btl_DATA.gameObject, 55);
                btl_DATA2.attachOffset = 100;
            }
            FF9StateBattleSystem ff9Battle2   = FF9StateSystem.Battle.FF9Battle;
            GEOTEXHEADER         geotexheader = new GEOTEXHEADER();
            geotexheader.ReadBGTextureAnim(text);
            ff9Battle2.map.btlBGTexAnimPtr = geotexheader;
            BBGINFO bbginfo = new BBGINFO();
            bbginfo.ReadBattleInfo(text);
            FF9StateSystem.Battle.FF9Battle.map.btlBGInfoPtr = bbginfo;
            btlshadow.ff9battleShadowInit(13);
            battle.InitBattleMap();
            this.seqList = new List <int> ();
            SB2_PATTERN sb2_PATTERN = this.btlScene.PatAddr[(int)FF9StateSystem.Battle.FF9Battle.btl_scene.PatNum];
            int[]       array       = new int[(int)sb2_PATTERN.MonCount];
            for (int i = 0; i < (int)sb2_PATTERN.MonCount; i++)
            {
                array[i] = (int)sb2_PATTERN.Put[i].TypeNo;
            }
            array = array.Distinct <int> ().ToArray <int> ();
            for (int j = 0; j < array.Length; j++)
            {
                for (int k = 0; k < this.btlSeq.sequenceProperty.Length; k++)
                {
                    SequenceProperty sequenceProperty = this.btlSeq.sequenceProperty[k];
                    if (sequenceProperty.Montype == array[j])
                    {
                        for (int l = 0; l < sequenceProperty.PlayableSequence.Count; l++)
                        {
                            this.seqList.Add(sequenceProperty.PlayableSequence[l]);
                        }
                    }
                }
            }
            this.btlIDList   = FF9StateSystem.Battle.FF9Battle.seq_work_set.AnmOfsList.Distinct <byte> ().ToArray <byte> ();
            this.battleState = HonoluluBattleMain.BattleState.PlayerTurn;
            HonoluluBattleMain.playerEnterCommand = false;
            this.playerCastingSkill = false;
            this.enemyEnterCommand  = false;
        }
    }
Exemplo n.º 6
0
    private void CreateBattleData(FF9StateGlobal FF9)
    {
        BTL_DATA[] array = btlseq.btl_list = FF9StateSystem.Battle.FF9Battle.btl_data;
        int        num   = 0;

        checked {
            for (int i = num; i < 4; i++)
            {
                array[i] = new BTL_DATA();
                if (FF9.party.member[i] != null)
                {
                    byte serial_no = FF9.party.member[i].info.serial_no;
                    BattlePlayerCharacter.CreatePlayer(array[num], (BattlePlayerCharacter.PlayerSerialNumber)serial_no);
                    int num2 = 0;
                    using (IEnumerator enumerator = array[num].gameObject.transform.GetEnumerator()) {
                        while (enumerator.MoveNext())
                        {
                            if (((Transform)enumerator.Current).name.Contains("mesh"))
                            {
                                num2++;
                            }
                        }
                    }
                    array[num].meshIsRendering = new bool[num2];
                    for (int j = 0; j < num2; j++)
                    {
                        array[num].meshIsRendering[j] = true;
                    }
                    array[num].meshCount = num2;
                    array[num].animation = array[num].gameObject.GetComponent <Animation> ();
                    num++;
                }
                array[i].typeNo            = 5;
                array[i].idleAnimationName = this.animationName[i];
            }
            for (int k = 4; k < (int)(4 + this.btlScene.PatAddr[(int)FF9StateSystem.Battle.FF9Battle.btl_scene.PatNum].MonCount); k++)
            {
                SB2_PATTERN  sb2_PATTERN  = this.btlScene.PatAddr[(int)FF9StateSystem.Battle.FF9Battle.btl_scene.PatNum];
                byte         typeNo       = sb2_PATTERN.Put[k - 4].TypeNo;
                SB2_MON_PARM sb2_MON_PARM = this.btlScene.MonAddr[(int)typeNo];
                string       text         = FF9BattleDB.GEO[(int)sb2_MON_PARM.Geo];
                new Vector3((float)sb2_PATTERN.Put[k - 4].Xpos, (float)(sb2_PATTERN.Put[k - 4].Ypos * -1), (float)sb2_PATTERN.Put[k - 4].Zpos);
                array[k]            = new BTL_DATA();
                array[k].gameObject = ModelFactory.CreateModel(text, true);
                if (ModelFactory.IsUseAsEnemyCharacter(text))
                {
                    if (text.Contains("GEO_MON_B3_168"))
                    {
                        array[k].gameObject.transform.FindChild("mesh5").gameObject.SetActive(false);
                    }
                    array[k].weapon_geo = ModelFactory.CreateDefaultWeaponForCharacterWhenUseAsEnemy(text);
                    MeshRenderer[] componentsInChildren = array[k].weapon_geo.GetComponentsInChildren <MeshRenderer> ();
                    array[k].weaponMeshCount = componentsInChildren.Length;
                    array[k].weaponRenderer  = new Renderer[array[k].weaponMeshCount];
                    for (int l = 0; l < array[k].weaponMeshCount; l++)
                    {
                        array[k].weaponRenderer[l] = componentsInChildren[l].GetComponent <Renderer> ();
                    }
                    geo.geoAttach(array[k].weapon_geo, array[k].gameObject, ModelFactory.GetDefaultWeaponBoneIdForCharacterWhenUseAsEnemy(text));
                }
                int num3 = 0;
                using (IEnumerator enumerator = array[k].gameObject.transform.GetEnumerator()) {
                    while (enumerator.MoveNext())
                    {
                        if (((Transform)enumerator.Current).name.Contains("mesh"))
                        {
                            num3++;
                        }
                    }
                }
                array[k].meshIsRendering = new bool[num3];
                for (int m = 0; m < num3; m++)
                {
                    array[k].meshIsRendering[m] = true;
                }
                array[k].meshCount         = num3;
                array[k].animation         = array[k].gameObject.GetComponent <Animation> ();
                array[k].animation         = array[k].gameObject.GetComponent <Animation> ();
                array[k].typeNo            = typeNo;
                array[k].idleAnimationName = this.animationName[k];
            }
        }
    }
Exemplo n.º 7
0
    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();
    }
Exemplo n.º 8
0
    public void ReadBattleScene(String name)
    {
        name        = "EVT_BATTLE_" + name;
        this.header = new SB2_HEAD();
        TextAsset textAsset = AssetManager.Load <TextAsset>("BattleMap/BattleScene/" + name + "/dbfile0000.raw16", false);

        Byte[] bytes = textAsset.bytes;
        using (BinaryReader binaryReader = new BinaryReader(new MemoryStream(bytes)))
        {
            this.header.Ver      = binaryReader.ReadByte();
            this.header.PatCount = binaryReader.ReadByte();
            this.header.TypCount = binaryReader.ReadByte();
            this.header.AtkCount = binaryReader.ReadByte();
            this.header.Flags    = binaryReader.ReadUInt16();
            this.PatAddr         = new SB2_PATTERN[(Int32)this.header.PatCount];
            this.MonAddr         = new SB2_MON_PARM[(Int32)this.header.TypCount];
            this.atk             = new AA_DATA[(Int32)this.header.AtkCount];
            binaryReader.BaseStream.Seek(8L, SeekOrigin.Begin);
            for (Int32 i = 0; i < (Int32)this.header.PatCount; i++)
            {
                SB2_PATTERN sb2_PATTERN = this.PatAddr[i] = new SB2_PATTERN();
                sb2_PATTERN.Rate     = binaryReader.ReadByte();
                sb2_PATTERN.MonCount = binaryReader.ReadByte();
                sb2_PATTERN.Camera   = binaryReader.ReadByte();
                sb2_PATTERN.Pad0     = binaryReader.ReadByte();
                sb2_PATTERN.AP       = binaryReader.ReadUInt32();
                for (Int32 j = 0; j < 4; j++)
                {
                    SB2_PUT sb2_PUT = sb2_PATTERN.Put[j] = new SB2_PUT();
                    sb2_PUT.TypeNo = binaryReader.ReadByte();
                    sb2_PUT.Flags  = binaryReader.ReadByte();
                    sb2_PUT.Pease  = binaryReader.ReadByte();
                    sb2_PUT.Pad    = binaryReader.ReadByte();
                    sb2_PUT.Xpos   = binaryReader.ReadInt16();
                    sb2_PUT.Ypos   = binaryReader.ReadInt16();
                    sb2_PUT.Zpos   = binaryReader.ReadInt16();
                    sb2_PUT.Rot    = binaryReader.ReadInt16();
                }
            }
            binaryReader.BaseStream.Seek((Int64)(8 + 56 * this.header.PatCount), SeekOrigin.Begin);
            for (Int32 k = 0; k < (Int32)this.header.TypCount; k++)
            {
                SB2_MON_PARM sb2_MON_PARM = this.MonAddr[k] = new SB2_MON_PARM();
                for (Int32 l = 0; l < 3; l++)
                {
                    sb2_MON_PARM.Status[l] = (BattleStatus)binaryReader.ReadUInt32();
                }
                sb2_MON_PARM.MaxHP  = binaryReader.ReadUInt16();
                sb2_MON_PARM.MaxMP  = binaryReader.ReadUInt16();
                sb2_MON_PARM.WinGil = binaryReader.ReadUInt16();
                sb2_MON_PARM.WinExp = binaryReader.ReadUInt16();
                for (Int32 m = 0; m < 4; m++)
                {
                    sb2_MON_PARM.WinItems[m] = binaryReader.ReadByte();
                }
                for (Int32 n = 0; n < 4; n++)
                {
                    sb2_MON_PARM.StealItems[n] = binaryReader.ReadByte();
                }
                sb2_MON_PARM.Radius = binaryReader.ReadUInt16();
                sb2_MON_PARM.Geo    = binaryReader.ReadUInt16();
                for (Int32 num = 0; num < 6; num++)
                {
                    sb2_MON_PARM.Mot[num] = binaryReader.ReadUInt16();
                }
                for (Int32 num2 = 0; num2 < 2; num2++)
                {
                    sb2_MON_PARM.Mesh[num2] = binaryReader.ReadUInt16();
                }
                sb2_MON_PARM.Flags = binaryReader.ReadUInt16();
                sb2_MON_PARM.AP    = binaryReader.ReadUInt16();
                SB2_ELEMENT sb2_ELEMENT = sb2_MON_PARM.Element = new SB2_ELEMENT();
                sb2_ELEMENT.dex      = binaryReader.ReadByte();
                sb2_ELEMENT.str      = binaryReader.ReadByte();
                sb2_ELEMENT.mgc      = binaryReader.ReadByte();
                sb2_ELEMENT.wpr      = binaryReader.ReadByte();
                sb2_ELEMENT.pad      = binaryReader.ReadByte();
                sb2_ELEMENT.trans    = binaryReader.ReadByte();
                sb2_ELEMENT.cur_capa = binaryReader.ReadByte();
                sb2_ELEMENT.max_capa = binaryReader.ReadByte();
                for (Int32 num3 = 0; num3 < 4; num3++)
                {
                    sb2_MON_PARM.Attr[num3] = binaryReader.ReadByte();
                }
                sb2_MON_PARM.Level    = binaryReader.ReadByte();
                sb2_MON_PARM.Category = binaryReader.ReadByte();
                sb2_MON_PARM.HitRate  = binaryReader.ReadByte();
                sb2_MON_PARM.P_DP     = binaryReader.ReadByte();
                sb2_MON_PARM.P_AV     = binaryReader.ReadByte();
                sb2_MON_PARM.M_DP     = binaryReader.ReadByte();
                sb2_MON_PARM.M_AV     = binaryReader.ReadByte();
                sb2_MON_PARM.Blue     = binaryReader.ReadByte();
                for (Int32 num4 = 0; num4 < 4; num4++)
                {
                    sb2_MON_PARM.Bone[num4] = binaryReader.ReadByte();
                }
                sb2_MON_PARM.DieSfx = binaryReader.ReadUInt16();
                sb2_MON_PARM.Konran = binaryReader.ReadByte();
                sb2_MON_PARM.MesCnt = binaryReader.ReadByte();
                for (Int32 num5 = 0; num5 < 6; num5++)
                {
                    sb2_MON_PARM.IconBone[num5] = binaryReader.ReadByte();
                }
                for (Int32 num6 = 0; num6 < 6; num6++)
                {
                    sb2_MON_PARM.IconY[num6] = binaryReader.ReadSByte();
                }
                for (Int32 num7 = 0; num7 < 6; num7++)
                {
                    sb2_MON_PARM.IconZ[num7] = binaryReader.ReadSByte();
                }
                sb2_MON_PARM.StartSfx    = binaryReader.ReadUInt16();
                sb2_MON_PARM.ShadowX     = binaryReader.ReadUInt16();
                sb2_MON_PARM.ShadowZ     = binaryReader.ReadUInt16();
                sb2_MON_PARM.ShadowBone  = binaryReader.ReadByte();
                sb2_MON_PARM.Card        = binaryReader.ReadByte();
                sb2_MON_PARM.ShadowOfsX  = binaryReader.ReadInt16();
                sb2_MON_PARM.ShadowOfsZ  = binaryReader.ReadInt16();
                sb2_MON_PARM.ShadowBone2 = binaryReader.ReadByte();
                sb2_MON_PARM.Pad0        = binaryReader.ReadByte();
                sb2_MON_PARM.Pad1        = binaryReader.ReadUInt16();
                sb2_MON_PARM.Pad2        = binaryReader.ReadUInt16();
            }
            binaryReader.BaseStream.Seek((Int64)(8 + 56 * this.header.PatCount + 116 * this.header.TypCount), SeekOrigin.Begin);
            for (Int32 num8 = 0; num8 < (Int32)this.header.AtkCount; num8++)
            {
                AA_DATA           aa_DATA  = this.atk[num8] = new AA_DATA();
                BattleCommandInfo cmd_INFO = aa_DATA.Info = new BattleCommandInfo();
                UInt32            input    = binaryReader.ReadUInt32();
                Byte b = 0;
                cmd_INFO.Target       = (TargetType)BitUtil.ReadBits(input, ref b, 4);
                cmd_INFO.DefaultAlly  = BitUtil.ReadBits(input, ref b, 1) != 0;
                cmd_INFO.DisplayStats = (TargetDisplay)BitUtil.ReadBits(input, ref b, 3);
                cmd_INFO.VfxIndex     = (Int16)BitUtil.ReadBits(input, ref b, 9);
                /*cmd_INFO.sfx_no = (Int16)*/ BitUtil.ReadBits(input, ref b, 12);
                cmd_INFO.ForDead       = BitUtil.ReadBits(input, ref b, 1) != 0;
                cmd_INFO.DefaultCamera = BitUtil.ReadBits(input, ref b, 1) != 0;
                cmd_INFO.DefaultOnDead = BitUtil.ReadBits(input, ref b, 1) != 0;
                BTL_REF btl_REF = aa_DATA.Ref = new BTL_REF();
                btl_REF.ScriptId = binaryReader.ReadByte();
                btl_REF.Power    = binaryReader.ReadByte();
                btl_REF.Elements = binaryReader.ReadByte();
                btl_REF.Rate     = binaryReader.ReadByte();
                aa_DATA.Category = binaryReader.ReadByte();
                aa_DATA.AddNo    = binaryReader.ReadByte();
                aa_DATA.MP       = binaryReader.ReadByte();
                aa_DATA.Type     = binaryReader.ReadByte();
                aa_DATA.Vfx2     = binaryReader.ReadUInt16();
                aa_DATA.Name     = binaryReader.ReadUInt16().ToString();
            }
        }
    }