From 69f8f4472ea076790d2585963c8cac0ba883269c Mon Sep 17 00:00:00 2001 From: Lumipharon Date: Sun, 7 Jul 2024 06:00:55 +1200 Subject: [PATCH] Breech loaded tank magazines (#16267) --- code/datums/storage/subtypes/tank.dm | 2 +- .../gamemode/campaign_vehicle_spawners.dm | 2 +- .../modules/vehicles/armored/ammo_magazine.dm | 6 +++--- .../vehicles/armored/armored_weapons.dm | 5 +---- .../vehicles/armored/interiors/breech.dm | 19 +++++++++--------- .../vehicles/armored/som_armored_weapons.dm | 3 ++- icons/obj/items/ammo/tank.dmi | Bin 3287 -> 3194 bytes 7 files changed, 17 insertions(+), 20 deletions(-) diff --git a/code/datums/storage/subtypes/tank.dm b/code/datums/storage/subtypes/tank.dm index d348a8aee35f0..9fe2ff5c6254a 100644 --- a/code/datums/storage/subtypes/tank.dm +++ b/code/datums/storage/subtypes/tank.dm @@ -6,7 +6,7 @@ allow_drawing_method = FALSE /// Unable to set draw_mode ourselves max_w_class = WEIGHT_CLASS_GIGANTIC //they're all WEIGHT_CLASS_GIGANTIC which is 6 max_storage_space = 120 - storage_slots = 20 + storage_slots = 40 /datum/storage/tank/on_attack_hand(datum/source, mob/living/user) //Override for tank subtype since this is deployed storage if(parent.Adjacent(user)) diff --git a/code/game/objects/effects/landmarks/gamemode/campaign_vehicle_spawners.dm b/code/game/objects/effects/landmarks/gamemode/campaign_vehicle_spawners.dm index db1a1212b5ecf..aca39f335938c 100644 --- a/code/game/objects/effects/landmarks/gamemode/campaign_vehicle_spawners.dm +++ b/code/game/objects/effects/landmarks/gamemode/campaign_vehicle_spawners.dm @@ -124,7 +124,7 @@ equipment_list = list( /obj/item/armored_weapon/coilgun = 1, /obj/item/armored_weapon/secondary_mlrs = 1, - /obj/item/ammo_magazine/tank/coilgun = 15, + /obj/item/ammo_magazine/tank/coilgun = 40, /obj/item/ammo_magazine/tank/secondary_mlrs = 8, ) diff --git a/code/modules/vehicles/armored/ammo_magazine.dm b/code/modules/vehicles/armored/ammo_magazine.dm index ba5a0810bcbf9..7a2ea99c6967b 100644 --- a/code/modules/vehicles/armored/ammo_magazine.dm +++ b/code/modules/vehicles/armored/ammo_magazine.dm @@ -138,10 +138,10 @@ desc = "A set of extremely dense kinetic penetrator rounds for a tank mounted coilgun." caliber = CALIBER_84MM icon_state = "coilgun" - w_class = WEIGHT_CLASS_GIGANTIC + w_class = WEIGHT_CLASS_NORMAL default_ammo = /datum/ammo/rocket/coilgun/holder //this doesn't strictly matter since its overridden - max_rounds = 4 - loading_sound = 'sound/vehicles/weapons/ltb_reload.ogg' + max_rounds = 1 + loading_sound = 'sound/vehicles/weapons/coilgun_cycle.ogg' /obj/item/ammo_magazine/tank/secondary_flamer_tank name = "napalm stream tank" diff --git a/code/modules/vehicles/armored/armored_weapons.dm b/code/modules/vehicles/armored/armored_weapons.dm index 5616190d5e4f5..df53538602088 100644 --- a/code/modules/vehicles/armored/armored_weapons.dm +++ b/code/modules/vehicles/armored/armored_weapons.dm @@ -13,7 +13,7 @@ ///Current loaded magazines: top one empties into ammo var/list/obj/item/ammo_magazine/ammo_magazine = list() ///maximum magazines ammo_magazine can hold - var/maximum_magazines = 5 + var/maximum_magazines = 0 ///ammo types we'll be able to accept var/list/accepted_ammo = list( /obj/item/ammo_magazine/tank/ltb_cannon, @@ -320,7 +320,6 @@ projectile_delay = 2 variance = 5 rearm_time = 1 SECONDS - maximum_magazines = 5 hud_state_empty = "rifle_empty" /obj/item/armored_weapon/ltaap @@ -336,7 +335,6 @@ variance = 5 projectile_delay = 0.1 SECONDS rearm_time = 3 SECONDS - maximum_magazines = 5 hud_state_empty = "rifle_empty" /obj/item/armored_weapon/apc_cannon @@ -362,7 +360,6 @@ fire_mode = GUN_FIREMODE_AUTOMATIC variance = 5 rearm_time = 1 SECONDS - maximum_magazines = 5 accepted_ammo = list( /obj/item/ammo_magazine/tank/secondary_flamer_tank, ) diff --git a/code/modules/vehicles/armored/interiors/breech.dm b/code/modules/vehicles/armored/interiors/breech.dm index 250321e636d0e..2d48a3d042e79 100644 --- a/code/modules/vehicles/armored/interiors/breech.dm +++ b/code/modules/vehicles/armored/interiors/breech.dm @@ -79,14 +79,12 @@ /obj/structure/gun_breech/proc/do_load(mob/living/user, obj/item/armored_weapon/weapon, obj/item/ammo_magazine/mag) user.temporarilyRemoveItemFromInventory(mag) mag.forceMove(weapon) - weapon.ammo = mag + weapon.ammo_magazine +=mag + if(weapon.ammo) + return + weapon.reload() + update_appearance(UPDATE_ICON) user.say(is_secondary ? "Loaded!" : "Up!") - for(var/mob/occupant AS in owner.interior.occupants) - occupant.hud_used.update_ammo_hud(weapon, list( - mag.default_ammo.hud_state, - mag.default_ammo.hud_state_empty), - mag.current_rounds - ) ///Unloads the weapon attached to the breech /obj/structure/gun_breech/proc/do_unload(mob/living/user, obj/item/armored_weapon/weapon) @@ -94,6 +92,8 @@ user.put_in_hands(weapon.ammo) weapon.ammo.update_appearance() weapon.ammo = null + weapon.reload() + update_appearance(UPDATE_ICON) ///checks to perform while reloading /obj/structure/gun_breech/proc/reload_checks(mob/user) @@ -101,7 +101,7 @@ if(!weapon) balloon_alert(user, "no weapon") return FALSE - if(weapon.ammo) + if(weapon.ammo && length(weapon.ammo_magazine) >= weapon.maximum_magazines) balloon_alert(user, "already loaded") return FALSE return TRUE @@ -234,7 +234,6 @@ update_gun_appearance(weapon_type) if(weapon_type.type == /obj/item/armored_weapon/coilgun) flick("[ammo_overlay.icon_state]_flick", ammo_overlay) - playsound(src, 'sound/vehicles/weapons/coilgun_cycle.ogg', 60, FALSE) ///Updates breech and barrel vis_obj appearance /obj/structure/gun_breech/som/proc/update_gun_appearance(obj/item/armored_weapon/current_weapon) @@ -255,7 +254,7 @@ pixel_x = -12 pixel_y = -32 barrel_overlay.pixel_y = 76 - ammo_overlay.icon_state = "[icon_state]_[weapon_type?.ammo?.current_rounds]" + ammo_overlay.icon_state = "[icon_state]_[length(weapon_type?.ammo_magazine) + weapon_type.ammo.current_rounds]" else if(weapon_type.type == /obj/item/armored_weapon/particle_lance) pixel_x = -8 pixel_y = -7 diff --git a/code/modules/vehicles/armored/som_armored_weapons.dm b/code/modules/vehicles/armored/som_armored_weapons.dm index 9483c7d704703..73e38e6a1e270 100644 --- a/code/modules/vehicles/armored/som_armored_weapons.dm +++ b/code/modules/vehicles/armored/som_armored_weapons.dm @@ -126,6 +126,8 @@ windup_sound = 'sound/vehicles/weapons/coil_charge.ogg' windup_delay = 0.6 SECONDS projectile_delay = 3 SECONDS + maximum_magazines = 3 + rearm_time = 0.5 SECONDS ///Power setting of the weapon. Effect the projectile fired var/power_level = COILGUN_MED_POWER ///Current ammo override to use based on power level @@ -241,7 +243,6 @@ projectile_delay = 0.2 SECONDS variance = 40 rearm_time = 5 SECONDS - maximum_magazines = 0 hud_state_empty = "rocket_empty" /datum/action/item_action/coilgun_power diff --git a/icons/obj/items/ammo/tank.dmi b/icons/obj/items/ammo/tank.dmi index ac017208b9aba1dd1e0b7066ea4436c7ba7820cb..89ddaf270bd8718eb04c6d1f7a714c905cf4ea2d 100644 GIT binary patch delta 2560 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 E2V8&hUH||9 delta 2654 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 wYB4@6O<%8MP^@uI@KC8e1k&>#dy+&8kS%