diff --git a/code/modules/antagonists/changeling/powers/mutations.dm b/code/modules/antagonists/changeling/powers/mutations.dm
index 24288be078..9ff5ba7fe4 100644
--- a/code/modules/antagonists/changeling/powers/mutations.dm
+++ b/code/modules/antagonists/changeling/powers/mutations.dm
@@ -6,6 +6,10 @@
Shield
Armor
Tentacles
+ Hatterhat Additions:
+ claws! (glove slot)
+ jagged (thieves') claws
+ bone gauntlets for punching dudes
*/
@@ -89,7 +93,7 @@
return 1
var/mob/living/carbon/human/H = user
if(istype(H.wear_suit, suit_type) || istype(H.head, helmet_type))
- H.visible_message("[H] casts off [H.p_their()] [suit_name_simple]!", "We cast off our [suit_name_simple].", "You hear the organic matter ripping and tearing!")
+ H.visible_message("[H] casts off [H.p_their()] [suit_name_simple]!", "We cast off our [suit_name_simple].", "You hear organic matter ripping and tearing!")
H.temporarilyRemoveItemFromInventory(H.head, TRUE) //The qdel on dropped() takes care of it
H.temporarilyRemoveItemFromInventory(H.wear_suit, TRUE)
H.update_inv_wear_suit()
@@ -570,3 +574,153 @@
/obj/item/clothing/head/helmet/changeling/Initialize()
. = ..()
ADD_TRAIT(src, TRAIT_NODROP, CHANGELING_TRAIT)
+
+
+
+/***************************************\
+|*****************CLAWS*****************|
+\***************************************/
+
+/obj/effect/proc_holder/changeling/gloves
+ name = "Mangled Claws"
+ desc = "Go tell a coder if you see this"
+ helptext = "Yell at Hatterhat, for fucking up Miauw and/or Perakp's work"
+ chemical_cost = 1000
+ dna_cost = -1
+
+ var/glove_type = /obj/item
+ var/glove_name_simple = " " // keep these plural bro
+ var/recharge_slowdown = 0
+ var/blood_on_castoff = 0
+
+/obj/effect/proc_holder/changeling/gloves/try_to_sting(mob/user, mob/target)
+ if(check_gloves(user))
+ return
+ var/mob/living/carbon/human/H = user
+ ..(H, target)
+
+//checks if we already have claws and casts it off
+/obj/effect/proc_holder/changeling/gloves/proc/check_gloves(mob/user)
+ var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling)
+ if(!ishuman(user) || !changeling)
+ return 1
+ var/mob/living/carbon/human/H = user
+ if(istype(H.gloves, glove_type))
+ H.visible_message("[H] casts off [H.p_their()] [glove_name_simple]!", "We cast off our [glove_name_simple].", "You hear organic matter ripping and tearing!")
+ H.temporarilyRemoveItemFromInventory(H.gloves, TRUE) //The qdel on dropped() takes care of it
+ H.update_inv_gloves()
+
+ if(blood_on_castoff)
+ H.add_splatter_floor()
+ playsound(H.loc, 'sound/effects/splat.ogg', 50, 1) //So real sounds
+
+ changeling.chem_recharge_slowdown -= recharge_slowdown
+ return 1
+
+/obj/effect/proc_holder/changeling/gloves/on_refund(mob/user)
+ if(!ishuman(user))
+ return
+ action.Remove(user)
+ var/mob/living/carbon/human/H = user
+ check_gloves(H)
+
+/obj/effect/proc_holder/changeling/gloves/sting_action(mob/living/carbon/human/user)
+ if(!user.canUnEquip(user.gloves))
+ to_chat(user, "\the [user.gloves] is stuck to your body, you cannot grow [glove_name_simple] over it!")
+ return
+
+ user.dropItemToGround(user.gloves)
+
+ user.equip_to_slot_if_possible(new glove_type(user), SLOT_GLOVES, 1, 1, 1)
+
+ var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling)
+ changeling.chem_recharge_slowdown += recharge_slowdown
+ return TRUE
+
+
+/obj/effect/proc_holder/changeling/gloves/vulture
+ name = "Jagged Claws"
+ desc = "We turn our hands into grotesque claws, which are better at prying things off our victims."
+ helptext = "These grotesque, bird-like claws are better at stealing things off of people, and cannot be used in lesser form. This ability is somewhat loud, and carries a small risk of our blood gaining violent sensitivity to heat."
+ chemical_cost = 15
+ dna_cost = 1
+ loudness = 1
+ req_human = 1
+ action_icon = 'icons/mob/actions/actions_changeling.dmi'
+ action_icon_state = "ling_armor"
+ action_background_icon_state = "bg_ling"
+
+ glove_type = /obj/item/clothing/gloves/claws/vulture // prying shit off dead/soon to be dead dudes!
+ glove_name_simple = "jagged claws"
+
+
+/obj/item/clothing/gloves/claws
+ name = "claws of doing nothing"
+ desc = "These shouldn't be here."
+ icon_state = "bracers"
+ item_state = "bracers"
+ transfer_prints = TRUE
+ body_parts_covered = HANDS
+ cold_protection = HANDS
+ min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT
+ max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT
+ armor = list("melee" = 20, "bullet" = 20, "laser" = 20, "energy" = 20, "bomb" = 35, "bio" = 35, "rad" = 35, "fire" = 0, "acid" = 0)
+
+/obj/item/clothing/gloves/claws/Initialize()
+ . = ..()
+ ADD_TRAIT(src, TRAIT_NODROP, CHANGELING_TRAIT)
+
+/obj/item/clothing/gloves/claws/vulture // prying shit off dead/soon to be dead dudes!
+ name = "jagged claws"
+ desc = "Good for prying things off of people and looking incredibly creepy."
+ strip_mod = 3
+
+/obj/effect/proc_holder/changeling/gloves/gauntlets
+ name = "Bone Gauntlets"
+ desc = "We turn our hands into solid bone and chitin, sacrificing dexterity for raw strength."
+ helptext = "These grotesque, bone-and-chitin gauntlets are remarkably good at beating victims senseless, and cannot be used in lesser form. This ability is loud, and might cause our blood to react violently to heat."
+ chemical_cost = 20
+ dna_cost = 2
+ loudness = 2
+ req_human = 1
+ action_icon = 'icons/mob/actions/actions_changeling.dmi'
+ action_icon_state = "ling_armor"
+ action_background_icon_state = "bg_ling"
+
+ glove_type = /obj/item/clothing/gloves/claws/bone_gauntlets // just punch his head off dude
+ glove_name_simple = "bone gauntlets"
+
+/obj/item/clothing/gloves/claws/bone_gauntlets // should i have just made these a subtype of armwraps?
+ name = "hewn bone gauntlets"
+ desc = "Rough bone and chitin, pulsing with an abomination barely called \"life\". Good for punching the shit out of people, not so much for wielding firearms."
+ var/enhancement = 15 // it's not an armblade but it's Violence, alright
+ var/inherited_trait = TRAIT_NOGUNS // how do you expect to shove your fingers into a trigger guard with BONE HANDS
+ var/secondary_trait = TRAIT_STRONG_GRABBER // if you're beating the shit out of dudes u might as well grab em too man...
+
+/obj/item/clothing/gloves/claws/bone_gauntlets/equipped(mob/user, slot)
+ . = ..()
+ if(slot == SLOT_GLOVES)
+ if(ishuman(user))
+ var/mob/living/carbon/human/H = user
+ ADD_TRAIT(H, TRAIT_PUGILIST, GLOVE_TRAIT)
+ ADD_TRAIT(H, inherited_trait, GLOVE_TRAIT)
+ ADD_TRAIT(H, secondary_trait, GLOVE_TRAIT)
+ H.dna.species.punchdamagehigh += enhancement
+ H.dna.species.punchdamagelow += enhancement
+
+/obj/item/clothing/gloves/claws/bone_gauntlets/dropped(mob/user)
+ REMOVE_TRAIT(user, TRAIT_PUGILIST, GLOVE_TRAIT)
+ REMOVE_TRAIT(user, inherited_trait, GLOVE_TRAIT)
+ REMOVE_TRAIT(user, secondary_trait, GLOVE_TRAIT)
+ if(ishuman(user))
+ var/mob/living/carbon/human/H = user
+ H.dna.species.punchdamagehigh -= enhancement
+ H.dna.species.punchdamagelow -= enhancement
+ return ..()
+
+/obj/item/clothing/gloves/claws/bone_gauntlets/Touch(atom/target, proximity = TRUE)
+ if(!isliving(target))
+ return
+ var/mob/living/M = loc
+ M.SetNextAction(CLICK_CD_RANGE)
+ return NO_AUTO_CLICKDELAY_HANDLING | ATTACK_IGNORE_ACTION
diff --git a/code/modules/clothing/gloves/tacklers.dm b/code/modules/clothing/gloves/tacklers.dm
index 11b2afa968..a5a0e4ad28 100644
--- a/code/modules/clothing/gloves/tacklers.dm
+++ b/code/modules/clothing/gloves/tacklers.dm
@@ -65,12 +65,14 @@
heat_protection = HANDS
max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT
resistance_flags = NONE
+ strip_mod = 1.2 // because apparently black gloves had this
/obj/item/clothing/gloves/tackler/combat/insulated
name = "guerrilla gloves"
desc = "Superior quality combative gloves, good for performing tackle takedowns as well as absorbing electrical shocks."
siemens_coefficient = 0
permeability_coefficient = 0.05
+ strip_mod = 1.5 // and combat gloves had this??
/obj/item/clothing/gloves/tackler/rocket
name = "rocket gloves"
diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm
index 230a634e0e..be40d105a3 100644
--- a/code/modules/mob/living/carbon/human/species.dm
+++ b/code/modules/mob/living/carbon/human/species.dm
@@ -1381,8 +1381,8 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
if(user.dna.species.punchdamagelow)
if(atk_verb == ATTACK_EFFECT_KICK) //kicks never miss (provided your species deals more than 0 damage)
miss_chance = 0
- else if(HAS_TRAIT(user, TRAIT_PUGILIST)) //pugilists have a flat 10% miss chance
- miss_chance = 10
+ else if(HAS_TRAIT(user, TRAIT_PUGILIST)) //pugilists, being good at Punching People, also never miss
+ miss_chance = 0
else
miss_chance = min(10 + max(puncherstam * 0.5, puncherbrute * 0.5), 100) //probability of miss has a base of 10, and modified based on half brute total. Capped at max 100 to prevent weirdness in prob()
@@ -1398,10 +1398,12 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
var/armor_block = target.run_armor_check(affecting, "melee")
playsound(target.loc, user.dna.species.attack_sound, 25, 1, -1)
-
+ var/initial_atk_verb = atk_verb
+ if(atk_verb == ATTACK_EFFECT_PUNCH)
+ atk_verb = "punche" // grammar but done in a really godawful manner honestly i mean fuck
target.visible_message("[user] [atk_verb]s [target]!", \
"[user] [atk_verb]s you!", null, COMBAT_MESSAGE_RANGE, null, \
- user, "You [atk_verb] [target]!")
+ user, "You [initial_atk_verb] [target]!")
target.lastattacker = user.real_name
target.lastattackerckey = user.ckey
diff --git a/code/modules/uplink/uplink_items/uplink_clothing.dm b/code/modules/uplink/uplink_items/uplink_clothing.dm
index c26a9ae1f0..ef05eb18db 100644
--- a/code/modules/uplink/uplink_items/uplink_clothing.dm
+++ b/code/modules/uplink/uplink_items/uplink_clothing.dm
@@ -91,8 +91,8 @@
item = /obj/item/clothing/shoes/wallwalkers
cost = 6
-/datum/uplink_item/device_tools/guerillagloves
- name = "Guerilla Gloves"
+/datum/uplink_item/device_tools/guerrillagloves
+ name = "Guerrilla Gloves"
desc = "A pair of highly robust combat gripper gloves that excels at performing takedowns at close range, with an added lining of insulation. Careful not to hit a wall!"
item = /obj/item/clothing/gloves/tackler/combat/insulated
include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops)