diff --git a/code/game/gamemodes/devil/true_devil/inventory.dm b/code/game/gamemodes/devil/true_devil/inventory.dm index 89a37d30b9f..52feb42e289 100644 --- a/code/game/gamemodes/devil/true_devil/inventory.dm +++ b/code/game/gamemodes/devil/true_devil/inventory.dm @@ -33,10 +33,8 @@ if(!l_state) l_state = l_hand.icon_state - var/image/l_hand_image = l_hand.build_worn_icon(state = l_state, default_layer = DEVIL_HANDS_LAYER, default_icon_file = l_hand.righthand_file, isinhands = TRUE) + var/image/l_hand_image = l_hand.build_worn_icon(state = l_state, default_layer = DEVIL_HANDS_LAYER, default_icon_file = l_hand.lefthand_file, isinhands = TRUE) - var/reflect = matrix(-1, 0, 0, 0, 1, 0) - l_hand_image.transform = reflect hands_overlays += l_hand_image if(client && hud_used && hud_used.hud_version != HUD_STYLE_NOHUD) diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 89e3cbecafa..48b5b3a107f 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -4,6 +4,7 @@ var/global/image/fire_overlay = image("icon" = 'icons/effects/fire.dmi', "icon_s name = "item" icon = 'icons/obj/items.dmi' var/item_state = null + var/lefthand_file = 'icons/mob/inhands/items_lefthand.dmi' var/righthand_file = 'icons/mob/inhands/items_righthand.dmi' //Dimensions of the icon file used when this item is worn, eg: hats.dmi diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index 013cfcbc604..9f0d5a25638 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -135,6 +135,7 @@ icon = 'icons/obj/guns/projectile.dmi' icon_state = "revolver" item_state = "gun" + lefthand_file = 'icons/mob/inhands/guns_lefthand.dmi' righthand_file = 'icons/mob/inhands/guns_righthand.dmi' flags = CONDUCT slot_flags = SLOT_BELT diff --git a/code/game/objects/items/weapons/pneumaticCannon.dm b/code/game/objects/items/weapons/pneumaticCannon.dm index 9f1f72797b3..a8701e24cb8 100644 --- a/code/game/objects/items/weapons/pneumaticCannon.dm +++ b/code/game/objects/items/weapons/pneumaticCannon.dm @@ -7,6 +7,7 @@ icon = 'icons/obj/pneumaticCannon.dmi' icon_state = "pneumaticCannon" item_state = "bulldog" + lefthand_file = 'icons/mob/inhands/guns_lefthand.dmi' righthand_file = 'icons/mob/inhands/guns_righthand.dmi' armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 60, acid = 50) var/maxWeightClass = 20 //The max weight of items that can fit into the cannon diff --git a/code/modules/admin/verbs/BrokenInhands.dm b/code/modules/admin/verbs/BrokenInhands.dm index 8b54874a9ab..e9122e9516a 100644 --- a/code/modules/admin/verbs/BrokenInhands.dm +++ b/code/modules/admin/verbs/BrokenInhands.dm @@ -3,13 +3,20 @@ for(var/A in typesof(/obj/item)) var/obj/item/O = new A( locate(1,1,1) ) if(!O) continue + var/icon/IL = new(O.lefthand_file) + var/list/Lstates = IL.IconStates() var/icon/IR = new(O.righthand_file) var/list/Rstates = IR.IconStates() var/icon/J = new(O.icon) var/list/istates = J.IconStates() + if(!Lstates.Find(O.icon_state) && !Lstates.Find(O.item_state)) + if(O.icon_state) + text += "[O.type] WANTS IN LEFT HAND CALLED\n\"[O.icon_state]\".\n" if(!Rstates.Find(O.icon_state) && !Rstates.Find(O.item_state)) if(O.icon_state) text += "[O.type] WANTS IN RIGHT HAND CALLED\n\"[O.icon_state]\".\n" + + if(O.icon_state) if(!istates.Find(O.icon_state)) text += "[O.type] MISSING NORMAL ICON CALLED\n\"[O.icon_state]\" IN \"[O.icon]\"\n" diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index 463ec6d13b7..c5c2f56f33a 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -11,6 +11,7 @@ var/visor_flags = 0 // flags that are added/removed when an item is adjusted up/down var/visor_flags_inv = 0 // same as visor_flags, but for flags_inv var/visor_flags_cover = 0 // same as above, but for flags_cover + lefthand_file = 'icons/mob/inhands/clothing_lefthand.dmi' righthand_file = 'icons/mob/inhands/clothing_righthand.dmi' var/alt_desc = null var/toggle_message = null diff --git a/code/modules/mob/living/carbon/update_icons.dm b/code/modules/mob/living/carbon/update_icons.dm index 0a6a95f747b..9feb1c1c2aa 100644 --- a/code/modules/mob/living/carbon/update_icons.dm +++ b/code/modules/mob/living/carbon/update_icons.dm @@ -75,12 +75,11 @@ if(!t_state) t_state = I.icon_state - var/image/standing = I.build_worn_icon(state = t_state, default_layer = HANDS_LAYER, default_icon_file = I.righthand_file, isinhands = TRUE) - - if(get_held_index_of_item(I) % 2 == 1) - var/reflect = matrix(-1, 0, 0, 0, 1, 0) - standing.transform = reflect + var/icon_file = I.lefthand_file + if(get_held_index_of_item(I) % 2 == 0) + icon_file = I.righthand_file + var/image/standing = I.build_worn_icon(state = t_state, default_layer = HANDS_LAYER, default_icon_file = icon_file, isinhands = TRUE) hands += standing overlays_standing[HANDS_LAYER] = hands diff --git a/code/modules/mob/living/simple_animal/friendly/drone/visuals_icons.dm b/code/modules/mob/living/simple_animal/friendly/drone/visuals_icons.dm index ae280cd96aa..95c18b53f40 100644 --- a/code/modules/mob/living/simple_animal/friendly/drone/visuals_icons.dm +++ b/code/modules/mob/living/simple_animal/friendly/drone/visuals_icons.dm @@ -51,13 +51,10 @@ if(!l_state) l_state = l_hand.icon_state - var/image/l_hand_image = l_hand.build_worn_icon(state = l_state, default_layer = DRONE_HANDS_LAYER, default_icon_file = l_hand.righthand_file, isinhands = TRUE) + var/image/l_hand_image = l_hand.build_worn_icon(state = l_state, default_layer = DRONE_HANDS_LAYER, default_icon_file = l_hand.lefthand_file, isinhands = TRUE) if(y_shift) l_hand_image.pixel_y += y_shift - var/reflect = matrix(-1, 0, 0, 0, 1, 0) - l_hand_image.transform = reflect - hands_overlays += l_hand_image if(client && hud_used && hud_used.hud_version != HUD_STYLE_NOHUD) diff --git a/code/modules/mob/living/simple_animal/guardian/guardian.dm b/code/modules/mob/living/simple_animal/guardian/guardian.dm index e5af5744748..0adbf952a7b 100644 --- a/code/modules/mob/living/simple_animal/guardian/guardian.dm +++ b/code/modules/mob/living/simple_animal/guardian/guardian.dm @@ -293,10 +293,8 @@ var/global/list/parasites = list() //all currently existing/living guardians if(!l_state) l_state = l_hand.icon_state - var/image/l_hand_image = l_hand.build_worn_icon(state = l_state, default_layer = GUARDIAN_HANDS_LAYER, default_icon_file = l_hand.righthand_file, isinhands = TRUE) + var/image/l_hand_image = l_hand.build_worn_icon(state = l_state, default_layer = GUARDIAN_HANDS_LAYER, default_icon_file = l_hand.lefthand_file, isinhands = TRUE) - var/reflect = matrix(-1, 0, 0, 0, 1, 0) - l_hand_image.transform = reflect hands_overlays += l_hand_image if(client && hud_used && hud_used.hud_version != HUD_STYLE_NOHUD) diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 181053033e3..63ef4d91839 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -38,6 +38,7 @@ var/current_skin = null //the skin choice if we had a reskin var/list/options = list() + lefthand_file = 'icons/mob/inhands/guns_lefthand.dmi' righthand_file = 'icons/mob/inhands/guns_righthand.dmi' var/obj/item/device/firing_pin/pin = /obj/item/device/firing_pin //standard firing pin for most guns diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index 3da1e030a80..58e7553de55 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -70,6 +70,7 @@ icon = 'icons/obj/bureaucracy.dmi' icon_state = "pen" item_state = "pen" + lefthand_file = 'icons/mob/inhands/items_lefthand.dmi' righthand_file = 'icons/mob/inhands/items_righthand.dmi' w_class = WEIGHT_CLASS_TINY diff --git a/code/modules/projectiles/guns/magic.dm b/code/modules/projectiles/guns/magic.dm index 1390310106a..12e1517083e 100644 --- a/code/modules/projectiles/guns/magic.dm +++ b/code/modules/projectiles/guns/magic.dm @@ -19,6 +19,7 @@ trigger_guard = TRIGGER_GUARD_ALLOW_ALL // Has no trigger at all, uses magic instead pin = /obj/item/device/firing_pin/magic + lefthand_file = 'icons/mob/inhands/items_lefthand.dmi' //not really a gun and some toys use these inhands righthand_file = 'icons/mob/inhands/items_righthand.dmi' /obj/item/weapon/gun/magic/afterattack(atom/target, mob/living/user, flag) diff --git a/icons/mob/inhands/clothing_lefthand.dmi b/icons/mob/inhands/clothing_lefthand.dmi new file mode 100644 index 00000000000..3c8c1767724 Binary files /dev/null and b/icons/mob/inhands/clothing_lefthand.dmi differ diff --git a/icons/mob/inhands/guns_lefthand.dmi b/icons/mob/inhands/guns_lefthand.dmi new file mode 100644 index 00000000000..fdb1fd88a01 Binary files /dev/null and b/icons/mob/inhands/guns_lefthand.dmi differ diff --git a/icons/mob/inhands/items_lefthand.dmi b/icons/mob/inhands/items_lefthand.dmi new file mode 100644 index 00000000000..46c7ef8d481 Binary files /dev/null and b/icons/mob/inhands/items_lefthand.dmi differ