diff --git a/code/datums/autolathe/arms.dm b/code/datums/autolathe/arms.dm
index 2db7749aa0..2aeebe892a 100644
--- a/code/datums/autolathe/arms.dm
+++ b/code/datums/autolathe/arms.dm
@@ -416,7 +416,7 @@
/datum/category_item/autolathe/arms/knuckledusters
name = "knuckle dusters"
- path =/obj/item/weapon/material/knuckledusters
+ path =/obj/item/clothing/gloves/knuckledusters
hidden = 1
/datum/category_item/autolathe/arms/tacknife
diff --git a/code/game/objects/items/weapons/material/misc.dm b/code/game/objects/items/weapons/material/misc.dm
index 1ab2e74730..97cf8b33db 100644
--- a/code/game/objects/items/weapons/material/misc.dm
+++ b/code/game/objects/items/weapons/material/misc.dm
@@ -8,17 +8,6 @@
force_divisor = 0.3 // 18 with hardness 60 (steel)
attack_verb = list("jabbed","stabbed","ripped")
-/obj/item/weapon/material/knuckledusters
- name = "knuckle dusters"
- desc = "A pair of brass knuckles. Generally used to enhance the user's punches."
- icon_state = "knuckledusters"
- gender = PLURAL
- w_class = ITEMSIZE_SMALL
- force_divisor = 0.63
- dulled_divisor = 0.75 //It's a heavy bit of metal
- attack_verb = list("punched", "beaten", "struck")
- applies_material_colour = 0
-
/obj/item/weapon/material/knife/machete/hatchet
name = "hatchet"
desc = "A very sharp axe blade upon a short fibremetal handle. It has a long history of chopping things, but now it is used for chopping wood."
diff --git a/code/game/objects/random/random.dm b/code/game/objects/random/random.dm
index d1b30da151..18674db086 100644
--- a/code/game/objects/random/random.dm
+++ b/code/game/objects/random/random.dm
@@ -214,7 +214,7 @@
prob(6);/obj/item/weapon/material/butterflyhandle,
prob(6);/obj/item/weapon/material/wirerod,
prob(2);/obj/item/weapon/material/butterfly/switchblade,
- prob(2);/obj/item/weapon/material/knuckledusters,
+ prob(2);/obj/item/clothing/gloves/knuckledusters,
prob(1);/obj/item/weapon/material/knife/tacknife,
prob(1);/obj/item/clothing/suit/storage/vest/heavy/merc,
prob(1);/obj/item/weapon/beartrap,
diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm
index 4c20e9924e..16cc7f8eae 100644
--- a/code/modules/clothing/clothing.dm
+++ b/code/modules/clothing/clothing.dm
@@ -202,8 +202,10 @@
var/fingerprint_chance = 0 //How likely the glove is to let fingerprints through
var/obj/item/clothing/gloves/ring = null //Covered ring
var/mob/living/carbon/human/wearer = null //Used for covered rings when dropping
- var/glove_level = 2 //What "layer" the glove is on
- var/overgloves = 0 //Used by gauntlets and arm_guards
+ var/glove_level = 2 //What "layer" the glove is on
+ var/overgloves = 0 //Used by gauntlets and arm_guards
+ var/punch_force = 0 //How much damage do these gloves add to a punch?
+ var/punch_damtype = BRUTE //What type of damage does this make fists be?
body_parts_covered = HANDS
slot_flags = SLOT_GLOVES
attack_verb = list("challenged")
@@ -251,7 +253,7 @@
var/mob/living/carbon/human/H = user
if(slot && slot == slot_gloves)
- if(istype(H.gloves, /obj/item/clothing/gloves/ring))
+ if(H.gloves)
ring = H.gloves
if(ring.glove_level >= src.glove_level)
to_chat(user, "You are unable to wear \the [src] as \the [H.gloves] are in the way.")
@@ -261,6 +263,8 @@
H.drop_from_inventory(ring) //Remove the ring (or other under-glove item in the hand slot?) so you can put on the gloves.
ring.forceMove(src)
to_chat(user, "You slip \the [src] on over \the [src.ring].")
+ if(!(flags & THICKMATERIAL))
+ punch_force += ring.punch_force
else
ring = null
@@ -268,6 +272,7 @@
if(ring) //Put the ring back on if the check fails.
if(H.equip_to_slot_if_possible(ring, slot_gloves))
src.ring = null
+ punch_force = initial(punch_force)
return 0
wearer = H //TODO clean this when magboots are cleaned
@@ -284,6 +289,7 @@
if(!H.equip_to_slot_if_possible(ring, slot_gloves))
ring.forceMove(get_turf(src))
src.ring = null
+ punch_force = initial(punch_force)
wearer = null
/////////////////////////////////////////////////////////////////////
@@ -298,6 +304,7 @@
siemens_coefficient = 1
glove_level = 1
fingerprint_chance = 100
+ punch_force = 2
///////////////////////////////////////////////////////////////////////
//Head
diff --git a/code/modules/clothing/gloves/arm_guards.dm b/code/modules/clothing/gloves/arm_guards.dm
index 80a5cfd735..84f364e4d5 100644
--- a/code/modules/clothing/gloves/arm_guards.dm
+++ b/code/modules/clothing/gloves/arm_guards.dm
@@ -3,6 +3,7 @@
desc = "These arm guards will protect your hands and arms."
body_parts_covered = HANDS|ARMS
overgloves = 1
+ punch_force = 3
w_class = ITEMSIZE_NORMAL
/obj/item/clothing/gloves/arm_guard/mob_can_equip(var/mob/living/carbon/human/H, slot)
diff --git a/code/modules/clothing/gloves/gauntlets.dm b/code/modules/clothing/gloves/gauntlets.dm
index bc65252d38..b65884d3f9 100644
--- a/code/modules/clothing/gloves/gauntlets.dm
+++ b/code/modules/clothing/gloves/gauntlets.dm
@@ -11,6 +11,7 @@
desc = "These gloves go over regular gloves."
glove_level = 3
overgloves = 1
+ punch_force = 5
var/obj/item/clothing/gloves/gloves = null //Undergloves
/obj/item/clothing/gloves/gauntlets/mob_can_equip(mob/user)
diff --git a/code/modules/clothing/gloves/miscellaneous.dm b/code/modules/clothing/gloves/miscellaneous.dm
index 27db4424d7..7546d81651 100644
--- a/code/modules/clothing/gloves/miscellaneous.dm
+++ b/code/modules/clothing/gloves/miscellaneous.dm
@@ -95,6 +95,7 @@
icon_state = "work"
item_state = "wgloves"
force = 5
+ punch_force = 3
siemens_coefficient = 0.75
permeability_coefficient = 0.05
armor = list(melee = 30, bullet = 10, laser = 10, energy = 15, bomb = 20, bio = 0, rad = 0)
@@ -114,3 +115,15 @@
min_cold_protection_temperature = GLOVES_MIN_COLD_PROTECTION_TEMPERATURE
heat_protection = HANDS
max_heat_protection_temperature = GLOVES_MAX_HEAT_PROTECTION_TEMPERATURE
+
+/obj/item/clothing/gloves/knuckledusters
+ name = "knuckle dusters"
+ desc = "A pair of brass knuckles. Generally used to enhance the user's punches."
+ icon_state = "knuckledusters"
+ attack_verb = list("punched", "beaten", "struck")
+ flags = THICKMATERIAL // Stops rings from increasing hit strength
+ siemens_coefficient = 1
+ fingerprint_chance = 100
+ overgloves = 1
+ force = 5
+ punch_force = 5
diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm
index ec861d9a83..183b9a59e1 100644
--- a/code/modules/mob/living/carbon/human/human_attackhand.dm
+++ b/code/modules/mob/living/carbon/human/human_attackhand.dm
@@ -241,7 +241,14 @@
return 0
var/real_damage = rand_damage
+ var/hit_dam_type = attack.damage_type
real_damage += attack.get_unarmed_damage(H)
+ if(H.gloves && istype(H.gloves, /obj/item/clothing/gloves))
+ var/obj/item/clothing/gloves/G = H.gloves
+ real_damage += G.punch_force
+ hit_dam_type = G.punch_damtype
+ if(H.pulling_punches) //SO IT IS DECREED: PULLING PUNCHES WILL PREVENT THE ACTUAL DAMAGE FROM RINGS AND KNUCKLES, BUT NOT THE ADDED PAIN
+ hit_dam_type = AGONY
real_damage *= damage_multiplier
rand_damage *= damage_multiplier
if(HULK in H.mutations)
@@ -255,7 +262,7 @@
attack.apply_effects(H, src, armour, rand_damage, hit_zone)
// Finally, apply damage to target
- apply_damage(real_damage, (attack.deal_halloss ? HALLOSS : BRUTE), hit_zone, armour, soaked, sharp=attack.sharp, edge=attack.edge)
+ apply_damage(real_damage, hit_dam_type, hit_zone, armour, soaked, sharp=attack.sharp, edge=attack.edge)
if(I_DISARM)
M.attack_log += text("\[[time_stamp()]\] Disarmed [src.name] ([src.ckey])")
@@ -403,7 +410,7 @@
return 0
var/datum/gender/TU = gender_datums[user.get_visible_gender()]
-
+
if(user == src)
user.visible_message("\The [user] starts applying pressure to [TU.his] [organ.name]!", "You start applying pressure to your [organ.name]!")
else
diff --git a/code/modules/mob/living/carbon/human/unarmed_attack.dm b/code/modules/mob/living/carbon/human/unarmed_attack.dm
index 1c54a4258f..a7f80fb8f1 100644
--- a/code/modules/mob/living/carbon/human/unarmed_attack.dm
+++ b/code/modules/mob/living/carbon/human/unarmed_attack.dm
@@ -11,7 +11,7 @@ var/global/list/sparring_attack_cache = list()
var/sharp = 0
var/edge = 0
- var/deal_halloss
+ var/damage_type = BRUTE
var/sparring_variant_type = /datum/unarmed_attack/light_strike
var/eye_attack_text
@@ -131,7 +131,7 @@ var/global/list/sparring_attack_cache = list()
/datum/unarmed_attack/punch/show_attack(var/mob/living/carbon/human/user, var/mob/living/carbon/human/target, var/zone, var/attack_damage)
var/obj/item/organ/external/affecting = target.get_organ(zone)
var/organ = affecting.name
-
+
var/datum/gender/TU = gender_datums[user.get_visible_gender()]
var/datum/gender/TT = gender_datums[target.get_visible_gender()]
@@ -258,10 +258,10 @@ var/global/list/sparring_attack_cache = list()
if(5) user.visible_message("[pick("[user] landed a powerful stomp on", "[user] stomped down hard on", "[user] slammed [TU.his] [shoes ? copytext(shoes.name, 1, -1) : "foot"] down hard onto")] [target]'s [organ]!") //Devastated lol. No. We want to say that the stomp was powerful or forceful, not that it /wrought devastation/
/datum/unarmed_attack/light_strike
- deal_halloss = 3
attack_noun = list("tap","light strike")
attack_verb = list("tapped", "lightly struck")
- damage = 2
+ damage = 3
+ damage_type = AGONY
shredding = 0
damage = 0
sharp = 0
diff --git a/html/changelogs/ANEWBE CASTS FIST.yml b/html/changelogs/ANEWBE CASTS FIST.yml
new file mode 100644
index 0000000000..229458924d
--- /dev/null
+++ b/html/changelogs/ANEWBE CASTS FIST.yml
@@ -0,0 +1,37 @@
+################################
+# Example Changelog File
+#
+# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
+#
+# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
+# When it is, any changes listed below will disappear.
+#
+# Valid Prefixes:
+# bugfix
+# wip (For works in progress)
+# tweak
+# soundadd
+# sounddel
+# rscadd (general adding of nice things)
+# rscdel (general deleting of nice things)
+# imageadd
+# imagedel
+# maptweak
+# spellcheck (typo fixes)
+# experiment
+#################################
+
+# Your name.
+author: Anewbe
+
+# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
+delete-after: True
+
+# Any changes you've made. See valid prefix list above.
+# INDENT WITH TWO SPACES. NOT TABS. SPACES.
+# SCREW THIS UP AND IT WON'T WORK.
+# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
+# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
+changes:
+ - tweak: "RINGS AND CERTAIN GLOVES INCREASE PUNCHING DAMAGE."
+ - tweak: "BRASS KNUCKLES HAVE BEEN TURNED INTO GLOVES AND REBALANCED. THEY DO LESS DAMAGE PER HIT BECAUSE IT'S HARD TO DISARM A PAIR OF GLOVES."
diff --git a/icons/mob/hands.dmi b/icons/mob/hands.dmi
index f50c46167d..cc467f5df7 100644
Binary files a/icons/mob/hands.dmi and b/icons/mob/hands.dmi differ
diff --git a/icons/obj/clothing/gloves.dmi b/icons/obj/clothing/gloves.dmi
index bc4e1880c6..6fa2c8c23b 100644
Binary files a/icons/obj/clothing/gloves.dmi and b/icons/obj/clothing/gloves.dmi differ
diff --git a/icons/obj/weapons.dmi b/icons/obj/weapons.dmi
index d61006ba03..20ec01a737 100644
Binary files a/icons/obj/weapons.dmi and b/icons/obj/weapons.dmi differ