diff --git a/code/game/objects/items/weapons/vaurca_items.dm b/code/game/objects/items/weapons/vaurca_items.dm
index 805ce7a7d48..c167dc0ffb1 100644
--- a/code/game/objects/items/weapons/vaurca_items.dm
+++ b/code/game/objects/items/weapons/vaurca_items.dm
@@ -391,13 +391,6 @@
accuracy_wielded = -1
fire_delay_wielded = 1
-/obj/item/gun/launcher/crossbow/vaurca/update_icon()
- if(wielded)
- item_state = "gaussrifle-wielded"
- else
- item_state = "gaussrifle"
- update_held_icon()
-
/obj/item/gun/launcher/crossbow/vaurca/consume_next_projectile(mob/user=null)
return bolt
diff --git a/code/modules/custom_ka/core.dm b/code/modules/custom_ka/core.dm
index e7b8e73c73d..25835cbc80b 100644
--- a/code/modules/custom_ka/core.dm
+++ b/code/modules/custom_ka/core.dm
@@ -73,14 +73,6 @@
/obj/item/gun/custom_ka/can_wield()
return 1
-/obj/item/gun/custom_ka/toggle_wield()
- ..()
- if(wielded)
- item_state = "[initial(item_state)]_w"
- else
- item_state = initial(item_state)
- update_held_icon()
-
/obj/item/gun/custom_ka/pickup(mob/user)
..()
if(can_wield())
@@ -312,12 +304,6 @@
else
name = initial(name)
- if(wielded)
- item_state = "[initial(item_state)]_w"
- else
- item_state = initial(item_state)
- update_held_icon()
-
/obj/item/gun/custom_ka/proc/update_stats()
//pls don't bully me for this code
damage_increase = initial(damage_increase)
diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm
index 2080f38086a..7ffa56d8eb5 100644
--- a/code/modules/projectiles/gun.dm
+++ b/code/modules/projectiles/gun.dm
@@ -169,6 +169,16 @@
safety_overlay = image(gun_gui_icons,"[safety()]")
add_overlay(safety_overlay, TRUE)
+ if(is_wieldable)
+ if(wielded)
+ var/list/gun_states = icon_states(icon)
+ if(("[item_state]-wielded_lh" in gun_states) || ("[item_state]-wielded_rh" in gun_states))
+ item_state = "[item_state]-wielded"
+ else
+ item_state = replacetext(item_state,"-wielded","")
+
+ update_held_icon()
+
//Checks whether a given mob can use the gun
//Any checks that shouldn't result in handle_click_empty() being called if they fail should go here.
//Otherwise, if you want handle_click_empty() to be called, check in consume_next_projectile() and return null there.
diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm
index b39c0204732..4b3824e34f0 100644
--- a/code/modules/projectiles/guns/energy.dm
+++ b/code/modules/projectiles/guns/energy.dm
@@ -137,7 +137,6 @@
return
/obj/item/gun/energy/update_icon()
- ..()
if(charge_meter && power_supply && power_supply.maxcharge)
var/ratio = power_supply.charge / power_supply.maxcharge
var/icon_state_ratio = ""
@@ -160,7 +159,8 @@
else
icon_state = "[initial(icon_state)][icon_state_ratio]"
item_state = "[initial(item_state)][item_state_ratio]"
- update_held_icon()
+
+ ..()
/obj/item/gun/energy/handle_post_fire()
..()
diff --git a/code/modules/projectiles/guns/energy/blaster.dm b/code/modules/projectiles/guns/energy/blaster.dm
index 6aae284bd71..47131da5545 100644
--- a/code/modules/projectiles/guns/energy/blaster.dm
+++ b/code/modules/projectiles/guns/energy/blaster.dm
@@ -103,14 +103,6 @@
is_wieldable = TRUE
-/obj/item/gun/energy/blaster/rifle/update_icon()
- ..()
- if(wielded)
- item_state = "blaster_rifle-wielded"
- else
- item_state = initial(item_state)
- update_held_icon()
-
/obj/item/gun/energy/blaster/rifle/verb/scope()
set category = "Object"
set name = "Use Scope"
diff --git a/code/modules/projectiles/guns/energy/crank.dm b/code/modules/projectiles/guns/energy/crank.dm
index 0a2e65493f4..8610f5d000e 100644
--- a/code/modules/projectiles/guns/energy/crank.dm
+++ b/code/modules/projectiles/guns/energy/crank.dm
@@ -4,6 +4,7 @@
icon = 'icons/obj/guns/icelance.dmi'
icon_state = "icelance"
item_state = "icelance"
+ has_item_ratio = FALSE
fire_sound = 'sound/weapons/laser1.ogg'
max_shots = 3
accuracy = -1
@@ -51,12 +52,4 @@
is_charging = FALSE
/obj/item/gun/energy/rifle/icelance/get_cell()
- return DEVICE_NO_CELL
-
-/obj/item/gun/energy/rifle/icelance/update_icon()
- ..()
- if(wielded)
- item_state = "icelance-wielded"
- else
- item_state = initial(item_state)
- update_held_icon()
+ return DEVICE_NO_CELL
\ No newline at end of file
diff --git a/code/modules/projectiles/guns/energy/laser.dm b/code/modules/projectiles/guns/energy/laser.dm
index 6930cb1b2ff..c990ee22712 100644
--- a/code/modules/projectiles/guns/energy/laser.dm
+++ b/code/modules/projectiles/guns/energy/laser.dm
@@ -202,14 +202,6 @@ obj/item/gun/energy/retro
turret_is_lethal = TRUE
turret_sprite_set = "laser"
-/obj/item/gun/energy/laser/shotgun/update_icon()
- ..()
- if(wielded)
- item_state = "[initial(icon_state)]-wielded"
- else
- item_state = initial(item_state)
- update_held_icon()
-
/obj/item/gun/energy/laser/shotgun/research
name = "expedition shotgun"
desc = "A Nanotrasen designed laser weapon, designed to split a single amplified beam four times. This one is marked for expeditionary use."
diff --git a/code/modules/projectiles/guns/energy/modular.dm b/code/modules/projectiles/guns/energy/modular.dm
index f9d0e301cad..2de908788f6 100644
--- a/code/modules/projectiles/guns/energy/modular.dm
+++ b/code/modules/projectiles/guns/energy/modular.dm
@@ -52,17 +52,11 @@
/obj/item/gun/energy/laser/prototype/update_icon()
..()
- if(origin_chassis == CHASSIS_LARGE)
- if(wielded)
- item_state = "large_3_wielded"
- else
- item_state = "large_3"
underlays.Cut()
if(length(gun_mods))
for(var/obj/item/laser_components/mod in gun_mods)
if(mod.gun_overlay)
underlays += mod.gun_overlay
- update_held_icon()
underlays.Cut()
for(var/v in gun_mods)
var/obj/item/laser_components/modifier/mod = v
diff --git a/code/modules/projectiles/guns/energy/rifle.dm b/code/modules/projectiles/guns/energy/rifle.dm
index 19cea29aa72..835f6a0c750 100644
--- a/code/modules/projectiles/guns/energy/rifle.dm
+++ b/code/modules/projectiles/guns/energy/rifle.dm
@@ -3,8 +3,8 @@
desc = "A Nanotrasen designed energy-based rifle with two settings: Stun and Kill."
desc_fluff = "The NT ER-2 is an energy rifle developed and produced by Nanotrasen. Widely produced and sold across the galaxy. Designed to both stun and kill with concentrated energy blasts of varying strengths based on the fire mode, focused through a crystal lens. Considered to be a dual-purpose rifle with prolonged combat capability."
icon = 'icons/obj/guns/erifle.dmi'
- icon_state = "eriflestun100"
- icon_state = "eriflestun100"
+ icon_state = "eriflestun"
+ item_state = "eriflestun"
fire_sound = 'sound/weapons/Taser.ogg'
slot_flags = SLOT_BACK
w_class = ITEMSIZE_LARGE
@@ -35,15 +35,6 @@
list(mode_name="lethal", projectile_type=/obj/item/projectile/beam, modifystate="eriflekill", fire_sound='sound/weapons/laser1.ogg')
)
-/obj/item/gun/energy/rifle/update_icon()
- ..()
- if(wielded)
- item_state = "[initial(icon_state)]-wielded"
- else
- item_state = initial(item_state)
- update_held_icon()
-
-
/obj/item/gun/energy/rifle/laser
name = "laser rifle"
desc = "A Nanotrasen designed laser weapon, designed to kill with concentrated energy blasts."
@@ -67,14 +58,6 @@
firemodes = list()
modifystate = null
-/obj/item/gun/energy/rifle/laser/update_icon()
- ..()
- if(wielded)
- item_state = "[initial(icon_state)]-wielded"
- else
- item_state = initial(item_state)
- update_held_icon()
-
/obj/item/gun/energy/rifle/laser/heavy
name = "laser cannon"
desc = "A nanotrasen designed laser cannon capable of acting as a powerful support weapon."
diff --git a/code/modules/projectiles/guns/launcher/harpoon.dm b/code/modules/projectiles/guns/launcher/harpoon.dm
index e4a281f5b01..0df2a246b8c 100644
--- a/code/modules/projectiles/guns/launcher/harpoon.dm
+++ b/code/modules/projectiles/guns/launcher/harpoon.dm
@@ -32,11 +32,8 @@
/obj/item/gun/launcher/harpoon/update_icon()
icon_state = "[initial(icon_state)]-[harpoons.len]"
- if(wielded)
- item_state = "[initial(item_state)]-[harpoons.len]-w"
- else
- item_state = "[initial(icon_state)]-[harpoons.len]"
- update_held_icon()
+ item_state = "[initial(item_state)]-[harpoons.len]"
+ ..()
/obj/item/gun/launcher/harpoon/special_check(mob/user)
if(!wielded)
diff --git a/code/modules/projectiles/guns/projectile/automatic.dm b/code/modules/projectiles/guns/projectile/automatic.dm
index 3c6f8eec6c4..820229bbaf1 100644
--- a/code/modules/projectiles/guns/projectile/automatic.dm
+++ b/code/modules/projectiles/guns/projectile/automatic.dm
@@ -143,11 +143,6 @@
/obj/item/gun/projectile/automatic/rifle/sts35/update_icon()
..()
icon_state = (ammo_magazine)? "arifle" : "arifle-empty"
- if(wielded)
- item_state = (ammo_magazine)? "arifle-wielded" : "arifle-wielded-empty"
- else
- item_state = (ammo_magazine)? "arifle" : "arifle-empty"
- update_held_icon()
/obj/item/gun/projectile/automatic/rifle/sol
name = "battle rifle"
@@ -167,12 +162,6 @@
icon_state = "battlerifle"
else
icon_state = "battlerifle-empty"
- if(wielded)
- item_state = "battlerifle-wielded"
- else
- item_state = "battlerifle"
- update_held_icon()
- return
/datum/firemode/z8
var/use_launcher = 0
@@ -240,12 +229,6 @@
icon_state = "carbine"
else
icon_state = "carbine-empty"
- if(wielded)
- item_state = "carbine-wielded"
- else
- item_state = "carbine"
- update_held_icon()
- return
/obj/item/gun/projectile/automatic/rifle/z8/examine(mob/user)
..()
@@ -310,10 +293,7 @@
/obj/item/gun/projectile/automatic/rifle/l6_saw/update_icon()
icon_state = "l6[cover_open ? "open" : "closed"][ammo_magazine ? round(ammo_magazine.stored_ammo.len*2, 25) : "-empty"]"
- if(wielded)
- item_state = "l6closedmag-wielded"
- else
- item_state = initial(item_state)
+ ..()
/obj/item/gun/projectile/automatic/rifle/l6_saw/load_ammo(var/obj/item/A, mob/user)
if(!cover_open)
@@ -355,14 +335,6 @@
knife_x_offset = 23
knife_y_offset = 14
-/obj/item/gun/projectile/automatic/rifle/adhomian/update_icon()
- ..()
- if(wielded)
- item_state = "tsarrayut-wielded"
- else
- item_state = "tsarrayut"
- update_held_icon()
-
/obj/item/gun/projectile/automatic/tommygun
name = "submachine gun"
desc = "An adhomian made submachine gun. Uses .45 rounds."
@@ -485,4 +457,4 @@
/obj/item/gun/projectile/automatic/rifle/shotgun/update_icon()
..()
- icon_state = (ammo_magazine)? "assaultshotgun" : "assaultshotgun-empty"
+ icon_state = (ammo_magazine)? "assaultshotgun" : "assaultshotgun-empty"
\ No newline at end of file
diff --git a/code/modules/projectiles/guns/projectile/cannon.dm b/code/modules/projectiles/guns/projectile/cannon.dm
index f3d528de411..0cebef4f98b 100644
--- a/code/modules/projectiles/guns/projectile/cannon.dm
+++ b/code/modules/projectiles/guns/projectile/cannon.dm
@@ -22,14 +22,6 @@
found in museums and forgotten warehouses were adapted into portable weapons, combining modern and ancient tajaran technology. This weapon is usually found in the hands of the \
sailors and marines of the Royal Navy."
-/obj/item/gun/projectile/cannon/update_icon()
- if(wielded)
- item_state = "cannon-wielded"
- else
- item_state = "cannon"
- update_held_icon()
-
-
/obj/item/gun/projectile/cannon/special_check(mob/user)
if(!wielded)
to_chat(user, "You can't fire without stabilizing \the [src]!")
@@ -62,18 +54,12 @@
causing the annihilation of the military base of Quizosa. The nuclear launcher was created by republican scientists as way to deploy this destructive force while on the field."
/obj/item/gun/projectile/nuke/update_icon()
+ ..()
if(ammo_magazine)
icon_state = "blockbuster-[(ammo_magazine.stored_ammo.len)]"
else
icon_state = "blockbuster-0"
- if(wielded)
- item_state = "blockbuster-wielded"
- else
- item_state = "blockbuster"
-
- update_held_icon()
-
/obj/item/gun/projectile/nuke/special_check(mob/user)
if(!wielded)
to_chat(user, "You can't fire without stabilizing \the [src]!")
diff --git a/code/modules/projectiles/guns/projectile/musket.dm b/code/modules/projectiles/guns/projectile/musket.dm
index b59377a1bb2..1342c72ce46 100644
--- a/code/modules/projectiles/guns/projectile/musket.dm
+++ b/code/modules/projectiles/guns/projectile/musket.dm
@@ -35,13 +35,6 @@
var/has_powder = FALSE
-/obj/item/gun/projectile/musket/update_icon()
- if(wielded)
- item_state = "musket-wielded"
- else
- item_state = "musket"
- update_held_icon()
-
/obj/item/gun/projectile/musket/special_check(mob/user)
if(!has_powder)
to_chat(user, SPAN_WARNING("\The [src] is not loaded with gunpowder!"))
@@ -82,4 +75,4 @@
amount_per_transfer_from_this = 5
possible_transfer_amounts = list(5)
volume = 30
- reagents_to_add = list(/datum/reagent/gunpowder = 30)
+ reagents_to_add = list(/datum/reagent/gunpowder = 30)
\ No newline at end of file
diff --git a/code/modules/projectiles/guns/projectile/plasma.dm b/code/modules/projectiles/guns/projectile/plasma.dm
index 66c0bd417e6..824f8650fa2 100644
--- a/code/modules/projectiles/guns/projectile/plasma.dm
+++ b/code/modules/projectiles/guns/projectile/plasma.dm
@@ -22,7 +22,6 @@
else
icon_state = "[initial(icon_state)]-empty"
-
/obj/item/gun/projectile/plasma/bolter
name = "plasma bolter"
desc = "A miniaturized, less efficient version of the infamous plasma slammer. Sacrifices much of its power for a more compact frame."
@@ -47,4 +46,3 @@
use_external_power = TRUE
self_recharge = TRUE
projectile_type = /obj/item/projectile/plasma
-
diff --git a/code/modules/projectiles/guns/projectile/rifle.dm b/code/modules/projectiles/guns/projectile/rifle.dm
index 69a397143f2..42b1dbf79cf 100644
--- a/code/modules/projectiles/guns/projectile/rifle.dm
+++ b/code/modules/projectiles/guns/projectile/rifle.dm
@@ -13,7 +13,6 @@
rack_sound = 'sound/weapons/riflebolt.ogg'
rack_verb = "pull back the bolt on"
- has_wield_state = TRUE
can_bayonet = TRUE
knife_x_offset = 23
@@ -31,7 +30,6 @@
slot_flags &= ~SLOT_BACK
slot_flags |= (SLOT_BELT|SLOT_HOLSTER)
can_bayonet = FALSE
- has_wield_state = FALSE
if(bayonet)
qdel(bayonet)
bayonet = null
@@ -51,7 +49,6 @@
accuracy = -2
slot_flags = SLOT_BELT|SLOT_HOLSTER
can_bayonet = FALSE
- has_wield_state = FALSE
/obj/item/gun/projectile/contender
name = "pocket rifle"
@@ -254,14 +251,6 @@
..()
icon_state = (ammo_magazine)? "gauss_thumper" : "gauss_thumper-e"
- if(wielded)
- item_state = "gauss_thumper-wielded"
- else
- item_state = "gauss_thumper"
-
- update_held_icon()
- return
-
/obj/item/gun/energy/gauss/mounted/mech
name = "heavy gauss cannon"
desc = "An outdated and power hungry gauss cannon, modified to deliver high explosive rounds at high velocities."
diff --git a/code/modules/projectiles/guns/projectile/shotgun.dm b/code/modules/projectiles/guns/projectile/shotgun.dm
index 1da5c2c571f..e02a26a9ca9 100644
--- a/code/modules/projectiles/guns/projectile/shotgun.dm
+++ b/code/modules/projectiles/guns/projectile/shotgun.dm
@@ -56,7 +56,6 @@
fire_sound = 'sound/weapons/gunshot/gunshot_shotgun2.ogg'
is_wieldable = TRUE
var/recentpump = 0 // to prevent spammage
- var/has_wield_state = TRUE
var/rack_sound = 'sound/weapons/shotgun_pump.ogg'
var/rack_verb = "pump"
@@ -91,14 +90,6 @@
update_maptext()
update_icon()
-/obj/item/gun/projectile/shotgun/pump/update_icon()
- ..()
- if(wielded && has_wield_state)
- item_state = "[icon_state]-wielded"
- else
- item_state = "[icon_state]"
- update_held_icon()
-
/obj/item/gun/projectile/shotgun/pump/combat
name = "combat shotgun"
desc = "Built for close quarters combat, the Hephaestus Industries KS-40 is widely regarded as a weapon of choice for repelling boarders."
@@ -160,14 +151,6 @@
if(new_mode)
to_chat(user, SPAN_NOTICE("\The [src] is now set to [new_mode.name]."))
-/obj/item/gun/projectile/shotgun/doublebarrel/update_icon()
- ..()
- if(wielded && has_wield_state)
- item_state = "[icon_state]-wielded"
- else
- item_state = "[icon_state]"
- update_held_icon()
-
/obj/item/gun/projectile/shotgun/doublebarrel/pellet
ammo_type = /obj/item/ammo_casing/shotgun/pellet
@@ -249,4 +232,4 @@
if(folded)
toggle_folded(user)
return FALSE
- return ..()
+ return ..()
\ No newline at end of file
diff --git a/code/modules/projectiles/guns/projectile/sniper.dm b/code/modules/projectiles/guns/projectile/sniper.dm
index 607ae04b515..b3cceb25542 100644
--- a/code/modules/projectiles/guns/projectile/sniper.dm
+++ b/code/modules/projectiles/guns/projectile/sniper.dm
@@ -32,15 +32,11 @@
accuracy_wielded = -1
/obj/item/gun/projectile/heavysniper/update_icon()
+ ..()
if(bolt_open)
icon_state = "heavysniper-open"
else
icon_state = "heavysniper"
- if(wielded)
- item_state = "heavysniper-wielded"
- else
- item_state = "heavysniper"
- update_held_icon()
/obj/item/gun/projectile/heavysniper/attack_self(mob/user as mob)
bolt_open = !bolt_open
@@ -108,17 +104,13 @@
has_scope = FALSE
/obj/item/gun/projectile/heavysniper/unathi/update_icon()
+ ..()
if(bolt_open && length(loaded))
icon_state = "slugger-open-loaded"
else if(bolt_open && !length(loaded))
icon_state = "slugger-open"
else
icon_state = "slugger"
- if(wielded)
- item_state = "slugger-wielded"
- else
- item_state = "slugger"
- update_held_icon()
/obj/item/gun/projectile/heavysniper/unathi/handle_post_fire(mob/user)
..()
@@ -169,15 +161,11 @@
accuracy_wielded = 2
/obj/item/gun/projectile/heavysniper/tranq/update_icon()
+ ..()
if(bolt_open)
icon_state = "tranqsniper-open"
else
icon_state = "tranqsniper"
- if(wielded)
- item_state = "tranqsniper-wielded"
- else
- item_state = "tranqsniper"
- update_held_icon()
/obj/item/gun/projectile/dragunov
name = "marksman rifle"
@@ -211,19 +199,12 @@
accuracy_wielded = 1
/obj/item/gun/projectile/dragunov/update_icon()
-
+ ..()
if(ammo_magazine)
icon_state = "dragunov"
else
icon_state = "dragunov-empty"
- if(wielded)
- item_state = "dragunov-wielded"
- else
- item_state = "dragunov"
-
- update_held_icon()
-
/obj/item/gun/projectile/dragunov/special_check(mob/user)
if(!wielded)
to_chat(user, "You can't fire without stabilizing the rifle!")
@@ -278,10 +259,3 @@
toggle_scope(2.0, usr)
else
to_chat(usr, "You can't look through the scope without stabilizing the rifle!")
-
-/obj/item/gun/projectile/automatic/rifle/w556/update_icon()
- if(wielded)
- item_state = "w556rifle-wielded"
- else
- item_state = "w556rifle"
- update_held_icon()
diff --git a/html/changelogs/Ferner-201220-bugfix_wieldedrifle.yml b/html/changelogs/Ferner-201220-bugfix_wieldedrifle.yml
new file mode 100644
index 00000000000..fce3b9c2a5c
--- /dev/null
+++ b/html/changelogs/Ferner-201220-bugfix_wieldedrifle.yml
@@ -0,0 +1,4 @@
+author: Ferner
+delete-after: True
+changes:
+ - bugfix: "Fixed the energy rifle and some other wieldable guns occasionally going invisible."
\ No newline at end of file
diff --git a/icons/obj/guns/erifle.dmi b/icons/obj/guns/erifle.dmi
index 888b825882f..db7ed723cf2 100644
Binary files a/icons/obj/guns/erifle.dmi and b/icons/obj/guns/erifle.dmi differ
diff --git a/icons/obj/guns/harpoon.dmi b/icons/obj/guns/harpoon.dmi
index 6b4fdbd04e4..b38185dcd07 100644
Binary files a/icons/obj/guns/harpoon.dmi and b/icons/obj/guns/harpoon.dmi differ
diff --git a/icons/obj/guns/modular_laser.dmi b/icons/obj/guns/modular_laser.dmi
index e06e105f238..9c3ebc06d08 100644
Binary files a/icons/obj/guns/modular_laser.dmi and b/icons/obj/guns/modular_laser.dmi differ
diff --git a/icons/obj/kinetic_accelerators.dmi b/icons/obj/kinetic_accelerators.dmi
index cd6dda51eb1..07e492d0064 100644
Binary files a/icons/obj/kinetic_accelerators.dmi and b/icons/obj/kinetic_accelerators.dmi differ