diff --git a/code/WorkInProgress/recycling/disposal.dm b/code/WorkInProgress/recycling/disposal.dm
index 3949c3914ce..12571988314 100644
--- a/code/WorkInProgress/recycling/disposal.dm
+++ b/code/WorkInProgress/recycling/disposal.dm
@@ -4,6 +4,7 @@
// Once full (~1 atm), uses air resv to flush items into the pipes
// Automatically recharges air (unless off), will flush when ready if pre-set
// Can hold items and human size things, no other draggables
+// Toilets are a type of disposal bin for small objects only and work on magic. By magic, I mean torque rotation
/obj/machinery/disposal
name = "disposal unit"
@@ -59,7 +60,6 @@
C.show_message("\red [GM.name] has been placed in the [src] by [user].", 3)
del(G)
-
else
user.drop_item()
@@ -273,10 +273,6 @@
// otherwise charge
use_power(500) // charging power usage
-
-
-
-
var/atom/L = loc // recharging from loc turf
var/datum/gas_mixture/env = L.return_air()
@@ -350,7 +346,92 @@
H.vent_gas(loc)
del(H)
+//The toilet does not need to pressurized but can only handle small items.
+//You can also choke people by dunking them into the toilet.
+/obj/machinery/disposal/toilet
+ name = "toilet"
+ desc = "A torque rotation-based, waste disposal unit for small matter."
+ icon_state = "toilet"
+ density = 0//So you can stand on it.
+ mode = 2
+ attackby(var/obj/item/I, var/mob/user)
+ if( !(stat & BROKEN) )
+ if(istype(I, /obj/item/weapon/grab))
+ var/obj/item/weapon/grab/G = I
+ if(istype(G)) // handle grabbed mob
+ if(ismob(G.affecting))
+ var/mob/GM = G.affecting
+ for (var/mob/V in viewers(usr))
+ V.show_message("[user] dunks [GM.name] into the toilet!", 3)
+ if(do_after(user, 30))
+ if(G.state>1&&!GM.internal)
+ GM.oxyloss += 5
+
+ else if(I.w_class < 4)
+ user.drop_item()
+ I.loc = src
+ user << "You place \the [I] into the [src]."
+ for(var/mob/M in viewers(src))
+ if(M == user)
+ continue
+ M.show_message("[user.name] places \the [I] into the [src].", 3)
+ else
+ user << "\red That item cannot be placed into the toilet."
+ return
+
+ MouseDrop_T(mob/target, mob/user)
+ if (!istype(target) || target.buckled || get_dist(user, src) > 1 || get_dist(user, target) > 1 || user.stat || istype(user, /mob/living/silicon/ai))
+ return//Damn that list is long
+
+ for (var/mob/V in viewers(usr))
+ if(target == user && !user.stat)
+ V.show_message("[user] sits on the toilet.", 3)
+ if(target != user && !user.restrained())
+ V.show_message("[user] places [target.name] on the toilet.", 3)
+ target.loc = loc
+ return
+
+ interact(mob/user)
+ add_fingerprint(user)
+ for (var/mob/V in viewers(user))
+ V.show_message("[user] eagerly drinks the toilet water!", 3)//Yum yum yum
+ return
+
+ update()
+ overlays = null
+ if( !(stat & BROKEN) )
+ if(flush)
+ overlays += image('disposal.dmi',src,"toilet-handle",,dir)
+ if( !(stat & NOPOWER) )
+ overlays += image('disposal.dmi',src,"toilet-ready",,dir)
+ else
+ icon_state = "toilet-broken"
+ mode = 0
+ flush = 0
+ return
+
+ process()
+ if( !((stat & BROKEN)||(stat & NOPOWER)) )// nothing can happen if broken or not powered.
+ updateDialog()
+ if(!flush&&contents.len)
+ flush++
+ flush()
+ use_power(100)// base power usage
+ update()
+ return
+
+ flush()
+ flick("toilet-flush", src)
+ var/obj/disposalholder/H = new()
+ H.init(src)
+ sleep(10)
+ playsound(src, 'disposalflush.ogg', 50, 0, 0)
+ sleep(30) // To prevent spam.
+ H.start(src)
+ flush--
+ update()
+ return
// virtual disposal object
// travels through pipes in lieu of actual items
@@ -369,8 +450,8 @@
// initialize a holder from the contents of a disposal unit
proc/init(var/obj/machinery/disposal/D)
- gas = D.air_contents // transfer gas resv. into holder object
-
+ if(!istype(D, /obj/machinery/disposal/toilet))//So it does not drain gas from a toilet which does not function on it.
+ gas = D.air_contents// transfer gas resv. into holder object
// now everything inside the disposal gets put into the holder
// note AM since can contain mobs or objs
@@ -388,8 +469,6 @@
src.destinationTag = T.sortTag
-
-
// start the movement process
// argument is the disposal unit the holder started in
proc/start(var/obj/machinery/disposal/D)
diff --git a/code/defines/mob/living/carbon/alien_larva.dm b/code/defines/mob/living/carbon/alien_larva.dm
index e6f3c6e4173..21b810fa987 100644
--- a/code/defines/mob/living/carbon/alien_larva.dm
+++ b/code/defines/mob/living/carbon/alien_larva.dm
@@ -1,7 +1,7 @@
/mob/living/carbon/alien/larva
name = "alien larva"
icon_state = "larva"
- //flags = 258.0
+ flags = 258.0
health = 25
diff --git a/code/defines/mob/living/carbon/monkey.dm b/code/defines/mob/living/carbon/monkey.dm
index 6773c5657bc..fd872c24ab7 100644
--- a/code/defines/mob/living/carbon/monkey.dm
+++ b/code/defines/mob/living/carbon/monkey.dm
@@ -6,7 +6,7 @@
icon = 'monkey.dmi'
icon_state = "monkey1"
gender = NEUTER
- //flags = 258.0
+ flags = 258.0
var/obj/item/weapon/card/id/wear_id = null // Fix for station bounced radios -- Skie
diff --git a/code/game/gamemodes/extra/ninja_equipment.dm b/code/game/gamemodes/extra/ninja_equipment.dm
index a69ac54a254..daefb9a5477 100644
--- a/code/game/gamemodes/extra/ninja_equipment.dm
+++ b/code/game/gamemodes/extra/ninja_equipment.dm
@@ -248,19 +248,6 @@
dat += "
Smoke Bombs: [sbombs]
"
dat += "
"
- /*
- HOW TO USE OR ADAPT THIS CODE:
- The menu structure should not need to be altered to add new entries. Simply place them after what is already there.
- As an exception, if there are multiple-tiered windows, for instance, going into medical alerts and then to DNA testing or something,
- those menus should be added below their parents but have a greater value. The second sub-menu of menu 2 would have the number 22.
- Another sub-menu of menu 2 would be 23, then 24, and up to 29. If those menus have their own sub-menus a similar format follows.
- Sub-menu 1 of sub-menu 2(of menu 2) would be 221. Sub-menu 5 of sub-menu 2(of menu 2) would be 225. Menu 0 is a special case (it's the menu hub); you are free to use menus 1-9 (sub menus can be 0-9)
- to create your own data paths.
- The Return button, when used, simply removes the final number and navigates to the menu prior. Menu 334, the fourth sub-menu of sub-menu
- 3, in menu 3, would navigate to sub menu 3 in menu 3. Or 33.
- It is possible to go to a different menu/sub-menu from anywhere. When creating new menus don't forget to add them to Topic proc or else the game
- will interpret you using the messenger function (the else clause in the switch).
- Other buttons and functions should be named according to what they do.*/
switch(spideros)
if(0)
/*
@@ -335,13 +322,12 @@
for (var/obj/item/device/pda/P in world)
if (!P.owner||P.toff)
continue
- dat += "
Hidden Menu:
Send Virus:
Detected PDAs:
Other Functions 49:
Other Functions 491: