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); } }
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; } }
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]; } }
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; }
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; } }
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]; } } }
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 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(); } } }