diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index c535f53a753..9eaced2f3cc 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -324,10 +324,10 @@
//the mob M is attempting to equip this item into the slot passed through as 'slot'. Return 1 if it can do this and 0 if it can't.
//If you are making custom procs but would like to retain partial or complete functionality of this one, include a 'return ..()' to where you want this to happen.
-//Set disable_warning to 1 if you wish it to not give you outputs.
+//Set disable_warning to 1 if you wish it to not give you outputs.
/obj/item/proc/mob_can_equip(mob/M, slot, disable_warning = 0)
if(!M)
- return 0
+ return 0
return M.can_equip(src, slot, disable_warning)
@@ -390,42 +390,34 @@
(H.glasses && H.glasses.flags & GLASSESCOVERSEYES) \
))
// you can't stab someone in the eyes wearing a mask!
- user << "\red You're going to need to remove that mask/helmet/glasses first."
+ user << "You're going to need to remove that mask/helmet/glasses first!"
return
if(istype(M, /mob/living/carbon/alien) || istype(M, /mob/living/carbon/slime))//Aliens don't have eyes./N slimes also don't have eyes!
- user << "\red You cannot locate any eyes on this creature!"
+ user << "You cannot locate any eyes on this creature!"
return
- user.attack_log += "\[[time_stamp()]\] Attacked [key_name(M)] with [src.name] (INTENT: [uppertext(user.a_intent)])"
- M.attack_log += "\[[time_stamp()]\] Attacked by [key_name(user)] with [src.name] (INTENT: [uppertext(user.a_intent)])"
- if(M.ckey)
- msg_admin_attack("[key_name_admin(user)] attacked [key_name_admin(M)] with [src.name] (INTENT: [uppertext(user.a_intent)])") //BS12 EDIT ALG
-
if(!iscarbon(user))
M.LAssailant = null
else
M.LAssailant = user
src.add_fingerprint(user)
- //if((CLUMSY in user.mutations) && prob(50))
- // M = user
- /*
- M << "\red You stab yourself in the eye."
- M.sdisabilities |= BLIND
- M.weakened += 4
- M.adjustBruteLoss(10)
- */
+
+ playsound(loc, src.hitsound, 30, 1, -1)
+
if(M != user)
- for(var/mob/O in (viewers(M) - user - M))
- O.show_message("\red [M] has been stabbed in the eye with [src] by [user].", 1)
- M << "\red [user] stabs you in the eye with [src]!"
- user << "\red You stab [M] in the eye with [src]!"
+ M.visible_message("[user] has stabbed [M] in the eye with [src]!", \
+ "[user] stabs you in the eye with [src]!")
+ user.do_attack_animation(M)
else
user.visible_message( \
- "\red [user] has stabbed themself with [src]!", \
- "\red You stab yourself in the eyes with [src]!" \
+ "[user] has stabbed themself in the eyes with [src]!", \
+ "You stab yourself in the eyes with [src]!" \
)
+
+ add_logs(M, user, "attacked", "[src.name]", "(INTENT: [uppertext(user.a_intent)])")
+
if(istype(H))
var/obj/item/organ/eyes/eyes = H.internal_organs_by_name["eyes"]
if(!eyes)
@@ -434,17 +426,17 @@
if(eyes.damage >= eyes.min_bruised_damage)
if(M.stat != 2)
if(!(eyes.status & ORGAN_ROBOT) || !(eyes.status & ORGAN_ASSISTED)) //robot eyes bleeding might be a bit silly
- M << "\red Your eyes start to bleed profusely!"
+ M << "Your eyes start to bleed profusely!"
if(prob(50))
if(M.stat != 2)
- M << "\red You drop what you're holding and clutch at your eyes!"
+ M << "You drop what you're holding and clutch at your eyes!"
M.drop_item()
M.eye_blurry += 10
M.Paralyse(1)
M.Weaken(2)
if (eyes.damage >= eyes.min_broken_damage)
if(M.stat != 2)
- M << "\red You go blind!"
+ M << "You go blind!"
var/obj/item/organ/external/affecting = H.get_organ("head")
if(affecting.take_damage(7))
H.UpdateDamageIcon()
diff --git a/code/game/objects/items/weapons/kitchen.dm b/code/game/objects/items/weapons/kitchen.dm
index 64a5ad53948..907690caae9 100644
--- a/code/game/objects/items/weapons/kitchen.dm
+++ b/code/game/objects/items/weapons/kitchen.dm
@@ -25,6 +25,7 @@
flags = CONDUCT
origin_tech = "materials=1"
attack_verb = list("attacked", "stabbed", "poked")
+ hitsound = 'sound/weapons/bladeslice.ogg'
sharp = 0
var/loaded //Descriptive string for currently loaded food object.
@@ -110,8 +111,8 @@
if ((CLUMSY in user.mutations) && prob(50))
user << "\red You accidentally cut yourself with the [src]."
user.take_organ_damage(20)
+ playsound(loc, 'sound/weapons/bladeslice.ogg', 50, 1, -1)
return
- playsound(loc, 'sound/weapons/bladeslice.ogg', 50, 1, -1)
return ..()
/obj/item/weapon/kitchen/utensil/pknife
@@ -121,14 +122,6 @@
force = 10.0
throwforce = 10.0
-/obj/item/weapon/kitchen/utensil/knife/attack(target as mob, mob/living/user as mob)
- if ((CLUMSY in user.mutations) && prob(50))
- user << "\red You somehow managed to cut yourself with the [src]."
- user.take_organ_damage(20)
- return
- playsound(loc, 'sound/weapons/bladeslice.ogg', 50, 1, -1)
- return ..()
-
/*
* Kitchen knives
*/
@@ -148,6 +141,7 @@
materials = list(MAT_METAL=12000)
origin_tech = "materials=1"
attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
+ hitsound = 'sound/weapons/bladeslice.ogg'
suicide_act(mob/user)
viewers(user) << pick("[user] is slitting \his wrists with the [src.name]! It looks like \he's trying to commit suicide.", \
@@ -190,21 +184,18 @@
materials = list(MAT_METAL=12000)
origin_tech = "materials=1"
attack_verb = list("cleaved", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
+ hitsound = 'sound/weapons/bladeslice.ogg'
sharp = 1
edge = 1
/obj/item/weapon/butch/meatcleaver
name = "Meat Cleaver"
icon_state = "mcleaver"
+ item_state = "butch"
desc = "A huge thing used for chopping and chopping up meat. This includes clowns and clown-by-products."
force = 25.0
throwforce = 15.0
no_embed = 1
-
-/obj/item/weapon/butch/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
- playsound(loc, 'sound/weapons/bladeslice.ogg', 50, 1, -1)
- return ..()
-
/*
* Rolling Pins
*/
diff --git a/code/game/objects/items/weapons/melee/energy.dm b/code/game/objects/items/weapons/melee/energy.dm
index c442b998991..040a42b4cb8 100644
--- a/code/game/objects/items/weapons/melee/energy.dm
+++ b/code/game/objects/items/weapons/melee/energy.dm
@@ -42,6 +42,10 @@
w_class = initial(w_class)
playsound(user, 'sound/weapons/saberoff.ogg', 35, 1) //changed it from 50% volume to 35% because deafness
user << "[src] can now be concealed."
+ if(istype(user,/mob/living/carbon/human))
+ var/mob/living/carbon/human/H = user
+ H.update_inv_l_hand()
+ H.update_inv_r_hand()
add_fingerprint(user)
return
@@ -173,9 +177,9 @@
// Updating overlays, copied from welder code.
// I tried calling attack_self twice, which looked cool, except it somehow didn't update the overlays!!
if(user.r_hand == src)
- user.update_inv_r_hand(0)
+ user.update_inv_r_hand()
else if(user.l_hand == src)
- user.update_inv_l_hand(0)
+ user.update_inv_l_hand()
else
user << "It's already fabulous!"
diff --git a/code/game/objects/items/weapons/swords_axes_etc.dm b/code/game/objects/items/weapons/swords_axes_etc.dm
index 876f0930a34..63f10e1d574 100644
--- a/code/game/objects/items/weapons/swords_axes_etc.dm
+++ b/code/game/objects/items/weapons/swords_axes_etc.dm
@@ -97,6 +97,9 @@
w_class = 2
force = 0 //not so robust now
attack_verb = list("hit", "poked")
-
+ if(istype(user,/mob/living/carbon/human))
+ var/mob/living/carbon/human/H = user
+ H.update_inv_l_hand()
+ H.update_inv_r_hand()
playsound(src.loc, 'sound/weapons/batonextend.ogg', 50, 1)
add_fingerprint(user)
diff --git a/html/changelogs/attack-fixes-fox-mccloud.yml b/html/changelogs/attack-fixes-fox-mccloud.yml
new file mode 100644
index 00000000000..ab3877699df
--- /dev/null
+++ b/html/changelogs/attack-fixes-fox-mccloud.yml
@@ -0,0 +1,13 @@
+
+author: Fox McCloud
+
+delete-after: True
+
+changes:
+ - bugfix: "Fixes the energy sword being invisible in-hand when turned on."
+ - bugfix: "Fixes the telebaton being invisible in-hand when extended."
+ - bugfix: "Fixes eye-stabbing not having an attack animation or hitsound."
+ - bugfix: "Fixes some kitchen utensils playing the wrong hit-sound and playing twice in some cases."
+ - bugfix: "Fixes the butcher cleaver sprite being backwards."
+ - bugfix: "Fixes the telebaton sprite being missing from the side."
+ - bugfix: "Fixes the meat cleaver being invisible in-hand."
\ No newline at end of file
diff --git a/icons/mob/inhands/items_lefthand.dmi b/icons/mob/inhands/items_lefthand.dmi
index 0bd148505c7..db12504dfc7 100644
Binary files a/icons/mob/inhands/items_lefthand.dmi and b/icons/mob/inhands/items_lefthand.dmi differ
diff --git a/icons/mob/inhands/items_righthand.dmi b/icons/mob/inhands/items_righthand.dmi
index 91976e05514..fdbfca0615c 100644
Binary files a/icons/mob/inhands/items_righthand.dmi and b/icons/mob/inhands/items_righthand.dmi differ