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 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 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; }