mirror of
https://github.com/Aurorastation/Aurora-Old.git
synced 2026-08-28 07:06:19 +01:00
Merge pull request #252 from Aurorastation/development
Update 28AUG2014
This commit is contained in:
@@ -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
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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.
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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].")
|
||||
@@ -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)
|
||||
|
||||
@@ -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]!")
|
||||
|
||||
@@ -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].")
|
||||
@@ -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)
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -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>")
|
||||
|
||||
@@ -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
|
||||
@@ -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!"
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
@@ -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")
|
||||
@@ -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'
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
@@ -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
|
||||
@@ -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,
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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.
|
||||
*/
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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].")
|
||||
@@ -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"
|
||||
|
||||
@@ -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]!")
|
||||
|
||||
@@ -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
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 |
Binary file not shown.
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 4.9 KiB |
+1
-1
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user