Skip to content
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

Posters & purrs Update #1229

Open
wants to merge 16 commits into
base: master
Choose a base branch
from
2 changes: 1 addition & 1 deletion code/_globalvars/lists/flavor_misc.dm
Original file line number Diff line number Diff line change
Expand Up @@ -322,7 +322,7 @@ GLOBAL_LIST_INIT(wisdoms, world.file2list("strings/wisdoms.txt"))

//LANGUAGE CHARACTER CUSTOMIZATION
GLOBAL_LIST_INIT(speech_verbs, list("default","says","gibbers", "states", "chitters", "chimpers", "declares", "bellows", "buzzes" ,"beeps", "chirps", "clicks", "hisses" ,"poofs" , "puffs", "rattles", "mewls" ,"barks", "blorbles", "squeaks", "squawks", "flutters", "warbles", "caws", "gekkers", "clucks","mumbles","crackles"))
GLOBAL_LIST_INIT(roundstart_tongues, list("default","human tongue" = /obj/item/organ/tongue, "lizard tongue" = /obj/item/organ/tongue/lizard, "skeleton tongue" = /obj/item/organ/tongue/bone, "fly tongue" = /obj/item/organ/tongue/fly, "ipc tongue" = /obj/item/organ/tongue/robot/ipc, "xeno tongue" = /obj/item/organ/tongue/alien/hybrid))
GLOBAL_LIST_INIT(roundstart_tongues, list("default","human tongue" = /obj/item/organ/tongue, "lizard tongue" = /obj/item/organ/tongue/lizard, "skeleton tongue" = /obj/item/organ/tongue/bone, "fly tongue" = /obj/item/organ/tongue/fly, "ipc tongue" = /obj/item/organ/tongue/robot/ipc, "xeno tongue" = /obj/item/organ/tongue/hybrid))

//SPECIES BODYPART LISTS
//locked parts are those that your picked species requires to have
Expand Down
1 change: 0 additions & 1 deletion code/datums/diseases/brainrot.dm
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@

/datum/disease/brainrot/stage_act() //Removed toxloss because damaging diseases are pretty horrible. Last round it killed the entire station because the cure didn't work -- Urist -ACTUALLY Removed rather than commented out, I don't see it returning - RR
..()

switch(stage)
if(2)
if(prob(2))
Expand Down
27 changes: 23 additions & 4 deletions code/modules/surgery/organs/tongue.dm
Original file line number Diff line number Diff line change
Expand Up @@ -165,12 +165,31 @@
. = ..()
languages_possible = languages_possible_alien

/obj/item/organ/tongue/alien/hybrid
/obj/item/organ/tongue/hybrid
name = "xenohybrid tongue"

/obj/item/organ/tongue/alien/hybrid/Initialize(mapload)
desc = "According to leading xenobiologists the evolutionary benefit of having a second mouth in your mouth is \"that it looks badass\"."
icon_state = "tonguexeno"
say_mod = "hisses"
taste_sensitivity = 10 // LIZARDS ARE ALIENS CONFIRMED (OLD CODEEEE!!!)
maxHealth = 500 //They've a little mouth for a tongue, so it's pretty robust
var/static/list/languages_possible_hybrid = typecacheof(list(
/datum/language/xenocommon,
/datum/language/common,
/datum/language/draconic,
/datum/language/ratvar,
/datum/language/monkey,
/datum/language/aphasia,
/datum/language/slime,
/datum/language/vampiric,
/datum/language/dwarf,
/datum/language/signlanguage,
/datum/language/modular_sand/solcommon, //Skyrat change - sol common blah blah
/datum/language/modular_sand/technorussian, //Skyrat change - russian stereotype language))
/datum/language/codespeak
))
/obj/item/organ/tongue/hybrid/Initialize(mapload)
. = ..()
languages_possible = languages_possible_base
languages_possible = languages_possible_hybrid
SpaceCat404 marked this conversation as resolved.
Show resolved Hide resolved

/obj/item/organ/tongue/bone
name = "bone \"tongue\""
Expand Down
100 changes: 100 additions & 0 deletions modular_splurt/code/datums/diseases/suddennyanificationsyndrome.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
/datum/disease/sns
name = "Sudden Nyanification Syndrome (SNS)"
max_stages = 4
spread_text = "Airborne, Skin & Fluid Contact"
spread_flags = DISEASE_SPREAD_AIRBORNE | DISEASE_SPREAD_CONTACT_SKIN | DISEASE_SPREAD_CONTACT_FLUIDS | DISEASE_SPREAD_BLOOD
cure_text = "WARNING: DATABASE HACK DETECTED! She dances above and guides the waves, he sweetens your tongue and brightens your day. Only their marriage will lift this curse!" //It's moonsugar, Meow - Lucky >:3
cures = list(/datum/reagent/moonsugar) //If I was any more sadistic I woulda made the cure felinid mutation toxin >:3 - Lucky
cure_chance = 16
agent = "Genomophage UWU-13"
viable_mobtypes = list(/mob/living/carbon/human, /mob/living/carbon/monkey, /mob/living/carbon/alien)
infectivity = 70
permeability_mod = 0.8
stage_prob = 3
desc = "If left untreated the subject will develop feline attributes and a strong urge to consume milk. Highly infectious, Ensure an SAD is constructed to treat victims."
severity = DISEASE_SEVERITY_MEDIUM
var/nyanification = 0

/datum/disease/sns/stage_act()
..()
switch(stage)
if(1)
if(prob(20))
to_chat(affected_mob, "<span class='warning'>" + pick(
"You feel extra silly today.",
"You can't stop thinking about milk.",
"You'd like to take a long nap.",
"Mmmmm, fish.") + "</span>")

if(2)
if(prob(30))
to_chat(affected_mob, "<span class='warning'>" + pick(
"Your ears feel oddly sensitive.",
"You have an overwhelming urge to chase a laser pointer.",
"You'd like to take a long nap in a sunny window.",
"Hmm, maybe you deserve more.") + "</span>")

if(3)
if(prob(16))
affected_mob.Stun(9)
playsound(get_turf(affected_mob), 'sound/effects/splat.ogg', 20, TRUE)
affected_mob.emote("cough")
affected_mob.visible_message("[affected_mob] hacks up a hairball!")
new /obj/item/toy/plush/hairball(affected_mob.loc)
to_chat(affected_mob, "<span class='warning'>" + pick(
"You hack up a hairball! Gross.",
"You cough up a hairball! Icky.",
"You spit up a hairball! Eugh.") + "</span>")

if(4)
if(prob(30) && nyanification == 0)
if(affected_mob.dna.species.id == SPECIES_FELINID)
nyanification = 1
else
affected_mob.emote("mrrp")
to_chat(affected_mob, "<span class='warning'>" + pick(
"You feel purrrfect.",
"You've become a god.",
"You're the most important person on this station.",
"You should annoy CC.") + "</span>")
nyanify(affected_mob)
affected_mob.visible_message("[affected_mob] suddenly grows feline traits!")
nyanification = 1
else if (prob(12))
affected_mob.emote("meow")
to_chat(affected_mob, "<span class='warning'>" + pick(
"You feel purrrfect.",
"You've become a god.",
"You're the most important person on this station.",
"You should annoy CC.") + "</span>")
return

/proc/nyanify(mob/living/carbon/human/L)
//Ears
if(L.getorgan(/obj/item/organ/ears))
var/obj/item/organ/ears/ears = L.getorgan(/obj/item/organ/ears)
ears.Remove(L)

var/obj/item/organ/ears/cat/newears = new
newears.Insert(L)

//Tail
if(L.getorgan(/obj/item/organ/tail))
var/obj/item/organ/tail/tail = L.getorgan(/obj/item/organ/tail)
tail.Remove(L)

var/obj/item/organ/tail/cat/newtail = new
newtail.Insert(L)

//Tongue
if(L.getorgan(/obj/item/organ/tongue))
var/obj/item/organ/tongue/tongue = L.getorgan(/obj/item/organ/tongue)
tongue.Remove(L)

var/obj/item/organ/tongue/fluffy/newtongue = new
newtongue.Insert(L)

/obj/item/reagent_containers/glass/bottle/sns
name = "SNS culture bottle"
desc = "A small bottle. Contains genomophage UWU-13 culture in synthblood medium."
spawned_disease = /datum/disease/sns
48 changes: 48 additions & 0 deletions modular_splurt/code/game/objects/items/devices/scanners.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
obj/item/memoryscanner
SpaceCat404 marked this conversation as resolved.
Show resolved Hide resolved
name = "handheld memory scanner"
icon = 'modular_splurt/icons/obj/device.dmi'
icon_state = "memoryscanner"
item_state = "inducer-sci"
lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi'
desc = "A hand-held mind scanner able to penetrate the surface mind of a target."
flags_1 = CONDUCT_1
item_flags = NOBLUDGEON
slot_flags = ITEM_SLOT_BELT
throwforce = 3
w_class = WEIGHT_CLASS_TINY
throw_speed = 3
throw_range = 7
custom_materials = list(/datum/material/iron=400, /datum/material/plasma=180)

/obj/item/memoryscanner/Initialize(mapload)
. = ..()
register_item_context()

/obj/item/memoryscanner/suicide_act(mob/living/carbon/user)
user.visible_message("<span class='suicide'>[user] begins to wipe [user.p_their()] mind with the [src]!</span>")
return OXYLOSS

/obj/item/memoryscanner/attack(mob/living/M, mob/living/carbon/human/user)
if (HAS_TRAIT(user, TRAIT_CLUMSY) && prob(50))
memory_scan(user, user)
to_chat(user, "<span class='warning'>Uh... how does this doohickey work?!</span>")
user.visible_message("<span class='danger'>[user] clumsily zaps his head with the [src]!</span>")
var/obj/item/organ/brain/E
E = user.getorganslot(ORGAN_SLOT_BRAIN)
E.applyOrganDamage(15)
else
user.visible_message("<span class='danger'>[user] is trying to scan [M]'s mind with the [src]!</span>")
if (do_mob(user, M, 15))
user.visible_message("<span class='danger'>[user] scans [M]'s mind with the [src]!</span>")
memory_scan(user, M)

proc/memory_scan(mob/user, mob/living/T)
var/msg = "<span class='info'>Analyzing results for [T]'s memory.</span>"
if (!isliving(T) || !T.mind)
msg += "\n<span class='alert'>[T]'s mind is non-compliant! Scan failed.</span>"
return
else
msg += "\n<span class='info'>Memory scan complete. \n Mind Contents: \n [T.mind] \n [T.mind.show_memory()] \n </span>"
to_chat(user, examine_block(msg))
return
26 changes: 26 additions & 0 deletions modular_splurt/code/game/splurt_posters.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
// Modularize posters icon source

// /obj/structure/sign/poster/official/splurt
// icon = 'modular_splurt/icons/obj/contraband.dmi'
// /obj/structure/sign/poster/official/splurt
// icon = 'modular_splurt/icons/obj/contraband.dmi'

// Lucky's Posters

/obj/structure/sign/poster/official/splurt/hanginthere
name = "Hang in there, Wagie!"
desc = "This inspirational poster bears an image of a cat dangling from a brach with text reading \"Hang in there, Wagie!\". Depressing."
icon = 'modular_splurt/icons/obj/contraband.dmi'
icon_state = "poster_hanginthere"

/obj/structure/sign/poster/contraband/splurt/luckywanted
name = "Faded wanted poster"
desc = "this old wanted poster warns of a dubiously lucky individual."
icon = 'modular_splurt/icons/obj/contraband.dmi'
icon_state = "poster_luckywanted"

/obj/structure/sign/poster/contraband/splurt/puro
name = "Questionably drawn poster"
desc = "A large sheet of paper sporadically drawn upon in sharpie. It smells strongly of rubber."
icon = 'modular_splurt/icons/obj/contraband.dmi'
icon_state = "poster_puro"
8 changes: 8 additions & 0 deletions modular_splurt/code/modules/clothing/head/misc.dm
Original file line number Diff line number Diff line change
Expand Up @@ -133,3 +133,11 @@
item_state = "hoodcowl"
flags_inv = HIDEHAIR
dynamic_hair_suffix = ""

/obj/item/clothing/head/outragecowhat
name = "Outrageous Cowboy Hat"
desc = "A stupidly long cowboy hat, makes you want to s-stutter."
icon = 'modular_splurt/icons/obj/clothing/head.dmi'
mob_overlay_icon = 'modular_splurt/icons/mob/clothing/bighats.dmi'
icon_state = "outragecowhat"
item_state = "outragecowhat"
39 changes: 39 additions & 0 deletions modular_splurt/code/modules/events/sns_outbreak.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
/datum/round_event_control/sns_outbreak
name = "Sudden Nyanification Syndrome Outbreak"
typepath = /datum/round_event/disease_outbreak
max_occurrences = 1
min_players = 3
weight = 2
category = EVENT_CATEGORY_HEALTH
description = "Sudden Nyanification Syndrome will infect some crewmembers."

/datum/round_event/disease_outbreak
announce_when = 15

/datum/round_event_control/disease_outbreak/canSpawnEvent(var/players_amt, var/gamemode)
if(!..()) return FALSE
var/list/enemy_roles = list("Medical Doctor","Chief Medical Officer","Paramedic","AI","Chemist","Virologist","Captain","Head of Personnel", "Geneticist")
for (var/mob/M in GLOB.alive_mob_list)
if(M.stat != DEAD && (M.mind?.assigned_role in enemy_roles))
return TRUE
return FALSE

/datum/round_event/disease_outbreak/announce(fake)
priority_announce("Confirmed outbreak of level 7 viral biohazard aboard [station_name()]. All personnel must contain the outbreak...... Meow.", "Biohazard Alert", "outbreak7")

/datum/round_event/disease_outbreak/setup()
announce_when = rand(15, 30)

/datum/round_event/disease_outbreak/start()
var/infectees = 0
var/desiredinfectees = rand(1, 3)

for(var/mob/living/carbon/human/H in shuffle(GLOB.alive_mob_list) || infectees < desiredinfectees)
var/turf/T = get_turf(H)
if(!T || !is_station_level(T.z) || !H.client || !HAS_TRAIT(H,TRAIT_EXEMPT_HEALTH_EVENTS) || H.stat != DEAD || !HAS_TRAIT(H, TRAIT_VIRUSIMMUNE) || prob(20))
var/datum/disease/D = new /datum/disease/sns(TRUE) // Move the disease creation inside the if block
H.ForceContractDisease(D, FALSE, TRUE)
infectees++
else
message_admins("An event has triggered a sns outbreak on [ADMIN_LOOKUPFLW(H)]! Lucky says hi!")
log_game("An event has triggered a sns outbreak on [key_name(H)]! Lucky says hi!")
9 changes: 9 additions & 0 deletions modular_splurt/code/modules/mob/living/emotes.dm
Original file line number Diff line number Diff line change
Expand Up @@ -1627,3 +1627,12 @@ To add randomization to your emote, copy and paste this line of code:
emote_cooldown = 4 SECONDS
vary = FALSE
volume = 30

/datum/emote/sound/human/oof
key = "oof"
key_third_person = "oofs!"
message = "oof!"
sound = 'sound/voice/oof.ogg'
emote_cooldown = 12 SECONDS
vary = FALSE
volume = 45
9 changes: 9 additions & 0 deletions modular_splurt/code/modules/research/designs/misc_designs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -26,3 +26,12 @@
category = list("Misc", "Medical Designs")
departmental_flags = DEPARTMENTAL_FLAG_MEDICAL | DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_SERVICE

/datum/design/msc

Check warning on line 29 in modular_splurt/code/modules/research/designs/misc_designs.dm

View workflow job for this annotation

GitHub Actions / Run Linters

nested absolute path inside /datum/design/ultimatespray
SpaceCat404 marked this conversation as resolved.
Show resolved Hide resolved
name = "Memory Scanner"
desc = "A hand-held mind scanner able to penetrate the surface mind of a target."
id = "memory_scanner"
build_type = PROTOLATHE
materials = list(/datum/material/iron = 20000, /datum/material/glass = 10000, /datum/material/plasma = 2000, /datum/material/gold = 2000)
build_path = /obj/item/memoryscanner
category = list("Tool Designs")
departmental_flags = DEPARTMENTAL_FLAG_SCIENCE
Original file line number Diff line number Diff line change
@@ -1,3 +1,12 @@
/datum/techweb_node/biotech/New()
design_ids += "sex_research"
. = ..()

/datum/techweb_node/memoryscanner
id = "memory_scanner"
display_name = "Memory Scanner"
description = "An illegal xenotech used to scan minds for unknown purposes... now it's mostly used to steal bank account info."
prereq_ids = list("alien_bio", "syndicate_basic")
design_ids = list("memory_scanner")
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 30000)
hidden = TRUE
7 changes: 7 additions & 0 deletions modular_splurt/code/modules/vending/wardrobes.dm
Original file line number Diff line number Diff line change
Expand Up @@ -156,3 +156,10 @@
)
LAZYADD(products, extra_premium)
. = ..()

/obj/machinery/vending/wardrobe/cap_wardrobe/Initialize(mapload)
var/list/extra_contraband = list(
/obj/item/clothing/head/outragecowhat = 1,
)
LAZYADD(contraband, extra_contraband)
. = ..()
Binary file added modular_splurt/icons/mob/clothing/bighats.dmi
Binary file not shown.
Binary file modified modular_splurt/icons/obj/clothing/head.dmi
Binary file not shown.
Binary file added modular_splurt/icons/obj/contraband.dmi
Binary file not shown.
Binary file modified modular_splurt/icons/obj/device.dmi
Binary file not shown.
4 changes: 4 additions & 0 deletions tgstation.dme
Original file line number Diff line number Diff line change
Expand Up @@ -4516,6 +4516,7 @@
#include "modular_splurt\code\datums\components\crafting\recipes\recipes_primal.dm"
#include "modular_splurt\code\datums\components\crafting\recipes\recipes_robot.dm"
#include "modular_splurt\code\datums\components\storage\concrete\pockets.dm"
#include "modular_splurt\code\datums\diseases\suddennyanificationsyndrome.dm"
#include "modular_splurt\code\datums\elements\crawl_under.dm"
#include "modular_splurt\code\datums\elements\flavor_text.dm"
#include "modular_splurt\code\datums\elements\holder_micro.dm"
Expand Down Expand Up @@ -4596,6 +4597,7 @@
#include "modular_splurt\code\game\atoms_movable.dm"
#include "modular_splurt\code\game\data_huds.dm"
#include "modular_splurt\code\game\say.dm"
#include "modular_splurt\code\game\splurt_posters.dm"
#include "modular_splurt\code\game\area\areas\centcom.dm"
#include "modular_splurt\code\game\area\areas\commons.dm"
#include "modular_splurt\code\game\area\areas\holodeck.dm"
Expand Down Expand Up @@ -4651,6 +4653,7 @@
#include "modular_splurt\code\game\objects\items\circuitboards\computer_circuitboards.dm"
#include "modular_splurt\code\game\objects\items\circuitboards\machine_circuitboards.dm"
#include "modular_splurt\code\game\objects\items\circuitboards\miner_circuitboards.dm"
#include "modular_splurt\code\game\objects\items\devices\scanners.dm"
#include "modular_splurt\code\game\objects\items\devices\PDA\PDA.dm"
#include "modular_splurt\code\game\objects\items\devices\PDA\radio.dm"
#include "modular_splurt\code\game\objects\items\devices\radio\electropack.dm"
Expand Down Expand Up @@ -4909,6 +4912,7 @@
#include "modular_splurt\code\modules\discord\toggle_notify.dm"
#include "modular_splurt\code\modules\events\bruh_moment.dm"
#include "modular_splurt\code\modules\events\crystalline_reentry.dm"
#include "modular_splurt\code\modules\events\sns_outbreak.dm"
#include "modular_splurt\code\modules\events\vent_clog.dm"
#include "modular_splurt\code\modules\food_and_drinks\drinks\drinks\bottle.dm"
#include "modular_splurt\code\modules\food_and_drinks\drinks\drinks\sizeitems.dm"
Expand Down
Loading