From f01e2704e134e9c4034f89ec7f871f6134faaba6 Mon Sep 17 00:00:00 2001 From: zxaber <37497534+zxaber@users.noreply.github.com> Date: Thu, 27 Jun 2019 01:03:31 -0700 Subject: [PATCH] [READY] Ammunition management for ballistic mech weapons, and a nerf to mech missiles (#44529) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit About The Pull Request Adds an ammo system and printable ammunition to most mech weapons with a "rearm" function. Replaces the old system of generating ammo at a power cost. With the exception of the missile launcher and clusterbang launcher, all affected weapons have a storage capacity of ammunition equal to four-times the amount of ammo that the weapon can load (though the storage cache starts with only one full reload when printed from the mechfab). Ammo boxes are printed from the mechfab and also are available in the Sec protolathe, and each box will carry exactly one full reload. Ammo boxes are not terribly expensive, but reloading requires either an ally on foot to pop the ammo box in, or for you to hop out and do it yourself. Missile tubes and the clusterbang launcher do not have an ammo storage cache, and so reloading them will reload the tubes directly. This is not the full extent of nerfs that the missiles need (I will do those in a separate PR since I suspect this one will be controversial) (read below), but removing the ability to reload missile pods without an ally or exiting the mech may help a bit. The SRM-8 has been replaced with the new BRM-6 in tech webs. The BRM carries a smaller explosion and does not explode unless hitting a wall, door, shutter, or another mech, and only has six shots. The SRM-8 remains on the Mauler mech. If the BRM missile does not explode, it will deal 30 brute damage instead, and break. Why It's Good For The Game Currently, mech ballistic weapons function like reloadable lasers. You have an ammo counter, but it's one hundred percent based on your energy cell. This gives some flavor to ballistic weapons, making them actually feel different, and gives them a mini-niche in the form of good choices to use alongside an energy-draining mech ability (like the Gygax speed). Use lasers when you won't need to worry about power and/or need burn damage. Use ballistics when you want to save power and/or need brute damage. The SRM-8 to BRM-6 change is being done here so that I don't have to wait until this PR is merged before starting it. The idea is to keep the reasons why you'd want to build a missile launcher (wall breaking and mech fighting) without also outclassing most other weapons burst damage potential. I'm not truly happy that the explosions deal zero damage to surrounding people even one tile away, but dealing no damage is better than the massive damage + stun that the current missile launcher does. Nuke Mauler has the old launcher, since I believe the consensus is that Nukie Mechs are already not generally worth the money. Changelog cl balance: Mecha ballistics weapons now require ammo created from an Exosuit Fabricator or the Security Protolathe, though they will start with a full magazine and in most cases enough for one full reload. Reloading these weapons no longer chunks your power cell. Clown (and mime) mecha equipment have not changed. balance: The SRM-8 Missile Launcher has been replaced with the BRM-6 Breaching Missile Launcher in techwebs (Nukie Mauler remains equipped with the SRM-8). balance: Both Missile Launchers and the Clusterbang Launcher do not have an ammo cache, and cannot be reloaded by the pilot. Once the initial loaded ammo has been spent, you can use the appropriate ammo box to load the weapon directly. add: Utility mechs that have a clamp equipped can load ammo from their own cargo hold into other mechs. add: Nuke Ops can purchase spare ammo duffel bags for their mecha weapons, should they run low. /cl To-Do: Add ammo to security protolathe Get better ammo box sprites (hopefully) Possibly adjust ammo counts for balance. Might make the flashbang launcher and/or cluster launcher behave like the missile pod. Add functionality for the utility mechs to use clamps to load ammo from their cargo hold into another mech. Ammo counts, for anyone wondering: Weapon Magazine Size Total ammo at start* Maximum total ammo* Scattershot† 40 (10) 80 (20) 200 (50) Hades 24 48 120 Ultra AC 2† 300 (100) 600 (200) 1500 (500) BRM-6 Missile Rack 6 6 6 SRM-8 Missile Rack 8 8 8 Flashbang Launcher 6 12 30 Cluster Launcher 3 3 3 *Total ammo is the amount in the weapon's magazine plus the stored ammo. †The Scattershot lists its ammo as 40, but uses four per shot. So in reality, a single full reload gives you ten shots. Similarly, the UAC2 fires in three-round bursts, and so 300 rounds is 100 bursts. Clown weapons (and the mime weapon) are all unaffected by this change. --- code/game/mecha/combat/combat.dm | 8 +- code/game/mecha/combat/gygax.dm | 1 + code/game/mecha/combat/marauder.dm | 3 + code/game/mecha/equipment/tools/work_tools.dm | 13 +++ .../mecha/equipment/weapons/mecha_ammo.dm | 94 ++++++++++++++++++ code/game/mecha/equipment/weapons/weapons.dm | 75 +++++++++++--- code/game/mecha/mech_fabricator.dm | 1 + code/game/mecha/mecha.dm | 50 ++++++++++ code/game/mecha/mecha_defense.dm | 4 + code/game/objects/items/storage/backpack.dm | 25 +++++ .../projectiles/projectile/special/rocket.dm | 32 +++++- .../modules/research/designs/mecha_designs.dm | 72 +++++++++++++- code/modules/research/techweb/all_nodes.dm | 14 +-- code/modules/uplink/uplink_items.dm | 14 +++ icons/mecha/mecha_ammo.dmi | Bin 0 -> 874 bytes icons/mecha/mecha_equipment.dmi | Bin 20572 -> 21176 bytes icons/obj/projectiles.dmi | Bin 122923 -> 123115 bytes tgstation.dme | 1 + 18 files changed, 380 insertions(+), 27 deletions(-) create mode 100644 code/game/mecha/equipment/weapons/mecha_ammo.dm create mode 100644 icons/mecha/mecha_ammo.dmi diff --git a/code/game/mecha/combat/combat.dm b/code/game/mecha/combat/combat.dm index b5e5be91e6a..7bee704768e 100644 --- a/code/game/mecha/combat/combat.dm +++ b/code/game/mecha/combat/combat.dm @@ -5,4 +5,10 @@ armor = list("melee" = 30, "bullet" = 30, "laser" = 15, "energy" = 20, "bomb" = 20, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100) mouse_pointer = 'icons/mecha/mecha_mouse.dmi' destruction_sleep_duration = 40 - exit_delay = 40 \ No newline at end of file + exit_delay = 40 + +/obj/mecha/combat/proc/max_ammo() //Max the ammo stored for Nuke Ops mechs, or anyone else that calls this + for(var/obj/item/I in equipment) + if(istype(I, /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/)) + var/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/gun = I + gun.projectiles_cache = gun.projectiles_cache_max \ No newline at end of file diff --git a/code/game/mecha/combat/gygax.dm b/code/game/mecha/combat/gygax.dm index 601bcce7fef..dd00adee505 100644 --- a/code/game/mecha/combat/gygax.dm +++ b/code/game/mecha/combat/gygax.dm @@ -39,6 +39,7 @@ ME.attach(src) ME = new /obj/item/mecha_parts/mecha_equipment/tesla_energy_relay ME.attach(src) + max_ammo() /obj/mecha/combat/gygax/dark/add_cell(obj/item/stock_parts/cell/C=null) if(C) diff --git a/code/game/mecha/combat/marauder.dm b/code/game/mecha/combat/marauder.dm index a39b4987532..a5eec2ee323 100644 --- a/code/game/mecha/combat/marauder.dm +++ b/code/game/mecha/combat/marauder.dm @@ -40,6 +40,7 @@ ME.attach(src) ME = new /obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster(src) ME.attach(src) + max_ammo() /obj/mecha/combat/marauder/seraph desc = "Heavy-duty, command-type exosuit. This is a custom model, utilized only by high-ranking military personnel." @@ -66,6 +67,7 @@ ME.attach(src) ME = new /obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster(src) ME.attach(src) + max_ammo() /obj/mecha/combat/marauder/mauler desc = "Heavy-duty, combat exosuit, developed off of the existing Marauder model." @@ -89,5 +91,6 @@ ME.attach(src) ME = new /obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster(src) ME.attach(src) + max_ammo() diff --git a/code/game/mecha/equipment/tools/work_tools.dm b/code/game/mecha/equipment/tools/work_tools.dm index 8d421b34850..79b8c2b0ef3 100644 --- a/code/game/mecha/equipment/tools/work_tools.dm +++ b/code/game/mecha/equipment/tools/work_tools.dm @@ -32,6 +32,19 @@ return if(!cargo_holder) return + if(ismecha(target)) + var/obj/mecha/M = target + var/have_ammo + for(var/obj/item/mecha_ammo/box in cargo_holder.cargo) + if(istype(box, /obj/item/mecha_ammo) && box.rounds) + have_ammo = TRUE + if(M.ammo_resupply(box, chassis.occupant, TRUE)) + return + if(have_ammo) + to_chat(chassis.occupant, "No further supplies can be provided to [M].") + else + to_chat(chassis.occupant, "No providable supplies found in cargo hold") + return if(isobj(target)) var/obj/O = target if(istype(O, /obj/machinery/door/firedoor)) diff --git a/code/game/mecha/equipment/weapons/mecha_ammo.dm b/code/game/mecha/equipment/weapons/mecha_ammo.dm new file mode 100644 index 00000000000..6e151b800ee --- /dev/null +++ b/code/game/mecha/equipment/weapons/mecha_ammo.dm @@ -0,0 +1,94 @@ +/obj/item/mecha_ammo + name = "generic ammo box" + desc = "A box of ammo for an unknown weapon." + w_class = WEIGHT_CLASS_BULKY + icon = 'icons/mecha/mecha_ammo.dmi' + icon_state = "empty" + lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi' + righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi' + var/rounds = 0 + var/round_term = "round" + var/direct_load //For weapons where we re-load the weapon itself rather than adding to the ammo storage. + var/load_audio = "sound/weapons/gun_magazine_insert_empty_1.ogg" + var/ammo_type + +/obj/item/mecha_ammo/proc/update_name() + if(!rounds) + name = "empty ammo box" + desc = "An exosuit ammuniton box that has since been emptied. Please recycle." + icon_state = "empty" + +/obj/item/mecha_ammo/attack_self(mob/user) + ..() + if(rounds) + to_chat(user, "You cannot flatten the ammo box until it's empty!") + return + + to_chat(user, "You fold [src] flat.") + var/I = new /obj/item/stack/sheet/metal(user.loc) + qdel(src) + user.put_in_hands(I) + +/obj/item/mecha_ammo/examine(mob/user) + . = ..() + if(rounds) + . += "There [rounds > 1?"are":"is"] [rounds] [round_term][rounds > 1?"s":""] left." + +/obj/item/mecha_ammo/incendiary + name = "incendiary ammo" + desc = "A box of incendiary ammunition for use with exosuit weapons." + icon_state = "incendiary" + rounds = 24 + ammo_type = "incendiary" + +/obj/item/mecha_ammo/scattershot + name = "scattershot ammo" + desc = "A box of scaled-up buckshot, for use in exosuit shotguns." + icon_state = "scattershot" + rounds = 40 + ammo_type = "scattershot" + +/obj/item/mecha_ammo/lmg + name = "machine gun ammo" + desc = "A box of linked ammunition, designed for the Ultra AC 2 exosuit weapon." + icon_state = "lmg" + rounds = 300 + ammo_type = "lmg" + +/obj/item/mecha_ammo/missiles_br + name = "breaching missiles" + desc = "A box of large missiles, ready for loading into a BRM-6 exosuit missile rack." + icon_state = "missile_br" + rounds = 6 + round_term = "missile" + direct_load = TRUE + load_audio = "sound/weapons/bulletinsert.ogg" + ammo_type = "missiles_br" + +/obj/item/mecha_ammo/missiles_he + name = "anti-armor missiles" + desc = "A box of large missiles, ready for loading into an SRM-8 exosuit missile rack." + icon_state = "missile_he" + rounds = 8 + round_term = "missile" + direct_load = TRUE + load_audio = "sound/weapons/bulletinsert.ogg" + ammo_type = "missiles_he" + + +/obj/item/mecha_ammo/flashbang + name = "launchable flashbangs" + desc = "A box of smooth flashbangs, for use with a large exosuit launcher. Cannot be primed by hand." + icon_state = "flashbang" + rounds = 6 + round_term = "grenade" + ammo_type = "flashbang" + +/obj/item/mecha_ammo/clusterbang + name = "launchable flashbang clusters" + desc = "A box of clustered flashbangs, for use with a specialized exosuit cluster launcher. Cannot be primed by hand." + icon_state = "clusterbang" + rounds = 3 + round_term = "cluster" + direct_load = TRUE + ammo_type = "clusterbang" \ No newline at end of file diff --git a/code/game/mecha/equipment/weapons/weapons.dm b/code/game/mecha/equipment/weapons/weapons.dm index 62112be7683..5a953e0fda6 100644 --- a/code/game/mecha/equipment/weapons/weapons.dm +++ b/code/game/mecha/equipment/weapons/weapons.dm @@ -211,7 +211,11 @@ name = "general ballistic weapon" fire_sound = 'sound/weapons/gunshot.ogg' var/projectiles + var/projectiles_cache //ammo to be loaded in, if possible. + var/projectiles_cache_max var/projectile_energy_cost + var/disabledreload //For weapons with no cache (like the rockets) which are reloaded by hand + var/ammo_type /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/get_shot_amount() return min(projectiles, projectiles_per_shot) @@ -224,19 +228,32 @@ return 1 /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/get_equip_info() - return "[..()] \[[src.projectiles]\][(src.projectiles < initial(src.projectiles))?" - Rearm":null]" + return "[..()] \[[src.projectiles][projectiles_cache_max &&!projectile_energy_cost?"/[projectiles_cache]":""]\][!disabledreload &&(src.projectiles < initial(src.projectiles))?" - Rearm":null]" /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/rearm() if(projectiles < initial(projectiles)) var/projectiles_to_add = initial(projectiles) - projectiles - while(chassis.get_charge() >= projectile_energy_cost && projectiles_to_add) - projectiles++ - projectiles_to_add-- - chassis.use_power(projectile_energy_cost) - send_byjax(chassis.occupant,"exosuit.browser","[REF(src)]",src.get_equip_info()) - log_message("Rearmed [src.name].", LOG_MECHA) - return 1 + + if(projectile_energy_cost) + while(chassis.get_charge() >= projectile_energy_cost && projectiles_to_add) + projectiles++ + projectiles_to_add-- + chassis.use_power(projectile_energy_cost) + + else + if(!projectiles_cache) + return FALSE + if(projectiles_to_add <= projectiles_cache) + projectiles = projectiles + projectiles_to_add + projectiles_cache = projectiles_cache - projectiles_to_add + else + projectiles = projectiles + projectiles_cache + projectiles_cache = 0 + + send_byjax(chassis.occupant,"exosuit.browser","[REF(src)]",src.get_equip_info()) + log_message("Rearmed [src.name].", LOG_MECHA) + return TRUE /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/needs_rearm() @@ -264,8 +281,10 @@ equip_cooldown = 10 projectile = /obj/item/projectile/bullet/incendiary/fnx99 projectiles = 24 - projectile_energy_cost = 15 + projectiles_cache = 24 + projectiles_cache_max = 96 harmful = TRUE + ammo_type = "incendiary" /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/silenced name = "\improper S.H.H. \"Quietus\" Carbine" @@ -285,10 +304,12 @@ equip_cooldown = 20 projectile = /obj/item/projectile/bullet/scattershot projectiles = 40 - projectile_energy_cost = 25 + projectiles_cache = 40 + projectiles_cache_max = 160 projectiles_per_shot = 4 variance = 25 harmful = TRUE + ammo_type = "scattershot" /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/lmg name = "\improper Ultra AC 2" @@ -297,23 +318,42 @@ equip_cooldown = 10 projectile = /obj/item/projectile/bullet/lmg projectiles = 300 - projectile_energy_cost = 20 + projectiles_cache = 300 + projectiles_cache_max = 1200 projectiles_per_shot = 3 variance = 6 randomspread = 1 projectile_delay = 2 harmful = TRUE + ammo_type = "lmg" /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack name = "\improper SRM-8 missile rack" - desc = "A weapon for combat exosuits. Shoots light explosive missiles." + desc = "A weapon for combat exosuits. Launches light explosive missiles." icon_state = "mecha_missilerack" projectile = /obj/item/projectile/bullet/a84mm_he fire_sound = 'sound/weapons/grenadelaunch.ogg' projectiles = 8 - projectile_energy_cost = 1000 + projectiles_cache = 0 + projectiles_cache_max = 0 + disabledreload = TRUE equip_cooldown = 60 harmful = TRUE + ammo_type = "missiles_he" + +/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/breaching + name = "\improper BRM-6 missile rack" + desc = "A weapon for combat exosuits. Launches low-explosive breaching missiles designed to explode only when striking a sturdy target." + icon_state = "mecha_missilerack_six" + projectile = /obj/item/projectile/bullet/a84mm_br + fire_sound = 'sound/weapons/grenadelaunch.ogg' + projectiles = 6 + projectiles_cache = 0 + projectiles_cache_max = 0 + disabledreload = TRUE + equip_cooldown = 60 + harmful = TRUE + ammo_type = "missiles_br" /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher @@ -344,10 +384,12 @@ projectile = /obj/item/grenade/flashbang fire_sound = 'sound/weapons/grenadelaunch.ogg' projectiles = 6 + projectiles_cache = 6 + projectiles_cache_max = 24 missile_speed = 1.5 - projectile_energy_cost = 800 equip_cooldown = 60 var/det_time = 20 + ammo_type = "flashbang" /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/flashbang/proj_init(var/obj/item/grenade/flashbang/F) var/turf/T = get_turf(src) @@ -359,9 +401,12 @@ name = "\improper SOB-3 grenade launcher" desc = "A weapon for combat exosuits. Launches primed clusterbangs. You monster." projectiles = 3 + projectiles_cache = 0 + projectiles_cache_max = 0 + disabledreload = TRUE projectile = /obj/item/grenade/clusterbuster - projectile_energy_cost = 1600 //getting off cheap seeing as this is 3 times the flashbangs held in the grenade launcher. equip_cooldown = 90 + ammo_type = "clusterbang" /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/banana_mortar name = "banana mortar" diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm index 696fda986a8..c993fed484a 100644 --- a/code/game/mecha/mech_fabricator.dm +++ b/code/game/mecha/mech_fabricator.dm @@ -29,6 +29,7 @@ "H.O.N.K", "Phazon", "Exosuit Equipment", + "Exosuit Ammunition", "Cyborg Upgrade Modules", "Misc" ) diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index 7e243d12465..3f38dd948d1 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -1115,3 +1115,53 @@ GLOBAL_VAR_INIT(year_integer, text2num(year)) // = 2013??? if(occupant_sight_flags) if(user == occupant) user.sight |= occupant_sight_flags + +/////////////////////// +////// Ammo stuff ///// +/////////////////////// + +/obj/mecha/proc/ammo_resupply(var/obj/item/mecha_ammo/A, mob/user,var/fail_chat_override = FALSE) + if(!A.rounds) + if(!fail_chat_override) + to_chat(user, "This box of ammo is empty!") + return FALSE + var/ammo_needed + var/found_gun + for(var/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/gun in equipment) + ammo_needed = 0 + + if(istype(gun, /obj/item/mecha_parts/mecha_equipment/weapon/ballistic) && gun.ammo_type == A.ammo_type) + found_gun = TRUE + if(A.direct_load) + ammo_needed = initial(gun.projectiles) - gun.projectiles + else + ammo_needed = gun.projectiles_cache_max - gun.projectiles_cache + + if(ammo_needed) + if(ammo_needed < A.rounds) + if(A.direct_load) + gun.projectiles = gun.projectiles + ammo_needed + else + gun.projectiles_cache = gun.projectiles_cache + ammo_needed + playsound(get_turf(user),A.load_audio,50,1) + to_chat(user, "You add [ammo_needed] [A.round_term][ammo_needed > 1?"s":""] to the [gun.name]") + A.rounds = A.rounds - ammo_needed + A.update_name() + return TRUE + + else + if(A.direct_load) + gun.projectiles = gun.projectiles + A.rounds + else + gun.projectiles_cache = gun.projectiles_cache + A.rounds + playsound(get_turf(user),A.load_audio,50,1) + to_chat(user, "You add [A.rounds] [A.round_term][A.rounds > 1?"s":""] to the [gun.name]") + A.rounds = 0 + A.update_name() + return TRUE + if(!fail_chat_override) + if(found_gun) + to_chat(user, "You can't fit any more ammo of this type!") + else + to_chat(user, "None of the equipment on this exosuit can use this ammo!") + return FALSE \ No newline at end of file diff --git a/code/game/mecha/mecha_defense.dm b/code/game/mecha/mecha_defense.dm index f31ce4ca970..98115e8fa5c 100644 --- a/code/game/mecha/mecha_defense.dm +++ b/code/game/mecha/mecha_defense.dm @@ -174,6 +174,10 @@ to_chat(user, "[src]-[W] interface initialization failed.") return + if(istype(W, /obj/item/mecha_ammo)) + ammo_resupply(W, user) + return + if(W.GetID()) if(add_req_access || maint_access) if(internals_access_allowed(user)) diff --git a/code/game/objects/items/storage/backpack.dm b/code/game/objects/items/storage/backpack.dm index 80d8a4dc02f..8a49a90a0c8 100644 --- a/code/game/objects/items/storage/backpack.dm +++ b/code/game/objects/items/storage/backpack.dm @@ -497,6 +497,31 @@ for(var/i in 1 to 9) new /obj/item/ammo_box/magazine/smgm45(src) +/obj/item/storage/backpack/duffelbag/syndie/ammo/dark_gygax + desc = "A large duffel bag, packed to the brim with various exosuit ammo." + +/obj/item/storage/backpack/duffelbag/syndie/ammo/dark_gygax/PopulateContents() + new /obj/item/mecha_ammo/incendiary(src) + new /obj/item/mecha_ammo/incendiary(src) + new /obj/item/mecha_ammo/incendiary(src) + new /obj/item/mecha_ammo/flashbang(src) + new /obj/item/mecha_ammo/flashbang(src) + new /obj/item/mecha_ammo/flashbang(src) + +/obj/item/storage/backpack/duffelbag/syndie/ammo/mauler + desc = "A large duffel bag, packed to the brim with various exosuit ammo." + +/obj/item/storage/backpack/duffelbag/syndie/ammo/mauler/PopulateContents() + new /obj/item/mecha_ammo/lmg(src) + new /obj/item/mecha_ammo/lmg(src) + new /obj/item/mecha_ammo/lmg(src) + new /obj/item/mecha_ammo/scattershot(src) + new /obj/item/mecha_ammo/scattershot(src) + new /obj/item/mecha_ammo/scattershot(src) + new /obj/item/mecha_ammo/missiles_he(src) + new /obj/item/mecha_ammo/missiles_he(src) + new /obj/item/mecha_ammo/missiles_he(src) + /obj/item/storage/backpack/duffelbag/syndie/c20rbundle desc = "A large duffel bag containing a C-20r, some magazines, and a cheap looking suppressor." diff --git a/code/modules/projectiles/projectile/special/rocket.dm b/code/modules/projectiles/projectile/special/rocket.dm index 6f8d1135731..6ff9d45b3fe 100644 --- a/code/modules/projectiles/projectile/special/rocket.dm +++ b/code/modules/projectiles/projectile/special/rocket.dm @@ -30,7 +30,7 @@ return BULLET_ACT_HIT /obj/item/projectile/bullet/a84mm_he - name ="\improper HE rocket" + name ="\improper HE missile" desc = "Boom." icon_state = "missile" damage = 30 @@ -43,3 +43,33 @@ else explosion(target, 0, 0, 2, 4) return BULLET_ACT_HIT + +/obj/item/projectile/bullet/a84mm_br + name ="\improper HE missile" + desc = "Boom." + icon_state = "missile" + damage = 30 + ricochets_max = 0 //it's a MISSILE + var/sturdy = list( + /turf/closed, + /obj/mecha, + /obj/machinery/door/, + /obj/machinery/door/poddoor/shutters + ) + +/obj/item/broken_missile + name = "\improper broken missile" + desc = "A missile that did not detonate. The tail has snapped and it is in no way fit to be used again." + icon = 'icons/obj/projectiles.dmi' + icon_state = "missile_broken" + w_class = WEIGHT_CLASS_TINY + + +/obj/item/projectile/bullet/a84mm_br/on_hit(atom/target, blocked=0) + ..() + for(var/i in sturdy) + if(istype(target, i)) + explosion(target, 0, 1, 1, 2) + return BULLET_ACT_HIT + //if(istype(target, /turf/closed) || ismecha(target)) + new /obj/item/broken_missile(get_turf(src), 1) \ No newline at end of file diff --git a/code/modules/research/designs/mecha_designs.dm b/code/modules/research/designs/mecha_designs.dm index 892d32ddd08..09264d95530 100644 --- a/code/modules/research/designs/mecha_designs.dm +++ b/code/modules/research/designs/mecha_designs.dm @@ -147,6 +147,17 @@ construction_time = 100 category = list("Exosuit Equipment") +/datum/design/mech_scattershot_ammo + name = "LBX AC 10 Scattershot Ammunition" + desc = "Ammunition for the LBX AC 10 exosuit weapon." + id = "mech_scattershot_ammo" + build_type = PROTOLATHE | MECHFAB + build_path = /obj/item/mecha_ammo/scattershot + materials = list(MAT_METAL=6000) + construction_time = 20 + category = list("Exosuit Ammunition", "Ammo") + departmental_flags = DEPARTMENTAL_FLAG_SECURITY + /datum/design/mech_carbine name = "Exosuit Weapon (FNX-99 \"Hades\" Carbine)" desc = "Allows for the construction of FNX-99 \"Hades\" Carbine." @@ -157,6 +168,17 @@ construction_time = 100 category = list("Exosuit Equipment") +/datum/design/mech_carbine_ammo + name = "FNX-99 Carbine Ammunition" + desc = "Ammunition for the FNX-99 \"Hades\" Carbine." + id = "mech_carbine_ammo" + build_type = PROTOLATHE | MECHFAB + build_path = /obj/item/mecha_ammo/incendiary + materials = list(MAT_METAL=6000) + construction_time = 20 + category = list("Exosuit Ammunition", "Ammo") + departmental_flags = DEPARTMENTAL_FLAG_SECURITY + /datum/design/mech_ion name = "Exosuit Weapon (MKIV Ion Heavy Cannon)" desc = "Allows for the construction of MKIV Ion Heavy Cannon." @@ -217,16 +239,38 @@ construction_time = 100 category = list("Exosuit Equipment") +/datum/design/mech_grenade_launcher_ammo + name = "SGL-6 Grenade Launcher Ammunition" + desc = "Ammunition for the SGL-6 Grenade Launcher." + id = "mech_grenade_launcher_ammo" + build_type = PROTOLATHE | MECHFAB + build_path = /obj/item/mecha_ammo/flashbang + materials = list(MAT_METAL=4000,MAT_GOLD=500,MAT_SILVER=500) + construction_time = 20 + category = list("Exosuit Ammunition", "Ammo") + departmental_flags = DEPARTMENTAL_FLAG_SECURITY + /datum/design/mech_missile_rack - name = "Exosuit Weapon (SRM-8 Missile Rack)" - desc = "Allows for the construction of an SRM-8 Missile Rack." + name = "Exosuit Weapon (BRM-6 Missile Rack)" + desc = "Allows for the construction of an BRM-6 Breaching Missile Rack." id = "mech_missile_rack" build_type = MECHFAB - build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack + build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/breaching materials = list(MAT_METAL=22000,MAT_GOLD=6000,MAT_SILVER=8000) construction_time = 100 category = list("Exosuit Equipment") +/datum/design/mech_missile_rack_ammo + name = "SRM-8 Missile Rack Ammunition" + desc = "Ammunition for the SRM-8 Missile Rack." + id = "mech_missile_rack_ammo" + build_type = PROTOLATHE | MECHFAB + build_path = /obj/item/mecha_ammo/missiles_br + materials = list(MAT_METAL=8000,MAT_GOLD=500,MAT_SILVER=500) + construction_time = 20 + category = list("Exosuit Ammunition", "Ammo") + departmental_flags = DEPARTMENTAL_FLAG_SECURITY + /datum/design/clusterbang_launcher name = "Exosuit Module (SOB-3 Clusterbang Launcher)" desc = "A weapon that violates the Geneva Convention at 3 rounds per minute" @@ -237,6 +281,17 @@ construction_time = 100 category = list("Exosuit Equipment") +/datum/design/clusterbang_launcher_ammo + name = "SOB-3 Clusterbang Launcher Ammunition" + desc = "Ammunition for the SOB-3 Clusterbang Launcher" + id = "clusterbang_launcher_ammo" + build_type = PROTOLATHE | MECHFAB + build_path = /obj/item/mecha_ammo/clusterbang + materials = list(MAT_METAL=6000,MAT_GOLD=1500,MAT_URANIUM=1500) + construction_time = 20 + category = list("Exosuit Ammunition", "Ammo") + departmental_flags = DEPARTMENTAL_FLAG_SECURITY + /datum/design/mech_wormhole_gen name = "Exosuit Module (Localized Wormhole Generator)" desc = "An exosuit module that allows generating of small quasi-stable wormholes." @@ -357,6 +412,17 @@ construction_time = 100 category = list("Exosuit Equipment") +/datum/design/mech_lmg_ammo + name = "Ultra AC 2 Ammunition" + desc = "Ammunition for the Ultra AC 2 LMG" + id = "mech_lmg_ammo" + build_type = PROTOLATHE | MECHFAB + build_path = /obj/item/mecha_ammo/lmg + materials = list(MAT_METAL=4000) + construction_time = 20 + category = list("Exosuit Ammunition", "Ammo") + departmental_flags = DEPARTMENTAL_FLAG_SECURITY + /datum/design/mech_sleeper name = "Exosuit Medical Equipment (Mounted Sleeper)" desc = "Equipment for medical exosuits. A mounted sleeper that stabilizes patients and can inject reagents in the exosuit's reserves." diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm index cfb561e95f7..c1bfa37cba5 100644 --- a/code/modules/research/techweb/all_nodes.dm +++ b/code/modules/research/techweb/all_nodes.dm @@ -759,7 +759,7 @@ display_name = "Exosuit Weapon (LBX AC 10 \"Scattershot\")" description = "An advanced piece of mech weaponry" prereq_ids = list("ballistic_weapons") - design_ids = list("mech_scattershot") + design_ids = list("mech_scattershot", "mech_scattershot_ammo") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 @@ -768,7 +768,7 @@ display_name = "Exosuit Weapon (FNX-99 \"Hades\" Carbine)" description = "An advanced piece of mech weaponry" prereq_ids = list("ballistic_weapons") - design_ids = list("mech_carbine") + design_ids = list("mech_carbine", "mech_carbine_ammo") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 @@ -822,16 +822,16 @@ display_name = "Exosuit Weapon (SGL-6 Grenade Launcher)" description = "An advanced piece of mech weaponry" prereq_ids = list("explosive_weapons") - design_ids = list("mech_grenade_launcher") + design_ids = list("mech_grenade_launcher", "mech_grenade_launcher_ammo") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 /datum/techweb_node/mech_missile_rack id = "mech_missile_rack" - display_name = "Exosuit Weapon (SRM-8 Missile Rack)" + display_name = "Exosuit Weapon (BRM-6 Missile Rack)" description = "An advanced piece of mech weaponry" prereq_ids = list("explosive_weapons") - design_ids = list("mech_missile_rack") + design_ids = list("mech_missile_rack", "mech_missile_rack_ammo") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 @@ -840,7 +840,7 @@ display_name = "Exosuit Module (SOB-3 Clusterbang Launcher)" description = "An advanced piece of mech weaponry" prereq_ids = list("explosive_weapons") - design_ids = list("clusterbang_launcher") + design_ids = list("clusterbang_launcher", "clusterbang_launcher_ammo") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 @@ -867,7 +867,7 @@ display_name = "Exosuit Weapon (\"Ultra AC 2\" LMG)" description = "An advanced piece of mech weaponry" prereq_ids = list("ballistic_weapons") - design_ids = list("mech_lmg") + design_ids = list("mech_lmg", "mech_lmg_ammo") research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 2500) export_price = 5000 diff --git a/code/modules/uplink/uplink_items.dm b/code/modules/uplink/uplink_items.dm index 7380b9b1949..1534ae711d0 100644 --- a/code/modules/uplink/uplink_items.dm +++ b/code/modules/uplink/uplink_items.dm @@ -839,6 +839,20 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) cost = 1 include_modes = list(/datum/game_mode/nuclear) +/datum/uplink_item/ammo/dark_gygax/bag + name = "Dark Gygax Ammo Bag" + desc = "A duffel bag containing ammo for three full reloads of the incendiary carbine and flash bang launcher that are equipped on a standard Dark Gygax exosuit." + item = /obj/item/storage/backpack/duffelbag/syndie/ammo/dark_gygax + cost = 4 + include_modes = list(/datum/game_mode/nuclear) + +/datum/uplink_item/ammo/mauler/bag + name = "Mauler Ammo Bag" + desc = "A duffel bag containing ammo for three full reloads of the LMG, scattershot carbine, and SRM-8 missile laucher that are equipped on a standard Mauler exosuit." + item = /obj/item/storage/backpack/duffelbag/syndie/ammo/mauler + cost = 6 + include_modes = list(/datum/game_mode/nuclear) + //Grenades and Explosives /datum/uplink_item/explosives category = "Grenades and Explosives" diff --git a/icons/mecha/mecha_ammo.dmi b/icons/mecha/mecha_ammo.dmi new file mode 100644 index 0000000000000000000000000000000000000000..63bc38cfa71c706cde5466b2058661ff7ec54582 GIT binary patch literal 874 zcmV-w1C{)VP)*4*viE*WX~EprFyCb^rhWL58&dnKM5>KYsuK|7rmL*Z{!5 z!0+#T!{(2uQG((C0004WQchCV=-0C=2@kj)Ch zFc5^#$y0>(F8*D;NK5I#zJjF5wpmD0$*ziTZ?NFec$*JC24-q?Zo7U^&83$QNQ6sN zCw1IxrFf!cm*KFN!U4{XS0L65IaUyE{Hmm|m?-m3iYe&;YyMh3%tZ&IfoM^ua$P_o z^l%;1->QS6N=7s1`EKE&J9$lR)UiCv_&ep+Uv911q4~W32H>}GF*AKFKL7v%C`m*? zRA_RRZ8DQJdtwO;Ii3E5CPByLD^^Dl zr2NAOV!kB|zyMSNdQa2t3vK;TvEP4V6|RVP`0kb6Ve~(|3ZKsp1e8zTRpy7}oFL{~ zg7ZoK`FutM>_hH6&xlY5z?IS30%EPe$Cc6A0%EP&05IMXQa1=7_;cz;0&ugG0W9OS zk^#}r0sJ~(N<{O^64Cq!;PWk^Y_d-6W}B>2yHk@_9u@nisr;yzs9!9!%r6$22PkQ& zhZ5}bV+}7C_{aBfgdZ+od=jwP_f2B`=?EXL=;`<04~B+@hK624z4wE7?D+Izb}a83 z_b2&ZUh;VQo*%5%{E(az==kgPiV}!#f^S&g=iV>@0Jt)@n+=Gynu2di-$XyFj75Y` zC;-OWgwzcPaOv>Q6lU&ln6EX`JmGz zZ!-9;P3}HT<%KroezwpuzgTGF_rdsmFn%8l4Gj(bGxdJn$79F07qeqI{dg5SR&~BI z{=M9DUA}S`v=UJM5@0X^`;bowb%0bEJKij>;S&Jh$~ZgLstw@AFG}4Y0Ema1*a`^w z0>F5}Mu2Ov@lD`M1O;j?5o$7gN4d$NKy6JX)5x`0o~AUv79cLP?EGIWwAvC$kAlkc z|2hD)`TSoA*na+B1?)cm*AVud|JMn9_k-8gFAwBASM0wn^Z)<=07*qoM6N<$f=OJV AtpET3 literal 0 HcmV?d00001 diff --git a/icons/mecha/mecha_equipment.dmi b/icons/mecha/mecha_equipment.dmi index 029fe06342de26dc09091543e2dac80d11b62fbc..e9b6f1a9062fc5b2f19d67c7b438ffea507ad4e8 100644 GIT binary patch literal 21176 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 literal 20572 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 diff --git a/icons/obj/projectiles.dmi b/icons/obj/projectiles.dmi index 5cba49e4492c15225f118733b9ee8d9bc160eb0f..2b1738566bc8451e6762fd43d1de1273453037b2 100644 GIT binary patch delta 8790 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 Ray1D4D9ETvS4o-%{vY4NYt{e& diff --git a/tgstation.dme b/tgstation.dme index 9fef41a5ac8..51d78e0401c 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -735,6 +735,7 @@ #include "code\game\mecha\equipment\tools\other_tools.dm" #include "code\game\mecha\equipment\tools\weapon_bay.dm" #include "code\game\mecha\equipment\tools\work_tools.dm" +#include "code\game\mecha\equipment\weapons\mecha_ammo.dm" #include "code\game\mecha\equipment\weapons\weapons.dm" #include "code\game\mecha\medical\medical.dm" #include "code\game\mecha\medical\odysseus.dm"