Skip to content

Commit 65d1f30

Browse files
Murderbone Cape & Hat (#5653)
## About The Pull Request Reverts: #5387 Adds a Corporate Sponsorship for Evil bundle to the uplink (basically an excuse to murderbone) - 20 TC purchase, has to be the first purchase, locks the uplink - Once putting on the provided cloak it alerts ghost and admins that you are allowed to murderbone. - The hat gives buffs: space proofing, fearless, and immunity to pain. - The hat gives you a red aura once worn. - The cloak gets stuck to you once put on and can't be removed. - You can't remove the hat yourself but if someone else does it gibs you and then explodes. ## Why It's Good For The Game An invisible murderbone pass makes for an ahelp generating machine. This lets people know the person attacking them has the pass. ## Changelog :cl: add: Added the Corporate Sponsorship for Evil bundle to the uplink. 20 TC purchase for traitors as a pass to murderbone del: Reverted the License to Murderbone to License to Plasmaflood fix: adjusted the fake mustache sprite to look better /:cl: --------- Co-authored-by: SirNightKnight <=>
1 parent 8b86c2e commit 65d1f30

File tree

12 files changed

+162
-6
lines changed

12 files changed

+162
-6
lines changed

code/modules/clothing/head/tophat.dm

+2-1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
throwforce = 1
1010
/// Cooldown for how often we can pull rabbits out of here
1111
COOLDOWN_DECLARE(rabbit_cooldown)
12+
var/bee_chance = 10 //monkestation addition
1213

1314
/obj/item/clothing/head/hats/tophat/attackby(obj/item/hitby_item, mob/user, params)
1415
. = ..()
@@ -24,7 +25,7 @@
2425
playsound(get_turf(src), 'sound/weapons/emitter.ogg', 70)
2526
do_smoke(amount = DIAMOND_AREA(1), holder = src, location = src, smoke_type=/obj/effect/particle_effect/fluid/smoke/quick)
2627

27-
if(prob(10))
28+
if(prob(bee_chance)) //monkestation edit
2829
magician.visible_message(span_danger("[magician] taps [src] with [hitby_wand], then reaches in and pulls out a bu- wait, those are bees!"), span_danger("You tap [src] with your [hitby_wand.name] and pull out... <b>BEES!</b>"))
2930
var/wait_how_many_bees_did_that_guy_pull_out_of_his_hat = rand(4, 8)
3031
for(var/b in 1 to wait_how_many_bees_did_that_guy_pull_out_of_his_hat)

code/modules/mob/living/carbon/human/human.dm

+8
Original file line numberDiff line numberDiff line change
@@ -412,6 +412,14 @@
412412
if(istype(head, /obj/item/clothing/head/wizard))
413413
threatcount += 2
414414

415+
//MONKESTATION EDIT START
416+
if(istype(head, /obj/item/clothing/head/hats/tophat/syndicate))
417+
threatcount += 2
418+
419+
if(istype(wear_neck, /obj/item/clothing/neck/cloak/syndicate))
420+
threatcount += 2
421+
//MONKESTATION EDIT STOP
422+
415423
//Check for nonhuman scum
416424
if(dna && dna.species.id && dna.species.id != SPECIES_HUMAN)
417425
threatcount += 1

icons/mob/clothing/mask.dmi

-960 Bytes
Binary file not shown.

monkestation/code/game/objects/items/plasma_license.dm

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/obj/item/card/plasma_license
2-
name = "License to Murderbone"
2+
name = "License to Plasmaflood"
33
desc = "A charred contract letting the holder kill everyone they meet. Not offically recognized by Nanotrasen."
44
icon = 'monkestation/icons/obj/items/plasmalicense.dmi'
55
icon_state = "plasmalicense"
@@ -14,7 +14,7 @@
1414

1515
/obj/item/card/plasma_license/Initialize(mapload)
1616
. = ..()
17-
message_admins("A murderbone license has been created.")
17+
message_admins("A plasmaflood license has been created.")
1818

1919
/obj/item/card/plasma_license/examine(mob/user)
2020
. = ..()
@@ -29,8 +29,8 @@
2929
return
3030
to_chat(user, span_notice("You sign your name at the bottom of the [src]."))
3131
owner = user.mind
32-
message_admins("A License to Murderbone has been signed by [owner].")
33-
investigate_log("A License to Murderbone by [key_name(user)]", INVESTIGATE_ATMOS)
32+
message_admins("A License to Plasmaflood has been signed by [owner].")
33+
investigate_log("A License to Plasmaflood by [key_name(user)]", INVESTIGATE_ATMOS)
3434
return
3535

3636
if(user.mind != owner)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,132 @@
1+
/obj/item/clothing/head/hats/tophat/syndicate
2+
name = "top-hat of EVIL"
3+
desc = "It's an EVIL looking hat."
4+
icon_state = "evil_tophat"
5+
icon = 'monkestation/icons/mob/clothing/costumes/syndicate/evil_clothing_obj.dmi'
6+
worn_icon = 'monkestation/icons/mob/clothing/costumes/syndicate/evil_clothing_worn.dmi'
7+
inhand_icon_state = "that"
8+
resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF
9+
clothing_flags = SNUG_FIT | PLASMAMAN_HELMET_EXEMPT | PLASMAMAN_PREVENT_IGNITION
10+
dog_fashion = null
11+
worn_y_offset = 5
12+
throw_range = 0
13+
var/id = "syndicate_tophat"
14+
var/primed = FALSE
15+
armor_type = /datum/armor/helmet_swat
16+
strip_delay = 120
17+
bee_chance = 100
18+
19+
/obj/item/clothing/head/hats/tophat/syndicate/equipped(mob/living/carbon/human/user, slot)
20+
. = ..()
21+
if(!(slot & ITEM_SLOT_HEAD))
22+
return
23+
to_chat(user, span_warning("An ominous voice rings out from within your mind..."))
24+
user.SetSleeping(8 SECONDS)
25+
speak(user)
26+
user.remove_filter(id)
27+
user.add_traits(list(TRAIT_RESISTCOLD, TRAIT_RESISTLOWPRESSURE, TRAIT_NO_PAIN_EFFECTS, TRAIT_FEARLESS), id)
28+
user.add_filter(id, 2, drop_shadow_filter(x = 0, y = 0, size = 0.5, offset = 1, color = "#ff0000"))
29+
primed = TRUE
30+
to_chat(user, span_boldwarning("You hear a faint click inside the hat... you get the feeling you shouldn't take it off."))
31+
message_admins("A top-hat of EVIL has been worn by [user.mind].")
32+
log_admin("A top-hat of EVIL has been worn by [key_name(user)]")
33+
notify_ghosts(
34+
"[user.name] has donned a hat of EVIL!",
35+
source = user,
36+
action = NOTIFY_ORBIT,
37+
notify_flags = NOTIFY_CATEGORY_NOFLASH,
38+
header = "TIME FOR CRIME!",
39+
)
40+
41+
/obj/item/clothing/head/hats/tophat/syndicate/proc/speak(mob/living/carbon/human/user)
42+
sleep(2 SECOND)
43+
to_chat(user, span_boldwarning("Time!"))
44+
user.playsound_local(get_turf(user), 'monkestation/sound/voice/robotic/time.ogg',100,0, use_reverb = TRUE)
45+
sleep(2 SECOND)
46+
to_chat(user, span_boldwarning("For!"))
47+
user.playsound_local(get_turf(user), 'monkestation/sound/voice/robotic/for.ogg',100,0, use_reverb = TRUE)
48+
sleep(2 SECOND)
49+
to_chat(user, span_boldwarning("CRIME!!"))
50+
user.playsound_local(get_turf(user), 'monkestation/sound/voice/robotic/crime.ogg',100,0, use_reverb = TRUE)
51+
sleep(2 SECOND)
52+
53+
/obj/item/clothing/head/hats/tophat/syndicate/MouseDrop(atom/over_object)
54+
if(primed)
55+
to_chat(usr, span_userdanger("You hesitate remembering the faint click you heard..."))
56+
return
57+
return ..()
58+
59+
60+
/obj/item/clothing/head/hats/tophat/syndicate/attack_hand(mob/user, list/modifiers)
61+
if(primed)
62+
to_chat(user, span_userdanger("You hesitate remembering the faint click you heard..."))
63+
return
64+
return ..()
65+
66+
/obj/item/clothing/head/hats/tophat/syndicate/dropped(mob/living/carbon/human/user)
67+
. = ..()
68+
if(primed)
69+
user.remove_traits(list(TRAIT_RESISTCOLD, TRAIT_RESISTLOWPRESSURE, TRAIT_NO_PAIN_EFFECTS, TRAIT_FEARLESS), id)
70+
addtimer(CALLBACK(src, PROC_REF(explode), user), 0.5 SECOND)
71+
72+
/obj/item/clothing/head/hats/tophat/syndicate/proc/explode(mob/living/carbon/human/user)
73+
user.remove_filter(id)
74+
playsound(loc, 'sound/items/timer.ogg', 30, FALSE)
75+
user.visible_message("A bright flash eminates from under [user]'s hat!")
76+
user.gib()
77+
log_game("[user] has been gibbed by the removal of their [src]")
78+
explosion(src, devastation_range = 0, heavy_impact_range = 2, light_impact_range = 4, flame_range = 2, flash_range = 7)
79+
qdel(src)
80+
81+
/obj/item/clothing/neck/cloak/syndicate
82+
name = "cloak of EVIL"
83+
desc = "It's an EVIL looking cloak."
84+
icon_state = "syndiecloak"
85+
icon = 'monkestation/icons/mob/clothing/costumes/syndicate/evil_clothing_obj.dmi'
86+
worn_icon = 'monkestation/icons/mob/clothing/costumes/syndicate/evil_clothing_worn.dmi'
87+
armor_type = /datum/armor/armor_swat
88+
resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF
89+
var/has_been_worn = FALSE
90+
91+
/obj/item/clothing/neck/cloak/syndicate/equipped(mob/living/carbon/human/user, slot)
92+
. = ..()
93+
if(!(slot & ITEM_SLOT_NECK))
94+
return
95+
ADD_TRAIT(src, TRAIT_NODROP, ABSTRACT_ITEM_TRAIT)
96+
to_chat(user, span_notice("You feel it's time for a good bloodbath."))
97+
message_admins("A cloak of EVIL has been worn by [user.mind].")
98+
log_admin("A cloak of EVIL has been worn by [key_name(user)]")
99+
notify_ghosts(
100+
"[user.name] has donned a cloak of EVIL!",
101+
source = user,
102+
action = NOTIFY_ORBIT,
103+
notify_flags = NOTIFY_CATEGORY_NOFLASH,
104+
header = "TIME FOR MURDER!",
105+
)
106+
has_been_worn = TRUE
107+
108+
/obj/item/clothing/neck/cloak/syndicate/Initialize(mapload)
109+
. = ..()
110+
message_admins("A cloak of EVIL has been created. Someone might murderbone!")
111+
SSpoints_of_interest.make_point_of_interest(src)
112+
113+
/obj/item/clothing/neck/cloak/syndicate/dropped(mob/living/carbon/human/user)
114+
if(has_been_worn)
115+
do_sparks()
116+
user.visible_message("The cloak vanishes into thin air!")
117+
qdel(src)
118+
return
119+
return ..()
120+
121+
/obj/item/storage/briefcase/evilbundle
122+
desc = "It has a small golden engraving reading \"Syndicate\", but suspiciously has no other tags or branding. Smells like rusted metal."
123+
force = 10
124+
125+
/obj/item/storage/briefcase/evilbundle/PopulateContents()
126+
..()
127+
new /obj/item/clothing/head/hats/tophat/syndicate(src)
128+
new /obj/item/clothing/neck/cloak/syndicate(src)
129+
new /obj/item/clothing/glasses/sunglasses(src)
130+
new /obj/item/clothing/under/syndicate/sniper(src)
131+
new /obj/item/clothing/shoes/laceup(src)
132+
new /obj/item/clothing/mask/fakemoustache(src)

monkestation/code/modules/uplink/uplink_items/misc.dm

+15-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
cost = 2
3030

3131
/datum/uplink_item/device_tools/plasma_license
32-
name = "License to Murderbone"
32+
name = "License to Plasmaflood"
3333
desc = "A contract abusing a loophole found by plasmamen to invade halls with harmful gases \
3434
without repercussion or warning, garnering no attention from any higher powers. \
3535
Has to be signed by purchaser to be considered valid."
@@ -66,3 +66,17 @@
6666
purchasable_from = ~(UPLINK_NUKE_OPS | UPLINK_CLOWN_OPS)
6767

6868

69+
/datum/uplink_item/device_tools/murderbone
70+
name = "Corporate Sponsorship for Evil"
71+
desc = "Our investors have decided that publicity is good no matter what kind it is. Even for a secretive organization formed \
72+
out of a backdoor allegiance between several corporations with vendettas against Nanotrasen. By purchasing and dawning \
73+
the provided apparel you will be free from all repercussions of mass crime and mass murder as you advertise the power \
74+
of the Syndicate. The provided hat covers crime and the provided cloak covers murder. \
75+
Show those Nanotrasen pigs what for in Syndicate sponsored style!"
76+
cost = 20
77+
lock_other_purchases = TRUE
78+
cant_discount = TRUE
79+
illegal_tech = FALSE
80+
surplus = 0
81+
purchasable_from = ~(UPLINK_NUKE_OPS | UPLINK_CLOWN_OPS)
82+
item = /obj/item/storage/briefcase/evilbundle
Binary file not shown.
Binary file not shown.
9.43 KB
Binary file not shown.
7.1 KB
Binary file not shown.
9.16 KB
Binary file not shown.

tgstation.dme

+1
Original file line numberDiff line numberDiff line change
@@ -7196,6 +7196,7 @@
71967196
#include "monkestation\code\modules\clothing\accessories\accessories.dm"
71977197
#include "monkestation\code\modules\clothing\costumes\gnome.dm"
71987198
#include "monkestation\code\modules\clothing\costumes\henchmen.dm"
7199+
#include "monkestation\code\modules\clothing\costumes\syndicate.dm"
71997200
#include "monkestation\code\modules\clothing\glasses\glasses.dm"
72007201
#include "monkestation\code\modules\clothing\gloves\gloves.dm"
72017202
#include "monkestation\code\modules\clothing\gloves\power_gloves.dm"

0 commit comments

Comments
 (0)