Skip to content

Murderbone Cape & Hat #5653

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 6 commits into from
Mar 12, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion code/modules/clothing/head/tophat.dm
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
throwforce = 1
/// Cooldown for how often we can pull rabbits out of here
COOLDOWN_DECLARE(rabbit_cooldown)
var/bee_chance = 10 //monkestation addition

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

if(prob(10))
if(prob(bee_chance)) //monkestation edit
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>"))
var/wait_how_many_bees_did_that_guy_pull_out_of_his_hat = rand(4, 8)
for(var/b in 1 to wait_how_many_bees_did_that_guy_pull_out_of_his_hat)
Expand Down
8 changes: 8 additions & 0 deletions code/modules/mob/living/carbon/human/human.dm
Original file line number Diff line number Diff line change
Expand Up @@ -412,6 +412,14 @@
if(istype(head, /obj/item/clothing/head/wizard))
threatcount += 2

//MONKESTATION EDIT START
if(istype(head, /obj/item/clothing/head/hats/tophat/syndicate))
threatcount += 2

if(istype(wear_neck, /obj/item/clothing/neck/cloak/syndicate))
threatcount += 2
//MONKESTATION EDIT STOP

//Check for nonhuman scum
if(dna && dna.species.id && dna.species.id != SPECIES_HUMAN)
threatcount += 1
Expand Down
Binary file modified icons/mob/clothing/mask.dmi
Binary file not shown.
8 changes: 4 additions & 4 deletions monkestation/code/game/objects/items/plasma_license.dm
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/obj/item/card/plasma_license
name = "License to Murderbone"
name = "License to Plasmaflood"
desc = "A charred contract letting the holder kill everyone they meet. Not offically recognized by Nanotrasen."
icon = 'monkestation/icons/obj/items/plasmalicense.dmi'
icon_state = "plasmalicense"
Expand All @@ -14,7 +14,7 @@

/obj/item/card/plasma_license/Initialize(mapload)
. = ..()
message_admins("A murderbone license has been created.")
message_admins("A plasmaflood license has been created.")

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

if(user.mind != owner)
Expand Down
132 changes: 132 additions & 0 deletions monkestation/code/modules/clothing/costumes/syndicate.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,132 @@
/obj/item/clothing/head/hats/tophat/syndicate
name = "top-hat of EVIL"
desc = "It's an EVIL looking hat."
icon_state = "evil_tophat"
icon = 'monkestation/icons/mob/clothing/costumes/syndicate/evil_clothing_obj.dmi'
worn_icon = 'monkestation/icons/mob/clothing/costumes/syndicate/evil_clothing_worn.dmi'
inhand_icon_state = "that"
resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF
clothing_flags = SNUG_FIT | PLASMAMAN_HELMET_EXEMPT | PLASMAMAN_PREVENT_IGNITION
dog_fashion = null
worn_y_offset = 5
throw_range = 0
var/id = "syndicate_tophat"
var/primed = FALSE
armor_type = /datum/armor/helmet_swat
strip_delay = 120
bee_chance = 100

/obj/item/clothing/head/hats/tophat/syndicate/equipped(mob/living/carbon/human/user, slot)
. = ..()
if(!(slot & ITEM_SLOT_HEAD))
return
to_chat(user, span_warning("An ominous voice rings out from within your mind..."))
user.SetSleeping(8 SECONDS)
speak(user)
user.remove_filter(id)
user.add_traits(list(TRAIT_RESISTCOLD, TRAIT_RESISTLOWPRESSURE, TRAIT_NO_PAIN_EFFECTS, TRAIT_FEARLESS), id)
user.add_filter(id, 2, drop_shadow_filter(x = 0, y = 0, size = 0.5, offset = 1, color = "#ff0000"))
primed = TRUE
to_chat(user, span_boldwarning("You hear a faint click inside the hat... you get the feeling you shouldn't take it off."))
message_admins("A top-hat of EVIL has been worn by [user.mind].")
log_admin("A top-hat of EVIL has been worn by [key_name(user)]")
notify_ghosts(
"[user.name] has donned a hat of EVIL!",
source = user,
action = NOTIFY_ORBIT,
notify_flags = NOTIFY_CATEGORY_NOFLASH,
header = "TIME FOR CRIME!",
)

/obj/item/clothing/head/hats/tophat/syndicate/proc/speak(mob/living/carbon/human/user)
sleep(2 SECOND)
to_chat(user, span_boldwarning("Time!"))
user.playsound_local(get_turf(user), 'monkestation/sound/voice/robotic/time.ogg',100,0, use_reverb = TRUE)
sleep(2 SECOND)
to_chat(user, span_boldwarning("For!"))
user.playsound_local(get_turf(user), 'monkestation/sound/voice/robotic/for.ogg',100,0, use_reverb = TRUE)
sleep(2 SECOND)
to_chat(user, span_boldwarning("CRIME!!"))
user.playsound_local(get_turf(user), 'monkestation/sound/voice/robotic/crime.ogg',100,0, use_reverb = TRUE)
sleep(2 SECOND)

/obj/item/clothing/head/hats/tophat/syndicate/MouseDrop(atom/over_object)
if(primed)
to_chat(usr, span_userdanger("You hesitate remembering the faint click you heard..."))
return
return ..()


/obj/item/clothing/head/hats/tophat/syndicate/attack_hand(mob/user, list/modifiers)
if(primed)
to_chat(user, span_userdanger("You hesitate remembering the faint click you heard..."))
return
return ..()

/obj/item/clothing/head/hats/tophat/syndicate/dropped(mob/living/carbon/human/user)
. = ..()
if(primed)
user.remove_traits(list(TRAIT_RESISTCOLD, TRAIT_RESISTLOWPRESSURE, TRAIT_NO_PAIN_EFFECTS, TRAIT_FEARLESS), id)
addtimer(CALLBACK(src, PROC_REF(explode), user), 0.5 SECOND)

/obj/item/clothing/head/hats/tophat/syndicate/proc/explode(mob/living/carbon/human/user)
user.remove_filter(id)
playsound(loc, 'sound/items/timer.ogg', 30, FALSE)
user.visible_message("A bright flash eminates from under [user]'s hat!")
user.gib()
log_game("[user] has been gibbed by the removal of their [src]")
explosion(src, devastation_range = 0, heavy_impact_range = 2, light_impact_range = 4, flame_range = 2, flash_range = 7)
qdel(src)

/obj/item/clothing/neck/cloak/syndicate
name = "cloak of EVIL"
desc = "It's an EVIL looking cloak."
icon_state = "syndiecloak"
icon = 'monkestation/icons/mob/clothing/costumes/syndicate/evil_clothing_obj.dmi'
worn_icon = 'monkestation/icons/mob/clothing/costumes/syndicate/evil_clothing_worn.dmi'
armor_type = /datum/armor/armor_swat
resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF
var/has_been_worn = FALSE

/obj/item/clothing/neck/cloak/syndicate/equipped(mob/living/carbon/human/user, slot)
. = ..()
if(!(slot & ITEM_SLOT_NECK))
return
ADD_TRAIT(src, TRAIT_NODROP, ABSTRACT_ITEM_TRAIT)
to_chat(user, span_notice("You feel it's time for a good bloodbath."))
message_admins("A cloak of EVIL has been worn by [user.mind].")
log_admin("A cloak of EVIL has been worn by [key_name(user)]")
notify_ghosts(
"[user.name] has donned a cloak of EVIL!",
source = user,
action = NOTIFY_ORBIT,
notify_flags = NOTIFY_CATEGORY_NOFLASH,
header = "TIME FOR MURDER!",
)
has_been_worn = TRUE

/obj/item/clothing/neck/cloak/syndicate/Initialize(mapload)
. = ..()
message_admins("A cloak of EVIL has been created. Someone might murderbone!")
SSpoints_of_interest.make_point_of_interest(src)

/obj/item/clothing/neck/cloak/syndicate/dropped(mob/living/carbon/human/user)
if(has_been_worn)
do_sparks()
user.visible_message("The cloak vanishes into thin air!")
qdel(src)
return
return ..()

/obj/item/storage/briefcase/evilbundle
desc = "It has a small golden engraving reading \"Syndicate\", but suspiciously has no other tags or branding. Smells like rusted metal."
force = 10

/obj/item/storage/briefcase/evilbundle/PopulateContents()
..()
new /obj/item/clothing/head/hats/tophat/syndicate(src)
new /obj/item/clothing/neck/cloak/syndicate(src)
new /obj/item/clothing/glasses/sunglasses(src)
new /obj/item/clothing/under/syndicate/sniper(src)
new /obj/item/clothing/shoes/laceup(src)
new /obj/item/clothing/mask/fakemoustache(src)
16 changes: 15 additions & 1 deletion monkestation/code/modules/uplink/uplink_items/misc.dm
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
cost = 2

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


/datum/uplink_item/device_tools/murderbone
name = "Corporate Sponsorship for Evil"
desc = "Our investors have decided that publicity is good no matter what kind it is. Even for a secretive organization formed \
out of a backdoor allegiance between several corporations with vendettas against Nanotrasen. By purchasing and dawning \
the provided apparel you will be free from all repercussions of mass crime and mass murder as you advertise the power \
of the Syndicate. The provided hat covers crime and the provided cloak covers murder. \
Show those Nanotrasen pigs what for in Syndicate sponsored style!"
cost = 20
lock_other_purchases = TRUE
cant_discount = TRUE
illegal_tech = FALSE
surplus = 0
purchasable_from = ~(UPLINK_NUKE_OPS | UPLINK_CLOWN_OPS)
item = /obj/item/storage/briefcase/evilbundle
Binary file not shown.
Binary file not shown.
Binary file added monkestation/sound/voice/robotic/crime.ogg
Binary file not shown.
Binary file added monkestation/sound/voice/robotic/for.ogg
Binary file not shown.
Binary file added monkestation/sound/voice/robotic/time.ogg
Binary file not shown.
1 change: 1 addition & 0 deletions tgstation.dme
Original file line number Diff line number Diff line change
Expand Up @@ -7179,6 +7179,7 @@
#include "monkestation\code\modules\clothing\accessories\accessories.dm"
#include "monkestation\code\modules\clothing\costumes\gnome.dm"
#include "monkestation\code\modules\clothing\costumes\henchmen.dm"
#include "monkestation\code\modules\clothing\costumes\syndicate.dm"
#include "monkestation\code\modules\clothing\glasses\glasses.dm"
#include "monkestation\code\modules\clothing\gloves\gloves.dm"
#include "monkestation\code\modules\clothing\gloves\power_gloves.dm"
Expand Down
Loading