From 48a208a68ad122f874a875d8b21faa0762c23db4 Mon Sep 17 00:00:00 2001 From: HbmMods Date: Mon, 29 Apr 2019 00:57:34 +0200 Subject: [PATCH] fuckton of missile parts, full missile item render, assembly render --- assets/hbm/lang/de_DE.lang | 28 + assets/hbm/lang/en_US.lang | 28 + assets/hbm/models/missile_assembly.obj | 83 +++ .../missile_parts/mp_f_10_15_kerosene.obj | 247 +++++++ assets/hbm/models/missile_parts/mp_s_15.obj | 54 -- .../hbm/models/missile_parts/mp_s_15_flat.obj | 164 +++++ .../hbm/models/missile_parts/mp_s_15_thin.obj | 146 ++++ .../models/missile_parts/mp_t_10_xenon.obj | 436 ++++++++++++ .../models/missile_parts/mp_t_15_kerosene.obj | 357 ++++++++++ .../missile_parts/mp_t_15_kerosene_dual.obj | 637 ++++++++++++++++++ .../models/missile_parts/mp_w_10_buster.obj | 316 +++++++++ .../models/missile_parts/mp_w_10_nuclear.obj | 174 +++++ assets/hbm/models/strut.obj | 68 ++ assets/hbm/sounds.json | 1 + assets/hbm/sounds/block/missileAssembly.ogg | Bin 0 -> 79317 bytes .../blocks/machine_missile_assembly.png | Bin 0 -> 281 bytes assets/hbm/textures/items/missile_custom.png | Bin 0 -> 334 bytes assets/hbm/textures/items/mp_c_1.png | Bin 140 -> 209 bytes assets/hbm/textures/items/mp_c_2.png | Bin 151 -> 225 bytes assets/hbm/textures/items/mp_c_3.png | Bin 170 -> 221 bytes assets/hbm/textures/items/mp_c_4.png | Bin 0 -> 204 bytes assets/hbm/textures/items/mp_c_5.png | Bin 0 -> 252 bytes assets/hbm/textures/items/mp_f_10.png | Bin 118 -> 0 bytes assets/hbm/textures/items/mp_f_15.png | Bin 135 -> 0 bytes assets/hbm/textures/items/mp_f_20.png | Bin 161 -> 0 bytes assets/hbm/textures/items/mp_fuselage.png | Bin 0 -> 313 bytes assets/hbm/textures/items/mp_s_10.png | Bin 131 -> 0 bytes assets/hbm/textures/items/mp_s_15.png | Bin 141 -> 0 bytes assets/hbm/textures/items/mp_s_20.png | Bin 139 -> 0 bytes assets/hbm/textures/items/mp_stability.png | Bin 0 -> 241 bytes assets/hbm/textures/items/mp_t_10.png | Bin 121 -> 0 bytes assets/hbm/textures/items/mp_t_15.png | Bin 142 -> 0 bytes assets/hbm/textures/items/mp_t_20.png | Bin 168 -> 0 bytes assets/hbm/textures/items/mp_thruster.png | Bin 0 -> 256 bytes assets/hbm/textures/items/mp_w_10.png | Bin 126 -> 0 bytes assets/hbm/textures/items/mp_w_15.png | Bin 127 -> 0 bytes assets/hbm/textures/items/mp_w_20.png | Bin 148 -> 0 bytes assets/hbm/textures/items/mp_warhead.png | Bin 0 -> 261 bytes .../hbm/textures/models/missile_assembly.png | Bin 0 -> 344 bytes .../missile_parts/mp_f_10_15_balefire.png | Bin 0 -> 3120 bytes .../missile_parts/mp_f_10_15_hydrogen.png | Bin 0 -> 2640 bytes .../missile_parts/mp_f_10_15_kerosene.png | Bin 0 -> 2338 bytes .../models/missile_parts/mp_f_10_15_solid.png | Bin 0 -> 2816 bytes .../models/missile_parts/mp_f_10_xenon.png | Bin 0 -> 1179 bytes .../models/missile_parts/mp_s_15_flat.png | Bin 0 -> 483 bytes .../models/missile_parts/mp_t_10_xenon.png | Bin 0 -> 659 bytes .../missile_parts/mp_t_15_kerosene_dual.png | Bin 0 -> 965 bytes .../models/missile_parts/mp_w_10_buster.png | Bin 0 -> 679 bytes .../models/missile_parts/mp_w_10_nuclear.png | Bin 0 -> 770 bytes assets/hbm/textures/models/strut.png | Bin 0 -> 322 bytes .../gui/GUIMachineMissileAssembly.java | 29 + com/hbm/items/ModItems.java | 80 ++- com/hbm/items/weapon/ItemCustomMissile.java | 61 ++ com/hbm/items/weapon/ItemMissile.java | 240 +++++++ com/hbm/main/ClientProxy.java | 2 + com/hbm/main/MainRegistry.java | 1 - com/hbm/main/ResourceManager.java | 31 +- com/hbm/packet/AuxButtonPacket.java | 7 + com/hbm/render/item/ItemRenderMissile.java | 96 +++ .../render/item/ItemRenderMissilePart.java | 1 - com/hbm/render/misc/MissileMultipart.java | 5 - com/hbm/render/misc/MissilePart.java | 23 +- com/hbm/render/misc/MissilePronter.java | 2 +- .../tileentity/RenderMissileAssembly.java | 28 +- .../TileEntityMachineMissileAssembly.java | 124 ++++ 65 files changed, 3373 insertions(+), 96 deletions(-) create mode 100644 assets/hbm/models/missile_assembly.obj create mode 100644 assets/hbm/models/missile_parts/mp_f_10_15_kerosene.obj delete mode 100644 assets/hbm/models/missile_parts/mp_s_15.obj create mode 100644 assets/hbm/models/missile_parts/mp_s_15_flat.obj create mode 100644 assets/hbm/models/missile_parts/mp_s_15_thin.obj create mode 100644 assets/hbm/models/missile_parts/mp_t_10_xenon.obj create mode 100644 assets/hbm/models/missile_parts/mp_t_15_kerosene.obj create mode 100644 assets/hbm/models/missile_parts/mp_t_15_kerosene_dual.obj create mode 100644 assets/hbm/models/missile_parts/mp_w_10_buster.obj create mode 100644 assets/hbm/models/missile_parts/mp_w_10_nuclear.obj create mode 100644 assets/hbm/models/strut.obj create mode 100644 assets/hbm/sounds/block/missileAssembly.ogg create mode 100644 assets/hbm/textures/blocks/machine_missile_assembly.png create mode 100644 assets/hbm/textures/items/missile_custom.png create mode 100644 assets/hbm/textures/items/mp_c_4.png create mode 100644 assets/hbm/textures/items/mp_c_5.png delete mode 100644 assets/hbm/textures/items/mp_f_10.png delete mode 100644 assets/hbm/textures/items/mp_f_15.png delete mode 100644 assets/hbm/textures/items/mp_f_20.png create mode 100644 assets/hbm/textures/items/mp_fuselage.png delete mode 100644 assets/hbm/textures/items/mp_s_10.png delete mode 100644 assets/hbm/textures/items/mp_s_15.png delete mode 100644 assets/hbm/textures/items/mp_s_20.png create mode 100644 assets/hbm/textures/items/mp_stability.png delete mode 100644 assets/hbm/textures/items/mp_t_10.png delete mode 100644 assets/hbm/textures/items/mp_t_15.png delete mode 100644 assets/hbm/textures/items/mp_t_20.png create mode 100644 assets/hbm/textures/items/mp_thruster.png delete mode 100644 assets/hbm/textures/items/mp_w_10.png delete mode 100644 assets/hbm/textures/items/mp_w_15.png delete mode 100644 assets/hbm/textures/items/mp_w_20.png create mode 100644 assets/hbm/textures/items/mp_warhead.png create mode 100644 assets/hbm/textures/models/missile_assembly.png create mode 100644 assets/hbm/textures/models/missile_parts/mp_f_10_15_balefire.png create mode 100644 assets/hbm/textures/models/missile_parts/mp_f_10_15_hydrogen.png create mode 100644 assets/hbm/textures/models/missile_parts/mp_f_10_15_kerosene.png create mode 100644 assets/hbm/textures/models/missile_parts/mp_f_10_15_solid.png create mode 100644 assets/hbm/textures/models/missile_parts/mp_f_10_xenon.png create mode 100644 assets/hbm/textures/models/missile_parts/mp_s_15_flat.png create mode 100644 assets/hbm/textures/models/missile_parts/mp_t_10_xenon.png create mode 100644 assets/hbm/textures/models/missile_parts/mp_t_15_kerosene_dual.png create mode 100644 assets/hbm/textures/models/missile_parts/mp_w_10_buster.png create mode 100644 assets/hbm/textures/models/missile_parts/mp_w_10_nuclear.png create mode 100644 assets/hbm/textures/models/strut.png create mode 100644 com/hbm/items/weapon/ItemCustomMissile.java create mode 100644 com/hbm/items/weapon/ItemMissile.java create mode 100644 com/hbm/render/item/ItemRenderMissile.java diff --git a/assets/hbm/lang/de_DE.lang b/assets/hbm/lang/de_DE.lang index 9deff3fb3..c514db62d 100644 --- a/assets/hbm/lang/de_DE.lang +++ b/assets/hbm/lang/de_DE.lang @@ -375,6 +375,8 @@ tile.machine_turbine.name=Dampfturbine container.machineTurbine=Dampfturbine tile.launch_pad.name=Raketenabschussrampe container.launchPad=Raketenabschussrampe +tile.machine_missile_assembly.name=Raketenmontagestation +container.missileAssembly=Raketenmontagestation tile.sat_dock.name=Frachtlandeplattform container.satDock=Frachtlandeplattform tile.book_guide.name=Hbm's Nuclear Tech Mod Handbuch [LEGACY] @@ -1647,6 +1649,32 @@ item.missile_bhole.name=Schwarzes-Loch-Rakete item.missile_schrabidium.name=Schrabidiumrakete item.missile_emp.name=EMP-Rakete +item.mp_c_1.name=Stufe 1 Zielsucher-Schaltkreis +item.mp_c_2.name=Stufe 2 Zielsucher-Schaltkreis +item.mp_c_3.name=Stufe 3 Zielsucher-Schaltkreis +item.mp_c_4.name=Stufe 4 Zielsucher-Schaltkreis +item.mp_c_5.name=Stufe 5 Zielsucher-Schaltkreis +item.mp_warhead_10_he.name=Größe 10 HE-Sprengkopf +item.mp_warhead_10_incendiary.name=Größe 10 Brandsprengkopf +item.mp_warhead_10_buster.name=Größe 10 Bunkerbrechender Sprengkopf +item.mp_warhead_10_nuclear.name=Größe 10 Atomsprengkopf +item.mp_fuselage_10_kerosene.name=Größe 10 Kerosintank +item.mp_fuselage_10_solid.name=Größe 10 Festbrennstofftank +item.mp_fuselage_10_xenon.name=Größe 10 Xenontank +item.mp_fuselage_10_15_kerosene.name=Größe 10/15 Kerosintank +item.mp_fuselage_10_15_solid.name=Größe 10/15 Festbrennstofftank +item.mp_fuselage_10_15_hydrogen.name=Größe 10/15 Wasserstofftank +item.mp_fuselage_10_15_balefire.name=Größe 10/15 BF-Kraftstofftank +item.mp_stability_10_flat.name=Größe 10 Flache Flügel +item.mp_stability_10_cruise.name=Größe 10 Cruise-Flügel +item.mp_stability_15_flat.name=Größe 15 Flache Flügel +item.mp_stability_15_thin.name=Größe 15 Dünne Flügel +item.mp_thruster_10_kerosene.name=Größe 10 Flüssigtriebwerk +item.mp_thruster_10_solid.name=Größe 10 Festbrennstofftriebwerk +item.mp_thruster_10_xenon.name=Größe 10 Ionentriebwerk +item.mp_thruster_15_kerosene.name=Größe 15 Flüssigtriebwerk +item.mp_thruster_15_kerosene_dual.name=Größe 15 Flüssigtriebwerk-Zwilling + item.missile_carrier.name=HTR-01 Trägerrakete item.sat_mapper.name=Oberflächen-Abtastungssatellit item.sat_scanner.name=Satellit mit Tiefenscanning-Modul diff --git a/assets/hbm/lang/en_US.lang b/assets/hbm/lang/en_US.lang index 6435c4d94..b5a4bc563 100644 --- a/assets/hbm/lang/en_US.lang +++ b/assets/hbm/lang/en_US.lang @@ -375,6 +375,8 @@ tile.machine_turbine.name=Steam Turbine container.machineTurbine=Steam Turbine tile.launch_pad.name=Missile Launch Pad container.launchPad=Missile Launch Pad +tile.machine_missile_assembly.name=Missile Assembly Station +container.missileAssembly=Missile Assembly Station tile.sat_dock.name=Cargo Landing Pad container.satDock=Cargo Landing Pad tile.book_guide.name=Hbm's Nuclear Tech Mod Manual [LEGACY] @@ -1647,6 +1649,32 @@ item.missile_bhole.name=Black Hole Missile item.missile_schrabidium.name=Schrabidium Missile item.missile_emp.name=EMP Missile +item.mp_c_1.name=Tier 1 Missile Targeting Circuit +item.mp_c_2.name=Tier 2 Missile Targeting Circuit +item.mp_c_3.name=Tier 3 Missile Targeting Circuit +item.mp_c_4.name=Tier 4 Missile Targeting Circuit +item.mp_c_5.name=Tier 5 Missile Targeting Circuit +item.mp_warhead_10_he.name=Size 10 HE Warhead +item.mp_warhead_10_incendiary.name=Size 10 Incendiary Warhead +item.mp_warhead_10_buster.name=Size 10 Bunker Buster Warhead +item.mp_warhead_10_nuclear.name=Size 10 Nuclear Warhead +item.mp_fuselage_10_kerosene.name=Size 10 Kerosene Fuselage +item.mp_fuselage_10_solid.name=Size 10 Solid Fuel Fuselage +item.mp_fuselage_10_xenon.name=Size 10 Xenon Fuselage +item.mp_fuselage_10_15_kerosene.name=Size 10/15 Kerosene Fuselage +item.mp_fuselage_10_15_solid.name=Size 10/15 Solid Fuel Fuselage +item.mp_fuselage_10_15_hydrogen.name=Size 10/15 Hydrogen Fuselage +item.mp_fuselage_10_15_balefire.name=Size 10/15 BF Fuselage +item.mp_stability_10_flat.name=Size 10 Flat Fins +item.mp_stability_10_cruise.name=Size 10 Cruise Fins +item.mp_stability_15_flat.name=Size 15 Flat Fins +item.mp_stability_15_thin.name=Size 15 Thin Fins +item.mp_thruster_10_kerosene.name=Size 10 Liquid Fuel Thruster +item.mp_thruster_10_solid.name=Size 10 Solid Fuel Thruster +item.mp_thruster_10_xenon.name=Size 10 Ion Thruster +item.mp_thruster_15_kerosene.name=Size 15 Liquid Fuel Thruster +item.mp_thruster_15_kerosene_dual.name=Size 15 Liquid Fuel Twin Thrusters + item.missile_carrier.name=HTR-01 Carrier Rocket item.sat_mapper.name=Surface Mapping Satellite item.sat_scanner.name=Satellite with Depth-Resource Scanning Module diff --git a/assets/hbm/models/missile_assembly.obj b/assets/hbm/models/missile_assembly.obj new file mode 100644 index 000000000..f03472210 --- /dev/null +++ b/assets/hbm/models/missile_assembly.obj @@ -0,0 +1,83 @@ +# Blender v2.76 (sub 0) OBJ File: 'missile_assembly.blend' +# www.blender.org +o Cube_Cube.001 +v -0.500000 0.000000 0.500000 +v -0.500000 1.000000 0.500000 +v -0.500000 0.000000 -0.500000 +v -0.500000 1.000000 -0.500000 +v 0.500000 0.000000 0.500000 +v 0.500000 1.000000 0.500000 +v 0.500000 0.000000 -0.500000 +v 0.500000 1.000000 -0.500000 +v -0.500000 0.250000 0.500000 +v -0.500000 0.250000 -0.500000 +v 0.500000 0.250000 0.500000 +v 0.500000 0.250000 -0.500000 +v -0.500000 0.750000 0.500000 +v -0.500000 0.750000 -0.500000 +v 0.500000 0.750000 0.500000 +v 0.500000 0.750000 -0.500000 +vt 0.250000 -0.000000 +vt 0.250000 0.250000 +vt -0.000000 0.250000 +vt 0.500000 0.000000 +vt 0.750000 -0.000000 +vt 0.750000 0.250000 +vt 0.500000 0.250000 +vt 1.000000 0.000000 +vt 0.250000 0.312500 +vt 0.000000 0.312500 +vt 0.500000 0.312500 +vt 1.000000 0.250000 +vt 1.000000 0.312500 +vt 0.750000 0.312500 +vt 0.750000 0.500000 +vt 0.750000 0.437500 +vt 1.000000 0.437500 +vt 0.000000 0.500000 +vt 0.000000 0.437500 +vt 0.250000 0.437500 +vt 0.250000 0.500000 +vt 0.500000 0.437500 +vt 0.500000 0.500000 +vt 0.000000 0.000000 +vt 1.000000 0.500000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 -1.000000 +vn -1.000000 0.000000 0.000000 +s off +f 12/1/1 10/2/1 9/3/1 +f 3/2/2 7/1/2 5/4/2 +f 8/5/1 4/6/1 2/7/1 +f 14/6/2 16/5/2 15/8/2 +f 11/9/3 5/2/3 7/7/3 +f 9/10/4 1/3/4 5/2/4 +f 12/11/5 7/7/5 3/6/5 +f 1/12/6 9/13/6 10/14/6 +f 4/15/6 14/16/6 13/17/6 +f 2/18/4 13/19/4 15/20/4 +f 6/21/3 15/20/3 16/22/3 +f 8/23/5 16/22/5 14/16/5 +f 10/14/6 9/13/6 13/17/6 +f 15/20/4 13/19/4 9/10/4 +f 16/22/3 15/20/3 11/9/3 +f 14/16/5 16/22/5 12/11/5 +f 11/24/1 12/1/1 9/3/1 +f 1/7/2 3/2/2 5/4/2 +f 6/4/1 8/5/1 2/7/1 +f 13/12/2 14/6/2 15/8/2 +f 12/11/3 11/9/3 7/7/3 +f 11/9/4 9/10/4 5/2/4 +f 10/14/5 12/11/5 3/6/5 +f 3/6/6 1/12/6 10/14/6 +f 2/25/6 4/15/6 13/17/6 +f 6/21/4 2/18/4 15/20/4 +f 8/23/3 6/21/3 16/22/3 +f 4/15/5 8/23/5 14/16/5 +f 14/16/6 10/14/6 13/17/6 +f 11/9/4 15/20/4 9/10/4 +f 12/11/3 16/22/3 11/9/3 +f 10/14/5 14/16/5 12/11/5 diff --git a/assets/hbm/models/missile_parts/mp_f_10_15_kerosene.obj b/assets/hbm/models/missile_parts/mp_f_10_15_kerosene.obj new file mode 100644 index 000000000..b9ca35558 --- /dev/null +++ b/assets/hbm/models/missile_parts/mp_f_10_15_kerosene.obj @@ -0,0 +1,247 @@ +# Blender v2.76 (sub 0) OBJ File: 'mp_f_10_15.blend' +# www.blender.org +o Cylinder.001 +v 0.000000 5.500000 -0.500000 +v 0.000000 9.000000 -0.500000 +v 0.250000 5.500000 -0.433013 +v 0.250000 9.000000 -0.433013 +v 0.433013 5.500000 -0.250000 +v 0.433013 9.000000 -0.250000 +v 0.500000 5.500000 0.000000 +v 0.500000 9.000000 0.000000 +v 0.433013 5.500000 0.250000 +v 0.433013 9.000000 0.250000 +v 0.250000 5.500000 0.433013 +v 0.250000 9.000000 0.433013 +v 0.000000 5.500000 0.500000 +v 0.000000 9.000000 0.500000 +v -0.250000 5.500000 0.433013 +v -0.250000 9.000000 0.433013 +v -0.433013 5.500000 0.250000 +v -0.433013 9.000000 0.250000 +v -0.500000 5.500000 0.000000 +v -0.500000 9.000000 0.000000 +v -0.433013 5.500000 -0.250000 +v -0.433013 9.000000 -0.250000 +v -0.250000 5.500000 -0.433012 +v -0.250000 9.000000 -0.433012 +v 0.000000 4.500000 -0.750000 +v 0.375000 4.500000 -0.649519 +v 0.649519 4.500000 -0.375000 +v 0.750000 4.500000 -0.000000 +v 0.649519 4.500000 0.375000 +v 0.375000 4.500000 0.649519 +v 0.000000 4.500000 0.750000 +v -0.375000 4.500000 0.649519 +v -0.649519 4.500000 0.375000 +v -0.750000 4.500000 0.000000 +v -0.649519 4.500000 -0.375000 +v -0.375000 4.500000 -0.649519 +v -0.000000 0.000000 -0.750000 +v 0.375000 0.000000 -0.649519 +v 0.649519 0.000000 -0.375000 +v 0.750000 0.000000 -0.000000 +v 0.649519 0.000000 0.375000 +v 0.375000 0.000000 0.649519 +v 0.000000 0.000000 0.750000 +v -0.375000 0.000000 0.649519 +v -0.649519 0.000000 0.375000 +v -0.750000 0.000000 0.000000 +v -0.649519 0.000000 -0.375000 +v -0.375001 0.000000 -0.649519 +vt 0.321429 1.000000 +vt 0.285714 1.000000 +vt 0.285714 0.523810 +vt 0.250000 1.000000 +vt 0.250000 0.523810 +vt 0.214286 1.000000 +vt 0.214286 0.523810 +vt 0.178571 1.000000 +vt 0.178571 0.523810 +vt 0.142857 1.000000 +vt 0.142857 0.523810 +vt 0.107143 1.000000 +vt 0.107143 0.523810 +vt 0.071429 1.000000 +vt 0.071429 0.523810 +vt 0.035714 1.000000 +vt 0.035714 0.523810 +vt -0.000000 1.000000 +vt -0.000000 0.523810 +vt 0.428571 1.000000 +vt 0.392857 1.000000 +vt 0.392857 0.523810 +vt 0.434524 0.166667 +vt 0.517857 0.214286 +vt 0.517857 0.166667 +vt 0.357143 1.000000 +vt 0.321429 0.523810 +vt 0.357143 0.523810 +vt 0.178571 0.428571 +vt 0.214286 0.428571 +vt 0.250000 0.428571 +vt 0.250000 -0.000000 +vt 0.285714 -0.000000 +vt 0.321429 0.428571 +vt 0.357143 0.428571 +vt 0.285714 0.428571 +vt 0.392857 0.428571 +vt 0.428571 0.428571 +vt 0.000000 0.428571 +vt 0.035714 0.428571 +vt 0.071429 0.428571 +vt 0.107143 0.428571 +vt 0.142857 0.428571 +vt 0.440476 0.035714 +vt 0.440476 0.107143 +vt 0.559524 0.107143 +vt 0.000000 0.000000 +vt 0.035714 0.000000 +vt 0.107143 0.000000 +vt 0.142857 0.000000 +vt 0.214286 -0.000000 +vt 0.392857 0.000000 +vt 0.071429 0.000000 +vt 0.178571 -0.000000 +vt 0.357143 -0.000000 +vt 0.321429 -0.000000 +vt 0.428571 0.523810 +vt 0.500000 0.148810 +vt 0.476190 0.142857 +vt 0.452381 0.148810 +vt 0.428571 0.190476 +vt 0.434524 0.214286 +vt 0.452381 0.232143 +vt 0.476190 0.238095 +vt 0.500000 0.232143 +vt 0.523810 0.190476 +vt 0.571429 0.071429 +vt 0.559524 0.035714 +vt 0.535714 0.011905 +vt 0.500000 -0.000000 +vt 0.464286 0.011905 +vt 0.428571 0.071429 +vt 0.464286 0.130952 +vt 0.500000 0.142857 +vt 0.535714 0.130952 +vt 0.428571 0.000000 +vn 0.258800 0.000000 -0.965900 +vn 0.707100 0.000000 -0.707100 +vn 0.965900 0.000000 -0.258800 +vn 0.965900 0.000000 0.258800 +vn 0.707100 0.000000 0.707100 +vn 0.258800 0.000000 0.965900 +vn -0.258800 0.000000 0.965900 +vn -0.707100 0.000000 0.707100 +vn -0.965900 0.000000 0.258800 +vn -0.965900 0.000000 -0.258800 +vn 0.000000 1.000000 -0.000000 +vn -0.258800 0.000000 -0.965900 +vn -0.707100 0.000000 -0.707100 +vn 0.938900 0.234700 0.251600 +vn -0.251600 0.234700 -0.938900 +vn 0.251600 0.234700 -0.938900 +vn 0.938900 0.234700 -0.251600 +vn -0.687400 0.234700 -0.687300 +vn 0.687400 0.234700 -0.687300 +vn -0.938900 0.234700 -0.251600 +vn -0.938900 0.234700 0.251600 +vn -0.687300 0.234700 0.687400 +vn -0.251600 0.234700 0.938900 +vn 0.251600 0.234700 0.938900 +vn 0.687300 0.234700 0.687300 +vn 0.000000 -1.000000 0.000000 +vn 0.687400 0.234700 0.687300 +s off +f 2/1/1 4/2/1 3/3/1 +f 4/2/2 6/4/2 5/5/2 +f 6/4/3 8/6/3 7/7/3 +f 8/6/4 10/8/4 9/9/4 +f 10/8/5 12/10/5 11/11/5 +f 12/10/6 14/12/6 13/13/6 +f 14/12/7 16/14/7 15/15/7 +f 16/14/8 18/16/8 17/17/8 +f 18/16/9 20/18/9 19/19/9 +f 20/20/10 22/21/10 21/22/10 +f 22/23/11 10/24/11 6/25/11 +f 24/26/12 2/1/12 1/27/12 +f 22/21/13 24/26/13 23/28/13 +f 9/9/14 29/29/14 28/30/14 +f 27/31/2 39/32/2 38/33/2 +f 1/27/15 25/34/15 36/35/15 +f 1/27/16 3/3/16 26/36/16 +f 5/5/17 7/7/17 28/30/17 +f 23/28/18 36/35/18 35/37/18 +f 5/5/19 27/31/19 26/36/19 +f 21/22/20 35/37/20 34/38/20 +f 19/19/21 34/39/21 33/40/21 +f 17/17/22 33/40/22 32/41/22 +f 13/13/23 15/15/23 32/41/23 +f 13/13/24 31/42/24 30/43/24 +f 11/11/25 30/43/25 29/29/25 +f 42/44/26 44/45/26 48/46/26 +f 34/39/9 46/47/9 45/48/9 +f 31/42/6 43/49/6 42/50/6 +f 28/30/3 40/51/3 39/32/3 +f 34/38/10 35/37/10 47/52/10 +f 32/41/7 44/53/7 43/49/7 +f 29/29/4 41/54/4 40/51/4 +f 36/35/13 48/55/13 47/52/13 +f 26/36/1 38/33/1 37/56/1 +f 33/40/8 45/48/8 44/53/8 +f 30/43/5 42/50/5 41/54/5 +f 25/34/12 37/56/12 48/55/12 +f 1/27/1 2/1/1 3/3/1 +f 3/3/2 4/2/2 5/5/2 +f 5/5/3 6/4/3 7/7/3 +f 7/7/4 8/6/4 9/9/4 +f 9/9/5 10/8/5 11/11/5 +f 11/11/6 12/10/6 13/13/6 +f 13/13/7 14/12/7 15/15/7 +f 15/15/8 16/14/8 17/17/8 +f 17/17/9 18/16/9 19/19/9 +f 19/57/10 20/20/10 21/22/10 +f 6/25/11 4/58/11 2/59/11 +f 2/59/11 24/60/11 22/23/11 +f 22/23/11 20/61/11 18/62/11 +f 18/62/11 16/63/11 22/23/11 +f 14/64/11 12/65/11 10/24/11 +f 10/24/11 8/66/11 6/25/11 +f 6/25/11 2/59/11 22/23/11 +f 22/23/11 16/63/11 14/64/11 +f 14/64/11 10/24/11 22/23/11 +f 23/28/12 24/26/12 1/27/12 +f 21/22/13 22/21/13 23/28/13 +f 7/7/14 9/9/14 28/30/14 +f 26/36/2 27/31/2 38/33/2 +f 23/28/15 1/27/15 36/35/15 +f 25/34/16 1/27/16 26/36/16 +f 27/31/17 5/5/17 28/30/17 +f 21/22/18 23/28/18 35/37/18 +f 3/3/19 5/5/19 26/36/19 +f 19/57/20 21/22/20 34/38/20 +f 17/17/21 19/19/21 33/40/21 +f 15/15/22 17/17/22 32/41/22 +f 31/42/23 13/13/23 32/41/23 +f 11/11/24 13/13/24 30/43/24 +f 9/9/27 11/11/27 29/29/27 +f 48/46/26 37/67/26 38/68/26 +f 38/68/26 39/69/26 40/70/26 +f 40/70/26 41/71/26 42/44/26 +f 42/44/26 43/72/26 44/45/26 +f 44/45/26 45/73/26 46/74/26 +f 46/74/26 47/75/26 48/46/26 +f 48/46/26 38/68/26 40/70/26 +f 40/70/26 42/44/26 48/46/26 +f 44/45/26 46/74/26 48/46/26 +f 33/40/9 34/39/9 45/48/9 +f 30/43/6 31/42/6 42/50/6 +f 27/31/3 28/30/3 39/32/3 +f 46/76/10 34/38/10 47/52/10 +f 31/42/7 32/41/7 43/49/7 +f 28/30/4 29/29/4 40/51/4 +f 35/37/13 36/35/13 47/52/13 +f 25/34/1 26/36/1 37/56/1 +f 32/41/8 33/40/8 44/53/8 +f 29/29/5 30/43/5 41/54/5 +f 36/35/12 25/34/12 48/55/12 diff --git a/assets/hbm/models/missile_parts/mp_s_15.obj b/assets/hbm/models/missile_parts/mp_s_15.obj deleted file mode 100644 index 7d6a5f5aa..000000000 --- a/assets/hbm/models/missile_parts/mp_s_15.obj +++ /dev/null @@ -1,54 +0,0 @@ -# Blender v2.76 (sub 0) OBJ File: 'mp_s_15.blend' -# www.blender.org -o Cube -v 0.093750 1.000000 -1.406250 -v 0.093750 1.000000 1.406250 -v -0.093750 1.000000 1.406250 -v -0.093750 1.000000 -1.406250 -v 0.093750 2.500000 -1.125000 -v 0.093750 2.500000 1.125001 -v -0.093750 2.500000 1.125000 -v -0.093750 2.500000 -1.125000 -v -1.406250 1.000000 -0.093750 -v 1.406250 1.000000 -0.093750 -v 1.406250 1.000000 0.093750 -v -1.406250 1.000000 0.093750 -v -1.125000 2.500000 -0.093750 -v 1.125001 2.500000 -0.093750 -v 1.125000 2.500000 0.093750 -v -1.125000 2.500000 0.093750 -vn 0.000000 -1.000000 0.000000 -vn 0.000000 1.000000 0.000000 -vn 1.000000 0.000000 0.000000 -vn -0.000000 0.184300 0.982900 -vn -1.000000 -0.000000 0.000000 -vn 0.000000 0.184300 -0.982900 -vn 0.000000 0.000000 -1.000000 -vn 0.982900 0.184300 0.000000 -vn -0.000000 -0.000000 1.000000 -vn -0.982900 0.184300 -0.000000 -s off -f 1//1 2//1 3//1 -f 5//2 8//2 7//2 -f 5//3 6//3 2//3 -f 6//4 7//4 3//4 -f 7//5 8//5 4//5 -f 1//6 4//6 8//6 -f 9//1 10//1 11//1 -f 13//2 16//2 15//2 -f 13//7 14//7 10//7 -f 14//8 15//8 11//8 -f 11//9 15//9 16//9 -f 9//10 12//10 16//10 -f 4//1 1//1 3//1 -f 6//2 5//2 7//2 -f 1//3 5//3 2//3 -f 2//4 6//4 3//4 -f 3//5 7//5 4//5 -f 5//6 1//6 8//6 -f 12//1 9//1 11//1 -f 14//2 13//2 15//2 -f 9//7 13//7 10//7 -f 10//8 14//8 11//8 -f 12//9 11//9 16//9 -f 13//10 9//10 16//10 diff --git a/assets/hbm/models/missile_parts/mp_s_15_flat.obj b/assets/hbm/models/missile_parts/mp_s_15_flat.obj new file mode 100644 index 000000000..897656c38 --- /dev/null +++ b/assets/hbm/models/missile_parts/mp_s_15_flat.obj @@ -0,0 +1,164 @@ +# Blender v2.76 (sub 0) OBJ File: 'mp_s_15_flat.blend' +# www.blender.org +o Cube_Cube.001 +v -0.062500 0.500000 0.750000 +v -0.062500 2.500000 0.750000 +v -0.062500 0.500000 -0.750000 +v -0.062500 2.500000 -0.750000 +v 0.062500 0.500000 0.750000 +v 0.062500 2.500000 0.750000 +v 0.062500 0.500000 -0.750000 +v 0.062500 2.500000 -0.750000 +v 0.750000 0.500000 0.062500 +v 0.750000 2.500000 0.062500 +v -0.750000 0.500000 0.062500 +v -0.750000 2.500000 0.062500 +v 0.750000 0.500000 -0.062500 +v 0.750000 2.500000 -0.062500 +v -0.750000 0.500000 -0.062500 +v -0.750000 2.500000 -0.062500 +v -0.062500 1.500000 -1.250000 +v 0.062500 1.500000 -1.250000 +v 0.062500 0.500000 -1.250000 +v -0.062500 0.500000 -1.250000 +v 0.062500 1.500000 1.250000 +v -0.062500 1.500000 1.250000 +v -0.062500 0.500000 1.250000 +v 0.062500 0.500000 1.250000 +v 1.250000 1.500000 -0.062500 +v 1.250000 1.500000 0.062500 +v 1.250000 0.500000 0.062500 +v 1.250000 0.500000 -0.062500 +v -1.250000 1.500000 0.062500 +v -1.250000 1.500000 -0.062500 +v -1.250000 0.500000 -0.062500 +v -1.250000 0.500000 0.062500 +v -0.062500 0.500000 0.687500 +v -0.062500 2.500000 0.687500 +v 0.062500 2.500000 0.687500 +v 0.062500 0.500000 0.687500 +v 0.687500 0.500000 0.062500 +v 0.687500 2.500000 0.062500 +v 0.687500 2.500000 -0.062500 +v 0.687500 0.500000 -0.062500 +v -0.062500 0.500000 -0.687500 +v 0.062500 0.500000 -0.687500 +v 0.062500 2.500000 -0.687500 +v -0.062500 2.500000 -0.687500 +v -0.687500 0.500000 -0.062500 +v -0.687500 2.500000 -0.062500 +v -0.687500 2.500000 0.062500 +v -0.687500 0.500000 0.062500 +vt 0.000000 0.470588 +vt 0.000000 0.000000 +vt 0.058824 0.000000 +vt 0.058824 0.470588 +vt 0.058824 0.941176 +vt 0.411765 0.000000 +vt 0.647059 0.000000 +vt 0.647059 0.470588 +vt -0.000000 1.000000 +vt -0.000000 0.941176 +vt 0.235294 0.941176 +vt 0.294118 0.000000 +vt 0.382353 0.941176 +vt 0.323529 0.941176 +vt 0.323529 0.000000 +vt 0.382353 0.000000 +vt 0.294118 0.941176 +vt 0.294118 1.000000 +vt 0.264706 1.000000 +vt 0.264706 0.941176 +vt 0.235294 1.000000 +vt 0.411765 0.941176 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.447200 -0.894400 +vn 1.000000 0.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.447200 0.894400 +vn 0.894400 0.447200 0.000000 +vn -0.894400 0.447200 0.000000 +vn 0.000000 1.000000 0.000000 +s off +f 18/1/1 19/2/1 20/3/1 +f 18/1/2 17/4/2 4/5/2 +f 7/6/3 19/7/3 18/8/3 +f 20/9/4 19/10/4 7/11/4 +f 17/4/5 20/3/5 3/12/5 +f 22/1/6 23/2/6 24/3/6 +f 22/1/7 21/4/7 6/5/7 +f 1/6/5 23/7/5 22/8/5 +f 24/9/4 23/10/4 1/11/4 +f 21/4/3 24/3/3 5/12/3 +f 26/1/3 27/2/3 28/3/3 +f 26/1/8 25/4/8 14/5/8 +f 9/6/6 27/7/6 26/8/6 +f 28/9/4 27/10/4 9/11/4 +f 25/4/1 28/3/1 13/12/1 +f 30/1/5 31/2/5 32/3/5 +f 30/1/9 29/4/9 12/5/9 +f 15/6/1 31/7/1 30/8/1 +f 32/9/4 31/10/4 15/11/4 +f 29/4/6 32/3/6 11/12/6 +f 34/13/1 35/14/1 36/15/1 +f 34/13/5 33/16/5 1/6/5 +f 35/17/10 34/18/10 2/19/10 +f 36/15/3 35/14/3 6/17/3 +f 33/20/4 36/19/4 5/21/4 +f 38/13/5 39/14/5 40/15/5 +f 38/13/6 37/16/6 9/6/6 +f 39/17/10 38/18/10 10/19/10 +f 40/15/1 39/14/1 14/17/1 +f 37/20/4 40/19/4 13/21/4 +f 42/16/6 43/13/6 44/14/6 +f 42/20/4 41/19/4 3/21/4 +f 43/13/3 42/16/3 7/6/3 +f 44/19/10 43/20/10 8/17/10 +f 41/15/5 44/14/5 4/17/5 +f 46/13/3 47/14/3 48/15/3 +f 46/13/1 45/16/1 15/6/1 +f 47/19/10 46/20/10 16/17/10 +f 48/15/6 47/14/6 12/17/6 +f 45/20/4 48/19/4 11/21/4 +f 17/4/1 18/1/1 20/3/1 +f 8/10/2 18/1/2 4/5/2 +f 8/22/3 7/6/3 18/8/3 +f 3/21/4 20/9/4 7/11/4 +f 4/17/5 17/4/5 3/12/5 +f 21/4/6 22/1/6 24/3/6 +f 2/10/7 22/1/7 6/5/7 +f 2/22/5 1/6/5 22/8/5 +f 5/21/4 24/9/4 1/11/4 +f 6/17/3 21/4/3 5/12/3 +f 25/4/3 26/1/3 28/3/3 +f 10/10/8 26/1/8 14/5/8 +f 10/22/6 9/6/6 26/8/6 +f 13/21/4 28/9/4 9/11/4 +f 14/17/1 25/4/1 13/12/1 +f 29/4/5 30/1/5 32/3/5 +f 16/10/9 30/1/9 12/5/9 +f 16/22/1 15/6/1 30/8/1 +f 11/21/4 32/9/4 15/11/4 +f 12/17/6 29/4/6 11/12/6 +f 33/16/1 34/13/1 36/15/1 +f 2/22/5 34/13/5 1/6/5 +f 6/20/10 35/17/10 2/19/10 +f 5/12/3 36/15/3 6/17/3 +f 1/11/4 33/20/4 5/21/4 +f 37/16/5 38/13/5 40/15/5 +f 10/22/6 38/13/6 9/6/6 +f 14/20/10 39/17/10 10/19/10 +f 13/12/1 40/15/1 14/17/1 +f 9/11/4 37/20/4 13/21/4 +f 41/15/6 42/16/6 44/14/6 +f 7/11/4 42/20/4 3/21/4 +f 8/22/3 43/13/3 7/6/3 +f 4/18/10 44/19/10 8/17/10 +f 3/12/5 41/15/5 4/17/5 +f 45/16/3 46/13/3 48/15/3 +f 16/22/1 46/13/1 15/6/1 +f 12/18/10 47/19/10 16/17/10 +f 11/12/6 48/15/6 12/17/6 +f 15/11/4 45/20/4 11/21/4 diff --git a/assets/hbm/models/missile_parts/mp_s_15_thin.obj b/assets/hbm/models/missile_parts/mp_s_15_thin.obj new file mode 100644 index 000000000..c610ff8ad --- /dev/null +++ b/assets/hbm/models/missile_parts/mp_s_15_thin.obj @@ -0,0 +1,146 @@ +# Blender v2.76 (sub 0) OBJ File: 'mp_s_15_thin.blend' +# www.blender.org +o Cube_Cube.001 +v -0.031250 1.000000 0.750000 +v -0.031250 3.000000 0.750000 +v -0.031250 1.000000 -0.750000 +v -0.031250 3.000000 -0.750000 +v 0.031250 1.000000 0.750000 +v 0.031250 3.000000 0.750000 +v 0.031250 1.000000 -0.750000 +v 0.031250 3.000000 -0.750000 +v 0.750000 1.000000 0.031250 +v 0.750000 3.000000 0.031250 +v -0.750000 1.000000 0.031250 +v -0.750000 3.000000 0.031250 +v 0.750000 1.000000 -0.031250 +v 0.750000 3.000000 -0.031250 +v -0.750000 1.000000 -0.031250 +v -0.750000 3.000000 -0.031250 +v -0.031250 2.500000 -1.250000 +v 0.031250 2.500000 -1.250000 +v 0.031250 1.000000 -1.500000 +v -0.031250 1.000000 -1.500000 +v 0.031250 2.500000 1.250000 +v -0.031250 2.500000 1.250000 +v -0.031250 1.000000 1.500000 +v 0.031250 1.000000 1.500000 +v 1.250000 2.500000 -0.031250 +v 1.250000 2.500000 0.031250 +v 1.500000 1.000000 0.031250 +v 1.500000 1.000000 -0.031250 +v -1.250000 2.500000 0.031250 +v -1.250000 2.500000 -0.031250 +v -1.500000 1.000000 -0.031250 +v -1.500000 1.000000 0.031250 +v -0.031250 1.000000 0.687500 +v -0.031250 3.000000 0.687500 +v 0.031250 3.000000 0.687500 +v 0.031250 1.000000 0.687500 +v 0.687500 1.000000 0.031250 +v 0.687500 3.000000 0.031250 +v 0.687500 3.000000 -0.031250 +v 0.687500 1.000000 -0.031250 +v -0.031250 1.000000 -0.687500 +v 0.031250 1.000000 -0.687500 +v 0.031250 3.000000 -0.687500 +v -0.031250 3.000000 -0.687500 +v -0.687500 1.000000 -0.031250 +v -0.687500 3.000000 -0.031250 +v -0.687500 3.000000 0.031250 +v -0.687500 1.000000 0.031250 +vn 0.000000 0.164400 -0.986400 +vn 0.000000 0.707100 -0.707100 +vn 1.000000 0.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn 0.000000 0.164400 0.986400 +vn 0.000000 0.707100 0.707100 +vn 0.986400 0.164400 0.000000 +vn 0.707100 0.707100 0.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.986400 0.164400 0.000000 +vn -0.707100 0.707100 0.000000 +vn 0.000000 1.000000 0.000000 +s off +f 18//1 19//1 20//1 +f 18//2 17//2 4//2 +f 7//3 19//3 18//3 +f 20//4 19//4 7//4 +f 17//5 20//5 3//5 +f 22//6 23//6 24//6 +f 22//7 21//7 6//7 +f 1//5 23//5 22//5 +f 24//4 23//4 1//4 +f 21//3 24//3 5//3 +f 26//8 27//8 28//8 +f 26//9 25//9 14//9 +f 9//10 27//10 26//10 +f 28//4 27//4 9//4 +f 25//11 28//11 13//11 +f 30//12 31//12 32//12 +f 30//13 29//13 12//13 +f 15//11 31//11 30//11 +f 32//4 31//4 15//4 +f 29//10 32//10 11//10 +f 34//11 35//11 36//11 +f 34//5 33//5 1//5 +f 35//14 34//14 2//14 +f 36//3 35//3 6//3 +f 33//4 36//4 5//4 +f 38//5 39//5 40//5 +f 38//10 37//10 9//10 +f 39//14 38//14 10//14 +f 40//11 39//11 14//11 +f 37//4 40//4 13//4 +f 42//10 43//10 44//10 +f 42//4 41//4 3//4 +f 43//3 42//3 7//3 +f 44//14 43//14 8//14 +f 41//5 44//5 4//5 +f 46//3 47//3 48//3 +f 46//11 45//11 15//11 +f 47//14 46//14 16//14 +f 48//10 47//10 12//10 +f 45//4 48//4 11//4 +f 17//1 18//1 20//1 +f 8//2 18//2 4//2 +f 8//3 7//3 18//3 +f 3//4 20//4 7//4 +f 4//5 17//5 3//5 +f 21//6 22//6 24//6 +f 2//7 22//7 6//7 +f 2//5 1//5 22//5 +f 5//4 24//4 1//4 +f 6//3 21//3 5//3 +f 25//8 26//8 28//8 +f 10//9 26//9 14//9 +f 10//10 9//10 26//10 +f 13//4 28//4 9//4 +f 14//11 25//11 13//11 +f 29//12 30//12 32//12 +f 16//13 30//13 12//13 +f 16//11 15//11 30//11 +f 11//4 32//4 15//4 +f 12//10 29//10 11//10 +f 33//11 34//11 36//11 +f 2//5 34//5 1//5 +f 6//14 35//14 2//14 +f 5//3 36//3 6//3 +f 1//4 33//4 5//4 +f 37//5 38//5 40//5 +f 10//10 38//10 9//10 +f 14//14 39//14 10//14 +f 13//11 40//11 14//11 +f 9//4 37//4 13//4 +f 41//10 42//10 44//10 +f 7//4 42//4 3//4 +f 8//3 43//3 7//3 +f 4//14 44//14 8//14 +f 3//5 41//5 4//5 +f 45//3 46//3 48//3 +f 16//11 46//11 15//11 +f 12//14 47//14 16//14 +f 11//10 48//10 12//10 +f 15//4 45//4 11//4 diff --git a/assets/hbm/models/missile_parts/mp_t_10_xenon.obj b/assets/hbm/models/missile_parts/mp_t_10_xenon.obj new file mode 100644 index 000000000..80f071fbb --- /dev/null +++ b/assets/hbm/models/missile_parts/mp_t_10_xenon.obj @@ -0,0 +1,436 @@ +# Blender v2.76 (sub 0) OBJ File: 'mp_t_10_xenon.blend' +# www.blender.org +o Cylinder +v -0.000000 0.250000 -0.375000 +v 0.000000 0.500000 -0.500000 +v 0.187500 0.250000 -0.324760 +v 0.250000 0.500000 -0.433013 +v 0.324760 0.250000 -0.187500 +v 0.433013 0.500000 -0.250000 +v 0.375000 0.250000 0.000000 +v 0.500000 0.500000 0.000000 +v 0.324760 0.250000 0.187500 +v 0.433013 0.500000 0.250000 +v 0.187500 0.250000 0.324760 +v 0.250000 0.500000 0.433013 +v 0.000000 0.250000 0.375000 +v 0.000000 0.500000 0.500000 +v -0.187500 0.250000 0.324760 +v -0.250000 0.500000 0.433013 +v -0.324759 0.250000 0.187500 +v -0.433013 0.500000 0.250000 +v -0.375000 0.250000 0.000000 +v -0.500000 0.500000 0.000000 +v -0.324760 0.250000 -0.187500 +v -0.433013 0.500000 -0.250000 +v -0.187500 0.250000 -0.324759 +v -0.250000 0.500000 -0.433013 +v 0.000000 0.000000 -0.375000 +v 0.187500 0.000000 -0.324760 +v 0.324760 0.000000 -0.187500 +v 0.375000 0.000000 0.000000 +v 0.324760 0.000000 0.187500 +v 0.187500 0.000000 0.324760 +v 0.000000 0.000000 0.375000 +v -0.187500 0.000000 0.324760 +v -0.324759 0.000000 0.187500 +v -0.375000 0.000000 0.000000 +v -0.324760 0.000000 -0.187500 +v -0.187500 0.000000 -0.324759 +v -0.000000 0.000000 -0.325000 +v 0.162500 0.000000 -0.281458 +v 0.281458 0.000000 -0.162500 +v 0.325000 0.000000 0.000000 +v 0.281458 0.000000 0.162500 +v 0.162500 0.000000 0.281458 +v 0.000000 0.000000 0.325000 +v -0.162500 0.000000 0.281458 +v -0.281458 0.000000 0.162500 +v -0.325000 0.000000 0.000000 +v -0.281458 0.000000 -0.162500 +v -0.162500 0.000000 -0.281458 +v -0.000000 0.000000 -0.175000 +v 0.087500 0.000000 -0.151554 +v 0.151554 0.000000 -0.087500 +v 0.175000 0.000000 0.000000 +v 0.151554 0.000000 0.087500 +v 0.087500 0.000000 0.151554 +v 0.000000 0.000000 0.175000 +v -0.087500 0.000000 0.151554 +v -0.151554 0.000000 0.087500 +v -0.175000 0.000000 0.000000 +v -0.151554 0.000000 -0.087500 +v -0.087500 0.000000 -0.151554 +v 0.162500 0.050000 -0.281458 +v -0.000000 0.050000 -0.325000 +v 0.281458 0.050000 -0.162500 +v 0.325000 0.050000 0.000000 +v 0.281458 0.050000 0.162500 +v 0.162500 0.050000 0.281458 +v 0.000000 0.050000 0.325000 +v -0.162500 0.050000 0.281458 +v -0.281458 0.050000 0.162500 +v -0.325000 0.050000 0.000000 +v -0.281458 0.050000 -0.162500 +v -0.162500 0.050000 -0.281458 +v 0.087500 0.050000 -0.151554 +v -0.000000 0.050000 -0.175000 +v 0.151554 0.050000 -0.087500 +v 0.175000 0.050000 0.000000 +v 0.151554 0.050000 0.087500 +v 0.087500 0.050000 0.151554 +v 0.000000 0.050000 0.175000 +v -0.087500 0.050000 0.151554 +v -0.151554 0.050000 0.087500 +v -0.175000 0.050000 0.000000 +v -0.151554 0.050000 -0.087500 +v -0.087500 0.050000 -0.151554 +vt 0.750000 0.083333 +vt 0.666667 0.083333 +vt 0.666667 0.000000 +vt 0.583333 0.083333 +vt 0.583333 -0.000000 +vt 0.500000 0.083333 +vt 0.500000 -0.000000 +vt 0.416667 0.083333 +vt 0.333333 0.083333 +vt 0.333333 -0.000000 +vt 0.250000 0.083333 +vt 0.250000 0.000000 +vt 0.166667 0.083333 +vt 0.083333 0.083333 +vt 0.083333 0.000000 +vt 0.000000 0.083333 +vt 0.000000 -0.000000 +vt 1.000000 0.083333 +vt 0.916667 0.083333 +vt 0.916667 0.000000 +vt 0.020833 0.250000 +vt 0.166667 0.500000 +vt 0.312500 0.250000 +vt 0.833333 0.083333 +vt 0.750000 -0.000000 +vt 0.833333 0.000000 +vt 0.625000 0.166667 +vt 0.625000 0.083333 +vt 0.687500 0.083333 +vt 0.437500 0.166667 +vt 0.437500 0.083333 +vt 0.687500 0.166667 +vt 0.000000 0.166667 +vt 0.062500 0.083333 +vt 0.062500 0.166667 +vt 0.125000 0.083333 +vt 0.125000 0.166667 +vt 0.187500 0.083333 +vt 0.187500 0.166667 +vt 0.250000 0.166667 +vt 0.312500 0.083333 +vt 0.312500 0.166667 +vt 0.375000 0.083333 +vt 0.562500 0.166667 +vt 0.562500 0.083333 +vt 0.500000 0.166667 +vt 0.375000 0.166667 +vt 0.395833 0.395833 +vt 0.354167 0.354167 +vt 0.375000 0.354167 +vt 0.333333 0.291667 +vt 0.354167 0.291667 +vt 0.354167 0.229167 +vt 0.375000 0.229167 +vt 0.395833 0.187500 +vt 0.395833 0.208333 +vt 0.458333 0.166667 +vt 0.458333 0.187500 +vt 0.520833 0.187500 +vt 0.520833 0.208333 +vt 0.562500 0.229167 +vt 0.541667 0.229167 +vt 0.583333 0.291667 +vt 0.562500 0.291667 +vt 0.562500 0.354167 +vt 0.541667 0.354167 +vt 0.520833 0.395833 +vt 0.520833 0.375000 +vt 0.458333 0.416667 +vt 0.458333 0.395833 +vt 0.395833 0.375000 +vt 0.250000 0.104167 +vt 0.125000 0.520833 +vt 0.125000 0.500000 +vt 0.416667 0.520833 +vt 0.416667 0.500000 +vt 0.458333 0.500000 +vt 0.312500 0.104167 +vt 0.625000 0.104167 +vt 0.500000 0.291667 +vt 0.416667 0.291667 +vt 0.437500 0.333333 +vt 0.375000 0.520833 +vt 0.375000 0.500000 +vt 0.375000 0.104167 +vt 0.687500 0.104167 +vt 0.333333 0.520833 +vt 0.333333 0.500000 +vt 0.437500 0.104167 +vt 0.000000 0.104167 +vt 0.291667 0.520833 +vt 0.291667 0.500000 +vt 0.770833 0.250000 +vt 0.812500 0.208333 +vt 0.833333 0.229167 +vt 0.750000 0.187500 +vt 0.812500 0.187500 +vt 0.770833 0.125000 +vt 0.812500 0.166667 +vt 0.791667 0.104167 +vt 0.833333 0.145833 +vt 0.854167 0.083333 +vt 0.854167 0.145833 +vt 0.916667 0.104167 +vt 0.875000 0.145833 +vt 0.937500 0.125000 +vt 0.895833 0.166667 +vt 0.958333 0.187500 +vt 0.895833 0.187500 +vt 0.937500 0.250000 +vt 0.895833 0.208333 +vt 0.916667 0.270833 +vt 0.875000 0.229167 +vt 0.854167 0.291667 +vt 0.854167 0.229167 +vt 0.791667 0.270833 +vt 0.458333 0.520833 +vt 0.500000 0.500000 +vt 0.166667 0.520833 +vt 0.208333 0.500000 +vt 0.187500 0.104167 +vt -0.000000 0.520833 +vt -0.000000 0.500000 +vt 0.041667 0.500000 +vt 0.208333 0.520833 +vt 0.250000 0.500000 +vt 0.125000 0.104167 +vt 0.041667 0.520833 +vt 0.083333 0.500000 +vt 0.562500 0.104167 +vt 0.250000 0.520833 +vt 0.062500 0.104167 +vt 0.083333 0.520833 +vt 0.500000 0.104167 +vt 0.416667 -0.000000 +vt 0.166667 0.000000 +vt 1.000000 -0.000000 +vt 0.250000 0.187500 +vt 0.166667 0.166667 +vt 0.083333 0.187500 +vt -0.000000 0.333333 +vt 0.020833 0.416667 +vt 0.083333 0.479167 +vt 0.250000 0.479167 +vt 0.312500 0.416667 +vt 0.333333 0.333333 +vt 0.750000 0.166667 +vt 0.458333 0.333333 +vt 0.479167 0.333333 +vt 0.500000 0.312500 +vt 0.500000 0.270833 +vt 0.479167 0.250000 +vt 0.458333 0.250000 +vt 0.437500 0.250000 +vt 0.416667 0.270833 +vt 0.416667 0.312500 +vt 0.750000 0.104167 +vt 0.500000 0.520833 +vn 0.233100 -0.434900 -0.869800 +vn 0.636700 -0.434900 -0.636700 +vn 0.869800 -0.434900 -0.233100 +vn 0.869800 -0.434900 0.233100 +vn 0.636700 -0.434900 0.636700 +vn 0.233100 -0.434900 0.869800 +vn -0.233100 -0.434900 0.869800 +vn -0.636700 -0.434900 0.636700 +vn -0.869800 -0.434900 0.233100 +vn -0.869800 -0.434900 -0.233100 +vn 0.000000 1.000000 0.000000 +vn -0.233100 -0.434900 -0.869800 +vn -0.636700 -0.434900 -0.636700 +vn -0.707100 0.000000 -0.707100 +vn 0.707100 0.000000 -0.707100 +vn -0.965900 0.000000 -0.258800 +vn -0.965900 0.000000 0.258800 +vn -0.707100 0.000000 0.707100 +vn -0.258800 0.000000 0.965900 +vn 0.258800 0.000000 0.965900 +vn 0.707100 0.000000 0.707100 +vn 0.965900 0.000000 0.258800 +vn -0.258800 0.000000 -0.965900 +vn 0.258800 0.000000 -0.965900 +vn 0.965900 0.000000 -0.258800 +vn 0.000000 -1.000000 0.000000 +s off +f 2/1/1 4/2/1 3/3/1 +f 4/2/2 6/4/2 5/5/2 +f 5/5/3 6/4/3 8/6/3 +f 7/7/4 8/6/4 10/8/4 +f 10/8/5 12/9/5 11/10/5 +f 12/9/6 14/11/6 13/12/6 +f 13/12/7 14/11/7 16/13/7 +f 16/13/8 18/14/8 17/15/8 +f 18/14/9 20/16/9 19/17/9 +f 20/18/10 22/19/10 21/20/10 +f 22/21/11 14/22/11 6/23/11 +f 24/24/12 2/1/12 1/25/12 +f 22/19/13 24/24/13 23/26/13 +f 23/27/14 36/28/14 35/29/14 +f 5/30/15 27/31/15 26/6/15 +f 21/32/16 35/29/16 34/1/16 +f 19/33/17 34/16/17 33/34/17 +f 17/35/18 33/34/18 32/36/18 +f 15/37/19 32/36/19 31/38/19 +f 13/39/20 31/38/20 30/11/20 +f 11/40/21 30/11/21 29/41/21 +f 9/42/22 29/41/22 28/43/22 +f 1/44/23 25/45/23 36/28/23 +f 3/46/24 26/6/24 25/45/24 +f 7/47/25 28/43/25 27/31/25 +f 32/48/26 33/49/26 45/50/26 +f 33/49/26 34/51/26 46/52/26 +f 35/53/26 47/54/26 46/52/26 +f 36/55/26 48/56/26 47/54/26 +f 25/57/26 37/58/26 48/56/26 +f 25/57/26 26/59/26 38/60/26 +f 26/59/26 27/61/26 39/62/26 +f 27/61/26 28/63/26 40/64/26 +f 29/65/26 41/66/26 40/64/26 +f 30/67/26 42/68/26 41/66/26 +f 31/69/26 43/70/26 42/68/26 +f 32/48/26 44/71/26 43/70/26 +f 43/72/23 67/11/23 66/41/23 +f 49/73/24 74/74/24 73/22/24 +f 56/75/18 80/76/18 81/77/18 +f 42/78/14 66/41/14 65/43/14 +f 37/79/20 62/28/20 72/29/20 +f 53/80/26 59/81/26 49/82/26 +f 55/83/19 79/84/19 80/76/19 +f 41/85/16 65/43/16 64/31/16 +f 48/86/21 72/29/21 71/1/21 +f 54/87/20 78/88/20 79/84/20 +f 40/89/17 64/31/17 63/6/17 +f 47/90/22 71/16/22 70/34/22 +f 53/91/21 77/92/21 78/88/21 +f 69/93/26 81/94/26 80/95/26 +f 69/93/26 70/96/26 82/97/26 +f 71/98/26 83/99/26 82/97/26 +f 72/100/26 84/101/26 83/99/26 +f 62/102/26 74/103/26 84/101/26 +f 61/104/26 73/105/26 74/103/26 +f 61/104/26 63/106/26 75/107/26 +f 64/108/26 76/109/26 75/107/26 +f 65/110/26 77/111/26 76/109/26 +f 66/112/26 78/113/26 77/111/26 +f 67/114/26 79/115/26 78/113/26 +f 68/116/26 80/95/26 79/115/26 +f 57/117/17 81/77/17 82/118/17 +f 50/119/15 73/22/15 75/120/15 +f 44/121/24 68/38/24 67/11/24 +f 58/122/16 82/123/16 83/124/16 +f 51/125/25 75/120/25 76/126/25 +f 45/127/15 69/36/15 68/38/15 +f 59/128/14 83/124/14 84/129/14 +f 38/130/19 61/45/19 62/28/19 +f 52/131/22 76/126/22 77/92/22 +f 46/132/25 70/34/25 69/36/25 +f 60/133/23 84/129/23 74/74/23 +f 39/134/18 63/6/18 61/45/18 +f 1/25/1 2/1/1 3/3/1 +f 3/3/2 4/2/2 5/5/2 +f 7/7/3 5/5/3 8/6/3 +f 9/135/4 7/7/4 10/8/4 +f 9/135/5 10/8/5 11/10/5 +f 11/10/6 12/9/6 13/12/6 +f 15/136/7 13/12/7 16/13/7 +f 15/136/8 16/13/8 17/15/8 +f 17/15/9 18/14/9 19/17/9 +f 19/137/10 20/18/10 21/20/10 +f 6/23/11 4/138/11 2/139/11 +f 2/139/11 24/140/11 22/21/11 +f 22/21/11 20/141/11 18/142/11 +f 18/142/11 16/143/11 14/22/11 +f 14/22/11 12/144/11 10/145/11 +f 10/145/11 8/146/11 6/23/11 +f 6/23/11 2/139/11 22/21/11 +f 22/21/11 18/142/11 14/22/11 +f 14/22/11 10/145/11 6/23/11 +f 23/26/12 24/24/12 1/25/12 +f 21/20/13 22/19/13 23/26/13 +f 21/32/14 23/27/14 35/29/14 +f 3/46/15 5/30/15 26/6/15 +f 19/147/16 21/32/16 34/1/16 +f 17/35/17 19/33/17 33/34/17 +f 15/37/18 17/35/18 32/36/18 +f 13/39/19 15/37/19 31/38/19 +f 11/40/20 13/39/20 30/11/20 +f 9/42/21 11/40/21 29/41/21 +f 7/47/22 9/42/22 28/43/22 +f 23/27/23 1/44/23 36/28/23 +f 1/44/24 3/46/24 25/45/24 +f 5/30/25 7/47/25 27/31/25 +f 44/71/26 32/48/26 45/50/26 +f 45/50/26 33/49/26 46/52/26 +f 34/51/26 35/53/26 46/52/26 +f 35/53/26 36/55/26 47/54/26 +f 36/55/26 25/57/26 48/56/26 +f 37/58/26 25/57/26 38/60/26 +f 38/60/26 26/59/26 39/62/26 +f 39/62/26 27/61/26 40/64/26 +f 28/63/26 29/65/26 40/64/26 +f 29/65/26 30/67/26 41/66/26 +f 30/67/26 31/69/26 42/68/26 +f 31/69/26 32/48/26 43/70/26 +f 42/78/23 43/72/23 66/41/23 +f 50/119/24 49/73/24 73/22/24 +f 57/117/18 56/75/18 81/77/18 +f 41/85/14 42/78/14 65/43/14 +f 48/86/20 37/79/20 72/29/20 +f 49/82/26 50/148/26 53/80/26 +f 51/149/26 52/150/26 53/80/26 +f 53/80/26 54/151/26 55/152/26 +f 55/152/26 56/153/26 53/80/26 +f 57/154/26 58/155/26 59/81/26 +f 59/81/26 60/156/26 49/82/26 +f 50/148/26 51/149/26 53/80/26 +f 53/80/26 56/153/26 57/154/26 +f 57/154/26 59/81/26 53/80/26 +f 56/75/19 55/83/19 80/76/19 +f 40/89/16 41/85/16 64/31/16 +f 47/157/21 48/86/21 71/1/21 +f 55/83/20 54/87/20 79/84/20 +f 39/134/17 40/89/17 63/6/17 +f 46/132/22 47/90/22 70/34/22 +f 54/87/21 53/91/21 78/88/21 +f 68/116/26 69/93/26 80/95/26 +f 81/94/26 69/93/26 82/97/26 +f 70/96/26 71/98/26 82/97/26 +f 71/98/26 72/100/26 83/99/26 +f 72/100/26 62/102/26 84/101/26 +f 62/102/26 61/104/26 74/103/26 +f 73/105/26 61/104/26 75/107/26 +f 63/106/26 64/108/26 75/107/26 +f 64/108/26 65/110/26 76/109/26 +f 65/110/26 66/112/26 77/111/26 +f 66/112/26 67/114/26 78/113/26 +f 67/114/26 68/116/26 79/115/26 +f 58/158/17 57/117/17 82/118/17 +f 51/125/15 50/119/15 75/120/15 +f 43/72/24 44/121/24 67/11/24 +f 59/128/16 58/122/16 83/124/16 +f 52/131/25 51/125/25 76/126/25 +f 44/121/15 45/127/15 68/38/15 +f 60/133/14 59/128/14 84/129/14 +f 37/79/19 38/130/19 62/28/19 +f 53/91/22 52/131/22 77/92/22 +f 45/127/25 46/132/25 69/36/25 +f 49/73/23 60/133/23 74/74/23 +f 38/130/18 39/134/18 61/45/18 diff --git a/assets/hbm/models/missile_parts/mp_t_15_kerosene.obj b/assets/hbm/models/missile_parts/mp_t_15_kerosene.obj new file mode 100644 index 000000000..f3b6ca2cc --- /dev/null +++ b/assets/hbm/models/missile_parts/mp_t_15_kerosene.obj @@ -0,0 +1,357 @@ +# Blender v2.76 (sub 0) OBJ File: 'mp_t_15_kerosene.blend' +# www.blender.org +o Cylinder +v -0.000000 1.250000 -0.637500 +v 0.000000 1.500000 -0.750000 +v 0.318750 1.250000 -0.552091 +v 0.375000 1.500000 -0.649519 +v 0.552091 1.250000 -0.318750 +v 0.649519 1.500000 -0.375000 +v 0.637500 1.250000 0.000000 +v 0.750000 1.500000 0.000000 +v 0.552091 1.250000 0.318750 +v 0.649519 1.500000 0.375000 +v 0.318750 1.250000 0.552091 +v 0.375000 1.500000 0.649519 +v 0.000000 1.250000 0.637500 +v 0.000000 1.500000 0.750000 +v -0.318750 1.250000 0.552091 +v -0.375000 1.500000 0.649519 +v -0.552091 1.250000 0.318750 +v -0.649519 1.500000 0.375000 +v -0.637500 1.250000 0.000000 +v -0.750000 1.500000 0.000000 +v -0.552091 1.250000 -0.318750 +v -0.649519 1.500000 -0.375000 +v -0.318750 1.250000 -0.552091 +v -0.375000 1.500000 -0.649519 +v -0.253125 0.625000 -0.438425 +v -0.438425 0.625000 -0.253125 +v -0.506250 0.625000 0.000000 +v -0.438425 0.625000 0.253125 +v -0.253125 0.625000 0.438425 +v 0.000000 0.625000 0.506250 +v 0.253125 0.625000 0.438425 +v 0.438425 0.625000 0.253125 +v 0.506250 0.625000 0.000000 +v 0.438425 0.625000 -0.253125 +v 0.253125 0.625000 -0.438425 +v -0.000000 0.625000 -0.506250 +v -0.000000 1.125000 -0.281250 +v -0.140625 1.125000 -0.243569 +v -0.243570 1.125000 -0.140625 +v -0.281250 1.125000 0.000000 +v -0.243570 1.125000 0.140625 +v -0.140625 1.125000 0.243570 +v -0.000000 1.125000 0.281250 +v 0.140625 1.125000 0.243570 +v 0.243569 1.125000 0.140625 +v 0.281250 1.125000 0.000000 +v 0.243569 1.125000 -0.140625 +v 0.140625 1.125000 -0.243570 +v 0.000000 0.000000 -0.562500 +v -0.281250 0.000000 -0.487139 +v -0.487139 0.000000 -0.281250 +v -0.562500 0.000000 0.000000 +v -0.487139 0.000000 0.281250 +v -0.281250 0.000000 0.487139 +v 0.000000 0.000000 0.562500 +v 0.281250 0.000000 0.487139 +v 0.487139 0.000000 0.281250 +v 0.562500 0.000000 0.000000 +v 0.487139 0.000000 -0.281250 +v 0.281250 0.000000 -0.487139 +v 0.000000 0.000000 -0.421875 +v -0.210938 0.000000 -0.365354 +v -0.365355 0.000000 -0.210937 +v -0.421875 0.000000 0.000000 +v -0.365354 0.000000 0.210938 +v -0.210937 0.000000 0.365355 +v 0.000000 0.000000 0.421875 +v 0.210938 0.000000 0.365354 +v 0.365354 0.000000 0.210938 +v 0.421875 0.000000 0.000000 +v 0.365354 0.000000 -0.210937 +v 0.210938 0.000000 -0.365354 +v -0.000000 1.000000 -0.210937 +v -0.105469 1.000000 -0.182677 +v -0.182677 1.000000 -0.105469 +v -0.210938 1.000000 0.000000 +v -0.182677 1.000000 0.105469 +v -0.105469 1.000000 0.182677 +v -0.000000 1.000000 0.210938 +v 0.105469 1.000000 0.182677 +v 0.182677 1.000000 0.105469 +v 0.210937 1.000000 0.000000 +v 0.182677 1.000000 -0.105469 +v 0.105469 1.000000 -0.182677 +v -0.000000 1.250000 -0.431250 +v 0.215625 1.250000 -0.373473 +v 0.373473 1.250000 -0.215625 +v 0.431250 1.250000 0.000000 +v 0.373473 1.250000 0.215625 +v 0.215625 1.250000 0.373473 +v 0.000000 1.250000 0.431250 +v -0.215625 1.250000 0.373474 +v -0.373473 1.250000 0.215625 +v -0.431250 1.250000 0.000000 +v -0.373474 1.250000 -0.215625 +v -0.215625 1.250000 -0.373473 +v 0.187500 1.125000 -0.324759 +v -0.000000 1.125000 -0.375000 +v 0.324760 1.125000 -0.187500 +v 0.375000 1.125000 0.000000 +v 0.324759 1.125000 0.187500 +v 0.187500 1.125000 0.324760 +v 0.000000 1.125000 0.375000 +v -0.187500 1.125000 0.324760 +v -0.324759 1.125000 0.187500 +v -0.375000 1.125000 0.000000 +v -0.324760 1.125000 -0.187500 +v -0.187500 1.125000 -0.324759 +vn 0.237400 -0.398600 -0.885900 +vn 0.648500 -0.398600 -0.648500 +vn 0.885900 -0.398600 -0.237400 +vn 0.885900 -0.398600 0.237400 +vn 0.648500 -0.398600 0.648500 +vn 0.237400 -0.398600 0.885900 +vn -0.237400 -0.398600 0.885900 +vn -0.648500 -0.398600 0.648500 +vn -0.885900 -0.398600 0.237400 +vn -0.885900 -0.398600 -0.237400 +vn 0.000000 1.000000 0.000000 +vn -0.237400 -0.398600 -0.885900 +vn -0.648500 -0.398600 -0.648500 +vn 0.000000 -1.000000 0.000000 +vn -0.257800 0.086600 -0.962300 +vn -0.237400 0.398600 -0.885900 +vn 0.648500 0.398600 0.648500 +vn -0.648500 0.398600 0.648500 +vn 0.237400 0.398600 -0.885900 +vn -0.648500 0.398600 -0.648500 +vn 0.885900 0.398600 0.237400 +vn -0.237400 0.398600 0.885900 +vn -0.885900 0.398600 -0.237400 +vn 0.885900 0.398600 -0.237400 +vn 0.237400 0.398600 0.885900 +vn -0.885900 0.398600 0.237400 +vn 0.648500 0.398600 -0.648500 +vn 0.704400 0.086600 0.704400 +vn -0.704400 0.086600 0.704500 +vn 0.257800 0.086600 -0.962300 +vn -0.704500 0.086600 -0.704400 +vn 0.962300 0.086600 0.257800 +vn -0.257800 0.086600 0.962300 +vn -0.962300 0.086600 -0.257800 +vn 0.962300 0.086600 -0.257800 +vn 0.257800 0.086600 0.962300 +vn -0.962300 0.086600 0.257800 +vn 0.704500 0.086600 -0.704400 +vn -0.946500 -0.199600 -0.253600 +vn 0.253600 -0.199600 -0.946500 +vn 0.946500 -0.199600 0.253600 +vn -0.946500 -0.199600 0.253600 +vn -0.253600 -0.199600 -0.946500 +vn 0.946500 -0.199600 -0.253600 +vn -0.692900 -0.199600 0.692900 +vn 0.253600 -0.199600 0.946500 +vn -0.692900 -0.199600 -0.692900 +vn 0.692900 -0.199600 -0.692900 +vn -0.253600 -0.199600 0.946500 +vn 0.692900 -0.199600 0.692900 +vn -0.704400 0.086600 0.704400 +s off +f 1//1 2//1 4//1 +f 4//2 6//2 5//2 +f 5//3 6//3 8//3 +f 8//4 10//4 9//4 +f 10//5 12//5 11//5 +f 11//6 12//6 14//6 +f 14//7 16//7 15//7 +f 16//8 18//8 17//8 +f 18//9 20//9 19//9 +f 20//10 22//10 21//10 +f 22//11 14//11 6//11 +f 24//12 2//12 1//12 +f 22//13 24//13 23//13 +f 7//14 19//14 23//14 +f 36//15 49//15 50//15 +f 55//14 54//14 66//14 +f 25//16 38//16 37//16 +f 31//17 32//17 45//17 +f 28//18 29//18 42//18 +f 36//19 37//19 48//19 +f 26//20 39//20 38//20 +f 32//21 33//21 46//21 +f 30//22 43//22 42//22 +f 27//23 40//23 39//23 +f 34//24 47//24 46//24 +f 30//25 31//25 44//25 +f 28//26 41//26 40//26 +f 35//27 48//27 47//27 +f 31//28 56//28 57//28 +f 28//29 53//29 54//29 +f 36//30 35//30 60//30 +f 25//31 50//31 51//31 +f 32//32 57//32 58//32 +f 29//33 54//33 55//33 +f 26//34 51//34 52//34 +f 33//35 58//35 59//35 +f 30//36 55//36 56//36 +f 27//37 52//37 53//37 +f 34//38 59//38 60//38 +f 69//39 81//39 82//39 +f 52//14 51//14 63//14 +f 59//14 58//14 70//14 +f 55//14 67//14 68//14 +f 52//14 64//14 65//14 +f 59//14 71//14 72//14 +f 49//14 61//14 62//14 +f 56//14 68//14 69//14 +f 53//14 65//14 66//14 +f 60//14 72//14 61//14 +f 51//14 50//14 62//14 +f 57//14 69//14 70//14 +f 81//14 77//14 73//14 +f 66//40 78//40 79//40 +f 63//41 75//41 76//41 +f 70//42 82//42 83//42 +f 68//43 67//43 79//43 +f 64//44 76//44 77//44 +f 71//45 83//45 84//45 +f 62//46 61//46 73//46 +f 69//47 68//47 80//47 +f 66//48 65//48 77//48 +f 72//49 84//49 73//49 +f 63//50 62//50 74//50 +f 95//11 91//11 87//11 +f 101//14 105//14 98//14 +f 87//2 99//2 97//2 +f 93//9 94//9 106//9 +f 91//6 103//6 102//6 +f 88//3 100//3 99//3 +f 94//10 95//10 107//10 +f 92//7 104//7 103//7 +f 88//4 89//4 101//4 +f 95//13 96//13 108//13 +f 85//1 86//1 97//1 +f 92//8 93//8 105//8 +f 89//5 90//5 102//5 +f 85//12 98//12 108//12 +f 3//1 1//1 4//1 +f 3//2 4//2 5//2 +f 7//3 5//3 8//3 +f 7//4 8//4 9//4 +f 9//5 10//5 11//5 +f 13//6 11//6 14//6 +f 13//7 14//7 15//7 +f 15//8 16//8 17//8 +f 17//9 18//9 19//9 +f 19//10 20//10 21//10 +f 6//11 4//11 22//11 +f 2//11 24//11 22//11 +f 22//11 20//11 18//11 +f 18//11 16//11 22//11 +f 14//11 12//11 10//11 +f 10//11 8//11 14//11 +f 4//11 2//11 22//11 +f 22//11 16//11 14//11 +f 14//11 8//11 6//11 +f 23//12 24//12 1//12 +f 21//13 22//13 23//13 +f 23//14 1//14 7//14 +f 3//14 5//14 7//14 +f 7//14 9//14 15//14 +f 11//14 13//14 15//14 +f 15//14 17//14 19//14 +f 19//14 21//14 23//14 +f 1//14 3//14 7//14 +f 9//14 11//14 15//14 +f 15//14 19//14 7//14 +f 25//15 36//15 50//15 +f 67//14 55//14 66//14 +f 36//16 25//16 37//16 +f 44//17 31//17 45//17 +f 41//18 28//18 42//18 +f 35//19 36//19 48//19 +f 25//20 26//20 38//20 +f 45//21 32//21 46//21 +f 29//22 30//22 42//22 +f 26//23 27//23 39//23 +f 33//24 34//24 46//24 +f 43//25 30//25 44//25 +f 27//26 28//26 40//26 +f 34//27 35//27 47//27 +f 32//28 31//28 57//28 +f 29//51 28//51 54//51 +f 49//30 36//30 60//30 +f 26//31 25//31 51//31 +f 33//32 32//32 58//32 +f 30//33 29//33 55//33 +f 27//34 26//34 52//34 +f 34//35 33//35 59//35 +f 31//36 30//36 56//36 +f 28//37 27//37 53//37 +f 35//38 34//38 60//38 +f 70//39 69//39 82//39 +f 64//14 52//14 63//14 +f 71//14 59//14 70//14 +f 56//14 55//14 68//14 +f 53//14 52//14 65//14 +f 60//14 59//14 72//14 +f 50//14 49//14 62//14 +f 57//14 56//14 69//14 +f 54//14 53//14 66//14 +f 49//14 60//14 61//14 +f 63//14 51//14 62//14 +f 58//14 57//14 70//14 +f 73//14 84//14 81//14 +f 83//14 82//14 81//14 +f 81//14 80//14 79//14 +f 79//14 78//14 77//14 +f 77//14 76//14 75//14 +f 75//14 74//14 77//14 +f 84//14 83//14 81//14 +f 81//14 79//14 77//14 +f 77//14 74//14 73//14 +f 67//40 66//40 79//40 +f 64//41 63//41 76//41 +f 71//42 70//42 83//42 +f 80//43 68//43 79//43 +f 65//44 64//44 77//44 +f 72//45 71//45 84//45 +f 74//46 62//46 73//46 +f 81//47 69//47 80//47 +f 78//48 66//48 77//48 +f 61//49 72//49 73//49 +f 75//50 63//50 74//50 +f 87//11 86//11 95//11 +f 85//11 96//11 95//11 +f 95//11 94//11 91//11 +f 93//11 92//11 91//11 +f 91//11 90//11 89//11 +f 89//11 88//11 87//11 +f 86//11 85//11 95//11 +f 94//11 93//11 91//11 +f 91//11 89//11 87//11 +f 98//14 97//14 99//14 +f 99//14 100//14 101//14 +f 101//14 102//14 103//14 +f 103//14 104//14 101//14 +f 105//14 106//14 107//14 +f 107//14 108//14 98//14 +f 98//14 99//14 101//14 +f 101//14 104//14 105//14 +f 105//14 107//14 98//14 +f 86//2 87//2 97//2 +f 105//9 93//9 106//9 +f 90//6 91//6 102//6 +f 87//3 88//3 99//3 +f 106//10 94//10 107//10 +f 91//7 92//7 103//7 +f 100//4 88//4 101//4 +f 107//13 95//13 108//13 +f 98//1 85//1 97//1 +f 104//8 92//8 105//8 +f 101//5 89//5 102//5 +f 96//12 85//12 108//12 diff --git a/assets/hbm/models/missile_parts/mp_t_15_kerosene_dual.obj b/assets/hbm/models/missile_parts/mp_t_15_kerosene_dual.obj new file mode 100644 index 000000000..a63e69d1b --- /dev/null +++ b/assets/hbm/models/missile_parts/mp_t_15_kerosene_dual.obj @@ -0,0 +1,637 @@ +# Blender v2.76 (sub 0) OBJ File: 'mp_t_15_kerosene_dual.blend' +# www.blender.org +o Cylinder +v -0.000000 0.750000 -0.637500 +v 0.000000 1.000000 -0.750000 +v 0.318750 0.750000 -0.552091 +v 0.375000 1.000000 -0.649519 +v 0.552091 0.750000 -0.318750 +v 0.649519 1.000000 -0.375000 +v 0.637500 0.750000 0.000000 +v 0.750000 1.000000 0.000000 +v 0.552091 0.750000 0.318750 +v 0.649519 1.000000 0.375000 +v 0.318750 0.750000 0.552091 +v 0.375000 1.000000 0.649519 +v 0.000000 0.750000 0.637500 +v 0.000000 1.000000 0.750000 +v -0.318750 0.750000 0.552091 +v -0.375000 1.000000 0.649519 +v -0.552091 0.750000 0.318750 +v -0.649519 1.000000 0.375000 +v -0.637500 0.750000 0.000000 +v -0.750000 1.000000 0.000000 +v -0.552091 0.750000 -0.318750 +v -0.649519 1.000000 -0.375000 +v -0.318750 0.750000 -0.552091 +v -0.375000 1.000000 -0.649519 +v 0.000000 0.400000 -0.626250 +v -0.138125 0.400000 -0.589239 +v -0.239240 0.400000 -0.488125 +v -0.276250 0.400000 -0.350000 +v -0.239239 0.400000 -0.211875 +v -0.138125 0.400000 -0.110760 +v -0.000000 0.400000 -0.073750 +v 0.138125 0.400000 -0.110760 +v 0.239239 0.400000 -0.211875 +v 0.276250 0.400000 -0.350000 +v 0.239240 0.400000 -0.488125 +v 0.138125 0.400000 -0.589239 +v 0.000000 0.400000 0.073750 +v -0.138125 0.400000 0.110761 +v -0.239240 0.400000 0.211875 +v -0.276250 0.400000 0.350000 +v -0.239239 0.400000 0.488125 +v -0.138125 0.400000 0.589240 +v -0.000000 0.400000 0.626250 +v 0.138125 0.400000 0.589240 +v 0.239239 0.400000 0.488125 +v 0.276250 0.400000 0.350000 +v 0.239240 0.400000 0.211875 +v 0.138125 0.400000 0.110761 +v -0.081250 0.750000 -0.490729 +v 0.000000 0.750000 -0.512500 +v -0.140729 0.750000 -0.431250 +v -0.162500 0.750000 -0.350000 +v -0.140729 0.750000 -0.268750 +v -0.081250 0.750000 -0.209271 +v -0.000000 0.750000 -0.187500 +v 0.081250 0.750000 -0.209271 +v 0.140729 0.750000 -0.268750 +v 0.162500 0.750000 -0.350000 +v 0.140729 0.750000 -0.431250 +v 0.081250 0.750000 -0.490729 +v -0.081250 0.750000 0.209271 +v 0.000000 0.750000 0.187500 +v -0.140729 0.750000 0.268750 +v -0.162500 0.750000 0.350000 +v -0.140729 0.750000 0.431250 +v -0.081250 0.750000 0.490729 +v -0.000000 0.750000 0.512500 +v 0.081250 0.750000 0.490729 +v 0.140729 0.750000 0.431250 +v 0.162500 0.750000 0.350000 +v 0.140729 0.750000 0.268750 +v 0.081250 0.750000 0.209271 +v -0.162500 0.000000 -0.631458 +v 0.000000 0.000000 -0.675000 +v -0.281458 0.000000 -0.512500 +v -0.325000 0.000000 -0.350000 +v -0.281458 0.000000 -0.187500 +v -0.162500 0.000000 -0.068542 +v -0.000000 0.000000 -0.025000 +v 0.162500 0.000000 -0.068542 +v 0.281458 0.000000 -0.187500 +v 0.325000 0.000000 -0.350000 +v 0.281458 0.000000 -0.512500 +v 0.162500 0.000000 -0.631458 +v -0.162500 0.000000 0.068542 +v 0.000000 0.000000 0.025000 +v -0.281458 0.000000 0.187500 +v -0.325000 0.000000 0.350000 +v -0.281458 0.000000 0.512500 +v -0.162500 0.000000 0.631458 +v -0.000000 0.000000 0.675000 +v 0.162500 0.000000 0.631458 +v 0.281458 0.000000 0.512500 +v 0.325000 0.000000 0.350000 +v 0.281458 0.000000 0.187500 +v 0.162500 0.000000 0.068542 +v 0.500000 0.750000 -0.062500 +v -0.500000 0.750000 -0.062500 +v 0.500000 0.750000 0.062500 +v -0.500000 0.750000 0.062500 +v 0.375000 0.625000 -0.062500 +v -0.375000 0.625000 -0.062500 +v 0.375000 0.625000 0.062500 +v -0.375000 0.625000 0.062500 +v -0.121875 0.000000 -0.561094 +v 0.000000 0.000000 -0.593750 +v -0.211094 0.000000 -0.471875 +v -0.243750 0.000000 -0.350000 +v -0.211094 0.000000 -0.228125 +v -0.121875 0.000000 -0.138906 +v -0.000000 0.000000 -0.106250 +v 0.121875 0.000000 -0.138906 +v 0.211094 0.000000 -0.228125 +v 0.243750 0.000000 -0.350000 +v 0.211094 0.000000 -0.471875 +v 0.121875 0.000000 -0.561094 +v -0.121875 0.000000 0.138906 +v 0.000000 0.000000 0.106250 +v -0.211094 0.000000 0.228125 +v -0.243750 0.000000 0.350000 +v -0.211094 0.000000 0.471875 +v -0.121875 0.000000 0.561094 +v -0.000000 0.000000 0.593750 +v 0.121875 0.000000 0.561094 +v 0.211094 0.000000 0.471875 +v 0.243750 0.000000 0.350000 +v 0.211094 0.000000 0.228125 +v 0.121875 0.000000 0.138906 +v -0.060937 0.625000 -0.455547 +v 0.000000 0.625000 -0.471875 +v -0.105547 0.625000 -0.410937 +v -0.121875 0.625000 -0.350000 +v -0.105547 0.625000 -0.289062 +v -0.060937 0.625000 -0.244453 +v -0.000000 0.625000 -0.228125 +v 0.060937 0.625000 -0.244453 +v 0.105547 0.625000 -0.289062 +v 0.121875 0.625000 -0.350000 +v 0.105547 0.625000 -0.410937 +v 0.060938 0.625000 -0.455547 +v -0.060937 0.625000 0.244453 +v 0.000000 0.625000 0.228125 +v -0.105547 0.625000 0.289063 +v -0.121875 0.625000 0.350000 +v -0.105547 0.625000 0.410938 +v -0.060937 0.625000 0.455547 +v -0.000000 0.625000 0.471875 +v 0.060937 0.625000 0.455547 +v 0.105547 0.625000 0.410938 +v 0.121875 0.625000 0.350000 +v 0.105547 0.625000 0.289063 +v 0.060938 0.625000 0.244453 +vt 0.750000 0.555556 +vt 0.750000 0.611111 +vt 0.666667 0.611111 +vt 0.666667 0.555556 +vt 0.583333 0.611111 +vt 0.583333 0.555556 +vt 0.500000 0.611111 +vt 0.416667 0.611111 +vt 0.416667 0.555556 +vt 0.333333 0.611111 +vt 0.333333 0.555556 +vt 0.250000 0.611111 +vt 0.166667 0.611111 +vt 0.166667 0.555556 +vt 0.083333 0.611111 +vt 0.000000 0.611111 +vt -0.000000 0.555556 +vt 1.000000 0.611111 +vt 0.916667 0.611111 +vt 0.916667 0.555556 +vt 0.416667 0.222222 +vt 0.555556 0.472222 +vt 0.694444 0.222222 +vt 0.833333 0.611111 +vt 0.833333 0.555556 +vt 0.277778 0.416667 +vt 0.000000 0.416667 +vt 0.069444 0.541667 +vt 0.041667 0.069444 +vt 0.041667 -0.000000 +vt 0.083333 0.000000 +vt 0.333333 0.069444 +vt 0.333333 0.000000 +vt 0.375000 0.000000 +vt 0.069444 0.277778 +vt 0.069444 0.263889 +vt 0.097222 0.250000 +vt 0.027778 0.152778 +vt 0.041667 0.166667 +vt 0.027778 0.180556 +vt 0.375000 0.069444 +vt 0.375000 0.138889 +vt 0.333333 0.138889 +vt 0.083333 0.069444 +vt 0.083333 0.138889 +vt 0.041667 0.138889 +vt 0.208333 0.069444 +vt 0.208333 0.138889 +vt 0.166667 0.138889 +vt 0.416667 0.069444 +vt 0.416667 0.138889 +vt 0.125000 0.069444 +vt 0.125000 0.138889 +vt 0.250000 0.069444 +vt 0.250000 0.138889 +vt 0.458333 0.069444 +vt 0.458333 0.138889 +vt 0.166667 0.069444 +vt 0.291667 0.069444 +vt 0.291667 0.138889 +vt 0.500000 0.069444 +vt 0.500000 0.138889 +vt 0.000000 0.138889 +vt 0.166667 0.000000 +vt 0.208333 -0.000000 +vt 0.416667 0.000000 +vt 0.125000 0.000000 +vt 0.250000 0.000000 +vt 0.458333 0.000000 +vt 0.500000 -0.000000 +vt 0.291667 0.000000 +vt 0.000000 0.069444 +vt 0.000000 0.000000 +vt 0.138889 0.194444 +vt 0.305556 0.194444 +vt 0.305556 0.222222 +vt 0.361111 0.166667 +vt 0.388889 0.166667 +vt 0.388889 0.194444 +vt 0.138889 0.166667 +vt 0.361111 0.138889 +vt 0.361111 0.194444 +vt 0.333333 0.166667 +vt 0.166667 0.166667 +vt 0.694444 -0.000000 +vt 0.694444 0.138889 +vt 0.666667 0.138889 +vt 0.750000 0.000000 +vt 0.777778 0.000000 +vt 0.777778 0.138889 +vt 0.138889 0.208333 +vt 0.125000 0.208333 +vt 0.111111 0.180556 +vt -0.000000 0.208333 +vt 0.013889 0.166667 +vt 0.111111 0.263889 +vt 0.111111 0.236111 +vt 0.125000 0.166667 +vt 0.097222 0.166667 +vt 0.069444 0.138889 +vt 0.069444 0.152778 +vt 0.013889 0.208333 +vt 0.027778 0.236111 +vt 0.125000 0.250000 +vt 0.111111 0.152778 +vt 0.027778 0.263889 +vt 0.013889 0.250000 +vt 0.041667 0.250000 +vt 0.180556 0.277778 +vt 0.138889 0.250000 +vt 0.180556 0.222222 +vt 0.555556 0.000000 +vt 0.555556 0.138889 +vt 0.527778 0.138889 +vt 0.750000 0.138889 +vt 0.722222 0.138889 +vt 0.666667 -0.000000 +vt 0.638889 0.138889 +vt 0.527778 -0.000000 +vt 0.722222 0.000000 +vt 0.638889 -0.000000 +vt 0.611111 0.138889 +vt 0.583333 -0.000000 +vt 0.583333 0.138889 +vt 0.833333 -0.000000 +vt 0.833333 0.138889 +vt 0.805556 0.138889 +vt 0.611111 0.000000 +vt 0.805556 -0.000000 +vt 0.500000 0.555556 +vt 0.250000 0.555556 +vt 0.083333 0.555556 +vt 1.000000 0.555556 +vt 0.638889 0.166667 +vt 0.472222 0.166667 +vt 0.388889 0.305556 +vt 0.416667 0.388889 +vt 0.472222 0.444444 +vt 0.638889 0.444444 +vt 0.694444 0.388889 +vt 0.722222 0.305556 +vt 0.138889 0.555556 +vt 0.208333 0.541667 +vt 0.263889 0.486111 +vt 0.263889 0.347222 +vt 0.069444 0.291667 +vt 0.208333 0.291667 +vt 0.138889 0.277778 +vt 0.013889 0.347222 +vt 0.013889 0.486111 +vt 0.138889 0.222222 +vt 0.388889 0.138889 +vt 0.194444 0.236111 +vt 0.194444 0.250000 +vt 0.194444 0.263889 +vt 0.166667 0.277778 +vt 0.152778 0.277778 +vt 0.138889 0.263889 +vt 0.138889 0.236111 +vt 0.152778 0.222222 +vt 0.166667 0.222222 +vn 0.237400 -0.398600 -0.885900 +vn 0.648500 -0.398600 -0.648500 +vn 0.885900 -0.398600 -0.237400 +vn 0.885900 -0.398600 0.237400 +vn 0.648500 -0.398600 0.648500 +vn 0.237400 -0.398600 0.885900 +vn -0.237400 -0.398600 0.885900 +vn -0.648500 -0.398600 0.648500 +vn -0.885900 -0.398600 0.237400 +vn -0.885900 -0.398600 -0.237400 +vn 0.000000 1.000000 0.000000 +vn -0.237400 -0.398600 -0.885900 +vn -0.648500 -0.398600 -0.648500 +vn 0.000000 -1.000000 0.000000 +vn -0.702300 0.116900 0.702300 +vn 0.257000 0.116900 -0.959300 +vn 0.246900 0.299500 -0.921600 +vn -0.674600 0.299500 0.674600 +vn 0.674600 0.299500 0.674600 +vn -0.246900 0.299500 -0.921600 +vn -0.246900 0.299500 0.921600 +vn 0.921600 0.299500 0.246900 +vn -0.674600 0.299500 -0.674600 +vn 0.246900 0.299500 0.921600 +vn 0.921600 0.299500 -0.246900 +vn -0.921600 0.299500 -0.246900 +vn 0.674600 0.299500 -0.674600 +vn -0.921600 0.299500 0.246900 +vn 0.702300 0.116900 0.702300 +vn -0.257000 0.116900 -0.959300 +vn -0.257000 0.116900 0.959300 +vn 0.959300 0.116900 0.257000 +vn -0.702300 0.116900 -0.702300 +vn 0.257000 0.116900 0.959300 +vn 0.959300 0.116900 -0.257000 +vn -0.959300 0.116900 -0.257000 +vn 0.702300 0.116900 -0.702300 +vn -0.959300 0.116900 0.257000 +vn -0.707100 -0.707100 0.000000 +vn 0.000000 0.000000 1.000000 +vn 0.707100 -0.707100 0.000000 +vn -0.000000 0.000000 -1.000000 +vn -0.949200 -0.185100 -0.254300 +vn 0.254300 -0.185100 -0.949200 +vn 0.694900 -0.185100 0.694900 +vn -0.254300 -0.185100 -0.949200 +vn -0.949200 -0.185100 0.254300 +vn 0.949200 -0.185100 0.254300 +vn -0.694900 -0.185100 -0.694900 +vn -0.694900 -0.185100 0.694900 +vn 0.254300 -0.185100 0.949200 +vn 0.949200 -0.185100 -0.254300 +vn -0.254300 -0.185100 0.949200 +vn 0.694900 -0.185100 -0.694900 +s off +f 1/1/1 2/2/1 4/3/1 +f 3/4/2 4/3/2 6/5/2 +f 5/6/3 6/5/3 8/7/3 +f 8/7/4 10/8/4 9/9/4 +f 10/8/5 12/10/5 11/11/5 +f 11/11/6 12/10/6 14/12/6 +f 14/12/7 16/13/7 15/14/7 +f 15/14/8 16/13/8 18/15/8 +f 18/15/9 20/16/9 19/17/9 +f 20/18/10 22/19/10 21/20/10 +f 22/21/11 14/22/11 6/23/11 +f 24/24/12 2/2/12 1/1/12 +f 22/19/13 24/24/13 23/25/13 +f 7/26/14 19/27/14 23/28/14 +f 29/29/15 77/30/15 78/31/15 +f 36/32/16 84/33/16 74/34/16 +f 79/35/14 111/36/14 112/37/14 +f 85/38/14 117/39/14 119/40/14 +f 25/41/17 50/42/17 60/43/17 +f 30/44/18 54/45/18 53/46/18 +f 45/47/19 69/48/19 68/49/19 +f 38/50/20 61/51/20 62/42/20 +f 31/52/21 55/53/21 54/45/21 +f 45/47/22 46/54/22 70/55/22 +f 39/56/23 63/57/23 61/51/23 +f 31/52/24 32/58/24 56/49/24 +f 47/59/25 71/60/25 70/55/25 +f 40/61/26 64/62/26 63/57/26 +f 32/58/19 33/47/19 57/48/19 +f 47/59/27 48/32/27 72/43/27 +f 25/41/20 26/50/20 49/51/20 +f 41/29/28 65/46/28 64/63/28 +f 33/47/22 34/54/22 58/55/22 +f 37/41/17 62/42/17 72/43/17 +f 26/50/23 27/56/23 51/57/23 +f 42/44/18 66/45/18 65/46/18 +f 34/54/25 35/59/25 59/60/25 +f 28/61/26 52/62/26 51/57/26 +f 42/44/21 43/52/21 67/53/21 +f 35/59/27 36/32/27 60/43/27 +f 29/29/28 53/46/28 52/63/28 +f 43/52/24 44/58/24 68/49/24 +f 44/58/29 92/64/29 93/65/29 +f 37/41/30 86/34/30 85/66/30 +f 30/44/31 78/31/31 79/67/31 +f 45/47/32 93/65/32 94/68/32 +f 39/56/33 38/50/33 85/66/33 +f 31/52/34 79/67/34 80/64/34 +f 47/59/35 46/54/35 94/68/35 +f 39/56/36 87/69/36 88/70/36 +f 32/58/29 80/64/29 81/65/29 +f 47/59/37 95/71/37 96/33/37 +f 25/41/30 74/34/30 73/66/30 +f 40/72/38 88/73/38 89/30/38 +f 33/47/32 81/65/32 82/68/32 +f 48/32/16 96/33/16 86/34/16 +f 27/56/33 26/50/33 73/66/33 +f 42/44/15 41/29/15 89/30/15 +f 35/59/35 34/54/35 82/68/35 +f 27/56/36 75/69/36 76/70/36 +f 43/52/31 42/44/31 90/31/31 +f 36/32/37 35/59/37 83/71/37 +f 29/29/38 28/72/38 76/73/38 +f 43/52/34 91/67/34 92/64/34 +f 102/74/14 101/75/14 103/76/14 +f 98/77/39 102/78/39 104/79/39 +f 100/80/40 104/49/40 103/43/40 +f 99/78/41 103/77/41 101/81/41 +f 97/82/42 101/83/42 102/84/42 +f 125/85/43 149/86/43 150/87/43 +f 111/88/44 110/89/44 134/90/44 +f 94/91/14 126/92/14 127/93/14 +f 88/94/14 87/95/14 119/40/14 +f 80/96/14 112/37/14 113/97/14 +f 95/98/14 127/93/14 128/99/14 +f 74/100/14 106/101/14 105/39/14 +f 88/94/14 120/102/14 121/103/14 +f 81/104/14 113/97/14 114/92/14 +f 96/105/14 128/99/14 118/101/14 +f 73/38/14 105/39/14 107/40/14 +f 90/106/14 89/107/14 121/103/14 +f 83/98/14 82/91/14 114/92/14 +f 75/95/14 107/40/14 108/102/14 +f 90/106/14 122/108/14 123/36/14 +f 84/105/14 83/98/14 115/93/14 +f 76/94/14 108/102/14 109/103/14 +f 91/35/14 123/36/14 124/37/14 +f 74/100/14 84/105/14 116/99/14 +f 77/107/14 109/103/14 110/108/14 +f 92/96/14 124/37/14 125/97/14 +f 86/100/14 118/101/14 117/39/14 +f 78/106/14 110/108/14 111/36/14 +f 93/104/14 125/97/14 126/92/14 +f 139/109/14 135/110/14 131/111/14 +f 151/111/14 147/109/14 143/110/14 +f 117/112/45 141/113/45 143/114/45 +f 111/88/46 135/115/46 136/116/46 +f 126/117/47 150/87/47 151/118/47 +f 119/119/48 143/114/48 144/62/48 +f 113/85/49 112/120/49 136/116/49 +f 127/121/50 151/118/50 152/122/50 +f 106/123/51 130/124/51 129/113/51 +f 120/125/52 144/126/52 145/127/52 +f 113/85/43 137/86/43 138/87/43 +f 128/128/53 152/122/53 142/124/53 +f 107/119/45 105/112/45 129/113/45 +f 121/129/54 145/127/54 146/90/54 +f 115/121/47 114/117/47 138/87/47 +f 107/119/48 131/114/48 132/62/48 +f 122/89/44 146/90/44 147/115/44 +f 115/121/50 139/118/50 140/122/50 +f 108/125/52 132/126/52 133/127/52 +f 123/88/46 147/115/46 148/116/46 +f 116/128/53 140/122/53 130/124/53 +f 109/129/54 133/127/54 134/90/54 +f 124/120/49 148/116/49 149/86/49 +f 118/123/51 142/124/51 141/113/51 +f 3/4/1 1/1/1 4/3/1 +f 5/6/2 3/4/2 6/5/2 +f 7/130/3 5/6/3 8/7/3 +f 7/130/4 8/7/4 9/9/4 +f 9/9/5 10/8/5 11/11/5 +f 13/131/6 11/11/6 14/12/6 +f 13/131/7 14/12/7 15/14/7 +f 17/132/8 15/14/8 18/15/8 +f 17/132/9 18/15/9 19/17/9 +f 19/133/10 20/18/10 21/20/10 +f 6/23/11 4/134/11 22/21/11 +f 2/113/11 24/135/11 22/21/11 +f 22/21/11 20/136/11 18/137/11 +f 18/137/11 16/138/11 14/22/11 +f 14/22/11 12/139/11 10/140/11 +f 10/140/11 8/141/11 14/22/11 +f 4/134/11 2/113/11 22/21/11 +f 22/21/11 18/137/11 14/22/11 +f 14/22/11 8/141/11 6/23/11 +f 23/25/12 24/24/12 1/1/12 +f 21/20/13 22/19/13 23/25/13 +f 23/28/14 1/142/14 7/26/14 +f 3/143/14 5/144/14 7/26/14 +f 7/26/14 9/145/14 15/146/14 +f 11/147/14 13/148/14 15/146/14 +f 15/146/14 17/149/14 19/27/14 +f 19/27/14 21/150/14 23/28/14 +f 1/142/14 3/143/14 7/26/14 +f 9/145/14 11/147/14 15/146/14 +f 15/146/14 19/27/14 7/26/14 +f 30/44/15 29/29/15 78/31/15 +f 25/41/16 36/32/16 74/34/16 +f 80/96/14 79/35/14 112/37/14 +f 87/95/14 85/38/14 119/40/14 +f 36/32/17 25/41/17 60/43/17 +f 29/29/18 30/44/18 53/46/18 +f 44/58/19 45/47/19 68/49/19 +f 37/41/20 38/50/20 62/42/20 +f 30/44/21 31/52/21 54/45/21 +f 69/48/22 45/47/22 70/55/22 +f 38/50/23 39/56/23 61/51/23 +f 55/53/24 31/52/24 56/49/24 +f 46/54/25 47/59/25 70/55/25 +f 39/56/26 40/61/26 63/57/26 +f 56/49/19 32/58/19 57/48/19 +f 71/60/27 47/59/27 72/43/27 +f 50/42/20 25/41/20 49/51/20 +f 40/72/28 41/29/28 64/63/28 +f 57/48/22 33/47/22 58/55/22 +f 48/32/17 37/41/17 72/43/17 +f 49/51/23 26/50/23 51/57/23 +f 41/29/18 42/44/18 65/46/18 +f 58/55/25 34/54/25 59/60/25 +f 27/56/26 28/61/26 51/57/26 +f 66/45/21 42/44/21 67/53/21 +f 59/60/27 35/59/27 60/43/27 +f 28/72/28 29/29/28 52/63/28 +f 67/53/24 43/52/24 68/49/24 +f 45/47/29 44/58/29 93/65/29 +f 38/50/30 37/41/30 85/66/30 +f 31/52/31 30/44/31 79/67/31 +f 46/54/32 45/47/32 94/68/32 +f 87/69/33 39/56/33 85/66/33 +f 32/58/34 31/52/34 80/64/34 +f 95/71/35 47/59/35 94/68/35 +f 40/61/36 39/56/36 88/70/36 +f 33/47/29 32/58/29 81/65/29 +f 48/32/37 47/59/37 96/33/37 +f 26/50/30 25/41/30 73/66/30 +f 41/29/38 40/72/38 89/30/38 +f 34/54/32 33/47/32 82/68/32 +f 37/41/16 48/32/16 86/34/16 +f 75/69/33 27/56/33 73/66/33 +f 90/31/15 42/44/15 89/30/15 +f 83/71/35 35/59/35 82/68/35 +f 28/61/36 27/56/36 76/70/36 +f 91/67/31 43/52/31 90/31/31 +f 84/33/37 36/32/37 83/71/37 +f 77/30/38 29/29/38 76/73/38 +f 44/58/34 43/52/34 92/64/34 +f 104/151/14 102/74/14 103/76/14 +f 100/82/39 98/77/39 104/79/39 +f 99/77/40 100/80/40 103/43/40 +f 97/152/41 99/78/41 101/81/41 +f 98/74/42 97/82/42 102/84/42 +f 126/117/43 125/85/43 150/87/43 +f 135/115/44 111/88/44 134/90/44 +f 95/98/14 94/91/14 127/93/14 +f 120/102/14 88/94/14 119/40/14 +f 81/104/14 80/96/14 113/97/14 +f 96/105/14 95/98/14 128/99/14 +f 73/38/14 74/100/14 105/39/14 +f 89/107/14 88/94/14 121/103/14 +f 82/91/14 81/104/14 114/92/14 +f 86/100/14 96/105/14 118/101/14 +f 75/95/14 73/38/14 107/40/14 +f 122/108/14 90/106/14 121/103/14 +f 115/93/14 83/98/14 114/92/14 +f 76/94/14 75/95/14 108/102/14 +f 91/35/14 90/106/14 123/36/14 +f 116/99/14 84/105/14 115/93/14 +f 77/107/14 76/94/14 109/103/14 +f 92/96/14 91/35/14 124/37/14 +f 106/101/14 74/100/14 116/99/14 +f 78/106/14 77/107/14 110/108/14 +f 93/104/14 92/96/14 125/97/14 +f 85/38/14 86/100/14 117/39/14 +f 79/35/14 78/106/14 111/36/14 +f 94/91/14 93/104/14 126/92/14 +f 131/111/14 129/153/14 130/154/14 +f 130/154/14 140/155/14 131/111/14 +f 139/109/14 138/156/14 137/157/14 +f 137/157/14 136/158/14 135/110/14 +f 135/110/14 134/159/14 133/160/14 +f 133/160/14 132/161/14 131/111/14 +f 131/111/14 140/155/14 139/109/14 +f 139/109/14 137/157/14 135/110/14 +f 135/110/14 133/160/14 131/111/14 +f 143/110/14 141/159/14 142/160/14 +f 142/160/14 152/161/14 151/111/14 +f 151/111/14 150/153/14 149/154/14 +f 149/154/14 148/155/14 151/111/14 +f 147/109/14 146/156/14 145/157/14 +f 145/157/14 144/158/14 147/109/14 +f 143/110/14 142/160/14 151/111/14 +f 151/111/14 148/155/14 147/109/14 +f 147/109/14 144/158/14 143/110/14 +f 119/119/45 117/112/45 143/114/45 +f 112/120/46 111/88/46 136/116/46 +f 127/121/47 126/117/47 151/118/47 +f 120/70/48 119/119/48 144/62/48 +f 137/86/49 113/85/49 136/116/49 +f 128/128/50 127/121/50 152/122/50 +f 105/112/51 106/123/51 129/113/51 +f 121/129/52 120/125/52 145/127/52 +f 114/117/43 113/85/43 138/87/43 +f 118/123/53 128/128/53 142/124/53 +f 131/114/45 107/119/45 129/113/45 +f 122/89/54 121/129/54 146/90/54 +f 139/118/47 115/121/47 138/87/47 +f 108/70/48 107/119/48 132/62/48 +f 123/88/44 122/89/44 147/115/44 +f 116/128/50 115/121/50 140/122/50 +f 109/129/52 108/125/52 133/127/52 +f 124/120/46 123/88/46 148/116/46 +f 106/123/53 116/128/53 130/124/53 +f 110/89/54 109/129/54 134/90/54 +f 125/85/49 124/120/49 149/86/49 +f 117/112/51 118/123/51 141/113/51 diff --git a/assets/hbm/models/missile_parts/mp_w_10_buster.obj b/assets/hbm/models/missile_parts/mp_w_10_buster.obj new file mode 100644 index 000000000..72534a189 --- /dev/null +++ b/assets/hbm/models/missile_parts/mp_w_10_buster.obj @@ -0,0 +1,316 @@ +# Blender v2.76 (sub 0) OBJ File: 'mp_w_10_buster.blend' +# www.blender.org +o Circle +v -0.125000 0.500000 -0.216506 +v -0.000000 0.400000 -0.300000 +v -0.216506 0.500000 -0.125000 +v -0.250000 0.500000 0.000000 +v -0.216506 0.500000 0.125000 +v -0.125000 0.500000 0.216506 +v 0.000000 0.500000 0.250000 +v 0.125000 0.500000 0.216506 +v 0.216506 0.500000 0.125000 +v 0.250000 0.500000 0.000000 +v 0.216506 0.500000 -0.125000 +v 0.125000 0.500000 -0.216506 +v -0.000000 0.500000 -0.250000 +v -0.000000 0.400000 -0.325000 +v 0.162500 0.400000 -0.281458 +v 0.281458 0.400000 -0.162500 +v 0.325000 0.400000 0.000000 +v 0.281458 0.400000 0.162500 +v 0.162500 0.400000 0.281458 +v 0.000000 0.400000 0.325000 +v -0.162500 0.400000 0.281458 +v -0.281458 0.400000 0.162500 +v -0.325000 0.400000 0.000000 +v -0.281458 0.400000 -0.162500 +v -0.162500 0.400000 -0.281458 +v 0.150000 0.400000 -0.259808 +v 0.259808 0.400000 -0.150000 +v 0.300000 0.400000 0.000000 +v 0.259808 0.400000 0.150000 +v 0.150000 0.400000 0.259808 +v 0.000000 0.400000 0.300000 +v -0.150000 0.400000 0.259808 +v -0.259808 0.400000 0.150000 +v -0.300000 0.400000 0.000000 +v -0.259808 0.400000 -0.150000 +v -0.150000 0.400000 -0.259808 +v -0.200000 0.250000 -0.346410 +v -0.000000 0.250000 -0.400000 +v -0.346410 0.250000 -0.200000 +v -0.400000 0.250000 0.000000 +v -0.346410 0.250000 0.200000 +v -0.200000 0.250000 0.346410 +v 0.000000 0.250000 0.400000 +v 0.200000 0.250000 0.346410 +v 0.346410 0.250000 0.200000 +v 0.400000 0.250000 0.000000 +v 0.346410 0.250000 -0.200000 +v 0.200000 0.250000 -0.346410 +v -0.250000 0.000000 -0.433013 +v -0.000000 0.000000 -0.500000 +v -0.433013 0.000000 -0.250000 +v -0.500000 0.000000 0.000000 +v -0.433013 0.000000 0.250000 +v -0.250000 0.000000 0.433013 +v 0.000000 0.000000 0.500000 +v 0.250000 0.000000 0.433013 +v 0.433013 0.000000 0.250000 +v 0.500000 0.000000 0.000000 +v 0.433013 0.000000 -0.250000 +v 0.250000 0.000000 -0.433013 +vt 0.625000 0.145833 +vt 0.625000 0.166667 +vt 0.562500 0.166667 +vt 0.375000 0.145833 +vt 0.437500 0.145833 +vt 0.437500 0.166667 +vt 0.062500 0.145833 +vt 0.062500 0.166667 +vt 0.000000 0.166667 +vt 0.375000 0.166667 +vt 0.312500 0.166667 +vt 0.250000 0.145833 +vt 0.250000 0.166667 +vt 0.187500 0.166667 +vt 0.562500 0.145833 +vt 0.500000 0.166667 +vt 0.500000 0.145833 +vt 0.500000 0.083333 +vt 0.562500 0.187500 +vt 0.500000 0.187500 +vt 0.187500 0.145833 +vt 0.125000 0.166667 +vt 0.125000 0.145833 +vt 0.687500 0.145833 +vt 0.687500 0.166667 +vt 0.687500 0.187500 +vt 0.625000 0.187500 +vt 0.750000 0.145833 +vt 0.750000 0.166667 +vt 0.375000 0.187500 +vt 0.312500 0.187500 +vt 0.187500 0.187500 +vt 0.125000 0.187500 +vt 0.750000 0.187500 +vt 0.437500 0.187500 +vt 0.250000 0.187500 +vt -0.000000 0.145833 +vt 0.062500 0.187500 +vt 0.312500 0.145833 +vt 0.020833 0.312500 +vt 0.020833 0.229167 +vt 0.145833 0.229167 +vt 0.250000 0.083333 +vt 0.166667 0.083333 +vt 0.166667 0.000000 +vt 0.187500 0.083333 +vt 0.562500 0.083333 +vt 0.625000 0.083333 +vt 0.312500 0.083333 +vt 0.375000 0.083333 +vt -0.000000 0.083333 +vt 0.062500 0.083333 +vt 0.437500 0.083333 +vt 0.687500 0.083333 +vt 0.125000 0.083333 +vt 0.750000 0.083333 +vt 0.500000 0.354167 +vt 0.250000 0.500000 +vt 0.250000 0.208333 +vt 1.000000 0.083333 +vt 0.916667 0.083333 +vt 0.916667 -0.000000 +vt 0.500000 0.000000 +vt 0.583333 0.000000 +vt 0.333333 0.083333 +vt 0.250000 0.000000 +vt 0.083333 0.083333 +vt 0.000000 -0.000000 +vt 0.666667 0.083333 +vt 0.583333 0.083333 +vt 0.833333 0.083333 +vt 0.750000 0.000000 +vt 0.333333 0.000000 +vt 0.416667 0.000000 +vt 0.083333 0.000000 +vt 0.666667 -0.000000 +vt 0.833333 0.000000 +vt 0.416667 0.083333 +vt -0.000000 0.187500 +vt 0.166667 0.270833 +vt 0.083333 0.354167 +vt 0.145833 0.312500 +vt 0.125000 0.333333 +vt 0.041667 0.333333 +vt -0.000000 0.270833 +vt 0.041667 0.208333 +vt 0.083333 0.187500 +vt 0.125000 0.208333 +vt 0.333333 0.187500 +vt 0.416667 0.208333 +vt 0.479167 0.270833 +vt 0.479167 0.437500 +vt 0.416667 0.500000 +vt 0.333333 0.520833 +vt 0.187500 0.437500 +vt 0.166667 0.354167 +vt 0.187500 0.270833 +vt 1.000000 -0.000000 +vn -0.000000 -1.000000 0.000000 +vn 0.217600 0.541400 -0.812100 +vn 0.209600 0.586700 -0.782200 +vn -0.572600 0.586700 -0.572600 +vn 0.782200 0.586700 0.209600 +vn -0.209600 0.586700 0.782200 +vn -0.782200 0.586700 -0.209600 +vn 0.782200 0.586700 -0.209600 +vn 0.209600 0.586700 0.782200 +vn -0.782200 0.586700 0.209600 +vn 0.572600 0.586700 -0.572600 +vn -0.209600 0.586700 -0.782200 +vn 0.572600 0.586700 0.572600 +vn -0.572600 0.586700 0.572600 +vn 0.000000 1.000000 0.000000 +vn -0.241400 0.360400 0.901000 +vn 0.217600 0.541400 0.812100 +vn -0.217600 0.541400 -0.812100 +vn 0.812100 0.541400 0.217600 +vn -0.812100 0.541400 0.217600 +vn 0.594500 0.541400 -0.594500 +vn -0.594500 0.541400 -0.594500 +vn -0.217600 0.541400 0.812100 +vn 0.594500 0.541400 0.594500 +vn -0.812100 0.541400 -0.217600 +vn 0.812100 0.541400 -0.217600 +vn -0.594500 0.541400 0.594500 +vn -0.901000 0.360400 -0.241400 +vn 0.901000 0.360400 -0.241400 +vn 0.241400 0.360400 0.901000 +vn -0.901000 0.360400 0.241400 +vn 0.659600 0.360400 -0.659600 +vn -0.241400 0.360400 -0.901000 +vn 0.659600 0.360400 0.659600 +vn -0.659600 0.360400 0.659600 +vn 0.241400 0.360400 -0.901000 +vn -0.659600 0.360400 -0.659600 +vn 0.901000 0.360400 0.241400 +s off +f 20/1/1 31/2/1 30/3/1 +f 16/4/1 17/5/1 28/6/1 +f 23/7/1 34/8/1 33/9/1 +f 16/4/1 27/10/1 26/11/1 +f 14/12/1 2/13/1 36/14/1 +f 19/15/1 30/3/1 29/16/1 +f 2/15/2 26/17/2 48/18/2 +f 14/15/3 13/19/3 12/20/3 +f 18/17/1 29/16/1 28/6/1 +f 25/21/1 36/14/1 35/22/1 +f 24/23/1 35/22/1 34/8/1 +f 21/24/1 32/25/1 31/2/1 +f 24/24/4 3/26/4 1/27/4 +f 22/28/1 33/29/1 32/25/1 +f 17/4/5 10/30/5 9/31/5 +f 20/21/6 7/32/6 6/33/6 +f 23/28/7 4/34/7 3/26/7 +f 17/4/8 16/5/8 11/35/8 +f 20/21/9 19/12/9 8/36/9 +f 23/37/10 22/7/10 5/38/10 +f 15/17/11 12/20/11 11/35/11 +f 25/1/12 1/27/12 13/19/12 +f 18/39/13 9/31/13 8/36/13 +f 21/23/14 6/33/14 5/38/14 +f 6/40/15 8/41/15 12/42/15 +f 15/39/1 26/11/1 2/13/1 +f 43/43/16 42/44/16 54/45/16 +f 30/12/17 31/21/17 43/46/17 +f 2/15/18 38/47/18 37/48/18 +f 29/39/19 45/49/19 46/50/19 +f 34/37/20 40/51/20 41/52/20 +f 26/17/21 27/5/21 47/53/21 +f 36/1/22 37/48/22 39/54/22 +f 31/21/23 32/23/23 42/55/23 +f 30/12/24 44/43/24 45/49/24 +f 35/24/25 39/54/25 40/56/25 +f 28/4/26 46/50/26 47/53/26 +f 33/7/27 41/52/27 42/55/27 +f 58/57/1 54/58/1 49/59/1 +f 40/60/28 39/61/28 51/62/28 +f 46/18/29 58/63/29 59/64/29 +f 44/65/30 43/43/30 55/66/30 +f 41/67/31 40/51/31 52/68/31 +f 48/69/32 47/70/32 59/64/32 +f 37/71/33 38/56/33 50/72/33 +f 44/65/34 56/73/34 57/74/34 +f 41/67/35 53/75/35 54/45/35 +f 38/56/36 48/69/36 60/76/36 +f 37/71/37 49/77/37 51/62/37 +f 46/18/38 45/78/38 57/74/38 +f 19/15/1 20/1/1 30/3/1 +f 27/10/1 16/4/1 28/6/1 +f 22/37/1 23/7/1 33/9/1 +f 15/39/1 16/4/1 26/11/1 +f 25/21/1 14/12/1 36/14/1 +f 18/17/1 19/15/1 29/16/1 +f 38/47/2 2/15/2 48/18/2 +f 15/17/3 14/15/3 12/20/3 +f 17/5/1 18/17/1 28/6/1 +f 24/23/1 25/21/1 35/22/1 +f 23/7/1 24/23/1 34/8/1 +f 20/1/1 21/24/1 31/2/1 +f 25/1/4 24/24/4 1/27/4 +f 21/24/1 22/28/1 32/25/1 +f 18/39/5 17/4/5 9/31/5 +f 21/23/6 20/21/6 6/33/6 +f 24/24/7 23/28/7 3/26/7 +f 10/30/8 17/4/8 11/35/8 +f 7/32/9 20/21/9 8/36/9 +f 4/79/10 23/37/10 5/38/10 +f 16/5/11 15/17/11 11/35/11 +f 14/15/12 25/1/12 13/19/12 +f 19/12/13 18/39/13 8/36/13 +f 22/7/14 21/23/14 5/38/14 +f 12/42/15 13/80/15 4/81/15 +f 1/82/15 3/83/15 4/81/15 +f 4/81/15 5/84/15 6/40/15 +f 6/40/15 7/85/15 8/41/15 +f 8/41/15 9/86/15 10/87/15 +f 10/87/15 11/88/15 12/42/15 +f 13/80/15 1/82/15 4/81/15 +f 4/81/15 6/40/15 12/42/15 +f 8/41/15 10/87/15 12/42/15 +f 14/12/1 15/39/1 2/13/1 +f 55/66/16 43/43/16 54/45/16 +f 44/43/17 30/12/17 43/46/17 +f 36/1/18 2/15/18 37/48/18 +f 28/4/19 29/39/19 46/50/19 +f 33/7/20 34/37/20 41/52/20 +f 48/18/21 26/17/21 47/53/21 +f 35/24/22 36/1/22 39/54/22 +f 43/46/23 31/21/23 42/55/23 +f 29/39/24 30/12/24 45/49/24 +f 34/28/25 35/24/25 40/56/25 +f 27/5/26 28/4/26 47/53/26 +f 32/23/27 33/7/27 42/55/27 +f 49/59/1 50/89/1 60/90/1 +f 60/90/1 59/91/1 58/57/1 +f 58/57/1 57/92/1 56/93/1 +f 56/93/1 55/94/1 58/57/1 +f 54/58/1 53/95/1 52/96/1 +f 52/96/1 51/97/1 49/59/1 +f 49/59/1 60/90/1 58/57/1 +f 58/57/1 55/94/1 54/58/1 +f 54/58/1 52/96/1 49/59/1 +f 52/98/28 40/60/28 51/62/28 +f 47/70/29 46/18/29 59/64/29 +f 56/73/30 44/65/30 55/66/30 +f 53/75/31 41/67/31 52/68/31 +f 60/76/32 48/69/32 59/64/32 +f 49/77/33 37/71/33 50/72/33 +f 45/78/34 44/65/34 57/74/34 +f 42/44/35 41/67/35 54/45/35 +f 50/72/36 38/56/36 60/76/36 +f 39/61/37 37/71/37 51/62/37 +f 58/63/38 46/18/38 57/74/38 diff --git a/assets/hbm/models/missile_parts/mp_w_10_nuclear.obj b/assets/hbm/models/missile_parts/mp_w_10_nuclear.obj new file mode 100644 index 000000000..fddf333f8 --- /dev/null +++ b/assets/hbm/models/missile_parts/mp_w_10_nuclear.obj @@ -0,0 +1,174 @@ +# Blender v2.76 (sub 0) OBJ File: 'mp_w_10_nuclear.blend' +# www.blender.org +o Cone +v -0.000000 1.750000 -0.175000 +v 0.000000 2.000000 0.000000 +v 0.087500 1.750000 -0.151554 +v 0.151554 1.750000 -0.087500 +v 0.175000 1.750000 0.000000 +v 0.151554 1.750000 0.087500 +v 0.087500 1.750000 0.151554 +v 0.000000 1.750000 0.175000 +v -0.087500 1.750000 0.151554 +v -0.151554 1.750000 0.087500 +v -0.175000 1.750000 0.000000 +v -0.151554 1.750000 -0.087500 +v -0.087500 1.750000 -0.151554 +v 0.000000 0.000000 -0.500000 +v 0.250000 0.000000 -0.433013 +v 0.433013 0.000000 -0.250000 +v 0.500000 0.000000 0.000000 +v 0.433013 0.000000 0.250000 +v 0.250000 0.000000 0.433013 +v 0.000000 0.000000 0.500000 +v -0.250000 0.000000 0.433013 +v -0.433012 0.000000 0.250000 +v -0.500000 0.000000 0.000000 +v -0.433013 0.000000 -0.250000 +v -0.250000 0.000000 -0.433013 +vt 0.458333 0.583333 +vt 0.437500 0.666667 +vt 0.416667 0.583333 +vt 0.375000 0.583333 +vt 0.354167 0.666667 +vt 0.333333 0.583333 +vt 0.500000 0.583333 +vt 0.479167 0.666667 +vt 0.041667 0.583333 +vt 0.020833 0.666667 +vt -0.000000 0.583333 +vt 0.083333 0.583333 +vt 0.062500 0.666667 +vt 0.125000 0.583333 +vt 0.104167 0.666667 +vt 0.166667 0.583333 +vt 0.145833 0.666667 +vt 0.208333 0.583333 +vt 0.187500 0.666667 +vt 0.250000 0.583333 +vt 0.229167 0.666667 +vt 0.291667 0.583333 +vt 0.270833 0.666667 +vt 0.395833 0.666667 +vt 0.312500 0.666667 +vt 0.229167 0.583333 +vt 0.187500 0.583333 +vt 0.166667 0.000000 +vt 0.666667 0.583333 +vt 0.666667 0.916667 +vt 0.812500 0.833333 +vt 0.604167 0.583333 +vt 0.583333 0.000000 +vt 0.666667 -0.000000 +vt 0.020833 0.583333 +vt -0.000000 -0.000000 +vt 0.083333 0.000000 +vt 0.479167 0.583333 +vt 0.437500 0.583333 +vt 0.416667 0.000000 +vt 0.854167 0.583333 +vt 0.833333 0.000000 +vt 0.916667 0.000000 +vt 0.312500 0.583333 +vt 0.270833 0.583333 +vt 0.250000 0.000000 +vt 0.145833 0.583333 +vt 0.104167 0.583333 +vt 0.770833 0.583333 +vt 0.750000 -0.000000 +vt 0.520833 0.583333 +vt 0.500000 0.000000 +vt 0.937500 0.583333 +vt 1.000000 0.000000 +vt 0.354167 0.583333 +vt 0.333333 -0.000000 +vt 0.687500 0.583333 +vt 0.833333 0.750000 +vt 0.812500 0.666667 +vt 0.750000 0.604167 +vt 0.583333 0.604167 +vt 0.520833 0.666667 +vt 0.500000 0.750000 +vt 0.520833 0.833333 +vt 0.583333 0.895833 +vt 0.750000 0.895833 +vt 0.645833 0.583333 +vt 0.062500 0.583333 +vt 0.895833 0.583333 +vt 0.812500 0.583333 +vt 0.562500 0.583333 +vt 0.979167 0.583333 +vt 0.395833 0.583333 +vt 0.729167 0.583333 +vn -0.585800 0.560100 -0.585800 +vn 0.214400 0.560100 -0.800200 +vn -0.800200 0.560100 -0.214400 +vn -0.800200 0.560100 0.214400 +vn -0.585800 0.560100 0.585800 +vn -0.214400 0.560100 0.800200 +vn 0.214400 0.560100 0.800200 +vn 0.585800 0.560100 0.585800 +vn 0.800200 0.560100 0.214400 +vn 0.800200 0.560100 -0.214400 +vn -0.214400 0.560100 -0.800200 +vn 0.585800 0.560100 -0.585800 +vn -0.254800 0.176600 0.950700 +vn 0.000000 -1.000000 0.000000 +vn 0.696000 0.176600 -0.696000 +vn -0.950700 0.176600 0.254800 +vn 0.950700 0.176600 0.254800 +vn -0.696000 0.176600 -0.696000 +vn 0.254800 0.176600 0.950700 +vn -0.696000 0.176600 0.696000 +vn -0.254800 0.176600 -0.950700 +vn 0.950700 0.176600 -0.254800 +vn -0.950700 0.176600 -0.254800 +vn 0.696000 0.176600 0.696000 +vn 0.254800 0.176600 -0.950700 +s off +f 12/1/1 2/2/1 13/3/1 +f 1/4/2 2/5/2 3/6/2 +f 11/7/3 2/8/3 12/1/3 +f 10/9/4 2/10/4 11/11/4 +f 9/12/5 2/13/5 10/9/5 +f 8/14/6 2/15/6 9/12/6 +f 7/16/7 2/17/7 8/14/7 +f 6/18/8 2/19/8 7/16/8 +f 5/20/9 2/21/9 6/18/9 +f 4/22/10 2/23/10 5/20/10 +f 13/3/11 2/24/11 1/4/11 +f 3/6/12 2/25/12 4/22/12 +f 8/26/13 9/27/13 21/28/13 +f 17/29/14 23/30/14 25/31/14 +f 4/32/15 16/33/15 15/34/15 +f 11/35/16 23/36/16 22/37/16 +f 5/38/17 6/39/17 18/40/17 +f 13/41/18 25/42/18 24/43/18 +f 7/44/19 8/45/19 20/46/19 +f 9/47/20 10/48/20 22/37/20 +f 1/49/21 14/50/21 25/42/21 +f 5/51/22 17/52/22 16/33/22 +f 12/53/23 24/43/23 23/54/23 +f 7/55/24 19/56/24 18/40/24 +f 3/57/25 15/34/25 14/50/25 +f 20/46/13 8/26/13 21/28/13 +f 25/31/14 14/58/14 15/59/14 +f 15/59/14 16/60/14 17/29/14 +f 17/29/14 18/61/14 19/62/14 +f 19/62/14 20/63/14 21/64/14 +f 21/64/14 22/65/14 23/30/14 +f 23/30/14 24/66/14 25/31/14 +f 25/31/14 15/59/14 17/29/14 +f 17/29/14 19/62/14 21/64/14 +f 21/64/14 23/30/14 17/29/14 +f 3/67/15 4/32/15 15/34/15 +f 10/68/16 11/35/16 22/37/16 +f 17/52/17 5/38/17 18/40/17 +f 12/69/18 13/41/18 24/43/18 +f 19/56/19 7/44/19 20/46/19 +f 21/28/20 9/47/20 22/37/20 +f 13/70/21 1/49/21 25/42/21 +f 4/71/22 5/51/22 16/33/22 +f 11/72/23 12/53/23 23/54/23 +f 6/73/24 7/55/24 18/40/24 +f 1/74/25 3/57/25 14/50/25 diff --git a/assets/hbm/models/strut.obj b/assets/hbm/models/strut.obj new file mode 100644 index 000000000..7081c4144 --- /dev/null +++ b/assets/hbm/models/strut.obj @@ -0,0 +1,68 @@ +# Blender v2.76 (sub 0) OBJ File: 'strut.blend' +# www.blender.org +o Cube_Cube.001 +v -0.187500 0.125000 0.187500 +v -0.187500 1.500000 0.187500 +v -0.187500 0.125000 -0.187500 +v -0.187500 1.500000 -0.187500 +v 0.187500 0.125000 0.187500 +v 0.187500 1.500000 0.187500 +v 0.187500 0.125000 -0.187500 +v 0.187500 1.500000 -0.187500 +v -0.250000 0.125000 -0.250000 +v -0.250000 0.125000 0.250000 +v 0.250000 0.125000 -0.250000 +v 0.250000 0.125000 0.250000 +v -0.250000 0.000000 -0.250000 +v -0.250000 0.000000 0.250000 +v 0.250000 0.000000 -0.250000 +v 0.250000 0.000000 0.250000 +vt 0.812500 0.750000 +vt 0.812500 0.062500 +vt 1.000000 0.062500 +vt 0.625000 0.750000 +vt 0.625000 0.062500 +vt 0.437500 0.750000 +vt 0.437500 0.062500 +vt 0.250000 0.750000 +vt 0.250000 0.062500 +vt 0.500000 0.062500 +vt 0.500000 0.000000 +vt 0.750000 0.000000 +vt -0.000000 0.312500 +vt 0.000000 0.062500 +vt -0.000000 0.562500 +vt 0.250000 0.312500 +vt 0.250000 -0.000000 +vt 0.750000 0.062500 +vt 1.000000 0.000000 +vt 0.000000 -0.000000 +vt 1.000000 0.750000 +vt 0.250000 0.562500 +vn -1.000000 0.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 1.000000 0.000000 0.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +s off +f 4/1/1 3/2/1 1/3/1 +f 8/4/2 7/5/2 3/2/2 +f 6/6/3 5/7/3 7/5/3 +f 2/8/4 1/9/4 5/7/4 +f 11/10/2 15/11/2 13/12/2 +f 10/13/5 12/14/5 11/9/5 +f 13/15/6 15/13/6 16/16/6 +f 12/9/3 16/17/3 15/11/3 +f 9/18/1 13/12/1 14/19/1 +f 10/14/4 14/20/4 16/17/4 +f 2/21/1 4/1/1 1/3/1 +f 4/1/2 8/4/2 3/2/2 +f 8/4/3 6/6/3 7/5/3 +f 6/6/4 2/8/4 5/7/4 +f 9/18/2 11/10/2 13/12/2 +f 9/16/5 10/13/5 11/9/5 +f 14/22/6 13/15/6 16/16/6 +f 11/10/3 12/9/3 15/11/3 +f 10/3/1 9/18/1 14/19/1 +f 12/9/4 10/14/4 16/17/4 diff --git a/assets/hbm/sounds.json b/assets/hbm/sounds.json index 60cdaa779..55e6fd59c 100644 --- a/assets/hbm/sounds.json +++ b/assets/hbm/sounds.json @@ -28,6 +28,7 @@ "block.debris": {"category": "block", "sounds": ["block/debris1", "block/debris2", "block/debris3"]}, "block.centrifugeOperate": {"category": "block", "sounds": [{"name": "block/centrifugeOperate", "stream": false}]}, "block.pipePlaced": {"category": "block", "sounds": [{"name": "block/pipePlaced", "stream": false}]}, + "block.missileAssembly": {"category": "block", "sounds": [{"name": "block/missileAssembly", "stream": false}]}, "item.techBleep": {"category": "player", "sounds": [{"name": "tool/techBleep", "stream": false}]}, "item.techBoop": {"category": "player", "sounds": [{"name": "tool/techBoop", "stream": false}]}, diff --git a/assets/hbm/sounds/block/missileAssembly.ogg b/assets/hbm/sounds/block/missileAssembly.ogg new file mode 100644 index 0000000000000000000000000000000000000000..7765b56f19b8302ea20ab3ba4d64cff6e8e127ee GIT binary patch literal 79317 zcmeFZWmH|wwl=tM2=1-{0t9z=Cj@s3t{Zm`?hxGF3GPmUBm}qM65I(8Ty}5ro^#K= z{pTA!ZvX1hHEOLrYt}4#s@AMo0!o&aY5+9wFZX7T%;1HD{~RXW;A~>;^1^@) z?0orwI1i}5KW$J-FDd`ay`+4JnYM!3#3%;;54Q>PPezQ8cx`J(D`q8UOA0${6V1Qb zQ^--Uv$Aoqvaxbe&~0Xg{FkSPg~$^@9#aR9qp_>CiJiHTiL(-M{Xd0bKtw>sHV)4Jq!oHehW^5{wukWC&7EDW z9qffzq2T@zrxBOXgaSkXfZBzCLAt~RF9d@~T$yl-M10)#m{9y3W)KPcJG~Jamjue< zeDMf9x{s3y8o*0}a4}DukSH-k$`BeM?Zn_WLJ%r~55lv4;bDmX`z6I^1&I|yBn{bO zbKfWR-*A`SwXdzB1B91r4ya;f26*(ZvL9 zvwoiqMi!6A43^`%B?_?=^Thk73~DjigkX5F?*t*zVvriZ^R?lGjEI#Jg)s0Tl7~=m zn&AQo0FYlu7gb323WKQO74RJZFho^wzB!Q$e{PpaAlgk2tvI>fn6Ar@PbY=j6n9mzkq8(LY6}1-;hZqv}85#%# z07yq-a7w5N$|OrpsB6r(fR_K8*Gn}g{F@wtA;z?|MFo5WD-0q0-+q8pBM>u+bs+HH zAO{l2qZJ}m^Q~uZvA96@@gW2@(5&*v&pG z5>arr_~F#PRdF&uB29{us{EUO0EY%d5h+7)RAvADGKruJBXIsfUzQ&v&rnfb7{flo z*f{$4#ee*{5lsMvZ2&{!ZS{bv8i?zsw(Tk3US@EUrmk&uv#LCONwVszzxYu=uos6X zG)qu<$=M`=zAW4M6+`(ya8kT<4FD)zkW68c{>Pt_OkmQeU_m_73_I71nv{l{`FyII zPOG2ZLa4!w-zvo4x*2Pyn(O=z|4-8)s)PbE*#Bt={Sbl6DBnJHGRD7~3F%P45l80l zc#~_OR+y$9n`TtH;KIgApC72769-kzNSy4qEFo7jiZ(mwffEgh{C^okx`p;aa+8J)N+Y5)`^y0spT1& z2N}5xm48J5j2Dp?7gg#RRpA*`?isfqk!Y2XT3(U)_DAV)N6pdy$s_+A;M4%%N-g6| zEu%^;r3xYbq8o_vf-Xrv8?}@(k(<@%4(_*Vx20LpM3&d3yrA{Nb@ zDwBp9)10c*oSMe}$tlioDq=%`MFJ9_fP4%+h3df-BpVWwY3EUD*Y_qEmGy{JGR>_& z*h)wSbBQ97Rj_<2=}e>KM%kJs>EBfUROJuFDNa{=g{z9D3+cR203#D>!;wU^fl;)9 z^Di<0kidyLDTrPt_@Xgi9JL}0qY@0~1k69d|J7S`np5;r5aR!p3#6dml9&+xuQ1~T zjNlZEpbA8L{I6Z#)c-6C(xR8L1pi$Yq(zW|{@*F_g_{W86T^XuGyihA;e{dfA1pX0f-A)}epLcvmmeyXHOiU) z6P3CrrcqGoXb`yL#j26cppN^WC?%YN4rPNjhCU9dHU@p%O631U{dWqYnF$;r6F6%D z%D?O6$Qxx21q5zEsssRWTiSRK^DUJo3IIOnWYR$t{r}GW&jPW42xx$n4pJb*!uX(* z3dcFt0HnfC3I^^$K{NtHnC_)^bz*8JPJs}`4-Ke5%v7m*Mn!C?%u?%2+9=K!eTd_g zTk4f-Ej}YS!ATjFYnh25HNl~nUP@QVfFY#;K}C7v1@_?5flVMZ>@zGN4h^8hnds!c zf!IV*r4^NsTm+SHq^3AE<}|D`A$dWJCF{z{!wW%3K{Jpk3Sz&6mPQs@XTGqHzFtaB zaVkP|^_<%;uR^O#NDh!`14Bv$k`F}E&43~bQn|{*js_HnAVi}ZXr+Fn%Pg&gr2WCp z`d28$KnFg(w6ddyafDq|!(iUcT&D#JlBDMCNCT>)!F&oN3<6$4cFPdd(MTZXcuam$ z3`2C?R0uMg5*!HrM zV%Ub#UB>0;2~9`&_KK5ZUaTTj`P~=Oh`!{n-IJ^;58=I+r>6-S=X+Cx}byEZdo0Izd2z`b!H_)X9J497Q|v{`3RZ5kC$2i;5RG+ zkPl6)DZ@)ogv`ikM)NXXiV_6JKuq#b4DnZ#A<3$UNdIH_V*#>|A)iqH^TnY0DJt_~ zQOQ?0#{6Sj{WY*&Uh@A%{of+~9|qw7W({6oUwEO8|Et`T_6JChLIpxPr;nf{-TA#Z zJ+62RA1!4G-rEoY2*&bkcoTdG1<5~k8FO9G#ObRCwbc)^laqC$s>^ZM>FG;;nqYi| z1Z_*2DMA=322yox#SjhDZ0J)Lf-qWI5>;c^;C}_j*QaRPpa|bm=)Gl|(**#FU>HC$ z2({{UHcl)Y9#I1p0KtSJMkR_3V#Gm=Tx!!8Hb{>{)-eTUF_1w4DH)M6`LFf+cWt98 z|Lq@Mh_dS8KXM@$@(ekDRxZL+YCRvM$0Br=x)&{Fg^p zPzx-QK2&v%n5_SK2j z=g^$k1a-JjCd+%oq>L!p2PX$>r8fqT`nyzfH_qKzN1ZXC>H7OI9=)mcl!#K=0IvwB zZB@;o4=y%b827*cgEHKt3`*-!b9wjEoySO*l5^Bpj%!v;hG50@O`g%~Pc&S|s>vDO zbGD$<5dziWGJgPb^ZtJPetgPm6FUO+My1zDmv6z}jCQ8IhRWfX3#JnZ`Ofu_M#_ZvAMu(gY+U3=;Y9uWcpIcBw z8^Q-n)qG^WIx4>l9w8Bg*#44spX_VeH%4nuR#!e3+-O%8-5F-WDNf&QD_=h#Sm13> z*9Rg9xDovR1GkUN@nIf#+b^UTZZ6$<<8gY%9I!Ng3i8)}X1Y6FCsV9ZjyVlLy^&e! z8DQ-qcs;B0qz@cVR={ryG;1=x6A_Khj?`kM$Y|&?u&t%h0rlLP``mhTw~e6|O-Znk zxVx14r|v{maxb6v(h>$pIL|}>QPsDoESu)Y^$ko#fWF>oqNrO{ICJ(u$2FXo&qoDmwbw=qkASM1Fxk89#`m z;#vIIG9^BuRMVPi43~K5dNz3`>-Ht*b~pt;h*0sbrF`$gXG)^$#D7#?M3WFx$EA%E z5v2ls^erT5g?>OMT>|cXluN|1%&g&vuj!E=bwu*7; z&{|D*SEqH@vKfU7>pXNsYE5p;ThHoVG<|>qd>_*G;?`5rK32cNs%>}%uY3Oi zb-3RpgMCE6d_rB8wU>o0Ro~*O!gnt_o_4iz0$Oc-uYQTdon0RK3kF;}@o%~=zgvJ$~c|$`Or~Q;t!%14QJ+?yA6dNG8Io*9bpf zos|2ak<08FF{Sp?W^Ju3<~g6uEioOkSZvsLrXry{wqrYST%Aq`a>QABtRhfC<;+kChC z0o*-L)u7NA&6F#R_J_yuyz7i6hVOiTFe;4b?oEMQ-Z2=gkH_#o3)zul@f#VGku##n zKTCOy9YWxkuY+3my936vcqv&hb+>I?h-pBGwr#0Pd{5@R*7ViQ|0J# zfyK6Uw|T>?+jo{^=YhFSAIQi@qQ9Btop6xTX6(h1`madW20)K- z%iy)FTBLZd_ISm0-)+vL7r!PZCQbvSwcHyNmK7N6@mH6&y^Z!99!A`qvcN63$2|I0 zt23PK?Q!UoHwQk=S`Bw6Oq2)oa?s-RDf2(_<>rFM=S~3Gv6&{ML4y*xxE85*hnStj z7d0KxPfociOsW>{Su7pCUe{dA^TLLa-Ag*<aS_(h$WKw?O=pLHn%ZRdKl=?|I?S3{U`rJlZ zT8{$E9<@+$=@V`aAmjPMD(VEOP}oIA{4ZBy1-WnA1w~p3iFY)y;JXIJv1QQ3M$96o zd!-W)Ty&r35J`#nNQ)x4s$fH^70ng>6_5|gNm_n9krYc|C6`Rml%Io2CdfM{j z$xo3kFL8lBGQ8h{pP;aD3f}BJ&qL*h66c{s4IjEDrt%@F<>>jIT132|J~a*cI=zq=>r&%4&Xe#V;){)puq|)a)sM(`waJQ69o5Ql4exj{v7#q$Yi`LfjGU+ zsW@HQ_VCDQ$8Xm6(IWjrdsx^9Ek)d6JmPKRa;RLyHOVum2dbe*_xGD%8VerbADXbs zs#faj@!j_jV{G1bgX@dwBWKvt{ya<{^tp4Z&t!|uqU}$&>x(`2`4$sJQRq|;kk&%a zi4k}?OMdfrH}Rg2)pb}bZ`QZ$3b(vDuYRgDgHH+LZ&~&h*X_=@t5VyE7s8(FtOn)| z%i>R7$I&NQWF1aCidvQXxr=yY1k~(;!R|*FJ0k^8^l`NNU(JS+_&WSzFIO(p2M;Ez zkApvCI*_j86Qrl!xReolCKRvPOjSGhM9-ldjcX@A7R%1ysCCQ#%7WeZz;{w7!Yof( zk0?rYuVVYrH~#*#$kz&a15Njt(O2eSP@aI=Q=-xg5Z+&<-uU%l z-TW1YEAJW)Ty+&Px{23rt&iFTtRXOT8=3kzp?C;CEQj{AS#FC@T3CT>2iRM1xzU$^lB!!f6 z+OA&Tp1D0;JfWmwUlrWfrp`On_Ye^L&X&LQ$S0o*V zT8vls*~{5cTRgZr`Lo(~d7R@RA)2pj3w?Bv)bDpHbmHs%IQ50ju;*eb9@OJ)IwOhy zkkZcLb?F4RJ=1-+dUb?_p)>WL8C%X1%0HOV`^TVa!I?BO!YpPapg5#NHY~qx>`x^#x5)WzAQ{0?pOu@>XTN7Poul2g)aRwTNzTjKOz2l#To&TA*{Je&7 zSKv95+U@DPga$!@LNdW$*)`Yb=ODAv97;xdr7}O5O%T-|0FW}9VU-xis#w4?Mo^+7 z9dVm0_2WN|Eqs{p4_q--zn! z;k)FV7+d5Cl}lzomBHbi^Mf@&N5wc8oN-|J`&NDd2HF^5x&3yPt8F9OuDn!Hpy`zG zejd|^xuy2prrw2NO1;bJm-CLos8;ttd`Wvhx5Q$!u|^fKXgC-2F@?>EU)fLgc2eDN zIN)C!5gz~9heQB}ZyJ7YS060mVGp232eW;Vv)Yck)WYPPL&u+jZQI64c zYn_yfVZc@I*%@liPltNFm@vh+b~=0-iGGEOt^0)NgouBy#7dRdbH1Y||89A5^p+ zt*@{6F3&%~gpY$3?uNt#hYSYvuTw%P>UC{&s$po;pR63pEjs z__nzZ{s|2%H62!WUpjGdzIm?hZ9`mfUlCKPoyj#q@p$&vi+OM*`Y2f_JZHD@<{|fq zqxaeTiu+)UYPhC0d@x9VuzgjC{`Swb(r)Q&T0iBYd(q;@^DxH-3Blg{1dHCu$}jE~ zAd=&V(y6GNrJpoU+{-R|KmNqrfD)?&1ID^oJba(8-4)hzJ!6>R?jnD1(ppR~e_HB1 z*DYt$-8?$eI6--(cCqWQT-E+QE~p!!@mqetSo6!*tjnx2K_YqDF>jhzW( zhy>;hHVy#WL~_2kd(S-F03+zKhFfQ+@yXS2vJaYd8p(X` zb!vMT>%U@Lea{~W0O`$HAxCgu4A`w|4XHM@SI>}xO5`d}Wc)3)aM+d%*$pr)#GeO@ z*@axfeK=6QB7$MLcprZ_U*efUwnUB%HP=CnKYxYqs3ZOu{7>{bGJS^Hj!$++!uek zc8R2DiM~5Y&Vi*X+qZH%50L}42#*WYf{`>PW{2s7&OF958E8rP2_!&&p4k_5-J7Sk=8D{!o z6=XC7gV5b&e4WfIuqa^_ZZXFsFyDiTfJt4B=5x?=YI*N-YTbJQM${$+T^x^Wawf#v zg!c!6T~>nP=}J9aU#5E7TD^KvYo3n&4EB?g;+I7jvYy?6HXa@=a+h0Loj{9|%r)|& z!3%@8&oOPi**I*>P@)CwDgL8L`zH6ssAwQfg>prjD9zj_O6BAY}tx)S7F) z#D$nVRA>-X>t!{It+vtkc(=TW4s5x?vEEWSH9EeIx6>oHY8uJ=?}x#mWfpK2$~$WV zN>iFMExA|`$$jSOBx-M{fP&v7S(Em#OD&V)@md;;sKUczs_@p@8$YVVI$FY)0hji+ z4|TUQPyi#00)}`dzC4QFhSNRdSQK6g-y7fdgmS`(T^Alek<(f+`gJ1G>2bTX zoXy5X|u0WrviP^TT0oHTjV=~LYcz{SU z+Iafr#kouUw>9v?PsQiKwbfff!r;X%PC-5UKTTM%gXlU^l1lr+oy*UY@xNa0-6L3M z_qJ(=Tyg{yZMpeTy4a6B+S~LH(bl5?r~>q}d1g*M0wNpk#ywB>4)RK=8T)LoY9CB5 z;JYmf^zQ8~q!B;o{~0N&`Zb>y%f|#n&4PPMil}MwdFrXv`*=>{rF#%`g37g)t+Lu< z?9qmY?8ROWt&uQdx5b%#p655D`%({^78mkHQ^uZwgEd(*=kUi}W*4B(vL&9SxX=seww{eUBC_~%Id!~E~^+oF+0Gk1U zzd7pMRlVMahb7j|K7NIX!^4mih$fEOUcaN!3qE#PCCT1DD!4yS8+LzR{$yu)(G?Nz zYWx~w-=GBnyKUMm`gp*&A^EBsnF;zUd{F#qQ@OweL)KPpRi#&Y*2s5FbWQT=9d{43 zC&9Ozq_|#7s9%z0zJZzMg4DS!PUWE|qa89}BLw&JUh5KJ-b#NC$Yvww689%o-L~u{ zqk)o3Qo4}SMGgI}nG`gt4(_m@6AXr-EHlY3D9obeg z#pD0F-WeG)^8YNJ>TdqaSRu&_r73#2`|Gby8PYv>>e>`={*<|hs=nqvwp}&MdFz70 z4`+g7*ZZq_*s!9h8Z=|AfC9q^g~ltVeemjtIhNz4_7QH^dxo zD?c*U?8DLhogCpGy1L7^0VtH&F=R87+g1EaIls?6acA)*BT z;jhr$7G-LqU*%xMnRAYpZaO}#NV+yRq-`lyP1_ZamIm_XPmn&fr_1q=VR<5_k66at zRa*C=%QeS#>`5HX`)>C*fhHUbh|k)0=WorKHkSz=HqYFMtyj`8;8j=~CzM%D?_>nP zWMM~fxt^Mg;Rx=iG`Ezu4am@AUr>E+4UH}v*(0Q({13*ABONq{#8=wRXC{LBeis&2Dg z{`DMJX)_%(p7`i*;c>|D?llJr&qeKyvpSxCj#Hv<4o1m6mJbqI-tGFE`|!v?5%A!R z)O2WDW{DRK5g%*?C)o?8J+#*wG0@;~!MzOr)Qg7&V zr8E_QN_lr7;B`}GiIo2w2p^`#-mZuVT(YNRez0$@K4uYzGF%*E`$*ET`Xy8IVF_H` zOrJIefCNn(Y-{GV03h0u*wfHa={yD;j0SXpPD6dAuulr&26awZz~{fch9{W*bmHUB zIQY~}Tk%OnEK>OPR7hZ|KiK9C&jr`(33F9i2@?jT15y)&dqu8N^tSohiN%55EwMo-=T*@$|%WBt2va=yP>#yE~HNE`& z3zl}kR4d1$MpU6$T0?;~?3RS}vGR{_Fa?JwWPf3ibO1|Y2}Fn7%0Q!{DiZzQ6#78VBcXD5@?-W}e{ z^U$Y}s*~%sxQC+t`g3Z$_4S7&2^Zam72B-Z-K6WAyX%V4MZ=Z*SjCXX5EG+R5efH; z@{uhWlvVcvXC!jnAEV>*udG1kZiK61VqF4-5%m6>hyz6l@}gc^TZ4JUR!h5y9g)-C zdSHyv{NSvs)djxg&od^q$e?9S`HN2Z5}O&Nyd3$H#<{Oto935MR;on3rqNAaJr+^+ zAUVroENLJP9)^TOtK$41?iUsu_JEc<8U%nbv6z7sc)aeNr;iIH!}wXKAGP!u56~fB z!F$vXu(+AZUWt=s>>T&K$N)iYcW+m&(3AArvEK(ZmU=iAwuLTu45B+8dJGsKgqU`T zgD)0GBFFuNER4**uSQyg$U1!=1=r5?Nm};pRnB^I&&Fq1Erri5bCFK2x+NFkXkNe1 zqc%7T4oqJB@oKsav%!<98ErTsQShp+6-}%)^l3&l$F%kJd++*Rl!Xzg805K67i`Qq zgTW^nG~^1VKLYfMx>2C_QLeFeQ?;$B!E(wKBKK|Qm6_HWpVkOK(Mv-JBUwhD10L!v z+B71+(;<{EdSJ00xd&mSW>~*!lIoqX#4$V=LyG!-TunJN`1lmLjI#SGt7y03&~E0h z25igA=7CZq@DvLgD&!@5CWi*xdjbK$UvLW8Kn1cdj9esvv}x!6tOe)si!%#d_LMc&Ba%#VV9~u_bF+Qf3F5*DWGSd z&uVwpd|wb`)?4bDmsz#eVca@;t+{z5rT}dD8DXevH618k*&xi~Jc-Yb2&gwLpyL+m zD$f}Oc@Ec;o&xV=2rOSR79D@PI@6wYKB;QwK>1ZV+R>m0l z-RNoz&g?M_Nr-<#KtrQKR7T6tkyX@Ml;!&O-bCwv_9kAgP@EQ(auNRBhkyse+}_+m zZbN`EpCJs`Cot3%$Fb1U(Gse+o@3se{d#Q8XR?XGx@GaK1m5$?Y18Agzwqm^htZVl=hrdOe23tohf9R z$uTxRPz@>un=H(Rm)WEp+HiP`J%(f&Z6I`2*hV6(lJryCzDcc6nK$IXeMMBaixs0$ zPT7um2o(YXuqv4CSdYJ^XdU|W)Mp!THV5FqzIvsJgAy7rb^Unx@Tte?SMH#D%SR4w zhd~VT*mY7g_eJ3lWR=XUoLUb7WV0N0&{f8<{Q7~eg=CBN&tIL^%Zne|AAEugD*l)` zsN=z#z^`VVp=T?fQ+^`U($h-4yx|rEQAk}$?Y8&!>K5S(H!0~+Yzxy!%H`sXUQg#) z$ZgAiy`C#cv7)l2$T^f!U?Tk`cM!wtH;frksOZvy7&3MaGJkJvSeol{FY#)V5*rl< zT2N>CZj&x^!+wzjav&B)m*AeyG%0NZ8p7ws?_};+8Cjzhg6ul61fg!Jxs3nZgOEpw|^ z#i}z&g`CpE;lJD6eW%WelLKjjl!c9-kMn%Fp~rvIPit}oJefs^s{h=CoS`*5j^M{K zaGqOjDZu;j?V86(otOw-;8S753QgToTd$aO=bJK0-rbQ+7M|j6Waw>VE3x51-8rGQ zDMz;DnJXTyi_iHfueFiBXGggMQKXJ!9|ourBR1H()K49tPDhageUZ^z#U%}>T^so> zh{klNdp$ZpVAuirUV}>q71I*lecQ?(FZiH@gor;ezrTEnZ1?rfc@$Jw=JoA}p4n8c zt-(thc{J&~^(<;Q8!6CxFidIdnLlawcC&pmRp(o`H(Xzl-2<;*UH6Fb>{cBuTSM)7V~Nq2hQPteG^Yt$Wbs{HrL| z^yC)eH!AjLZvbH72*_xssXEDU?e^!u0zS|N&8WIQ4|++{()KIZ@CEdRW}WVzY?2B; zi-Kk?uT&nw4zIsgK65toX7{C7$7 zSSp3sn%DsmZ~J}FtfhRlaJPuZsPnxP=G_GF5Jd}zh&GH6#0Q|WC4#7owcolrd{7pS zSVe@QiVqYqL>kMIrSkpNn4q2`3&dYN%y1azR30X1a`z4mQiZ zl&un02}Tbm>=>lf%W~|n+;b&l${+C~-FgD?3RhHH6Y9MFsee>+z%Jye&ynTI0uwzd z>NICJ+uEFd3w?l|$3SPA0UDG)c{m+oIQDDZCcGy^CNhuDcfb1aO60yj8-%%(prA(d zj9)l~7tTpD?I9STM~hib*T$ykSdXggEX%_R&@@DyFmp~<$@9ypvk}0n;$zs0plwf+~f-!=svc7Pf09C zS8k)M(#i~}n2}BDsN?CKK9K~}a?Wjtv$aLO+`^f?NzQ90niK1tZidOKg5G?y`n6p za%*JcNNB*O$u%pu=Hmc&WGDsTKlGbwP-z4W$YxD-MsAiGV=rbG;4(VxUURIxw!$GJ zL>vX&f-PF=<}!hjz+{}^a*0mF8k82&0g;n_+uq&9nY}sBT8Y#M1x;3mhl6T+ku(&9 z(9b%#uL)04pD%hF?#wr+I(!;HUf_e8qT1Pp`Q%sF=`Hx?49zDr9w`>WINzE>QWv9{ zdO&bRQ&xR;n0VabM2*4`+W|;XpFs2Q-ixn3MB(IpETX9RTx}yy<@AlkuquM1I`X5T zrf|Xr%q`ld$vaenStm}~k)8CYLXQI}fifc%*F<+>{plNo3{x<$`_19t5 z&Kg1c5)n4@Sry2y*CxTCq@(s*+KC%jvGXauL%+o!O@FOJT_wXW8Q~9|tb11O>Z9OD z{Gk_IXH(?^vQ$Fu9(1{aMOMn<8^NC?d$F*T*(1;caDP~gFIBXRh4*IQ`0}t7NmM#Q z2^M~dE2dA0>NqeQmL*-Ej%wv%gVHyA*=Lt*|?;qI=M)F1R0^Z?s$h$+qK7Lc|H4c)iV~R z?zhXUMyiozbt7Gv4d&)ELN+dZyYUmZFX zY@fI#uez&JUnOU24kmK#W=;@3A0^`XDN*PWgE%8B9*L%9cW7yMR(2wAtUv9OCacfN zI1>#O0V^ViK;R!9Bsg(@QBflwgT}cb^+{8^el3aHY^Q6jOo-bP?6 za)$ij5jM+l2Y$E%}d4 z-o*)RZ21eYz@{z9o;De(`Ujq!Jx4$Fj;d`8vI9u#CH#q*#V4MS8@&=G*q@`q)%mG& z$$>yDM=E&4IV|zy*C^lWc0`t;0*&u=d+=99{2HI5&3BMUyU-VV8|xeSl?BKl_Z5Gg zX;zC3AQV6L?`XOkML>-tu=s#w-;ysoXN*BrtX?Wn&FlMOFI{Tu!x7>w;zc!sT&&K%fl~KIUTC)1mes&$qT)@btv0K)?*g>@>k2NRHXh$5s{#!+t*%0%l{i#ApCMAPi`1aoo@R5DdQl@(@s2Sk%3 z@0KCbrIuob!eF1C@5o?N1}3-w4Rv2>nnZB558%0lk;vdV;V-SNm^nO@1!NQ02u%vE zTO{~pJ75|hkb}8?V5IbP)tiR?6<+#BTm)1by}2qt zS)DOf;o#umaVGj3`n$m%T7TEoZl(B5hE$QKZTl&jF8q#aBhK_V?wqow){L$R9HL#S z{d%YPyFL1x)a&CfR@AU7i!EzTbOkPl#RD<4^1=)ug1L>(YYP*DacpW+aE%K#7mtze za<$`jYms14VOaE-5U1q6qhQgfPm6pkr7HI8sMcok5{trThJ0!zaP zpSTQ}7;HAqIW=TMFs?|r-Jg2lfu^Uancr9Mv1_gZY{E}ka|hz%p}&Zi#oW*91gw32 zAJFY{zEE-EKW`q;?eK}G(?0`DbW-^?&%POWSgZ+X;o1+AIkxMbEYhKj)T9=;f7~Hc z91QJWywan>DesbMO|4#yA9LL=q>bfGV})v>;!ewY-=^;*J*z)FI1PG6rWe_C#aL}s zVF7WCy3%oKW`=Z7I}SBi7g z?8;BneigVkcfm(pcW*Qa1$;VLG&+`{NPbV|_r8j=2W$4=)w?#cj-HI~?l1y# zf<9TUi-=K~4uiI`&Qlm|mJeeovv7OSV_aLfE+EfK7dGB&d)HSj zE+cRH3)kON-wg{j?j>HRDf%)`VAs=xc2D?ON7etLvl9a~SKShGUk7-Yl(20fGX4lz z$RYc5Lg}Wlqt!j@d>k^<1I z=(3v8+n&=|MRfz2v1avnUm?TAa~Cr%6@yVD5aZZ6yXf|6q?ZT~y?8hPZ=K~{@ZbtO z=Q%_v9-@AuvViN;8asp6Fpl`zhLh%NBHr6C7GKljsmR`Q{9u+vWcAz~8htgz^PG9L zu!r)Lbse^3rRz~?Y3JVPzE%^=0*%=sc+!*NitkY($$2hk2bn`f2|~T1#QR3e`oFw( zN1eNDg!3~j**X$o|9%d`;D;aRRYiLVy{)KvGIjei4C|m*HYB2FusS#0v%G2Fa6-8j zQ?jZ(hiIzq7l+CNO%QUf`0GFzafz)ze9+4E?`9CwIJEHL)DyuNkP}VFv`I=umvDw9 zuY*Fto`qR%xDA^)s0jsGINTs_gaLtC*s4r@+fr_PsXxI-kjeBgPKVsU?JUX@)0pbC zTu($;)?wdDkZ=iOrI5>^m4ZtpOnbC_?0_h6K*{C($DfFio4Rb_cMGKV7oYjHyddaid})4Gt4fW zHX=1DXTb%R8mnzKci6H>i5*FRg?jz^@6$rH?XsT70*YK*M23R)L_=yR_P`K7r&rXacvFQ z=LXVb$Z9gx%Kx~90scJtyuSLlGxZ)WMER8=MR#^7d+5{(GSKJ$GxLn*32qK#$@63W zD}HXn2{m4k`TcD*H2|M@vHa$@M;@zDX!qk&F4$+Q>!;8~2Iau+nmPUs3ocTg2IJ zz{Mh4>j0d8fEFDMyl9lxw7j#7nns7j7NUp( z*XT(v@ed6;^}fNS@$i7^7qKh2qykiUb?T6K$-W~5!|$sEEPzjNsy9bJl?RZYO9&0~ zdS?zY`U8NC2FAc5TIvDuS(ZP|^}SGl_S^U|yKa(ZL#<(tmE(qk(Rq&Sda|Pa&mcBB z*47`(v~NMXl2t8ebC>gJ#MWTC0i~een<@Vsnkg0VV zPS@!czn6)kSZY6#=iL{_3O<=o(Ifgo@uZ7oaai5N{r~~k2`fqGCE0cU$dL(eL{ucX z9j@}IN22|PsB-S09AgtlA0r7wQLSGMd`90TpP+O$dp~YgLHW0>ihlVJp3@<34Mo;T zDJ?_{OCE(gI7|-Yg9480X%lyTBqDyL)|kzsq7?Bif&=^=TJ}&I_5_9Zx{$uGR@w}O z%S<0GYhO+(km`?JXS4fwq@0x#jP6+@Ox-%qa5L3KB(<|{Tm*>s zhZDGR<#~L3*C-SmMRVwoSI&?zn&bQK0L{Hp_H4}xlq7Y1(w#Bkt7zX@XIeSESYP7W z#5{tfUlk!5pobf!jF0q7Wg+%Xx8o7RYXc`g*CzkA)z zp;f(7GrY8Rb!)S5?X|XE^?A)>0;V@9g3-fB6T1TRuyIos$35fQN-^)S_Vzfdx%6O- z87Z44!+f*9qh(j`8=u`Qw_2CgTQtie+>F-IT0L@dSQn0YP3gjp`OGE}s-vH&`8#9Y z*2MJfK@`vanp`NO?06-e_TmTVL%ym3p92)+Qt{ptOy~S?uphT17UsLI-99~%e#^vW zb17b7lYEWXB+@w`8k|g&x$$1~R>7)it0y5ntOc!AISD>@VKuNww8d0o+NLjWfs|TQ zP8?1`%J>Qa_-^=2*E%kRrdLs^+74BpP^JC`ktmnqwm$pE__n+_Z0M4bfmpt>6C&SEZ-4a@E z$`0tdSOhEaPVr+w>|}8-v*&{<{>ICmUoPGX-Yhgup9t4H%?4zz2sXziC)pMpmzd3! z^d0>dpj3t31ufWi*$iGb9aM zMu$G7I55s+;3Cl~!G6AiIl@W<3?INB2Tb}$i_5D1f(}I7P)ibj2;K|5tP_$hF#kc@ zgB1oxjVoOXB}{M3c|P9uB# zGhVOWb4pWtu$!=~@B6(-2-^mNhLP|pInxq3)PxJrVEx!-*{-nRN1w zNTrN3f(b85S%Vt6&3sRSYMw*y%qAb+DvQ$2C0{$0r8rVYOo~8$1mX;)j3Obh3F&bb z62~6HhNTj}etA2@`(wP;vdR4?n9qTz0GAbul1JTe_#2*UG>6e?2BDU_Y{IYxS*3ui zkCl>N&0~Sm=s-`ZES+o)2ygen9Ygys)$*I}{M0y()y?hxB=ji^T`UQSuZG(TXb#P& z*AmH*cxA>jUrtkADIpa)v0V10W4EL9*uUO*SMdns@34(>yLMBfh&K|hnaL30GZ_8e zFh?31GX)N#qQxqfx7NC!#oV0(DpKqAtTh;v`h7X@`G8L2lYfJya_IA*T~mnee(zvQ zR8+(&MpAU0%QMgUb5tmPTj{M{(Mo*1a6IA6e6Bfv0Mq>h3N~+>Apcu5BopD3BqXl> zMYdR}-zK|tI=|zjPT$m`c6?LxL@*=FxH6P(DvT2U-d(>CMP~gmt?)=RGM|Pe?}jkp zZ+FSZeVzJJQ^40MkOb<7`?W)?+q@O2Zu3bw{w;9FpWoA5r~Pp0`R9h@B+xrhES|-1 zsd>_HEMs{5v231Qt0M6}G}`t&{>M=k;##Aft%l#JAX;Qx0&BzMTM;M_aZL_N@ucW8 z^UZ>Cak#ri74z5K?ca0XDobH9!{=}QmQALYp!S7-aFZCr zmtX046tPAbev_;@J7Pj*#n!>IM{>^n3QpDVf?H)ps^n;6giS|=m@1+bsrES#wYOYy z!Wfy%=1#&lD%Qod#Q=a!X!w%E#Bg^X7~J`O@4wd2fOQA3jc_O355|kGa;{MQ_=iv|O`)FZch9peZ0dsXX)0+Akz&KK?kf{*FxN@}hszq#sRIBN5dp((-mO z=OHHn`{o~5{}TQgu`mDo$*Ua+6N(xZ)@2yaXDnj7MX3}FBt>c19}oIUyzh)@UyJ9K znnL+x=4;`9{BdRS6tzj@ivg?#U4Lp;2vLhDIQF{u8*KUsAec7_O2kQQkSZ*}TZNQH z03x?iHCEY}#%YWmE2Jtd`0;>uZo+{EG81B0B~(PijzFRqP1cSdb_0iRCM$BQS?bm= z>Fw?xre>ZJV>X)7A-N2y^;3mQ3B;=W2a|s6dADmVuXNK+M6a3!K(m6fCx^y%=e`Fi z{Fj7G#Qcd;`L&|Esr1fD`^t#a3{^Wu)4YK%UseUWF7Mx~xq6&MCdS-qGTgp#%6Tr< zr$@Yh09Co-LkB?1@+Pg1HlW{6Ha0x2-B{u&N!nO-T46q8pSciCb2w$L7!5q@*A82*J+$Zm(RChjUJk7}+Wi%lU(?`I zkNrMYT4Zxin`D6C07d8c#f@#Z%sW6)5TVj$Xc?wois^@s&Q#ah}L9NmNCYt-8x zp{+-pls^Hd@n5jS;uMvt_<-^%0@i(GgplNs%Nq7<_B!`YVlrG3fDq+ zt_;^u)7`a_0OM?`Mt}Mn?@i;JfJA)kz^Rrs^OAGrrtAGcSYl+Y-;(ll?{>+s-WvPQ zVgX?@)~5;ZpHV)$Sby$qEyRSnfVQD-7F6RG{9TOlpRFj^401D?ei~dlnw0pOVxliw z@-L3(6$a4M{ob^$ZLl_M$(cwSsv~8?STopO-xB}`W-t?V$^SNe+4HZA!@eq{I8;E` z8dve*41rzOtHG<^V&c_%_n~%4AW~0Ma(cPG>DeYS^N_(IX_xJzdpdaiX4?O3o?DD= z!nb*He&M1hR*Lp_$o_P0b97;YM12KLR<6p$&_B#NwLMcmn`6OzISt^gVS~SY7`d;v zrFRGNk?ZET=}1~3kniQurYZo+70mraNTBpNDnc?LTm+tsNOlo7uerwMbTD}x%6 zu8er)+Rtx1X>?u1Oj$TAxtsV7y{%KhwzSbh=~c5SWz*^Sv%VaQ{%T0LL}?PlJ0GgJ zl3Fx&64prMA94;ex!-Ooo}fqlFrM!!(jSNjoBM z{~rBUm;vst4pL>kfV)VWdM(ER@q^gxiP18QF;W&kUsC{p;TeRAoAkT{{A(YKg3$>( z!o9QL;)KGq9PLbxtRt7q&y`HJ8o8?*7H2%)!NV1C3gkgU&A09wGPBbM4-Gj&>+C2y z5`lYdW~wnt*k9+vGDs2>7Q;@U3^Z)eR?==AF06fVxPm$q(4m`&7;}HbHhXAyKHXYH z4o8I+d<#@#d@iUL?TD~xIXqPa_oU!&DHSZn1m3@&VnfNeWNrz=K%13k#>ipkbHz2CL8FH05-}&jGV#x#s?@JQjU3h9c16!kYt#@1)S&r zLPY+7Z(D)2!REx_(pUce>&YJ5ZilBZl~-6z>3fz3$y)ejs$>3Fdh0NI$#g5bmRbvl4#JV!IFW-Sx5d8&2k z-f$_5~0>BWz`S;@SzVU)Z16MW5RkB^x&5d`46JRw%NLj^%7l6pDqf zQF@L65Pz1#WOt~tK}PyPYic$Vs)rt=3lKNtRt`Oq*yL0lp%{;b4b4rJXUmQ|^HTv{ z|LIb>^vyWpJ&a}J$j3DxH3Es-XFldlVy>}L19^_#I1cKsJ|gPR47dr z`rxj+iZCCbRj;YpW28j_z{`+-Z$5yfwreZ?T0Uu_wg(f2&7u7U1$go{8`nRnYF5@` zB}~P}u8&TTB3f?`Y6bx8@^v!Ln+!i}^#=4JCg;zF%fwCAIF7>oliCJ7vSh0_RZjiN z_|;i1MXh(Q5^mkiijQe@E-dbzgPcpx=a!4{-OiznmHaADh0{MT2@dxFN zI^8vEc`=bp4c%3mmzt?4syn@O8ze~+{~*8Z82LhG)5sGZd)V(}podFBz*KVq=d5w4 z5kKb}l>aH|liAnEuluU%C2{Ilg@t{KI#d9v%P{1@!kY|5>w2-gDU1F`s?}h!Fe2k% z-$?Nn9Av8Aq9Z|Tx5x+|SjZBHB+OnREAAxLu%~GiK;=3prYs&BJh{DWO$TU;kbaaj z>YCJHz|6rTDU=tQd29ds_!H1%>$et7-hR49VzJ$XAk=C`NJ@HD75i?Pcl=94Wa`F*GiO~^DsW>3GoHJ12 z)XXKAo!Ukjpf}1p_9J&h9%J2y&Wlr2T8wy9mR`~VPW0|@_(H4^$=dhG6VTp0O zt?^%F6cts;GF1|jy{+BS{vEZyWc(<{$B+HoGAet@SwpxuX!&plnfAk2t>3OsZCZGcdo~CkXM9H6 zzlCOZGYUUR1$XecasEP?zMo3<|FE=|$j?njdL=^d4={4CL2d8l*h zh{%TPmQD={@mt>A-km2u8XD_>RU7(}JMc`CSKaKLJWH4BJqam9!_k*``*g-przUPP&$!U*v|{RjZKM@Is@p^&oa zmQkHJaY7lkfy$YK-2nu@AJl|K3t7gAcWMq2{j1~$g(%(>A*2_)5y6d6Yj z|B6kt_CM@zGzi+zJ9cf5Xslk|wPLUwn+lJ0{HmME5OE7|a}hrH{5F>3xLbF%esMEC zq+>ta`H6omQ+20{r;O#M>qF}KAyoSkWIiy(&fV3hu!dx^gm&@VPp#%&)w;tM_>=7N zm*O>_r94pOz){jS3#;<*20s4mujNRU;J%>=U01U7BmoueVG$Y>TQ?lx;*EHxgdt5p zk}Xv*7*ma4RRxkz=l#KCgFN(uSDrSIjuI+)EvW7q1C8Y>6gnhS=+g{zaP*sNlwc8J z=Ghgm20R?t8U#?I^x(Xsf5`WwAtg13mDN@6{~gXtQhPSJ%BFlJS+|R2h<|9f zvclwwOxkiItdjVdo>!m534YhzelqB86wW~y@{h4qwJ1c{cUMX zavD3A6Q71h((c|Vd$mbby}0jrKMx6;N6B1h%Fn8{#`b)1+F@c`kTN$qN|z>O^?7(& z@NoL+z8a)o+c=)FB{UZZz#ewTj=4N!BJ(t9A zwRXmD6f6ja87mi^mpZSLgT`h9sx;7AdB9~PD;+Bmm*iW(Svzbf zQ*{b~WPAc|p&C2As+*(MiqLs}0@3Y-$Hyt5K+WprMd4voZr~uR)t^D<`QA4l7tT(v zKyOrXU=(Y2celXPW1DlK>akoC$PePcV9BVTH4_ZTaycl?^AxRW9&pq-J&z^oNhIRn z1FjmbD41$|<7@}Dn_W~MHLd5icA@0mwk%^(F;9?;w8UNJ1f;nc+l|a?sAK?~^M^fc zihRkBFZJLYq(=t0|E!;58DZ0OGni~g6cWaJmjevV zF%OYSOngnQ;0)NAnS-)$&j2xs2}9vU_`q@y;&gD6c!T6x`J_}T6~Rout;R40pqHov zFkheu%OPpztt=3y`2^86vDNOhBP{B-q+gku#(q=#HLVtq7|b=7IO`nqd2@No!O2PX zl0)`69+)BJxt4otAeLtq#O^nIDZ-hvDVx%c?(S7DwDNa&WT&X_%}by2lmX(h?z3ME zc&LAtDQ;vWtABJ`j^b*S{NY-u0)$PTxk&LLAB!j*zjt_~Tf02RQNXfe`iT_N?z)=a zL;H92H+#W-JPJ*C0}X%5&`fuQYE`saGkZL}F1UBo$Qn6EF_3_f@vXMlMq<^Qq6se) z8SnbkFvfdQu5@Q2YND4?4PrQ#Z?@qzE|u*hgvu)iMTZtn^wAwFyCbf>BDLo|&d9f4sL6E<0Au?0L? zjBY*ilOsq?8t=X3ujfawzdaIih^!+ylyfoR7Ak$$ojBA+G}*8T=YWPVEz6&%WrYwc@Mn_m!k0zm(>KCQN#9_R1@n1>O{xB!a~ ziy~|AS?SWqks=@}pcHiR?n{`ibc;OgC$-E*HkTlZsBf=Fb9CDtm_g#XdAj>Wx#j&2 z6MdVIgZ{C5`ATqR%Ieh4>zD7HDXmix=L6S{Aeq!`R&P-bS1-Q6GVmuWp|lC%57Qsd zhEVndCM*O$8r^81ite7R%ge>0`$ln^LVaH*jTCss*a~flk5fn$hGZSABb`c+!cPQr zh{7w&q7y%S%Uft8@?K#FN<#BtWT1wE3+KRJB`PIywTK9a{&C~M;E?|S0XTcljN6Rc zGsytblL&~(bSC-`iO)L#2$Px4(iO6`9(O<-Fg#5;Xvh63kAHi zGNHfP>o^uM!x7b3Qt=RUP`@RJ_L~0mq@H<560W(>_?K0UUSVvV@bJ^k>2F@AdZuLI zlGFp%lb-Y<+QD|*#)XXIMQoj@DLKQtrtbS`TkP3yRq^7)b01g(ESC6Q^e4Em8lydw zc!jWH=gCmxL8+MHe*lV7Z^MA*Uys_D5-*zA(e&Mpu3;Ws-)qqSC&b}@;Rgf={NNA_ z$4m+V9sY}NK!89G&>!e;{}+QmdwYI|{6OvYCQ~s@T~D<JRH5Ft+Nyi-qo448cB$G+9>^+Bbj@Kpm8IcCqgjLHcQa@* z>mb_bgtEU9|8C7H;DvgZ>o5U8 zJH(+dq9HHh|Im5d{c*%uuaXmmm`?j0-~ghZLEb1~Wj~{^wW}w$)r1B^sJUl)M^WG# zAZA1V3iVPDP!5y17MYj7dJ&_frwag>c%=6O*7NG%m&sL({Nxt)_7QULuJYIKoyqgA zQ??a1wjNW#GHrjo_uV-3oWHBKcp?4s?^HOAp^U&yt@EAjTBftBfPLk;#yWtH+y1Vk z86Nzlo0tY>jNjj;u z6o6o{Z5w1NELvXj?O(q<7#~Rh;%$H5&Q=uWR)n&GoU&ZOQC9QSHO~%jqI0xH(46vI_5KI8b64RfhJz*~le)I-G7d z4@@8JaHAy7TCi$2{3jmKmoajSBR1wBqa~4LSkZsD}JVVNo0DtFPY#KkBFRy71aqicP_RNW##*9@*2Hx%X z!BDf0B3{f6J`G-bqwl#*++1%KnF?T5m7y?%xyfde&Q92Qm<$3>C6*N&(+i_kan0}W zsbb3HNwBf$>Zi6raLx2?QCZ21xl}%R_Xf1AjK!D2nj)%HV`?YAUUh*b25+IE+=0pjRiLR(S|A4zO z*I!M0Lk^aQaN)FRkEg(gE?Q{R8ju?3jRz~P`TRms-`akxbM>DJg0RnchJ=Rz>o#?i zte24_)_4#d#_;kIDBdf7s$#_)TCoZZhy4W+-S;O;!lqLC2b{UR&}BLBHix|5iNgaB zOE7u-Z>%4ZVEjq%j4aP$?yuOzWvNsv{t_r{zYv8V$H4FmBjFdm?kroiz#Az$Y>w4S zd%Y1m7@kH$CKd1|jRT4tXsocr@~Uf?up>Mrzc!cmVa zD)c~&t!NOKK^6Bq6%ji=O73D2migL^kA~YcS?hGY!|nJ%QxU02yH=w*6%6~URbXDE zzu?R3;Gv(K#t{4LaJ95EA;V6#IJ~-e_jvUM8@woV*fP^O0(c1|ofcY;q0PoRabDn= zxEtFiiAK{ap7;2;ai%5jNvn_c^Gizz-4>o?xM!aB}Dmnw}qjZBUFy zqi(3Q;6i2#JUC+9K+M+2y(U!RH2%Y925!ih#y4^|_<+145Ta_xU1%~pO}CtbHs+9Z z;g7y*6UpZ}2cqTO|TV7Hs^H0Z0IG@T-M>a}EcNT+bc{LH8aHW(IAt7EPoJ z$oV6vhdqv6Za`}y;drvK%j91qOu}Kj1X~X)`{lv0I;mOT#mh)*C6BkN;o#ytn#0Py zplZ5bvVBqy2$qMsqY9n<=Kj#p&~f2UBQr0ZXgxoUCq0WtM#L|puT{5;muCd07emyl z$<_Wbq7F+GcTc~y6eGrppu7q}rHg2aV{33GSgX&1hhfN0I@R(A^7JS(4<~?dv8t z&Y6a73xWSaC|^aq8bChK6CXg;82WAg&haLFf&VmhTKk1a8k5>LN7H!-nw@J|N#}G8 zU|2+#&!J$mM?A#?&Z$(vx#EWfq=Bcg|Lwt2Gfw6*bn$|Z$YjMikNYaWV}a4z!=lCa z9$IIU2cfxo@4@$CH2{s$s*pT7)J|r3uJ0l;xGpc_jaJW}EfL+%u%AnNPg%j}gKCSol1eUzX|w42g) z$L-dOpnEPn9r44Y_HzW_N6@~KUVOxGJsx7?pDsmvEYL+)DN-f)!A7&C<91a^nZo<= zB1NA4x3tpDIT^GwfDtiBx6FYDnz?QP$BQ}c>W{5@rU1a&ikVP4p@gV*3_E1uRTI%B z+IKUPUHUjdLQDINbaASjqy|acnvn8}8d+k1oq<(?1QEOpLX`M)#h8hYyEfoJp6HPx z!3j+Q(+)`qtAU48T%<%5rf6LO99g{M^`HR|pMK88Y_zfy5C|cR$LVfXW$NAgqTB+QpK3g?PxC-|H%8$Rq|fCxy8@Xz1;NYD#wfbTJvqH?{BkFdhs zzi2#bdZ1dy?d@huisjlm#<|@BasBf`kY{9Fl<_6BpJBN{@5_d*4Q}1j?f!;LLewIi zQpZF7Az2%e?+F}4(VI;2FyP9R7vddaAoSMn8a!i6u98Xye_Tn4E@i9c)=e%mtIL)QpCc+g>0 z*@Y$AdVxgLd%rW`uodyH%ylYiG@k5gqPzS8w?YAurxlrOcrj)-A$%p0@&c-KlCw+v zpMYgXZUO%%O-LWVYIyS=Jq2u?T^5`>jbtS9M$T5DP0y05m*i;uDS8pK2?REhlj-J%~hQRkply7Z|O$xS9 z%d#^*@j!0t=Q`DEH>~)~pRai8LdXDN$?YElVsPQiXkt(ZnwN;8ZJ^J1Fb~5@C@5c| z)+KuBS`(Wxf8aP4Ohel8G&T2yJgB}~_~dU1UHHJzt&Ec9f<{P6r=LYA5!7WL%5+tpPCckl-s9etNGUFD z2hlhFMc1?$b}UmEF$qJ|4Y97Ay24kKznh=ZAv|+ZWmYGBSSFk&`O2jrQls~x-Tn}2 zeO(r#08eC_M{%PP6p2B!3nOoL)5Y9W)MNQ2;vozwZG2g- z$cymkg!{u3X%s!{dLFR>qsy!kzEBfUSB$^Ql#IVTxj8=TWItZ}qvx#NoYl zA{W)o1c8o&43s&zLL3S`#@a z+r-vj*b6m%z=#ngn|z`oAj2huZlj#+Cm<2Dr^-}41LqkM^xj~UBCU#%$ z`SK4R)dunx&rLhVYQKDv0>4fSdGx?P4=?(`cD>KIRb4p(cEi{4ji-@!Uxe3}S2Chym49K$~h0tHtq>4($9 z!bHK%Sb#R~lpMV{YL2Z_AZiOz*!4GeX4cQ!un&4Y*le kUu&LRcZu+4Kno^qsJ_ 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τL=Z% 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 K000000000Bb1SU? literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/blocks/machine_missile_assembly.png b/assets/hbm/textures/blocks/machine_missile_assembly.png new file mode 100644 index 0000000000000000000000000000000000000000..61849f13ef717fc0137974bfca4b36d0448ded82 GIT binary patch literal 281 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf-{%VBqc($48H4fbDiqGRowcWEiF(qEK|%fYl@F)b6KyD_5IKB4g0sb zpSJ9K{F-mpbIanp);nIGx==Zffx%e&kNy1vnoC#B`tvDj8*_MZgv%|aG&ZGG4(**B ztE%oFnrmo$hUc=0X!Cg{C7^_{bLhfVKlPL(+87x&J z7a59OBM3x@Xs5C@o~J)E-|!z{tyOESZmHenL)Ucx3UE4|icKn}Y0}H(qTeXmJzipr z02~en0KE75NzGHzTC2`EM1-;|GX!G{0K+i6z<%CQQ%dxGe^(P@q-h%3wtZ>qg_uLk00000NkvXXu0mjf(rZRs delta 95 zcmcb}*uyx%B*NL##WBR9H#tFqwa4Sl|0gd}9mRhBpKoC-Au0H6(}T$>#{zhmIc|3F z&FC;>xT*R=Pw5sz48vjWBWx->0W!Ud8yXoIe4YvlcFdmE$p8eNu6{1-oD!M<4cH@= diff --git a/assets/hbm/textures/items/mp_c_2.png b/assets/hbm/textures/items/mp_c_2.png index e3990147e29132e6313a59b039ac5303d3f5099e..8cb854f48f7e4fd8c43e361cb9d9438a1e8dc10f 100644 GIT binary patch delta 181 zcmbQv_>ggeN&O5@7sn8b-sA*{i~}8d10Z) zSflk(@dcCE8@+@Cj@LI2F&J~)Ojs1lz--X$!N(jSVx(u_uxR2Fg9B*>fouV)vI@%& hUY~T~K zu>(N92TE^H4|k&{0{{R3 M07*qoM6N<$f<^l)%K!iX diff --git a/assets/hbm/textures/items/mp_c_3.png b/assets/hbm/textures/items/mp_c_3.png index fa0801aff0962d3a7c19462800261285faf77746..622f2af49e0ccef694a087ada58e5aa065b40b38 100644 GIT binary patch delta 177 zcmZ3*c$aa4N&OU07sn8b-sA*{i~}8dAO5HQ{eNiL>4JZkpTCy?fw1+~4GX6=0s-e? zmyd34Gu&o8o4)>@@t^w0|MNAN3p86KeYS9Sm`Th&1k}g#aiLbh#y_*>^0fEGsGMcZ zo$M$0lxa_5Lk`Eu#DJ;k$AH-F0;|Pg2C-Hio(UN$T9!N;Bz>kZhIq1{(ERXp_4f*1 bxe5k`d8?zlyrwK`U;qM7S3j3^P6WOe?(Q)3AI|(^6p9C}NMwLYaox|Yi>gTe~DWM4fcwj|( literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/mp_c_5.png b/assets/hbm/textures/items/mp_c_5.png new file mode 100644 index 0000000000000000000000000000000000000000..afe5f1813dccb50e7dc6bac4c4b9e5b3dcc41a4e GIT binary patch literal 252 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vfwfuvut_=~Fw z3%*>_dp>g(1H+j)S&Vyvycfl4_S{SUBG-QHK`Numl5-9&_ineP#U>}uV_a0#G-rd$ zg_PE7O~3!m;XVAH<=9T|rX04!ix%aRL^v)9cW}h213Bz`$0R2wu?haYz2jBO?EMqY xCWLdfU)y+b+jpZIJrmg&jQ;=)K@9ia0WJYD@<);T3K0RVUoVI%+m literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/mp_f_10.png b/assets/hbm/textures/items/mp_f_10.png deleted file mode 100644 index 28ca9cd4382ab449f916d368108fea40add887c7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 118 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf^=Dpo+E>I(b Mr>mdKI;Vst01T)k=l}o! diff --git a/assets/hbm/textures/items/mp_f_15.png b/assets/hbm/textures/items/mp_f_15.png deleted file mode 100644 index c7ec9a4c09580c2c093391bcce1d6e768d3e7e0e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 135 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfJv}`US09@&v|F@QiOFzD7VKbPHh5^%5MhvYAi<#F e(Gr^v3=E2UxWtndO)mkO#Ng@b=d#Wzp$PysUns}` diff --git a/assets/hbm/textures/items/mp_f_20.png b/assets/hbm/textures/items/mp_f_20.png deleted file mode 100644 index ceaaf586c4ccba6c7fc5af25a16d40032451293d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 161 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfcCdP#!Au%**@$B#Cj}_mx&}haoN+%nalspf0#3H%rM4SV~qWeCi)}(o>~zJrT{`$ zoFvK5#yn$^lhBO_D#G&N00000 LNkvXXu0mjfqH2si literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/mp_s_10.png b/assets/hbm/textures/items/mp_s_10.png deleted file mode 100644 index fc5f1d56b78c46347a063140c929303beef61264..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 131 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf5Nd4aTu|AVaiAlQldm%7(c%Uv a28NW~qTe<@dkZv#fx*+&&t;ucLK6UE*C*lt diff --git a/assets/hbm/textures/items/mp_s_15.png b/assets/hbm/textures/items/mp_s_15.png deleted file mode 100644 index 86f5980dfab7a86103c636cd2d6a049b45b421ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 141 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf3{(GBwg=n;|*>{w(7a*H=HS^!Rp2cpvkV m6_5W4{hA#&OVXTS1H;|~@o#EzIj4c5BhybY@fnn#SPi>gTe~DWM4fEAA@J diff --git a/assets/hbm/textures/items/mp_stability.png b/assets/hbm/textures/items/mp_stability.png new file mode 100644 index 0000000000000000000000000000000000000000..b352b1a11ccdaaf447fb3c88c57923239581de68 GIT binary patch literal 241 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfGiiAgS;3TBpzSdE)&u*Q}Ov87TL8sU__KYY;ms6GV z0=#&lo>+8Ch(9PYi+pIn#lgUkAH>VFgT=iJ PsF%Uh)z4*}Q$iB}by*)+ diff --git a/assets/hbm/textures/items/mp_t_15.png b/assets/hbm/textures/items/mp_t_15.png deleted file mode 100644 index 60462a6a6d718304833b97b8efeba00966b72eea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfiKXIZX)b^;J0?WT-!;T8^1A7`z|KtGzpC=aG65;}~ k9VW$$%*<1h5;+(cPCgdol-{y+8PGrmPgg&ebxsLQ0C=G)!~g&Q diff --git a/assets/hbm/textures/items/mp_t_20.png b/assets/hbm/textures/items/mp_t_20.png deleted file mode 100644 index ad5a1ffb3b32f68ea20ec703f13cfdb0ae31123c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 168 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf${5gUSyJybVu!>t$)>hCzYu)X+GEzvi$r1FTJmyGo0ko5<1O1=MK;+ N22WQ%mvv4FO#u7;IsyOy diff --git a/assets/hbm/textures/items/mp_thruster.png b/assets/hbm/textures/items/mp_thruster.png new file mode 100644 index 0000000000000000000000000000000000000000..438631338b2885b012bd2928a03980aad1c81ae6 GIT binary patch literal 256 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf-*7;A(1WMZc5|3r77qKrtAvX7*Q~HU&mo|r8k#DV5kT~(($ERVttBaG1 z(d_>#AC|@jYn)l*#^%i%ot-ZKUvf%8kKpmbhMCWKCkf^B9Nd=6pl~!(>-!A5zL^i_ zG;bA)dOhdG-g<-n1rr1Wdkh&a7@fKkG+8(H`qcNo_c6PA$2NbqnXR_8s#r{^spF2D zw9}5l!(vl{c21I#3!SibP0l+XkK DbBkt| literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/items/mp_w_10.png b/assets/hbm/textures/items/mp_w_10.png deleted file mode 100644 index 4b678bb047331bce125ba59d7de2e393d911ca27..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 126 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#Vf9*e6%Z{r}HjXsfKO?6L%IEGmC zCMQU|d0;Q{n8jzxEr*SaJrz&>{r}HjXsfKO?6=jVnDI{84kwv)3p^DT-Qe3glToWp saOswQw=WwU*hSct?v*$+-C|^62#%2AO#V=33N)6%)78&qol`;+0FPTOo&W#< diff --git a/assets/hbm/textures/items/mp_warhead.png b/assets/hbm/textures/items/mp_warhead.png new file mode 100644 index 0000000000000000000000000000000000000000..85e617ccf926d354f6978d8e17f1d4271ee7da66 GIT binary patch literal 261 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`EX7WqAsj$Z!;#VfKx}qA|3jX)84&V z{=byHUio>FVdQ I&MBb@0K+I}9smFU literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/models/missile_assembly.png b/assets/hbm/textures/models/missile_assembly.png new file mode 100644 index 0000000000000000000000000000000000000000..67bda6c885b7d2cb73ee05ddeb725471b0d015e1 GIT binary patch literal 344 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=EX7WqAsj$Z!;#X#z`)4w>Eakt zG3V_~N4_Qlk(P%CH#`xr3 zvFp73Keg@)uy;O8*>L!M)w%U&msl^$4D#eitewC8t?7Pg72f05E}1!V>~5|;m%olF z(;`>9w*Jbx>wj*!+`F`%`3ZOT^*`@KGFVdQ&MBb@0Oq}iM*si- literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/models/missile_parts/mp_f_10_15_balefire.png b/assets/hbm/textures/models/missile_parts/mp_f_10_15_balefire.png new file mode 100644 index 0000000000000000000000000000000000000000..ae6180ba7c842b92c8d1947b3a75315bb4956860 GIT binary patch literal 3120 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 literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/models/missile_parts/mp_f_10_15_hydrogen.png b/assets/hbm/textures/models/missile_parts/mp_f_10_15_hydrogen.png new file mode 100644 index 0000000000000000000000000000000000000000..f32263d1cc40630f1c5f1d3b01df4488ca8c2c0d GIT binary patch literal 2640 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 literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/models/missile_parts/mp_f_10_15_kerosene.png b/assets/hbm/textures/models/missile_parts/mp_f_10_15_kerosene.png new file mode 100644 index 0000000000000000000000000000000000000000..f0c7f7ca32ca280671b2062569d6544ee508765c GIT binary patch literal 2338 zcmcImc{tQ-8~$k+OSZ}~4a4~;+a>FKwz4EkBP1bVkouU(He(BeqH|K#uTKma24U*R zmSrp>G=?O}Oh`;LD#=d9G7aZff1Un2|9tQDyzg^e@AEGA^WOJ!UGE(iXL|`TxEKHc z5~$NQuAqPTql-YnG3rc3Bj^Mptx;|wU`r6WavK0d#!)sW-C{|L?9N~XtWw|VQ2wyZ ziH8Nm=0%)ZNoorVw$|FjQ|OE9b!}CERH;vo}P{! zO2%lIlZPng!eym$%wk|zL;Rl2<&q#Y45g5+jF7|iZnq;yRVS8(ay=C$a`A4#`JIF!xl?ouUzSRU_OnZTRb z+&X+x@NN-i0smBHHy2}Z?z^J;_$<~;PJ3VV7>ABDw#U7m^alPLt9j^qNI4#Qlbn5AnqYCD zxAdF#LtT~rSHJIMgihQ>W~I3v<5wzT7q)F+smuzA-5xd>wKLymDGb^B({$@Zjivg1 z_apE8rkicj0weP0@=$aVH^D9|XJH+QXfS_Sjqg;JApHB5>8ZuO<(Rcr9;s?eW-i5AdYi;#6qW0@ zf{l9hqp_o_wu9j;}EHVsnmpwZf^@F<0vKt zkBPB{2;GQjN9^oyI0274{eAmN$6;^{Kt@bxYCW)_;EQg-82-x=Ubpyfg$BZCyh~V( z@^11%#05NXeYDcGD}xt>-%N{)i!=T9AyLXnm{@Yay=o*mO&Wk_LThSk1%Or`Nk+i1 zye6@nRhoUAFR#`gl=KOIwdtKd7AxB2lrN=h(bIly*&hat?@$5_nBLieSGbA}3=CvM zIee>IA7Z{rq?kHadqiFsS65emKD(~xbSPWd($1*RmO8=MT%NjgQO>ML(%ISBMJpG; zq0A)qcMZxDqflS@leDY{dBq@vN^BWxuEh1xZ-s*@g@XaX!TXDxg)6Zt!~p?-RtUML zNIj`~6$y`B|160u-N!+c)r}uCp`Sw{|uxmHDwn0)F>h zr5jkxpRjn*O(i5Za&FpN#EgYEgC+`POzYpUT$B``x$g2GR=`iz1^TK!?NU~Wia zPF^n2|3m1Dx!*G1@N$tN#Ob+$%F22|M?`cq!;^A@uqql$wH<-9nEFj&kkZ`cl#}O? zJ}JF!)gHp{D=Nee0$(@GcKA=1`Ji4h?-8dMeO8xOeBEoGJsz8Xe#Jmf98%y21#t24 zX-S>S>F#L!(CL{ES{7ygq`d!ZbKJ5W)n*8a%F6U7+Qt}J?ESrCod==tWMd6kirMB; zrlB^os0a~dhVU!z*2kJa;deL1w%Kg-<|MDT_ZGp=Rgby27&_I;tEyvYHWdWfZ|GgEclkRQ-M^?{^7h+!3a-ey5cqHKCl`map;(Su<-e8bm zVqeqG3sE?3U^HYRW@-k#F*Y9!&>rb%fq3*@U8)MRWs}P};z|k?t1W5S4?VR5qN7LT zDPm`j>B~+uU%HqV-v5Y`z+E^@EY{b1EkdJ)3vP}Y8yQW`keWl=@iAtIkg%{F&Nm(N zxHG4b;!zpXzA>Fsow5|{eG?OtF3MT*%JzDYqLNZuYKf7t@hOOeLSY!l>cf$QAIpMp z;cSIDF4t&>Z!tPL+7h3AC)w^J`Y7RgIyO9fi0Zacd~VIIt)bzNnOtVCmFh}OS~^1| zWa1X~{#!PCqx$L12}*~r6pzQ#b6OweulaP?)2&qhbkn-;wf5-r*yw0NGE{YOljn&> zZ!r3gTg-gGzlLe$rV)7fx6L2t<}`unITmFpn1+Zm5J#%XYT_c>47A@&2Vd&dsy!w-!?A{Am~%_LiZQGD4@i@H Z0xnTxq2Sc5bnw#yplqFOYOMWJ{sMLMUYh^_ literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/models/missile_parts/mp_f_10_15_solid.png b/assets/hbm/textures/models/missile_parts/mp_f_10_15_solid.png new file mode 100644 index 0000000000000000000000000000000000000000..9a86a0fb090c6405312e59dc34a4c7503e08cf76 GIT binary patch literal 2816 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 Z=@&E14#;EW6RZFL002ovPDHLkV1mzH(<}f0 literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/models/missile_parts/mp_t_10_xenon.png b/assets/hbm/textures/models/missile_parts/mp_t_10_xenon.png new file mode 100644 index 0000000000000000000000000000000000000000..1f0dcc817d66e7877a682b5d08a9496fa3dd70ef GIT binary patch literal 659 zcmV;E0&M+>P)}&hWCG$I++?S&xVl<9h5Vo}=_Hx|$Nay1-#{c1i9{liNF)-8L?V$$ zD5V&UM(phD1i`1LrvS`mGo+LZheL{@Kq*s^rGp;M+TS-MrK?rYqqxk}l( zuw?4g5p~Iq6a|4t7!Z+AJaChZ9RdLq$ICGxvQTmzS4#etyQ?-5mhXwQ_wju<-v5O0gd1LwA^E z*=*=OZ9*y50}1MZ1oc3IdLThP48DpD!AGTsjTLe-g4$Ai-`DOl#;!w_K@qU+vR1+Mi7TCdlyYP1L;08kVKIOkX_7V>*#S!$9@N0L=RsvIGvC<-`^ z1J`xoI1T{dcszo04$e82%O!v}QKltXOR=_`AP6)$qB)MEwZq|nAPBV7GnsBy1gQfO za_YK9nx>kZE=ils26bI)lG=R^iM0q)=bi0#3(xaV*EQleM$r8`~4n{>1vP#0JeMNk zIF^yY7}MmquKQu%Lr>UNB1laMRgmkt$nzYY=fU@VFvh?bgYWyA9JO`zIV9FnEDS>& zk4H_8XhM#FF@~zDhs+}_?|zu(IeAW4!=L0x?hfz>)lq#5V@ zot*Y+rAk_@R&rlvGQ9wcg4C2q(^SgY?RHvJsTH*y4`NyZBE-0IOiN`nxd*I89j_KV+Ux~A}GtUnfT3@Wr?b)uv{*+`K296 zoO47`G@2a1U<7?cJF-4IFcXDj6utdyb(G7@f&hKMZCPE} z{r&w9hi-<+q?q93WDlaQbuNKg+Xs0R|%!Y(XxV+zS7L%^1-#T|?;N-^;%#i|4MEqA)RC%wn}J-q{i!C){L3}R zZG7KnGMV7IE{@~8vROA;5`u+v&d<-OR;$Y4PNxGv7>2m6ORv{MN(u0)Cf12o24JCY z%d*(o+T!Bkf>x`=csyo29`o?$eBZLq&F6p5Tc5w?%Ru^qbljA=F4|X#O{H`v zZa1ok^HToxd&cwgGuzwSA95_+iQD;fy6C9cg8C@W<>@q13n?Gz`45}-wW5dR(n|mU N002ovPDHLkV1l^eN5%jE literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/models/missile_parts/mp_w_10_nuclear.png b/assets/hbm/textures/models/missile_parts/mp_w_10_nuclear.png new file mode 100644 index 0000000000000000000000000000000000000000..cd17dba9eb1e9086693364eac421c962714cc960 GIT binary patch literal 770 zcmV+d1O5DoP)0(cr;len2UZE7;P_7DzM*$s*OH;4#>D$V2b| zJOZf#kq`|M62&Uptx~y31e>IcY^KQ;mQ50|kSz9qwK>fs8F})3GxyG&F|1khe^W61 zhpy{RU+eF7yDMojY9JP0tJPlY9}EV-Y9@>sa9wvgD_ki>5Ci~7DQUG@N#9^FSlWaU z1GD0lQfzK+a&>iu5CW|=T5FDujtGK)PNxGbZ{ka~(&uB|^E@h*3e{?ra=DzerBVsU zaoE|}!SlQqpZyz|8-VASmr`QeHj~MOdcBTiSy+}uqtRe8nPA&CQp&k!-lCY9>IIZi zTwh;PDwPt!CnqNW^m;vP+os)aGa8LhO3mfOYZzGpfFKAELa?#1!OhJLySuye`+fTT zKEvUVySqCq%R&f|B=<5HGXNljNWx~3FboO95Uuq}V;VCcr9^8@7>4Zc@6+q`@O>ZO z_o-AW93CF>^z?+*I?01&FqQ+YRtu#Rj^iW=dw+kAWm(B@jYb3C_m_@;Fth@3g$;rr z5r1)Uk%UdV-A;C=IR4{j-lEuSHs9Q9-$S$6EX4bHr_;gnJfxJ2$76&LNip+%f3A?h zaz~1y<2c!=pBFN%)oO{rw2l(Sav(MVQIUEn&i~~wXUqUZ!d%y#z82prAE(dH&oj+| ztT9^1vLN>c3VVBdxelS?DrNgKlKT+Ky@A4ypWpJG1H<3OUk#;7u~N`}7w)j-t=Ur|B5UJcMS& z18kMk9X~SzmuFqJ%8~F`e9ZR2^Xj}8V@X{2I^U*+F$3``EUw0T$;`mwd2=k8^hE4Ehgwo(9^u>}g>?VOgHa{`JYDZH*j@;=1fv9jj}&6u z1q6Cif+iWK9hH|7e!XkoByY{6lkB~Xvuu1PTZV@wM2aaX85r;Ro^p~?+)MMM&3Oif zw6=~17JLj1tl^;y412zdIQ=lHna*!`Z2dc%U`^KNU-`2FRu2yJq$aRk{{3>_C(z`V8WT@zh_g^iqi^W`Je*0(J z#U}o*i?lNrSz0&+Kb>0N|72%2} S)1rWZz~JfX=d#Wzp$PzSNrj&P literal 0 HcmV?d00001 diff --git a/com/hbm/inventory/gui/GUIMachineMissileAssembly.java b/com/hbm/inventory/gui/GUIMachineMissileAssembly.java index a6623fdbd..12ee9ce72 100644 --- a/com/hbm/inventory/gui/GUIMachineMissileAssembly.java +++ b/com/hbm/inventory/gui/GUIMachineMissileAssembly.java @@ -7,6 +7,8 @@ import com.hbm.inventory.container.ContainerMachineMissileAssembly; import com.hbm.items.ModItems; import com.hbm.lib.RefStrings; import com.hbm.main.ResourceManager; +import com.hbm.packet.AuxButtonPacket; +import com.hbm.packet.PacketDispatcher; import com.hbm.render.misc.MissileMultipart; import com.hbm.render.misc.MissilePart; import com.hbm.render.misc.MissilePronter; @@ -14,6 +16,7 @@ import com.hbm.tileentity.machine.TileEntityMachineAssembler; import com.hbm.tileentity.machine.TileEntityMachineMissileAssembly; import net.minecraft.client.Minecraft; +import net.minecraft.client.audio.PositionedSoundRecord; import net.minecraft.client.resources.I18n; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.util.ResourceLocation; @@ -36,6 +39,16 @@ public class GUIMachineMissileAssembly extends GuiInfoContainer { super.drawScreen(mouseX, mouseY, f); } + protected void mouseClicked(int x, int y, int i) { + super.mouseClicked(x, y, i); + + if(guiLeft + 115 <= x && guiLeft + 115 + 18 > x && guiTop + 35 < y && guiTop + 35 + 18 >= y) { + + mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F)); + PacketDispatcher.wrapper.sendToServer(new AuxButtonPacket(assembler.xCoord, assembler.yCoord, assembler.zCoord, 0, 0)); + } + } + @Override protected void drawGuiContainerForegroundLayer( int i, int j) { String name = this.assembler.hasCustomInventoryName() ? this.assembler.getInventoryName() : I18n.format(this.assembler.getInventoryName()); @@ -49,6 +62,22 @@ public class GUIMachineMissileAssembly extends GuiInfoContainer { GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); Minecraft.getMinecraft().getTextureManager().bindTexture(texture); drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize); + + if(assembler.fuselageState() == 1) + drawTexturedModalRect(guiLeft + 49, guiTop + 23, 194, 0, 6, 8); + if(assembler.warheadState() == 1) + drawTexturedModalRect(guiLeft + 31, guiTop + 23, 194, 0, 6, 8); + if(assembler.chipState() == 1) + drawTexturedModalRect(guiLeft + 13, guiTop + 23, 194, 0, 6, 8); + if(assembler.stabilityState() == 1) + drawTexturedModalRect(guiLeft + 67, guiTop + 23, 194, 0, 6, 8); + if(assembler.stabilityState() == 0) + drawTexturedModalRect(guiLeft + 67, guiTop + 23, 200, 0, 6, 8); + if(assembler.thrusterState() == 1) + drawTexturedModalRect(guiLeft + 85, guiTop + 23, 194, 0, 6, 8); + + if(assembler.canBuild()) + drawTexturedModalRect(guiLeft + 115, guiTop + 35, 176, 0, 18, 18); /// DRAW MISSILE START GL11.glPushMatrix(); diff --git a/com/hbm/items/ModItems.java b/com/hbm/items/ModItems.java index 32fbf139f..03d790a69 100644 --- a/com/hbm/items/ModItems.java +++ b/com/hbm/items/ModItems.java @@ -19,6 +19,9 @@ import com.hbm.items.gear.*; import com.hbm.items.special.*; import com.hbm.items.tool.*; import com.hbm.items.weapon.*; +import com.hbm.items.weapon.ItemMissile.FuelType; +import com.hbm.items.weapon.ItemMissile.PartSize; +import com.hbm.items.weapon.ItemMissile.WarheadType; import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; @@ -824,28 +827,41 @@ public class ModItems { public static Item mp_thruster_10_kerosene; public static Item mp_thruster_10_solid; + public static Item mp_thruster_10_xenon; public static Item mp_thruster_15_kerosene; + public static Item mp_thruster_15_kerosene_dual; public static Item mp_thruster_20_kerosene; public static Item mp_stability_10_flat; public static Item mp_stability_10_cruise; public static Item mp_stability_15_flat; + public static Item mp_stability_15_thin; public static Item mp_stability_20_flat; public static Item mp_fuselage_10_kerosene; public static Item mp_fuselage_10_solid; + public static Item mp_fuselage_10_xenon; + public static Item mp_fuselage_10_15_kerosene; + public static Item mp_fuselage_10_15_solid; + public static Item mp_fuselage_10_15_hydrogen; + public static Item mp_fuselage_10_15_balefire; public static Item mp_fuselage_15_kerosene; public static Item mp_fuselage_20_kerosene; public static Item mp_warhead_10_he; public static Item mp_warhead_10_incendiary; public static Item mp_warhead_10_buster; + public static Item mp_warhead_10_nuclear; public static Item mp_warhead_15_he; public static Item mp_warhead_20_he; public static Item mp_chip_1; public static Item mp_chip_2; public static Item mp_chip_3; + public static Item mp_chip_4; + public static Item mp_chip_5; + + public static Item missile_custom; public static Item missile_carrier; public static Item sat_mapper; @@ -2329,6 +2345,7 @@ public class ModItems { missile_schrabidium = new Item().setUnlocalizedName("missile_schrabidium").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":missile_schrabidium"); missile_emp = new Item().setUnlocalizedName("missile_emp").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":missile_emp"); missile_carrier = new Item().setUnlocalizedName("missile_carrier").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":missile_carrier"); + missile_custom = new ItemCustomMissile().setUnlocalizedName("missile_custom").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":missile_custom"); sat_mapper = new ItemSatChip().setUnlocalizedName("sat_mapper").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":sat_mapper"); sat_scanner = new ItemSatChip().setUnlocalizedName("sat_scanner").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":sat_scanner"); sat_radar = new ItemSatChip().setUnlocalizedName("sat_radar").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":sat_radar"); @@ -2339,26 +2356,37 @@ public class ModItems { sat_chip = new ItemSatChip().setUnlocalizedName("sat_chip").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":sat_chip"); sat_interface = new ItemSatInterface().setUnlocalizedName("sat_interface").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":sat_interface"); - mp_thruster_10_kerosene = new Item().setUnlocalizedName("mp_t_10").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":mp_t_10"); - mp_thruster_10_solid = new Item().setUnlocalizedName("mp_thruster_10_solid").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":mp_t_10"); - mp_thruster_15_kerosene = new Item().setUnlocalizedName("mp_t_15").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":mp_t_15"); - mp_thruster_20_kerosene = new Item().setUnlocalizedName("mp_t_20").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":mp_t_20"); - mp_stability_10_flat = new Item().setUnlocalizedName("mp_s_10").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":mp_s_10"); - mp_stability_10_cruise = new Item().setUnlocalizedName("mp_s_10_cruise").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":mp_s_10_cruise"); - mp_stability_15_flat = new Item().setUnlocalizedName("mp_s_15").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":mp_s_15"); - mp_stability_20_flat = new Item().setUnlocalizedName("mp_s_20").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":mp_s_20"); - mp_fuselage_10_kerosene = new Item().setUnlocalizedName("mp_f_10").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":mp_f_10"); - mp_fuselage_10_solid = new Item().setUnlocalizedName("mp_fuselage_10_solid").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":mp_fuselage_10_solid"); - mp_fuselage_15_kerosene = new Item().setUnlocalizedName("mp_f_15").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":mp_f_15"); - mp_fuselage_20_kerosene = new Item().setUnlocalizedName("mp_f_20").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":mp_f_20"); - mp_warhead_10_he = new Item().setUnlocalizedName("mp_w_10").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":mp_w_10"); - mp_warhead_10_incendiary = new Item().setUnlocalizedName("mp_warhead_10_incendiary").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":mp_w_10"); - mp_warhead_10_buster = new Item().setUnlocalizedName("mp_warhead_10_buster").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":mp_w_10"); - mp_warhead_15_he = new Item().setUnlocalizedName("mp_w_15").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":mp_w_15"); - mp_warhead_20_he = new Item().setUnlocalizedName("mp_w_20").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":mp_w_20"); - mp_chip_1 = new Item().setUnlocalizedName("mp_c_1").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":mp_c_1"); - mp_chip_2 = new Item().setUnlocalizedName("mp_c_2").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":mp_c_2"); - mp_chip_3 = new Item().setUnlocalizedName("mp_c_3").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":mp_c_3"); + mp_thruster_10_kerosene = new ItemMissile().makeThruster(FuelType.KEROSENE, 1F, 1F, PartSize.SIZE_10) .setUnlocalizedName("mp_thruster_10_kerosene").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":mp_thruster"); + mp_thruster_10_solid = new ItemMissile().makeThruster(FuelType.SOLID, 1F, 1F, PartSize.SIZE_10) .setUnlocalizedName("mp_thruster_10_solid").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":mp_thruster"); + mp_thruster_10_xenon = new ItemMissile().makeThruster(FuelType.XENON, 1F, 1F, PartSize.SIZE_10) .setUnlocalizedName("mp_thruster_10_xenon").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":mp_thruster"); + mp_thruster_15_kerosene = new ItemMissile().makeThruster(FuelType.KEROSENE, 1F, 1F, PartSize.SIZE_15) .setUnlocalizedName("mp_thruster_15_kerosene").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":mp_thruster"); + mp_thruster_15_kerosene_dual = new ItemMissile().makeThruster(FuelType.KEROSENE, 1F, 1F, PartSize.SIZE_15) .setUnlocalizedName("mp_thruster_15_kerosene_dual").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":mp_thruster"); + mp_thruster_20_kerosene = new ItemMissile().makeThruster(FuelType.KEROSENE, 1F, 1F, PartSize.SIZE_20) .setUnlocalizedName("mp_t_20").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":mp_thruster"); + mp_stability_10_flat = new ItemMissile().makeStability(0.5F, PartSize.SIZE_10) .setUnlocalizedName("mp_stability_10_flat").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":mp_stability"); + mp_stability_10_cruise = new ItemMissile().makeStability(0.25F, PartSize.SIZE_10) .setUnlocalizedName("mp_stability_10_cruise").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":mp_stability"); + mp_stability_15_flat = new ItemMissile().makeStability(0.5F, PartSize.SIZE_15) .setUnlocalizedName("mp_stability_15_flat").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":mp_stability"); + mp_stability_15_thin = new ItemMissile().makeStability(0.25F, PartSize.SIZE_15) .setUnlocalizedName("mp_stability_15_thin").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":mp_stability"); + mp_stability_20_flat = new ItemMissile().makeStability(0.5F, PartSize.SIZE_20) .setUnlocalizedName("mp_s_20").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":mp_stability"); + mp_fuselage_10_kerosene = new ItemMissile().makeFuselage(FuelType.KEROSENE, 1000F, PartSize.SIZE_10, PartSize.SIZE_10) .setUnlocalizedName("mp_fuselage_10_kerosene").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":mp_fuselage"); + mp_fuselage_10_solid = new ItemMissile().makeFuselage(FuelType.SOLID, 1000F, PartSize.SIZE_10, PartSize.SIZE_10) .setUnlocalizedName("mp_fuselage_10_solid").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":mp_fuselage"); + mp_fuselage_10_xenon = new ItemMissile().makeFuselage(FuelType.XENON, 1000F, PartSize.SIZE_10, PartSize.SIZE_10) .setUnlocalizedName("mp_fuselage_10_xenon").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":mp_fuselage"); + mp_fuselage_10_15_kerosene = new ItemMissile().makeFuselage(FuelType.KEROSENE, 1000F, PartSize.SIZE_10, PartSize.SIZE_15) .setUnlocalizedName("mp_fuselage_10_15_kerosene").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":mp_fuselage"); + mp_fuselage_10_15_solid = new ItemMissile().makeFuselage(FuelType.SOLID, 1000F, PartSize.SIZE_10, PartSize.SIZE_15) .setUnlocalizedName("mp_fuselage_10_15_solid").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":mp_fuselage"); + mp_fuselage_10_15_hydrogen = new ItemMissile().makeFuselage(FuelType.HYDROGEN, 1000F, PartSize.SIZE_10, PartSize.SIZE_15) .setUnlocalizedName("mp_fuselage_10_15_hydrogen").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":mp_fuselage"); + mp_fuselage_10_15_balefire = new ItemMissile().makeFuselage(FuelType.BALEFIRE, 1000F, PartSize.SIZE_10, PartSize.SIZE_15) .setUnlocalizedName("mp_fuselage_10_15_balefire").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":mp_fuselage"); + mp_fuselage_15_kerosene = new ItemMissile().makeFuselage(FuelType.KEROSENE, 1000F, PartSize.SIZE_15, PartSize.SIZE_15) .setUnlocalizedName("mp_f_15").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":mp_fuselage"); + mp_fuselage_20_kerosene = new ItemMissile().makeFuselage(FuelType.KEROSENE, 1000F, PartSize.SIZE_20, PartSize.SIZE_20) .setUnlocalizedName("mp_f_20").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":mp_fuselage"); + mp_warhead_10_he = new ItemMissile().makeWarhead(WarheadType.HE, 15F, 1F, PartSize.SIZE_10) .setUnlocalizedName("mp_warhead_10_he").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":mp_warhead"); + mp_warhead_10_incendiary = new ItemMissile().makeWarhead(WarheadType.INC, 15F, 1F, PartSize.SIZE_10) .setUnlocalizedName("mp_warhead_10_incendiary").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":mp_warhead"); + mp_warhead_10_buster = new ItemMissile().makeWarhead(WarheadType.BUSTER, 15F, 1F, PartSize.SIZE_10) .setUnlocalizedName("mp_warhead_10_buster").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":mp_warhead"); + mp_warhead_10_nuclear = new ItemMissile().makeWarhead(WarheadType.NUCLEAR, 15F, 1F, PartSize.SIZE_10) .setUnlocalizedName("mp_warhead_10_nuclear").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":mp_warhead"); + mp_warhead_15_he = new ItemMissile().makeWarhead(WarheadType.HE, 15F, 1F, PartSize.SIZE_15) .setUnlocalizedName("mp_w_15").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":mp_warhead"); + mp_warhead_20_he = new ItemMissile().makeWarhead(WarheadType.HE, 15F, 1F, PartSize.SIZE_20) .setUnlocalizedName("mp_w_20").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":mp_warhead"); + mp_chip_1 = new ItemMissile().makeChip(0.1F) .setUnlocalizedName("mp_c_1").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":mp_c_1"); + mp_chip_2 = new ItemMissile().makeChip(0.05F) .setUnlocalizedName("mp_c_2").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":mp_c_2"); + mp_chip_3 = new ItemMissile().makeChip(0.01F) .setUnlocalizedName("mp_c_3").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":mp_c_3"); + mp_chip_4 = new ItemMissile().makeChip(0.005F) .setUnlocalizedName("mp_c_4").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":mp_c_4"); + mp_chip_5 = new ItemMissile().makeChip(0.0F) .setUnlocalizedName("mp_c_5").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":mp_c_5"); ammo_12gauge = new ItemAmmo().setUnlocalizedName("ammo_12gauge").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_12gauge"); ammo_12gauge_incendiary = new ItemAmmo().setUnlocalizedName("ammo_12gauge_incendiary").setCreativeTab(MainRegistry.weaponTab).setTextureName(RefStrings.MODID + ":ammo_12gauge_incendiary"); @@ -4030,28 +4058,40 @@ public class ModItems { GameRegistry.registerItem(missile_schrabidium, missile_schrabidium.getUnlocalizedName()); GameRegistry.registerItem(missile_emp, missile_emp.getUnlocalizedName()); GameRegistry.registerItem(missile_carrier, missile_carrier.getUnlocalizedName()); + GameRegistry.registerItem(missile_custom, missile_custom.getUnlocalizedName()); //Missile Parts GameRegistry.registerItem(mp_thruster_10_kerosene, mp_thruster_10_kerosene.getUnlocalizedName()); GameRegistry.registerItem(mp_thruster_10_solid, mp_thruster_10_solid.getUnlocalizedName()); + GameRegistry.registerItem(mp_thruster_10_xenon, mp_thruster_10_xenon.getUnlocalizedName()); GameRegistry.registerItem(mp_thruster_15_kerosene, mp_thruster_15_kerosene.getUnlocalizedName()); + GameRegistry.registerItem(mp_thruster_15_kerosene_dual, mp_thruster_15_kerosene_dual.getUnlocalizedName()); GameRegistry.registerItem(mp_thruster_20_kerosene, mp_thruster_20_kerosene.getUnlocalizedName()); GameRegistry.registerItem(mp_stability_10_flat, mp_stability_10_flat.getUnlocalizedName()); GameRegistry.registerItem(mp_stability_10_cruise, mp_stability_10_cruise.getUnlocalizedName()); GameRegistry.registerItem(mp_stability_15_flat, mp_stability_15_flat.getUnlocalizedName()); + GameRegistry.registerItem(mp_stability_15_thin, mp_stability_15_thin.getUnlocalizedName()); GameRegistry.registerItem(mp_stability_20_flat, mp_stability_20_flat.getUnlocalizedName()); GameRegistry.registerItem(mp_fuselage_10_kerosene, mp_fuselage_10_kerosene.getUnlocalizedName()); GameRegistry.registerItem(mp_fuselage_10_solid, mp_fuselage_10_solid.getUnlocalizedName()); + GameRegistry.registerItem(mp_fuselage_10_xenon, mp_fuselage_10_xenon.getUnlocalizedName()); + GameRegistry.registerItem(mp_fuselage_10_15_kerosene, mp_fuselage_10_15_kerosene.getUnlocalizedName()); + GameRegistry.registerItem(mp_fuselage_10_15_solid, mp_fuselage_10_15_solid.getUnlocalizedName()); + GameRegistry.registerItem(mp_fuselage_10_15_hydrogen, mp_fuselage_10_15_hydrogen.getUnlocalizedName()); + GameRegistry.registerItem(mp_fuselage_10_15_balefire, mp_fuselage_10_15_balefire.getUnlocalizedName()); GameRegistry.registerItem(mp_fuselage_15_kerosene, mp_fuselage_15_kerosene.getUnlocalizedName()); GameRegistry.registerItem(mp_fuselage_20_kerosene, mp_fuselage_20_kerosene.getUnlocalizedName()); GameRegistry.registerItem(mp_warhead_10_he, mp_warhead_10_he.getUnlocalizedName()); GameRegistry.registerItem(mp_warhead_10_incendiary, mp_warhead_10_incendiary.getUnlocalizedName()); GameRegistry.registerItem(mp_warhead_10_buster, mp_warhead_10_buster.getUnlocalizedName()); + GameRegistry.registerItem(mp_warhead_10_nuclear, mp_warhead_10_nuclear.getUnlocalizedName()); GameRegistry.registerItem(mp_warhead_15_he, mp_warhead_15_he.getUnlocalizedName()); GameRegistry.registerItem(mp_warhead_20_he, mp_warhead_20_he.getUnlocalizedName()); GameRegistry.registerItem(mp_chip_1, mp_chip_1.getUnlocalizedName()); GameRegistry.registerItem(mp_chip_2, mp_chip_2.getUnlocalizedName()); GameRegistry.registerItem(mp_chip_3, mp_chip_3.getUnlocalizedName()); + GameRegistry.registerItem(mp_chip_4, mp_chip_4.getUnlocalizedName()); + GameRegistry.registerItem(mp_chip_5, mp_chip_5.getUnlocalizedName()); //Satellites GameRegistry.registerItem(sat_mapper, sat_mapper.getUnlocalizedName()); diff --git a/com/hbm/items/weapon/ItemCustomMissile.java b/com/hbm/items/weapon/ItemCustomMissile.java new file mode 100644 index 000000000..f339cecf9 --- /dev/null +++ b/com/hbm/items/weapon/ItemCustomMissile.java @@ -0,0 +1,61 @@ +package com.hbm.items.weapon; + +import java.util.List; + +import com.hbm.items.ModItems; +import com.hbm.items.weapon.ItemMissile.FuelType; +import com.hbm.items.weapon.ItemMissile.WarheadType; + +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.StatCollector; + +public class ItemCustomMissile extends Item { + + public static ItemStack buildMissile(ItemStack chip, ItemStack warhead, ItemStack fuselage, ItemStack stability, ItemStack thruster) { + + ItemStack missile = new ItemStack(ModItems.missile_custom); + + writeToNBT(missile, "chip", ItemMissile.parts.indexOf(chip.getItem())); + writeToNBT(missile, "warhead", ItemMissile.parts.indexOf(warhead.getItem())); + writeToNBT(missile, "fuselage", ItemMissile.parts.indexOf(fuselage.getItem())); + writeToNBT(missile, "thruster", ItemMissile.parts.indexOf(thruster.getItem())); + + if(stability != null) + writeToNBT(missile, "stability", ItemMissile.parts.indexOf(stability.getItem())); + + return missile; + } + + private static void writeToNBT(ItemStack stack, String key, int value) { + if(!stack.hasTagCompound()) + stack.stackTagCompound = new NBTTagCompound(); + stack.stackTagCompound.setInteger(key, value); + } + + public static int readFromNBT(ItemStack stack, String key) { + if(!stack.hasTagCompound()) + stack.stackTagCompound = new NBTTagCompound(); + return stack.stackTagCompound.getInteger(key); + } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) { + + ItemMissile chip = ItemMissile.parts.get(readFromNBT(stack, "chip")); + ItemMissile warhead = ItemMissile.parts.get(readFromNBT(stack, "warhead")); + ItemMissile fuselage = ItemMissile.parts.get(readFromNBT(stack, "fuselage")); + ItemMissile stability = ItemMissile.parts.get(readFromNBT(stack, "stability")); + ItemMissile thruster = ItemMissile.parts.get(readFromNBT(stack, "thruster")); + + list.add(I18n.format(StatCollector.translateToLocal(chip.getUnlocalizedName() + ".name")).trim()); + list.add(I18n.format(StatCollector.translateToLocal(warhead.getUnlocalizedName() + ".name")).trim()); + list.add(I18n.format(StatCollector.translateToLocal(fuselage.getUnlocalizedName() + ".name")).trim()); + if(stability != null) + list.add(I18n.format(StatCollector.translateToLocal(stability.getUnlocalizedName() + ".name")).trim()); + list.add(I18n.format(StatCollector.translateToLocal(thruster.getUnlocalizedName() + ".name")).trim()); + } +} diff --git a/com/hbm/items/weapon/ItemMissile.java b/com/hbm/items/weapon/ItemMissile.java new file mode 100644 index 000000000..d489af776 --- /dev/null +++ b/com/hbm/items/weapon/ItemMissile.java @@ -0,0 +1,240 @@ +package com.hbm.items.weapon; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.items.ModItems; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumChatFormatting; + +public class ItemMissile extends Item { + + public PartType type; + public PartSize top; + public PartSize bottom; + + public static List parts = new ArrayList(); + + /** + * == Chips == + * [0]: inaccuracy + * + * == Warheads == + * [0]: type + * [1]: strength/radius/cluster count + * [2]: weight + * + * == Fuselages == + * [0]: type + * [1]: tank size + * + * == Stability == + * [0]: inaccuracy mod + * + * == Thrusters === + * [0]: type + * [1]: consumption + * [1]: lift strength + */ + public Object[] attributes; + + public enum PartType { + CHIP, + WARHEAD, + FUSELAGE, + FINS, + THRUSTER + } + + public enum PartSize { + + //for chips + ANY, + //for missile tips and thrusters + NONE, + //regular sizes, 1.0m, 1.5m and 2.0m + SIZE_10, + SIZE_15, + SIZE_20 + } + + public enum WarheadType { + + HE, + INC, + BUSTER, + CLUSTER, + NUCLEAR + } + + public enum FuelType { + + KEROSENE, + SOLID, + HYDROGEN, + XENON, + BALEFIRE + } + + public ItemMissile makeChip(float inaccuracy) { + + this.type = PartType.CHIP; + this.top = PartSize.ANY; + this.bottom = PartSize.ANY; + this.attributes = new Object[] { inaccuracy }; + + if(parts.size() == 0) + parts.add(null); + parts.add(this); + + return this; + } + + public ItemMissile makeWarhead(WarheadType type, float punch, float weight, PartSize size) { + + this.type = PartType.WARHEAD; + this.top = PartSize.NONE; + this.bottom = size; + this.attributes = new Object[] { type, punch, weight }; + + if(parts.size() == 0) + parts.add(null); + parts.add(this); + + return this; + } + + public ItemMissile makeFuselage(FuelType type, float fuel, PartSize top, PartSize bottom) { + + this.type = PartType.FUSELAGE; + this.top = top; + this.bottom = bottom; + attributes = new Object[] { type, fuel }; + + if(parts.size() == 0) + parts.add(null); + parts.add(this); + + return this; + } + + public ItemMissile makeStability(float inaccuracy, PartSize size) { + + this.type = PartType.FINS; + this.top = size; + this.bottom = size; + this.attributes = new Object[] { inaccuracy }; + + if(parts.size() == 0) + parts.add(null); + parts.add(this); + + return this; + } + + public ItemMissile makeThruster(FuelType type, float consumption, float lift, PartSize size) { + + this.type = PartType.THRUSTER; + this.top = size; + this.bottom = PartSize.NONE; + this.attributes = new Object[] { type, consumption, lift }; + + if(parts.size() == 0) + parts.add(null); + parts.add(this); + + return this; + } + + @Override + public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean bool) + { + try { + switch(type) { + case CHIP: + list.add("Inaccuracy: " + (Float)attributes[0]); + break; + case WARHEAD: + list.add("Size: " + getSize(bottom)); + list.add("Type: " + getWarhead((WarheadType)attributes[0])); + list.add("Strength: " + (Float)attributes[1]); + list.add("Weight: " + (Float)attributes[2]); + break; + case FUSELAGE: + list.add("Top size: " + getSize(top)); + list.add("Bottom size: " + getSize(bottom)); + list.add("Fuel type: " + getFuel((FuelType)attributes[0])); + list.add("Fuel amount: " + (Float)attributes[1] + "l"); + break; + case FINS: + list.add("Size: " + getSize(top)); + list.add("Inaccuracy: " + (Float)attributes[0]); + break; + case THRUSTER: + list.add("Size: " + getSize(top)); + list.add("Fuel type: " + getFuel((FuelType)attributes[0])); + list.add("Fuel consumption: " + (Float)attributes[1] + "l/t"); + list.add("Max. payload: " + (Float)attributes[2] + "t"); + break; + } + } catch(Exception ex) { + list.add("### I AM ERROR ###"); + } + } + + private String getSize(PartSize size) { + + switch(size) { + case ANY: + return "Any"; + case SIZE_10: + return "1.0m"; + case SIZE_15: + return "1.5m"; + case SIZE_20: + return "2.0m"; + default: + return "None"; + } + } + + private String getWarhead(WarheadType type) { + + switch(type) { + case HE: + return "HE"; + case INC: + return "Incendiary"; + case CLUSTER: + return "Cluster"; + case BUSTER: + return "Bunker Buster"; + case NUCLEAR: + return "Nuclear"; + default: + return "N/A"; + } + } + + private String getFuel(FuelType type) { + + switch(type) { + case KEROSENE: + return "Kerosene"; + case SOLID: + return "Solid Fuel"; + case HYDROGEN: + return "Hydrogen"; + case XENON: + return "Xenon Gas"; + case BALEFIRE: + return "BF Inferno Fuel"; + default: + return "N/A"; + } + } + +} diff --git a/com/hbm/main/ClientProxy.java b/com/hbm/main/ClientProxy.java index 9a12f1d89..142985306 100644 --- a/com/hbm/main/ClientProxy.java +++ b/com/hbm/main/ClientProxy.java @@ -436,6 +436,8 @@ public class ClientProxy extends ServerProxy for(MissilePart part : MissilePart.parts) { MinecraftForgeClient.registerItemRenderer(part.part, new ItemRenderMissilePart(part)); } + + MinecraftForgeClient.registerItemRenderer(ModItems.missile_custom, new ItemRenderMissile()); } @Override diff --git a/com/hbm/main/MainRegistry.java b/com/hbm/main/MainRegistry.java index 18b965760..b4ec4c755 100644 --- a/com/hbm/main/MainRegistry.java +++ b/com/hbm/main/MainRegistry.java @@ -65,7 +65,6 @@ import com.hbm.lib.RefStrings; import com.hbm.packet.PacketDispatcher; import com.hbm.potion.HbmPotion; import com.hbm.render.misc.MissilePart; -import com.hbm.render.misc.MissilePart.PartType; import com.hbm.render.util.HmfModelLoader; import com.hbm.tileentity.bomb.*; import com.hbm.tileentity.conductor.*; diff --git a/com/hbm/main/ResourceManager.java b/com/hbm/main/ResourceManager.java index 85ae70da4..37f920048 100644 --- a/com/hbm/main/ResourceManager.java +++ b/com/hbm/main/ResourceManager.java @@ -313,19 +313,30 @@ public class ResourceManager { public static final IModelCustom minerRocket = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/minerRocket.obj")); //Missile Parts + public static final IModelCustom missile_assembly = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missile_assembly.obj")); + public static final IModelCustom strut = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/strut.obj")); public static final IModelCustom mp_t_10_kerosene = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missile_parts/mp_t_10_kerosene.obj")); public static final IModelCustom mp_t_10_solid = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missile_parts/mp_t_10_solid.obj")); - public static final IModelCustom mp_t_15 = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missile_parts/mp_t_15.obj")); + public static final IModelCustom mp_t_10_xenon = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missile_parts/mp_t_10_xenon.obj")); + public static final IModelCustom mp_t_15_kerosene = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missile_parts/mp_t_15_kerosene.obj")); + public static final IModelCustom mp_t_15_kerosene_dual = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missile_parts/mp_t_15_kerosene_dual.obj")); public static final IModelCustom mp_t_20 = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missile_parts/mp_t_20.obj")); + public static final IModelCustom mp_s_10_flat = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missile_parts/mp_s_10_flat.obj")); public static final IModelCustom mp_s_10_cruise = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missile_parts/mp_s_10_cruise.obj")); - public static final IModelCustom mp_s_15 = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missile_parts/mp_s_15.obj")); + public static final IModelCustom mp_s_15_flat = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missile_parts/mp_s_15_flat.obj")); + public static final IModelCustom mp_s_15_thin = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missile_parts/mp_s_15_thin.obj")); public static final IModelCustom mp_s_20 = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missile_parts/mp_s_20.obj")); + public static final IModelCustom mp_f_10_kerosene = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missile_parts/mp_f_10_kerosene.obj")); + public static final IModelCustom mp_f_10_15_kerosene = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missile_parts/mp_f_10_15_kerosene.obj")); public static final IModelCustom mp_f_15 = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missile_parts/mp_f_15.obj")); public static final IModelCustom mp_f_20 = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missile_parts/mp_f_20.obj")); + public static final IModelCustom mp_w_10_he = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missile_parts/mp_w_10_he.obj")); public static final IModelCustom mp_w_10_incendiary = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missile_parts/mp_w_10_incendiary.obj")); + public static final IModelCustom mp_w_10_buster = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missile_parts/mp_w_10_buster.obj")); + public static final IModelCustom mp_w_10_nuclear = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missile_parts/mp_w_10_nuclear.obj")); public static final IModelCustom mp_w_15 = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missile_parts/mp_w_15.obj")); public static final IModelCustom mp_w_20 = AdvancedModelLoader.loadModel(new ResourceLocation(RefStrings.MODID, "models/missile_parts/mp_w_20.obj")); @@ -377,12 +388,28 @@ public class ResourceManager { public static final ResourceLocation missileMicroEMP_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missileMicroEMP.png"); //Missile Parts + public static final ResourceLocation missile_assembly_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_assembly.png"); + public static final ResourceLocation strut_tex = new ResourceLocation(RefStrings.MODID, "textures/models/strut.png"); + public static final ResourceLocation mp_t_10_kerosene_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/mp_t_10_kerosene.png"); public static final ResourceLocation mp_t_10_solid_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/mp_t_10_solid.png"); + public static final ResourceLocation mp_t_10_xenon_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/mp_t_10_xenon.png"); + public static final ResourceLocation mp_t_15_kerosene_dual_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/mp_t_15_kerosene_dual.png"); + public static final ResourceLocation mp_s_10_flat_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/mp_s_10_flat.png"); public static final ResourceLocation mp_s_10_cruise_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/mp_s_10_cruise.png"); + public static final ResourceLocation mp_s_15_flat_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/mp_s_15_flat.png"); + public static final ResourceLocation mp_f_10_kerosene_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/mp_f_10_kerosene.png"); public static final ResourceLocation mp_f_10_solid_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/mp_f_10_solid.png"); + public static final ResourceLocation mp_f_10_xenon_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/mp_f_10_xenon.png"); + public static final ResourceLocation mp_f_10_15_kerosene_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/mp_f_10_15_kerosene.png"); + public static final ResourceLocation mp_f_10_15_solid_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/mp_f_10_15_solid.png"); + public static final ResourceLocation mp_f_10_15_hydrogen_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/mp_f_10_15_hydrogen.png"); + public static final ResourceLocation mp_f_10_15_balefire_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/mp_f_10_15_balefire.png"); + public static final ResourceLocation mp_w_10_he_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/mp_w_10_he.png"); public static final ResourceLocation mp_w_10_incendiary_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/mp_w_10_incendiary.png"); + public static final ResourceLocation mp_w_10_buster_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/mp_w_10_buster.png"); + public static final ResourceLocation mp_w_10_nuclear_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_parts/mp_w_10_nuclear.png"); } diff --git a/com/hbm/packet/AuxButtonPacket.java b/com/hbm/packet/AuxButtonPacket.java index 434443a60..c23122c55 100644 --- a/com/hbm/packet/AuxButtonPacket.java +++ b/com/hbm/packet/AuxButtonPacket.java @@ -11,6 +11,7 @@ import com.hbm.tileentity.machine.TileEntityAMSEmitter; import com.hbm.tileentity.machine.TileEntityAMSLimiter; import com.hbm.tileentity.machine.TileEntityForceField; import com.hbm.tileentity.machine.TileEntityMachineDiesel; +import com.hbm.tileentity.machine.TileEntityMachineMissileAssembly; import com.hbm.tileentity.machine.TileEntityMachineReactorLarge; import com.hbm.tileentity.machine.TileEntityMachineReactorSmall; import com.hbm.tileentity.machine.TileEntityMachineSeleniumEngine; @@ -204,6 +205,12 @@ public class AuxButtonPacket implements IMessage { } } + if (te instanceof TileEntityMachineMissileAssembly) { + TileEntityMachineMissileAssembly assembly = (TileEntityMachineMissileAssembly)te; + + assembly.construct(); + } + //} catch (Exception x) { } return null; diff --git a/com/hbm/render/item/ItemRenderMissile.java b/com/hbm/render/item/ItemRenderMissile.java new file mode 100644 index 000000000..999709361 --- /dev/null +++ b/com/hbm/render/item/ItemRenderMissile.java @@ -0,0 +1,96 @@ +package com.hbm.render.item; + +import org.lwjgl.opengl.GL11; + +import com.hbm.items.weapon.ItemCustomMissile; +import com.hbm.items.weapon.ItemMissile; +import com.hbm.render.misc.MissileMultipart; +import com.hbm.render.misc.MissilePart; +import com.hbm.render.misc.MissilePronter; + +import net.minecraft.client.Minecraft; +import net.minecraft.item.ItemStack; +import net.minecraftforge.client.IItemRenderer; +import net.minecraftforge.client.IItemRenderer.ItemRenderType; +import net.minecraftforge.client.IItemRenderer.ItemRendererHelper; + +public class ItemRenderMissile implements IItemRenderer { + + public ItemRenderMissile() { } + + @Override + public boolean handleRenderType(ItemStack item, ItemRenderType type) { + switch(type) { + case EQUIPPED: + case EQUIPPED_FIRST_PERSON: + case ENTITY: + case INVENTORY: + return true; + default: return false; + } + } + + @Override + public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { + return false; + } + + @Override + public void renderItem(ItemRenderType type, ItemStack item, Object... data) { + + MissileMultipart missile = new MissileMultipart(); + missile.warhead = MissilePart.getPart(ItemMissile.parts.get(ItemCustomMissile.readFromNBT(item, "warhead"))); + missile.fuselage = MissilePart.getPart(ItemMissile.parts.get(ItemCustomMissile.readFromNBT(item, "fuselage"))); + if(ItemMissile.parts.get(ItemCustomMissile.readFromNBT(item, "stability")) != null) + missile.fins = MissilePart.getPart(ItemMissile.parts.get(ItemCustomMissile.readFromNBT(item, "stability"))); + missile.thruster = MissilePart.getPart(ItemMissile.parts.get(ItemCustomMissile.readFromNBT(item, "thruster"))); + + GL11.glPushMatrix(); + + switch(type) { + case EQUIPPED: + case EQUIPPED_FIRST_PERSON: + case ENTITY: + + double s = 0.2; + GL11.glScaled(s, s, s); + + GL11.glTranslated(2, 0, 0); + + MissilePronter.prontMissile(missile, Minecraft.getMinecraft().renderEngine); + + break; + + case INVENTORY: + + double height = missile.getHeight(); + + if(height == 0D) + height = 4D; + + double size = 20; + double scale = size / height; + + GL11.glTranslated(height / 2 * scale, 0, 0); + + GL11.glRotated(135, 0, 0, 1); + GL11.glRotated(215, 1, 0, 0); + + GL11.glTranslated(7, 14, 0); + + GL11.glScaled(-scale, -scale, -scale); + + /*if(part.type.name().equals(PartType.FINS.name())) { + GL11.glTranslated(0, 0, 0); + //GL11.glRotated(-45, 1, 0, 0); + }*/ + + MissilePronter.prontMissile(missile, Minecraft.getMinecraft().renderEngine); + + break; + default: break; + } + + GL11.glPopMatrix(); + } +} diff --git a/com/hbm/render/item/ItemRenderMissilePart.java b/com/hbm/render/item/ItemRenderMissilePart.java index e79467219..62f86b244 100644 --- a/com/hbm/render/item/ItemRenderMissilePart.java +++ b/com/hbm/render/item/ItemRenderMissilePart.java @@ -5,7 +5,6 @@ import org.lwjgl.opengl.GL11; import com.hbm.blocks.ModBlocks; import com.hbm.lib.RefStrings; import com.hbm.render.misc.MissilePart; -import com.hbm.render.misc.MissilePart.PartType; import com.hbm.render.model.ModelSteelBeam; import com.hbm.render.model.ModelSteelCorner; import com.hbm.render.model.ModelSteelRoof; diff --git a/com/hbm/render/misc/MissileMultipart.java b/com/hbm/render/misc/MissileMultipart.java index 4865ff297..19de0c062 100644 --- a/com/hbm/render/misc/MissileMultipart.java +++ b/com/hbm/render/misc/MissileMultipart.java @@ -20,9 +20,4 @@ public class MissileMultipart { return height; } - - /*public boolean hadFuselage() { - return fuselage != null; - }*/ - } diff --git a/com/hbm/render/misc/MissilePart.java b/com/hbm/render/misc/MissilePart.java index 510db1198..97a5671d4 100644 --- a/com/hbm/render/misc/MissilePart.java +++ b/com/hbm/render/misc/MissilePart.java @@ -4,8 +4,8 @@ import java.util.ArrayList; import java.util.List; import com.hbm.items.ModItems; +import com.hbm.items.weapon.ItemMissile.PartType; import com.hbm.main.ResourceManager; -import com.hbm.render.misc.MissilePart.PartType; import net.minecraft.item.Item; import net.minecraft.util.ResourceLocation; @@ -31,34 +31,37 @@ public class MissilePart { this.texture = texture; } - public enum PartType { - WARHEAD, - FUSELAGE, - FINS, - THRUSTER - } - public static void registerAllParts() { parts.clear(); MissilePart.registerPart(ModItems.mp_thruster_10_kerosene, PartType.THRUSTER, 1, 1, ResourceManager.mp_t_10_kerosene, ResourceManager.mp_t_10_kerosene_tex); MissilePart.registerPart(ModItems.mp_thruster_10_solid, PartType.THRUSTER, 0.5, 1, ResourceManager.mp_t_10_solid, ResourceManager.mp_t_10_solid_tex); - MissilePart.registerPart(ModItems.mp_thruster_15_kerosene, PartType.THRUSTER, 1.625, 1.5, ResourceManager.mp_t_15, ResourceManager.universal); + MissilePart.registerPart(ModItems.mp_thruster_10_xenon, PartType.THRUSTER, 0.5, 1, ResourceManager.mp_t_10_xenon, ResourceManager.mp_t_10_xenon_tex); + MissilePart.registerPart(ModItems.mp_thruster_15_kerosene, PartType.THRUSTER, 1.5, 1.5, ResourceManager.mp_t_15_kerosene, ResourceManager.universal); + MissilePart.registerPart(ModItems.mp_thruster_15_kerosene_dual, PartType.THRUSTER, 1, 1.5, ResourceManager.mp_t_15_kerosene_dual, ResourceManager.mp_t_15_kerosene_dual_tex); MissilePart.registerPart(ModItems.mp_thruster_20_kerosene, PartType.THRUSTER, 2.25, 2, ResourceManager.mp_t_20, ResourceManager.universal); MissilePart.registerPart(ModItems.mp_stability_10_flat, PartType.FINS, 0, 2, ResourceManager.mp_s_10_flat, ResourceManager.mp_s_10_flat_tex); MissilePart.registerPart(ModItems.mp_stability_10_cruise, PartType.FINS, 0, 3, ResourceManager.mp_s_10_cruise, ResourceManager.mp_s_10_cruise_tex); - MissilePart.registerPart(ModItems.mp_stability_15_flat, PartType.FINS, 0, 3, ResourceManager.mp_s_15, ResourceManager.universal); + MissilePart.registerPart(ModItems.mp_stability_15_flat, PartType.FINS, 0, 3, ResourceManager.mp_s_15_flat, ResourceManager.mp_s_15_flat_tex); + MissilePart.registerPart(ModItems.mp_stability_15_thin, PartType.FINS, 0, 3, ResourceManager.mp_s_15_thin, ResourceManager.universal); MissilePart.registerPart(ModItems.mp_stability_20_flat, PartType.FINS, 0, 3, ResourceManager.mp_s_20, ResourceManager.universal); MissilePart.registerPart(ModItems.mp_fuselage_10_kerosene, PartType.FUSELAGE, 4, 3, ResourceManager.mp_f_10_kerosene, ResourceManager.mp_f_10_kerosene_tex); MissilePart.registerPart(ModItems.mp_fuselage_10_solid, PartType.FUSELAGE, 4, 3, ResourceManager.mp_f_10_kerosene, ResourceManager.mp_f_10_solid_tex); + MissilePart.registerPart(ModItems.mp_fuselage_10_xenon, PartType.FUSELAGE, 4, 3, ResourceManager.mp_f_10_kerosene, ResourceManager.mp_f_10_xenon_tex); + MissilePart.registerPart(ModItems.mp_fuselage_10_15_kerosene, PartType.FUSELAGE, 9, 5.5, ResourceManager.mp_f_10_15_kerosene, ResourceManager.mp_f_10_15_kerosene_tex); + MissilePart.registerPart(ModItems.mp_fuselage_10_15_solid, PartType.FUSELAGE, 9, 5.5, ResourceManager.mp_f_10_15_kerosene, ResourceManager.mp_f_10_15_solid_tex); + MissilePart.registerPart(ModItems.mp_fuselage_10_15_hydrogen, PartType.FUSELAGE, 9, 5.5, ResourceManager.mp_f_10_15_kerosene, ResourceManager.mp_f_10_15_hydrogen_tex); + MissilePart.registerPart(ModItems.mp_fuselage_10_15_balefire, PartType.FUSELAGE, 9, 5.5, ResourceManager.mp_f_10_15_kerosene, ResourceManager.mp_f_10_15_balefire_tex); MissilePart.registerPart(ModItems.mp_fuselage_15_kerosene, PartType.FUSELAGE, 6, 4, ResourceManager.mp_f_15, ResourceManager.universal); MissilePart.registerPart(ModItems.mp_fuselage_20_kerosene, PartType.FUSELAGE, 10, 8, ResourceManager.mp_f_20, ResourceManager.universal); MissilePart.registerPart(ModItems.mp_warhead_10_he, PartType.WARHEAD, 2, 1.5, ResourceManager.mp_w_10_he, ResourceManager.mp_w_10_he_tex); MissilePart.registerPart(ModItems.mp_warhead_10_incendiary, PartType.WARHEAD, 2.5, 2, ResourceManager.mp_w_10_incendiary, ResourceManager.mp_w_10_incendiary_tex); + MissilePart.registerPart(ModItems.mp_warhead_10_buster, PartType.WARHEAD, 0.5, 1, ResourceManager.mp_w_10_buster, ResourceManager.mp_w_10_buster_tex); + MissilePart.registerPart(ModItems.mp_warhead_10_nuclear, PartType.WARHEAD, 2, 1.5, ResourceManager.mp_w_10_nuclear, ResourceManager.mp_w_10_nuclear_tex); MissilePart.registerPart(ModItems.mp_warhead_15_he, PartType.WARHEAD, 3, 2.25, ResourceManager.mp_w_15, ResourceManager.universal); MissilePart.registerPart(ModItems.mp_warhead_20_he, PartType.WARHEAD, 3, 2.25, ResourceManager.mp_w_20, ResourceManager.universal); diff --git a/com/hbm/render/misc/MissilePronter.java b/com/hbm/render/misc/MissilePronter.java index 213dd3ed5..da7c34637 100644 --- a/com/hbm/render/misc/MissilePronter.java +++ b/com/hbm/render/misc/MissilePronter.java @@ -2,7 +2,7 @@ package com.hbm.render.misc; import org.lwjgl.opengl.GL11; -import com.hbm.render.misc.MissilePart.PartType; +import com.hbm.items.weapon.ItemMissile.PartType; import net.minecraft.client.renderer.texture.TextureManager; diff --git a/com/hbm/render/tileentity/RenderMissileAssembly.java b/com/hbm/render/tileentity/RenderMissileAssembly.java index df861c4ec..866b13558 100644 --- a/com/hbm/render/tileentity/RenderMissileAssembly.java +++ b/com/hbm/render/tileentity/RenderMissileAssembly.java @@ -3,6 +3,7 @@ package com.hbm.render.tileentity; import org.lwjgl.opengl.GL11; import com.hbm.lib.RefStrings; +import com.hbm.main.ResourceManager; import com.hbm.render.misc.MissileMultipart; import com.hbm.render.misc.MissilePart; import com.hbm.render.misc.MissilePronter; @@ -28,9 +29,11 @@ public class RenderMissileAssembly extends TileEntitySpecialRenderer { GL11.glPushMatrix(); - GL11.glTranslatef((float) x + 0.5F, (float) y + 1.5F, (float) z + 0.5F); - GL11.glRotatef(180, 0F, 0F, 1F); + GL11.glTranslatef((float) x + 0.5F, (float) y, (float) z + 0.5F); + GL11.glDisable(GL11.GL_CULL_FACE); + bindTexture(ResourceManager.missile_assembly_tex); + ResourceManager.missile_assembly.renderAll(); MissileMultipart missile = new MissileMultipart(); @@ -46,6 +49,26 @@ public class RenderMissileAssembly extends TileEntitySpecialRenderer { if(te.getStackInSlot(4) != null) missile.thruster = MissilePart.getPart(te.getStackInSlot(4).getItem()); + int range = (int) (missile.getHeight() / 2 - 1); + + int step = 1; + + if(range >= 2) + step = 2; + + for(int i = -range; i <= range; i += step) { + + if(i != 0) { + GL11.glTranslatef(i, 0F, 0F); + bindTexture(ResourceManager.strut_tex); + ResourceManager.strut.renderAll(); + GL11.glTranslatef(-i, 0F, 0F); + } + } + + GL11.glTranslatef(0F, 1.5F, 0F); + GL11.glRotatef(180, 0F, 0F, 1F); + GL11.glTranslated(-missile.getHeight() / 2, 0, 0); //GL11.glScaled(scale, scale, scale); @@ -53,6 +76,7 @@ public class RenderMissileAssembly extends TileEntitySpecialRenderer { GL11.glRotatef(-90, 0, 0, 1); GL11.glScalef(1, 1, 1); + GL11.glEnable(GL11.GL_CULL_FACE); MissilePronter.prontMissile(missile, Minecraft.getMinecraft().getTextureManager()); GL11.glPopMatrix(); diff --git a/com/hbm/tileentity/machine/TileEntityMachineMissileAssembly.java b/com/hbm/tileentity/machine/TileEntityMachineMissileAssembly.java index 76565b0de..fe640a419 100644 --- a/com/hbm/tileentity/machine/TileEntityMachineMissileAssembly.java +++ b/com/hbm/tileentity/machine/TileEntityMachineMissileAssembly.java @@ -9,13 +9,20 @@ import com.hbm.inventory.FluidContainerRegistry; import com.hbm.inventory.FluidTank; import com.hbm.items.ModItems; import com.hbm.items.special.ItemBattery; +import com.hbm.items.weapon.ItemCustomMissile; +import com.hbm.items.weapon.ItemMissile; +import com.hbm.items.weapon.ItemMissile.FuelType; +import com.hbm.items.weapon.ItemMissile.PartType; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; public class TileEntityMachineMissileAssembly extends TileEntity implements ISidedInventory { @@ -166,4 +173,121 @@ public class TileEntityMachineMissileAssembly extends TileEntity implements ISid public boolean canExtractItem(int i, ItemStack itemStack, int j) { return false; } + + public int fuselageState() { + + if(slots[2] != null && slots[2].getItem() instanceof ItemMissile) { + + ItemMissile part = (ItemMissile)slots[2].getItem(); + + if(part.type == PartType.FUSELAGE) + return 1; + } + + return 0; + } + + public int chipState() { + + if(slots[0] != null && slots[0].getItem() instanceof ItemMissile) { + + ItemMissile part = (ItemMissile)slots[0].getItem(); + + if(part.type == PartType.CHIP) + return 1; + } + + return 0; + } + + public int warheadState() { + + if(slots[1] != null && slots[1].getItem() instanceof ItemMissile && + slots[2] != null && slots[2].getItem() instanceof ItemMissile) { + + ItemMissile part = (ItemMissile)slots[1].getItem(); + ItemMissile fuselage = (ItemMissile)slots[2].getItem(); + + if(part.type == PartType.WARHEAD && fuselage.type == PartType.FUSELAGE && + part.bottom == fuselage.top) + return 1; + } + + return 0; + } + + public int stabilityState() { + + if(slots[3] == null) + return -1; + + if(slots[3] != null && slots[3].getItem() instanceof ItemMissile && + slots[2] != null && slots[2].getItem() instanceof ItemMissile) { + + ItemMissile part = (ItemMissile)slots[3].getItem(); + ItemMissile fuselage = (ItemMissile)slots[2].getItem(); + + if(part.type == PartType.FINS && fuselage.type == PartType.FUSELAGE && + part.top == fuselage.bottom) + return 1; + } + + return 0; + } + + public int thrusterState() { + + if(slots[4] != null && slots[4].getItem() instanceof ItemMissile && + slots[2] != null && slots[2].getItem() instanceof ItemMissile) { + + ItemMissile part = (ItemMissile)slots[4].getItem(); + ItemMissile fuselage = (ItemMissile)slots[2].getItem(); + + if(part.type == PartType.THRUSTER && fuselage.type == PartType.FUSELAGE && + part.top == fuselage.bottom && (FuelType)part.attributes[0] == (FuelType)fuselage.attributes[0]) { + return 1; + } + } + + return 0; + } + + public boolean canBuild() { + + if(slots[5] == null && chipState() == 1 && warheadState() == 1 && fuselageState() == 1 && thrusterState() == 1) { + return stabilityState() != 0; + } + + return false; + } + + public void construct() { + + if(!canBuild()) + return; + + slots[5] = ItemCustomMissile.buildMissile(slots[0], slots[1], slots[2], slots[3], slots[4]).copy(); + + if(stabilityState() == 1) + slots[3] = null; + + slots[0] = null; + slots[1] = null; + slots[2] = null; + slots[4] = null; + + this.worldObj.playSoundEffect(this.xCoord, this.yCoord, this.zCoord, "hbm:block.missileAssembly", 1F, 1F); + } + + @Override + public AxisAlignedBB getRenderBoundingBox() { + return TileEntity.INFINITE_EXTENT_AABB; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() + { + return 65536.0D; + } }