Merge pull request #252 from Aurorastation/development

Update 28AUG2014
This commit is contained in:
skull132
2014-08-28 22:36:51 +03:00
48 changed files with 3313 additions and 1439 deletions
+2 -12
View File
@@ -17,7 +17,7 @@
var/on = 0
var/open = 0
var/set_temperature = 20 // in celcius, add T0C for kelvin
var/cooling_power = 40000
var/cooling_power = 10000
flags = FPRINT
@@ -179,32 +179,22 @@
if(env.temperature != set_temperature + T0C)
var/transfer_moles = 0.25 * env.total_moles()
var/datum/gas_mixture/removed = env.remove(transfer_moles)
//world << "got [transfer_moles] moles at [removed.temperature]"
if(removed)
var/heat_capacity = removed.heat_capacity()
//world << "heating ([heat_capacity])"
if(heat_capacity) // Added check to avoid divide by zero (oshi-) runtime errors -- TLE
if(removed.temperature > set_temperature + T0C)
removed.temperature = min(removed.temperature - cooling_power/heat_capacity, TCMB) // Added min() check to try and avoid wacky superheating issues in low gas scenarios -- TLE
else
removed.temperature = max(removed.temperature + cooling_power/heat_capacity, 1000)
cell.use(cooling_power/20000)
//world << "now at [removed.temperature]"
cell.use(cooling_power/1000)
env.merge(removed)
//world << "turf now at [env.temperature]"
else
on = 0
update_icon()
return
+6
View File
@@ -928,6 +928,12 @@
#include "code\modules\flufftext\Dreaming.dm"
#include "code\modules\flufftext\Hallucination.dm"
#include "code\modules\flufftext\TextFilters.dm"
#include "code\modules\food\cereal_maker.dm"
#include "code\modules\food\cooker.dm"
#include "code\modules\food\customizables.dm"
#include "code\modules\food\food_grill.dm"
#include "code\modules\food\icecream_vat.dm"
#include "code\modules\food\oven.dm"
#include "code\modules\food\recipes_microwave.dm"
#include "code\modules\genetics\side_effects.dm"
#include "code\modules\library\lib_items.dm"
+3
View File
@@ -48,6 +48,9 @@ datum/delta_level/proc/dotheboom()
datum/delta_level/proc/process()
if(!active)
if(ticker.mode:explosion_in_progress == 1)
ticker.mode:explosion_in_progress = 0
settimeleft(0)
return
var/timeleft = timeleft()
if(timeleft > 1e5) // midnight rollover protection
+4 -1
View File
@@ -28,7 +28,7 @@
return
/client/proc/debug_controller(controller in list("Master","Failsafe","Ticker","Lighting","Air","Jobs","Sun","Radio","Supply Shuttle","Emergency Shuttle","Configuration","pAI", "Cameras", "Transfer Controller"))
/client/proc/debug_controller(controller in list("Master","Failsafe","Ticker","Lighting","Air","Jobs","Sun","Radio","Supply Shuttle","Emergency Shuttle","Configuration","pAI", "Cameras", "Transfer Controller", "Delta Level"))
set category = "Debug"
set name = "Debug Controller"
set desc = "Debug the various periodic loop controllers for the game (be careful!)"
@@ -77,5 +77,8 @@
if("Transfer Controller")
debug_variables(transfer_controller)
feedback_add_details("admin_verb","DAutovoter")
if("Delta Level")
debug_variables(delta_level)
feedback_add_details("admin_verb","DDeltaLevel")
message_admins("Admin [key_name_admin(usr)] is debugging the [controller] controller.")
return
+1 -1
View File
@@ -417,7 +417,7 @@ Implants;
//Reports player logouts//
//////////////////////////
proc/display_roundstart_logout_report()
var/msg = "\blue <b>Roundstart logout report\n\n"
var/msg = "\blue <b>Roundstart logout report</b>\n\n"
for(var/mob/living/L in mob_list)
if(L.ckey)
+1 -1
View File
@@ -384,7 +384,7 @@ var/global/datum/controller/gameticker/ticker
robo.laws.show_laws(world)
if(dronecount)
world << "<b>There [dronecount>1 ? "were" : "was"] [dronecount] industrious maintenance [dronecount>1 ? "drones" : "drone"] this round."
world << "<b>There [dronecount>1 ? "were" : "was"] [dronecount] industrious maintenance [dronecount>1 ? "drones" : "drone"] this round.</b>"
mode.declare_completion()//To declare normal completion.
+23 -18
View File
@@ -10,7 +10,7 @@
restricted_jobs = list("AI", "Cyborg", "Mobile MMI", "Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Chaplain", "Security Pod Pilot", "Nanotrasen Recruiter", "Magistrate") //Consistent screening has filtered all infiltration attempts on high value jobs
protected_jobs = list()
required_players = 1
required_players_secret = 15
required_players_secret = 10
required_enemies = 1
recommended_enemies = 4
@@ -77,7 +77,8 @@
for(var/datum/mind/vampire in vampires)
grant_vampire_powers(vampire.current)
vampire.special_role = "Vampire"
forge_vampire_objectives(vampire)
if(!config.objectives_disabled)
forge_vampire_objectives(vampire)
greet_vampire(vampire)
spawn (rand(waittime_l, waittime_h))
@@ -105,28 +106,29 @@
if(vampire.objectives.len)//If the traitor had no objectives, don't need to process this.
var/count = 1
for(var/datum/objective/objective in vampire.objectives)
if(objective.check_completion())
text += "<br><B>Objective #[count]</B>: [objective.explanation_text] <font color='green'><B>Success!</B></font>"
feedback_add_details("traitor_objective","[objective.type]|SUCCESS")
else
text += "<br><B>Objective #[count]</B>: [objective.explanation_text] <font color='red'>Fail.</font>"
feedback_add_details("traitor_objective","[objective.type]|FAIL")
traitorwin = 0
count++
if (!config.objectives_disabled)
for(var/datum/objective/objective in vampire.objectives)
if(objective.check_completion())
text += "<br><B>Objective #[count]</B>: [objective.explanation_text] <font color='green'><B>Success!</B></font>"
feedback_add_details("traitor_objective","[objective.type]|SUCCESS")
else
text += "<br><B>Objective #[count]</B>: [objective.explanation_text] <font color='red'>Fail.</font>"
feedback_add_details("traitor_objective","[objective.type]|FAIL")
traitorwin = 0
count++
var/special_role_text
if(vampire.special_role)
special_role_text = lowertext(vampire.special_role)
else
special_role_text = "antagonist"
if(traitorwin)
text += "<br><font color='green'><B>The [special_role_text] was successful!</B></font>"
feedback_add_details("traitor_success","SUCCESS")
else
text += "<br><font color='red'><B>The [special_role_text] has failed!</B></font>"
feedback_add_details("traitor_success","FAIL")
if (!config.objectives_disabled)
if(traitorwin)
text += "<br><font color='green'><B>The [special_role_text] was successful!</B></font>"
feedback_add_details("traitor_success","SUCCESS")
else
text += "<br><font color='red'><B>The [special_role_text] has failed!</B></font>"
feedback_add_details("traitor_success","FAIL")
world << text
return 1
@@ -151,6 +153,9 @@
/datum/game_mode/proc/forge_vampire_objectives(var/datum/mind/vampire)
//Objectives are traitor objectives plus blood objectives
if (config.objectives_disabled)
return
var/datum/objective/blood/blood_objective = new
blood_objective.owner = vampire
blood_objective.gen_amount_goal(150, 400)
+40 -1
View File
@@ -151,7 +151,7 @@ var/global/list/autolathe_recipes_hidden = list( \
if(istype(user, /mob/living/carbon/human))
var/mob/living/carbon/human/M = user
if(M.h_style == "Floorlength Braid" || M.h_style == "Very Long Hair")
if(prob(25))
if(prob(10))
M.apply_damage(30, BRUTE, "head")
M.apply_damage(45, HALLOSS)
M.visible_message("\red [user]'s hair catches in the [src]!", "\red Your hair gets caught in the [src]!")
@@ -407,3 +407,42 @@ var/global/list/autolathe_recipes_hidden = list( \
w -= src.shock_wire
src.disable_wire = pick(w)
w -= src.disable_wire
MouseDrop_T(mob/living/carbon/human/target as mob, mob/user as mob)
if (!istype(target) || target.buckled || get_dist(user, src) > 1 || get_dist(user, target) > 1 || user.stat || istype(user, /mob/living/silicon/ai))
return
if(target == user)
if(target.h_style == "Floorlength Braid" || target.h_style == "Very Long Hair")
user.visible_message("\blue [user] looks like they're about to feed their own hair into the [src], but think better of it.", "\blue You grasp your hair and are about to feed it into the [src], but stop and come to your sense.")
return
src.add_fingerprint(user)
var/target_loc = target.loc
if(target != user && !user.restrained() && !user.stat && !user.weakened && !user.stunned && !user.paralysis)
if(target.h_style != "Cut Hair" || target.h_style != "Short Hair" || target.h_style != "Skinhead" || target.h_style != "Buzzcut" || target.h_style != "Crewcut" || target.h_style != "Bald" || target.h_style != "Balding Hair")
user.visible_message("\red [user] starts feeding [target]'s hair into the [src]!", "\red You start feeding [target]'s hair into the [src]!")
if(!do_after(usr, 50))
return
if(target_loc != target.loc)
return
if(target != user && !user.restrained() && !user.stat && !user.weakened && !user.stunned && !user.paralysis)
user.visible_message("\red [user] feeds the [target]'s hair into the [src] and flicks it on!", "\red You turn the [src] on!")
target.apply_damage(30, BRUTE, "head")
target.apply_damage(25, HALLOSS)
target.say("*scream")
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Has fed [target.name]'s ([target.ckey]) hair into a [src].</font>")
target.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has had their hair fed into [src] by [user.name] ([user.ckey])</font>")
msg_admin_attack("[user] ([user.ckey]) fed [target]'s ([target.ckey]) in a [src]. (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[user.x];Y=[user.y];Z=[user.z]'>JMP</a>)")
else
return
if(!do_after(usr, 35))
return
if(target_loc != target.loc)
return
if(target != user && !user.restrained() && !user.stat && !user.weakened && !user.stunned && !user.paralysis)
user.visible_message("\red [user] starts tugging on [target]'s head as the [src] keeps running!", "\red You start tugging on [target]'s head!")
target.apply_damage(25, BRUTE, "head")
target.apply_damage(10, HALLOSS)
target.say("*scream")
spawn(10)
user.visible_message("\red [user] stops the [src] and leaves [target] resting as they are.", "\red You turn the [src] off and let go of [target].")
+2 -2
View File
@@ -72,7 +72,7 @@ obj/machinery/computer/cryopod/Topic(href, href_list)
user << "\blue There is nothing to recover from storage."
return
var/obj/item/I = input(usr, "Please choose which object to retrieve.","Object recovery",null) as obj in frozen_items
var/obj/item/I = input(usr, "Please choose which object to retrieve.","Object recovery",null) as null|obj in frozen_items
if(!I || frozen_items.len == 0)
user << "\blue There is nothing to recover from storage."
@@ -240,7 +240,7 @@ obj/machinery/computer/cryopod/Topic(href, href_list)
current_mode.possible_traitors.Remove(occupant)
// Delete them from datacore.
if(PDA_Manifest.len)
PDA_Manifest.Cut()
for(var/datum/data/record/R in data_core.medical)
+1 -1
View File
@@ -82,7 +82,7 @@
if(istype(user, /mob/living/carbon/human))
var/mob/living/carbon/human/M = user
if(M.h_style == "Floorlength Braid" || M.h_style == "Very Long Hair")
if(prob(25))
if(prob(10))
M.apply_damage(30, BRUTE, "head")
M.apply_damage(45, HALLOSS)
M.visible_message("\red [user]'s hair catches in the [src]!", "\red Your hair gets caught in the [src]!")
+40 -1
View File
@@ -555,7 +555,7 @@
if(istype(user, /mob/living/carbon/human))
var/mob/living/carbon/human/M = user
if(M.h_style == "Floorlength Braid" || M.h_style == "Very Long Hair")
if(prob(25))
if(prob(10))
M.apply_damage(30, BRUTE, "head")
M.apply_damage(45, HALLOSS)
M.visible_message("\red [user]'s hair catches in the [src]!", "\red Your hair gets caught in the [src]!")
@@ -850,3 +850,42 @@
else
user << "The fabricator cannot hold more [sname]."
return
/obj/machinery/mecha_part_fabricator/MouseDrop_T(mob/living/carbon/human/target as mob, mob/user as mob)
if (!istype(target) || target.buckled || get_dist(user, src) > 1 || get_dist(user, target) > 1 || user.stat || istype(user, /mob/living/silicon/ai))
return
if(target == user)
if(target.h_style == "Floorlength Braid" || target.h_style == "Very Long Hair")
user.visible_message("\blue [user] looks like they're about to feed their own hair into the [src], but think better of it.", "\blue You grasp your hair and are about to feed it into the [src], but stop and come to your sense.")
return
src.add_fingerprint(user)
var/target_loc = target.loc
if(target != user && !user.restrained() && !user.stat && !user.weakened && !user.stunned && !user.paralysis)
if(target.h_style != "Cut Hair" || target.h_style != "Short Hair" || target.h_style != "Skinhead" || target.h_style != "Buzzcut" || target.h_style != "Crewcut" || target.h_style != "Bald" || target.h_style != "Balding Hair")
user.visible_message("\red [user] starts feeding [target]'s hair into the [src]!", "\red You start feeding [target]'s hair into the [src]!")
if(!do_after(usr, 50))
return
if(target_loc != target.loc)
return
if(target != user && !user.restrained() && !user.stat && !user.weakened && !user.stunned && !user.paralysis)
user.visible_message("\red [user] feeds the [target]'s hair into the [src] and flicks it on!", "\red You turn the [src] on!")
target.apply_damage(30, BRUTE, "head")
target.apply_damage(25, HALLOSS)
target.say("*scream")
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Has fed [target.name]'s ([target.ckey]) hair into a [src].</font>")
target.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has had their hair fed into [src] by [user.name] ([user.ckey])</font>")
msg_admin_attack("[user] ([user.ckey]) fed [target]'s ([target.ckey]) in a [src]. (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[user.x];Y=[user.y];Z=[user.z]'>JMP</a>)")
else
return
if(!do_after(usr, 35))
return
if(target_loc != target.loc)
return
if(target != user && !user.restrained() && !user.stat && !user.weakened && !user.stunned && !user.paralysis)
user.visible_message("\red [user] starts tugging on [target]'s head as the [src] keeps running!", "\red You start tugging on [target]'s head!")
target.apply_damage(25, BRUTE, "head")
target.apply_damage(10, HALLOSS)
target.say("*scream")
spawn(10)
user.visible_message("\red [user] stops the [src] and leaves [target] resting as they are.", "\red You turn the [src] off and let go of [target].")
+51 -13
View File
@@ -7,22 +7,30 @@
desc = "A kit containing all the needed tools and parts to modify a hardsuit for another user."
icon_state = "modkit"
var/parts = MODKIT_FULL
var/from_helmet = /obj/item/clothing/head/helmet/space/rig
var/from_suit = /obj/item/clothing/suit/space/rig
var/to_helmet = /obj/item/clothing/head/cardborg
var/to_suit = /obj/item/clothing/suit/cardborg
var/list/from_helmet = list(/obj/item/clothing/head/helmet/space/rig)
var/list/from_suit = list(/obj/item/clothing/suit/space/rig)
var/list/to_helmet = list(/obj/item/clothing/head/cardborg)
var/list/to_suit = list(/obj/item/clothing/suit/cardborg)
/obj/item/device/modkit/afterattack(obj/O, mob/user as mob)
var/flag
var/to_type
if(istype(O,from_helmet))
flag = MODKIT_HELMET
to_type = to_helmet
else if(istype(O,from_suit))
flag = MODKIT_SUIT
to_type = to_suit
else
for(var/i = 1, i <= from_helmet.len, i++)
// msg_scopes("[from_helmet[i]]")
if(istype(O, from_helmet[i]))
to_type = to_helmet[i]
flag = MODKIT_HELMET
break
if(istype(O, from_suit[i]))
flag = MODKIT_SUIT
to_type = to_suit[i]
break
if(!flag)
return
if(!(parts & flag))
user << "<span class='warning'>This kit has no parts for this modification left.</span>"
return
@@ -33,6 +41,7 @@
user << "<span class='warning'>[O] must be safely placed on the ground for modification.</span>"
return
playsound(user.loc, 'sound/items/Screwdriver.ogg', 100, 1)
msg_scopes("[to_type]")
var/N = new to_type(O.loc)
user.visible_message("\red [user] opens \the [src] and modifies \the [O] into \the [N].","\red You open \the [src] and modify \the [O] into \the [N].")
del(O)
@@ -43,5 +52,34 @@
/obj/item/device/modkit/tajaran
name = "tajara hardsuit modification kit"
desc = "A kit containing all the needed tools and parts to modify a hardsuit for another user. This one looks like it's meant for Tajara."
to_helmet = /obj/item/clothing/head/helmet/space/rig/tajara
to_suit = /obj/item/clothing/suit/space/rig/tajara
//Keep the lists in matching orders to the relative type and keep the parents at the end.
// /obj/item/clothing/head/helmet/space/rig <- is a parent //i love you, sounds.
from_helmet = list(/obj/item/clothing/head/helmet/space/rig/security, /obj/item/clothing/head/helmet/space/rig/medical, /obj/item/clothing/head/helmet/space/rig/atmos, /obj/item/clothing/head/helmet/space/rig)
to_helmet = list(/obj/item/clothing/head/helmet/space/rig/security/tajara, /obj/item/clothing/head/helmet/space/rig/medical/tajara, /obj/item/clothing/head/helmet/space/rig/atmos/tajara, /obj/item/clothing/head/helmet/space/rig/tajara)
from_suit = list(/obj/item/clothing/suit/space/rig/security, /obj/item/clothing/suit/space/rig/medical, /obj/item/clothing/suit/space/rig/atmos, /obj/item/clothing/suit/space/rig)
to_suit = list(/obj/item/clothing/suit/space/rig/security/tajara, /obj/item/clothing/suit/space/rig/medical/tajara, /obj/item/clothing/suit/space/rig/atmos/tajara, /obj/item/clothing/suit/space/rig/tajara)
/obj/item/device/modkit/unathi
name = "unathi hardsuit modification kit"
desc = "A kit containing all the needed tools and parts to modify a hardsuit for another user. This one looks like it's meant for Unathi."
from_helmet = list(/obj/item/clothing/head/helmet/space/rig/security, /obj/item/clothing/head/helmet/space/rig/medical, /obj/item/clothing/head/helmet/space/rig/atmos, /obj/item/clothing/head/helmet/space/rig)
to_helmet = list(/obj/item/clothing/head/helmet/space/rig/security/unathi, /obj/item/clothing/head/helmet/space/rig/medical/unathi, /obj/item/clothing/head/helmet/space/rig/atmos/unathi, /obj/item/clothing/head/helmet/space/rig/unathi)
from_suit = list(/obj/item/clothing/suit/space/rig/security, /obj/item/clothing/suit/space/rig/medical, /obj/item/clothing/suit/space/rig/atmos, /obj/item/clothing/suit/space/rig)
to_suit = list(/obj/item/clothing/suit/space/rig/security/unathi, /obj/item/clothing/suit/space/rig/medical/unathi, /obj/item/clothing/suit/space/rig/atmos/unathi, /obj/item/clothing/suit/space/rig/unathi)
/obj/item/device/modkit/skrell
name = "skrell hardsuit modification kit"
desc = "A kit containing all the needed tools and parts to modify a hardsuit for another user. This one looks like it's meant for Skrell."
from_helmet = list(/obj/item/clothing/head/helmet/space/rig/security, /obj/item/clothing/head/helmet/space/rig/medical, /obj/item/clothing/head/helmet/space/rig/atmos, /obj/item/clothing/head/helmet/space/rig)
to_helmet = list(/obj/item/clothing/head/helmet/space/rig/security/skrell, /obj/item/clothing/head/helmet/space/rig/medical/skrell, /obj/item/clothing/head/helmet/space/rig/atmos/skrell, /obj/item/clothing/head/helmet/space/rig/skrell)
from_suit = list(/obj/item/clothing/suit/space/rig/security, /obj/item/clothing/suit/space/rig/medical, /obj/item/clothing/suit/space/rig/atmos, /obj/item/clothing/suit/space/rig)
to_suit = list(/obj/item/clothing/suit/space/rig/security/skrell, /obj/item/clothing/suit/space/rig/medical/skrell, /obj/item/clothing/suit/space/rig/atmos/skrell, /obj/item/clothing/suit/space/rig/skrell)
+3 -3
View File
@@ -89,7 +89,7 @@ REAGENT SCANNER
if (!(istype(usr, /mob/living/carbon/human) || ticker) && ticker.mode.name != "monkey")
usr << "\red You don't have the dexterity to do this!"
return
user.visible_message("<span class='notice'> [user] has analyzed [M]'s vitals.","<span class='notice'> You have analyzed [M]'s vitals.")
user.visible_message("<span class='notice'> [user] has analyzed [M]'s vitals.</span>","<span class='notice'> You have analyzed [M]'s vitals.</span>")
var/fake_oxy = max(rand(1,40), M.getOxyLoss(), (300 - (M.getToxLoss() + M.getFireLoss() + M.getBruteLoss())))
var/OX = M.getOxyLoss() > 50 ? "<b>[M.getOxyLoss()]</b>" : M.getOxyLoss()
var/TX = M.getToxLoss() > 50 ? "<b>[M.getToxLoss()]</b>" : M.getToxLoss()
@@ -177,9 +177,9 @@ REAGENT SCANNER
var/blood_type = M.dna.b_type
blood_percent *= 100
if(blood_volume <= 500 && blood_volume > 336)
user.show_message("\red <b>Warning: Blood Level LOW: [blood_percent]% [blood_volume]cl.\blue Type: [blood_type]")
user.show_message("\red <b>Warning: Blood Level LOW: [blood_percent]% [blood_volume]cl.\blue Type: [blood_type]</b>")
else if(blood_volume <= 336)
user.show_message("\red <b>Warning: Blood Level CRITICAL: [blood_percent]% [blood_volume]cl.\blue Type: [blood_type]")
user.show_message("\red <b>Warning: Blood Level CRITICAL: [blood_percent]% [blood_volume]cl.\blue Type: [blood_type]</b>")
else
user.show_message("\blue Blood Level Normal: [blood_percent]% [blood_volume]cl. Type: [blood_type]")
user.show_message("\blue Subject's pulse: <font color='[H.pulse == PULSE_THREADY || H.pulse == PULSE_NONE ? "red" : "blue"]'>[H.get_pulse(GETPULSE_TOOL)] bpm.</font>")
+41 -1
View File
@@ -595,4 +595,44 @@
item_state = "inflatable"
flags = FPRINT | TABLEPASS
icon = 'icons/obj/clothing/belts.dmi'
slot_flags = SLOT_BELT
slot_flags = SLOT_BELT
/obj/item/toy/teddy
name = "toy monkey"
desc = "Diaper sold seperately."
icon = 'icons/obj/toy.dmi'
icon_state = "monkey"
w_class = 2
force = 1
throwforce = 2
var/headless = 0
attack_self(mob/user as mob)
if(user.a_intent == "hurt")
if(headless == 1)
user.visible_message("<span class='warning'>[user] stares at [src] full of anger, but elects not to tear any more limbs off of it.</span>", "<span class='notice'>You've already ripped [src]'s head off, what else do you want to do to it!?</span>")
else
user.visible_message("<span class='warning'>[user] clutches [src] with anger, and rips its head off, dropping it to the ground!</span>", "<span class='warning'>You are unable to contain your anger any longer! Off with its head!</span>")
headless = 1
var/turf/T = get_turf(user)
if(istype(src, /obj/item/toy/teddy))
new /obj/item/toy/teddy_head(T)
if(istype(src, /obj/item/toy/teddy/fluff/jenifer_bear))
new /obj/item/toy/fluff/jenifer_bear_head(T)
desc = "[initial(desc)] \red It's lacking a head!"
icon_state = "[initial(icon_state)]_headless"
src.update_icon()
else
if(headless == 1)
user.visible_message("<span class='notice'>[user] clutches [src] with both arms, weeping slightly as they embrace the headless toy.</span>", "<span class='notice'>You clutch the toy, shivering and weeping slightly. Who would do such a monsterous thing?</span>")
else
user.visible_message("<span class='notice'>[user] clutches [src] and embraces it!</span>", "<span class='notice'>You hug the toy, and suddenly feel how the weight of the world is lifted from your shoulders!</span>")
/obj/item/toy/teddy_head
name = "\improper teddybear head"
desc = "The head of a brown teddy, cruelly torn from its original body. You can see stuffing fall out of it."
icon = 'icons/obj/toy.dmi'
icon_state = "monkey_head"
w_class = 1
force = 1
throwforce = 1
+2
View File
@@ -91,9 +91,11 @@
if(charges >= 2)
H.Weaken(10)
H.adjustOxyLoss(10)
H.apply_damage(10, BURN, "chest")
else
H.Weaken(5)
H.adjustOxyLoss(5)
H.apply_damage(5, BURN, "chest")
H.updatehealth() //forces health update before next life tick
spark_system.attach(M)
spark_system.set_up(5, 0, M)
@@ -363,6 +363,7 @@
if (prob(15)) M.Weaken(5)
M.apply_damage(8,def_zone = "head")
visible_message("\red [G.assailant] slams [G.affecting]'s face against \the [src]!")
msg_admin_attack("[user.name]([user.ckey]) slams [M.name]'s([M.ckey]) face against \the [src]!")
playsound(src.loc, 'sound/weapons/tablehit1.ogg', 50, 1)
else
user << "\red You need a better grip to do that!"
+3
View File
@@ -180,17 +180,20 @@
M.apply_damage(7)
hit(10)
visible_message("\red [user] slams [M] against \the [src]!")
msg_admin_attack("[user.name]([user.ckey]) slams [M.name]'s([M.ckey]) against \the [src]!")
if(2)
if (prob(50))
M.Weaken(1)
M.apply_damage(10)
hit(25)
visible_message("\red <b>[user] bashes [M] against \the [src]!</b>")
msg_admin_attack("[user.name]([user.ckey]) bashes [M.name]'s([M.ckey]) against \the [src]!")
if(3)
M.Weaken(5)
M.apply_damage(20)
hit(50)
visible_message("\red <big><b>[user] crushes [M] against \the [src]!</b></big>")
msg_admin_attack("[user.name]([user.ckey]) crushes [M.name]'s([M.ckey]) against \the [src]!")
return
if(istype(W, /obj/item/weapon/screwdriver))
if(reinf && state >= 1)
+22
View File
@@ -151,6 +151,28 @@
//get the user's location
if( !istype(user.loc, /turf) ) return //can't do this stuff whilst inside objects and such
if (istype(W, /obj/item/weapon/grab) && get_dist(src,user)<2)
var/obj/item/weapon/grab/G = W
if (istype(G.affecting, /mob/living))
var/mob/living/M = G.affecting
if (G.state < 2)
if(user.a_intent == "hurt")
if (prob(15)) M.Weaken(5)
M.apply_damage(8,def_zone = "head")
visible_message("\red [G.assailant] slams [G.affecting]'s face against \the [src]!")
msg_admin_attack("[user.name]([user.ckey]) slams [M.name]'s([M.ckey]) face against \the [src]!")
// switch(rand(1,3))
// if(1)
// playsound(src.loc, 'sound/weapons/genhit1.ogg', 50, 1)
// if(2)
// playsound(src.loc, 'sound/weapons/genhit2.ogg', 50, 1)
// if(3)
// playsound(src.loc, 'sound/weapons/genhit3.ogg', 50, 1)
return
else
user << "\red You need a better grip to do that!"
return
if(rotting)
if(istype(W, /obj/item/weapon/weldingtool) )
var/obj/item/weapon/weldingtool/WT = W
@@ -39,6 +39,28 @@
//get the user's location
if( !istype(user.loc, /turf) ) return //can't do this stuff whilst inside objects and such
if (istype(W, /obj/item/weapon/grab) && get_dist(src,user)<2)
var/obj/item/weapon/grab/G = W
if (istype(G.affecting, /mob/living))
var/mob/living/M = G.affecting
if (G.state < 2)
if(user.a_intent == "hurt")
if (prob(15)) M.Weaken(5)
M.apply_damage(16,def_zone = "head")
visible_message("\red [G.assailant] slams [G.affecting]'s face against \the [src]!")
msg_admin_attack("[user.name]([user.ckey]) slams [M.name]'s([M.ckey]) face against \the [src]!")
// switch(rand(1,3))
// if(1)
// playsound(src.loc, 'sound/weapons/genhit1.ogg', 50, 1)
// if(2)
// playsound(src.loc, 'sound/weapons/genhit2.ogg', 50, 1)
// if(3)
// playsound(src.loc, 'sound/weapons/genhit3.ogg', 50, 1)
return
else
user << "\red You need a better grip to do that!"
return
if(rotting)
if(istype(W, /obj/item/weapon/weldingtool) )
var/obj/item/weapon/weldingtool/WT = W
+2 -1
View File
@@ -903,7 +903,8 @@ var/list/admin_verbs_mod = list(
"Delta",
)
var/input = input("Select the alert level.", "Alert Level", null, null) in L
var/current_level = get_security_level()
var/input = input("Select the alert level.", "Alert Level -( [current_level] )", null, null) in L
switch(input)
if("Green")
set_security_level(SEC_LEVEL_GREEN)
+15
View File
@@ -60,6 +60,7 @@
bst.equip_to_slot_or_del(new /obj/item/weapon/storage/box/ids(bst.back), slot_in_backpack)
bst.equip_to_slot_or_del(new /obj/item/device/t_scanner(bst.back), slot_in_backpack)
bst.equip_to_slot_or_del(new /obj/item/device/signaltool(bst.back), slot_in_backpack)
bst.equip_to_slot_or_del(new /obj/item/device/pda/captain/bst(bst.back), slot_in_backpack)
//Implant because access
var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(bst)
@@ -260,5 +261,19 @@
else
..()
/obj/item/device/pda/captain/bst
hidden = 1
silent = 1
// ttone = "DO SOMETHING HERE"
attack_hand()
if(!usr)
return
if(!istype(usr, /mob/living/carbon/human/bst))
usr << "<span class='alert'>Your hand seems to go right through the pda. It's like it doesn't exist.</span>"
return
else
..()
/mob/living/carbon/human/bst/restrained()
return 0
+207
View File
@@ -282,3 +282,210 @@
item_state = "syndie_hardsuit"
icon_state = "rig-syndie-human"
species_restricted = list("Human")
//BEGIN NEW ALIEN HARDSUIT ATTEMPT.
/obj/item/clothing/suit/space/rig/security/tajara
icon_state = "rig-sec" //change this when you can stop being dumb
desc = "A special suit that protects against hazardous, low pressure environments. Has an additional layer of armor."
item_state = "sec_hardsuit"
species_restricted = list("Tajaran")
/obj/item/clothing/suit/space/rig/security/skrell
icon_state = "rig-sec"
desc = "A special suit that protects against hazardous, low pressure environments. Has an additional layer of armor."
item_state = "sec_hardsuit"
species_restricted = list("Skrell")
/obj/item/clothing/suit/space/rig/security/unathi
icon_state = "rig-sec"
desc = "A special suit that protects against hazardous, low pressure environments. Has an additional layer of armor."
item_state = "sec_hardsuit"
species_restricted = list("Unathi")
/obj/item/clothing/head/helmet/space/rig/security/tajara
name = "security hardsuit helmet"
desc = "A special helmet designed for work in a hazardous, low pressure environment. Has an additional layer of armor."
icon_state = "rig0-sec"
item_state = "sec_helm"
species_restricted = list("Tajaran")
/obj/item/clothing/head/helmet/space/rig/security/unathi
name = "security hardsuit helmet"
desc = "A special helmet designed for work in a hazardous, low pressure environment. Has an additional layer of armor."
icon_state = "rig0-sec"
item_state = "sec_helm"
species_restricted = list("Unathi")
/obj/item/clothing/head/helmet/space/rig/security/skrell
name = "security hardsuit helmet"
desc = "A special helmet designed for work in a hazardous, low pressure environment. Has an additional layer of armor."
icon_state = "rig0-sec"
item_state = "sec_helm"
species_restricted = list("Skrell")
/obj/item/clothing/suit/space/rig/atmos/tajara
icon_state = "rig-atmos" //change this when you can stop being dumb
desc = "A special suit that protects against hazardous, low pressure environments. Has improved thermal protection and minor radiation shielding."
item_state = "atmos_hardsuit"
species_restricted = list("Tajaran")
/obj/item/clothing/suit/space/rig/atmos/skrell
icon_state = "rig-atmos"
desc = "A special suit that protects against hazardous, low pressure environments. Has improved thermal protection and minor radiation shielding."
item_state = "atmos_hardsuit"
species_restricted = list("Skrell")
/obj/item/clothing/suit/space/rig/atmos/unathi
icon_state = "rig-atmos"
desc = "A special suit that protects against hazardous, low pressure environments. Has improved thermal protection and minor radiation shielding."
item_state = "atmos_hardsuit"
species_restricted = list("Unathi")
/obj/item/clothing/head/helmet/space/rig/atmos/tajara
desc = "A special helmet designed for work in a hazardous, low pressure environments. Has improved thermal protection and minor radiation shielding."
name = "atmospherics hardsuit helmet"
icon_state = "rig0-atmos"
item_state = "atmos_helm"
species_restricted = list("Tajaran")
/obj/item/clothing/head/helmet/space/rig/atmos/unathi
desc = "A special helmet designed for work in a hazardous, low pressure environments. Has improved thermal protection and minor radiation shielding."
name = "atmospherics hardsuit helmet"
icon_state = "rig0-atmos"
item_state = "atmos_helm"
species_restricted = list("Unathi")
/obj/item/clothing/head/helmet/space/rig/atmos/skrell
desc = "A special helmet designed for work in a hazardous, low pressure environments. Has improved thermal protection and minor radiation shielding."
name = "atmospherics hardsuit helmet"
icon_state = "rig0-atmos"
item_state = "atmos_helm"
species_restricted = list("Skrell")
/obj/item/clothing/suit/space/rig/medical/tajara
icon_state = "rig-medical"
name = "medical hardsuit"
desc = "A special suit that protects against hazardous, low pressure environments. Has minor radiation shielding."
item_state = "medical_hardsuit"
species_restricted = list("Tajaran")
/obj/item/clothing/suit/space/rig/medical/unathi
icon_state = "rig-medical"
name = "medical hardsuit"
desc = "A special suit that protects against hazardous, low pressure environments. Has minor radiation shielding."
item_state = "medical_hardsuit"
species_restricted = list("Unathi")
/obj/item/clothing/suit/space/rig/medical/skrell
icon_state = "rig-medical"
name = "medical hardsuit"
desc = "A special suit that protects against hazardous, low pressure environments. Has minor radiation shielding."
item_state = "medical_hardsuit"
species_restricted = list("Skrell")
/obj/item/clothing/head/helmet/space/rig/medical/tajara
name = "medical hardsuit helmet"
desc = "A special helmet designed for work in a hazardous, low pressure environment. Has minor radiation shielding."
icon_state = "rig0-medical"
item_state = "medical_helm"
species_restricted = list("tajara")
/obj/item/clothing/head/helmet/space/rig/medical/unathi
name = "medical hardsuit helmet"
desc = "A special helmet designed for work in a hazardous, low pressure environment. Has minor radiation shielding."
icon_state = "rig0-medical"
item_state = "medical_helm"
species_restricted = list("unathi")
/obj/item/clothing/head/helmet/space/rig/medical/skrell
name = "medical hardsuit helmet"
desc = "A special helmet designed for work in a hazardous, low pressure environment. Has minor radiation shielding."
icon_state = "rig0-medical"
item_state = "medical_helm"
species_restricted = list("Skrell")
/obj/item/clothing/suit/space/rig/mining/tajara
icon_state = "rig-mining"
name = "mining hardsuit"
desc = "A special suit that protects against hazardous, low pressure environments. Has reinforced plating."
item_state = "mining_hardsuit"
species_restricted = list("Tajaran")
/obj/item/clothing/suit/space/rig/mining/unathi
icon_state = "rig-mining"
name = "mining hardsuit"
desc = "A special suit that protects against hazardous, low pressure environments. Has reinforced plating."
item_state = "mining_hardsuit"
species_restricted = list("Unathi")
/obj/item/clothing/suit/space/rig/mining/skrell
icon_state = "rig-mining"
name = "mining hardsuit"
desc = "A special suit that protects against hazardous, low pressure environments. Has reinforced plating."
item_state = "mining_hardsuit"
species_restricted = list("Skrell")
/obj/item/clothing/head/helmet/space/rig/mining/tajara
name = "mining hardsuit helmet"
desc = "A special helmet designed for work in a hazardous, low pressure environment. Has reinforced plating."
icon_state = "rig0-mining"
item_state = "mining_helm"
species_restricted = list("Tajaran")
/obj/item/clothing/head/helmet/space/rig/mining/unathi
name = "mining hardsuit helmet"
desc = "A special helmet designed for work in a hazardous, low pressure environment. Has reinforced plating."
icon_state = "rig0-mining"
item_state = "mining_helm"
species_restricted = list("Unathi")
/obj/item/clothing/head/helmet/space/rig/mining/skrell
name = "mining hardsuit helmet"
desc = "A special helmet designed for work in a hazardous, low pressure environment. Has reinforced plating."
icon_state = "rig0-mining"
item_state = "mining_helm"
species_restricted = list("Skrell")
/*
/obj/item/clothing/suit/space/rig/tajara
name = "engineering hardsuit"
desc = "A special suit that protects against hazardous, low pressure environments. Has radiation shielding."
icon_state = "rig-engineering"
item_state = "eng_hardsuit"
species_restricted = list("Tajaran")
*/
/obj/item/clothing/suit/space/rig/unathi
name = "engineering hardsuit"
desc = "A special suit that protects against hazardous, low pressure environments. Has radiation shielding."
icon_state = "rig-engineering"
item_state = "eng_hardsuit"
species_restricted = list("Unathi")
/obj/item/clothing/suit/space/rig/skrell
name = "engineering hardsuit"
desc = "A special suit that protects against hazardous, low pressure environments. Has radiation shielding."
icon_state = "rig-engineering"
item_state = "eng_hardsuit"
species_restricted = list("Skrell")
/*
/obj/item/clothing/head/helmet/space/rig/tajara
name = "engineering hardsuit helmet"
desc = "A special helmet designed for work in a hazardous, low-pressure environment. Has radiation shielding."
icon_state = "rig0-engineering"
item_state = "eng_helm"
species_restricted = list("Tajaran")
*/
/obj/item/clothing/head/helmet/space/rig/unathi
name = "engineering hardsuit helmet"
desc = "A special helmet designed for work in a hazardous, low-pressure environment. Has radiation shielding."
icon_state = "rig0-engineering"
item_state = "eng_helm"
species_restricted = list("Unathi")
/obj/item/clothing/head/helmet/space/rig/skrell
name = "engineering hardsuit helmet"
desc = "A special helmet designed for work in a hazardous, low-pressure environment. Has radiation shielding."
icon_state = "rig0-engineering"
item_state = "eng_helm"
species_restricted = list("Skrell")
+2 -23
View File
@@ -785,34 +785,13 @@
icon_state = "corpsoft"
item_color = "corp"
/obj/item/fluff/jenifer_bear //Doctor SnuggleBuns - Jenifer Clewett - bluesp34r - SPRITE
/obj/item/toy/teddy/fluff/jenifer_bear //Doctor SnuggleBuns - Jenifer Clewett - bluesp34r - SPRITE
name = "Doctor SnuggleBuns"
desc = "A fluffy-wuffy brown teddy bear! This one is wearing a blue lab coat, much like a Chief Medical Officer!"
icon = 'icons/obj/custom_items.dmi'
icon_state = "jenifer_bear"
w_class = 2
force = 1
throwforce = 2
var/headless = 0
attack_self(mob/user as mob)
if(user.a_intent == "hurt")
if(headless == 1)
user.visible_message("<span class='warning'>[user] stares at [src] full of anger, but elects not to tear any more limbs off of it.</span>", "<span class='notice'>You've already ripped [src]'s head off, what else do you want to do to it!?</span>")
else
user.visible_message("<span class='warning'>[user] clutches [src] with anger, and rips its head off, dropping it to the ground!</span>", "<span class='warning'>You are unable to contain your anger any longer! Off with its head!</span>")
headless = 1
var/turf/T = get_turf(user)
new /obj/item/fluff/jenifer_bear_head(T)
desc = "A fluffy-wuffy brown teddy bear! This one is wearing a blue lab coat, much like a Chief Medical Officer! \red It's lacking a head!"
update_icon()
else
if(headless == 1)
user.visible_message("<span class='notice'>[user] clutches [src] with both arms, weeping slightly as they embrace the headless toy.</span>", "<span class='notice'>You clutch the toy, shivering and weeping slightly. Who would do such a monsterous thing?</span>")
else
user.visible_message("<span class='notice'>[user] clutches [src] and embraces it!</span>", "<span class='notice'>You hug the toy, and suddenly feel how the weight of the world is lifted from your shoulders!</span>")
/obj/item/fluff/jenifer_bear_head
/obj/item/toy/fluff/jenifer_bear_head
name = "\improper teddybear head"
desc = "The head of a brown teddy, cruelly torn from its original body. You can see stuffing fall out of it."
icon = 'icons/obj/custom_items.dmi'
+24
View File
@@ -0,0 +1,24 @@
/obj/machinery/cooker/cerealmaker
name = "cereal maker"
desc = "Now with Dann O's available!"
icon = 'icons/obj/cooking_machines.dmi'
icon_state = "cereal_off"
thiscooktype = "cerealized"
cooktime = 200
onicon = "cereal_on"
officon = "cereal_off"
obj/machinery/cooker/cerealmaker/setIcon(obj/item/copyme, obj/item/copyto)
var/image/img = new(copyme.icon, copyme.icon_state)
img.transform *= 0.7
copyto.overlays += img
copyto.overlays += copyme.overlays
obj/machinery/cooker/cerealmaker/changename(obj/item/name, obj/item/setme)
setme.name = "box of [name] cereal"
setme.desc = "[name.desc] It has been [thiscooktype]"
obj/machinery/cooker/cerealmaker/gettype()
var/obj/item/weapon/reagent_containers/food/snacks/cereal/type = new(get_turf(src))
return type
+132
View File
@@ -0,0 +1,132 @@
/obj/machinery/cooker
name = "cooker"
desc = "You shouldn't be seeing this!"
layer = 2.9
density = 1
anchored = 1
use_power = 1
idle_power_usage = 5
var/on = 0
var/onicon = null
var/officon = null
var/thiscooktype = null
var/burns = 0 // whether a machine burns something - if it does, you probably want to add the cooktype to /snacks/badrecipe
var/firechance = 0
var/cooktime = 0
var/foodcolor = null
// checks if the snack has been cooked in a certain way
obj/machinery/cooker/proc/checkCooked(obj/item/weapon/reagent_containers/food/snacks/D)
if (D.cooktype[thiscooktype])
return 1
return 0
// Sets the new snack's cooktype list to the same as the old one - no more cooking something in the same machine more than once!
obj/machinery/cooker/proc/setCooked(obj/item/weapon/reagent_containers/food/snacks/oldtypes, obj/item/weapon/reagent_containers/food/snacks/newtypes)
var/ct
for(ct in oldtypes.cooktype)
newtypes.cooktype[ct] = oldtypes.cooktype[ct]
// transfers reagents
obj/machinery/cooker/proc/setRegents(obj/item/weapon/reagent_containers/OldReg, obj/item/weapon/reagent_containers/NewReg)
OldReg.reagents.trans_to(NewReg, OldReg.reagents.total_volume)
// check if you can put it in the machine
obj/machinery/cooker/proc/checkValid(obj/item/check, mob/user)
if(on)
user << "<span class='notice'>[src] is still active!</span>"
return 0
if(istype(check, /obj/item/weapon/grab) || istype(check, /obj/item/tk_grab))
user << "<span class='warning'>That isn't going to fit.</span>"
return 0
if(istype(check, /obj/item/weapon/reagent_containers/glass))
user << "<span class='warning'>That would probably break [src].</span>"
return 0
if(istype(check, /obj/item/weapon/disk/nuclear))
user << "Central command would kill you if you [thiscooktype] that."
return 0
/* if(istype(check, /obj/item/flag))
user << "<span class='warning'>That isn't going to fit.</span>"
return 0*/
return 1
obj/machinery/cooker/proc/setIcon(obj/item/copyme, obj/item/copyto)
copyto.color = foodcolor
copyto.icon = copyme.icon
copyto.icon_state = copyme.icon_state
copyto.overlays += copyme.overlays
obj/machinery/cooker/proc/turnoff(obj/item/olditem)
icon_state = officon
playsound(loc, 'sound/machines/ding.ogg', 50, 1)
on = 0
del(olditem)
return
// Burns the food with a chance of starting a fire - for if you try cooking something that's already been cooked that way
// if burns = 0 then it'll just tell you that the item is already that foodtype and it would do nothing
// if you wanted a different side effect set burns to 1 and override burn()
obj/machinery/cooker/proc/burn(mob/user, obj/item/weapon/reagent_containers/props)
var/obj/item/weapon/reagent_containers/food/snacks/badrecipe/burnt = new(get_turf(src))
setRegents(props, burnt)
user << "<span class='warning'>You smell burning coming from the [src]!</span>"
/* var/datum/effect/effect/system/bad_smoke_spread/smoke = new /datum/effect/effect/system/bad_smoke_spread() // burning things makes smoke!
smoke.set_up(5, 0, src)
smoke.start()*/
if (prob(firechance))
var/turf/location = get_turf(src)
var/obj/effect/decal/cleanable/liquid_fuel/oil = new(location)
oil.name = "fat"
oil.desc = "uh oh, looks like some fat from the [src]"
oil.loc = location
location.hotspot_expose(700, 50, 1)
//TODO have a chance of setting the tile on fire
obj/machinery/cooker/proc/changename(obj/item/name, obj/item/setme)
setme.name = "[thiscooktype] [name.name]"
setme.desc = "[name.desc]. It has been [thiscooktype]"
obj/machinery/cooker/proc/putIn(obj/item/tocook, mob/chef)
icon_state = onicon
chef << "<span class='notice'>You put [tocook] into [src].</span>"
on = 1
chef.drop_item()
tocook.loc = src
// Override this with the correct snack type
obj/machinery/cooker/proc/gettype()
var/obj/item/weapon/reagent_containers/food/snacks/type = new(get_turf(src))
return type
obj/machinery/cooker/attackby(obj/item/I, mob/user)
if(stat & (NOPOWER|BROKEN))
return
if (!checkValid(I, user))
return
if(!burns)
if(istype(I, /obj/item/weapon/reagent_containers/food/snacks))
if(checkCooked(I))
user << "<span class='warning'>That is already [thiscooktype], it would do nothing!</span>"
return
putIn(I, user)
sleep(cooktime)
if(I && I.loc == src)
if(istype(I, /obj/item/weapon/reagent_containers/food/snacks))
if(checkCooked(I))
burn(user, I)
turnoff(I)
return
var/obj/item/weapon/reagent_containers/food/snacks/newfood = gettype()
setIcon(I, newfood)
changename(I, newfood)
if(istype(I, /obj/item/weapon/reagent_containers))
setRegents(I, newfood)
if(istype(I, /obj/item/weapon/reagent_containers/food/snacks))
setCooked(I, newfood)
newfood.cooktype[thiscooktype] = 1
turnoff(I)
//del(I)
+484
View File
@@ -0,0 +1,484 @@
/obj/item/weapon/reagent_containers/food/snacks/breadslice/attackby(obj/item/W as obj, mob/user as mob)
var/obj/item/weapon/reagent_containers/food/snacks/customizable/sandwich/S = new(get_turf(user))
S.attackby(W,user)
del(src)
/obj/item/weapon/reagent_containers/food/snacks/bun/attackby(obj/item/W as obj, mob/user as mob)
var/obj/item/weapon/reagent_containers/food/snacks/customizable/burger/S = new(get_turf(user))
S.attackby(W,user)
del(src)
/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough/attackby(obj/item/W as obj, mob/user as mob)
var/obj/item/weapon/reagent_containers/food/snacks/customizable/pizza/S = new(get_turf(user))
S.attackby(W,user)
del(src)
/obj/item/weapon/reagent_containers/food/snacks/boiledspagetti/attackby(obj/item/W as obj, mob/user as mob)
var/obj/item/weapon/reagent_containers/food/snacks/customizable/pasta/S = new(get_turf(user))
S.attackby(W,user)
del(src)
/obj/item/trash/plate/attackby(obj/item/W as obj, mob/user as mob)
var/obj/item/weapon/reagent_containers/food/snacks/customizable/fullycustom/S = new(get_turf(user))
S.attackby(W,user)
del(src)
/obj/item/trash/bowl
name = "bowl"
desc = "An empty bowl. Put some food in it to start making a soup."
icon = 'icons/obj/food.dmi'
icon_state = "soup"
/obj/item/trash/bowl/attackby(obj/item/W as obj, mob/user as mob)
if(istype(W,/obj/item/))
var/obj/item/weapon/reagent_containers/food/snacks/customizable/soup/S = new(get_turf(user))
S.attackby(W,user)
del(src)
..()
/obj/item/weapon/reagent_containers/food/snacks/customizable/sandwich
/obj/item/weapon/reagent_containers/food/snacks/customizable
name = "sandwich"
desc = "A sandwich! A timeless classic."
icon_state = "breadslice"
baseicon = "sandwich"
basename = "sandwich"
toptype = new /obj/item/weapon/reagent_containers/food/snacks/breadslice()
/obj/item/weapon/reagent_containers/food/snacks/customizable
name = "sandwich"
desc = "A sandwich! A timeless classic."
icon_state = "breadslice"
var/baseicon = "sandwich"
var/basename = "sandwich"
var/top = 1 //Do we have a top?
var/obj/item/toptype
var/add_overlays = 1 //Do we stack?
// var/offsetstuff = 1 //Do we offset the overlays?
var/sandwich_limit = 40
var/fullycustom = 0
trash = /obj/item/trash/plate
bitesize = 2
var/list/ingredients = list()
New()
..()
reagents.add_reagent("nutriment", 8)
/obj/item/weapon/reagent_containers/food/snacks/customizable/pizza
name = "personal pizza"
desc = "A personalized pan pizza meant for only one person."
icon_state = "personal_pizza"
baseicon = "personal_pizza"
basename = "personal pizza"
add_overlays = 0
top = 0
/obj/item/weapon/reagent_containers/food/snacks/customizable/pasta
name = "spagetti"
desc = "Noodles. With stuff. Delicious."
icon_state = "pasta_bot"
baseicon = "pasta_bot"
basename = "spagetti"
add_overlays = 0
top = 0
/obj/item/weapon/reagent_containers/food/snacks/customizable/cook/bread
name = "bread"
desc = "Tasty bread."
icon_state = "breadcustom"
baseicon = "breadcustom"
basename = "bread"
add_overlays = 0
top = 0
/obj/item/weapon/reagent_containers/food/snacks/customizable/cook/pie
name = "pie"
desc = "Tasty pie."
icon_state = "piecustom"
baseicon = "piecustom"
basename = "pie"
add_overlays = 0
top = 0
/obj/item/weapon/reagent_containers/food/snacks/customizable/cook/cake
name = "cake"
desc = "A popular band."
icon_state = "cakecustom"
baseicon = "cakecustom"
basename = "cake"
add_overlays = 0
top = 0
/obj/item/weapon/reagent_containers/food/snacks/customizable/cook/jelly
name = "jelly"
desc = "Totally jelly."
icon_state = "jellycustom"
baseicon = "jellycustom"
basename = "jelly"
add_overlays = 0
top = 0
/obj/item/weapon/reagent_containers/food/snacks/customizable/cook/donkpocket
name = "donk pocket"
desc = "You wanna put a bangin-Oh nevermind."
icon_state = "donkcustom"
baseicon = "donkcustom"
basename = "donk pocket"
add_overlays = 0
top = 0
/obj/item/weapon/reagent_containers/food/snacks/customizable/cook/kebab
name = "kebab"
desc = "Kebab or Kabab?"
icon_state = "kababcustom"
baseicon = "kababcustom"
basename = "kebab"
add_overlays = 0
top = 0
/obj/item/weapon/reagent_containers/food/snacks/customizable/cook/salad
name = "salad"
desc = "Very tasty."
icon_state = "saladcustom"
baseicon = "saladcustom"
basename = "salad"
add_overlays = 0
top = 0
/obj/item/weapon/reagent_containers/food/snacks/customizable/cook/waffles
name = "waffles"
desc = "Made with love."
icon_state = "wafflecustom"
baseicon = "wafflecustom"
basename = "waffles"
add_overlays = 0
top = 0
/obj/item/weapon/reagent_containers/food/snacks/customizable/candy/cookie
name = "cookie"
desc = "COOKIE!!1!"
icon_state = "cookiecustom"
baseicon = "cookiecustom"
basename = "cookie"
add_overlays = 0
top = 0
/obj/item/weapon/reagent_containers/food/snacks/customizable/candy/cotton
name = "flavored cotton candy"
desc = "Who can take a sunrise, sprinkle it with dew,"
icon_state = "cottoncandycustom"
baseicon = "cottoncandycustom"
basename = "flavored cotton candy"
add_overlays = 0
top = 0
/obj/item/weapon/reagent_containers/food/snacks/customizable/candy/gummybear
name = "flavored giant gummy bear"
desc = "Cover it in chocolate and a miracle or two,"
icon_state = "gummybearcustom"
baseicon = "gummybearcustom"
basename = "flavored giant gummy bear"
add_overlays = 0
top = 0
/obj/item/weapon/reagent_containers/food/snacks/customizable/candy/gummyworm
name = "flavored giant gummy worm"
desc = "The Candy Man can 'cause he mixes it with love,"
icon_state = "gummywormcustom"
baseicon = "gummywormcustom"
basename = "flavored giant gummy worm"
add_overlays = 0
top = 0
/obj/item/weapon/reagent_containers/food/snacks/customizable/candy/jellybean
name = "flavored giant jelly bean"
desc = "And makes the world taste good."
icon_state = "jellybeancustom"
baseicon = "jellybeancustom"
basename = "flavored giant jelly bean"
add_overlays = 0
top = 0
/obj/item/weapon/reagent_containers/food/snacks/customizable/candy/jawbreaker
name = "flavored jawbreaker"
desc = "Who can take a rainbow, Wrap it in a sigh,"
icon_state = "jawbreakercustom"
baseicon = "jawbreakercustom"
basename = "flavored jawbreaker"
add_overlays = 0
top = 0
/obj/item/weapon/reagent_containers/food/snacks/customizable/candy/candycane
name = "flavored candy cane"
desc = "Soak it in the sun and make strawberry-lemon pie,"
icon_state = "candycanecustom"
baseicon = "candycanecustom"
basename = "flavored candy cane"
add_overlays = 0
top = 0
/obj/item/weapon/reagent_containers/food/snacks/customizable/candy/gum
name = "flavored gum"
desc = "The Candy Man can 'cause he mixes it with love and makes the world taste good. And the world tastes good 'cause the Candy Man thinks it should..."
icon_state = "gumcustom"
baseicon = "gumcustom"
basename = "flavored gum"
add_overlays = 0
top = 0
/obj/item/weapon/reagent_containers/food/snacks/customizable/candy/donut
name = "filled donut"
desc = "Donut eat this!" // kill me
icon_state = "donutcustom"
baseicon = "donutcustom"
basename = "filled donut"
add_overlays = 0
top = 0
/obj/item/weapon/reagent_containers/food/snacks/customizable/candy/bar
name = "flavored chocolate bar"
desc = "Made in a factory downtown."
icon_state = "barcustom"
baseicon = "barcustom"
basename = "flavored chocolate bar"
add_overlays = 0
top = 0
/obj/item/weapon/reagent_containers/food/snacks/customizable/candy/sucker
name = "flavored sucker"
desc = "Suck suck suck."
icon_state = "suckercustom"
baseicon = "suckercustom"
basename = "flavored sucker"
add_overlays = 0
top = 0
/obj/item/weapon/reagent_containers/food/snacks/customizable/candy/cash
name = "flavored chocolate cash"
desc = "I got piles!"
icon_state = "cashcustom"
baseicon = "cashcustom"
basename = "flavored cash"
add_overlays = 0
top = 0
/obj/item/weapon/reagent_containers/food/snacks/customizable/candy/coin
name = "flavored chocolate coin"
desc = "Clink, clink, clink."
icon_state = "coincustom"
baseicon = "coincustom"
basename = "flavored coin"
add_overlays = 0
top = 0
/obj/item/weapon/reagent_containers/food/snacks/customizable/fullycustom // In the event you fuckers find something I forgot to add a customizable food for.
name = "on a plate"
desc = "A unique dish."
icon_state = "fullycustom"
baseicon = "fullycustom"
basename = "on a plate"
add_overlays = 0
top = 0
sandwich_limit = 20
fullycustom = 1
/obj/item/weapon/reagent_containers/food/snacks/customizable/soup
name = "soup"
desc = "A bowl with liquid and... stuff in it."
icon_state = "soup"
baseicon = "soup"
basename = "soup"
add_overlays = 0
trash = /obj/item/trash/bowl
top = 0
/obj/item/weapon/reagent_containers/food/snacks/customizable/burger
name = "burger bun"
desc = "A bun for a burger. Delicious."
icon_state = "burger"
baseicon = "burger"
basename = "burger"
toptype = new /obj/item/weapon/reagent_containers/food/snacks/bun()
/obj/item/weapon/reagent_containers/food/snacks/customizable/attackby(obj/item/I, mob/user)
if(src.contents.len > sandwich_limit)
user << "<span class='warning'>If you put anything else in or on [src] it's going to make a mess.</span>"
return
if(istype(I, /obj/item/weapon/disk/nuclear))
user << "You think about it for a few seconds, then you realize Central Command likely doesn't find nuke disk [basename]s very funny, and so you decide not to turn the nuke disk into a foodstuff."
return
/* if(istype(I, /obj/item/flag/nation))
user << "That's not going to fit!"
return*/
user << "<span class='notice'>You add [I] to [src].</span>"
if(istype(I, /obj/item/weapon/reagent_containers/))
var/obj/item/weapon/reagent_containers/F = I
F.reagents.trans_to(src, F.reagents.total_volume)
if(istype(I, /obj/item/weapon/reagent_containers/food/snacks/customizable))
var/obj/item/weapon/reagent_containers/food/snacks/customizable/origin = I
ingredients += origin.ingredients
user.drop_item()
cooktype[basename] = 1
I.loc = src
if(!istype(I, toptype))
ingredients += I
updateicon()
name = newname()
/obj/item/weapon/reagent_containers/food/snacks/customizable/proc/updateicon()
overlays = 0
var/i=0
for(var/obj/item/O in ingredients)
i++
if(!fullycustom)
var/image/I = new(src.icon, "[baseicon]_filling")
if(istype(O, /obj/item/weapon/reagent_containers/food/snacks))
var/obj/item/weapon/reagent_containers/food/snacks/food = O
if(!food.filling_color == "#FFFFFF")
I.color = food.filling_color
else
I.color = pick("#FF0000","#0000FF","#008000","#FFFF00")
else
I.color = pick("#FF0000","#0000FF","#008000","#FFFF00")
if(add_overlays)
I.pixel_x = pick(list(-1,0,1))
I.pixel_y = (i*2)+1
overlays += I
else
var/image/F = new(O.icon, O.icon_state)
F.pixel_x = pick(list(-1,0,1))
F.pixel_y = pick(list(-1,0,1))
overlays += F
overlays += O.overlays
if(top)
var/image/T = new(src.icon, "[baseicon]_top")
T.pixel_x = pick(list(-1,0,1))
T.pixel_y = (ingredients.len * 2)+1
overlays += T
/obj/item/weapon/reagent_containers/food/snacks/customizable/Del()
for(var/obj/item/O in ingredients)
del(O)
..()
/obj/item/weapon/reagent_containers/food/snacks/customizable/examine()
..()
var/whatsinside = pick(ingredients)
usr << "<span class='notice'> You think you can see [whatsinside] in there.</span>"
/obj/item/weapon/reagent_containers/food/snacks/customizable/attack(mob/M as mob, mob/user as mob, def_zone)
var/obj/item/shard
for(var/obj/item/O in contents)
if(istype(O,/obj/item/weapon/shard))
shard = O
break
var/mob/living/H
if(istype(M,/mob/living))
H = M
if(H && shard && M == user) //This needs a check for feeding the food to other people, but that could be abusable.
H << "\red You lacerate your mouth on a [shard.name] in the sandwich!"
H.adjustBruteLoss(5) //TODO: Target head if human.
..()
/obj/item/weapon/reagent_containers/food/snacks/customizable/proc/newname()
var/unsorteditems[0]
var/sorteditems[0]
var/unsortedtypes[0]
var/sortedtypes[0]
var/endpart = ""
var/c = 0
var/ci = 0
var/ct = 0
var/seperator = ""
var/sendback = ""
var/list/levels = list("", "double", "triple", "quad", "huge")
for(var/obj/item/ing in ingredients)
if(istype(ing, /obj/item/weapon/shard))
continue
if (istype(ing, /obj/item/weapon/reagent_containers/food/snacks/customizable)) // split the ingredients into ones with basenames (sandwich, burger, etc) and ones without, keeping track of how many of each there are
var/obj/item/weapon/reagent_containers/food/snacks/customizable/gettype = ing
if (unsortedtypes[gettype.basename])
unsortedtypes[gettype.basename]++
if (unsortedtypes[gettype.basename] > ct)
ct = unsortedtypes[gettype.basename]
else
(unsortedtypes[gettype.basename]) = 1
if (unsortedtypes[gettype.basename] > ct)
ct = unsortedtypes[gettype.basename]
else
if(unsorteditems[ing.name])
unsorteditems[ing.name]++
if (unsorteditems[ing.name] > ci)
ci = unsorteditems[ing.name]
else
unsorteditems[ing.name] = 1
if (unsorteditems[ing.name] > ci)
ci = unsorteditems[ing.name]
sorteditems = sortlist(unsorteditems, ci) //order both types going from the lowest number to the highest number
sortedtypes = sortlist(unsortedtypes, ct)
for(var/ings in sorteditems) //add the non-basename items to the name, sorting out the , and the and
c++
if (c == sorteditems.len - 1)
seperator = " and "
else if (c == sorteditems.len)
seperator = " "
else
seperator = ", "
if (sorteditems[ings] > levels.len)
sorteditems[ings] = levels.len
if (sorteditems[ings] <= 1)
sendback +="[ings][seperator]"
else
sendback +="[levels[sorteditems[ings]]] [ings][seperator]"
for (var/ingtype in sortedtypes) // now add the types basenames, keeping the src one seperate so it can go on the end
if (sortedtypes[ingtype] > levels.len)
sortedtypes[ingtype] = levels.len
if (ingtype == basename)
if (sortedtypes[ingtype] < levels.len)
sortedtypes[ingtype]++
endpart = "[levels[sortedtypes[ingtype]]] decker [basename]"
continue
if (sortedtypes[ingtype] >= 2)
sendback += "[levels[sortedtypes[ingtype]]] decker [ingtype] "
else
sendback += "[ingtype] "
if(endpart)
sendback += endpart
else
sendback += basename
if(length(sendback) > 80)
sendback = "[pick(list("absurd","colossal","enormous","ridiculous","massive","oversized","cardiac-arresting","pipe-clogging","edible but sickening","sickening","gargantuan","mega","belly-burster","chest-burster"))] [basename]"
return sendback
/obj/item/weapon/reagent_containers/food/snacks/customizable/proc/sortlist(var/list/unsorted, var/highest)
var/sorted[0]
for(var/i = 1, i<= highest, i++)
for(var/it in unsorted)
if (unsorted[it] == i)
sorted[it] = i
return sorted
+29
View File
@@ -0,0 +1,29 @@
/obj/machinery/cooker/foodgrill
name = "grill"
desc = "Backyard grilling, IN SPACE."
icon = 'icons/obj/cooking_machines.dmi'
icon_state = "grill_off"
thiscooktype = "grilled"
burns = 1
firechance = 20
cooktime = 50
foodcolor = "#A34719"
onicon = "grill_on"
officon = "grill_off"
obj/machinery/cooker/foodgrill/putIn(obj/item/In, mob/chef)
..()
var/image/img = new(In.icon, In.icon_state)
img.pixel_y = 5
overlays += img
sleep(50)
overlays = 0
img.color = "#C28566"
overlays += img
sleep(50)
overlays = 0
img.color = "#A34719"
overlays += img
sleep(50)
overlays = 0
+254
View File
@@ -0,0 +1,254 @@
//ICE CREAM MACHINE
//Code made by Sawu at Sawu-Station.
/obj/machinery/icemachine
name = "\improper Cream-Master Deluxe"
density = 1
anchored = 1
icon = 'icons/obj/cooking_machines.dmi'
icon_state = "icecream_vat"
use_power = 1
idle_power_usage = 20
var/obj/item/weapon/reagent_containers/glass/beaker = null
var/useramount = 15 //Last used amount
/obj/machinery/icemachine/proc/generate_name(reagent_name)
var/name_prefix = pick("Mr.","Mrs.","Super","Happy","Whippy")
var/name_suffix = pick(" Whippy "," Slappy "," Creamy "," Dippy "," Swirly "," Swirl ")
var/cone_name = null //Heart failure prevention.
cone_name += name_prefix
cone_name += name_suffix
cone_name += "[reagent_name]"
return cone_name
/obj/machinery/icemachine/New()
var/datum/reagents/R = new/datum/reagents(500)
reagents = R
R.my_atom = src
/obj/machinery/icemachine/attackby(obj/item/I, mob/user)
if(istype(I, /obj/item/weapon/reagent_containers/glass))
if(beaker)
user << "<span class='notice'>A container is already inside [src].</span>"
return
beaker = I
user.drop_item()
I.loc = src
user << "<span class='notice'>You add [I] to [src]</span>"
updateUsrDialog()
return
if(istype(I, /obj/item/weapon/reagent_containers/food/snacks/icecream))
if(!I.reagents.has_reagent("sprinkles"))
if(I.reagents.total_volume > 29) I.reagents.remove_any(1)
I.reagents.add_reagent("sprinkles",1)
var/image/sprinkles = image('icons/obj/kitchen.dmi', src, "sprinkles")
I.overlays += sprinkles
I.name += " with sprinkles"
I.desc += ". This also has sprinkles."
else
user << "<span class='notice'>This [I] already has sprinkles.</span>"
/obj/machinery/icemachine/proc/validexchange(reag)
if(reag == "sprinkles" | reag == "cola" | reag == "kahlua" | reag == "dr_gibb" | reag == "vodka" | reag == "space_up" | reag == "rum" | reag == "spacemountainwind" | reag == "gin" | reag == "cream" | reag == "water")
return 1
else
if(reagents.total_volume < 500)
usr << "<span class='notice'>[src] vibrates for a moment, apparently accepting the unknown liquid.</span>"
playsound(loc, 'sound/machines/twobeep.ogg', 10, 1)
return 1
/obj/machinery/icemachine/Topic(href, href_list)
if(..()) return
add_fingerprint(usr)
usr.set_machine(src)
if(href_list["close"])
usr << browse(null, "window=cream_master")
usr.unset_machine()
return
var/obj/item/weapon/reagent_containers/glass/A = null
var/datum/reagents/R = null
if(beaker)
A = beaker
R = A.reagents
if(href_list["add"])
if(href_list["amount"])
var/id = href_list["add"]
var/amount = text2num(href_list["amount"])
if(validexchange(id))
R.trans_id_to(src, id, amount)
else if(href_list["remove"])
if(href_list["amount"])
var/id = href_list["remove"]
var/amount = text2num(href_list["amount"])
if(beaker == null)
reagents.remove_reagent(id,amount)
else
if(validexchange(id))
reagents.trans_id_to(A, id, amount)
else
reagents.remove_reagent(id,amount)
else if(href_list["main"])
attack_hand(usr)
return
else if(href_list["eject"])
if(beaker)
A.loc = loc
beaker = null
reagents.trans_to(A,reagents.total_volume)
else if(href_list["synthcond"])
if(href_list["type"])
var/ID = text2num(href_list["type"])
/*
if(ID == 1)
reagents.add_reagent("sprinkles",1)
*/ //Sprinkles are now created by using the ice cream on the machine
if(ID == 2 | ID == 3)
var/brand = pick(1,2,3,4)
if(brand == 1)
if(ID == 2)
reagents.add_reagent("cola",5)
else
reagents.add_reagent("kahlua",5)
else if(brand == 2)
if(ID == 2)
reagents.add_reagent("dr_gibb",5)
else
reagents.add_reagent("vodka",5)
else if(brand == 3)
if(ID == 2)
reagents.add_reagent("space_up",5)
else
reagents.add_reagent("rum",5)
else if(brand == 4)
if(ID == 2)
reagents.add_reagent("spacemountainwind",5)
else
reagents.add_reagent("gin",5)
else if(ID == 4)
if(reagents.total_volume <= 500 & reagents.total_volume >= 15)
reagents.add_reagent("cream",(30 - reagents.total_volume))
else if(reagents.total_volume <= 15)
reagents.add_reagent("cream",(15 - reagents.total_volume))
else if(ID == 5)
if(reagents.total_volume <= 500 & reagents.total_volume >= 15)
reagents.add_reagent("water",(30 - reagents.total_volume))
else if(reagents.total_volume <= 15)
reagents.add_reagent("water",(15 - reagents.total_volume))
else if(href_list["createcup"])
var/name = generate_name(reagents.get_master_reagent_name())
name += " Chocolate Cone"
var/obj/item/weapon/reagent_containers/food/snacks/icecream/icecreamcup/C
C = new/obj/item/weapon/reagent_containers/food/snacks/icecream/icecreamcup(loc)
C.name = "[name]"
C.pixel_x = rand(-8, 8)
C.pixel_y = -16
reagents.trans_to(C,30)
if(reagents)
reagents.clear_reagents()
C.update_icon()
else if(href_list["createcone"])
var/name = generate_name(reagents.get_master_reagent_name())
name += " Cone"
var/obj/item/weapon/reagent_containers/food/snacks/icecream/icecreamcone/C
C = new/obj/item/weapon/reagent_containers/food/snacks/icecream/icecreamcone(loc)
C.name = "[name]"
C.pixel_x = rand(-8, 8)
C.pixel_y = -16
reagents.trans_to(C,15)
if(reagents)
reagents.clear_reagents()
C.update_icon()
updateUsrDialog()
/obj/machinery/icemachine/attack_ai(mob/user)
return attack_hand(user)
/obj/machinery/icemachine/attack_paw(mob/user)
return attack_hand(user)
/obj/machinery/icemachine/proc/show_toppings()
var/dat = ""
if(reagents.total_volume <= 500)
dat += "<HR>"
dat += "<strong>Add fillings:</strong><BR>"
dat += "<A href='?src=\ref[src];synthcond=1;type=2'>Soda</A><BR>"
dat += "<A href='?src=\ref[src];synthcond=1;type=3'>Alcohol</A><BR>"
dat += "<strong>Finish With:</strong><BR>"
dat += "<A href='?src=\ref[src];synthcond=1;type=4'>Cream</A><BR>"
dat += "<A href='?src=\ref[src];synthcond=1;type=5'>Water</A><BR>"
dat += "<strong>Dispense in:</strong><BR>"
dat += "<A href='?src=\ref[src];createcup=1'>Chocolate Cone</A><BR>"
dat += "<A href='?src=\ref[src];createcone=1'>Cone</A><BR>"
dat += "</center>"
return dat
/obj/machinery/icemachine/proc/show_reagents(container)
//1 = beaker / 2 = internal
var/dat = ""
if(container == 1)
var/obj/item/weapon/reagent_containers/glass/A = beaker
var/datum/reagents/R = A.reagents
dat += "The container has:<BR>"
for(var/datum/reagent/G in R.reagent_list)
dat += "[G.volume] unit(s) of [G.name] | "
dat += "<A href='?src=\ref[src];add=[G.id];amount=5'>(5)</A> "
dat += "<A href='?src=\ref[src];add=[G.id];amount=10'>(10)</A> "
dat += "<A href='?src=\ref[src];add=[G.id];amount=15'>(15)</A> "
dat += "<A href='?src=\ref[src];add=[G.id];amount=[G.volume]'>(All)</A>"
dat += "<BR>"
else if(container == 2)
dat += "<BR>The Cream-Master has:<BR>"
if(reagents.total_volume)
for(var/datum/reagent/N in reagents.reagent_list)
dat += "[N.volume] unit(s) of [N.name] | "
dat += "<A href='?src=\ref[src];remove=[N.id];amount=5'>(5)</A> "
dat += "<A href='?src=\ref[src];remove=[N.id];amount=10'>(10)</A> "
dat += "<A href='?src=\ref[src];remove=[N.id];amount=15'>(15)</A> "
dat += "<A href='?src=\ref[src];remove=[N.id];amount=[N.volume]'>(All)</A>"
dat += "<BR>"
else
dat += "<BR>SOMEONE ENTERED AN INVALID REAGENT CONTAINER; QUICK, BUG REPORT!<BR>"
return dat
/obj/machinery/icemachine/attack_hand(mob/user)
if(..()) return
user.set_machine(src)
var/dat = ""
if(!beaker)
dat += "No container is loaded into the machine, external transfer offline.<BR>"
dat += show_reagents(2)
dat += show_toppings()
dat += "<A href='?src=\ref[src];close=1'>Close</A>"
else
var/obj/item/weapon/reagent_containers/glass/A = beaker
var/datum/reagents/R = A.reagents
dat += "<A href='?src=\ref[src];eject=1'>Eject container and end transfer.</A><BR>"
if(!R.total_volume)
dat += "Container is empty.<BR><HR>"
else
dat += show_reagents(1)
dat += show_reagents(2)
dat += show_toppings()
var/datum/browser/popup = new(user, "cream_master","Cream-Master Deluxe", 700, 400, src)
popup.set_content(dat)
popup.open()
+79
View File
@@ -0,0 +1,79 @@
/obj/machinery/cooking
name = "oven"
desc = "Cookies are ready, dear."
icon = 'icons/obj/cooking_machines.dmi'
icon_state = "oven_off"
layer = 2.9
density = 1
anchored = 1
use_power = 1
var/candy = 0
idle_power_usage = 5
var/on = FALSE //Is it making food already?
var/list/food_choices = list()
/obj/machinery/cooking/New()
..()
updatefood()
/obj/machinery/cooking/attackby(obj/item/I, mob/user)
if(on)
user << "The machine is already running."
return
else
var/obj/item/F = I
var/obj/item/weapon/reagent_containers/food/snacks/customizable/C
C = input("Select food to make.", "Cooking", C) in food_choices
if(!C)
return
else
user << "You put [F] into [src] for cooking."
user.drop_item()
F.loc = src
on = TRUE
if(!candy)
icon_state = "oven_on"
else
icon_state = "mixer_on"
sleep(100)
on = FALSE
if(!candy)
icon_state = "oven_off"
else
icon_state = "mixer_off"
C.loc = get_turf(src)
C.attackby(F,user)
playsound(loc, 'sound/machines/ding.ogg', 50, 1)
updatefood()
return
/obj/machinery/cooking/proc/updatefood()
return
/obj/machinery/cooking/oven
name = "oven"
desc = "Cookies are ready, dear."
icon = 'icons/obj/cooking_machines.dmi'
icon_state = "oven_off"
/obj/machinery/cooking/oven/updatefood()
for(var/U in food_choices)
food_choices.Remove(U)
for(var/U in typesof(/obj/item/weapon/reagent_containers/food/snacks/customizable/cook)-(/obj/item/weapon/reagent_containers/food/snacks/customizable/cook))
var/obj/item/weapon/reagent_containers/food/snacks/customizable/cook/V = new U
src.food_choices += V
return
/obj/machinery/cooking/candy
name = "candy machine"
desc = "Get yer box of deep fried deep fried deep fried deep fried cotton candy cereal sandwich cookies here!"
icon = 'icons/obj/cooking_machines.dmi'
icon_state = "mixer_off"
candy = 1
/obj/machinery/cooking/candy/updatefood()
for(var/U in food_choices)
food_choices.Remove(U)
for(var/U in typesof(/obj/item/weapon/reagent_containers/food/snacks/customizable/candy)-(/obj/item/weapon/reagent_containers/food/snacks/customizable/candy))
var/obj/item/weapon/reagent_containers/food/snacks/customizable/candy/V = new U
src.food_choices += V
return
+2 -2
View File
@@ -1159,7 +1159,7 @@ I said no!
/obj/item/weapon/reagent_containers/food/snacks/grown/goldapple,
)
result = /obj/item/weapon/reagent_containers/food/snacks/appletart
/*
/datum/recipe/tossedsalad
items = list(
/obj/item/weapon/reagent_containers/food/snacks/grown/cabbage,
@@ -1169,7 +1169,7 @@ I said no!
/obj/item/weapon/reagent_containers/food/snacks/grown/apple,
)
result = /obj/item/weapon/reagent_containers/food/snacks/tossedsalad
*/
/datum/recipe/aesirsalad
items = list(
/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiadeus,
+2 -2
View File
@@ -204,8 +204,8 @@
src.sleeping = max(0,src.sleeping-5)
if(src.sleeping == 0)
src.resting = 0
M.visible_message("<span class='notice'>[M] shakes [src] trying to wake [t_him] up!", \
"<span class='notice'>You shake [src] trying to wake [t_him] up!")
M.visible_message("<span class='notice'>[M] shakes [src] trying to wake [t_him] up!</span>", \
"<span class='notice'>You shake [src] trying to wake [t_him] up!</span>")
else
M.visible_message("<span class='notice'>[M] hugs [src] to make [t_him] feel better!</span>", \
"<span class='notice'>You hug [src] to make [t_him] feel better!</span>")
@@ -891,13 +891,13 @@
if(!lastpuke)
lastpuke = 1
src << "<spawn class='warning'>You feel nauseous..."
src << "<spawn class='warning'>You feel nauseous...</spawn>"
spawn(150) //15 seconds until second warning
src << "<spawn class='warning'>You feel like you are about to throw up!"
src << "<spawn class='warning'>You feel like you are about to throw up!</spawn>"
spawn(100) //and you have 10 more for mad dash to the bucket
Stun(5)
src.visible_message("<spawn class='warning'>[src] throws up!","<spawn class='warning'>You throw up!")
src.visible_message("<spawn class='warning'>[src] throws up!","<spawn class='warning'>You throw up!</spawn>")
playsound(loc, 'sound/effects/splat.ogg', 50, 1)
var/turf/location = loc
@@ -196,7 +196,7 @@ emp_act
if(user == src) // Attacking yourself can't miss
target_zone = user.zone_sel.selecting
if(!target_zone)
visible_message("\red <B>[user] misses [src] with \the [I]!")
visible_message("\red <B>[user] misses [src] with \the [I]!</B>")
return 0
var/datum/organ/external/affecting = get_organ(target_zone)
@@ -35,7 +35,7 @@
// break_stuff_probability = 2
faction = list("scarybat")
faction = "scarybat"
var/mob/living/owner
/mob/living/simple_animal/hostile/scarybat/New(loc, mob/living/L as mob)
+2 -2
View File
@@ -17,10 +17,10 @@
spawn() alert("You have logged in already with another key this round, please log out of this one NOW or risk being banned!")
if(matches)
if(M.client)
message_admins("<font color='red'><B>Notice: </B><font color='blue'><A href='?src=\ref[usr];priv_msg=\ref[src]'>[key_name_admin(src)]</A> has the same [matches] as <A href='?src=\ref[usr];priv_msg=\ref[M]'>[key_name_admin(M)]</A>.</font>", 1)
message_admins("<font color='red'><B>Notice: </B></font><font color='blue'><A href='?src=\ref[usr];priv_msg=\ref[src]'>[key_name_admin(src)]</A> has the same [matches] as <A href='?src=\ref[usr];priv_msg=\ref[M]'>[key_name_admin(M)]</A>.</font>", 1)
log_access("Notice: [key_name(src)] has the same [matches] as [key_name(M)].")
else
message_admins("<font color='red'><B>Notice: </B><font color='blue'><A href='?src=\ref[usr];priv_msg=\ref[src]'>[key_name_admin(src)]</A> has the same [matches] as [key_name_admin(M)] (no longer logged in). </font>", 1)
message_admins("<font color='red'><B>Notice: </B></font><font color='blue'><A href='?src=\ref[usr];priv_msg=\ref[src]'>[key_name_admin(src)]</A> has the same [matches] as [key_name_admin(M)] (no longer logged in). </font>", 1)
log_access("Notice: [key_name(src)] has the same [matches] as [key_name(M)] (no longer logged in).")
/mob/Login()
+12
View File
@@ -194,6 +194,18 @@
var/result = update_icon()
return result
/datum/organ/external/proc/embed(var/obj/item/weapon/W, var/silent = 0)
if(!silent)
owner.visible_message("<span class='danger'>\The [W] sticks in the wound!</span>")
implants += W
owner.embedded_flag = 1
owner.verbs += /mob/proc/yank_out_object
W.add_blood(owner)
if(ismob(W.loc))
var/mob/living/H = W.loc
H.drop_item()
W.loc = owner
/*
This function completely restores a damaged organ to perfect condition.
*/
+5 -5
View File
@@ -104,12 +104,12 @@
else
visible_message("\red [A.name] is hit by the [src.name] in the [parse_zone(def_zone)]!")//X has fired Y is now given by the guns so you cant tell who shot you if you could not see the shooter
if(istype(firer, /mob))
M.attack_log += "\[[time_stamp()]\] <b>[firer]/[firer.ckey]</b> shot <b>[M]/[M.ckey]</b> with a <b>[src.type]</b>"
firer.attack_log += "\[[time_stamp()]\] <b>[firer]/[firer.ckey]</b> shot <b>[M]/[M.ckey]</b> with a <b>[src.type]</b>"
msg_admin_attack("[firer] ([firer.ckey]) shot [M] ([M.ckey]) with a [src] (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[firer.x];Y=[firer.y];Z=[firer.z]'>JMP</a>)") //BS12 EDIT ALG
M.attack_log += "\[[time_stamp()]\] <b>[firer]/[firer.ckey]</b> shot <b>[M]/[M.ckey]</b> with <b>[src.type]</b>"
firer.attack_log += "\[[time_stamp()]\] <b>[firer]/[firer.ckey]</b> shot <b>[M]/[M.ckey]</b> with <b>[src.type]</b>"
msg_admin_attack("[firer] ([firer.ckey]) shot [M] ([M.ckey]) with [src] (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[firer.x];Y=[firer.y];Z=[firer.z]'>JMP</a>)") //BS12 EDIT ALG
else
M.attack_log += "\[[time_stamp()]\] <b>UNKNOWN SUBJECT (No longer exists)</b> shot <b>[M]/[M.ckey]</b> with a <b>[src]</b>"
msg_admin_attack("UNKNOWN shot [M] ([M.ckey]) with a [src] (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[firer.x];Y=[firer.y];Z=[firer.z]'>JMP</a>)") //BS12 EDIT ALG
M.attack_log += "\[[time_stamp()]\] <b>UNKNOWN SUBJECT (No longer exists)</b> shot <b>[M]/[M.ckey]</b> with <b>[src]</b>"
msg_admin_attack("UNKNOWN shot [M] ([M.ckey]) with [src] (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[firer.x];Y=[firer.y];Z=[firer.z]'>JMP</a>)") //BS12 EDIT ALG
if(A)
if (!forcedodge)
@@ -27,7 +27,7 @@
/obj/item/projectile/bullet/gyro/law
name ="high-ex round"
icon_state= "bolter"
damage = 5
damage = 15
flag = "bullet"
/obj/item/projectile/bullet/gyro/law/on_hit(var/atom/target, var/blocked = 0)
+40 -1
View File
@@ -1023,7 +1023,7 @@
if(istype(user, /mob/living/carbon/human))
var/mob/living/carbon/human/M = user
if(M.h_style == "Floorlength Braid" || M.h_style == "Very Long Hair")
if(prob(25))
if(prob(10))
M.apply_damage(30, BRUTE, "head")
M.apply_damage(45, HALLOSS)
M.visible_message("\red [user]'s hair catches in the [src]!", "\red Your hair gets caught in the [src]!")
@@ -1278,3 +1278,42 @@
O.reagents.trans_to(beaker, amount)
if(!O.reagents.total_volume)
remove_object(O)
/obj/machinery/reagentgrinder/MouseDrop_T(mob/living/carbon/human/target as mob, mob/user as mob)
if (!istype(target) || target.buckled || get_dist(user, src) > 1 || get_dist(user, target) > 1 || user.stat || istype(user, /mob/living/silicon/ai))
return
if(target == user)
if(target.h_style == "Floorlength Braid" || target.h_style == "Very Long Hair")
user.visible_message("\blue [user] looks like they're about to feed their own hair into the [src], but think better of it.", "\blue You grasp your hair and are about to feed it into the [src], but stop and come to your sense.")
return
src.add_fingerprint(user)
var/target_loc = target.loc
if(target != user && !user.restrained() && !user.stat && !user.weakened && !user.stunned && !user.paralysis)
if(target.h_style != "Cut Hair" || target.h_style != "Short Hair" || target.h_style != "Skinhead" || target.h_style != "Buzzcut" || target.h_style != "Crewcut" || target.h_style != "Bald" || target.h_style != "Balding Hair")
user.visible_message("\red [user] starts feeding [target]'s hair into the [src]!", "\red You start feeding [target]'s hair into the [src]!")
if(!do_after(usr, 50))
return
if(target_loc != target.loc)
return
if(target != user && !user.restrained() && !user.stat && !user.weakened && !user.stunned && !user.paralysis)
user.visible_message("\red [user] feeds the [target]'s hair into the [src] and flicks it on!", "\red You turn the [src] on!")
target.apply_damage(30, BRUTE, "head")
target.apply_damage(25, HALLOSS)
target.say("*scream")
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Has fed [target.name]'s ([target.ckey]) hair into a [src].</font>")
target.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has had their hair fed into [src] by [user.name] ([user.ckey])</font>")
msg_admin_attack("[user] ([user.ckey]) fed [target]'s ([target.ckey]) in a [src]. (<A HREF='?_src_=holder;adminplayerobservecoodjump=1;X=[user.x];Y=[user.y];Z=[user.z]'>JMP</a>)")
else
return
if(!do_after(usr, 35))
return
if(target_loc != target.loc)
return
if(target != user && !user.restrained() && !user.stat && !user.weakened && !user.stunned && !user.paralysis)
user.visible_message("\red [user] starts tugging on [target]'s head as the [src] keeps running!", "\red You start tugging on [target]'s head!")
target.apply_damage(25, BRUTE, "head")
target.apply_damage(10, HALLOSS)
target.say("*scream")
spawn(10)
user.visible_message("\red [user] stops the [src] and leaves [target] resting as they are.", "\red You turn the [src] off and let go of [target].")
+55 -6
View File
@@ -1072,8 +1072,7 @@ datum
required_container = /obj/item/slime_extract/gold
required_other = 1
on_reaction(var/datum/reagents/holder)
/*var/blocked = list(/mob/living/simple_animal/hostile,
var/blocked = list(/mob/living/simple_animal/hostile,
/mob/living/simple_animal/hostile/pirate,
/mob/living/simple_animal/hostile/pirate/ranged,
/mob/living/simple_animal/hostile/russian,
@@ -1097,7 +1096,6 @@ datum
for(var/mob/living/carbon/human/M in viewers(get_turf_loc(holder.my_atom), null))
if(M:eyecheck() <= 0)
flick("e_flash", M.flash)
for(var/i = 1, i <= 5, i++)
var/chosen = pick(critters)
var/mob/living/simple_animal/hostile/C = new chosen
@@ -1105,9 +1103,60 @@ datum
C.loc = get_turf_loc(holder.my_atom)
if(prob(50))
for(var/j = 1, j <= rand(1, 3), j++)
step(C, pick(NORTH,SOUTH,EAST,WEST))*/
for(var/mob/O in viewers(get_turf_loc(holder.my_atom), null))
O.show_message(text("\red The slime core fizzles disappointingly,"), 1)
step(C, pick(NORTH,SOUTH,EAST,WEST))
// for(var/mob/O in viewers(get_turf_loc(holder.my_atom), null))
// O.show_message(text("\red The slime core fizzles disappointingly,"), 1)
/*
slimecritlesser
name = "Slime Crit Lesser"
id = "m_tele3"
result = null
required_reagents = list("blood" = 1)
result_amount = 1
required_container = /obj/item/slime_extract/gold
required_other = 1
/datum/chemical_reaction/slimecritlesser/on_reaction(var/datum/reagents/holder)
feedback_add_details("slime_cores_used","[replacetext(name," ","_")]")
for(var/mob/O in viewers(get_turf(holder.my_atom), null))
O.show_message(text("<span class='danger'>The slime extract begins to vibrate violently !</span>"), 1)
spawn(50)
if(holder && holder.my_atom)
var/blocked = list(/mob/living/simple_animal/hostile,
/mob/living/simple_animal/hostile/pirate,
/mob/living/simple_animal/hostile/pirate/ranged,
/mob/living/simple_animal/hostile/russian,
/mob/living/simple_animal/hostile/russian/ranged,
/mob/living/simple_animal/hostile/syndicate,
/mob/living/simple_animal/hostile/syndicate/melee,
/mob/living/simple_animal/hostile/syndicate/melee/space,
/mob/living/simple_animal/hostile/syndicate/ranged,
/mob/living/simple_animal/hostile/syndicate/ranged/space,
/mob/living/simple_animal/hostile/alien/queen/large,
/mob/living/simple_animal/hostile/retaliate,
/mob/living/simple_animal/hostile/retaliate/clown,
/mob/living/simple_animal/hostile/mushroom,
/* /mob/living/simple_animal/hostile/asteroid,
/mob/living/simple_animal/hostile/asteroid/basilisk,
/mob/living/simple_animal/hostile/asteroid/goldgrub,
/mob/living/simple_animal/hostile/asteroid/goliath,
/mob/living/simple_animal/hostile/asteroid/hivelord,
/mob/living/simple_animal/hostile/asteroid/hivelordbrood,
/mob/living/simple_animal/hostile/carp/holocarp*/ Monsters we don't have
)//exclusion list for things you don't want the reaction to create.
var/list/critters = typesof(/mob/living/simple_animal/hostile) - blocked // list of possible hostile mobs
playsound(get_turf(holder.my_atom), 'sound/effects/phasein.ogg', 100, 1)
for(var/mob/living/carbon/human/M in viewers(get_turf(holder.my_atom), null))
if(M:eyecheck() <= 0)
flick("e_flash", M.flash)
var/chosen = pick(critters)
var/mob/living/simple_animal/hostile/C = new chosen
C.faction |= "neutral"
C.loc = get_turf(holder.my_atom)*/
//Silver
slimebork
@@ -4,12 +4,17 @@
desc = "yummy"
icon = 'icons/obj/food.dmi'
icon_state = null
var/deepfried = 0
var/bitesize = 1
var/bitecount = 0
var/trash = null
var/slice_path
var/slices_num
var/eatverb
var/wrapped = 0
var/dried_type = null
var/cooktype[0]
var/deepfried = 0
//Placeholder for effect that trigger on eating that aren't tied to reagents.
/obj/item/weapon/reagent_containers/food/snacks/proc/On_Consume(var/mob/M)
@@ -17,7 +22,7 @@
if(!reagents.total_volume)
if(M == usr)
usr << "<span class='notice'>You finish eating \the [src].</span>"
M.visible_message("<span class='notice'>[M] finishes eating \the [src].</span>")
usr.visible_message("<span class='notice'>[usr] finishes eating \the [src].</span>")
usr.drop_from_inventory(src) //so icons update :[
if(trash)
@@ -79,7 +84,11 @@
M.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been fed [src.name] by [user.name] ([user.ckey]) Reagents: [reagentlist(src)]</font>")
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Fed [src.name] by [M.name] ([M.ckey]) Reagents: [reagentlist(src)]</font>")
msg_admin_attack("[key_name(user)] fed [key_name(M)] with [src.name] Reagents: [reagentlist(src)] (INTENT: [uppertext(user.a_intent)])")
msg_admin_attack("[user.name] ([user.ckey]) fed [M.name] ([M.ckey]) with [src.name] Reagents: [reagentlist(src)] (INTENT: [uppertext(user.a_intent)])")
if(!iscarbon(user))
M.LAssailant = null
else
M.LAssailant = user
for(var/mob/O in viewers(world.view, user))
O.show_message("\red [user] feeds [M] [src].", 1)
@@ -91,18 +100,20 @@
if(reagents) //Handle ingestion of the reagent.
playsound(M.loc,'sound/items/eatfood.ogg', rand(10,50), 1)
if(reagents.total_volume)
if(reagents.total_volume > bitesize)
/*
* I totally cannot understand what this code supposed to do.
* Right now every snack consumes in 2 bites, my popcorn does not work right, so I simplify it. -- rastaf0
var/temp_bitesize = max(reagents.total_volume /2, bitesize)
reagents.trans_to(M, temp_bitesize)
*/
reagents.trans_to_ingest(M, bitesize)
else
reagents.trans_to_ingest(M, reagents.total_volume)
bitecount++
On_Consume(M)
reagents.reaction(M, INGEST)
spawn(5)
if(reagents.total_volume > bitesize)
/*
* I totally cannot understand what this code supposed to do.
* Right now every snack consumes in 2 bites, my popcorn does not work right, so I simplify it. -- rastaf0
var/temp_bitesize = max(reagents.total_volume /2, bitesize)
reagents.trans_to(M, temp_bitesize)
*/
reagents.trans_to_ingest(M, bitesize)
else
reagents.trans_to_ingest(M, reagents.total_volume)
bitecount++
On_Consume(M)
return 1
return 0
@@ -123,13 +134,48 @@
else
usr << "\blue \The [src] was bitten multiple times!"
/obj/item/weapon/reagent_containers/food/snacks/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W,/obj/item/weapon/storage))
..() // -> item/attackby()
/obj/item/weapon/reagent_containers/food/snacks/attackby(obj/item/weapon/W, mob/user)
if(istype(W,/obj/item/weapon/pen))
var/n_name = copytext(sanitize(input(usr, "What would you like to name this dish?", "Food Renaming", null) as text), 1, MAX_NAME_LEN)
if((loc == usr && usr.stat == 0))
name = "[n_name]"
return
if(istype(W,/obj/item/weapon/storage))
..() // -> item/attackby()
/* if(istype(W,/obj/item/weapon/kitchen/utensil))
var/obj/item/weapon/kitchen/utensil/U = W
if(!U.reagents)
U.create_reagents(5)
if (U.reagents.total_volume > 0)
user << "\red You already have something on your [U]."
return
user.visible_message( \
"[user] scoops up some [src] with \the [U]!", \
"\blue You scoop up some [src] with \the [U]!" \
)
src.bitecount++
U.overlays.Cut()
U.loaded = "[src]"
var/image/I = new(U.icon, "loadedfood")
I.color = src.filling_color
U.overlays += I
reagents.trans_to(U,min(reagents.total_volume,5))
if (reagents.total_volume <= 0)
del(src)
return
*/
if((slices_num <= 0 || !slices_num) || !slice_path)
return 0
var/inaccurate = 0
if( \
istype(W, /obj/item/weapon/kitchenknife) || \
@@ -174,8 +220,8 @@
)
else
user.visible_message( \
"\blue [user] inaccurately slices \the [src] with [W]!", \
"\blue You inaccurately slice \the [src] with your [W]!" \
"\blue [user] crudely slices \the [src] with [W]!", \
"\blue You crudely slice \the [src] with your [W]!" \
)
slices_lost = rand(1,min(1,round(slices_num/2)))
var/reagents_per_slice = reagents.total_volume/slices_num
@@ -183,6 +229,7 @@
var/obj/slice = new slice_path (src.loc)
reagents.trans_to(slice,reagents_per_slice)
del(src)
return
/obj/item/weapon/reagent_containers/food/snacks/Del()
@@ -269,20 +316,6 @@
reagents.add_reagent("tricordrazine", 8)
bitesize = 3
/obj/item/weapon/reagent_containers/food/snacks/deepfryholder
name = "Deep Fried Foods Holder Obj"
desc = "If you can see this description the code for the deep fryer fucked up."
icon = 'icons/obj/food.dmi'
icon_state = "deepfried_holder_icon"
bitesize = 2
deepfried = 1
New()
..()
reagents.add_reagent("nutriment", 10)
Del()
contents = null
..()
/obj/item/weapon/reagent_containers/food/snacks/candy
name = "candy"
desc = "Nougat, love it or hate it."
@@ -695,12 +728,31 @@
reagents.add_reagent("nutriment", 3)
src.bitesize = 6
/obj/item/weapon/reagent_containers/food/snacks/spidermeat
name = "spider meat"
desc = "A slab of spider meat."
icon_state = "spidermeat"
New()
..()
reagents.add_reagent("nutriment", 3)
reagents.add_reagent("toxin", 3)
bitesize = 3
/obj/item/weapon/reagent_containers/food/snacks/spiderleg
name = "spider leg"
desc = "A still twitching leg of a giant spider... you don't really want to eat this, do you?"
icon_state = "spiderleg"
New()
..()
reagents.add_reagent("nutriment", 2)
reagents.add_reagent("toxin", 2)
bitesize = 2
/obj/item/weapon/reagent_containers/food/snacks/meatball
name = "meatball"
name = "Meatball"
desc = "A great meal all round."
icon_state = "meatball"
filling_color = "#DB0000"
New()
..()
reagents.add_reagent("nutriment", 3)
@@ -891,33 +943,6 @@
..()
reagents.add_reagent("nutriment", 8)
bitesize = 1
attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W,/obj/item/weapon/kitchen/utensil/fork))
if (W.icon_state == "forkloaded")
user << "\red You already have omelette on your fork."
return
//W.icon = 'icons/obj/kitchen.dmi'
W.icon_state = "forkloaded"
/*if (herp)
world << "[user] takes a piece of omelette with his fork!"*/
//Why this unecessary check? Oh I know, because I'm bad >:C
// Yes, you are. You griefing my badmin toys. --rastaf0
user.visible_message( \
"[user] takes a piece of omelette with their fork!", \
"\blue You take a piece of omelette with your fork!" \
)
reagents.remove_reagent("nutriment", 1)
if (reagents.total_volume <= 0)
del(src)
/*
* Unsused.
/obj/item/weapon/reagent_containers/food/snacks/omeletteforkload
name = "Omelette Du Fromage"
desc = "That's all you can say!"
New()
..()
reagents.add_reagent("nutriment", 1)
*/
/obj/item/weapon/reagent_containers/food/snacks/muffin
name = "Muffin"
@@ -1205,6 +1230,42 @@
reagents.add_reagent("nutriment", 4)
bitesize = 2
/obj/item/weapon/reagent_containers/food/snacks/chinese/chowmein
name = "chow mein"
desc = "What is in this anyways?"
icon_state = "chinese1"
New()
..()
reagents.add_reagent("nutriment", 6)
bitesize = 2
/obj/item/weapon/reagent_containers/food/snacks/chinese/tao
name = "Admiral Yamamoto carp"
desc = "Tastes like chicken."
icon_state = "chinese2"
New()
..()
reagents.add_reagent("nutriment", 6)
bitesize = 2
/obj/item/weapon/reagent_containers/food/snacks/chinese/newdles
name = "chinese newdles"
desc = "Made fresh, weekly!"
icon_state = "chinese3"
New()
..()
reagents.add_reagent("nutriment", 6)
bitesize = 2
/obj/item/weapon/reagent_containers/food/snacks/chinese/rice
name = "fried rice"
desc = "A timeless classic."
icon_state = "chinese4"
New()
..()
reagents.add_reagent("nutriment", 6)
bitesize = 2
/obj/item/weapon/reagent_containers/food/snacks/syndicake
name = "Syndi-Cakes"
icon_state = "syndi_cakes"
@@ -1215,7 +1276,8 @@
New()
..()
reagents.add_reagent("nutriment", 4)
reagents.add_reagent("doctorsdelight", 5)
reagents.add_reagent("doctorsdelight", 8)
// reagents.add_reagent("alchdranine", 5)
bitesize = 3
/obj/item/weapon/reagent_containers/food/snacks/loadedbakedpotato
@@ -1254,7 +1316,7 @@
bitesize = 2
/obj/item/weapon/reagent_containers/food/snacks/spagetti
name = "Spaghetti"
name = "Spagetti"
desc = "A bundle of raw spaghetti."
icon_state = "spagetti"
filling_color = "#EDDD00"
@@ -1299,6 +1361,10 @@
reagents.add_reagent("carbon", 3)
bitesize = 2
// it's burned! it should start off being classed as any cooktype that burns
cooktype["grilled"] = 1
cooktype["deep fried"] = 1
/obj/item/weapon/reagent_containers/food/snacks/meatsteak
name = "Meat steak"
desc = "A piece of hot spicy meat."
@@ -1522,7 +1588,7 @@
reagents.add_reagent("tomatojuice", 2)
bitesize = 5
/* No more of this
/obj/item/weapon/reagent_containers/food/snacks/telebacon
name = "Tele Bacon"
desc = "It tastes a little odd but it is still delicious."
@@ -1537,7 +1603,7 @@
if(!reagents.total_volume)
baconbeacon.loc = usr
baconbeacon.digest_delay()
*/
/obj/item/weapon/reagent_containers/food/snacks/monkeycube
name = "monkey cube"
@@ -1546,8 +1612,7 @@
bitesize = 12
filling_color = "#ADAC7F"
var/wrapped = 0
var/monkey_type = null
var/monkey_type = /mob/living/carbon/monkey
New()
..()
@@ -1556,7 +1621,7 @@
afterattack(obj/O as obj, mob/user as mob, proximity)
if(!proximity) return
if(istype(O,/obj/structure/sink) && !wrapped)
user << "You place \the [name] under a stream of water..."
user << "You place [name] under a stream of water..."
loc = get_turf(O)
return Expand()
..()
@@ -1565,19 +1630,46 @@
if(wrapped)
Unwrap(user)
On_Consume(var/mob/M)
M << "<span class = 'warning'>Something inside of you suddently expands!</span>"
if (istype(M, /mob/living/carbon/human))
//Do not try to understand.
var/obj/item/weapon/surprise = new/obj/item/weapon(M)
var/mob/living/carbon/monkey/ook = new monkey_type(null) //no other way to get access to the vars, alas
surprise.icon = ook.icon
surprise.icon_state = ook.icon_state
surprise.name = "malformed [ook.name]"
surprise.desc = "Looks like \a very deformed [ook.name], a little small for its kind. It shows no signs of life."
del(ook) //rip nullspace monkey
surprise.transform *= 0.6
surprise.add_blood(M)
var/mob/living/carbon/human/H = M
var/datum/organ/external/E = H.get_organ("chest")
E.fracture()
for (var/datum/organ/internal/I in E.internal_organs)
I.take_damage(rand(I.min_bruised_damage, I.min_broken_damage+1))
if (!E.hidden && prob(60)) //set it snuggly
E.hidden = surprise
E.cavity = 0
else //someone is having a bad day
E.createwound(CUT, 30)
E.embed(surprise)
else if (ismonkey(M))
M.visible_message("<span class='danger'>[M] suddenly tears in half!</span>")
var/mob/living/carbon/monkey/ook = new monkey_type(M.loc)
ook.name = "malformed [ook.name]"
ook.transform *= 0.6
ook.add_blood(M)
M.gib()
..()
proc/Expand()
for(var/mob/M in viewers(src,7))
M << "\red \The [src] expands!"
if(monkey_type)
switch(monkey_type)
if("tajara")
new /mob/living/carbon/monkey/tajara(get_turf(src))
if("unathi")
new /mob/living/carbon/monkey/unathi(get_turf(src))
if("skrell")
new /mob/living/carbon/monkey/skrell(get_turf(src))
else
new /mob/living/carbon/monkey(get_turf(src))
new monkey_type(src)
del(src)
proc/Unwrap(mob/user as mob)
@@ -1592,29 +1684,27 @@
icon_state = "monkeycubewrap"
wrapped = 1
/obj/item/weapon/reagent_containers/food/snacks/monkeycube/farwacube
name = "farwa cube"
monkey_type ="tajara"
monkey_type = /mob/living/carbon/monkey/tajara
/obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped/farwacube
name = "farwa cube"
monkey_type ="tajara"
monkey_type =/mob/living/carbon/monkey/tajara
/obj/item/weapon/reagent_containers/food/snacks/monkeycube/stokcube
name = "stok cube"
monkey_type ="unathi"
monkey_type = /mob/living/carbon/monkey/unathi
/obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped/stokcube
name = "stok cube"
monkey_type ="unathi"
monkey_type =/mob/living/carbon/monkey/unathi
/obj/item/weapon/reagent_containers/food/snacks/monkeycube/neaeracube
name = "neaera cube"
monkey_type ="skrell"
monkey_type =/mob/living/carbon/monkey/skrell
/obj/item/weapon/reagent_containers/food/snacks/monkeycube/wrapped/neaeracube
name = "neaera cube"
monkey_type ="skrell"
monkey_type =/mob/living/carbon/monkey/skrell
/obj/item/weapon/reagent_containers/food/snacks/spellburger
@@ -1834,7 +1924,7 @@
bitesize = 2
/obj/item/weapon/reagent_containers/food/snacks/boiledspagetti
name = "Boiled Spaghetti"
name = "Boiled Spagetti"
desc = "A plain dish of noodles, this sucks."
icon_state = "spagettiboiled"
trash = /obj/item/trash/plate
@@ -1870,7 +1960,7 @@
bitesize = 2
/obj/item/weapon/reagent_containers/food/snacks/pastatomato
name = "Spaghetti"
name = "Spagetti"
desc = "Spaghetti and crushed tomatoes. Just like your abusive father used to make!"
icon_state = "pastatomato"
trash = /obj/item/trash/plate
@@ -1883,7 +1973,7 @@
bitesize = 4
/obj/item/weapon/reagent_containers/food/snacks/meatballspagetti
name = "Spaghetti & Meatballs"
name = "Spagetti & Meatballs"
desc = "Now thats a nic'e meatball!"
icon_state = "meatballspagetti"
trash = /obj/item/trash/plate
@@ -2008,9 +2098,9 @@
reagents.add_reagent("cherryjelly", 5)
/obj/item/weapon/reagent_containers/food/snacks/boiledslimecore
name = "Boiled slime Core"
name = "Boiled Slime Core"
desc = "A boiled red thing."
icon_state = "boiledslimecore"
icon_state = "boiledrorocore"
New()
..()
reagents.add_reagent("slimejelly", 5)
@@ -2094,9 +2184,9 @@
reagents.add_reagent("nutriment", 8)
bitesize = 2
/obj/item/weapon/reagent_containers/food/snacks/tossedsalad
name = "tossed salad"
desc = "A proper salad, basic and simple, with little bits of carrot, tomato and apple intermingled. Vegan!"
/obj/item/weapon/reagent_containers/food/snacks/herbsalad
name = "herb salad"
desc = "A tasty salad with apples on top."
icon_state = "herbsalad"
trash = /obj/item/trash/snack_bowl
filling_color = "#76B87F"
@@ -2108,7 +2198,7 @@
/obj/item/weapon/reagent_containers/food/snacks/validsalad
name = "valid salad"
desc = "It's just a salad of questionable 'herbs' with meatballs and fried potato slices. Nothing suspicious about it."
desc = "It's just an herb salad with meatballs and fried potato slices. Nothing suspicious about it."
icon_state = "validsalad"
trash = /obj/item/trash/snack_bowl
filling_color = "#76B87F"
@@ -2116,6 +2206,8 @@
New()
..()
reagents.add_reagent("nutriment", 8)
reagents.add_reagent("doctorsdelight", 8)
//reagents.add_reagent("alchdranine", 5)
bitesize = 3
/obj/item/weapon/reagent_containers/food/snacks/appletart
@@ -2131,11 +2223,48 @@
reagents.add_reagent("gold", 5)
bitesize = 3
/obj/item/weapon/reagent_containers/food/snacks/dough_ball
name = "ball of raw dough"
desc = "A ball of raw dough, ready to be molded into new recipes."
icon = 'icons/obj/food_ingredients.dmi'
icon_state = "dough"
New()
..()
reagents.add_reagent("nutriment", 3)
bitesize = 1
attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W,/obj/item/weapon/kitchen/rollingpin))
user.visible_message( \
"[user] flattens the dough with the rolling pin!", \
"\blue You flatten the dough with your rolling pin!" \
)
new /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough(src.loc)
del(src)
/////////////////////////////////////////////////Sliceable////////////////////////////////////////
// All the food items that can be sliced into smaller bits like Meatbread and Cheesewheels
// sliceable is just an organization type path, it doesn't have any additional code or variables tied to it.
/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough
name = "flattened dough"
desc = "Still raw. You resist the temptation to cover it in tomato sauce."
icon = 'icons/obj/food_ingredients.dmi'
icon_state = "flatdough"
slice_path = /obj/item/weapon/reagent_containers/food/snacks/doughslice
slices_num = 3
New()
..()
reagents.add_reagent("nutriment", 3)
bitesize = 1
/obj/item/weapon/reagent_containers/food/snacks/doughslice
name = "slice of dough"
desc = "an individual portion of raw dough, ready to be cooked."
icon = 'icons/obj/food_ingredients.dmi'
icon_state = "doughslice"
bitesize = 2
/obj/item/weapon/reagent_containers/food/snacks/sliceable/meatbread
name = "meatbread loaf"
desc = "The culinary base of every self-respecting eloquen/tg/entleman."
@@ -2176,6 +2305,28 @@
filling_color = "#8AFF75"
bitesize = 2
/obj/item/weapon/reagent_containers/food/snacks/sliceable/spidermeatbread
name = "spider meat loaf"
desc = "Reassuringly green meatloaf made from spider meat."
icon_state = "spidermeatbread"
slice_path = /obj/item/weapon/reagent_containers/food/snacks/spidermeatbreadslice
slices_num = 5
New()
..()
reagents.add_reagent("nutriment", 30)
reagents.add_reagent("toxin", 15)
bitesize = 2
/obj/item/weapon/reagent_containers/food/snacks/spidermeatbreadslice
name = "spider meat bread slice"
desc = "A slice of meatloaf made from an animal that most likely still wants you dead."
icon_state = "xenobreadslice"
trash = /obj/item/trash/plate
bitesize = 2
New()
..()
reagents.add_reagent("toxin", 2)
/obj/item/weapon/reagent_containers/food/snacks/sliceable/bananabread
name = "Banana-nut bread"
desc = "A heavenly and filling treat."
@@ -2394,6 +2545,8 @@
filling_color = "#FFF700"
bitesize = 2
/obj/item/weapon/reagent_containers/food/snacks/sliceable/birthdaycake
name = "Birthday Cake"
desc = "Happy Birthday..."
@@ -2775,6 +2928,112 @@
pizza = new /obj/item/weapon/reagent_containers/food/snacks/sliceable/pizza/meatpizza(src)
boxtag = "Meatlover's Supreme"
////////////////////////////////FOOD ADDITIONS////////////////////////////////////////////
/obj/item/weapon/reagent_containers/food/snacks/wrap
name = "egg wrap"
desc = "The precursor to Pigs in a Blanket."
icon_state = "wrap"
New()
..()
reagents.add_reagent("nutriment", 5)
bitesize = 2
/obj/item/weapon/reagent_containers/food/snacks/beans
name = "tin of beans"
desc = "Musical fruit in a slightly less musical container."
icon_state = "beans"
New()
..()
reagents.add_reagent("nutriment", 10)
bitesize = 2
/obj/item/weapon/reagent_containers/food/snacks/benedict
name = "eggs benedict"
desc = "There is only one egg on this, how rude."
icon_state = "benedict"
New()
..()
reagents.add_reagent("nutriment", 3)
bitesize = 3
/obj/item/weapon/reagent_containers/food/snacks/hotdog
name = "hotdog"
desc = "Fresh footlong ready to go down on."
icon_state = "hotdog"
New()
..()
reagents.add_reagent("nutriment", 3)
reagents.add_reagent("ketchup", 3)
bitesize = 3
/obj/item/weapon/reagent_containers/food/snacks/meatbun
name = "meat bun"
desc = "Has the potential to not be Dog."
icon_state = "meatbun"
New()
..()
reagents.add_reagent("nutriment", 6)
bitesize = 6
/obj/item/weapon/reagent_containers/food/snacks/icecreamsandwich
name = "icecream sandwich"
desc = "Portable Ice-cream in it's own packaging."
icon_state = "icecreamsandwich"
New()
..()
reagents.add_reagent("nutriment", 2)
reagents.add_reagent("ice", 2)
bitesize = 2
/obj/item/weapon/reagent_containers/food/snacks/notasandwich
name = "not-a-sandwich"
desc = "Something seems to be wrong with this, you can't quite figure what. Maybe it's his moustache."
icon_state = "notasandwich"
New()
..()
reagents.add_reagent("nutriment", 6)
bitesize = 2
/obj/item/weapon/reagent_containers/food/snacks/sugarcookie
name = "sugar cookie"
desc = "Just like your little sister used to make."
icon_state = "sugarcookie"
New()
..()
reagents.add_reagent("nutriment", 2)
reagents.add_reagent("sugar", 5)
bitesize = 2
/obj/item/weapon/reagent_containers/food/snacks/friedbanana
name = "Fried Banana"
desc = "Goreng Pisang, also known as fried bananas."
icon_state = "friedbanana"
New()
..()
reagents.add_reagent("sugar", 5)
reagents.add_reagent("nutriment", 8)
reagents.add_reagent("cornoil", 4)
/obj/item/weapon/reagent_containers/food/snacks/tofurkey
name = "Tofurkey"
desc = "A fake turkey made from tofu."
icon_state = "tofurkey"
New()
..()
reagents.add_reagent("nutriment", 12)
reagents.add_reagent("stoxin", 3)
bitesize = 3
/obj/item/weapon/reagent_containers/food/snacks/stuffing
name = "Stuffing"
desc = "Moist, peppery breadcrumbs for filling the body cavities of dead birds. Dig in!"
icon_state = "stuffing"
New()
..()
reagents.add_reagent("nutriment", 3)
bitesize = 1
/obj/item/weapon/reagent_containers/food/snacks/dionaroast
name = "roast diona"
desc = "It's like an enormous, leathery carrot. With an eye."
@@ -2788,12 +3047,111 @@
reagents.add_reagent("radium", 2)
bitesize = 2
/obj/item/weapon/reagent_containers/food/snacks/boiledspiderleg
name = "boiled spider leg"
desc = "A giant spider's leg that's still twitching after being cooked. Gross!"
icon_state = "spiderlegcooked"
trash = /obj/item/trash/plate
New()
..()
reagents.add_reagent("nutriment", 3)
reagents.add_reagent("toxin", 2)
bitesize = 3
/obj/item/weapon/reagent_containers/food/snacks/spidereggs
name = "spider eggs"
desc = "A cluster of juicy spider eggs. A great side dish for when you care not for your health."
icon_state = "spidereggs"
New()
..()
reagents.add_reagent("nutriment", 2)
reagents.add_reagent("toxin", 3)
bitesize = 2
/obj/item/weapon/reagent_containers/food/snacks/spidereggsham
name = "green eggs and ham"
desc = "Would you eat them on a train? Would you eat them on a plane? Would you eat them on a state of the art corporate deathtrap floating through space?"
icon_state = "spidereggsham"
trash = /obj/item/trash/plate
New()
..()
reagents.add_reagent("nutriment", 6)
reagents.add_reagent("sodiumchloride", 1)
reagents.add_reagent("toxin", 3)
bitesize = 4
/obj/item/weapon/reagent_containers/food/snacks/sashimi
name = "carp sashimi"
desc = "Celebrate surviving attack from hostile alien lifeforms by hospitalising yourself."
icon_state = "sashimi"
New()
..()
reagents.add_reagent("nutriment", 6)
reagents.add_reagent("toxin", 5)
bitesize = 3
////////////////////////////////ICE CREAM///////////////////////////////////
/obj/item/weapon/reagent_containers/food/snacks/icecream
name = "ice cream"
desc = "Delicious ice cream."
icon = 'icons/obj/kitchen.dmi'
icon_state = "icecream_cone"
New()
..()
reagents.add_reagent("nutriment", 1)
reagents.add_reagent("sugar",1)
bitesize = 1
update_icon()
///////////////////////////////////////////
// new old food stuff from bs12
///////////////////////////////////////////
update_icon()
overlays.Cut()
var/image/filling = image('icons/obj/kitchen.dmi', src, "icecream_color")
filling.icon += mix_color_from_reagents(reagents.reagent_list)
overlays += filling
/obj/item/weapon/reagent_containers/food/snacks/icecream/icecreamcone
name = "ice cream cone"
desc = "Delicious ice cream."
icon_state = "icecream_cone"
volume = 500
New()
..()
reagents.add_reagent("nutriment", 2)
reagents.add_reagent("sugar",6)
reagents.add_reagent("ice",2)
bitesize = 3
/obj/item/weapon/reagent_containers/food/snacks/icecream/icecreamcup
name = "chocolate ice cream cone"
desc = "Delicious ice cream."
icon_state = "icecream_cup"
volume = 500
New()
..()
reagents.add_reagent("nutriment", 4)
reagents.add_reagent("sugar",8)
reagents.add_reagent("ice",2)
bitesize = 6
/obj/item/weapon/reagent_containers/food/snacks/cereal
name = "box of cereal"
desc = "A box of cereal."
icon = 'icons/obj/food.dmi'
icon_state = "cereal_box"
bitesize = 2
New()
..()
reagents.add_reagent("nutriment", 30)
/obj/item/weapon/reagent_containers/food/snacks/deepfryholder
name = "Deep Fried Foods Holder Obj"
desc = "If you can see this description the code for the deep fryer fucked up."
icon = 'icons/obj/food.dmi'
icon_state = "deepfried_holder_icon"
bitesize = 2
New()
..()
reagents.add_reagent("nutriment", 30)
// Flour + egg = dough
/obj/item/weapon/reagent_containers/food/snacks/flour/attackby(obj/item/weapon/W as obj, mob/user as mob)
@@ -2822,16 +3180,21 @@
reagents.add_reagent("nutriment", 3)
// Dough + rolling pin = flat dough
/obj/item/weapon/reagent_containers/food/snacks/dough/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W,/obj/item/weapon/kitchen/rollingpin))
new /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough(src)
user << "You flatten the dough."
del(src)
/obj/item/weapon/reagent_containers/food/snacks/dough/attackby(obj/item/I, mob/user)
if(istype(I, /obj/item/weapon/kitchen/rollingpin))
if(isturf(loc))
new /obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough(loc)
user << "<span class='notice'>You flatten [src].</span>"
del(src)
else
user << "<span class='notice'>You need to put [src] on a surface to roll it out!</span>"
else
..()
// slicable into 3xdoughslices
/obj/item/weapon/reagent_containers/food/snacks/sliceable/flatdough
name = "flat dough"
desc = "A flattened dough."
desc = "Some flattened dough."
icon = 'icons/obj/food_ingredients.dmi'
icon_state = "flat dough"
slice_path = /obj/item/weapon/reagent_containers/food/snacks/doughslice
@@ -2842,7 +3205,7 @@
/obj/item/weapon/reagent_containers/food/snacks/doughslice
name = "dough slice"
desc = "A building block of an impressive dish."
desc = "The building block of an impressive dish."
icon = 'icons/obj/food_ingredients.dmi'
icon_state = "doughslice"
bitesize = 2
@@ -2852,57 +3215,14 @@
/obj/item/weapon/reagent_containers/food/snacks/bun
name = "bun"
desc = "A base for any self-respecting burger."
desc = "The base for any self-respecting burger."
icon = 'icons/obj/food_ingredients.dmi'
icon_state = "bun"
bitesize = 2
New()
..()
reagents.add_reagent("nutriment", 4)
/obj/item/weapon/reagent_containers/food/snacks/bun/attackby(obj/item/weapon/W as obj, mob/user as mob)
// Bun + meatball = burger
if(istype(W,/obj/item/weapon/reagent_containers/food/snacks/meatball))
new /obj/item/weapon/reagent_containers/food/snacks/monkeyburger(src)
user << "You make a burger."
del(W)
del(src)
// Bun + cutlet = hamburger
else if(istype(W,/obj/item/weapon/reagent_containers/food/snacks/cutlet))
new /obj/item/weapon/reagent_containers/food/snacks/monkeyburger(src)
user << "You make a burger."
del(W)
del(src)
// Bun + sausage = hotdog
else if(istype(W,/obj/item/weapon/reagent_containers/food/snacks/sausage))
new /obj/item/weapon/reagent_containers/food/snacks/hotdog(src)
user << "You make a hotdog."
del(W)
del(src)
// Burger + cheese wedge = cheeseburger
/obj/item/weapon/reagent_containers/food/snacks/monkeyburger/attackby(obj/item/weapon/reagent_containers/food/snacks/cheesewedge/W as obj, mob/user as mob)
if(istype(W))// && !istype(src,/obj/item/weapon/reagent_containers/food/snacks/cheesewedge))
new /obj/item/weapon/reagent_containers/food/snacks/cheeseburger(src)
user << "You make a cheeseburger."
del(W)
del(src)
return
else
..()
// Human Burger + cheese wedge = cheeseburger
/obj/item/weapon/reagent_containers/food/snacks/human/burger/attackby(obj/item/weapon/reagent_containers/food/snacks/cheesewedge/W as obj, mob/user as mob)
if(istype(W))
new /obj/item/weapon/reagent_containers/food/snacks/cheeseburger(src)
user << "You make a cheeseburger."
del(W)
del(src)
return
else
..()
bitesize = 3
/obj/item/weapon/reagent_containers/food/snacks/taco
name = "taco"
+1 -1
View File
@@ -235,7 +235,7 @@
if(istype(user, /mob/living/carbon/human))
var/mob/living/carbon/human/M = user
if(M.h_style == "Floorlength Braid" || M.h_style == "Very Long Hair")
if(prob(25))
if(prob(5))
M.apply_damage(30, BRUTE, "head")
M.apply_damage(45, HALLOSS)
M.visible_message("\red [user]'s hair catches in the [src]!", "\red Your hair gets caught in the [src]!")
+2 -2
View File
@@ -1,2 +1,2 @@
<small>16:13 [0x2007747] (92,152,1)</small> || the gravitational generator has regained power.<br>
<small>16:13 [0x2007747] (92,152,1)</small> || the gravitational generator is now charging.<br>
<small>14:59 [0x200777c] (92,152,1)</small> || the gravitational generator has regained power.<br>
<small>14:59 [0x200777c] (92,152,1)</small> || the gravitational generator is now charging.<br>
+1216 -1179
View File
File diff suppressed because it is too large Load Diff
Binary file not shown.

Before

Width:  |  Height:  |  Size: 90 KiB

After

Width:  |  Height:  |  Size: 115 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 25 KiB

BIN
View File
Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 4.9 KiB

+1 -1
View File
@@ -5124,7 +5124,7 @@
"bUB" = (/obj/machinery/vending/medical,/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay2)
"bUC" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/machinery/light_switch{pixel_x = -23},/turf/simulated/floor{icon_state = "bcarpet07"},/area/medical/psych)
"bUD" = (/obj/machinery/light,/obj/structure/stool/bed/chair/comfy/brown{icon_state = "comfychair_brown"; dir = 4},/obj/effect/landmark/start{name = "Psychiatrist"},/obj/machinery/door_control{id = "Medical_Psychiatry"; name = "Privacy Shutters"; pixel_y = -25},/turf/simulated/floor{icon_state = "bcarpet08"},/area/medical/psych)
"bUE" = (/obj/structure/table,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor{icon_state = "bcarpet08"},/area/medical/psych)
"bUE" = (/obj/structure/table,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/machinery/atmospherics/unary/vent_pump{on = 1},/obj/item/toy/teddy,/turf/simulated/floor{icon_state = "bcarpet08"},/area/medical/psych)
"bUF" = (/obj/machinery/newscaster{pixel_x = 0; pixel_y = -28},/obj/structure/stool/bed/chair/comfy/brown{dir = 8},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 2; on = 1; scrub_CO2 = 0; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor{icon_state = "bcarpet08"},/area/medical/psych)
"bUG" = (/obj/item/weapon/reagent_containers/syringe,/obj/item/weapon/reagent_containers/pill/methylphenidate,/obj/item/weapon/reagent_containers/pill/citalopram,/obj/item/weapon/reagent_containers/pill/citalopram,/obj/item/weapon/reagent_containers/pill/methylphenidate,/obj/item/weapon/reagent_containers/glass/bottle/stoxin,/obj/item/clothing/suit/straight_jacket{layer = 3},/obj/structure/closet/secure_closet{name = "Psychiatrist's Locker"; req_access = null; req_access_txt = "64"},/obj/item/weapon/storage/box/cups,/turf/simulated/floor{icon_state = "bcarpet09"},/area/medical/psych)
"bUH" = (/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/sign/securearea{pixel_x = 32},/turf/simulated/floor/plating,/area/maintenance/asmaint)