public static NPCInst CreateDummyInst(NPCDef npcDef, string name, Types.Vec3f spawnPosition, Random random) { random = random ?? new Random(); int guild = random.Next(0, 2); int armorType = random.Next(0, 4); int meleeType = random.Next(0, 4); int rangedType = random.Next(0, 2); NPCInst npcInst = null; npcInst = new NPCInst(npcDef); npcInst.SetObjName(name); npcInst.BaseInst.SetNeedsClientGuide(true); ItemInst armor = null, weapon = null, rangeWeapon = null, ammo = null; int ammoAmount; ScriptOverlay overlay = null; bool overlayExists = false; armor = new ItemInst(ItemDef.Get <ItemDef>(ArmorCodes[random.Next(0, ArmorCodes.Count)])); // melee weapon if (random.Next(0, 2) == 0) { // 1H-weapon weapon = new ItemInst(ItemDef.Get <ItemDef>(WeaponCodes_1H[random.Next(0, WeaponCodes_1H.Count)])); overlayExists = npcInst.ModelDef.TryGetOverlay("1HST2", out overlay); } else { // 2H-weapon weapon = new ItemInst(ItemDef.Get <ItemDef>(WeaponCodes_2H[random.Next(0, WeaponCodes_2H.Count)])); overlayExists = npcInst.ModelDef.TryGetOverlay("2HST1", out overlay); } // ranged weapon if (random.Next(0, 2) == 0) { // bow rangeWeapon = new ItemInst(ItemDef.Get <ItemDef>(WeaponCodes_Bow[random.Next(0, WeaponCodes_Bow.Count)])); ammo = new ItemInst(ItemDef.Get <ItemDef>(AmmoCodes_Bow[random.Next(0, AmmoCodes_Bow.Count)])); } else { // crossbow rangeWeapon = new ItemInst(ItemDef.Get <ItemDef>(WeaponCodes_Crossbow[random.Next(0, WeaponCodes_Crossbow.Count)])); ammo = new ItemInst(ItemDef.Get <ItemDef>(AmmoCodes_Crossbow[random.Next(0, AmmoCodes_Crossbow.Count)])); } ammoAmount = random.Next(10, 500 + 1); ammo.BaseInst.SetAmount(ammoAmount); npcInst.Inventory.AddItem(weapon); npcInst.EffectHandler.TryEquipItem(weapon); // 1 = DrawnWeapon npcInst.Inventory.AddItem(rangeWeapon); npcInst.EffectHandler.TryEquipItem(rangeWeapon); npcInst.Inventory.AddItem(ammo); npcInst.EffectHandler.TryEquipItem(ammo); npcInst.Inventory.AddItem(armor); npcInst.EffectHandler.TryEquipItem(armor); if (overlayExists) { npcInst.ModelInst.ApplyOverlay(overlay); } npcInst.Spawn(WorldSystem.WorldInst.List[0], spawnPosition, Types.Angles.Null); return(npcInst); }
void AddBowAnis(ModelDef model) { var ov1 = new ScriptOverlay("BowT1", "Humans_BowT1"); model.AddOverlay(ov1); var ov2 = new ScriptOverlay("BowT2", "Humans_BowT2"); model.AddOverlay(ov2); ScriptAniJob aniJob1 = new ScriptAniJob("drawbow_part0", "t_Run_2_bow"); model.AddAniJob(aniJob1); aniJob1.SetDefaultAni(new ScriptAni(0, 5) { { SpecialFrame.Draw, 5 } }); aniJob1.AddOverlayAni(new ScriptAni(0, 5) { { SpecialFrame.Draw, 5 } }, ov1); aniJob1.AddOverlayAni(new ScriptAni(0, 5) { { SpecialFrame.Draw, 5 } }, ov2); ScriptAniJob aniJob2 = new ScriptAniJob("drawbow_part1", "s_bow"); model.AddAniJob(aniJob2); aniJob2.SetDefaultAni(new ScriptAni(0, 1)); aniJob2.AddOverlayAni(new ScriptAni(0, 1), ov1); aniJob2.AddOverlayAni(new ScriptAni(0, 1), ov2); aniJob1.NextAni = aniJob2; ScriptAniJob aniJob3 = new ScriptAniJob("drawbow_part2", "t_bow_2_bowRun"); model.AddAniJob(aniJob3); aniJob3.SetDefaultAni(new ScriptAni(0, 12)); aniJob3.AddOverlayAni(new ScriptAni(0, 10), ov1); aniJob2.AddOverlayAni(new ScriptAni(0, 8), ov2); aniJob2.NextAni = aniJob3; ScriptAniJob aniJob = new ScriptAniJob("drawbow_running", "t_Move_2_BowMove", new ScriptAni(0, 19)); aniJob.Layer = 2; aniJob.DefaultAni.SetSpecialFrame(SpecialFrame.Draw, 7); model.AddAniJob(aniJob); aniJob1 = new ScriptAniJob("undrawbow_part0", "t_BowRun_2_Bow"); model.AddAniJob(aniJob1); aniJob1.SetDefaultAni(new ScriptAni(0, 12) { { SpecialFrame.Draw, 12 } }); aniJob1.AddOverlayAni(new ScriptAni(0, 10) { { SpecialFrame.Draw, 10 } }, ov1); aniJob1.AddOverlayAni(new ScriptAni(0, 8) { { SpecialFrame.Draw, 8 } }, ov2); aniJob2 = new ScriptAniJob("undrawbow_part1", "s_Bow"); model.AddAniJob(aniJob2); aniJob2.SetDefaultAni(new ScriptAni(0, 1)); aniJob2.AddOverlayAni(new ScriptAni(0, 1), ov1); aniJob2.AddOverlayAni(new ScriptAni(0, 1), ov2); aniJob1.NextAni = aniJob2; aniJob3 = new ScriptAniJob("undrawbow_part2", "t_bow_2_Run"); model.AddAniJob(aniJob3); aniJob3.SetDefaultAni(new ScriptAni(0, 5)); aniJob3.AddOverlayAni(new ScriptAni(0, 5), ov1); aniJob2.AddOverlayAni(new ScriptAni(0, 5), ov2); aniJob2.NextAni = aniJob3; aniJob = new ScriptAniJob("undrawbow_running", "t_BowMove_2_Move", new ScriptAni(0, 19)); aniJob.Layer = 2; aniJob.DefaultAni.SetSpecialFrame(SpecialFrame.Draw, 12); model.AddAniJob(aniJob); aniJob1 = new ScriptAniJob("aim_bow", "t_bowwalk_2_bowaim"); model.AddAniJob(aniJob1); aniJob1.SetDefaultAni(new ScriptAni(0, 11)); aniJob1.AddOverlayAni(new ScriptAni(0, 11), ov1); aniJob1.AddOverlayAni(new ScriptAni(0, 11), ov2); aniJob2 = new ScriptAniJob("aiming_bow", "s_BowAim"); model.AddAniJob(aniJob2); aniJob2.SetDefaultAni(new ScriptAni()); aniJob2.AddOverlayAni(new ScriptAni(), ov1); aniJob2.AddOverlayAni(new ScriptAni(), ov2); aniJob1.NextAni = aniJob2; // fixme: add s_bowshoot too? aniJob1 = new ScriptAniJob("reload_bow", "t_BowReload"); model.AddAniJob(aniJob1); aniJob1.SetDefaultAni(new ScriptAni(0, 28)); aniJob1.AddOverlayAni(new ScriptAni(0, 26), ov1); aniJob1.AddOverlayAni(new ScriptAni(0, 22), ov2); aniJob1.NextAni = aniJob2; aniJob1 = new ScriptAniJob("unaim_bow", "t_BowAim_2_Bowwalk"); model.AddAniJob(aniJob1); aniJob1.SetDefaultAni(new ScriptAni(0, 11)); aniJob1.AddOverlayAni(new ScriptAni(0, 11), ov1); aniJob1.AddOverlayAni(new ScriptAni(0, 11), ov2); }
void AddXBowAnis(ModelDef model) { var ov1 = new ScriptOverlay("XBowT1", "Humans_CBowT1"); model.AddOverlay(ov1); var ov2 = new ScriptOverlay("XBowT2", "Humans_CBowT2"); model.AddOverlay(ov2); ScriptAniJob aniJob1 = new ScriptAniJob("drawXbow_part0", "t_Run_2_Cbow"); model.AddAniJob(aniJob1); aniJob1.SetDefaultAni(new ScriptAni(0, 4) { { SpecialFrame.Draw, 4 } }); aniJob1.AddOverlayAni(new ScriptAni(0, 4) { { SpecialFrame.Draw, 4 } }, ov1); aniJob1.AddOverlayAni(new ScriptAni(0, 4) { { SpecialFrame.Draw, 4 } }, ov2); ScriptAniJob aniJob2 = new ScriptAniJob("drawXbow_part1", "s_Cbow"); model.AddAniJob(aniJob2); aniJob2.SetDefaultAni(new ScriptAni(0, 1)); aniJob2.AddOverlayAni(new ScriptAni(0, 1), ov1); aniJob2.AddOverlayAni(new ScriptAni(0, 1), ov2); aniJob1.NextAni = aniJob2; ScriptAniJob aniJob3 = new ScriptAniJob("drawXbow_part2", "t_Cbow_2_CbowRun"); model.AddAniJob(aniJob3); aniJob3.SetDefaultAni(new ScriptAni(0, 33)); aniJob3.AddOverlayAni(new ScriptAni(0, 29), ov1); aniJob2.AddOverlayAni(new ScriptAni(0, 25), ov2); aniJob2.NextAni = aniJob3; ScriptAniJob aniJob = new ScriptAniJob("drawXbow_running", "t_Move_2_CBowMove", new ScriptAni(0, 39)); aniJob.Layer = 2; aniJob.DefaultAni.SetSpecialFrame(SpecialFrame.Draw, 7); model.AddAniJob(aniJob); aniJob1 = new ScriptAniJob("undrawXbow_part0", "t_CBowRun_2_CBow"); model.AddAniJob(aniJob1); aniJob1.SetDefaultAni(new ScriptAni(0, 33) { { SpecialFrame.Draw, 33 } }); aniJob1.AddOverlayAni(new ScriptAni(0, 29) { { SpecialFrame.Draw, 29 } }, ov1); aniJob1.AddOverlayAni(new ScriptAni(0, 25) { { SpecialFrame.Draw, 25 } }, ov2); aniJob2 = new ScriptAniJob("undrawXbow_part1", "s_CBow"); model.AddAniJob(aniJob2); aniJob2.SetDefaultAni(new ScriptAni(0, 1)); aniJob2.AddOverlayAni(new ScriptAni(0, 1), ov1); aniJob2.AddOverlayAni(new ScriptAni(0, 1), ov2); aniJob1.NextAni = aniJob2; aniJob3 = new ScriptAniJob("undrawXbow_part2", "t_Cbow_2_Run"); model.AddAniJob(aniJob3); aniJob3.SetDefaultAni(new ScriptAni(0, 4)); aniJob3.AddOverlayAni(new ScriptAni(0, 4), ov1); aniJob2.AddOverlayAni(new ScriptAni(0, 4), ov2); aniJob2.NextAni = aniJob3; aniJob = new ScriptAniJob("undrawXbow_running", "t_CBowMove_2_Move", new ScriptAni(0, 39)); aniJob.Layer = 2; aniJob.DefaultAni.SetSpecialFrame(SpecialFrame.Draw, 32); model.AddAniJob(aniJob); aniJob1 = new ScriptAniJob("aim_xbow", "t_cbowwalk_2_cbowaim"); model.AddAniJob(aniJob1); aniJob1.SetDefaultAni(new ScriptAni(0, 5)); aniJob1.AddOverlayAni(new ScriptAni(0, 6), ov1); aniJob1.AddOverlayAni(new ScriptAni(0, 6), ov2); aniJob2 = new ScriptAniJob("aiming_xbow", "s_CBowAim"); model.AddAniJob(aniJob2); aniJob2.SetDefaultAni(new ScriptAni()); aniJob2.AddOverlayAni(new ScriptAni(), ov1); aniJob2.AddOverlayAni(new ScriptAni(), ov2); aniJob1.NextAni = aniJob2; // fixme: add s_bowshoot too? aniJob1 = new ScriptAniJob("reload_xbow", "t_CBowReload"); model.AddAniJob(aniJob1); aniJob1.SetDefaultAni(new ScriptAni(0, 32)); aniJob1.AddOverlayAni(new ScriptAni(0, 29), ov1); aniJob1.AddOverlayAni(new ScriptAni(0, 23), ov2); aniJob1.NextAni = aniJob2; aniJob1 = new ScriptAniJob("unaim_xbow", "t_CBowAim_2_CBowwalk"); model.AddAniJob(aniJob1); aniJob1.SetDefaultAni(new ScriptAni(0, 6)); aniJob1.AddOverlayAni(new ScriptAni(0, 6), ov1); aniJob1.AddOverlayAni(new ScriptAni(0, 6), ov2); }
void Add2hAnis(ModelDef model) { var ov1 = new ScriptOverlay("2HST1", "Humans_2hST1"); model.AddOverlay(ov1); var ov2 = new ScriptOverlay("2HST2", "Humans_2hST2"); model.AddOverlay(ov2); // Draw 2h ScriptAniJob aniJob1 = new ScriptAniJob("draw2h_part0", "t_Run_2_2h"); model.AddAniJob(aniJob1); aniJob1.SetDefaultAni(new ScriptAni(0, 4) { { SpecialFrame.Draw, 4 } }); aniJob1.AddOverlayAni(new ScriptAni(0, 4) { { SpecialFrame.Draw, 4 } }, ov1); aniJob1.AddOverlayAni(new ScriptAni(0, 3) { { SpecialFrame.Draw, 3 } }, ov2); ScriptAniJob aniJob2 = new ScriptAniJob("draw2h_part1", "s_2h"); model.AddAniJob(aniJob2); aniJob2.SetDefaultAni(new ScriptAni(0, 1)); aniJob2.AddOverlayAni(new ScriptAni(0, 1), ov1); aniJob2.AddOverlayAni(new ScriptAni(0, 1), ov2); aniJob1.NextAni = aniJob2; ScriptAniJob aniJob3 = new ScriptAniJob("draw2h_part2", "t_2h_2_2hRun"); model.AddAniJob(aniJob3); aniJob3.SetDefaultAni(new ScriptAni(0, 15)); aniJob3.AddOverlayAni(new ScriptAni(0, 15), ov1); aniJob2.AddOverlayAni(new ScriptAni(0, 10), ov2); aniJob2.NextAni = aniJob3; // Draw 2h running ScriptAniJob aniJob = new ScriptAniJob("draw2h_running", "t_Move_2_2hMove", new ScriptAni(0, 24)); aniJob.Layer = 2; aniJob.DefaultAni.SetSpecialFrame(SpecialFrame.Draw, 6); model.AddAniJob(aniJob); // Undraw 2h aniJob1 = new ScriptAniJob("undraw2h_part0", "t_2hRun_2_2h"); model.AddAniJob(aniJob1); aniJob1.SetDefaultAni(new ScriptAni(0, 15) { { SpecialFrame.Draw, 15 } }); aniJob1.AddOverlayAni(new ScriptAni(0, 15) { { SpecialFrame.Draw, 15 } }, ov1); aniJob1.AddOverlayAni(new ScriptAni(0, 10) { { SpecialFrame.Draw, 10 } }, ov2); aniJob2 = new ScriptAniJob("undraw2h_part1", "s_2h"); model.AddAniJob(aniJob2); aniJob2.SetDefaultAni(new ScriptAni(0, 1)); aniJob2.AddOverlayAni(new ScriptAni(0, 1), ov1); aniJob2.AddOverlayAni(new ScriptAni(0, 1), ov2); aniJob1.NextAni = aniJob2; aniJob3 = new ScriptAniJob("undraw2h_part2", "t_2h_2_Run"); model.AddAniJob(aniJob3); aniJob3.SetDefaultAni(new ScriptAni(0, 4)); aniJob3.AddOverlayAni(new ScriptAni(0, 4), ov1); aniJob2.AddOverlayAni(new ScriptAni(0, 3), ov2); aniJob2.NextAni = aniJob3; // Undraw 2h running aniJob = new ScriptAniJob("undraw2h_running", "t_2hMove_2_Move", new ScriptAni(0, 24)); aniJob.Layer = 2; aniJob.DefaultAni.SetSpecialFrame(SpecialFrame.Draw, 18); model.AddAniJob(aniJob); // Fwd attack 1 ScriptAniJob job = new ScriptAniJob("2hattack_fwd0", "s_2hattack"); model.AddAniJob(job); job.SetDefaultAni(new ScriptAni(0, 26) { { SpecialFrame.Hit, 8 }, { SpecialFrame.Combo, 14 } }); job.AddOverlayAni(new ScriptAni(0, 35) { { SpecialFrame.Hit, 6 }, { SpecialFrame.Combo, 16 } }, ov1); job.AddOverlayAni(new ScriptAni(0, 34) { { SpecialFrame.Hit, 5 }, { SpecialFrame.Combo, 13 } }, ov2); // fwd combo 2 job = new ScriptAniJob("2hattack_fwd1", "s_2hattack"); model.AddAniJob(job); job.SetDefaultAni(new ScriptAni(31, 50) { { SpecialFrame.Hit, 6 } }); job.AddOverlayAni(new ScriptAni(40, 75) { { SpecialFrame.Hit, 6 }, { SpecialFrame.Combo, 16 } }, ov1); job.AddOverlayAni(new ScriptAni(39, 75) { { SpecialFrame.Hit, 4 }, { SpecialFrame.Combo, 12 } }, ov2); // fwd combo 3 job = new ScriptAniJob("2hattack_fwd2", "s_2hattack"); model.AddAniJob(job); job.AddOverlayAni(new ScriptAni(80, 114) { { SpecialFrame.Hit, 6 }, { SpecialFrame.Combo, 16 } }, ov1); job.AddOverlayAni(new ScriptAni(79, 118) { { SpecialFrame.Hit, 9 }, { SpecialFrame.Combo, 17 } }, ov2); // fwd combo 4 job = new ScriptAniJob("2hattack_fwd3", "s_2hattack"); model.AddAniJob(job); job.AddOverlayAni(new ScriptAni(124, 146) { { SpecialFrame.Hit, 12 } }, ov2); // left attack job = new ScriptAniJob("2hattack_left", "t_2hAttackL"); model.AddAniJob(job); job.SetDefaultAni(new ScriptAni(0, 36) { { SpecialFrame.Hit, 6 }, { SpecialFrame.Combo, 18 } }); job.AddOverlayAni(new ScriptAni(0, 28) { { SpecialFrame.Hit, 5 }, { SpecialFrame.Combo, 14 } }, ov1); job.AddOverlayAni(new ScriptAni(0, 26) { { SpecialFrame.Hit, 5 }, { SpecialFrame.Combo, 14 } }, ov2); // right attack job = new ScriptAniJob("2hattack_right", "t_2hAttackR"); model.AddAniJob(job); job.SetDefaultAni(new ScriptAni(0, 36) { { SpecialFrame.Hit, 6 }, { SpecialFrame.Combo, 18 } }); job.AddOverlayAni(new ScriptAni(0, 29) { { SpecialFrame.Hit, 5 }, { SpecialFrame.Combo, 14 } }, ov1); job.AddOverlayAni(new ScriptAni(0, 26) { { SpecialFrame.Hit, 5 }, { SpecialFrame.Combo, 14 } }, ov2); // run attack job = new ScriptAniJob("2hattack_run", "t_2hAttackMove"); job.Layer = 2; model.AddAniJob(job); job.SetDefaultAni(new ScriptAni(0, 23) { { SpecialFrame.Hit, 12 } }); // parades job = new ScriptAniJob("2h_parade0", "t_2hParade_0"); model.AddAniJob(job); job.SetDefaultAni(new ScriptAni(0, 15)); job = new ScriptAniJob("2h_parade1", "t_2hParade_0_A2"); model.AddAniJob(job); job.SetDefaultAni(new ScriptAni(0, 15)); job = new ScriptAniJob("2h_parade2", "t_2hParade_0_A3"); model.AddAniJob(job); job.SetDefaultAni(new ScriptAni(0, 15)); // dodge job = new ScriptAniJob("2h_dodge", "t_2hParadeJumpB"); model.AddAniJob(job); job.SetDefaultAni(new ScriptAni(0, 24)); }
void Add1HAnis(ModelDef model) { var ov1 = new ScriptOverlay("1HST1", "Humans_1hST1"); model.AddOverlay(ov1); var ov2 = new ScriptOverlay("1HST2", "Humans_1hST2"); model.AddOverlay(ov2); // Draw 1h ScriptAniJob aniJob1 = new ScriptAniJob("draw1h_part0", "t_Run_2_1h"); model.AddAniJob(aniJob1); aniJob1.SetDefaultAni(new ScriptAni(0, 2) { { SpecialFrame.Draw, 2 } }); aniJob1.AddOverlayAni(new ScriptAni(0, 3) { { SpecialFrame.Draw, 3 } }, ov1); aniJob1.AddOverlayAni(new ScriptAni(0, 1) { { SpecialFrame.Draw, 1 } }, ov2); ScriptAniJob aniJob2 = new ScriptAniJob("draw1h_part1", "s_1h"); model.AddAniJob(aniJob2); aniJob2.SetDefaultAni(new ScriptAni(0, 1)); aniJob2.AddOverlayAni(new ScriptAni(0, 1), ov1); aniJob2.AddOverlayAni(new ScriptAni(0, 1), ov2); aniJob1.NextAni = aniJob2; ScriptAniJob aniJob3 = new ScriptAniJob("draw1h_part2", "t_1h_2_1hRun"); model.AddAniJob(aniJob3); aniJob3.SetDefaultAni(new ScriptAni(0, 12)); aniJob3.AddOverlayAni(new ScriptAni(0, 6), ov1); aniJob2.AddOverlayAni(new ScriptAni(0, 8), ov2); aniJob2.NextAni = aniJob3; // Draw 1h running ScriptAniJob aniJob = new ScriptAniJob("draw1h_running", "t_Move_2_1hMove", new ScriptAni(0, 24)); aniJob.Layer = 2; aniJob.DefaultAni.SetSpecialFrame(SpecialFrame.Draw, 6); model.AddAniJob(aniJob); // Undraw 1h aniJob1 = new ScriptAniJob("undraw1h_part0", "t_1hRun_2_1h"); model.AddAniJob(aniJob1); aniJob1.SetDefaultAni(new ScriptAni(0, 12) { { SpecialFrame.Draw, 12 } }); aniJob1.AddOverlayAni(new ScriptAni(0, 6) { { SpecialFrame.Draw, 6 } }, ov1); aniJob1.AddOverlayAni(new ScriptAni(0, 8) { { SpecialFrame.Draw, 8 } }, ov2); aniJob2 = new ScriptAniJob("undraw1h_part1", "s_1h"); model.AddAniJob(aniJob2); aniJob2.SetDefaultAni(new ScriptAni(0, 1)); aniJob2.AddOverlayAni(new ScriptAni(0, 1), ov1); aniJob2.AddOverlayAni(new ScriptAni(0, 1), ov2); aniJob1.NextAni = aniJob2; aniJob3 = new ScriptAniJob("undraw1h_part2", "t_1h_2_Run"); model.AddAniJob(aniJob3); aniJob3.SetDefaultAni(new ScriptAni(0, 2)); aniJob3.AddOverlayAni(new ScriptAni(0, 3), ov1); aniJob2.AddOverlayAni(new ScriptAni(0, 1), ov2); aniJob2.NextAni = aniJob3; // Undraw 1h running aniJob = new ScriptAniJob("undraw1h_running", "t_1hMove_2_Move", new ScriptAni(0, 24)); aniJob.Layer = 2; aniJob.DefaultAni.SetSpecialFrame(SpecialFrame.Draw, 18); model.AddAniJob(aniJob); // Fwd attack 1 ScriptAniJob job = new ScriptAniJob("1hattack_fwd0", "s_1hattack"); model.AddAniJob(job); job.SetDefaultAni(new ScriptAni(0, 23) { { SpecialFrame.Hit, 6 }, { SpecialFrame.Combo, 15 } }); job.AddOverlayAni(new ScriptAni(0, 33) { { SpecialFrame.Hit, 4 }, { SpecialFrame.Combo, 14 } }, ov1); job.AddOverlayAni(new ScriptAni(0, 29) { { SpecialFrame.Hit, 4 }, { SpecialFrame.Combo, 10 } }, ov2); // fwd combo 2 job = new ScriptAniJob("1hattack_fwd1", "s_1hattack"); model.AddAniJob(job); job.SetDefaultAni(new ScriptAni(26, 40) { { SpecialFrame.Hit, 7 } }); job.AddOverlayAni(new ScriptAni(33, 68) { { SpecialFrame.Hit, 4 }, { SpecialFrame.Combo, 15 } }, ov1); job.AddOverlayAni(new ScriptAni(33, 60) { { SpecialFrame.Hit, 3 }, { SpecialFrame.Combo, 9 } }, ov2); // fwd combo 3 job = new ScriptAniJob("1hattack_fwd2", "s_1hattack"); model.AddAniJob(job); job.AddOverlayAni(new ScriptAni(68, 103) { { SpecialFrame.Hit, 6 }, { SpecialFrame.Combo, 17 } }, ov1); job.AddOverlayAni(new ScriptAni(65, 92) { { SpecialFrame.Hit, 8 }, { SpecialFrame.Combo, 13 } }, ov2); // fwd combo 4 job = new ScriptAniJob("1hattack_fwd3", "s_1hattack"); model.AddAniJob(job); job.AddOverlayAni(new ScriptAni(103, 120) { { SpecialFrame.Hit, 7 } }, ov1); job.AddOverlayAni(new ScriptAni(97, 113) { { SpecialFrame.Hit, 10 } }, ov2); // left attack job = new ScriptAniJob("1hattack_left", "t_1HAttackL"); model.AddAniJob(job); job.SetDefaultAni(new ScriptAni(0, 30) { { SpecialFrame.Hit, 5 }, { SpecialFrame.Combo, 15 } }); job.AddOverlayAni(new ScriptAni(0, 24) { { SpecialFrame.Hit, 4 }, { SpecialFrame.Combo, 10 } }, ov1); job.AddOverlayAni(new ScriptAni(0, 20) { { SpecialFrame.Hit, 3 }, { SpecialFrame.Combo, 8 } }, ov2); // right attack job = new ScriptAniJob("1hattack_right", "t_1HAttackR"); model.AddAniJob(job); job.SetDefaultAni(new ScriptAni(0, 30) { { SpecialFrame.Hit, 5 }, { SpecialFrame.Combo, 15 } }); job.AddOverlayAni(new ScriptAni(0, 24) { { SpecialFrame.Hit, 4 }, { SpecialFrame.Combo, 10 } }, ov1); job.AddOverlayAni(new ScriptAni(0, 20) { { SpecialFrame.Hit, 3 }, { SpecialFrame.Combo, 8 } }, ov2); // run attack job = new ScriptAniJob("1hattack_run", "t_1HAttackMove"); job.Layer = 2; model.AddAniJob(job); job.SetDefaultAni(new ScriptAni(0, 29) { { SpecialFrame.Hit, 16 } }); // parades job = new ScriptAniJob("1h_parade0", "t_1HParade_0"); model.AddAniJob(job); job.SetDefaultAni(new ScriptAni(0, 15)); job = new ScriptAniJob("1h_parade1", "t_1HParade_0_A2"); model.AddAniJob(job); job.SetDefaultAni(new ScriptAni(0, 15)); job = new ScriptAniJob("1h_parade2", "t_1HParade_0_A3"); model.AddAniJob(job); job.SetDefaultAni(new ScriptAni(0, 15)); // dodge job = new ScriptAniJob("1h_dodge", "t_1HParadeJumpB"); model.AddAniJob(job); job.SetDefaultAni(new ScriptAni(0, 14)); }
public static void ParseMDS(FileInfo fileInfo, bool isOverlay = false) { if (isOverlay) { return; } try { if (fileInfo == null) { Logger.LogError("AniParser: FileInfo is null!"); return; } if (!fileInfo.Exists) { Logger.LogError("AniParser: {0} does not exist!", fileInfo.FullName); return; } if (string.Compare(fileInfo.Extension, ".mds", true) != 0) { Logger.LogError("AniParser: {0} is no MDS file!", fileInfo.FullName); return; } string name = Path.GetFileNameWithoutExtension(fileInfo.Name); int newAnis = 0; int newJobs = 0; ModelDef modelDef = new ModelDef(name, fileInfo.Name); modelDef.SetAniCatalog(new Visuals.AniCatalogs.NPCCatalog()); ScriptOverlay overlay = null; using (StreamReader sr = new StreamReader(fileInfo.OpenRead())) { string line = null; try { while ((line = sr.ReadLine()) != null) { string[] strs = line.Split(seperators, StringSplitOptions.RemoveEmptyEntries); if (strs.Length < 9) { continue; } string type = strs[0].Trim(seperators); if (string.Compare(type, "ani", true) == 0) { ReadAni(modelDef, overlay, strs, ref newAnis, ref newJobs); } else if (string.Compare(type, "aniAlias", true) == 0) { ReadAniAlias(modelDef, overlay, strs, ref newAnis, ref newJobs); } } modelDef.Create(); } catch (Exception e) { File.WriteAllText("lastline.txt", line == null ? "" : line); Logger.Log(e); } } if (isOverlay) { Logger.Log("AniParser: Overlay '{0}': {1} jobs and {2} anis parsed.", overlay.CodeName, newJobs, newAnis); } else { Logger.Log("AniParser: ModelDef '{0}': {1} jobs and {2} anis parsed.", modelDef.CodeName, newJobs, newAnis); } } catch (Exception e) { Logger.Log("AniParser: {0} excepted!", fileInfo.FullName); Logger.Log(e); } }
static void ReadAniAlias(ModelDef modelDef, ScriptOverlay overlay, string[] strs, ref int newAnis, ref int newJobs) { //newJobs++; //newAnis++; }
static void ReadAni(ModelDef modelDef, ScriptOverlay overlay, string[] strs, ref int newAnis, ref int newJobs) { string aniName = ExtractString(strs[1]); int layer; if (!int.TryParse(strs[2], out layer)) { return; } string nextAni = ExtractString(strs[3]); int startFrame; if (!int.TryParse(strs[9], out startFrame)) { return; } int endFrame; if (!int.TryParse(strs[10], out endFrame) || endFrame < 0) { return; } float fps = 25; if (strs.Length > 11) { float.TryParse(strs[11].Substring("FPS:".Length), out fps); } ScriptAniJob aniJob; if (!modelDef.TryGetAniJob(aniName, out aniJob)) { aniJob = new ScriptAniJob(aniName, aniName); if (!modelDef.Catalog.ContainsPropertyForJob(aniJob)) { return; } modelDef.AddAniJob(aniJob); newJobs++; } aniJob.Layer = layer; ScriptAni ani = new ScriptAni(startFrame, endFrame); ani.FPS = fps; if (overlay == null) { aniJob.SetDefaultAni(ani); } else { aniJob.AddOverlayAni(ani, overlay); } newAnis++; }