From 84e24d58720e574e1df042b699b3e1c1e17ce535 Mon Sep 17 00:00:00 2001 From: ATH1909 <42606352+ATH1909@users.noreply.github.com> Date: Sun, 5 Apr 2020 02:32:23 -0500 Subject: [PATCH] Makes Clown Ops Great Again (#50105) * clown op fixes * description shortening * fixes the locations of some items * fuck off, travis * Update code/modules/uplink/uplink_items.dm Co-Authored-By: Rohesie * removes one comma * web edit web edit * removes fun * reduces the number of checks for user.mind * clown ops can buy chameleon kits again * Update code/modules/projectiles/pins.dm Co-Authored-By: Rohesie * accidentally deleted a comment Co-authored-by: Rohesie --- code/game/gamemodes/clown_ops/clown_ops.dm | 8 +-- .../game/objects/items/storage/uplink_kits.dm | 7 ++ code/modules/projectiles/pins.dm | 20 +++++- code/modules/uplink/uplink_items.dm | 64 ++++++++++++++++--- 4 files changed, 80 insertions(+), 19 deletions(-) diff --git a/code/game/gamemodes/clown_ops/clown_ops.dm b/code/game/gamemodes/clown_ops/clown_ops.dm index 255f13520cf..304865883ed 100644 --- a/code/game/gamemodes/clown_ops/clown_ops.dm +++ b/code/game/gamemodes/clown_ops/clown_ops.dm @@ -39,6 +39,8 @@ id = /obj/item/card/id/syndicate backpack_contents = list(/obj/item/storage/box/survival/syndie=1,\ /obj/item/kitchen/knife/combat/survival, + /obj/item/dnainjector/clumsymut, //in case you want to be clumsy for the memes + /obj/item/storage/box/syndie_kit/clownpins, //for any guns that you get your grubby little clown op mitts on /obj/item/reagent_containers/spray/waterflower/lube) implants = list(/obj/item/implant/sad_trombone) @@ -47,12 +49,6 @@ /datum/outfit/syndicate/clownop/no_crystals tc = 0 -/datum/outfit/syndicate/clownop/post_equip(mob/living/carbon/human/H, visualsOnly = FALSE) - ..() - if(visualsOnly) - return - H.dna.add_mutation(CLOWNMUT) - /datum/outfit/syndicate/clownop/leader name = "Clown Operative Leader - Basic" id = /obj/item/card/id/syndicate/nuke_leader diff --git a/code/game/objects/items/storage/uplink_kits.dm b/code/game/objects/items/storage/uplink_kits.dm index 4faf199a166..dc5f0a5d86a 100644 --- a/code/game/objects/items/storage/uplink_kits.dm +++ b/code/game/objects/items/storage/uplink_kits.dm @@ -346,6 +346,13 @@ for(var/i in 1 to 7) new /obj/item/reagent_containers/syringe/bioterror(src) +/obj/item/storage/box/syndie_kit/clownpins + name = "ultra hilarious firing pin box" + +/obj/item/storage/box/syndie_kit/clownpins/PopulateContents() + for(var/i in 1 to 7) + new /obj/item/firing_pin/clown/ultra(src) + /obj/item/storage/box/syndie_kit/imp_adrenal name = "adrenal implant box" diff --git a/code/modules/projectiles/pins.dm b/code/modules/projectiles/pins.dm index 834bc58df94..85fd0725805 100644 --- a/code/modules/projectiles/pins.dm +++ b/code/modules/projectiles/pins.dm @@ -134,11 +134,24 @@ // Ultra-honk pin, clown's deadly joke item. // A gun with ultra-honk pin is useful for clown and useless for everyone else. +/obj/item/firing_pin/clown/ultra + name = "ultra hilarious firing pin" + /obj/item/firing_pin/clown/ultra/pin_auth(mob/living/user) playsound(src.loc, 'sound/items/bikehorn.ogg', 50, TRUE) - if(user && (!(HAS_TRAIT(user, TRAIT_CLUMSY)) && !(user.mind && user.mind.assigned_role == "Clown"))) - return FALSE - return TRUE + if(QDELETED(user)) //how the hell...? + stack_trace("/obj/item/firing_pin/clown/ultra/pin_auth called with a [isnull(user) ? "null" : "invalid"] user.") + return TRUE + if(HAS_TRAIT(user, TRAIT_CLUMSY)) //clumsy + return TRUE + if(user.mind) + if(user.mind.assigned_role == "Clown") //traitor clowns can use this, even though they're technically not clumsy + return TRUE + if(user.mind.has_antag_datum(/datum/antagonist/nukeop/clownop)) //clown ops aren't clumsy by default and technically don't have an assigned role of "Clown", but come on, they're basically clowns + return TRUE + if(user.mind.has_antag_datum(/datum/antagonist/nukeop/leader/clownop)) //Wanna hear a funny joke? + return TRUE //The clown op leader antag datum isn't a subtype of the normal clown op antag datum. + return FALSE /obj/item/firing_pin/clown/ultra/gun_insert(mob/living/user, obj/item/gun/G) ..() @@ -150,6 +163,7 @@ // Now two times deadlier! /obj/item/firing_pin/clown/ultra/selfdestruct + name = "super ultra hilarious firing pin" desc = "Advanced clowntech that can convert any firearm into a far more useful object. It has a small nitrobananium charge on it." selfdestruct = TRUE diff --git a/code/modules/uplink/uplink_items.dm b/code/modules/uplink/uplink_items.dm index ca43beab618..74ce7c4a371 100644 --- a/code/modules/uplink/uplink_items.dm +++ b/code/modules/uplink/uplink_items.dm @@ -214,7 +214,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) you will receive. May contain discontinued and/or exotic items." item = /obj/item/storage/box/syndicate/bundle_A cost = 20 - exclude_modes = list(/datum/game_mode/nuclear) + exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) /datum/uplink_item/bundles_TC/bundle_B name = "Syndi-kit Special" @@ -222,7 +222,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) In Syndi-kit Special, you will recieve items used by famous syndicate agents of the past. Collectively worth more than 20 telecrystals, the syndicate loves a good throwback." item = /obj/item/storage/box/syndicate/bundle_B cost = 20 - exclude_modes = list(/datum/game_mode/nuclear) + exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) /datum/uplink_item/bundles_TC/surplus name = "Syndicate Surplus Crate" @@ -350,6 +350,22 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) surplus = 0 include_modes = list(/datum/game_mode/nuclear/clown_ops) +/datum/uplink_item/dangerous/clownoppin + name = "Ultra Hilarious Firing Pin" + desc = "A firing pin that, when inserted into a gun, makes that gun only useable by clowns and clumsy people and makes that gun honk whenever anyone tries to fire it." + cost = 1 //much cheaper for clown ops than for clowns + item = /obj/item/firing_pin/clown/ultra + include_modes = list(/datum/game_mode/nuclear/clown_ops) + illegal_tech = FALSE + +/datum/uplink_item/dangerous/clownopsuperpin + name = "Super Ultra Hilarious Firing Pin" + desc = "Like the ultra hilarious firing pin, except the gun you insert this pin into explodes when someone who isn't clumsy or a clown tries to fire it." + cost = 4 //much cheaper for clown ops than for clowns + item = /obj/item/firing_pin/clown/ultra/selfdestruct + include_modes = list(/datum/game_mode/nuclear/clown_ops) + illegal_tech = FALSE + /datum/uplink_item/dangerous/bioterror name = "Biohazardous Chemical Sprayer" desc = "A handheld chemical sprayer that allows a wide dispersal of selected chemicals. Especially tailored by the Tiger \ @@ -587,7 +603,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) player_minimum = 25 cost = 10 surplus = 50 - exclude_modes = list(/datum/game_mode/nuclear) + exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) /datum/uplink_item/stealthy_weapons/origami_kit name = "Boxed Origami Kit" @@ -622,7 +638,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) falls asleep, they will be able to move and act." item = /obj/item/pen/sleepy cost = 4 - exclude_modes = list(/datum/game_mode/nuclear) + exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) /datum/uplink_item/stealthy_weapons/suppressor name = "Suppressor" @@ -1135,7 +1151,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) Due to budget cuts, the shoes don't provide protection against slipping." item = /obj/item/storage/box/syndie_kit/chameleon cost = 2 - exclude_modes = list(/datum/game_mode/nuclear) + exclude_modes = list(/datum/game_mode/nuclear) //clown ops are allowed to buy this kit, since it's basically a costume /datum/uplink_item/stealthy_tools/chameleon_proj name = "Chameleon Projector" @@ -1221,7 +1237,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) item = /obj/item/storage/toolbox/infiltrator cost = 6 limited_stock = 1 //you only get one so you don't end up with too many gun cases - exclude_modes = list(/datum/game_mode/nuclear) + exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) /datum/uplink_item/suits/space_suit name = "Syndicate Space Suit" @@ -1240,7 +1256,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) Nanotrasen crew who spot these suits are known to panic." item = /obj/item/clothing/suit/space/hardsuit/syndi cost = 8 - exclude_modes = list(/datum/game_mode/nuclear) //you can't buy it in nuke, because the elite hardsuit costs the same while being better + exclude_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) //you can't buy it in nuke, because the elite hardsuit costs the same while being better /datum/uplink_item/suits/hardsuit/elite name = "Elite Syndicate Hardsuit" @@ -1494,7 +1510,6 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) include_modes = list(/datum/game_mode/nuclear, /datum/game_mode/nuclear/clown_ops) restricted = TRUE - /datum/uplink_item/device_tools/suspiciousphone name = "Protocol CRAB-17 Phone" desc = "The Protocol CRAB-17 Phone, a phone borrowed from an unknown third party, it can be used to crash the space market, funneling the losses of the crew to your bank account.\ @@ -1695,6 +1710,13 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) cost = 15 restricted_roles = list("Clown") +/datum/uplink_item/role_restricted/clumsinessinjector //clown ops can buy this too, but it's in the pointless badassery section for them + name = "Clumsiness Injector" + desc = "Inject yourself with this to become as clumsy as a clown... or inject someone ELSE with it to make THEM as clumsy as a clown. Useful for clowns who wish to reconnect with their former clownish nature or for clowns who wish to torment and play with their prey before killing them." + item = /obj/item/dnainjector/clumsymut + cost = 1 + restricted_roles = list("Clown") + illegal_tech = FALSE /datum/uplink_item/role_restricted/spider_injector name = "Australicus Slime Mutator" @@ -1822,6 +1844,22 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) item = /obj/item/storage/box/hug/reverse_revolver restricted_roles = list("Clown") +/datum/uplink_item/role_restricted/clownpin + name = "Ultra Hilarious Firing Pin" + desc = "A firing pin that, when inserted into a gun, makes that gun only usable by clowns and clumsy people and makes that gun honk whenever anyone tries to fire it." + cost = 4 + item = /obj/item/firing_pin/clown/ultra + restricted_roles = list("Clown") + illegal_tech = FALSE + +/datum/uplink_item/role_restricted/clownsuperpin + name = "Super Ultra Hilarious Firing Pin" + desc = "Like the ultra hilarious firing pin, except the gun you insert this pin into explodes when someone who isn't clumsy or a clown tries to fire it." + cost = 7 + item = /obj/item/firing_pin/clown/ultra/selfdestruct + restricted_roles = list("Clown") + illegal_tech = FALSE + /datum/uplink_item/role_restricted/laser_arm name = "Laser Arm Implant" desc = "An implant that grants you a recharging laser gun inside your arm. Weak to EMPs. Comes with a syndicate autosurgeon for immediate self-application." @@ -1829,7 +1867,6 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) item = /obj/item/autosurgeon/syndicate/laser_arm restricted_roles = list("Roboticist") - // Pointless /datum/uplink_item/badass category = "(Pointless) Badassery" @@ -1892,6 +1929,14 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) cost = 2 illegal_tech = FALSE +/datum/uplink_item/badass/clownopclumsinessinjector //clowns can buy this too, but it's in the role-restricted items section for them + name = "Clumsiness Injector" + desc = "Inject yourself with this to become as clumsy as a clown... or inject someone ELSE with it to make THEM as clumsy as a clown. Useful for clown operatives who wish to reconnect with their former clownish nature or for clown operatives who wish to torment and play with their prey before killing them." + item = /obj/item/dnainjector/clumsymut + cost = 1 + include_modes = list(/datum/game_mode/nuclear/clown_ops) + illegal_tech = FALSE + /datum/uplink_item/badass/tactical_naptime name = "Sleepy Time Pajama Bundle" desc = "Even soldiers need to get a good nights rest. Comes with blood-red pajamas, a blankie, a hot mug of cocoa and a fuzzy friend." @@ -1900,4 +1945,3 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item)) limited_stock = 1 cant_discount = TRUE include_modes = list(/datum/game_mode/nuclear) -