diff --git a/code/defines/obj/decal.dm b/code/defines/obj/decal.dm index fb1b34d3c23..0d7ce8a0232 100644 --- a/code/defines/obj/decal.dm +++ b/code/defines/obj/decal.dm @@ -297,3 +297,61 @@ layer = 2 icon = 'tomatodecal.dmi' random_icon_states = list("smashed_pie") + + +/* April fools shit */ + +/obj/effect/decal/cleanable/urine + name = "urine" + desc = "It's yellow, and it smells." + density = 0 + anchored = 1 + layer = 2 + icon = 'AF.dmi' + icon_state = "urine1" + random_icon_states = list("urine1", "urine2", "urine3") + +/obj/effect/decal/cleanable/poo + name = "poo" + desc = "Aw man, what the FUCK." + density = 0 + anchored = 1 + layer = 2 + icon = 'AF.dmi' + icon_state = "splat1" + random_icon_states = list("splat1", "splat2", "splat3", "splat4", "splat5", "splat6", "splat7", "splat8") + var/dried = 0 + +/obj/effect/decal/cleanable/urine/New() + src.icon_state = pick(src.random_icon_states) + spawn(500) + del(src) + +/obj/effect/decal/cleanable/urine/HasEntered(AM as mob|obj) + if (istype(AM, /mob/living/carbon)) + var/mob/M = AM + if(istype(M, /mob/living/carbon/human)) // Added check since monkeys don't have shoes + if ((M.m_intent == "run") && !(istype(M:shoes, /obj/item/clothing/shoes) && M:shoes.flags&NOSLIP)) + + M.pulling = null + M << "\blue You slipped on the wet urine puddle!" + playsound(src.loc, 'slip.ogg', 50, 1, -3) + M.Stun(rand(1,8)) + M.Weaken(rand(1,5)) + +/obj/effect/decal/cleanable/poo/New() + src.icon_state = pick(src.random_icon_states) + spawn(300) + src.dried = 1 + +/obj/effect/decal/cleanable/poo/HasEntered(AM as mob|obj) + if (istype(AM, /mob/living/carbon) && src.dried == 0) + var/mob/M = AM + if(istype(M, /mob/living/carbon/human)) // Added check since monkeys don't have shoes + if ((M.m_intent == "run") && !(istype(M:shoes, /obj/item/clothing/shoes) && M:shoes.flags&NOSLIP)) + + M.pulling = null + M << "\blue You slipped on the wet poo stain!" + playsound(src.loc, 'slip.ogg', 50, 1, -3) + M.Stun(rand(1,8)) + M.Weaken(rand(1,5)) diff --git a/code/defines/procs/time_stamp.dm b/code/defines/procs/time_stamp.dm index a7f8a7205b5..d966a6c685a 100644 --- a/code/defines/procs/time_stamp.dm +++ b/code/defines/procs/time_stamp.dm @@ -8,4 +8,22 @@ proc/time_stamp() if(hh < 10) ph = "0" if(mm < 10) pm = "0" if(ss < 10) ps = "0" - return"[ph][hh]:[pm][mm]:[ps][ss]" \ No newline at end of file + return"[ph][hh]:[pm][mm]:[ps][ss]" + + +/* Returns 1 if it is the selected month and day */ +proc/isDay(var/month, var/day) + if(isnum(month) && isnum(day)) + var/MM = text2num(time2text(world.timeofday, "MM")) // get the current month + var/DD = text2num(time2text(world.timeofday, "MM")) // get the current day + if(month == MM && day == DD) + return 1 + + // Uncomment this out when debugging! + //else + //return 1 + +/* Check if it's april fools day */ +proc/isAprilFools() + return isDay(4, 1) + diff --git a/code/game/atom_procs.dm b/code/game/atom_procs.dm index 09629535ca3..36cc7a3c399 100644 --- a/code/game/atom_procs.dm +++ b/code/game/atom_procs.dm @@ -252,6 +252,15 @@ this.viruses += newDisease newDisease.holder = this +/atom/proc/add_poo_floor() + if( istype(src, /turf)) + new /obj/effect/decal/cleanable/poo(src) + +/atom/proc/add_piss_floor() + if( istype(src, /turf)) + new /obj/effect/decal/cleanable/urine(src) + + // Only adds blood on the floor -- Skie /atom/proc/add_blood_floor(mob/living/carbon/M as mob) if( istype(M, /mob/living/carbon/monkey) ) diff --git a/code/game/step_triggers.dm b/code/game/step_triggers.dm index cf285193fbd..c7665e11f86 100644 --- a/code/game/step_triggers.dm +++ b/code/game/step_triggers.dm @@ -33,7 +33,6 @@ var/stopthrow = 0 for(var/obj/step_trigger/thrower/T in orange(2, src)) if(A in T.affecting) - world << "can't trigger" return if(ismob(A)) diff --git a/code/modules/chemical/Chemistry-Reagents.dm b/code/modules/chemical/Chemistry-Reagents.dm index 842362c5152..5dd96b84ac9 100644 --- a/code/modules/chemical/Chemistry-Reagents.dm +++ b/code/modules/chemical/Chemistry-Reagents.dm @@ -1649,6 +1649,7 @@ datum if(!M) M = holder.my_atom if(prob(50)) M:heal_organ_damage(1,0) M:nutrition += nutriment_factor // For hunger and fatness + M.poo += nutriment_factor / 10 // LOLE /* // If overeaten - vomit and fall down // Makes you feel bad but removes reagents and some effect diff --git a/code/modules/chemical/Chemistry-Tools.dm b/code/modules/chemical/Chemistry-Tools.dm index e71b9271cca..331bfdf6442 100644 --- a/code/modules/chemical/Chemistry-Tools.dm +++ b/code/modules/chemical/Chemistry-Tools.dm @@ -1481,6 +1481,7 @@ reagents.trans_to(M, gulp_size) playsound(M.loc,'drink.ogg', rand(10,50), 1) + M.urine += 0.25 return 1 else if( istype(M, /mob/living/carbon/human) ) @@ -1508,8 +1509,8 @@ spawn(600) R.add_reagent(refill, fillevel) - playsound(M.loc,'drink.ogg', rand(10,50), 1) + M.urine += 0.25 return 1 return 0 diff --git a/code/modules/mob/living/carbon/human/emote.dm b/code/modules/mob/living/carbon/human/emote.dm index 3a7b6e0a675..06c1a39b86f 100644 --- a/code/modules/mob/living/carbon/human/emote.dm +++ b/code/modules/mob/living/carbon/human/emote.dm @@ -457,6 +457,218 @@ if ("help") src << "blink, blink_r, blush, bow-(none)/mob, burp, choke, chuckle, clap, collapse, cough,\ncry, custom, deathgasp, drool, eyebrow, frown, gasp, giggle, groan, grumble, handshake, hug-(none)/mob, glare-(none)/mob,\ngrin, laugh, look-(none)/mob, moan, mumble, nod, pale, point-atom, raise, salute, shake, shiver, shrug,\nsigh, signal-#1-10, smile, sneeze, sniff, snore, stare-(none)/mob, tremble, twitch, twitch_s, whimper,\nwink, yawn" + if ("fart") + if(isAprilFools()) + var/gtext = "his" + if(gender == FEMALE) + gtext = "her" + switch(rand(1, 48)) + if(1) + message = "[src] lets out a girly little 'toot' from [gtext] butt." + + if(2) + message = "[src] farts loudly!" + + if(3) + message = "[src] lets one rip!" + + if(4) + message = "[src] farts! It sounds wet and smells like rotten eggs." + + if(5) + message = "[src] farts robustly!" + + if(6) + message = "[src] farted! It reminds you of your grandmother's queefs." + + if(7) + message = "[src] queefed out [gtext] ass!" + + if(8) + message = "[src] farted! It reminds you of your grandmother's queefs." + + if(9) + message = "[src] farts a ten second long fart." + + if(10) + message = "[src] groans and moans, farting like the world depended on it." + + if(11) + message = "[src] breaks wind!" + + if(12) + message = "[src] expels intestinal gas through the anus." + + if(13) + message = "[src] release an audible discharge of intestinal gas." + + if(14) + message = "\red [src] is a farting motherfucker!!!" + + if(15) + message = "\red [src] suffers from flatulence!" + + if(16) + message = "[src] releases flatus." + + if(17) + message = "[src] releases gas generated in his digestive tract, [gtext] stomach and [gtext] intestines. \redIt stinks way bad!" + + if(18) + message = "[src] farts like your mom used to!" + + if(19) + message = "[src] farts. It smells like Soylent Surprise!" + + if(20) + message = "[src] farts. It smells like pizza!" + + if(21) + message = "[src] farts. It smells like George Melons' perfume!" + + if(22) + message = "[src] farts. It smells like atmos in here now!" + + if(23) + message = "[src] farts. It smells like medbay in here now!" + + if(24) + message = "[src] farts. It smells like the bridge in here now!" + + if(25) + message = "[src] farts like a pubby!" + + if(26) + message = "[src] farts like a goone!" + + if(27) + message = "[src] farts so hard poop came out with it, but dares not look." + + if(28) + message = "[src] farts delicately." + + if(29) + message = "[src] farts timidly." + + if(30) + message = "[src] farts very, very quietly. The stench is OVERPOWERING." + + if(31) + message = "[src] farts and says, \"Mmm! Delightful aroma!\"" + + if(32) + message = "[src] farts and says, \"Mmm! Sexy!\"" + + if(33) + message = "[src] farts and fondles [gtext] own buttocks." + + if(34) + message = "[src] farts and fondles YOUR buttocks." + + if(35) + message = "[src] fart in [gtext] own mouth. A shameful [src]." + + if(36) + message = "[src] farts out pure plasma! \redFUCK!" + + if(37) + message = "[src] farts out pure oxygen. What the fuck did he eat?" + + if(38) + message = "[src] breaks wind noisily!" + + if(39) + message = "[src] releases gas with the power of the gods! The very station trembles!!" + + if(40) + message = "[src] \red f \blue a \black r \red t \blue s \black !" + + if(41) + message = "[src] shat [gtext] pants!" + + if(42) + message = "[src] shat [gtext] pants! Oh, no, that was just a really nasty fart." + + if(43) + message = "[src] is a flatulent whore." + + if(44) + message = "[src] likes the smell of his own farts." + + if(45) + message = "[src] doesnt wipe after he poops." + + if(46) + message = "[src] farts! Now [gtext] ass smells like Uhangay." + + if(47) + message = "[src] farts so loud [gtext] buttocks causes a gravity well in the spacetime continuum!" + + if(48) + message = "[src] laughs and [gtext] breath smells like a fart." + playsound(src.loc, 'poo2.ogg', 50, 1) + + if("piss", "pee", "tinkle") + if(isAprilFools()) + if(src.urine < 3) + if(src.gender == MALE) + message = "[src] unzips his pants and waves his dick around." + else + message = "[src] lowers her pants and squats near the floor." + + else + if((locate(/obj/machinery/disposal/toilet) in src.loc) && (src.buckled != null) && (src.poo >= 3)) + for(var/obj/machinery/disposal/toilet/T in src.loc) + if(src.gender == MALE) + message = "\blue [src] unzips his pants and urinates in the toilet." + else + message = "\blue [src] lowers her pants, sits on the toilet and urinates." + src.urine -= 3 + else + var/shat_on_other = 0 + for(var/mob/living/M in src.loc) + if(M == src) + continue + message = "\red [src] pisses all over [M]!" + shat_on_other = 1 + break + if(!shat_on_other) + message = pick("[src] pisses on the floor.", "[src] pisses all over the floor!", "[src] unzips their pants and pisses all over the floor.") + src.urine -= 3 + src.loc.add_piss_floor(src) + + if("poo", "poop", "shit", "crap") + if(isAprilFools()) + if(src.poo < 3) + message = "[src] grunts for a moment. Nothing happens." + else + if((locate(/obj/machinery/disposal/toilet) in src.loc) && (src.buckled != null) && (src.poo >= 3)) + for(var/obj/machinery/disposal/toilet/T in src.loc) + message = pick("[src] unzips their pants and poops in the toilet.", "[src] farts out a steamer.", "\blue THHBBBBBBBBBBBBBT!") + playsound(src.loc, 'poo2.ogg', 50, 1) + src.poo -= 3 + else if(istype(src.wear_suit, /obj/item/clothing/suit)) + message = pick("[src] shits in their pants!", "[src] poos in their suit!", "\blue THHHHHHBBBBBBBBT!") + playsound(src.loc, 'poo2.ogg', 50, 1) + src.poo -= 3 + else if(istype(src.w_uniform, /obj/item/clothing/under)) + message = pick("[src] shits in their pants!", "[src] poos in their suit!", "\blue THHHHHHBBBBBBBBT!") + playsound(src.loc, 'poo2.ogg', 50, 1) + src.poo -= 3 + else + var/shat_on_other = 0 + for(var/mob/living/M in src.loc) + if(M == src) + continue + message = "\red [src] shits all over [M]!" + shat_on_other = 1 + break + if(!shat_on_other) + message = pick("[src] shits on the floor.", "[src] poops all over the floor!", "[src] squeezes out a turd.") + src.poo -= 3 + src.loc.add_poo_floor(src) + playsound(src.loc, 'poo2.ogg', 50, 1) + else src << "\blue Unusable emote '[act]'. Say *help for a list." @@ -468,3 +680,5 @@ else if (m_type & 2) for (var/mob/O in hearers(src.loc, null)) O.show_message(message, m_type) + else + src << "\blue Unusable emote '[act]'. Say *help for a list." diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm index d7fa729d4dd..994e4b4633b 100644 --- a/code/modules/mob/mob_defines.dm +++ b/code/modules/mob/mob_defines.dm @@ -118,6 +118,10 @@ var/jitteriness = 0//Carbon var/charges = 0.0 var/nutrition = 400.0//Carbon + + var/poo = 0.0 // APRIL FOOLS + var/urine = 0.0 + var/overeatduration = 0 // How long this guy is overeating //Carbon var/paralysis = 0.0 var/stunned = 0.0 diff --git a/icons/effects/effects.dmi b/icons/effects/effects.dmi index 39bbf9e3cb5..a63d160362a 100644 Binary files a/icons/effects/effects.dmi and b/icons/effects/effects.dmi differ diff --git a/icons/misc/AF.dmi b/icons/misc/AF.dmi new file mode 100644 index 00000000000..4c4cae2f488 Binary files /dev/null and b/icons/misc/AF.dmi differ diff --git a/sound/misc/poo2.ogg b/sound/misc/poo2.ogg new file mode 100644 index 00000000000..b87daeaa058 Binary files /dev/null and b/sound/misc/poo2.ogg differ