From 4d4ef3e3970f5dd4b6fd7c44fe49a056d6be59ab Mon Sep 17 00:00:00 2001 From: Lars Date: Wed, 17 Jul 2024 00:42:08 +0200 Subject: [PATCH 1/5] shit complicated --- code/datums/ammo/bullet/special_ammo.dm | 27 +++++++++++------- code/modules/projectiles/guns/smartgun.dm | 26 ++++++++++------- .../projectiles/magazines/specialist.dm | 4 +-- icons/mob/hud/actions.dmi | Bin 24987 -> 24777 bytes 4 files changed, 34 insertions(+), 23 deletions(-) diff --git a/code/datums/ammo/bullet/special_ammo.dm b/code/datums/ammo/bullet/special_ammo.dm index 97c1bf5735f9..46473d84c0a7 100644 --- a/code/datums/ammo/bullet/special_ammo.dm +++ b/code/datums/ammo/bullet/special_ammo.dm @@ -24,6 +24,20 @@ penetration = ARMOR_PENETRATION_TIER_8 damage_armor_punch = 1 +/datum/ammo/bullet/smartgun/holo_target + name = "holo-targeting smartgun bullet" + damage = 15 + /// inflicts this many holo stacks per bullet hit + var/holo_stacks = 15 + /// modifies the default cap limit of 100 by this amount + var/bonus_damage_cap_increase = 0 + /// multiplies the default drain of 5 holo stacks per second by this amount + var/stack_loss_multiplier = 1 + +/datum/ammo/bullet/smartgun/holo_target/on_hit_mob(mob/hit_mob, obj/projectile/bullet) + . = ..() + hit_mob.AddComponent(/datum/component/bonus_damage_stack, holo_stacks, world.time, bonus_damage_cap_increase, stack_loss_multiplier) + /datum/ammo/bullet/smartgun/dirty name = "irradiated smartgun bullet" debilitate = list(0,0,0,3,0,0,0,1) @@ -43,21 +57,12 @@ penetration = ARMOR_PENETRATION_TIER_7 damage_armor_punch = 3 -/datum/ammo/bullet/smartgun/holo_target //Royal marines smartgun bullet has only diff between regular ammo is this one does holostacks +/datum/ammo/bullet/smartgun/holo_target/rmc //Royal marines smartgun bullet has only diff between regular ammo is this one does holostacks name = "holo-targeting smartgun bullet" damage = 30 - /// inflicts this many holo stacks per bullet hit - var/holo_stacks = 15 - /// modifies the default cap limit of 100 by this amount - var/bonus_damage_cap_increase = 0 - /// multiplies the default drain of 5 holo stacks per second by this amount - var/stack_loss_multiplier = 1 -/datum/ammo/bullet/smartgun/holo_target/on_hit_mob(mob/hit_mob, obj/projectile/bullet) - . = ..() - hit_mob.AddComponent(/datum/component/bonus_damage_stack, holo_stacks, world.time, bonus_damage_cap_increase, stack_loss_multiplier) -/datum/ammo/bullet/smartgun/holo_target/ap +/datum/ammo/bullet/smartgun/holo_target/rmc/ap name = "armor-piercing smartgun bullet" icon_state = "bullet" diff --git a/code/modules/projectiles/guns/smartgun.dm b/code/modules/projectiles/guns/smartgun.dm index e5c9fff3a126..d7a3fb341217 100644 --- a/code/modules/projectiles/guns/smartgun.dm +++ b/code/modules/projectiles/guns/smartgun.dm @@ -36,8 +36,9 @@ ) var/datum/ammo/ammo_primary = /datum/ammo/bullet/smartgun //Toggled ammo type var/datum/ammo/ammo_secondary = /datum/ammo/bullet/smartgun/armor_piercing //Toggled ammo type + var/datum/ammo/ammo_tertiary = /datum/ammo/bullet/smartgun/holo_target var/iff_enabled = TRUE //Begin with the safety on. - var/secondary_toggled = 0 //which ammo we use + var/ammo_selection = 0 //which ammo we use var/recoil_compensation = 0 var/accuracy_improvement = 0 var/auto_fire = 0 @@ -50,6 +51,7 @@ var/long_range_cooldown = 2 var/recycletime = 120 var/cover_open = FALSE + var/list/ammo_list unacidable = 1 indestructible = 1 @@ -70,6 +72,7 @@ /obj/item/weapon/gun/smartgun/Initialize(mapload, ...) ammo_primary = GLOB.ammo_list[ammo_primary] //Gun initialize calls replace_ammo() so we need to set these first. ammo_secondary = GLOB.ammo_list[ammo_secondary] + ammo_tertiary = GLOB.ammo_list[ammo_tertiary] MD = new(src) battery = new /obj/item/smartgun_battery(src) . = ..() @@ -78,6 +81,7 @@ /obj/item/weapon/gun/smartgun/Destroy() ammo_primary = null ammo_secondary = null + ammo_tertiary = null QDEL_NULL(MD) QDEL_NULL(battery) . = ..() @@ -302,6 +306,8 @@ var/obj/item/weapon/gun/smartgun/G = holder_item if(G.secondary_toggled) action_icon_state = "ammo_swap_ap" + if(G.tertiary_toggled) + action_icon_state = "ammo_swap_holo" else action_icon_state = "ammo_swap_normal" button.overlays.Cut() @@ -336,17 +342,17 @@ if(!iff_enabled) to_chat(user, "[icon2html(src, usr)] Can't switch ammunition type when \the [src]'s fire restriction is disabled.") return - secondary_toggled = !secondary_toggled - to_chat(user, "[icon2html(src, usr)] You changed \the [src]'s ammo preparation procedures. You now fire [secondary_toggled ? "armor shredding rounds" : "highly precise rounds"].") - balloon_alert(user, "firing [secondary_toggled ? "armor shredding" : "highly precise"]") + ammo_selection = !ammo_selection + to_chat(user, "[icon2html(src, usr)] You changed \the [src]'s ammo preparation procedures. You now fire [ammo_selection list( "armor shredding rounds" : "highly precise rounds" : "holo-targeting rounds" )].") + balloon_alert(user, "firing [ammo_selection ? "armor shredding" : "highly precise" ]") playsound(loc,'sound/machines/click.ogg', 25, 1) - ammo = secondary_toggled ? ammo_secondary : ammo_primary + ammo = ammo_selection list( ammo_secondary : ammo_primary : ammo_tertiary ) var/datum/action/item_action/smartgun/toggle_ammo_type/TAT = locate(/datum/action/item_action/smartgun/toggle_ammo_type) in actions TAT.update_icon() /obj/item/weapon/gun/smartgun/replace_ammo() ..() - ammo = secondary_toggled ? ammo_secondary : ammo_primary + ammo = ammo_selection list( ammo_secondary : ammo_primary : ammo_tertiary ) /obj/item/weapon/gun/smartgun/proc/toggle_lethal_mode(mob/user) to_chat(user, "[icon2html(src, usr)] You [iff_enabled? "disable" : "enable"] \the [src]'s fire restriction. You will [iff_enabled ? "harm anyone in your way" : "target through IFF"].") @@ -742,10 +748,10 @@ /obj/item/weapon/gun/smartgun/rmc name = "\improper L56A2 smartgun" desc = "The actual firearm in the 2-piece L56A2 Smartgun System. This Variant is used by the Three World Empires Royal Marines Commando units.\nYou may toggle firing restrictions by using a special action.\nAlt-click it to open the feed cover and allow for reloading." - current_mag = /obj/item/ammo_magazine/smartgun/holo_targetting - ammo = /obj/item/ammo_magazine/smartgun/holo_targetting - ammo_primary = /datum/ammo/bullet/smartgun/holo_target //Toggled ammo type - ammo_secondary = /datum/ammo/bullet/smartgun/holo_target/ap ///Toggled ammo type + current_mag = /obj/item/ammo_magazine/smartgun/holo_targetting/rmc + ammo = /obj/item/ammo_magazine/smartgun/holo_targetting/rmc + ammo_primary = /datum/ammo/bullet/smartgun/holo_target/rmc //Toggled ammo type + ammo_secondary = /datum/ammo/bullet/smartgun/holo_target/rmc/ap ///Toggled ammo type flags_gun_features = GUN_SPECIALIST|GUN_WIELDED_FIRING_ONLY icon = 'icons/obj/items/weapons/guns/guns_by_faction/twe_guns.dmi' icon_state = "magsg" diff --git a/code/modules/projectiles/magazines/specialist.dm b/code/modules/projectiles/magazines/specialist.dm index 547d231e1c69..e3656d91ef30 100644 --- a/code/modules/projectiles/magazines/specialist.dm +++ b/code/modules/projectiles/magazines/specialist.dm @@ -107,11 +107,11 @@ default_ammo = /datum/ammo/bullet/smartgun/dirty gun_type = /obj/item/weapon/gun/smartgun/dirty -/obj/item/ammo_magazine/smartgun/holo_targetting +/obj/item/ammo_magazine/smartgun/holo_targetting/rmc name = "holotargetting smartgun drum" desc = "Holotargetting rounds for use in the royal marines commando L56A2 smartgun." icon_state = "m56_drum" - default_ammo = /datum/ammo/bullet/smartgun/holo_target + default_ammo = /datum/ammo/bullet/smartgun/holo_target/rmc gun_type = /obj/item/weapon/gun/smartgun/rmc //------------------------------------------------------- //Flare gun. Close enough? diff --git a/icons/mob/hud/actions.dmi b/icons/mob/hud/actions.dmi index 3c3e6dd9de3dd71172b4b46bb4f150a23b4e0752..559fbb5573e3e503a23593a20767066ce096657d 100644 GIT binary patch literal 24777 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 G^#1|ps!o>x literal 24987 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 A8UO$Q From 9ab3d51c1be2952aa2a3f9330ab462693a395e99 Mon Sep 17 00:00:00 2001 From: Lars Date: Wed, 17 Jul 2024 06:27:27 +0200 Subject: [PATCH 2/5] merge fixes --- code/modules/projectiles/guns/smartgun.dm | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/code/modules/projectiles/guns/smartgun.dm b/code/modules/projectiles/guns/smartgun.dm index a7f5d8781267..5ee020abf822 100644 --- a/code/modules/projectiles/guns/smartgun.dm +++ b/code/modules/projectiles/guns/smartgun.dm @@ -36,9 +36,8 @@ ) var/datum/ammo/ammo_primary = /datum/ammo/bullet/smartgun //Toggled ammo type var/datum/ammo/ammo_secondary = /datum/ammo/bullet/smartgun/armor_piercing //Toggled ammo type - var/datum/ammo/ammo_tertiary = /datum/ammo/bullet/smartgun/holo_target var/iff_enabled = TRUE //Begin with the safety on. - var/ammo_selection = 0 //which ammo we use + var/secondary_toggled = 0 //which ammo we use var/recoil_compensation = 0 var/accuracy_improvement = 0 var/auto_fire = 0 @@ -51,7 +50,6 @@ var/long_range_cooldown = 2 var/recycletime = 120 var/cover_open = FALSE - var/list/ammo_list unacidable = 1 indestructible = 1 @@ -72,7 +70,6 @@ /obj/item/weapon/gun/smartgun/Initialize(mapload, ...) ammo_primary = GLOB.ammo_list[ammo_primary] //Gun initialize calls replace_ammo() so we need to set these first. ammo_secondary = GLOB.ammo_list[ammo_secondary] - ammo_tertiary = GLOB.ammo_list[ammo_tertiary] MD = new(src) battery = new /obj/item/smartgun_battery(src) . = ..() @@ -81,7 +78,6 @@ /obj/item/weapon/gun/smartgun/Destroy() ammo_primary = null ammo_secondary = null - ammo_tertiary = null QDEL_NULL(MD) QDEL_NULL(battery) . = ..() @@ -307,8 +303,6 @@ var/obj/item/weapon/gun/smartgun/G = holder_item if(G.secondary_toggled) action_icon_state = "ammo_swap_ap" - if(G.tertiary_toggled) - action_icon_state = "ammo_swap_holo" else action_icon_state = "ammo_swap_normal" button.overlays.Cut() @@ -343,17 +337,17 @@ if(!iff_enabled) to_chat(user, "[icon2html(src, usr)] Can't switch ammunition type when \the [src]'s fire restriction is disabled.") return - ammo_selection = !ammo_selection - to_chat(user, "[icon2html(src, usr)] You changed \the [src]'s ammo preparation procedures. You now fire [ammo_selection list( "armor shredding rounds" : "highly precise rounds" : "holo-targeting rounds" )].") - balloon_alert(user, "firing [ammo_selection ? "armor shredding" : "highly precise" ]") + secondary_toggled = !secondary_toggled + to_chat(user, "[icon2html(src, usr)] You changed \the [src]'s ammo preparation procedures. You now fire [secondary_toggled ? "armor shredding rounds" : "highly precise rounds"].") + balloon_alert(user, "firing [secondary_toggled ? "armor shredding" : "highly precise"]") playsound(loc,'sound/machines/click.ogg', 25, 1) - ammo = ammo_selection list( ammo_secondary : ammo_primary : ammo_tertiary ) + ammo = secondary_toggled ? ammo_secondary : ammo_primary var/datum/action/item_action/smartgun/toggle_ammo_type/TAT = locate(/datum/action/item_action/smartgun/toggle_ammo_type) in actions TAT.update_icon() /obj/item/weapon/gun/smartgun/replace_ammo() ..() - ammo = ammo_selection list( ammo_secondary : ammo_primary : ammo_tertiary ) + ammo = secondary_toggled ? ammo_secondary : ammo_primary /obj/item/weapon/gun/smartgun/proc/toggle_lethal_mode(mob/user) to_chat(user, "[icon2html(src, usr)] You [iff_enabled? "disable" : "enable"] \the [src]'s fire restriction. You will [iff_enabled ? "harm anyone in your way" : "target through IFF"].") @@ -750,7 +744,7 @@ /obj/item/weapon/gun/smartgun/rmc name = "\improper L56A2 smartgun" desc = "The actual firearm in the 2-piece L56A2 Smartgun System. This Variant is used by the Three World Empires Royal Marines Commando units.\nYou may toggle firing restrictions by using a special action.\nAlt-click it to open the feed cover and allow for reloading." - current_mag = /obj/item/ammo_magazine/smartgun/holo_targetting/rmc + current_mag = /obj/item/ammo_magazine/smartgun/holo_targetting ammo = /obj/item/ammo_magazine/smartgun/holo_targetting/rmc ammo_primary = /datum/ammo/bullet/smartgun/holo_target/rmc //Toggled ammo type ammo_secondary = /datum/ammo/bullet/smartgun/holo_target/rmc/ap ///Toggled ammo type From 94080cdffc7e0229aab8e2a8015a3f581092baef Mon Sep 17 00:00:00 2001 From: Lars Date: Wed, 17 Jul 2024 19:03:43 +0200 Subject: [PATCH 3/5] very fancy if statment --- code/modules/projectiles/guns/smartgun.dm | 39 +++++++++++++---------- 1 file changed, 22 insertions(+), 17 deletions(-) diff --git a/code/modules/projectiles/guns/smartgun.dm b/code/modules/projectiles/guns/smartgun.dm index 5ee020abf822..4e7b3e4dbc48 100644 --- a/code/modules/projectiles/guns/smartgun.dm +++ b/code/modules/projectiles/guns/smartgun.dm @@ -36,8 +36,9 @@ ) var/datum/ammo/ammo_primary = /datum/ammo/bullet/smartgun //Toggled ammo type var/datum/ammo/ammo_secondary = /datum/ammo/bullet/smartgun/armor_piercing //Toggled ammo type + var/datum/ammo/ammo_tertiary = /datum/ammo/bullet/smartgun/holo_target //Toggled ammo type var/iff_enabled = TRUE //Begin with the safety on. - var/secondary_toggled = 0 //which ammo we use + var/ammo_selection = 0 //which ammo we use var/recoil_compensation = 0 var/accuracy_improvement = 0 var/auto_fire = 0 @@ -50,6 +51,9 @@ var/long_range_cooldown = 2 var/recycletime = 120 var/cover_open = FALSE + var/hp = /datum/ammo/ammo_primary + var/ap = /datum/ammo/ammo_secondary + var/ht = /datum/ammo/ammo_tertiary unacidable = 1 indestructible = 1 @@ -301,8 +305,10 @@ /datum/action/item_action/smartgun/toggle_ammo_type/proc/update_icon() var/obj/item/weapon/gun/smartgun/G = holder_item - if(G.secondary_toggled) + if("ap") action_icon_state = "ammo_swap_ap" + if("ht") + action_icon_state = "ammo_swap_holo" else action_icon_state = "ammo_swap_normal" button.overlays.Cut() @@ -334,27 +340,26 @@ toggle_ammo_type(usr) /obj/item/weapon/gun/smartgun/proc/toggle_ammo_type(mob/user) - if(!iff_enabled) - to_chat(user, "[icon2html(src, usr)] Can't switch ammunition type when \the [src]'s fire restriction is disabled.") - return - secondary_toggled = !secondary_toggled - to_chat(user, "[icon2html(src, usr)] You changed \the [src]'s ammo preparation procedures. You now fire [secondary_toggled ? "armor shredding rounds" : "highly precise rounds"].") - balloon_alert(user, "firing [secondary_toggled ? "armor shredding" : "highly precise"]") - playsound(loc,'sound/machines/click.ogg', 25, 1) - ammo = secondary_toggled ? ammo_secondary : ammo_primary - var/datum/action/item_action/smartgun/toggle_ammo_type/TAT = locate(/datum/action/item_action/smartgun/toggle_ammo_type) in actions - TAT.update_icon() - -/obj/item/weapon/gun/smartgun/replace_ammo() - ..() - ammo = secondary_toggled ? ammo_secondary : ammo_primary + if(!iff_enabled) + to_chat(user, "[icon2html(src, usr)] Can't switch ammunition type when \the [src]'s fire restriction is disabled.") + return + switch(ammo_selection) + if("ap") + to_chat(user, "[icon2html(src, usr)] You changed \the [src]'s ammo preparation procedures. You now fire holo-targeting rounds.") + ammo= ammo_selection = "ht" + if("ht") + to_chat(user, "[icon2html(src, usr)] You changed \the [src]'s ammo preparation procedures. You now fire highly precise rounds.") + ammo = ammo_selection = "hp" + if("hp") + to_chat(user, "[icon2html(src, usr)] You changed \the [src]'s ammo preparation procedures. You now fire armor shredding rounds.") + ammo = ammo_selection = "ap" /obj/item/weapon/gun/smartgun/proc/toggle_lethal_mode(mob/user) to_chat(user, "[icon2html(src, usr)] You [iff_enabled? "disable" : "enable"] \the [src]'s fire restriction. You will [iff_enabled ? "harm anyone in your way" : "target through IFF"].") playsound(loc,'sound/machines/click.ogg', 25, 1) iff_enabled = !iff_enabled ammo = ammo_primary - secondary_toggled = FALSE + ammo_selection = FALSE if(iff_enabled) add_bullet_trait(BULLET_TRAIT_ENTRY_ID("iff", /datum/element/bullet_trait_iff)) drain += 10 From 78f85330f3fa1cfffcf140f0f4a38226d06e3a7b Mon Sep 17 00:00:00 2001 From: Lars Date: Thu, 18 Jul 2024 01:08:04 +0200 Subject: [PATCH 4/5] slop slop --- code/modules/projectiles/guns/smartgun.dm | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/code/modules/projectiles/guns/smartgun.dm b/code/modules/projectiles/guns/smartgun.dm index 4e7b3e4dbc48..ff840364f44e 100644 --- a/code/modules/projectiles/guns/smartgun.dm +++ b/code/modules/projectiles/guns/smartgun.dm @@ -51,9 +51,6 @@ var/long_range_cooldown = 2 var/recycletime = 120 var/cover_open = FALSE - var/hp = /datum/ammo/ammo_primary - var/ap = /datum/ammo/ammo_secondary - var/ht = /datum/ammo/ammo_tertiary unacidable = 1 indestructible = 1 @@ -74,6 +71,7 @@ /obj/item/weapon/gun/smartgun/Initialize(mapload, ...) ammo_primary = GLOB.ammo_list[ammo_primary] //Gun initialize calls replace_ammo() so we need to set these first. ammo_secondary = GLOB.ammo_list[ammo_secondary] + ammo_tertiary = GLOB.ammo_list[ammo_tertiary] MD = new(src) battery = new /obj/item/smartgun_battery(src) . = ..() @@ -82,6 +80,7 @@ /obj/item/weapon/gun/smartgun/Destroy() ammo_primary = null ammo_secondary = null + ammo_tertiary = null QDEL_NULL(MD) QDEL_NULL(battery) . = ..() @@ -305,9 +304,9 @@ /datum/action/item_action/smartgun/toggle_ammo_type/proc/update_icon() var/obj/item/weapon/gun/smartgun/G = holder_item - if("ap") + if(ammo == ammo_secondary) action_icon_state = "ammo_swap_ap" - if("ht") + if(ammo == ammo_tertiary) action_icon_state = "ammo_swap_holo" else action_icon_state = "ammo_swap_normal" @@ -344,15 +343,15 @@ to_chat(user, "[icon2html(src, usr)] Can't switch ammunition type when \the [src]'s fire restriction is disabled.") return switch(ammo_selection) - if("ap") + if(ammo_secondary) to_chat(user, "[icon2html(src, usr)] You changed \the [src]'s ammo preparation procedures. You now fire holo-targeting rounds.") - ammo= ammo_selection = "ht" - if("ht") + ammo = ammo_selection = ammo_tertiary + if(ammo_tertiary) to_chat(user, "[icon2html(src, usr)] You changed \the [src]'s ammo preparation procedures. You now fire highly precise rounds.") - ammo = ammo_selection = "hp" - if("hp") + ammo = ammo_selection = ammo_primary + if(ammo_primary) to_chat(user, "[icon2html(src, usr)] You changed \the [src]'s ammo preparation procedures. You now fire armor shredding rounds.") - ammo = ammo_selection = "ap" + ammo = ammo_selection = ammo_secondary /obj/item/weapon/gun/smartgun/proc/toggle_lethal_mode(mob/user) to_chat(user, "[icon2html(src, usr)] You [iff_enabled? "disable" : "enable"] \the [src]'s fire restriction. You will [iff_enabled ? "harm anyone in your way" : "target through IFF"].") From 16293a9e1299c404455c9b39cbe04304dfc8a9f4 Mon Sep 17 00:00:00 2001 From: Lars Date: Thu, 18 Jul 2024 01:55:43 +0200 Subject: [PATCH 5/5] amoswap now works-hopefully --- code/modules/projectiles/guns/smartgun.dm | 40 ++++++++++++++--------- 1 file changed, 24 insertions(+), 16 deletions(-) diff --git a/code/modules/projectiles/guns/smartgun.dm b/code/modules/projectiles/guns/smartgun.dm index ff840364f44e..41380df65065 100644 --- a/code/modules/projectiles/guns/smartgun.dm +++ b/code/modules/projectiles/guns/smartgun.dm @@ -38,7 +38,7 @@ var/datum/ammo/ammo_secondary = /datum/ammo/bullet/smartgun/armor_piercing //Toggled ammo type var/datum/ammo/ammo_tertiary = /datum/ammo/bullet/smartgun/holo_target //Toggled ammo type var/iff_enabled = TRUE //Begin with the safety on. - var/ammo_selection = 0 //which ammo we use + var/ammo_selection = /datum/ammo/bullet/smartgun //which ammo we use var/recoil_compensation = 0 var/accuracy_improvement = 0 var/auto_fire = 0 @@ -304,9 +304,9 @@ /datum/action/item_action/smartgun/toggle_ammo_type/proc/update_icon() var/obj/item/weapon/gun/smartgun/G = holder_item - if(ammo == ammo_secondary) + if(ammo_secondary) action_icon_state = "ammo_swap_ap" - if(ammo == ammo_tertiary) + else if(ammo_tertiary) action_icon_state = "ammo_swap_holo" else action_icon_state = "ammo_swap_normal" @@ -339,19 +339,27 @@ toggle_ammo_type(usr) /obj/item/weapon/gun/smartgun/proc/toggle_ammo_type(mob/user) - if(!iff_enabled) - to_chat(user, "[icon2html(src, usr)] Can't switch ammunition type when \the [src]'s fire restriction is disabled.") - return - switch(ammo_selection) - if(ammo_secondary) - to_chat(user, "[icon2html(src, usr)] You changed \the [src]'s ammo preparation procedures. You now fire holo-targeting rounds.") - ammo = ammo_selection = ammo_tertiary - if(ammo_tertiary) - to_chat(user, "[icon2html(src, usr)] You changed \the [src]'s ammo preparation procedures. You now fire highly precise rounds.") - ammo = ammo_selection = ammo_primary - if(ammo_primary) - to_chat(user, "[icon2html(src, usr)] You changed \the [src]'s ammo preparation procedures. You now fire armor shredding rounds.") - ammo = ammo_selection = ammo_secondary + if(!iff_enabled) + to_chat(user, "[icon2html(src, usr)] Can't switch ammunition type when \the [src]'s fire restriction is disabled.") + return + if(ammo_secondary) + to_chat(user, "[icon2html(src, usr)] You changed \the [src]'s ammo preparation procedures. You now fire holo-targeting rounds.") + ammo_selection = ammo_tertiary + else if(ammo_tertiary) + to_chat(user, "[icon2html(src, usr)] You changed \the [src]'s ammo preparation procedures. You now fire highly precise rounds.") + ammo_selection = ammo_primary + else + to_chat(user, "[icon2html(src, usr)] You changed \the [src]'s ammo preparation procedures. You now fire armor shredding rounds.") + ammo_selection = ammo_secondary + +/obj/item/weapon/gun/smartgun/replace_ammo() + ..() + if(ammo_secondary) + ammo_selection = ammo_secondary + else if(ammo_tertiary) + ammo_selection = ammo_tertiary + else + ammo_selection = ammo_primary /obj/item/weapon/gun/smartgun/proc/toggle_lethal_mode(mob/user) to_chat(user, "[icon2html(src, usr)] You [iff_enabled? "disable" : "enable"] \the [src]'s fire restriction. You will [iff_enabled ? "harm anyone in your way" : "target through IFF"].")