From 02194633b57a306ae91a73a23d674015ebf9a333 Mon Sep 17 00:00:00 2001 From: Hatterhat Date: Thu, 20 Aug 2020 09:14:30 -0500 Subject: [PATCH] initial commit - za hando --- .../changeling/powers/mutations.dm | 156 +++++++++++++++++- code/modules/clothing/gloves/tacklers.dm | 2 + .../mob/living/carbon/human/species.dm | 10 +- .../uplink/uplink_items/uplink_clothing.dm | 4 +- 4 files changed, 165 insertions(+), 7 deletions(-) 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)