diff --git a/Scopes Files/space_cooler.dm b/Scopes Files/space_cooler.dm index a2eb1369..7a7e9aef 100644 --- a/Scopes Files/space_cooler.dm +++ b/Scopes Files/space_cooler.dm @@ -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 \ No newline at end of file diff --git a/aurora.dme b/aurora.dme index c5bbe042..f2092f19 100644 --- a/aurora.dme +++ b/aurora.dme @@ -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" diff --git a/code/controllers/delta_level.dm b/code/controllers/delta_level.dm index 413c7f31..4b21f760 100644 --- a/code/controllers/delta_level.dm +++ b/code/controllers/delta_level.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 diff --git a/code/controllers/verbs.dm b/code/controllers/verbs.dm index 7793f44c..cf22c0bc 100644 --- a/code/controllers/verbs.dm +++ b/code/controllers/verbs.dm @@ -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 diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index b9ac22bc..20b0ff79 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -417,7 +417,7 @@ Implants; //Reports player logouts// ////////////////////////// proc/display_roundstart_logout_report() - var/msg = "\blue Roundstart logout report\n\n" + var/msg = "\blue Roundstart logout report\n\n" for(var/mob/living/L in mob_list) if(L.ckey) diff --git a/code/game/gamemodes/gameticker.dm b/code/game/gamemodes/gameticker.dm index 55f503f5..071f2442 100644 --- a/code/game/gamemodes/gameticker.dm +++ b/code/game/gamemodes/gameticker.dm @@ -384,7 +384,7 @@ var/global/datum/controller/gameticker/ticker robo.laws.show_laws(world) if(dronecount) - world << "There [dronecount>1 ? "were" : "was"] [dronecount] industrious maintenance [dronecount>1 ? "drones" : "drone"] this round." + world << "There [dronecount>1 ? "were" : "was"] [dronecount] industrious maintenance [dronecount>1 ? "drones" : "drone"] this round." mode.declare_completion()//To declare normal completion. diff --git a/code/game/gamemodes/vampire/vampire.dm b/code/game/gamemodes/vampire/vampire.dm index a800cc59..188108cf 100644 --- a/code/game/gamemodes/vampire/vampire.dm +++ b/code/game/gamemodes/vampire/vampire.dm @@ -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 += "
Objective #[count]: [objective.explanation_text] Success!" - feedback_add_details("traitor_objective","[objective.type]|SUCCESS") - else - text += "
Objective #[count]: [objective.explanation_text] Fail." - 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 += "
Objective #[count]: [objective.explanation_text] Success!" + feedback_add_details("traitor_objective","[objective.type]|SUCCESS") + else + text += "
Objective #[count]: [objective.explanation_text] Fail." + 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 += "
The [special_role_text] was successful!" - feedback_add_details("traitor_success","SUCCESS") - else - text += "
The [special_role_text] has failed!" - feedback_add_details("traitor_success","FAIL") + if (!config.objectives_disabled) + if(traitorwin) + text += "
The [special_role_text] was successful!" + feedback_add_details("traitor_success","SUCCESS") + else + text += "
The [special_role_text] has failed!" + 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) diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index e1750ce9..e9fbe390 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -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()]\] Has fed [target.name]'s ([target.ckey]) hair into a [src].") + target.attack_log += text("\[[time_stamp()]\] Has had their hair fed into [src] by [user.name] ([user.ckey])") + msg_admin_attack("[user] ([user.ckey]) fed [target]'s ([target.ckey]) in a [src]. (JMP)") + 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].") \ No newline at end of file diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm index 5246d97e..2f85c5f2 100644 --- a/code/game/machinery/cryopod.dm +++ b/code/game/machinery/cryopod.dm @@ -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) diff --git a/code/game/machinery/kitchen/gibber.dm b/code/game/machinery/kitchen/gibber.dm index 7d1a54d9..7d2ffc5a 100644 --- a/code/game/machinery/kitchen/gibber.dm +++ b/code/game/machinery/kitchen/gibber.dm @@ -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]!") diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm index d8794b83..081d997d 100644 --- a/code/game/mecha/mech_fabricator.dm +++ b/code/game/mecha/mech_fabricator.dm @@ -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()]\] Has fed [target.name]'s ([target.ckey]) hair into a [src].") + target.attack_log += text("\[[time_stamp()]\] Has had their hair fed into [src] by [user.name] ([user.ckey])") + msg_admin_attack("[user] ([user.ckey]) fed [target]'s ([target.ckey]) in a [src]. (JMP)") + 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].") \ No newline at end of file diff --git a/code/game/objects/items/devices/modkit.dm b/code/game/objects/items/devices/modkit.dm index a7c221aa..1037c6af 100644 --- a/code/game/objects/items/devices/modkit.dm +++ b/code/game/objects/items/devices/modkit.dm @@ -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 << "This kit has no parts for this modification left." return @@ -33,6 +41,7 @@ user << "[O] must be safely placed on the ground for modification." 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 \ No newline at end of file + +//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) + + + diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index 877483d9..f7de7211 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -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(" [user] has analyzed [M]'s vitals."," You have analyzed [M]'s vitals.") + user.visible_message(" [user] has analyzed [M]'s vitals."," You have analyzed [M]'s vitals.") var/fake_oxy = max(rand(1,40), M.getOxyLoss(), (300 - (M.getToxLoss() + M.getFireLoss() + M.getBruteLoss()))) var/OX = M.getOxyLoss() > 50 ? "[M.getOxyLoss()]" : M.getOxyLoss() var/TX = M.getToxLoss() > 50 ? "[M.getToxLoss()]" : 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 Warning: Blood Level LOW: [blood_percent]% [blood_volume]cl.\blue Type: [blood_type]") + user.show_message("\red Warning: Blood Level LOW: [blood_percent]% [blood_volume]cl.\blue Type: [blood_type]") else if(blood_volume <= 336) - user.show_message("\red Warning: Blood Level CRITICAL: [blood_percent]% [blood_volume]cl.\blue Type: [blood_type]") + user.show_message("\red Warning: Blood Level CRITICAL: [blood_percent]% [blood_volume]cl.\blue Type: [blood_type]") else user.show_message("\blue Blood Level Normal: [blood_percent]% [blood_volume]cl. Type: [blood_type]") user.show_message("\blue Subject's pulse: [H.get_pulse(GETPULSE_TOOL)] bpm.") diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index dcfbf14f..e6e41270 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -595,4 +595,44 @@ item_state = "inflatable" flags = FPRINT | TABLEPASS icon = 'icons/obj/clothing/belts.dmi' - slot_flags = SLOT_BELT \ No newline at end of file + 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("[user] stares at [src] full of anger, but elects not to tear any more limbs off of it.", "You've already ripped [src]'s head off, what else do you want to do to it!?") + else + user.visible_message("[user] clutches [src] with anger, and rips its head off, dropping it to the ground!", "You are unable to contain your anger any longer! Off with its head!") + 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("[user] clutches [src] with both arms, weeping slightly as they embrace the headless toy.", "You clutch the toy, shivering and weeping slightly. Who would do such a monsterous thing?") + else + user.visible_message("[user] clutches [src] and embraces it!", "You hug the toy, and suddenly feel how the weight of the world is lifted from your shoulders!") + +/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 \ No newline at end of file diff --git a/code/game/objects/items/weapons/defib.dm b/code/game/objects/items/weapons/defib.dm index 3be86dfa..dc969588 100644 --- a/code/game/objects/items/weapons/defib.dm +++ b/code/game/objects/items/weapons/defib.dm @@ -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) diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index 85292bd8..c96dbb72 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -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!" diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index c9166528..0b5c9178 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -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 [user] bashes [M] against \the [src]!") + 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 [user] crushes [M] against \the [src]!") + 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) diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm index 9e6f70d3..e3691b45 100644 --- a/code/game/turfs/simulated/walls.dm +++ b/code/game/turfs/simulated/walls.dm @@ -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 diff --git a/code/game/turfs/simulated/walls_reinforced.dm b/code/game/turfs/simulated/walls_reinforced.dm index 822b4e77..53fc7bca 100644 --- a/code/game/turfs/simulated/walls_reinforced.dm +++ b/code/game/turfs/simulated/walls_reinforced.dm @@ -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 diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 454bf874..40f4f20a 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -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) diff --git a/code/modules/aurora/bluespacetech.dm b/code/modules/aurora/bluespacetech.dm index b2828226..16d663fb 100644 --- a/code/modules/aurora/bluespacetech.dm +++ b/code/modules/aurora/bluespacetech.dm @@ -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 << "Your hand seems to go right through the pda. It's like it doesn't exist." + return + else + ..() + /mob/living/carbon/human/bst/restrained() return 0 \ No newline at end of file diff --git a/code/modules/clothing/spacesuits/alien.dm b/code/modules/clothing/spacesuits/alien.dm index 4e931595..381259b8 100644 --- a/code/modules/clothing/spacesuits/alien.dm +++ b/code/modules/clothing/spacesuits/alien.dm @@ -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") \ No newline at end of file diff --git a/code/modules/customitems/item_defines.dm b/code/modules/customitems/item_defines.dm index 939ddf51..4eeac4b7 100644 --- a/code/modules/customitems/item_defines.dm +++ b/code/modules/customitems/item_defines.dm @@ -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("[user] stares at [src] full of anger, but elects not to tear any more limbs off of it.", "You've already ripped [src]'s head off, what else do you want to do to it!?") - else - user.visible_message("[user] clutches [src] with anger, and rips its head off, dropping it to the ground!", "You are unable to contain your anger any longer! Off with its head!") - 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("[user] clutches [src] with both arms, weeping slightly as they embrace the headless toy.", "You clutch the toy, shivering and weeping slightly. Who would do such a monsterous thing?") - else - user.visible_message("[user] clutches [src] and embraces it!", "You hug the toy, and suddenly feel how the weight of the world is lifted from your shoulders!") - -/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' diff --git a/code/modules/food/cereal_maker.dm b/code/modules/food/cereal_maker.dm new file mode 100644 index 00000000..d7b0d75a --- /dev/null +++ b/code/modules/food/cereal_maker.dm @@ -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 + diff --git a/code/modules/food/cooker.dm b/code/modules/food/cooker.dm new file mode 100644 index 00000000..edd74e9a --- /dev/null +++ b/code/modules/food/cooker.dm @@ -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 << "[src] is still active!" + return 0 + if(istype(check, /obj/item/weapon/grab) || istype(check, /obj/item/tk_grab)) + user << "That isn't going to fit." + return 0 + if(istype(check, /obj/item/weapon/reagent_containers/glass)) + user << "That would probably break [src]." + 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 << "That isn't going to fit." + 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 << "You smell burning coming from the [src]!" +/* 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 << "You put [tocook] into [src]." + 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 << "That is already [thiscooktype], it would do nothing!" + 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) + + + diff --git a/code/modules/food/customizables.dm b/code/modules/food/customizables.dm new file mode 100644 index 00000000..d59f9b00 --- /dev/null +++ b/code/modules/food/customizables.dm @@ -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 << "If you put anything else in or on [src] it's going to make a mess." + 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 << "You add [I] to [src]." + 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 << " You think you can see [whatsinside] in there." + +/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 + diff --git a/code/modules/food/food_grill.dm b/code/modules/food/food_grill.dm new file mode 100644 index 00000000..54290c80 --- /dev/null +++ b/code/modules/food/food_grill.dm @@ -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 + diff --git a/code/modules/food/icecream_vat.dm b/code/modules/food/icecream_vat.dm new file mode 100644 index 00000000..7531c064 --- /dev/null +++ b/code/modules/food/icecream_vat.dm @@ -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 << "A container is already inside [src]." + return + beaker = I + user.drop_item() + I.loc = src + user << "You add [I] to [src]" + 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 << "This [I] already has sprinkles." + + +/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 << "[src] vibrates for a moment, apparently accepting the unknown liquid." + 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 += "
" + dat += "Add fillings:
" + dat += "Soda
" + dat += "Alcohol
" + dat += "Finish With:
" + dat += "Cream
" + dat += "Water
" + dat += "Dispense in:
" + dat += "Chocolate Cone
" + dat += "Cone
" + dat += "" + 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:
" + for(var/datum/reagent/G in R.reagent_list) + dat += "[G.volume] unit(s) of [G.name] | " + dat += "(5) " + dat += "(10) " + dat += "(15) " + dat += "(All)" + dat += "
" + else if(container == 2) + dat += "
The Cream-Master has:
" + if(reagents.total_volume) + for(var/datum/reagent/N in reagents.reagent_list) + dat += "[N.volume] unit(s) of [N.name] | " + dat += "(5) " + dat += "(10) " + dat += "(15) " + dat += "(All)" + dat += "
" + else + dat += "
SOMEONE ENTERED AN INVALID REAGENT CONTAINER; QUICK, BUG REPORT!
" + 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.
" + dat += show_reagents(2) + dat += show_toppings() + dat += "Close" + else + var/obj/item/weapon/reagent_containers/glass/A = beaker + var/datum/reagents/R = A.reagents + dat += "Eject container and end transfer.
" + if(!R.total_volume) + dat += "Container is empty.

" + 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() \ No newline at end of file diff --git a/code/modules/food/oven.dm b/code/modules/food/oven.dm new file mode 100644 index 00000000..2dd97fce --- /dev/null +++ b/code/modules/food/oven.dm @@ -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 diff --git a/code/modules/food/recipes_microwave.dm b/code/modules/food/recipes_microwave.dm index 36cd914f..e0b5af05 100644 --- a/code/modules/food/recipes_microwave.dm +++ b/code/modules/food/recipes_microwave.dm @@ -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, diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 746c5d0d..1df0e24a 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -204,8 +204,8 @@ src.sleeping = max(0,src.sleeping-5) if(src.sleeping == 0) src.resting = 0 - M.visible_message("[M] shakes [src] trying to wake [t_him] up!", \ - "You shake [src] trying to wake [t_him] up!") + M.visible_message("[M] shakes [src] trying to wake [t_him] up!", \ + "You shake [src] trying to wake [t_him] up!") else M.visible_message("[M] hugs [src] to make [t_him] feel better!", \ "You hug [src] to make [t_him] feel better!") diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 8b35a218..d043296d 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -891,13 +891,13 @@ if(!lastpuke) lastpuke = 1 - src << "You feel nauseous..." + src << "You feel nauseous..." spawn(150) //15 seconds until second warning - src << "You feel like you are about to throw up!" + src << "You feel like you are about to throw up!" spawn(100) //and you have 10 more for mad dash to the bucket Stun(5) - src.visible_message("[src] throws up!","You throw up!") + src.visible_message("[src] throws up!","You throw up!") playsound(loc, 'sound/effects/splat.ogg', 50, 1) var/turf/location = loc diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 9d22b72a..8130627d 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -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 [user] misses [src] with \the [I]!") + visible_message("\red [user] misses [src] with \the [I]!") return 0 var/datum/organ/external/affecting = get_organ(target_zone) diff --git a/code/modules/mob/living/simple_animal/hostile/bat.dm b/code/modules/mob/living/simple_animal/hostile/bat.dm index faebfd62..32e38ce9 100644 --- a/code/modules/mob/living/simple_animal/hostile/bat.dm +++ b/code/modules/mob/living/simple_animal/hostile/bat.dm @@ -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) diff --git a/code/modules/mob/login.dm b/code/modules/mob/login.dm index 3b88a13f..342dde47 100644 --- a/code/modules/mob/login.dm +++ b/code/modules/mob/login.dm @@ -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("Notice: [key_name_admin(src)] has the same [matches] as [key_name_admin(M)].", 1) + message_admins("Notice: [key_name_admin(src)] has the same [matches] as [key_name_admin(M)].", 1) log_access("Notice: [key_name(src)] has the same [matches] as [key_name(M)].") else - message_admins("Notice: [key_name_admin(src)] has the same [matches] as [key_name_admin(M)] (no longer logged in). ", 1) + message_admins("Notice: [key_name_admin(src)] has the same [matches] as [key_name_admin(M)] (no longer logged in). ", 1) log_access("Notice: [key_name(src)] has the same [matches] as [key_name(M)] (no longer logged in).") /mob/Login() diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index c51d5167..ceffffcd 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -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("\The [W] sticks in the wound!") + 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. */ diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm index 41759378..8e19a9d1 100644 --- a/code/modules/projectiles/projectile.dm +++ b/code/modules/projectiles/projectile.dm @@ -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()]\] [firer]/[firer.ckey] shot [M]/[M.ckey] with a [src.type]" - firer.attack_log += "\[[time_stamp()]\] [firer]/[firer.ckey] shot [M]/[M.ckey] with a [src.type]" - msg_admin_attack("[firer] ([firer.ckey]) shot [M] ([M.ckey]) with a [src] (JMP)") //BS12 EDIT ALG + M.attack_log += "\[[time_stamp()]\] [firer]/[firer.ckey] shot [M]/[M.ckey] with [src.type]" + firer.attack_log += "\[[time_stamp()]\] [firer]/[firer.ckey] shot [M]/[M.ckey] with [src.type]" + msg_admin_attack("[firer] ([firer.ckey]) shot [M] ([M.ckey]) with [src] (JMP)") //BS12 EDIT ALG else - M.attack_log += "\[[time_stamp()]\] UNKNOWN SUBJECT (No longer exists) shot [M]/[M.ckey] with a [src]" - msg_admin_attack("UNKNOWN shot [M] ([M.ckey]) with a [src] (JMP)") //BS12 EDIT ALG + M.attack_log += "\[[time_stamp()]\] UNKNOWN SUBJECT (No longer exists) shot [M]/[M.ckey] with [src]" + msg_admin_attack("UNKNOWN shot [M] ([M.ckey]) with [src] (JMP)") //BS12 EDIT ALG if(A) if (!forcedodge) diff --git a/code/modules/projectiles/projectile/special.dm b/code/modules/projectiles/projectile/special.dm index 1fc605b5..d31848cd 100644 --- a/code/modules/projectiles/projectile/special.dm +++ b/code/modules/projectiles/projectile/special.dm @@ -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) diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm index 520614c2..b43dc1f7 100644 --- a/code/modules/reagents/Chemistry-Machinery.dm +++ b/code/modules/reagents/Chemistry-Machinery.dm @@ -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()]\] Has fed [target.name]'s ([target.ckey]) hair into a [src].") + target.attack_log += text("\[[time_stamp()]\] Has had their hair fed into [src] by [user.name] ([user.ckey])") + msg_admin_attack("[user] ([user.ckey]) fed [target]'s ([target.ckey]) in a [src]. (JMP)") + 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].") \ No newline at end of file diff --git a/code/modules/reagents/Chemistry-Recipes.dm b/code/modules/reagents/Chemistry-Recipes.dm index 6be58256..99d219f2 100644 --- a/code/modules/reagents/Chemistry-Recipes.dm +++ b/code/modules/reagents/Chemistry-Recipes.dm @@ -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("The slime extract begins to vibrate violently !"), 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 diff --git a/code/modules/reagents/reagent_containers/food/snacks.dm b/code/modules/reagents/reagent_containers/food/snacks.dm index 67d052bf..9095434f 100644 --- a/code/modules/reagents/reagent_containers/food/snacks.dm +++ b/code/modules/reagents/reagent_containers/food/snacks.dm @@ -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 << "You finish eating \the [src]." - M.visible_message("[M] finishes eating \the [src].") + usr.visible_message("[usr] finishes eating \the [src].") usr.drop_from_inventory(src) //so icons update :[ if(trash) @@ -79,7 +84,11 @@ M.attack_log += text("\[[time_stamp()]\] Has been fed [src.name] by [user.name] ([user.ckey]) Reagents: [reagentlist(src)]") user.attack_log += text("\[[time_stamp()]\] Fed [src.name] by [M.name] ([M.ckey]) Reagents: [reagentlist(src)]") - 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 << "Something inside of you suddently expands!" + + + 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("[M] suddenly tears in half!") + 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 << "You flatten [src]." + del(src) + else + user << "You need to put [src] on a surface to roll it out!" + 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" diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm index 85364608..82a3f9b9 100644 --- a/code/modules/recycling/disposal.dm +++ b/code/modules/recycling/disposal.dm @@ -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]!") diff --git a/data/investigate/gravity.html b/data/investigate/gravity.html index 8ab1a86a..c3b98f4e 100644 --- a/data/investigate/gravity.html +++ b/data/investigate/gravity.html @@ -1,2 +1,2 @@ -16:13 [0x2007747] (92,152,1) || the gravitational generator has regained power.
-16:13 [0x2007747] (92,152,1) || the gravitational generator is now charging.
+14:59 [0x200777c] (92,152,1) || the gravitational generator has regained power.
+14:59 [0x200777c] (92,152,1) || the gravitational generator is now charging.
diff --git a/html/changelog.html b/html/changelog.html index 9093b7c0..442d7a10 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -1,72 +1,109 @@ - - - - Baystation 12 Changelog - - - - - - - -
- - - - -
-
Space Station 13
-

- Code licensed under GPLv3. Content licensed under CC BY-SA 3.0.

-
-
Baystation 12 Credit List - - - - -
- Code: Abi79, Aryn, Cael_Aislinn, Ccomp5950, Chinsky, cib, CompactNinja, DopeGhoti, Erthilo, Hawk_v3, Head, Ispil, JoeyJo0, Lexusjjss, Melonstorm, Miniature, Mloc, NerdyBoy1104, SkyMarshal, Snapshot, Spectre, Strumpetplaya, Sunfall, Tastyfish, Uristqwerty
- Sprites: Apple_Master, Arcalane, Chinsky, CompactNinja, Deus Dactyl, Erthilo, Flashkirby, JoeyJo0, Miniature, Searif, Xenone, faux
- Sounds: Aryn
- Thanks To: /tg/ station, Goonstation, Animus Station, Daedalus, and original Spacestation 13 devs. Skibiliano for the IRC bot. -
- - - - - - - - + + + + Baystation 12 Changelog + + + + + + + +
+ + + + +
+
Space Station 13
+

+ Code licensed under GPLv3. Content licensed under CC BY-SA 3.0.

+
+
Baystation 12 Credit List + + + + +
+ Code: Abi79, Aryn, Cael_Aislinn, Ccomp5950, Chinsky, cib, CompactNinja, DopeGhoti, Erthilo, Hawk_v3, Head, Ispil, JoeyJo0, Lexusjjss, Melonstorm, Miniature, Mloc, NerdyBoy1104, SkyMarshal, Snapshot, Spectre, Strumpetplaya, Sunfall, Tastyfish, Uristqwerty
+ Sprites: Apple_Master, Arcalane, Chinsky, CompactNinja, Deus Dactyl, Erthilo, Flashkirby, JoeyJo0, Miniature, Searif, Xenone, faux
+ Sounds: Aryn
+ Thanks To: /tg/ station, Goonstation, Animus Station, Daedalus, and original Spacestation 13 devs. Skibiliano for the IRC bot. +
+ + + + + + + + + +
+

27 August 2014

+

SoundScopes updated:

+
    +
  • Hitting people against walls
  • +
  • Hair torture
  • +
  • Cerealmaker
  • +
  • Foodgrill
  • +
  • Candy
  • +
  • Telebacon
  • +
  • You know what, a lot of food
  • +
  • Customizable Foods
  • +
  • Oven
  • +
  • Ice Machine
  • +
  • Eating monkey cubes now results in disaster and pain
  • +
  • Weapons embed themselves into wounds
  • +
  • Gold Slimes
  • +
  • Attack log errors
  • +
  • Bats no longer attack each other
  • +
  • Vamp objectives removed if objectives are toggled off
  • +
  • HTML tags in logs
  • +
  • Faithless sprite unbork
  • +
  • Tossed Salad from microwave recipes
  • +
  • Current Security Level now shown to the admin when choosing the new one
  • +
  • Law Giver settings
  • +
  • Cryo Item Recovery not has a cancel button
  • +
  • Security Hardsuits & Helmets for all species
  • +
  • Atmospheric Hardsuits & Helmets for all species
  • +
  • Mining Hardsuits & Helmets for all species
  • +
  • Engineering Hardsuits & Helmets for all species
  • +
+
+

25 August 2014

SoundScopes updated:

  • Workplace hazards baised of hair length
  • -
  • Gavity Generator Fix
  • +
  • Gravity Generator Fix
  • Fryed food no longer drops it's original item when eaten
  • +
  • Water now gets deleted
  • Medical Alarms
  • Air Conditioners
  • Admin Logs
  • Debug Logs
  • +
  • Siik'tajr changed to Siik'Maas
  • +
  • Rotatable Freezes and Heaters
@@ -170,7 +207,7 @@ should be listed in the changelog upon commit though. Thanks. -->
  • Added Developers under the "StaffWho" query
  • - +

    12 June 2014

    @@ -180,7 +217,7 @@ should be listed in the changelog upon commit though. Thanks. -->
  • An attempt at fixing Telecomms
  • - +

    9 June 2014

    @@ -190,7 +227,7 @@ should be listed in the changelog upon commit though. Thanks. -->
  • Fixed the "Bangs" hairstyle. No more cat-ears
  • - +

    9 June 2014

    @@ -199,7 +236,7 @@ should be listed in the changelog upon commit though. Thanks. -->
  • Took away the ability to talk on a headset when cuffed
  • - +

    9 June 2014

    @@ -208,7 +245,7 @@ should be listed in the changelog upon commit though. Thanks. -->
  • Implimented new Medical Bay design
  • - +

    9 June 2014

    @@ -219,7 +256,7 @@ should be listed in the changelog upon commit though. Thanks. -->
  • New EMT sprites, Console sprites and Chair Sprites.
  • - +

    5 June 2014

    @@ -245,7 +282,7 @@ should be listed in the changelog upon commit though. Thanks. -->
  • No longer emptying other people's pockets when they are not full yet
  • - +

    6 Mai 2014

    @@ -255,8 +292,8 @@ should be listed in the changelog upon commit though. Thanks. -->
  • Adds icons for copied stamps
  • - - + +

    25 April 2014

    @@ -278,26 +315,26 @@ should be listed in the changelog upon commit though. Thanks. -->
    -
    -

    11 April 2014

    -

    Jarcolr updated:

    -
    • You can now flip coins like a D2
    • -
    • Miscellaneous cargo crates got a tiny buff, Standard Costume crate is now Costume Crate
    • -
    • Grammar patch,telekinesis/amputated arm exploit fixes,more in the future
    • -
    • Grille kicking now does less damage
    • -
    • TELESCOPIC baton no longer knocks anybody down,still got a lot of force though
    • -
    • Other small-ish changes and fixes that aren't worth mentioning
    - - - -
    -

    6 April 2014

    -

    RavingManiac updated:

    -
      -
    • Tape recorders and station-bounced radios now work inside containers and closets.
    • -
    -
    - +
    +

    11 April 2014

    +

    Jarcolr updated:

    +
    • You can now flip coins like a D2
    • +
    • Miscellaneous cargo crates got a tiny buff, Standard Costume crate is now Costume Crate
    • +
    • Grammar patch,telekinesis/amputated arm exploit fixes,more in the future
    • +
    • Grille kicking now does less damage
    • +
    • TELESCOPIC baton no longer knocks anybody down,still got a lot of force though
    • +
    • Other small-ish changes and fixes that aren't worth mentioning
    + + + +
    +

    6 April 2014

    +

    RavingManiac updated:

    +
      +
    • Tape recorders and station-bounced radios now work inside containers and closets.
    • +
    +
    +

    30 March 2014

    RavingManiac updated:

    @@ -306,1095 +343,1095 @@ should be listed in the changelog upon commit though. Thanks. -->
    -
    -

    10 March 2014

    -

    Chinsky updated:

    -
      -
    • Viruses now affect certain range of species, different for each virus
    • -
    • Spaceacilline now prevents infection, and has a small chance to cure viruses at Stage 1. It does not give them antibodies though, so they can get sick again!
    • -
    • Biosuits and spacesuits now offer more protection against viruses. Full biosuit competely prevents airborne infection, when coupled with gloves they both protect quite well from contact ones
    • -
    • Sneezing now spreads viruses in front of mob. Sometimes he gets a warning beforehand though
    • -
    -
    - -
    -

    5 March 2014

    -

    RavingManiac updated:

    -
      -
    • Smartfridges added to the bar, chemistry and virology. No more clutter!
    • -
    • A certain musical instrument has returned to the bar.
    • -
    • There is now a ten second delay between ingesting a pill/donut/milkshake and regretting it.
    • -
    -
    - -
    -

    1 March 2014

    -

    Various updated:

    -
      -
    • Paint Mixing, red and blue makes purple!
    • -
    • New posters to tell you to respect those darned cat people
    • -
    • NanoUI for APC's, Canisters, Tank Transfer Valves and the heaters / coolers
    • -
    • PDA bombs are now less annoying, and won't always blow up / cause internal bleeding
    • -
    • Blob made less deadly
    • -
    • Objectiveless Antags now a configuration option, choose your own adventure!
    • -
    • Engineering redesign, now with better monitoring of the explodium supermatter!
    • -
    • Security EOD
    • -
    • New playable race, IPC's, go beep boop boop all over the station!
    • -
    • Gamemode autovoting, now players don't have to call for gamemode votes, it's automatic!
    • -
    -
    - -
    -

    19 February 2014

    -

    Aryn updated:

    -
      -
    • New air model. Nothing should change to a great degree, but temperature flow might be affected due to closed connections not sticking around.
    • -
    -
    - -
    -

    1 February 2014

    -

    Various updated:

    -
      -
    • NanoUI for PDA
    • -
    • Write in blood while a ghost in cult rounds with enough cultists
    • -
    • Cookies, absurd sandwiches, and even cookable dioanae nymphs!
    • -
    • A bunch of new guns and other weapons
    • -
    • Species specific blood
    • -
    -
    - -
    -

    1 January 2014

    -

    Various updated:

    -
      -
    • AntagHUD and MedicalHUD for ghosts, see who the baddies are, check for new configuration options.
    • -
    • Ghosts will now have bold text if they are in the same room as the person making conversations easier to follow.
    • -
    • New hairstyles! Now you can use something other then hotpink floor length braid.
    • -
    • DNA rework, tell us how you were cloned and became albino!
    • -
    • Dirty floors, so now you know exactly how lazy the janitors are!
    • -
    • A new UI system, feel free to color it yourself, don't set it to completely clear or you will have a bad time.
    • -
    • Cryogenic storage, for all your SSD needs.
    • -
    • New hardsuits for those syndicate tajaran
    • -
    -
    - -
    -

    18 December 2013

    -

    RavingManiac updated:

    -
      -
    • Mousetraps can now be "hidden" through the right-click menu. This makes them go under tables, clutter and the like. The filthy rodents will never see it coming!
    • -
    • Monkeys will no longer move randomly while being pulled.
    • -
    -
    - -
    -

    1 December 2013

    -

    Various Developers banged their keyboards together:

    -
      -
    • New Engine, the supermatter, figure out what a cooling loop is, or don't and blow up engineering!
    • -
    • Each department will have it's own fax, make a copy of your butt and fax it to the admins!
    • -
    • Booze and soda dispensers, they are like chemmasters, only with booze and soda!
    • -
    • Bluespace and Cryostasis beakers, how do they work? Fuggin bluespace how do they work?
    • -
    • You can now shove things into vending machines, impress your friends on how things magically disappear out of your hands into the machine!
    • -
    • Robots and Androids (And gynoids too!) can now use custom job titles
    • -
    • Various bugfixes
    • -
    -
    - -
    -

    24 November 2013

    -

    Yinadele updated:

    -
      -
    • Supermatter engine added! Please treat your new engine gently, and report any strangeness!
    • -
    • Rebalanced events so people don't explode into appendicitis or have their organs constantly explode.
    • -
    • Vending machines have had bottled water, iced tea, and grape soda added.
    • -
    • Head reattachment surgery added! Sew heads back on proper rather than monkey madness.
    • -
    • Pain crit rebalanced - Added aim variance depending on pain levels, nerfed blackscreen severely.
    • -
    • Cyborg alt titles: Robot, and Android added! These will make you spawn as a posibrained robot. Please enjoy!
    • -
    • Fixed the sprite on the modified welding goggles, added a pair to the CE's office where they'll be used.
    • -
    • Fixed atmos computers- They are once again responsive!
    • -
    • Added in functionality proper for explosive implants- You can now set their level of detonation, and their effects are more responsively concrete depending on setting.
    • -
    • Hemostats re-added to autolathe!
    • -
    • Added two manuals on atmosia and EVA, by MagmaRam! Found in engineering and the engineering bookcase.
    • -
    • Fixed areas in medbay to have fully functional APC sectors.
    • -
    • Girders are now lasable.
    • -
    • Please wait warmly, new features planned for next merge!
    • -
    -
    - -
    -

    23 November 2013

    -

    Ccomp5950 updated:

    -
      -
    • Players are now no longer able to commit suicide with a lasertag gun, and will feel silly for doing so.
    • -
    • Ghosts hit with the cult book shall now actually become visible.
    • -
    • The powercells spawned with Exosuits will now properly be named to not confuse bearded roboticists.
    • -
    • Blindfolded players will now no longer require eye surgery to repair their sight, removing the blindfold will be sufficient.
    • -
    • Atmospheric Technicians will now have access to Exterior airlocks.
    • -
    -
    - -
    -

    1 November 2013

    -

    Various updated:

    -
      -
    • Autovoting, Get off the station when your 15 hour workweek is done, thanks unions!
    • -
    • Some beach props that Chinsky finds useless.
    • -
    • Updated NanoUI
    • -
    • Dialysis while in sleepers - removes reagents from mobs, like the chemist, toss him in there!
    • -
    • Pipe Dispensers can now be ordered by Cargo
    • -
    • Fancy G-G-G-G-Ghosts!
    • -
    -
    - -
    -

    29 October 2013

    -

    Cael_Aislinn updated:

    -
      -
    • Xenoarchaeology's chemical analysis and six analysis machines are gone, replaced by a single one which can be beaten in a minigame.
    • -
    • Sneaky traitors will find new challenges to overcome at the research outpost, but may also find new opportunities (transit tubes can now be traversed).
    • -
    • Finding active alien machinery should now be made significantly easier with the Alden-Saraspova counter.
    • -
    -
    - - -
    -

    06 October 2013

    -

    Chinsky updated:

    -
      -
    • Added contact-spread viruses. Spread if infected guy touches someone with bare hands, or if someone touches bare infected guy. Biosuits/gloves help.
    • -
    • Changed way airborne viruses spread a bit. Now 20% of breaths will carry viruses to adjacent tiles. Wearing sterile mask cuts down it to 5%. Masks, bio/space suits (only when worn with matching helmet) protect, internals protect completely.
    • -
    • Raised infection chances considerably. They were so low people reported that infection does not work. Now it's 50-90% chance for unprotected folks.
    • -
    • Blood puddles and mucus now spread the fun again
    • -
    -
    - - -
    -

    06 October 2013

    -

    Chinsky updated:

    -
      -
    • Return of dreaded side effects. They now manifest well after their cause disappears, so curing them should be possible without them reappearing immediately. They also lost last stage damaging effects.
    • -
    -
    - -
    -

    September 24th, 2013

    -

    Snapshot updated:

    -
      -
    • Removed hidden vote counts.
    • -
    • Removed hiding of vote results.
    • -
    • Removed OOC muting during votes.
    • -
    • Crew transfers are no longer callable during Red and Delta alert.
    • -
    • Started work on Auto transfer framework.
    • -
    -
    - -
    -

    18 September 2013

    -

    Kilakk updated:

    -
      -
    • Fax machines! The Captain and IA agents can use the fax machine to send properly formatted messages to Central Command.
    • -
    • Gave the fax machine a fancy animated sprite. Thanks Cajoes!
    • -
    -
    - -
    -

    August 8th, 2013

    -

    Erthilo updated:

    -
      -
    • Raise Dead rune now properly heals and revives dead corpse.
    • -
    • Admin-only rejuvenate verb now heals all organs, limbs, and diseases.
    • -
    • Cyborg sprites now correctly reset with reset boards. This means cyborg appearances can now be changed without admin intervention.
    • -
    -
    - -
    -

    2013/08/4

    -

    Chinsky updated:

    -
      -
    • Health HUD indicator replaced with Pain indicator. Now health indicator shows pain level instead of actual vitals level. Some types of damage contribute more to pain, some less, usually feeling worse than they really are.
    • -
    -
    - -
    -
    -

    2013/08/01

    -

    Chinsky updated:

    -
      -
    • Old new medical features:
    • -
    • Autoinjectors! They come preloaded with 5u of inapro, can be used instantly, and are one-use. You can replace chems inside using a syringe. Box of them is added to Medicine closet and medical supplies crate.
    • -
    • Splints! Target broken liimb and click on person to apply. Can be taken off in inventory menu, like handcuffs. Splinted limbs have less negative effects.
    • -
    • Advanced medikit! Red and mean, all doctors spawn with one. Contains better stuff - advanced versions of bandaids and aloe heal 12 damage on the first use.
    • -
    • Wounds with damage above 50 won't heal by themselves even if bandaged/salved. Would have to seek advanced medical attention for those.
    • -
    -
    - -
    -

    July 30th, 2013

    -

    Erthilo updated:

    -
      -
    • EFTPOS and ATM machines should now connect to databases.
    • -
    • Gravitational Catapults can now be removed from mechs.
    • -
    • Ghost manifest rune paper naming now works correctly.
    • -
    • Fix for newscaster special characters. Still not recommended.
    • -
    -
    - -
    -

    30.07.2013

    -

    Kilakk updated:

    -
      -
    • Added colored department radio channels.
    • -
    -
    - -
    -

    28.07.2013

    -

    Segrain updated:

    -
      -
    • Camera console circuits can be adjusted for different networks.
    • -
    • Nuclear operatives and ERT members have built-in cameras in their helmets. Activate helmet to initialize it.
    • -
    -
    - -
    -

    26.07.2013

    -

    Kilakk updated:

    -
      -
    • Brig cell timers will no longer start counting down automatically.
    • -
    • Separated the actual countdown timer from the timer controls. Pressing "Set" while the timer is counting down will reset the countdown timer to the time selected.
    • -
    -
    -
    -

    2013-11-07

    -

    Chinsky updated:

    -
      -
    • Gun delays. All guns now have delays between shots. Most have less than second, lasercannons and pulse rifles have around 2 seconds delay. Automatics have zero, click-speed.
    • -
    -
    -
    -

    2013/07/06

    -

    Chinsky updated:

    -
      -
    • Humans now can be infected with more than one virus at once.
    • -
    • All analyzed viruses are put into virus DB. You can view it and edit their name and description on medical record consoles.
    • -
    • Only known viruses (ones in DB) will be detected by the machinery and HUDs.
    • -
    • Viruses cause fever, body temperature rising the more stage is.
    • -
    • Humans' body temperature does not drift towards room one unless there's big difference in them.
    • -
    • Virus incubators now can transmit viuses from dishes to blood sample.
    • -
    • New machine - centrifuge. It can isolate antibodies or viruses (spawning virus dish) from a blood sample in vials. Accepts vials only.
    • -
    • Fancy vial boxes in virology, one of them is locked by ID with MD access.
    • -
    • Engineered viruses are now ariborne too.
    • -
    -
    -
    -

    05.07.2013

    -

    Spamcat updated:

    -
      -
    • Pulse! Humans now have hearbeat rate, which can be measured by right-clicking someone - Check pulse or by health analyzer. Medical machinery also has heartbeat monitors. Certain meds and conditions can influence it.
    • -
    -
    -
    -

    03.07.2013

    -

    Segrain updated:

    -
      -
    • Security and medical cyborgs can use their HUDs to access records.
    • -
    -
    -
    -

    June 28th, 2013

    -

    Segrain updated:

    -
      -
    • AIs are now able to examine what they see.
    • -
    -
    -
    -

    June 27th, 2013

    -

    Segrain updated:

    -
      -
    • ID cards properly setup bloodtype, DNA and fingerprints again.
    • -
    -
    -
    -

    June 26th, 2013

    -

    Whitellama updated:

    -
      -
    • One-antag rounds (like wizard/ninja) no longer end automatically upon death
    • -
    • Space ninja has been implemented as a voteable gamemode
    • -
    • Space ninja spawn landmarks have been implemented (but not yet placed on the map), still spawn at carps-pawns instead. (The code will warn you about this and ask you to report it, it's a known issue.)
    • -
    • Five new space ninja directives have been added, old directives have been reworded to be less harsh
    • -
    • Space ninjas have been given their own list as antagonists, and are no longer bundled up with traitors
    • -
    • Space ninjas with a "steal a functional AI" objective will now succeed by downloading one into their suits
    • -
    • Space ninja suits' exploding on death has been nerfed, so as not to cause breaches
    • -
    • A few space ninja titles/names have been added and removed to be slightly more believable
    • -
    • The antagonist selector no longer chooses jobbanned players when it runs out of willing options
    • -
    -
    -
    -

    June 26th, 2013

    -

    Segrain updated:

    -
      -
    • Autopsy scanner properly displays time of wound infliction and death.
    • -
    • Autopsy scanner properly displays wounds by projectile weapons.
    • -
    -
    -
    -

    June 23rd, 2013

    -

    Segrain updated:

    -
      -
    • Airlocks of various models can be constructed again.
    • -
    -
    - -
    -

    June 23rd, 2013

    -

    faux updated:

    -
      -
    • There has been a complete medbay renovation spearheaded by Vetinarix. http://baystation12.net/forums/viewtopic.php?f=20&t=7847 <-- Please put any commentary good or bad, here.
    • -
    • Some maintenance doors within RnD and Medbay have had their accesses changed. Maintenance doors in the joint areas (leading to the research shuttle, virology, and xenobiology) are now zero access. Which means anyone in those joints can enter the maintenance tunnels. This was done to add additional evacuation locations during radiation storms. Additional maintenance doors were added to the tunnels in these areas to prevent docs and scientists from running about.
    • -
    • Starboard emergency storage isn't gone now, it's simply located in the escape wing.
    • -
    • An engineering training room has been added to engineering. This location was previously where surgery was located. If you are new to engineering or need to brush up on your skills, please use this area for testing.
    • -
    -
    - -
    -

    June 22nd 2013

    -

    Cael_Aislinn updated:

    -
      -
    • The xenoarchaeology depth scanner will now tell you what energy field is required to safely extract a find.
    • -
    • Excavation picks will now dig faster, and xenoarchaeology as a whole should be easier to do.
    • -
    -
    - -
    -

    21.06.2013

    -

    Jupotter updated:

    -
      -
    • Fix the robotiscist preview in the char setupe screen
    • -
    -
    - -
    -

    18.06.2013

    -

    Segrain updated:

    -
      -
    • Fixed some bugs in windoor construction.
    • -
    • Secure windoors are made with rods again.
    • -
    • Windoors drop their electronics when broken. Emagged windoors can have theirs removed by crowbar.
    • -
    • Airlock electronics can be configured to make door open for any single access on it instead of all of them.
    • -
    • Cyborgs can preview their icons before choosing.
    • -
    -
    - -
    -

    13.06.2013

    -

    Kilakk updated:

    -
      -
    • Added the Xenobiologist job. Has access to the research hallway and to xenobiology.
    • -
    • Removed Xenobiology access from Scientists.
    • -
    • Removed the Xenobiologist alternate title from Scientists.
    • -
    • Added "Xenoarchaeology" to the RD, Scientists, and to the ID computer.
    • -
    • Changed the Research Outpost doors to use "Xenoarchaeology" access.
    • -
    -
    - -
    -

    6-13-13

    -

    Asanadas updated:

    -
      -
    • Added a whimsical suit to the head of personnel's secret clothing locker.
    • -
    -
    - -
    -

    12/06/2013

    -

    Zuhayr updated:

    -
      -
    • Added pneumatic cannon and harpoons.
    • -
    • Added embedded projectiles. Bullets and thrown weapons may stick in targets. Throwing them by hand won't make them stick, firing them from a cannon might. Implant removal surgery will get rid of shrapnel and stuck items.
    • -
    -
    - - -
    -

    6/11/13

    -

    Meyar updated:

    -
      -
    • Fixes a security door with a firedoor ontop of it.
    • -
    • Fixed a typo relating to the admin Select Equipment Verb. (It's RESPONSE team not RESCUE team)
    • -
    • ERT are now automated, from their spawn to their shuttle. Admin intervention no longer required! (Getting to the mechs still requires admin permission generally)
    • -
    • Added flashlights to compensate for the weakened PDA lights
    • -
    • ERT Uniforms updated to be in line with Centcom uniforms. No more turtlenecks, no sir.
    • -
    -
    - - -
    -

    09.06.2013

    -

    Segrain updated:

    -
      -
    • Emagged supply console can order SpecOp crates again.
    • -
    -
    - -
    -

    Meyar

    -

    6/6/13 updated:

    -
      -
    • Adds missing disposal pipes in chemistry
    • -
    -
    - -
    -

    05.06.2013

    -

    Segrain updated:

    -
      -
    • Exosuits now can open firelocks by walking into them.
    • -
    -
    - -
    -

    6/5/13

    -

    Meyar updated:

    -
      -
    • Departments SHOULD have access to adjacent maintinence tunnels incase of radstorm or nafarious dealings.
    • -
    • Fixed the northern EVA maintinence door.
    • -
    • Hand full of mapbugs.
    • -
    • MULES should be able to get to security now.
    • -
    • Nerfed PDA lights to a 3x3 area, makes the flashlight actually worthwhile.
    • -
    -
    - - -
    -

    6/4/13

    -

    Meyar updated:

    -
      -
    • Disposal's mail routing fixed. Missing pipes replaced.
    • -
    • Chemistry is once again a part of the disposals delivery circuit.
    • -
    • Added missing sorting junctions to Security and HoS office.
    • -
    • Fixed a duplicate sorting junction.
    • -
    -
    - - -
    -

    5.06.2013

    -

    Chinsky updated:

    -
      -
    • Load bearing equipment - webbings and vests for engineers and sec. Attach to jumpsuit, use 'Look in storage' verb (object tab) to open.
    • -
    -
    - - - - - - - - - - - - -
    -

    1.06.2013

    -

    Chinsky updated:

    -
      -
    • Bloody footprints! Now stepping in the puddle will dirty your shoes/feet and make you leave bloody footprints for a bit.
    • -
    • Blood now dries up after some time. Puddles take ~30 minutes, small things 5 minutes.
    • -
    • Untreated wounds now heal. No more toe stubs spamming you with pain messages for the rest of the shift.
    • -
    • On the other side, everything is healed slowly. Maximum you cna squeeze out of first aid is 0.5 health per tick per organ. Lying down makes it faster too, by 1.5x factor.
    • -
    • Lids! Click beaker/bottle in hand to put them on/off. Prevent spilling
    • -
    • Added 'hailer' to security lockers. If used in hand, says "Halt! Security!". For those who can't run and type.
    • -
    - -
    - -
    -

    31.05.2013

    -

    Segrain updated:

    -
      -
    • Portable canisters now properly connect to ports beneath them on map load.
    • -
    • Fixed unfastening gas meters.
    • -
    -
    - -
    -

    30th May 2013

    -

    proliberate updated:

    -
      -
    • Station time is now displayed in the status tab for new players and AIs.
    • -
    -
    - -
    -

    30.05.2013

    -

    Segrain updated:

    -
      -
    • Meteor showers actually spawn meteors now.
    • -
    • Engineering tape fits into toolbelt and can be placed on doors.
    • -
    • Pill bottles can hold paper.
    • -
    -
    - -
    -

    May 28th, 2013

    -

    VitrescentTortoise updated:

    -
      -
    • Wizard's forcewall now works.
    • -
    -
      -
    • Xenoarchaeology picksets can now hold everything they started with.
    • -
    -
    -
    -

    28th May 2013

    -

    Erthilo updated:

    -
      -
    • Fixes everyone being able to understand alien languages. HERE IS YOUR TOWER OF BABEL
    • -
    -
    - -
    -

    26th May 2013

    -

    Chinsky updated:

    -
      -
    • Tentacles! Now clone damage will make you horribly malformed like examine text says.
    • -
    -

    VitrescentTortoise updated:

    -
      -
    • Added a third option for not getting any job preferences. It allows you to return to the lobby instead of joining.
    • -
    -
    - -
    -

    5/26/2013

    -

    Meyar updated:

    -
      -
    • The syndicate shuttle now has a cycling airlock during Nuke rounds.
    • -
    • Restored the ability for the syndicate Agent ID to change the name on the card (reforge it) more than once.
    • -
    • ERT Radio now functional again.
    • -
    • Research blast doors now actually lock down the entirety of station-side Research.
    • -
    • Added lock down buttons to the wardens office.
    • -
    • The randomized barsign has made a return.
    • -
    • Syndicate Agent ID's external airlock access restored.
    • -
    -
    - -
    -

    25th May 2013

    -

    Erthilo updated:

    -
      -
    • Fixes alien races appearing an unknown when speaking their language.
    • -
    • Fixes alien races losing their language when cloned.
    • -
    • Fixes UI getting randomly reset when trying to change it in Genetics Scanners.
    • -
    -
    - -
    -

    21 May 2013

    -

    SkyMarshal updated:

    -
      -
    • ZAS will now speed air movement into/out of a zone when unsimulated tiles (e.g. space) are involved, in relation to the number of tiles.
    • -
    • Portable Canisters will now automatically connect to any portable connecter beneath them on map load.
    • -
    • Bug involving mis-mapped disposal junction fixed
    • -
    • Air alarms now work for atmos techs (whoops!)
    • -
    • The Master Controller now properly stops atmos when it runtimes.
    • -
    • Backpacks can no longer be contaminated
    • -
    • ZAS no longer logs air statistics.
    • -
    • ZAS now rebuilds as soon as it detects a semi-complex change in geometry. (It was doing this already, but in a convoluted way which was actually less efficient)
    • -
    • General code cleanup/commenting of ZAS
    • -
    • Jungle now initializes after the random Z-level loads and atmos initializes.
    • -
    -
    - -
    -

    May 18th, 2013

    -

    CIB updated:

    -
      -
    • A new event type: Wallrot. Use welder or plantbgone on infected walls.
    • -
    • Newscasters now can deliver preset news stories over the course of a round. See http://baystation12.net/forums/viewtopic.php?f=14&t=7619 to add your own!
    • -
    -
    - -
    -

    April 24, 2013

    -

    Jediluke69 updated:

    -
      -
    • Added 5 new drinks (Kira Special, Lemonade, Brown Star, Milkshakes, Rewriter)
    • -
    • Nanopaste now heals about half of what it used to
    • -
    • Ballistic crates should now come with shotguns loaded with actual shells no more beanbags
    • -
    • Iced tea no longer makes a glass of .what?
    • -
    -
    - -
    -

    April 24, 2013

    -

    faux updated:

    -
      -
    • Mixed Wardrobe Closet now has colored shoes and plaid skirts.
    • -
    • Dress uniforms added to the Captain, RD, and HoP wardrobe closets. A uniform jacket has also been added to the Captain's closet. HoS' hat has been re-added to their closet. I do not love the CMO and CE enough to give them anything.
    • -
    • Atheletic closet now has five different swimsuits *for the ladies* in them. If you are a guy, be prepared to be yelled at if you run around like a moron in one of these. Same goes for ladies who run around in shorts with their titties swaying in the space winds.
    • -
    • A set of dispatcher uniforms will spawn in the security closet. These are for playtesting the dispatcher role.
    • -
    • New suit spawns in the laundry room. It's for geezer's only. You're welcome, Book.
    • -
    • Nurse outfit variant, orderly uniform, and first responder jacket will now spawn in the medical wardrobe closet.
    • -
    • A white wedding dress will spawn in the chaplain's closet. There are also several dresses currently only adminspawnable. Admins: Look either under "bride" or "dress." The bride one leads to the colored wedding dresses, and there are some other kinds of dresses under dress.
    • -
    • No more luchador masks or boxing gloves or boxing ring. You guys have a swimming pool now, dip in and enjoy it.
    • -
    • he meeting hall has been replaced with an awkwardly placed security office meant for prisoner processing.
    • -
    • Added a couple more welding goggles to engineering since you guys liked those a lot.
    • -
    • Flasks spawn behind the bar. Only three. Don't fight over them. I don't know how to add them to the bar vending machine otherwise I would have done that instead. Detective, you have your own flask in your office, it's underneath the cigarettes on your desk.
    • -
    • Added two canes to the medical storage, for people who have leg injuries and can't walk good and stuff. I do not want to see doctors pretending to be House. These are for patients. Do not make me delete this addition and declare you guys not being able to have nice things.
    • -
    • Secondary entance to EVA now directly leads into the medbay hardsuit section. Sorry for any inconviences this will cause. The CMO can now fetch the hardsuits whenever they want.
    • -
    • Secondary security hardsuit has been added to the armory. Security members please stop stealing engineer's hardsuits when you guys want to pair up for space travel.
    • -
    • Firelocks have been moved around in the main hallways to form really ghetto versions of airlocks.
    • -
    • Violin spawns in theatre storage now. I didn't put the piano there though, that was someone else.
    • -
    • Psych office in medbay has been made better looking.
    • -
    -
    - -
    -

    24th April 2013

    -

    NerdyBoy1104 updated:

    -
      -
    • New Botany additions: Rice and Plastellium. New sheet material: Plastic.
    • -
    • Plastellium is refined into plastic by first grinding the produce to get plasticide. 20 plasticide + 10 polytrinic acid makes 10 sheets of plastic which can be used to make crates, forks, spoons, knives, ashtrays or plastic bags from.
    • -
    • Rice seeds grows into rice stalks that you grind to get rice. 10 Rice + 5 Water makes boiled rice, 10 rice + 5 milk makes rice pudding, 10 rice + 5 universal enzyme (in beaker) makes Sake.
    • -
    -
    - -
    -

    Spamcat

    -

    04.05.2013 updated:

    -
      -
    • Blood type is now saved in character creation menu, no need to edit it manually every round.
    • -
    -
    - -
    -

    17 April 2013

    -

    SkyMarshal updated:

    -
      -
    • ZAS is now more deadly, as per decision by administrative team. May be tweaked, but currently AIRFLOW is the biggest griefer.
    • -
    • World startup optimized, many functions now delayed until a player joins the server. (Reduces server boot time significantly)
    • -
    • Zones will now equalize air more rapidly.
    • -
    • ZAS now respects active magboots when airflow occurs.
    • -
    • Airflow will no longer throw you into doors and open them.
    • -
    • Race condition in zone construction has been fixed, so zones connect properly at round start.
    • -
    • Plasma effects readded.
    • -
    • Fixed runtime involving away mission.
    • -
    -
    - -
    -

    17 April 2013

    -

    SkyMarshal updated:

    -
      -
    • ZAS is now more deadly, as per decision by administrative team. May be tweaked, but currently AIRFLOW is the biggest griefer.
    • -
    • World startup optimized, many functions now delayed until a player joins the server. (Reduces server boot time significantly)
    • -
    • Zones will now equalize air more rapidly.
    • -
    • ZAS now respects active magboots when airflow occurs.
    • -
    • Airflow will no longer throw you into doors and open them.
    • -
    • Race condition in zone construction has been fixed, so zones connect properly at round start.
    • -
    • Plasma effects readded.
    • -
    • Fixed runtime involving away mission.
    • -
    -
    - -
    -

    30.04.2013

    -

    Spamcat updated:

    -
      -
    • Pill bottle capacity increased to 14 items.
    • -
    • Fixed Lamarr (it now spawns properly)
    • -
    -
    - -
    -

    15.04.2013

    -

    Spamcat updated:

    -
      -
    • Added telescopic batons to HoS's and captain's lockers. These are quite robust and easily concealable.
    • -
    -
    - -
    -

    May 14th 2013

    -

    Cael_Aislinn updated:

    -
      -
    • Depth scanners can now be used to determine what material archaeological deposits are made of, meaning lab analysis is no longer required.
    • -
    • Some useability issues with xenoarchaeology tools have been resolved, and the transit pods cycle automatically now.
    • -
    -
    - -
    -

    11 April 2013

    -

    SkyMarshal updated:

    -
      -
    • Fire has been reworked.
    • -
    • In-game variable editor is both readded and expanded with fire controlling capability.
    • -
    -
    - -
    -

    9 April 2013

    -

    SkyMarshal updated:

    -
      -
    • Fire Issues (Firedoors, Flamethrowers, Incendiary Grenades) fixed.
    • -
    • Fixed a bad line of code that was preventing autoignition of flammable gas mixes.
    • -
    • Volatile fuel is burned up after a point.
    • -
    • Partial-tile firedoors removed. This is due to ZAS breaking when interacting with them.
    • -
    -
    - -
    -

    4 April 2013

    -

    SkyMarshal updated:

    -
      -
    • Fixed ZAS
    • -
    • Fixed Fire
    • -
    -
    - -
    -

    March 27th 2013

    -

    Asanadas updated:

    -
      -
    • The Null Rod has recovered its de-culting ability, for balance reasons. Metagaming with it is a big no-no!
    • -
    • Holy Water as a liquid is able to de-cult. Less effective, but less bloody. May be changed over the course of time for balance.
    • -
    -
    - -
    -

    26.03.2013

    -

    Spamcat updated:

    -
      -
    • Chemmaster now puts pills in pill bottles (if one is inserted).
    • -
    • Stabbing someone with a syringe now deals 3 damage instead of 7 because 7 is like, a crowbar punch.
    • -
    • Lizards can now join mid-round again.
    • -
    • Chemicals in bloodstream will transfer with blood now, so don't get drunk before your blood donation. Viruses and antibodies transfer through blood too.
    • -
    • Virology is working again.
    • -
    -
    - -
    -

    March 15th 2013

    -

    Cael_Aislinn updated:

    -
      -
    • Mapped a compact research base on the mining asteroid, with multiple labs and testing rooms. It's reachable through a new (old) shuttle dock that leaves from the research wing on the main station.
    • -
    -
    - -
    -

    14.03.2013

    -

    Spamcat updated:

    -
      -
    • Figured I should make one of these. Syringestabbing now produces a broken syringe complete with fingerprints of attacker and blood of a victim, so dispose your evidence carefully. Maximum transfer amount per stab is lowered to 10.
    • -
    -
    - -
    -

    11/03/2013

    -

    Chinsky updated:

    -
      -
    • Sec HUDs now can see short versions of sec records.on examine. Med HUDs do same for medical records, and can set medical status of patient.
    • -
    • Damage to the head can now cause brain damage.
    • -
    -
    - -
    -

    March 11th 2013

    -

    CIB updated:

    -
      -
    • Cloning now requires you to put slabs of meat into the cloning pod to replenish biomass.
    • -
    -
    - -
    -

    March 11th 2013

    -

    Cael Aislinn updated:

    -
      -
    • The xenoarchaeology update is here. This includes a major content overhaul and a bunch of new features for xenoarchaeology.
    • -
    • Digsites (strange rock deposits) are now much more nuanced and interesting, and a huge number of minor (non-artifact) finds have been added.
    • -
    • Excavation is now a complex process that involves digging into the rock to the right depth.
    • -
    • Chemical analysis is required for safe excavation of the digsites, in order to determine how best to extract the finds.
    • -
    • Anomalous artifacts have been overhauled and many longstanding bugs with existing effects have been fixed - the anomaly utiliser should now work much more often.
    • -
    • Numerous new artifact effects have been added and some new artifact types can be dug up from the asteroid.
    • -
    • New tools and equipment have been added, including normal and spaceworthy versions of the anomaly suits, excavation tools and other neat gadgets.
    • -
    • Five books have been written by subject matter experts from around the galaxy to help the crew of the Exodus come to grips with this exacting new science (over 3000 words of tutorials!).
    • -
    -
    - -
    -

    March 9th 2013

    -

    Cael Aislinn updated:

    -
      -
    • Beekeeping is now possible. Construct an apiary of out wood and embed it into a hydroponics tray, then get a queen bee and bottle of BeezEez from cargo bay. - Hives produce honey and honeycomb, but be wary if the bees start swarming.
    • -
    -
    - -
    -

    March 6th 2013

    -

    Cael Aislinn updated:

    -
      -
    • Type 1 thermoelectric generators and the associated binary circulators are now moveable (wrench to secure/unsecure) and orderable via Quartermaster.
    • -
    • code/maps/rust_test.dmm contains an example setup for a functional RUST reactor. Maximum output is in the range of 12 to 20MW (12 to 20 million watts).
    • -
    • Removed double announcement for gridchecks, reduced duration of gridchecks.
    • -
    -

    RavingManiac updated:

    -
      -
    • You can now stab people with syringes using the "harm" intent. This destroys the syringe and transfers a random percentage of its contents into the target. Armor has a 50% chance of blocking the syringe.
    • -
    -
    - -
    -

    March 5th 2013

    -

    Cael Aislinn updated:

    -
      -
    • Set roundstart music to randomly choose between space.ogg and traitor.ogg (see http://baystation12.net/forums/viewtopic.php?f=5&t=6972)
    • -
    • All RUST components except for TEGs (which generate the power) are now obtainable ingame, bored engineers should get hold of them and setup an experimental reactor for testing purposes.
    • -
    -

    CIB updated:

    -
      -
    • Added internal organs. They're currently all located in the chest. Use advanced scanner to detect damage. Use the same surgery as for ruptured lungs to fix them.
    • -
    -
    - -
    -

    February 27th 2013

    -

    Gamerofthegame updated:

    -
      -
    • Added the (base gear) ERT preset for the debug command.
    • -
    • Map fixes, Virology hole fixed. Atmospheric fixes for mining and, to a less extent, the science outpost. (No, not cycling airlocks)
    • -
    • Fiddled with the ERT set up location on Centcom. Radmins will now have a even easier time equiping a team of any real pratical size, especially coupled with the above debug command.
    • -
    -
    - -
    -

    February 25th 2013

    -

    Cael Aislinn updated:

    -
      -
    • As well as building hull shield generators, normal shield gens can now be built (see http://baystation12.net/forums/viewtopic.php?f=1&t=6993).
    • -
    • New random events: multiple new system wide-events have been have been added to the newscaster feeds, some not quite as respectable as others.
    • -
    • New random event: some lucky winners will win the TC Daily Grand Slam Lotto, while others may be the target of malicious hackers.
    • -
    -
    - -
    -

    February 23rd 2013

    -

    Cael Aislinn updated:

    -
      -
    • Finances! Players spawn with an account, and money can be transferred between accounts, withdrawn/deposited at ATMs and charged to accounts via EFTPOS scanners.

      - All players start with 500-5000 credits, credits can no longer be merged and only credits can be deposited into ATMs - so shelter your illegitimately gotten gains in physical assets and remember that fraud is frowned upon!
    • -
    • Turrets are no longer noiseless as the grave. Listen for the sound of machinery in their proximity.
    • -
    -
    - -
    -

    February 23rd 2013

    -

    Cael Aislinn updated:

    -
      -
    • RUST machinery components should now be researchable (with high requirements) and orderable through QM (with high cost).
    • -
    • Shield machinery should now be researchable (with high requirements) and orderable through QM (with high cost). This one is reportedly buggy.
    • -
    • Rogue vending machines should revert back to normal at the end of the event.
    • -
    • New Unathi hair styles.
    • -
    -
    - -
    -

    22/02/2013

    -

    Chinsky updated:

    -
      -
    • Change to body cavity surgery. Can only put items in chest, groind and head. Max size for item - 3 (chest), 2 (groin), 1 (head). For chest surgery ribs should be bent open, (lung surgery until second scalpel step). Surgery step needs preparation step, with drill. After that you can place item inside, or seal it with cautery to do other step instead.
    • -
    -
    - -
    -

    February 18th 2013

    -

    Cael Aislinn updated:

    -
      -
    • All RUST components are now buildable/orderable, with very high requirements (except for the TEGs). Emitters have replaced gyrotrons, for now.
    • -
    • Fixed up shield generators and made them buildable, with circuits obtainable through RnD. Hull shield gens project along space tiles adjacent to the hull (must be adjacent to a space tile to work).
    • -
    -
    - -
    -

    20/02/2013

    -

    Chinsky updated:

    -
      -
    • Added new surgery: putting items inside people. After you use retractor to keep incision open, just click with any item to put it inside. But be wary, if you try to fit something too big, you might rip the veins. To remove items, use implant removal surgery.
    • -
    • Crowbar can be used as alternative to retractor.
    • -
    • Can now unload guns by clicking them in hand.
    • -
    • Fixed distance calculation in bullet missing chance computation, it was always assuming 1 or 0 tiles. Now distace REALLY matters when you shoot.
    • -
    • To add more FUN to previous thing, bullets missed to not disappear but keep going until they hit something else.
    • -
    • Compressed Matter and Explosive implants spawn properly now.
    • -
    • Tweaks to medical effects: removed itch caused by bandages. Chemical effects now have non-100 chance of appearing, the stronger medicine, the more probality it'll have side effects.
    • -
    -
    - -
    -

    February 18th 2013

    -

    Cael Aislinn updated:

    -
      -
    • Security bots will now target hostile mobs, and vice versa.
    • -
    • Carp should actually emigrate now, instead of just immigrating then squatting around the outer hull.
    • -
    • Admins and moderators have been split up into separate 'who' verbs (adminwho and modwho respectively).
    • -
    -
    - -
    -

    February 14th 2013

    -

    CIB updated:

    -
      -
    • Medical side-effects(patients are going to come back for secondary treatment)
    • -
    • NT loyalty setting(affects command reports and gives antags hints who might collaborate with them)
    • -
    • Simple animal balance fixes(They're slower now)
    • -
    -

    CaelAislinn updated:

    -
      -
    • Re-added old ion storm laws, re-added grid check event.
    • -
    • Added Rogue Drone and Vermin Infestation random events.
    • -
    • Added/fixed space vines random event.
    • -
    • Updates to the virus events.
    • -
    • Spider infestation and alien infestation events turned off by default.
    • -
    • Soghun, taj and skrell all have unique language text colours.
    • -
    • Moderators will no longer be listed in adminwho, instead use modwho.
    • -
    - -

    Gamerofthegame updated:

    -
      -
    • Miscellaneous mapfixes.
    • -
    -
    - -
    -

    February 13th 2013

    -

    Erthilo updated:

    -
      -
    • Fixed SSD (logged-out) players not staying asleep.
    • -
    • Fixed set-pose verb and mice emotes having extra periods.
    • -
    • Fixed virus crate not appearing and breaking supply shuttle.
    • -
    • Fixed newcaster photos not being censored.
    • -
    -
    - -
    -

    January 23rd

    -

    Cael_Aislinn updated:

    - -
    - -
    - - -

    1/31/2013

    -

    CIB updated:

    -
      -
    • Chilis and cold chilis no longer kill in small amounts
    • -
    • Chloral now again needs around 5 units to start killing somebody
    • -
    -
    - -
    -

    January 21st

    -

    Cael_Aislinn updated:

    -
      -
    • Satchels and ore boxes can now hold strange rocks.
    • -
    • Closets and crates can now be built out of 5 and 10 plasteel respectively.
    • -
    • Observers can become mice once more.
    • -
    -
    - -
    -

    13/01/2013

    -

    Chinsky updated:

    -
      -
    • If you get enough (6) blood drips on one tile, it'll turn into a blood puddle. Should make bleeding out more visible.
    • -
    • Security belt now able to hold taser, baton and tape roll.
    • -
    • Added alternative security uniform to Security wardrobes.
    • -
    • Ported Urist cult runes. Down with the crayon drawings! Example: http://dl.dropbox.com/u/26846767/images/SS13/255_symbols.PNG
    • -
    • Engineering tape now require engineer OR atmos access instead of both.
    • -
    • Implants now will react to EMP, possibly in !!FUN!! ways
    • -
    -
    - -

    1/13/2013

    -

    GauHelldragon updated:

    -
      -
    • Servicebots now have RoboTray and Printing Pen. Robotray can be used to pick up and drop food/drinks. Printing pen can alternate between writing mode and rename paper mode by clicking it.
    • -
    • Farmbots. A new type of robot that weeds, waters and fertilizes. Use robot arm on water tank. Then use plant analyzer, mini-hoe, bucket and finally proximity sensor.
    • -
    • Chefs can clang their serving trays with a rolling pin. Just like a riot shield!
    • -
    -
    - -
    -

    January 7th

    -

    Cael_Aislinn updated:

    - -
    - -
    -

    7/01/2013

    -

    Chinsky updated:

    -
      -
    • Implants: Explosvie implant, exploding when victim hears the codephrase you set.
    • -
    • Implants: Compressed Matter implat, scan item (making it disappear), inject yourself and recall that item on will!
    • -
    • Implant removal surgery, with !!FUN!! results if you mess up it.
    • -
    • Coats now have pockets again.
    • -
    • Bash people on tabetops. an windows, or with stools. Grab people to bash them on tables or windows (better grab for better hit on windows). Drag stool sprite on you to pick it up, click on it in hand to make it usual stool again.
    • -
    • Surgical caps, and new sprites for bloodbags and fixovein.
    • -
    • Now some surgery steps will bloody your hands, Full-body blood coat in case youy mess up spectacualry.
    • -
    • Ported some crates (Art, Surgery, Sterile equiplemnt).
    • -
    • Changed contraband crates. Posters moved to Art Crate, cigs and lipstick ot party crate. Now contraband crate has illegal booze and illicit drugs.
    • -
    • Finally got evac party lights
    • -
    • Now disfigurment,now it WILL happen when damage is bad enough.
    • -
    • Now if you speak in depressurized area (less than 10 kPa) only people next to you can hear you. Radios still work though.
    • -
    -
    - - - -/tg/ station 13 Development Team - - - - -
    - Coders: TLE, NEO, Errorage, muskets, veryinky, Skie, Noise, Numbers, Agouri, Noka, Urist McDorf, Uhangi, Darem, Mport, rastaf0, Doohl, Superxpdude, Rockdtben, ConstantA, Petethegoat, Kor, Polymorph, Carn, Nodrak, Donkie
    - Spriters: Agouri, Cheridan, Cruazy Guest, Deeaych, Deuryn, Matty406, Microwave, ShiftyEyesShady, Skie, Uhangi, Veyveyr, Petethegoat, Kor, Ricotez, Ausops, TankNut
    - Sounds: Skie, Lasty/Vinyl
    - Thanks to: CDK Station devs, GoonStation devs, the original SpaceStation developers and Invisty for the title image -
    - -Daedalus Development Team - - - - -
    - Coders: DopeGhoti, Sunfall, ThVortex
    - Artwork: Captain Hammer
    - Spriters: ((TODO.))
    - Sounds: Peter J, due, Erik Satie
    - Thanks to: All the dev teams that came before: BS12, /tg/station13, the Goons, and the original SS13 folks.
    -
    - -GoonStation 13 Development Team -
    - Coders: Stuntwaffle, Showtime, Pantaloons, Nannek, Keelin, Exadv1, hobnob, Justicefries, 0staf, sniperchance, AngriestIBM, BrianOBlivion
    - Spriters: Supernorn, Haruhi, Stuntwaffle, Pantaloons, Rho, SynthOrange, I Said No
    -
    -

    Creative Commons License
    This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
    Rights are currently extended to SomethingAwful Goons only.

    -

    Some icons by Yusuke Kamiyamane. All rights reserved. Licensed under a Creative Commons Attribution 3.0 License.

    -
    - - +
    +

    10 March 2014

    +

    Chinsky updated:

    +
      +
    • Viruses now affect certain range of species, different for each virus
    • +
    • Spaceacilline now prevents infection, and has a small chance to cure viruses at Stage 1. It does not give them antibodies though, so they can get sick again!
    • +
    • Biosuits and spacesuits now offer more protection against viruses. Full biosuit competely prevents airborne infection, when coupled with gloves they both protect quite well from contact ones
    • +
    • Sneezing now spreads viruses in front of mob. Sometimes he gets a warning beforehand though
    • +
    +
    + +
    +

    5 March 2014

    +

    RavingManiac updated:

    +
      +
    • Smartfridges added to the bar, chemistry and virology. No more clutter!
    • +
    • A certain musical instrument has returned to the bar.
    • +
    • There is now a ten second delay between ingesting a pill/donut/milkshake and regretting it.
    • +
    +
    + +
    +

    1 March 2014

    +

    Various updated:

    +
      +
    • Paint Mixing, red and blue makes purple!
    • +
    • New posters to tell you to respect those darned cat people
    • +
    • NanoUI for APC's, Canisters, Tank Transfer Valves and the heaters / coolers
    • +
    • PDA bombs are now less annoying, and won't always blow up / cause internal bleeding
    • +
    • Blob made less deadly
    • +
    • Objectiveless Antags now a configuration option, choose your own adventure!
    • +
    • Engineering redesign, now with better monitoring of the explodium supermatter!
    • +
    • Security EOD
    • +
    • New playable race, IPC's, go beep boop boop all over the station!
    • +
    • Gamemode autovoting, now players don't have to call for gamemode votes, it's automatic!
    • +
    +
    + +
    +

    19 February 2014

    +

    Aryn updated:

    +
      +
    • New air model. Nothing should change to a great degree, but temperature flow might be affected due to closed connections not sticking around.
    • +
    +
    + +
    +

    1 February 2014

    +

    Various updated:

    +
      +
    • NanoUI for PDA
    • +
    • Write in blood while a ghost in cult rounds with enough cultists
    • +
    • Cookies, absurd sandwiches, and even cookable dioanae nymphs!
    • +
    • A bunch of new guns and other weapons
    • +
    • Species specific blood
    • +
    +
    + +
    +

    1 January 2014

    +

    Various updated:

    +
      +
    • AntagHUD and MedicalHUD for ghosts, see who the baddies are, check for new configuration options.
    • +
    • Ghosts will now have bold text if they are in the same room as the person making conversations easier to follow.
    • +
    • New hairstyles! Now you can use something other then hotpink floor length braid.
    • +
    • DNA rework, tell us how you were cloned and became albino!
    • +
    • Dirty floors, so now you know exactly how lazy the janitors are!
    • +
    • A new UI system, feel free to color it yourself, don't set it to completely clear or you will have a bad time.
    • +
    • Cryogenic storage, for all your SSD needs.
    • +
    • New hardsuits for those syndicate tajaran
    • +
    +
    + +
    +

    18 December 2013

    +

    RavingManiac updated:

    +
      +
    • Mousetraps can now be "hidden" through the right-click menu. This makes them go under tables, clutter and the like. The filthy rodents will never see it coming!
    • +
    • Monkeys will no longer move randomly while being pulled.
    • +
    +
    + +
    +

    1 December 2013

    +

    Various Developers banged their keyboards together:

    +
      +
    • New Engine, the supermatter, figure out what a cooling loop is, or don't and blow up engineering!
    • +
    • Each department will have it's own fax, make a copy of your butt and fax it to the admins!
    • +
    • Booze and soda dispensers, they are like chemmasters, only with booze and soda!
    • +
    • Bluespace and Cryostasis beakers, how do they work? Fuggin bluespace how do they work?
    • +
    • You can now shove things into vending machines, impress your friends on how things magically disappear out of your hands into the machine!
    • +
    • Robots and Androids (And gynoids too!) can now use custom job titles
    • +
    • Various bugfixes
    • +
    +
    + +
    +

    24 November 2013

    +

    Yinadele updated:

    +
      +
    • Supermatter engine added! Please treat your new engine gently, and report any strangeness!
    • +
    • Rebalanced events so people don't explode into appendicitis or have their organs constantly explode.
    • +
    • Vending machines have had bottled water, iced tea, and grape soda added.
    • +
    • Head reattachment surgery added! Sew heads back on proper rather than monkey madness.
    • +
    • Pain crit rebalanced - Added aim variance depending on pain levels, nerfed blackscreen severely.
    • +
    • Cyborg alt titles: Robot, and Android added! These will make you spawn as a posibrained robot. Please enjoy!
    • +
    • Fixed the sprite on the modified welding goggles, added a pair to the CE's office where they'll be used.
    • +
    • Fixed atmos computers- They are once again responsive!
    • +
    • Added in functionality proper for explosive implants- You can now set their level of detonation, and their effects are more responsively concrete depending on setting.
    • +
    • Hemostats re-added to autolathe!
    • +
    • Added two manuals on atmosia and EVA, by MagmaRam! Found in engineering and the engineering bookcase.
    • +
    • Fixed areas in medbay to have fully functional APC sectors.
    • +
    • Girders are now lasable.
    • +
    • Please wait warmly, new features planned for next merge!
    • +
    +
    + +
    +

    23 November 2013

    +

    Ccomp5950 updated:

    +
      +
    • Players are now no longer able to commit suicide with a lasertag gun, and will feel silly for doing so.
    • +
    • Ghosts hit with the cult book shall now actually become visible.
    • +
    • The powercells spawned with Exosuits will now properly be named to not confuse bearded roboticists.
    • +
    • Blindfolded players will now no longer require eye surgery to repair their sight, removing the blindfold will be sufficient.
    • +
    • Atmospheric Technicians will now have access to Exterior airlocks.
    • +
    +
    + +
    +

    1 November 2013

    +

    Various updated:

    +
      +
    • Autovoting, Get off the station when your 15 hour workweek is done, thanks unions!
    • +
    • Some beach props that Chinsky finds useless.
    • +
    • Updated NanoUI
    • +
    • Dialysis while in sleepers - removes reagents from mobs, like the chemist, toss him in there!
    • +
    • Pipe Dispensers can now be ordered by Cargo
    • +
    • Fancy G-G-G-G-Ghosts!
    • +
    +
    + +
    +

    29 October 2013

    +

    Cael_Aislinn updated:

    +
      +
    • Xenoarchaeology's chemical analysis and six analysis machines are gone, replaced by a single one which can be beaten in a minigame.
    • +
    • Sneaky traitors will find new challenges to overcome at the research outpost, but may also find new opportunities (transit tubes can now be traversed).
    • +
    • Finding active alien machinery should now be made significantly easier with the Alden-Saraspova counter.
    • +
    +
    + + +
    +

    06 October 2013

    +

    Chinsky updated:

    +
      +
    • Added contact-spread viruses. Spread if infected guy touches someone with bare hands, or if someone touches bare infected guy. Biosuits/gloves help.
    • +
    • Changed way airborne viruses spread a bit. Now 20% of breaths will carry viruses to adjacent tiles. Wearing sterile mask cuts down it to 5%. Masks, bio/space suits (only when worn with matching helmet) protect, internals protect completely.
    • +
    • Raised infection chances considerably. They were so low people reported that infection does not work. Now it's 50-90% chance for unprotected folks.
    • +
    • Blood puddles and mucus now spread the fun again
    • +
    +
    + + +
    +

    06 October 2013

    +

    Chinsky updated:

    +
      +
    • Return of dreaded side effects. They now manifest well after their cause disappears, so curing them should be possible without them reappearing immediately. They also lost last stage damaging effects.
    • +
    +
    + +
    +

    September 24th, 2013

    +

    Snapshot updated:

    +
      +
    • Removed hidden vote counts.
    • +
    • Removed hiding of vote results.
    • +
    • Removed OOC muting during votes.
    • +
    • Crew transfers are no longer callable during Red and Delta alert.
    • +
    • Started work on Auto transfer framework.
    • +
    +
    + +
    +

    18 September 2013

    +

    Kilakk updated:

    +
      +
    • Fax machines! The Captain and IA agents can use the fax machine to send properly formatted messages to Central Command.
    • +
    • Gave the fax machine a fancy animated sprite. Thanks Cajoes!
    • +
    +
    + +
    +

    August 8th, 2013

    +

    Erthilo updated:

    +
      +
    • Raise Dead rune now properly heals and revives dead corpse.
    • +
    • Admin-only rejuvenate verb now heals all organs, limbs, and diseases.
    • +
    • Cyborg sprites now correctly reset with reset boards. This means cyborg appearances can now be changed without admin intervention.
    • +
    +
    + +
    +

    2013/08/4

    +

    Chinsky updated:

    +
      +
    • Health HUD indicator replaced with Pain indicator. Now health indicator shows pain level instead of actual vitals level. Some types of damage contribute more to pain, some less, usually feeling worse than they really are.
    • +
    +
    + +
    +
    +

    2013/08/01

    +

    Chinsky updated:

    +
      +
    • Old new medical features:
    • +
    • Autoinjectors! They come preloaded with 5u of inapro, can be used instantly, and are one-use. You can replace chems inside using a syringe. Box of them is added to Medicine closet and medical supplies crate.
    • +
    • Splints! Target broken liimb and click on person to apply. Can be taken off in inventory menu, like handcuffs. Splinted limbs have less negative effects.
    • +
    • Advanced medikit! Red and mean, all doctors spawn with one. Contains better stuff - advanced versions of bandaids and aloe heal 12 damage on the first use.
    • +
    • Wounds with damage above 50 won't heal by themselves even if bandaged/salved. Would have to seek advanced medical attention for those.
    • +
    +
    + +
    +

    July 30th, 2013

    +

    Erthilo updated:

    +
      +
    • EFTPOS and ATM machines should now connect to databases.
    • +
    • Gravitational Catapults can now be removed from mechs.
    • +
    • Ghost manifest rune paper naming now works correctly.
    • +
    • Fix for newscaster special characters. Still not recommended.
    • +
    +
    + +
    +

    30.07.2013

    +

    Kilakk updated:

    +
      +
    • Added colored department radio channels.
    • +
    +
    + +
    +

    28.07.2013

    +

    Segrain updated:

    +
      +
    • Camera console circuits can be adjusted for different networks.
    • +
    • Nuclear operatives and ERT members have built-in cameras in their helmets. Activate helmet to initialize it.
    • +
    +
    + +
    +

    26.07.2013

    +

    Kilakk updated:

    +
      +
    • Brig cell timers will no longer start counting down automatically.
    • +
    • Separated the actual countdown timer from the timer controls. Pressing "Set" while the timer is counting down will reset the countdown timer to the time selected.
    • +
    +
    +
    +

    2013-11-07

    +

    Chinsky updated:

    +
      +
    • Gun delays. All guns now have delays between shots. Most have less than second, lasercannons and pulse rifles have around 2 seconds delay. Automatics have zero, click-speed.
    • +
    +
    +
    +

    2013/07/06

    +

    Chinsky updated:

    +
      +
    • Humans now can be infected with more than one virus at once.
    • +
    • All analyzed viruses are put into virus DB. You can view it and edit their name and description on medical record consoles.
    • +
    • Only known viruses (ones in DB) will be detected by the machinery and HUDs.
    • +
    • Viruses cause fever, body temperature rising the more stage is.
    • +
    • Humans' body temperature does not drift towards room one unless there's big difference in them.
    • +
    • Virus incubators now can transmit viuses from dishes to blood sample.
    • +
    • New machine - centrifuge. It can isolate antibodies or viruses (spawning virus dish) from a blood sample in vials. Accepts vials only.
    • +
    • Fancy vial boxes in virology, one of them is locked by ID with MD access.
    • +
    • Engineered viruses are now ariborne too.
    • +
    +
    +
    +

    05.07.2013

    +

    Spamcat updated:

    +
      +
    • Pulse! Humans now have hearbeat rate, which can be measured by right-clicking someone - Check pulse or by health analyzer. Medical machinery also has heartbeat monitors. Certain meds and conditions can influence it.
    • +
    +
    +
    +

    03.07.2013

    +

    Segrain updated:

    +
      +
    • Security and medical cyborgs can use their HUDs to access records.
    • +
    +
    +
    +

    June 28th, 2013

    +

    Segrain updated:

    +
      +
    • AIs are now able to examine what they see.
    • +
    +
    +
    +

    June 27th, 2013

    +

    Segrain updated:

    +
      +
    • ID cards properly setup bloodtype, DNA and fingerprints again.
    • +
    +
    +
    +

    June 26th, 2013

    +

    Whitellama updated:

    +
      +
    • One-antag rounds (like wizard/ninja) no longer end automatically upon death
    • +
    • Space ninja has been implemented as a voteable gamemode
    • +
    • Space ninja spawn landmarks have been implemented (but not yet placed on the map), still spawn at carps-pawns instead. (The code will warn you about this and ask you to report it, it's a known issue.)
    • +
    • Five new space ninja directives have been added, old directives have been reworded to be less harsh
    • +
    • Space ninjas have been given their own list as antagonists, and are no longer bundled up with traitors
    • +
    • Space ninjas with a "steal a functional AI" objective will now succeed by downloading one into their suits
    • +
    • Space ninja suits' exploding on death has been nerfed, so as not to cause breaches
    • +
    • A few space ninja titles/names have been added and removed to be slightly more believable
    • +
    • The antagonist selector no longer chooses jobbanned players when it runs out of willing options
    • +
    +
    +
    +

    June 26th, 2013

    +

    Segrain updated:

    +
      +
    • Autopsy scanner properly displays time of wound infliction and death.
    • +
    • Autopsy scanner properly displays wounds by projectile weapons.
    • +
    +
    +
    +

    June 23rd, 2013

    +

    Segrain updated:

    +
      +
    • Airlocks of various models can be constructed again.
    • +
    +
    + +
    +

    June 23rd, 2013

    +

    faux updated:

    +
      +
    • There has been a complete medbay renovation spearheaded by Vetinarix. http://baystation12.net/forums/viewtopic.php?f=20&t=7847 <-- Please put any commentary good or bad, here.
    • +
    • Some maintenance doors within RnD and Medbay have had their accesses changed. Maintenance doors in the joint areas (leading to the research shuttle, virology, and xenobiology) are now zero access. Which means anyone in those joints can enter the maintenance tunnels. This was done to add additional evacuation locations during radiation storms. Additional maintenance doors were added to the tunnels in these areas to prevent docs and scientists from running about.
    • +
    • Starboard emergency storage isn't gone now, it's simply located in the escape wing.
    • +
    • An engineering training room has been added to engineering. This location was previously where surgery was located. If you are new to engineering or need to brush up on your skills, please use this area for testing.
    • +
    +
    + +
    +

    June 22nd 2013

    +

    Cael_Aislinn updated:

    +
      +
    • The xenoarchaeology depth scanner will now tell you what energy field is required to safely extract a find.
    • +
    • Excavation picks will now dig faster, and xenoarchaeology as a whole should be easier to do.
    • +
    +
    + +
    +

    21.06.2013

    +

    Jupotter updated:

    +
      +
    • Fix the robotiscist preview in the char setupe screen
    • +
    +
    + +
    +

    18.06.2013

    +

    Segrain updated:

    +
      +
    • Fixed some bugs in windoor construction.
    • +
    • Secure windoors are made with rods again.
    • +
    • Windoors drop their electronics when broken. Emagged windoors can have theirs removed by crowbar.
    • +
    • Airlock electronics can be configured to make door open for any single access on it instead of all of them.
    • +
    • Cyborgs can preview their icons before choosing.
    • +
    +
    + +
    +

    13.06.2013

    +

    Kilakk updated:

    +
      +
    • Added the Xenobiologist job. Has access to the research hallway and to xenobiology.
    • +
    • Removed Xenobiology access from Scientists.
    • +
    • Removed the Xenobiologist alternate title from Scientists.
    • +
    • Added "Xenoarchaeology" to the RD, Scientists, and to the ID computer.
    • +
    • Changed the Research Outpost doors to use "Xenoarchaeology" access.
    • +
    +
    + +
    +

    6-13-13

    +

    Asanadas updated:

    +
      +
    • Added a whimsical suit to the head of personnel's secret clothing locker.
    • +
    +
    + +
    +

    12/06/2013

    +

    Zuhayr updated:

    +
      +
    • Added pneumatic cannon and harpoons.
    • +
    • Added embedded projectiles. Bullets and thrown weapons may stick in targets. Throwing them by hand won't make them stick, firing them from a cannon might. Implant removal surgery will get rid of shrapnel and stuck items.
    • +
    +
    + + +
    +

    6/11/13

    +

    Meyar updated:

    +
      +
    • Fixes a security door with a firedoor ontop of it.
    • +
    • Fixed a typo relating to the admin Select Equipment Verb. (It's RESPONSE team not RESCUE team)
    • +
    • ERT are now automated, from their spawn to their shuttle. Admin intervention no longer required! (Getting to the mechs still requires admin permission generally)
    • +
    • Added flashlights to compensate for the weakened PDA lights
    • +
    • ERT Uniforms updated to be in line with Centcom uniforms. No more turtlenecks, no sir.
    • +
    +
    + + +
    +

    09.06.2013

    +

    Segrain updated:

    +
      +
    • Emagged supply console can order SpecOp crates again.
    • +
    +
    + +
    +

    Meyar

    +

    6/6/13 updated:

    +
      +
    • Adds missing disposal pipes in chemistry
    • +
    +
    + +
    +

    05.06.2013

    +

    Segrain updated:

    +
      +
    • Exosuits now can open firelocks by walking into them.
    • +
    +
    + +
    +

    6/5/13

    +

    Meyar updated:

    +
      +
    • Departments SHOULD have access to adjacent maintinence tunnels incase of radstorm or nafarious dealings.
    • +
    • Fixed the northern EVA maintinence door.
    • +
    • Hand full of mapbugs.
    • +
    • MULES should be able to get to security now.
    • +
    • Nerfed PDA lights to a 3x3 area, makes the flashlight actually worthwhile.
    • +
    +
    + + +
    +

    6/4/13

    +

    Meyar updated:

    +
      +
    • Disposal's mail routing fixed. Missing pipes replaced.
    • +
    • Chemistry is once again a part of the disposals delivery circuit.
    • +
    • Added missing sorting junctions to Security and HoS office.
    • +
    • Fixed a duplicate sorting junction.
    • +
    +
    + + +
    +

    5.06.2013

    +

    Chinsky updated:

    +
      +
    • Load bearing equipment - webbings and vests for engineers and sec. Attach to jumpsuit, use 'Look in storage' verb (object tab) to open.
    • +
    +
    + + + + + + + + + + + + +
    +

    1.06.2013

    +

    Chinsky updated:

    +
      +
    • Bloody footprints! Now stepping in the puddle will dirty your shoes/feet and make you leave bloody footprints for a bit.
    • +
    • Blood now dries up after some time. Puddles take ~30 minutes, small things 5 minutes.
    • +
    • Untreated wounds now heal. No more toe stubs spamming you with pain messages for the rest of the shift.
    • +
    • On the other side, everything is healed slowly. Maximum you cna squeeze out of first aid is 0.5 health per tick per organ. Lying down makes it faster too, by 1.5x factor.
    • +
    • Lids! Click beaker/bottle in hand to put them on/off. Prevent spilling
    • +
    • Added 'hailer' to security lockers. If used in hand, says "Halt! Security!". For those who can't run and type.
    • +
    + +
    + +
    +

    31.05.2013

    +

    Segrain updated:

    +
      +
    • Portable canisters now properly connect to ports beneath them on map load.
    • +
    • Fixed unfastening gas meters.
    • +
    +
    + +
    +

    30th May 2013

    +

    proliberate updated:

    +
      +
    • Station time is now displayed in the status tab for new players and AIs.
    • +
    +
    + +
    +

    30.05.2013

    +

    Segrain updated:

    +
      +
    • Meteor showers actually spawn meteors now.
    • +
    • Engineering tape fits into toolbelt and can be placed on doors.
    • +
    • Pill bottles can hold paper.
    • +
    +
    + +
    +

    May 28th, 2013

    +

    VitrescentTortoise updated:

    +
      +
    • Wizard's forcewall now works.
    • +
    +
      +
    • Xenoarchaeology picksets can now hold everything they started with.
    • +
    +
    +
    +

    28th May 2013

    +

    Erthilo updated:

    +
      +
    • Fixes everyone being able to understand alien languages. HERE IS YOUR TOWER OF BABEL
    • +
    +
    + +
    +

    26th May 2013

    +

    Chinsky updated:

    +
      +
    • Tentacles! Now clone damage will make you horribly malformed like examine text says.
    • +
    +

    VitrescentTortoise updated:

    +
      +
    • Added a third option for not getting any job preferences. It allows you to return to the lobby instead of joining.
    • +
    +
    + +
    +

    5/26/2013

    +

    Meyar updated:

    +
      +
    • The syndicate shuttle now has a cycling airlock during Nuke rounds.
    • +
    • Restored the ability for the syndicate Agent ID to change the name on the card (reforge it) more than once.
    • +
    • ERT Radio now functional again.
    • +
    • Research blast doors now actually lock down the entirety of station-side Research.
    • +
    • Added lock down buttons to the wardens office.
    • +
    • The randomized barsign has made a return.
    • +
    • Syndicate Agent ID's external airlock access restored.
    • +
    +
    + +
    +

    25th May 2013

    +

    Erthilo updated:

    +
      +
    • Fixes alien races appearing an unknown when speaking their language.
    • +
    • Fixes alien races losing their language when cloned.
    • +
    • Fixes UI getting randomly reset when trying to change it in Genetics Scanners.
    • +
    +
    + +
    +

    21 May 2013

    +

    SkyMarshal updated:

    +
      +
    • ZAS will now speed air movement into/out of a zone when unsimulated tiles (e.g. space) are involved, in relation to the number of tiles.
    • +
    • Portable Canisters will now automatically connect to any portable connecter beneath them on map load.
    • +
    • Bug involving mis-mapped disposal junction fixed
    • +
    • Air alarms now work for atmos techs (whoops!)
    • +
    • The Master Controller now properly stops atmos when it runtimes.
    • +
    • Backpacks can no longer be contaminated
    • +
    • ZAS no longer logs air statistics.
    • +
    • ZAS now rebuilds as soon as it detects a semi-complex change in geometry. (It was doing this already, but in a convoluted way which was actually less efficient)
    • +
    • General code cleanup/commenting of ZAS
    • +
    • Jungle now initializes after the random Z-level loads and atmos initializes.
    • +
    +
    + +
    +

    May 18th, 2013

    +

    CIB updated:

    +
      +
    • A new event type: Wallrot. Use welder or plantbgone on infected walls.
    • +
    • Newscasters now can deliver preset news stories over the course of a round. See http://baystation12.net/forums/viewtopic.php?f=14&t=7619 to add your own!
    • +
    +
    + +
    +

    April 24, 2013

    +

    Jediluke69 updated:

    +
      +
    • Added 5 new drinks (Kira Special, Lemonade, Brown Star, Milkshakes, Rewriter)
    • +
    • Nanopaste now heals about half of what it used to
    • +
    • Ballistic crates should now come with shotguns loaded with actual shells no more beanbags
    • +
    • Iced tea no longer makes a glass of .what?
    • +
    +
    + +
    +

    April 24, 2013

    +

    faux updated:

    +
      +
    • Mixed Wardrobe Closet now has colored shoes and plaid skirts.
    • +
    • Dress uniforms added to the Captain, RD, and HoP wardrobe closets. A uniform jacket has also been added to the Captain's closet. HoS' hat has been re-added to their closet. I do not love the CMO and CE enough to give them anything.
    • +
    • Atheletic closet now has five different swimsuits *for the ladies* in them. If you are a guy, be prepared to be yelled at if you run around like a moron in one of these. Same goes for ladies who run around in shorts with their titties swaying in the space winds.
    • +
    • A set of dispatcher uniforms will spawn in the security closet. These are for playtesting the dispatcher role.
    • +
    • New suit spawns in the laundry room. It's for geezer's only. You're welcome, Book.
    • +
    • Nurse outfit variant, orderly uniform, and first responder jacket will now spawn in the medical wardrobe closet.
    • +
    • A white wedding dress will spawn in the chaplain's closet. There are also several dresses currently only adminspawnable. Admins: Look either under "bride" or "dress." The bride one leads to the colored wedding dresses, and there are some other kinds of dresses under dress.
    • +
    • No more luchador masks or boxing gloves or boxing ring. You guys have a swimming pool now, dip in and enjoy it.
    • +
    • he meeting hall has been replaced with an awkwardly placed security office meant for prisoner processing.
    • +
    • Added a couple more welding goggles to engineering since you guys liked those a lot.
    • +
    • Flasks spawn behind the bar. Only three. Don't fight over them. I don't know how to add them to the bar vending machine otherwise I would have done that instead. Detective, you have your own flask in your office, it's underneath the cigarettes on your desk.
    • +
    • Added two canes to the medical storage, for people who have leg injuries and can't walk good and stuff. I do not want to see doctors pretending to be House. These are for patients. Do not make me delete this addition and declare you guys not being able to have nice things.
    • +
    • Secondary entance to EVA now directly leads into the medbay hardsuit section. Sorry for any inconviences this will cause. The CMO can now fetch the hardsuits whenever they want.
    • +
    • Secondary security hardsuit has been added to the armory. Security members please stop stealing engineer's hardsuits when you guys want to pair up for space travel.
    • +
    • Firelocks have been moved around in the main hallways to form really ghetto versions of airlocks.
    • +
    • Violin spawns in theatre storage now. I didn't put the piano there though, that was someone else.
    • +
    • Psych office in medbay has been made better looking.
    • +
    +
    + +
    +

    24th April 2013

    +

    NerdyBoy1104 updated:

    +
      +
    • New Botany additions: Rice and Plastellium. New sheet material: Plastic.
    • +
    • Plastellium is refined into plastic by first grinding the produce to get plasticide. 20 plasticide + 10 polytrinic acid makes 10 sheets of plastic which can be used to make crates, forks, spoons, knives, ashtrays or plastic bags from.
    • +
    • Rice seeds grows into rice stalks that you grind to get rice. 10 Rice + 5 Water makes boiled rice, 10 rice + 5 milk makes rice pudding, 10 rice + 5 universal enzyme (in beaker) makes Sake.
    • +
    +
    + +
    +

    Spamcat

    +

    04.05.2013 updated:

    +
      +
    • Blood type is now saved in character creation menu, no need to edit it manually every round.
    • +
    +
    + +
    +

    17 April 2013

    +

    SkyMarshal updated:

    +
      +
    • ZAS is now more deadly, as per decision by administrative team. May be tweaked, but currently AIRFLOW is the biggest griefer.
    • +
    • World startup optimized, many functions now delayed until a player joins the server. (Reduces server boot time significantly)
    • +
    • Zones will now equalize air more rapidly.
    • +
    • ZAS now respects active magboots when airflow occurs.
    • +
    • Airflow will no longer throw you into doors and open them.
    • +
    • Race condition in zone construction has been fixed, so zones connect properly at round start.
    • +
    • Plasma effects readded.
    • +
    • Fixed runtime involving away mission.
    • +
    +
    + +
    +

    17 April 2013

    +

    SkyMarshal updated:

    +
      +
    • ZAS is now more deadly, as per decision by administrative team. May be tweaked, but currently AIRFLOW is the biggest griefer.
    • +
    • World startup optimized, many functions now delayed until a player joins the server. (Reduces server boot time significantly)
    • +
    • Zones will now equalize air more rapidly.
    • +
    • ZAS now respects active magboots when airflow occurs.
    • +
    • Airflow will no longer throw you into doors and open them.
    • +
    • Race condition in zone construction has been fixed, so zones connect properly at round start.
    • +
    • Plasma effects readded.
    • +
    • Fixed runtime involving away mission.
    • +
    +
    + +
    +

    30.04.2013

    +

    Spamcat updated:

    +
      +
    • Pill bottle capacity increased to 14 items.
    • +
    • Fixed Lamarr (it now spawns properly)
    • +
    +
    + +
    +

    15.04.2013

    +

    Spamcat updated:

    +
      +
    • Added telescopic batons to HoS's and captain's lockers. These are quite robust and easily concealable.
    • +
    +
    + +
    +

    May 14th 2013

    +

    Cael_Aislinn updated:

    +
      +
    • Depth scanners can now be used to determine what material archaeological deposits are made of, meaning lab analysis is no longer required.
    • +
    • Some useability issues with xenoarchaeology tools have been resolved, and the transit pods cycle automatically now.
    • +
    +
    + +
    +

    11 April 2013

    +

    SkyMarshal updated:

    +
      +
    • Fire has been reworked.
    • +
    • In-game variable editor is both readded and expanded with fire controlling capability.
    • +
    +
    + +
    +

    9 April 2013

    +

    SkyMarshal updated:

    +
      +
    • Fire Issues (Firedoors, Flamethrowers, Incendiary Grenades) fixed.
    • +
    • Fixed a bad line of code that was preventing autoignition of flammable gas mixes.
    • +
    • Volatile fuel is burned up after a point.
    • +
    • Partial-tile firedoors removed. This is due to ZAS breaking when interacting with them.
    • +
    +
    + +
    +

    4 April 2013

    +

    SkyMarshal updated:

    +
      +
    • Fixed ZAS
    • +
    • Fixed Fire
    • +
    +
    + +
    +

    March 27th 2013

    +

    Asanadas updated:

    +
      +
    • The Null Rod has recovered its de-culting ability, for balance reasons. Metagaming with it is a big no-no!
    • +
    • Holy Water as a liquid is able to de-cult. Less effective, but less bloody. May be changed over the course of time for balance.
    • +
    +
    + +
    +

    26.03.2013

    +

    Spamcat updated:

    +
      +
    • Chemmaster now puts pills in pill bottles (if one is inserted).
    • +
    • Stabbing someone with a syringe now deals 3 damage instead of 7 because 7 is like, a crowbar punch.
    • +
    • Lizards can now join mid-round again.
    • +
    • Chemicals in bloodstream will transfer with blood now, so don't get drunk before your blood donation. Viruses and antibodies transfer through blood too.
    • +
    • Virology is working again.
    • +
    +
    + +
    +

    March 15th 2013

    +

    Cael_Aislinn updated:

    +
      +
    • Mapped a compact research base on the mining asteroid, with multiple labs and testing rooms. It's reachable through a new (old) shuttle dock that leaves from the research wing on the main station.
    • +
    +
    + +
    +

    14.03.2013

    +

    Spamcat updated:

    +
      +
    • Figured I should make one of these. Syringestabbing now produces a broken syringe complete with fingerprints of attacker and blood of a victim, so dispose your evidence carefully. Maximum transfer amount per stab is lowered to 10.
    • +
    +
    + +
    +

    11/03/2013

    +

    Chinsky updated:

    +
      +
    • Sec HUDs now can see short versions of sec records.on examine. Med HUDs do same for medical records, and can set medical status of patient.
    • +
    • Damage to the head can now cause brain damage.
    • +
    +
    + +
    +

    March 11th 2013

    +

    CIB updated:

    +
      +
    • Cloning now requires you to put slabs of meat into the cloning pod to replenish biomass.
    • +
    +
    + +
    +

    March 11th 2013

    +

    Cael Aislinn updated:

    +
      +
    • The xenoarchaeology update is here. This includes a major content overhaul and a bunch of new features for xenoarchaeology.
    • +
    • Digsites (strange rock deposits) are now much more nuanced and interesting, and a huge number of minor (non-artifact) finds have been added.
    • +
    • Excavation is now a complex process that involves digging into the rock to the right depth.
    • +
    • Chemical analysis is required for safe excavation of the digsites, in order to determine how best to extract the finds.
    • +
    • Anomalous artifacts have been overhauled and many longstanding bugs with existing effects have been fixed - the anomaly utiliser should now work much more often.
    • +
    • Numerous new artifact effects have been added and some new artifact types can be dug up from the asteroid.
    • +
    • New tools and equipment have been added, including normal and spaceworthy versions of the anomaly suits, excavation tools and other neat gadgets.
    • +
    • Five books have been written by subject matter experts from around the galaxy to help the crew of the Exodus come to grips with this exacting new science (over 3000 words of tutorials!).
    • +
    +
    + +
    +

    March 9th 2013

    +

    Cael Aislinn updated:

    +
      +
    • Beekeeping is now possible. Construct an apiary of out wood and embed it into a hydroponics tray, then get a queen bee and bottle of BeezEez from cargo bay. + Hives produce honey and honeycomb, but be wary if the bees start swarming.
    • +
    +
    + +
    +

    March 6th 2013

    +

    Cael Aislinn updated:

    +
      +
    • Type 1 thermoelectric generators and the associated binary circulators are now moveable (wrench to secure/unsecure) and orderable via Quartermaster.
    • +
    • code/maps/rust_test.dmm contains an example setup for a functional RUST reactor. Maximum output is in the range of 12 to 20MW (12 to 20 million watts).
    • +
    • Removed double announcement for gridchecks, reduced duration of gridchecks.
    • +
    +

    RavingManiac updated:

    +
      +
    • You can now stab people with syringes using the "harm" intent. This destroys the syringe and transfers a random percentage of its contents into the target. Armor has a 50% chance of blocking the syringe.
    • +
    +
    + +
    +

    March 5th 2013

    +

    Cael Aislinn updated:

    +
      +
    • Set roundstart music to randomly choose between space.ogg and traitor.ogg (see http://baystation12.net/forums/viewtopic.php?f=5&t=6972)
    • +
    • All RUST components except for TEGs (which generate the power) are now obtainable ingame, bored engineers should get hold of them and setup an experimental reactor for testing purposes.
    • +
    +

    CIB updated:

    +
      +
    • Added internal organs. They're currently all located in the chest. Use advanced scanner to detect damage. Use the same surgery as for ruptured lungs to fix them.
    • +
    +
    + +
    +

    February 27th 2013

    +

    Gamerofthegame updated:

    +
      +
    • Added the (base gear) ERT preset for the debug command.
    • +
    • Map fixes, Virology hole fixed. Atmospheric fixes for mining and, to a less extent, the science outpost. (No, not cycling airlocks)
    • +
    • Fiddled with the ERT set up location on Centcom. Radmins will now have a even easier time equiping a team of any real pratical size, especially coupled with the above debug command.
    • +
    +
    + +
    +

    February 25th 2013

    +

    Cael Aislinn updated:

    +
      +
    • As well as building hull shield generators, normal shield gens can now be built (see http://baystation12.net/forums/viewtopic.php?f=1&t=6993).
    • +
    • New random events: multiple new system wide-events have been have been added to the newscaster feeds, some not quite as respectable as others.
    • +
    • New random event: some lucky winners will win the TC Daily Grand Slam Lotto, while others may be the target of malicious hackers.
    • +
    +
    + +
    +

    February 23rd 2013

    +

    Cael Aislinn updated:

    +
      +
    • Finances! Players spawn with an account, and money can be transferred between accounts, withdrawn/deposited at ATMs and charged to accounts via EFTPOS scanners.

      + All players start with 500-5000 credits, credits can no longer be merged and only credits can be deposited into ATMs - so shelter your illegitimately gotten gains in physical assets and remember that fraud is frowned upon!
    • +
    • Turrets are no longer noiseless as the grave. Listen for the sound of machinery in their proximity.
    • +
    +
    + +
    +

    February 23rd 2013

    +

    Cael Aislinn updated:

    +
      +
    • RUST machinery components should now be researchable (with high requirements) and orderable through QM (with high cost).
    • +
    • Shield machinery should now be researchable (with high requirements) and orderable through QM (with high cost). This one is reportedly buggy.
    • +
    • Rogue vending machines should revert back to normal at the end of the event.
    • +
    • New Unathi hair styles.
    • +
    +
    + +
    +

    22/02/2013

    +

    Chinsky updated:

    +
      +
    • Change to body cavity surgery. Can only put items in chest, groind and head. Max size for item - 3 (chest), 2 (groin), 1 (head). For chest surgery ribs should be bent open, (lung surgery until second scalpel step). Surgery step needs preparation step, with drill. After that you can place item inside, or seal it with cautery to do other step instead.
    • +
    +
    + +
    +

    February 18th 2013

    +

    Cael Aislinn updated:

    +
      +
    • All RUST components are now buildable/orderable, with very high requirements (except for the TEGs). Emitters have replaced gyrotrons, for now.
    • +
    • Fixed up shield generators and made them buildable, with circuits obtainable through RnD. Hull shield gens project along space tiles adjacent to the hull (must be adjacent to a space tile to work).
    • +
    +
    + +
    +

    20/02/2013

    +

    Chinsky updated:

    +
      +
    • Added new surgery: putting items inside people. After you use retractor to keep incision open, just click with any item to put it inside. But be wary, if you try to fit something too big, you might rip the veins. To remove items, use implant removal surgery.
    • +
    • Crowbar can be used as alternative to retractor.
    • +
    • Can now unload guns by clicking them in hand.
    • +
    • Fixed distance calculation in bullet missing chance computation, it was always assuming 1 or 0 tiles. Now distace REALLY matters when you shoot.
    • +
    • To add more FUN to previous thing, bullets missed to not disappear but keep going until they hit something else.
    • +
    • Compressed Matter and Explosive implants spawn properly now.
    • +
    • Tweaks to medical effects: removed itch caused by bandages. Chemical effects now have non-100 chance of appearing, the stronger medicine, the more probality it'll have side effects.
    • +
    +
    + +
    +

    February 18th 2013

    +

    Cael Aislinn updated:

    +
      +
    • Security bots will now target hostile mobs, and vice versa.
    • +
    • Carp should actually emigrate now, instead of just immigrating then squatting around the outer hull.
    • +
    • Admins and moderators have been split up into separate 'who' verbs (adminwho and modwho respectively).
    • +
    +
    + +
    +

    February 14th 2013

    +

    CIB updated:

    +
      +
    • Medical side-effects(patients are going to come back for secondary treatment)
    • +
    • NT loyalty setting(affects command reports and gives antags hints who might collaborate with them)
    • +
    • Simple animal balance fixes(They're slower now)
    • +
    +

    CaelAislinn updated:

    +
      +
    • Re-added old ion storm laws, re-added grid check event.
    • +
    • Added Rogue Drone and Vermin Infestation random events.
    • +
    • Added/fixed space vines random event.
    • +
    • Updates to the virus events.
    • +
    • Spider infestation and alien infestation events turned off by default.
    • +
    • Soghun, taj and skrell all have unique language text colours.
    • +
    • Moderators will no longer be listed in adminwho, instead use modwho.
    • +
    + +

    Gamerofthegame updated:

    +
      +
    • Miscellaneous mapfixes.
    • +
    +
    + +
    +

    February 13th 2013

    +

    Erthilo updated:

    +
      +
    • Fixed SSD (logged-out) players not staying asleep.
    • +
    • Fixed set-pose verb and mice emotes having extra periods.
    • +
    • Fixed virus crate not appearing and breaking supply shuttle.
    • +
    • Fixed newcaster photos not being censored.
    • +
    +
    + +
    +

    January 23rd

    +

    Cael_Aislinn updated:

    + +
    + +
    + + +

    1/31/2013

    +

    CIB updated:

    +
      +
    • Chilis and cold chilis no longer kill in small amounts
    • +
    • Chloral now again needs around 5 units to start killing somebody
    • +
    +
    + +
    +

    January 21st

    +

    Cael_Aislinn updated:

    +
      +
    • Satchels and ore boxes can now hold strange rocks.
    • +
    • Closets and crates can now be built out of 5 and 10 plasteel respectively.
    • +
    • Observers can become mice once more.
    • +
    +
    + +
    +

    13/01/2013

    +

    Chinsky updated:

    +
      +
    • If you get enough (6) blood drips on one tile, it'll turn into a blood puddle. Should make bleeding out more visible.
    • +
    • Security belt now able to hold taser, baton and tape roll.
    • +
    • Added alternative security uniform to Security wardrobes.
    • +
    • Ported Urist cult runes. Down with the crayon drawings! Example: http://dl.dropbox.com/u/26846767/images/SS13/255_symbols.PNG
    • +
    • Engineering tape now require engineer OR atmos access instead of both.
    • +
    • Implants now will react to EMP, possibly in !!FUN!! ways
    • +
    +
    + +

    1/13/2013

    +

    GauHelldragon updated:

    +
      +
    • Servicebots now have RoboTray and Printing Pen. Robotray can be used to pick up and drop food/drinks. Printing pen can alternate between writing mode and rename paper mode by clicking it.
    • +
    • Farmbots. A new type of robot that weeds, waters and fertilizes. Use robot arm on water tank. Then use plant analyzer, mini-hoe, bucket and finally proximity sensor.
    • +
    • Chefs can clang their serving trays with a rolling pin. Just like a riot shield!
    • +
    +
    + +
    +

    January 7th

    +

    Cael_Aislinn updated:

    + +
    + +
    +

    7/01/2013

    +

    Chinsky updated:

    +
      +
    • Implants: Explosvie implant, exploding when victim hears the codephrase you set.
    • +
    • Implants: Compressed Matter implat, scan item (making it disappear), inject yourself and recall that item on will!
    • +
    • Implant removal surgery, with !!FUN!! results if you mess up it.
    • +
    • Coats now have pockets again.
    • +
    • Bash people on tabetops. an windows, or with stools. Grab people to bash them on tables or windows (better grab for better hit on windows). Drag stool sprite on you to pick it up, click on it in hand to make it usual stool again.
    • +
    • Surgical caps, and new sprites for bloodbags and fixovein.
    • +
    • Now some surgery steps will bloody your hands, Full-body blood coat in case youy mess up spectacualry.
    • +
    • Ported some crates (Art, Surgery, Sterile equiplemnt).
    • +
    • Changed contraband crates. Posters moved to Art Crate, cigs and lipstick ot party crate. Now contraband crate has illegal booze and illicit drugs.
    • +
    • Finally got evac party lights
    • +
    • Now disfigurment,now it WILL happen when damage is bad enough.
    • +
    • Now if you speak in depressurized area (less than 10 kPa) only people next to you can hear you. Radios still work though.
    • +
    +
    + + + +/tg/ station 13 Development Team + + + + +
    + Coders: TLE, NEO, Errorage, muskets, veryinky, Skie, Noise, Numbers, Agouri, Noka, Urist McDorf, Uhangi, Darem, Mport, rastaf0, Doohl, Superxpdude, Rockdtben, ConstantA, Petethegoat, Kor, Polymorph, Carn, Nodrak, Donkie
    + Spriters: Agouri, Cheridan, Cruazy Guest, Deeaych, Deuryn, Matty406, Microwave, ShiftyEyesShady, Skie, Uhangi, Veyveyr, Petethegoat, Kor, Ricotez, Ausops, TankNut
    + Sounds: Skie, Lasty/Vinyl
    + Thanks to: CDK Station devs, GoonStation devs, the original SpaceStation developers and Invisty for the title image +
    + +Daedalus Development Team + + + + +
    + Coders: DopeGhoti, Sunfall, ThVortex
    + Artwork: Captain Hammer
    + Spriters: ((TODO.))
    + Sounds: Peter J, due, Erik Satie
    + Thanks to: All the dev teams that came before: BS12, /tg/station13, the Goons, and the original SS13 folks.
    +
    + +GoonStation 13 Development Team +
    + Coders: Stuntwaffle, Showtime, Pantaloons, Nannek, Keelin, Exadv1, hobnob, Justicefries, 0staf, sniperchance, AngriestIBM, BrianOBlivion
    + Spriters: Supernorn, Haruhi, Stuntwaffle, Pantaloons, Rho, SynthOrange, I Said No
    +
    +

    Creative Commons License
    This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
    Rights are currently extended to SomethingAwful Goons only.

    +

    Some icons by Yusuke Kamiyamane. All rights reserved. Licensed under a Creative Commons Attribution 3.0 License.

    +
    + + diff --git a/icons/obj/food.dmi b/icons/obj/food.dmi index 4866a35e..906e80c6 100644 Binary files a/icons/obj/food.dmi and b/icons/obj/food.dmi differ diff --git a/icons/obj/kitchen.dmi b/icons/obj/kitchen.dmi index 9cccbfeb..439880c4 100644 Binary files a/icons/obj/kitchen.dmi and b/icons/obj/kitchen.dmi differ diff --git a/icons/obj/toy.dmi b/icons/obj/toy.dmi index a921d45d..85d41e31 100644 Binary files a/icons/obj/toy.dmi and b/icons/obj/toy.dmi differ diff --git a/maps/tgstation2.dmm b/maps/tgstation2.dmm index 79b4a72f..3f6c3788 100644 --- a/maps/tgstation2.dmm +++ b/maps/tgstation2.dmm @@ -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)