From 53a95d8effcbefa3ec3d654ead7d727d5397ca2a Mon Sep 17 00:00:00 2001 From: volas Date: Mon, 20 Apr 2015 23:09:24 +0300 Subject: [PATCH 01/15] Fixes #8913 --- code/modules/paperwork/paper.dm | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index 6c91d2de03..29c1dbcd57 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -22,6 +22,7 @@ var/info_links //A different version of the paper which includes html links at fields and EOF var/stamps //The (text for the) stamps on the paper. var/fields //Amount of user created fields + var/free_space = MAX_PAPER_MESSAGE_LEN var/list/stamped var/list/ico[0] //Icons and var/list/offset_x[0] //offsets stored for later @@ -51,6 +52,7 @@ spawn(2) update_icon() + update_space(info) updateinfolinks() return @@ -62,6 +64,12 @@ return icon_state = "paper" +/obj/item/weapon/paper/proc/update_space(var/new_text) + if(!new_text) + return + + free_space -= length(strip_html_properly(new_text, 0)) + /obj/item/weapon/paper/examine(mob/user) ..() if(in_range(user, src) || istype(user, /mob/dead/observer)) @@ -188,6 +196,7 @@ /obj/item/weapon/paper/proc/clearpaper() info = null stamps = null + free_space = MAX_BOOK_MESSAGE_LEN stamped = list() overlays.Cut() updateinfolinks() @@ -325,12 +334,11 @@ var/id = href_list["write"] //var/t = strip_html_simple(input(usr, "What text do you wish to add to " + (id=="end" ? "the end of the paper" : "field "+id) + "?", "[name]", null),8192) as message - var/textlimit = MAX_PAPER_MESSAGE_LEN - length(info) - if(textlimit <= 0) + if(free_space <= 0) usr << "You're trying to find a free place on paper, but can't!" return - var/t = strip_html_simple(input("Enter what you want to write:", "Write", null, null) as message, textlimit) + var/t = strip_html_simple(input("Enter what you want to write:", "Write", null, null) as message, free_space) if(!t) return @@ -375,6 +383,8 @@ info += t // Oh, he wants to edit to the end of the file, let him. updateinfolinks() + update_space(t) + usr << browse("[name][info_links][stamps]", "window=[name]") // Update the window update_icon() From 89a72fb326b14762f1cf6112bcf9f34f8773da21 Mon Sep 17 00:00:00 2001 From: RavingManiac Date: Mon, 27 Apr 2015 12:10:54 +1000 Subject: [PATCH 02/15] Candle burn time increased to ~30 minutes Some fluff added to candle description explaining how they burn in space --- code/game/objects/items/weapons/candle.dm | 16 +++++++++++----- html/changelogs/RavingManiac-master.yml | 5 +++++ 2 files changed, 16 insertions(+), 5 deletions(-) create mode 100644 html/changelogs/RavingManiac-master.yml diff --git a/code/game/objects/items/weapons/candle.dm b/code/game/objects/items/weapons/candle.dm index 593e85efdd..03f060f155 100644 --- a/code/game/objects/items/weapons/candle.dm +++ b/code/game/objects/items/weapons/candle.dm @@ -1,18 +1,24 @@ /obj/item/weapon/flame/candle name = "red candle" - desc = "a candle" + desc = "a small pillar candle. Its specially-formulated fuel-oxidizer wax mixture allows continued combustion in airless environments." icon = 'icons/obj/candle.dmi' icon_state = "candle1" item_state = "candle1" w_class = 1 - var/wax = 200 + var/wax = 0 + var/starting_wax = 0 + +/obj/item/weapon/flame/candle/New() + wax = rand(800, 1000) // Enough for 27-33 minutes. 30 minutes on average. + starting_wax = wax + ..() /obj/item/weapon/flame/candle/update_icon() var/i - if(wax>150) + if(wax > starting_wax*3/4) i = 1 - else if(wax>80) + else if(wax > starting_wax*2/5) i = 2 else i = 3 icon_state = "candle[i][lit ? "_lit" : ""]" @@ -80,4 +86,4 @@ /obj/item/weapon/flame/candle/dropped(mob/user) if(lit) user.SetLuminosity(user.luminosity - CANDLE_LUM) - SetLuminosity(CANDLE_LUM) + SetLuminosity(CANDLE_LUM) \ No newline at end of file diff --git a/html/changelogs/RavingManiac-master.yml b/html/changelogs/RavingManiac-master.yml new file mode 100644 index 0000000000..9d3ea70147 --- /dev/null +++ b/html/changelogs/RavingManiac-master.yml @@ -0,0 +1,5 @@ +author: RavingManiac +delete-after: True + +changes: + - tweak: "Candles now burn for about 30 mintutes." From 159ad76fab4fcbb791867ef32e689599ca2fb058 Mon Sep 17 00:00:00 2001 From: Kelenius Date: Mon, 27 Apr 2015 08:06:21 +0300 Subject: [PATCH 03/15] Fixes #8998 --- code/modules/hydroponics/seed_storage.dm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/code/modules/hydroponics/seed_storage.dm b/code/modules/hydroponics/seed_storage.dm index 469896018e..e64ad1e813 100644 --- a/code/modules/hydroponics/seed_storage.dm +++ b/code/modules/hydroponics/seed_storage.dm @@ -231,12 +231,15 @@ S.remove_from_storage(O, src) O.loc = src + var/newID = 0 for (var/datum/seed_pile/N in piles) if (N.matches(O)) ++N.amount N.seeds += (O) return + else if(N.ID >= newID) + newID = N.ID + 1 - piles += new /datum/seed_pile(O, piles.len) + piles += new /datum/seed_pile(O, newID) return From 8626a8367533adec5f994b6ed1c7244889e7b685 Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Mon, 27 Apr 2015 10:47:45 +0200 Subject: [PATCH 04/15] Adds the camera loss event. --- baystation12.dme | 2 ++ code/__HELPERS/global_lists.dm | 3 ++ code/game/machinery/camera/camera.dm | 2 ++ code/modules/events/camera_loss.dm | 36 +++++++++++++++++++ .../modules/events/communications_blackout.dm | 4 +-- code/modules/events/event_container.dm | 3 +- 6 files changed, 47 insertions(+), 3 deletions(-) create mode 100644 code/modules/events/camera_loss.dm diff --git a/baystation12.dme b/baystation12.dme index 30966ac0f5..825b0c9232 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -952,8 +952,10 @@ #include "code\modules\economy\Events.dm" #include "code\modules\economy\Events_Mundane.dm" #include "code\modules\economy\TradeDestinations.dm" +#include "code\modules\events\apc_loss.dm" #include "code\modules\events\blob.dm" #include "code\modules\events\brand_intelligence.dm" +#include "code\modules\events\camera_loss.dm" #include "code\modules\events\carp_migration.dm" #include "code\modules\events\comms_blackout.dm" #include "code\modules\events\communications_blackout.dm" diff --git a/code/__HELPERS/global_lists.dm b/code/__HELPERS/global_lists.dm index 7484d016b6..42e1b0b63e 100644 --- a/code/__HELPERS/global_lists.dm +++ b/code/__HELPERS/global_lists.dm @@ -29,6 +29,9 @@ var/global/list/playable_species = list("Human") // A list of ALL playable sp // Posters var/global/list/poster_designs = list() +// Cameras +var/list/obj/machinery/camera/world_cameras = list() + // Uplinks var/list/obj/item/device/uplink/world_uplinks = list() diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm index 5670ef2060..839b1aa461 100644 --- a/code/game/machinery/camera/camera.dm +++ b/code/game/machinery/camera/camera.dm @@ -37,6 +37,7 @@ wires = new(src) assembly = new(src) assembly.state = 4 + world_cameras += src /* // Use this to look for cameras that have the same c_tag. for(var/obj/machinery/camera/C in cameranet.cameras) @@ -54,6 +55,7 @@ ..() /obj/machinery/camera/Destroy() + world_cameras -= src deactivate(null, 0) //kick anyone viewing out if(assembly) qdel(assembly) diff --git a/code/modules/events/camera_loss.dm b/code/modules/events/camera_loss.dm new file mode 100644 index 0000000000..d8b76c17e3 --- /dev/null +++ b/code/modules/events/camera_loss.dm @@ -0,0 +1,36 @@ +/datum/event/camera_loss/start() + var/obj/machinery/camera/C = acquire_random_camera() + if(!C) + return + + var/severity_range = 0 + switch(severity) + if(EVENT_LEVEL_MUNDANE) + severity_range = 0 + if(EVENT_LEVEL_MODERATE) + severity_range = 7 + if(EVENT_LEVEL_MAJOR) + severity_range = 15 + + for(var/obj/machinery/camera/cam in range(severity_range,C)) + if(is_valid_camera(cam)) + cam.wires.UpdateCut(CAMERA_WIRE_POWER, 0) + if(prob(5)) + cam.wires.UpdateCut(CAMERA_WIRE_ALARM, 0) + +/datum/event/camera_loss/proc/acquire_random_camera(var/remaining_attempts = 5) + if(!world_cameras.len) + return + if(!remaining_attempts) + return + + var/obj/machinery/camera/C = pick(world_cameras) + // Only return a functional camera, not installed in a silicon, and that exists somewhere players have access + + if(is_valid_camera(C)) + return C + return acquire_random_camera(remaining_attempts--) + +/datum/event/camera_loss/proc/is_valid_camera(var/obj/machinery/camera/C) + var/turf/T = get_turf(C) + return T && C.can_use() && !istype(C.loc, /mob/living/silicon) && (T.z in config.player_levels) diff --git a/code/modules/events/communications_blackout.dm b/code/modules/events/communications_blackout.dm index fabfdd3336..68f6030425 100644 --- a/code/modules/events/communications_blackout.dm +++ b/code/modules/events/communications_blackout.dm @@ -12,9 +12,9 @@ A << "
" if(prob(30)) //most of the time, we don't want an announcement, so as to allow AIs to fake blackouts. - command_announcement.Announce(alert, new_sound = sound('sound/misc/interference.ogg', volume=50)) + command_announcement.Announce(alert, new_sound = sound('sound/misc/interference.ogg', volume=25)) /datum/event/communications_blackout/start() for(var/obj/machinery/telecomms/T in telecomms_list) - T.emp_act(1) \ No newline at end of file + T.emp_act(1) diff --git a/code/modules/events/event_container.dm b/code/modules/events/event_container.dm index 900d6f76ec..c13cee9ce1 100644 --- a/code/modules/events/event_container.dm +++ b/code/modules/events/event_container.dm @@ -128,10 +128,11 @@ var/global/list/severity_to_string = list(EVENT_LEVEL_MUNDANE = "Mundane", EVENT // Severity level, event name, even type, base weight, role weights, one shot, min weight, max weight. Last two only used if set and non-zero new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Nothing", /datum/event/nothing, 100), new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Brand Intelligence",/datum/event/brand_intelligence,20, list(ASSIGNMENT_JANITOR = 25), 1), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Camera Loss", /datum/event/camera_loss, 20, list(ASSIGNMENT_ENGINEER = 10)), new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Economic News", /datum/event/economic_event, 300), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Lost Carp", /datum/event/carp_migration, 20, list(ASSIGNMENT_SECURITY = 10), 1), new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Money Hacker", /datum/event/money_hacker, 0, list(ASSIGNMENT_ANY = 4), 1, 10, 25), new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Money Lotto", /datum/event/money_lotto, 0, list(ASSIGNMENT_ANY = 1), 1, 5, 15), - new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Lost Carp", /datum/event/carp_migration, 20, list(ASSIGNMENT_SECURITY = 10), 1), new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Mundane News", /datum/event/mundane_news, 300), new /datum/event_meta(EVENT_LEVEL_MUNDANE, "PDA Spam", /datum/event/pda_spam, 0, list(ASSIGNMENT_ANY = 4), 0, 25, 50), new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Space Dust", /datum/event/dust , 30, list(ASSIGNMENT_ENGINEER = 5), 0, 0, 50), From ed81d9fd6385ebb70f13493c0d704bad10894390 Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Mon, 27 Apr 2015 10:48:03 +0200 Subject: [PATCH 05/15] Adds the ACP damage event. --- baystation12.dme | 4 +- code/modules/events/apc_damage.dm | 54 +++++++++++++++++++ .../{camera_loss.dm => camera_damage.dm} | 9 ++-- code/modules/events/electrical_storm.dm | 2 +- code/modules/events/event_container.dm | 3 +- 5 files changed, 63 insertions(+), 9 deletions(-) create mode 100644 code/modules/events/apc_damage.dm rename code/modules/events/{camera_loss.dm => camera_damage.dm} (79%) diff --git a/baystation12.dme b/baystation12.dme index 825b0c9232..89e38f3910 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -952,10 +952,10 @@ #include "code\modules\economy\Events.dm" #include "code\modules\economy\Events_Mundane.dm" #include "code\modules\economy\TradeDestinations.dm" -#include "code\modules\events\apc_loss.dm" +#include "code\modules\events\apc_damage.dm" #include "code\modules\events\blob.dm" #include "code\modules\events\brand_intelligence.dm" -#include "code\modules\events\camera_loss.dm" +#include "code\modules\events\camera_damage.dm" #include "code\modules\events\carp_migration.dm" #include "code\modules\events\comms_blackout.dm" #include "code\modules\events\communications_blackout.dm" diff --git a/code/modules/events/apc_damage.dm b/code/modules/events/apc_damage.dm new file mode 100644 index 0000000000..7eecfa6aef --- /dev/null +++ b/code/modules/events/apc_damage.dm @@ -0,0 +1,54 @@ +/datum/event/apc_damage + var/apcSelectionRange = 25 + +/datum/event/apc_damage/start() + var/obj/machinery/power/apc/A = acquire_random_apc() + + var/severity_range = 0 + switch(severity) + if(EVENT_LEVEL_MUNDANE) + severity_range = 0 + if(EVENT_LEVEL_MODERATE) + severity_range = 7 + if(EVENT_LEVEL_MAJOR) + severity_range = 15 + + for(var/obj/machinery/power/apc/apc in range(severity_range,A)) + if(is_valid_apc(apc)) + apc.emagged = 1 + apc.update_icon() + +/datum/event/apc_damage/proc/acquire_random_apc() + var/list/possibleEpicentres = list() + var/list/apcs = list() + + for(var/obj/effect/landmark/newEpicentre in landmarks_list) + if(newEpicentre.name == "lightsout") + possibleEpicentres += newEpicentre + + if(!possibleEpicentres.len) + return + + var/epicentre = pick(possibleEpicentres) + for(var/obj/machinery/power/apc/apc in range(epicentre,apcSelectionRange)) + if(is_valid_apc(apc)) + apcs += apc + // Greatly increase the chance for APCs in maintenance areas to be selected + var/area/A = get_area(apc) + if(istype(A,/area/maintenance)) + apcs += apc + apcs += apc + + if(!apcs.len) + return + + return pick(apcs) + +/datum/event/apc_damage/proc/is_valid_apc(var/obj/machinery/power/apc/apc) + // Type must be exactly a basic APC. + // This generally prevents affecting APCs in critical areas (AI core, engine room, etc.) as they often use higher capacity subtypes. + if(apc.type != /obj/machinery/power/apc) + return 0 + + var/turf/T = get_turf(apc) + return !apc.emagged && T && (T.z in config.player_levels) diff --git a/code/modules/events/camera_loss.dm b/code/modules/events/camera_damage.dm similarity index 79% rename from code/modules/events/camera_loss.dm rename to code/modules/events/camera_damage.dm index d8b76c17e3..2cbeab9790 100644 --- a/code/modules/events/camera_loss.dm +++ b/code/modules/events/camera_damage.dm @@ -1,4 +1,4 @@ -/datum/event/camera_loss/start() +/datum/event/camera_damage/start() var/obj/machinery/camera/C = acquire_random_camera() if(!C) return @@ -18,19 +18,18 @@ if(prob(5)) cam.wires.UpdateCut(CAMERA_WIRE_ALARM, 0) -/datum/event/camera_loss/proc/acquire_random_camera(var/remaining_attempts = 5) +/datum/event/camera_damage/proc/acquire_random_camera(var/remaining_attempts = 5) if(!world_cameras.len) return if(!remaining_attempts) return var/obj/machinery/camera/C = pick(world_cameras) - // Only return a functional camera, not installed in a silicon, and that exists somewhere players have access - if(is_valid_camera(C)) return C return acquire_random_camera(remaining_attempts--) -/datum/event/camera_loss/proc/is_valid_camera(var/obj/machinery/camera/C) +/datum/event/camera_damage/proc/is_valid_camera(var/obj/machinery/camera/C) + // Only return a functional camera, not installed in a silicon, and that exists somewhere players have access var/turf/T = get_turf(C) return T && C.can_use() && !istype(C.loc, /mob/living/silicon) && (T.z in config.player_levels) diff --git a/code/modules/events/electrical_storm.dm b/code/modules/events/electrical_storm.dm index 4a53cc696d..be40542687 100644 --- a/code/modules/events/electrical_storm.dm +++ b/code/modules/events/electrical_storm.dm @@ -25,4 +25,4 @@ for(var/obj/effect/landmark/epicentre in epicentreList) for(var/obj/machinery/power/apc/apc in range(epicentre,lightsoutRange)) - apc.overload_lighting() \ No newline at end of file + apc.overload_lighting() diff --git a/code/modules/events/event_container.dm b/code/modules/events/event_container.dm index c13cee9ce1..5cb256e500 100644 --- a/code/modules/events/event_container.dm +++ b/code/modules/events/event_container.dm @@ -127,8 +127,9 @@ var/global/list/severity_to_string = list(EVENT_LEVEL_MUNDANE = "Mundane", EVENT available_events = list( // Severity level, event name, even type, base weight, role weights, one shot, min weight, max weight. Last two only used if set and non-zero new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Nothing", /datum/event/nothing, 100), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "APC Damage", /datum/event/apc_damage, 20, list(ASSIGNMENT_ENGINEER = 10)), new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Brand Intelligence",/datum/event/brand_intelligence,20, list(ASSIGNMENT_JANITOR = 25), 1), - new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Camera Loss", /datum/event/camera_loss, 20, list(ASSIGNMENT_ENGINEER = 10)), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Camera Damage", /datum/event/camera_damage, 20, list(ASSIGNMENT_ENGINEER = 10)), new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Economic News", /datum/event/economic_event, 300), new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Lost Carp", /datum/event/carp_migration, 20, list(ASSIGNMENT_SECURITY = 10), 1), new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Money Hacker", /datum/event/money_hacker, 0, list(ASSIGNMENT_ANY = 4), 1, 10, 25), From a999202cfce326eb13960b7730673f06445d7b1c Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Mon, 27 Apr 2015 11:05:05 +0200 Subject: [PATCH 06/15] Changelog entry. --- html/changelogs/PsiOmegaDelta-PR-9008.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/PsiOmegaDelta-PR-9008.yml diff --git a/html/changelogs/PsiOmegaDelta-PR-9008.yml b/html/changelogs/PsiOmegaDelta-PR-9008.yml new file mode 100644 index 0000000000..298f0e4d68 --- /dev/null +++ b/html/changelogs/PsiOmegaDelta-PR-9008.yml @@ -0,0 +1,4 @@ +author: PsiOmegaDelta +delete-after: True +changes: + - rscadd: "Two new events which will cause damage to APCs or cameras when triggered." From 4bddde11ae32f52eb9125ea162f7c2499799b10e Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Mon, 27 Apr 2015 11:14:31 +0200 Subject: [PATCH 07/15] Using cameranet cameras to avoid burning out things like ERT/mercenary helmet cameras and traitor spy cams. --- code/__HELPERS/global_lists.dm | 3 --- code/game/machinery/camera/camera.dm | 2 -- code/modules/events/camera_damage.dm | 4 ++-- 3 files changed, 2 insertions(+), 7 deletions(-) diff --git a/code/__HELPERS/global_lists.dm b/code/__HELPERS/global_lists.dm index 42e1b0b63e..7484d016b6 100644 --- a/code/__HELPERS/global_lists.dm +++ b/code/__HELPERS/global_lists.dm @@ -29,9 +29,6 @@ var/global/list/playable_species = list("Human") // A list of ALL playable sp // Posters var/global/list/poster_designs = list() -// Cameras -var/list/obj/machinery/camera/world_cameras = list() - // Uplinks var/list/obj/item/device/uplink/world_uplinks = list() diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm index 839b1aa461..5670ef2060 100644 --- a/code/game/machinery/camera/camera.dm +++ b/code/game/machinery/camera/camera.dm @@ -37,7 +37,6 @@ wires = new(src) assembly = new(src) assembly.state = 4 - world_cameras += src /* // Use this to look for cameras that have the same c_tag. for(var/obj/machinery/camera/C in cameranet.cameras) @@ -55,7 +54,6 @@ ..() /obj/machinery/camera/Destroy() - world_cameras -= src deactivate(null, 0) //kick anyone viewing out if(assembly) qdel(assembly) diff --git a/code/modules/events/camera_damage.dm b/code/modules/events/camera_damage.dm index 2cbeab9790..b6cb3dea53 100644 --- a/code/modules/events/camera_damage.dm +++ b/code/modules/events/camera_damage.dm @@ -19,12 +19,12 @@ cam.wires.UpdateCut(CAMERA_WIRE_ALARM, 0) /datum/event/camera_damage/proc/acquire_random_camera(var/remaining_attempts = 5) - if(!world_cameras.len) + if(!cameranet.cameras.len) return if(!remaining_attempts) return - var/obj/machinery/camera/C = pick(world_cameras) + var/obj/machinery/camera/C = pick(cameranet.cameras) if(is_valid_camera(C)) return C return acquire_random_camera(remaining_attempts--) From aa115f5bb217247284945f13221eae9d8f8fb2f9 Mon Sep 17 00:00:00 2001 From: Yoshax Date: Mon, 27 Apr 2015 16:41:47 +0100 Subject: [PATCH 08/15] Fixes antag surgery kit --- code/game/objects/items/weapons/storage/firstaid.dm | 4 ++++ html/changelogs/Yoshax-ICanIntoSurgery.YML | 5 +++++ 2 files changed, 9 insertions(+) create mode 100644 html/changelogs/Yoshax-ICanIntoSurgery.YML diff --git a/code/game/objects/items/weapons/storage/firstaid.dm b/code/game/objects/items/weapons/storage/firstaid.dm index 304c59fb98..7b2c03ba4a 100644 --- a/code/game/objects/items/weapons/storage/firstaid.dm +++ b/code/game/objects/items/weapons/storage/firstaid.dm @@ -131,6 +131,7 @@ /obj/item/weapon/storage/firstaid/surgery name = "surgery kit" desc = "Contains tools for surgery." + storage_slots = 10 /obj/item/weapon/storage/firstaid/surgery/New() ..() @@ -142,6 +143,9 @@ new /obj/item/weapon/retractor(src) new /obj/item/weapon/scalpel(src) new /obj/item/weapon/surgicaldrill(src) + new /obj/item/weapon/bonegel(src) + new /obj/item/weapon/FixOVein(src) + new /obj/item/stack/medical/advanced/bruise_pack(src) return /* diff --git a/html/changelogs/Yoshax-ICanIntoSurgery.YML b/html/changelogs/Yoshax-ICanIntoSurgery.YML new file mode 100644 index 0000000000..9aa57af213 --- /dev/null +++ b/html/changelogs/Yoshax-ICanIntoSurgery.YML @@ -0,0 +1,5 @@ +author: Yoshax +delete-after: True + +changes: + - tweak: "Adds items to the orderable antag surgical kit so its actually useful for surgery." \ No newline at end of file From 27e91b3fa0638415f63ee2e89f0a4fcaff188dbf Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Mon, 27 Apr 2015 19:09:46 +0200 Subject: [PATCH 09/15] Cameras now have a small chance of being permanently destroyed. --- code/modules/events/camera_damage.dm | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/code/modules/events/camera_damage.dm b/code/modules/events/camera_damage.dm index b6cb3dea53..3143b9585b 100644 --- a/code/modules/events/camera_damage.dm +++ b/code/modules/events/camera_damage.dm @@ -14,9 +14,12 @@ for(var/obj/machinery/camera/cam in range(severity_range,C)) if(is_valid_camera(cam)) - cam.wires.UpdateCut(CAMERA_WIRE_POWER, 0) - if(prob(5)) - cam.wires.UpdateCut(CAMERA_WIRE_ALARM, 0) + if(prob(2*severity)) + cam.destroy() + else + cam.wires.UpdateCut(CAMERA_WIRE_POWER, 0) + if(prob(5*severity)) + cam.wires.UpdateCut(CAMERA_WIRE_ALARM, 0) /datum/event/camera_damage/proc/acquire_random_camera(var/remaining_attempts = 5) if(!cameranet.cameras.len) From d0615430ecad37db85c0e360265a465bec9f8406 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Mon, 27 Apr 2015 01:25:45 -0400 Subject: [PATCH 10/15] Fixes #8997 Gibbing a human now causes all items on or in their person to get thrown around. This includes implants and bullet shrapnel. --- code/modules/mob/living/carbon/human/death.dm | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm index 466742046b..5a43973197 100644 --- a/code/modules/mob/living/carbon/human/death.dm +++ b/code/modules/mob/living/carbon/human/death.dm @@ -15,6 +15,10 @@ // Override the current limb status and don't cause an explosion E.droplimb(1,1) + for(var/obj/item/I in src) + drop_from_inventory(I) + I.throw_at(get_edge_target_turf(src,pick(alldirs)), rand(1,3), round(30/I.w_class)) + ..(species.gibbed_anim) gibs(loc, viruses, dna, null, species.flesh_color, species.blood_color) From 36d9944dfd5a7f00f40281fbb8812ac29b0b63a5 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Mon, 27 Apr 2015 01:49:18 -0400 Subject: [PATCH 11/15] Fixes #8977 --- code/modules/power/lighting.dm | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index 7c9ae41cf2..d513d2ff12 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -9,7 +9,7 @@ #define LIGHT_BROKEN 2 #define LIGHT_BURNED 3 - +#define LIGHT_BULB_TEMPERATURE 400 //K - used value for a 60W bulb /obj/item/light_fixture_frame name = "light fixture frame" @@ -487,11 +487,13 @@ var/mob/living/carbon/human/H = user if(istype(H)) - - if(H.gloves) + if(H.species.heat_level_1 > LIGHT_BULB_TEMPERATURE) + prot = 1 + else if(H.gloves) var/obj/item/clothing/gloves/G = H.gloves if(G.max_heat_protection_temperature) - prot = (G.max_heat_protection_temperature > 360) + if(G.max_heat_protection_temperature > LIGHT_BULB_TEMPERATURE) + prot = 1 else prot = 1 From 59e17f7a9b7f47880d4b8c18a05692f7035c2ce9 Mon Sep 17 00:00:00 2001 From: volas Date: Tue, 28 Apr 2015 00:41:14 +0300 Subject: [PATCH 12/15] small fix --- code/modules/paperwork/paper.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index 29c1dbcd57..87d5f002ee 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -196,7 +196,7 @@ /obj/item/weapon/paper/proc/clearpaper() info = null stamps = null - free_space = MAX_BOOK_MESSAGE_LEN + free_space = MAX_PAPER_MESSAGE_LEN stamped = list() overlays.Cut() updateinfolinks() From 74675f5a146f3b8d9e0d70354ae5542930ba7fbf Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Tue, 28 Apr 2015 08:48:48 +0200 Subject: [PATCH 13/15] Updates changelog. --- html/changelog.html | 46 ++++++++++++++ html/changelogs/.all_changelog.yml | 60 +++++++++++++++++++ html/changelogs/Jarcolr-PR-8968.yml | 6 -- .../PsiOmegaDelta-AirlockPressure.yml | 4 -- html/changelogs/PsiOmegaDelta-PR-8905.yml | 6 -- html/changelogs/PsiOmegaDelta-PR-8996.yml | 4 -- html/changelogs/PsiOmegaDelta.yml | 5 +- html/changelogs/RavingManiac-dev-2.yml | 35 ----------- html/changelogs/RavingManiac-master.yml | 5 -- html/changelogs/Yoshax-ICanIntoSurgery.YML | 5 -- html/changelogs/Yoshax-LoadoutPoints.YML | 5 -- .../Yoshax-MoreFunPracticeShoot.YML | 8 --- html/changelogs/Yoshax-OpenPls.YML | 5 -- html/changelogs/kelenius-PR-8991.yml | 40 ------------- 14 files changed, 107 insertions(+), 127 deletions(-) delete mode 100644 html/changelogs/Jarcolr-PR-8968.yml delete mode 100644 html/changelogs/PsiOmegaDelta-AirlockPressure.yml delete mode 100644 html/changelogs/PsiOmegaDelta-PR-8905.yml delete mode 100644 html/changelogs/PsiOmegaDelta-PR-8996.yml delete mode 100644 html/changelogs/RavingManiac-dev-2.yml delete mode 100644 html/changelogs/RavingManiac-master.yml delete mode 100644 html/changelogs/Yoshax-ICanIntoSurgery.YML delete mode 100644 html/changelogs/Yoshax-LoadoutPoints.YML delete mode 100644 html/changelogs/Yoshax-MoreFunPracticeShoot.YML delete mode 100644 html/changelogs/Yoshax-OpenPls.YML delete mode 100644 html/changelogs/kelenius-PR-8991.yml diff --git a/html/changelog.html b/html/changelog.html index 308ecb672e..d83bfdb3d1 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -56,6 +56,52 @@ -->
+

28 April 2015

+

Jarcolr updated:

+
    +
  • Added 9 new bar sign designs/sprites.
  • +
+

Kelenius updated:

+
    +
  • Good news to the roboticists! The long waited firmware update for the bots has arrived. You can expect the following changes:
  • +
  • Medbots have improved the disease detection algorithms.
  • +
  • Floorbot firmware has been bugtested. In particular, they will no longer get stuck near the windows, hopelessly trying to fix the floor under the glass.
  • +
  • Floorbots have also received an internal low-power metal synthesizer. They will use it to make their own tiles. Slowly.
  • +
  • Following the complains from humanitarian organizations regarding securitron brutality, stength of their stunners has been toned down. They will also politely demand that you get on the floor before arresting you. Except for the taser-mounted guys, they will still tase you down.
  • +
  • Other minor fixes.
  • +
  • The lasertag bots are now forbidden to build and use following the incident #1526672. Please don't let it happen again.
  • +
  • The farmbot design has been finished! Made from a watertank, robot arm, plant analyzer, bucket, minihoe and a proximity sensor, these small (not really) bots will be a useful companion to any gardener and/or xenobotanist.
  • +
  • Spider learning alert: they have learned to recognize the bots and will mercilessly attack them.
  • +
  • An experimental CPU upgrade would theoretically allow any of the bots to function with the same intelligence capacity as the maintenance drones. We still have no idea what causes it to boot up. Science!
  • +
  • INCOMING TRANSMISSION: Greetings to agents, pirates, operatives, and anyone who otherwise uses our equipment. Following the NT update of bot firmware, we have updated the cryptographic sequencer's hacking routines as well. The medbots you emag will not poison you anymore, the clanbots won't clean after themselves immediately, and floorbots... wear a space suit. Oh, and it works on the new farmbots, too.
  • +
+

PsiOmegaDelta updated:

+
    +
  • Beware. Airlocks can now crush more things than just mobs.
  • +
  • AIs now have a personal atmospherics control subsystem.
  • +
  • Some borg modules now have additional subsystems.
  • +
  • Improves borg module handling.
  • +
  • Secure airlocks now buzz when access is denied.
  • +
  • The mental health office door now requires psychiatrist access, and the related button now opens/closes the door instead of bolting.
  • +
  • Restores an old soundtrack 'Thunderdome.ogg'.
  • +
  • Some holodeck programs now have custom ambience tracks.
  • +
+

RavingManiac updated:

+
    +
  • The phoron research lab has been renovated to include a heat-exchange system, a gas mixer/filter and a waste gas disposal pump.
  • +
  • Candles now burn for about 30 mintutes.
  • +
+

Yoshax updated:

+
    +
  • Adds items to the orderable antag surgical kit so its actually useful for surgery.
  • +
  • Adjusts custom loadout costs to be more standardised and balances. Purely cosmetic items, shoes, hats, and all things that do not provide a straight advtange (sterile mask, or pAI, protection from viruses and possible door hacking or records access, respectively), each cost 1 point, items that provide an advantage like those just mentioned, or provide armor or storage cost 2 points.
  • +
  • Adds practice rounds, both .45 for Sec and Detective's guns, also 9mm top mounted for the Saber, and for the Bulldog.
  • +
  • Adds the .45 and 9mm practice rounds to the armory.
  • +
  • Adds all the practice rounds to the autolathe.
  • +
  • Adds r_walls to the back of the firing range, leaves the sides normal.
  • +
  • Fixes HoS' office door to not be CMO locked.
  • +
+

24 April 2015

Dennok updated:

    diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index b1f2b697f9..dcdffbe25e 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -1608,3 +1608,63 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. - bugfix: Fixes overmap ship speed calculations. - rscadd: Adds overmap ship rotation. - rscadd: Added a floorlayer. +2015-04-28: + Jarcolr: + - rscadd: Added 9 new bar sign designs/sprites. + Kelenius: + - rscadd: 'Good news to the roboticists! The long waited firmware update for the + bots has arrived. You can expect the following changes:' + - rscadd: Medbots have improved the disease detection algorithms. + - rscadd: Floorbot firmware has been bugtested. In particular, they will no longer + get stuck near the windows, hopelessly trying to fix the floor under the glass. + - rscadd: Floorbots have also received an internal low-power metal synthesizer. + They will use it to make their own tiles. Slowly. + - rscadd: Following the complains from humanitarian organizations regarding securitron + brutality, stength of their stunners has been toned down. They will also politely + demand that you get on the floor before arresting you. Except for the taser-mounted + guys, they will still tase you down. + - rscadd: Other minor fixes. + - rscdel: 'The lasertag bots are now forbidden to build and use following the incident + #1526672. Please don''t let it happen again.' + - rscadd: The farmbot design has been finished! Made from a watertank, robot arm, + plant analyzer, bucket, minihoe and a proximity sensor, these small (not really) + bots will be a useful companion to any gardener and/or xenobotanist. + - tweak: 'Spider learning alert: they have learned to recognize the bots and will + mercilessly attack them.' + - rscadd: An experimental CPU upgrade would theoretically allow any of the bots + to function with the same intelligence capacity as the maintenance drones. We + still have no idea what causes it to boot up. Science! + - rscadd: 'INCOMING TRANSMISSION: Greetings to agents, pirates, operatives, and + anyone who otherwise uses our equipment. Following the NT update of bot firmware, + we have updated the cryptographic sequencer''s hacking routines as well. The + medbots you emag will not poison you anymore, the clanbots won''t clean after + themselves immediately, and floorbots... wear a space suit. Oh, and it works + on the new farmbots, too.' + PsiOmegaDelta: + - rscadd: Beware. Airlocks can now crush more things than just mobs. + - rscadd: AIs now have a personal atmospherics control subsystem. + - rscadd: Some borg modules now have additional subsystems. + - tweak: Improves borg module handling. + - tweak: Secure airlocks now buzz when access is denied. + - tweak: The mental health office door now requires psychiatrist access, and the + related button now opens/closes the door instead of bolting. + - soundadd: Restores an old soundtrack 'Thunderdome.ogg'. + - rscadd: Some holodeck programs now have custom ambience tracks. + RavingManiac: + - rscadd: The phoron research lab has been renovated to include a heat-exchange + system, a gas mixer/filter and a waste gas disposal pump. + - tweak: Candles now burn for about 30 mintutes. + Yoshax: + - tweak: Adds items to the orderable antag surgical kit so its actually useful for + surgery. + - tweak: Adjusts custom loadout costs to be more standardised and balances. Purely + cosmetic items, shoes, hats, and all things that do not provide a straight advtange + (sterile mask, or pAI, protection from viruses and possible door hacking or + records access, respectively), each cost 1 point, items that provide an advantage + like those just mentioned, or provide armor or storage cost 2 points. + - rscadd: Adds practice rounds, both .45 for Sec and Detective's guns, also 9mm + top mounted for the Saber, and for the Bulldog. + - rscadd: Adds the .45 and 9mm practice rounds to the armory. + - rscadd: Adds all the practice rounds to the autolathe. + - tweak: Adds r_walls to the back of the firing range, leaves the sides normal. + - bugfix: Fixes HoS' office door to not be CMO locked. diff --git a/html/changelogs/Jarcolr-PR-8968.yml b/html/changelogs/Jarcolr-PR-8968.yml deleted file mode 100644 index dd95d001b2..0000000000 --- a/html/changelogs/Jarcolr-PR-8968.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: Jarcolr - -delete-after: True - -changes: - - rscadd: "Added 9 new bar sign designs/sprites." \ No newline at end of file diff --git a/html/changelogs/PsiOmegaDelta-AirlockPressure.yml b/html/changelogs/PsiOmegaDelta-AirlockPressure.yml deleted file mode 100644 index 0f64ac3bd2..0000000000 --- a/html/changelogs/PsiOmegaDelta-AirlockPressure.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: PsiOmegaDelta -changes: - - rscadd: "Beware. Airlocks can now crush more things than just mobs." -delete-after: True diff --git a/html/changelogs/PsiOmegaDelta-PR-8905.yml b/html/changelogs/PsiOmegaDelta-PR-8905.yml deleted file mode 100644 index b984448b32..0000000000 --- a/html/changelogs/PsiOmegaDelta-PR-8905.yml +++ /dev/null @@ -1,6 +0,0 @@ -author: PsiOmegaDelta -delete-after: True -changes: - - rscadd: "AIs now have a personal atmospherics control subsystem." - - rscadd: "Some borg modules now have additional subsystems." - - tweak: "Improves borg module handling." diff --git a/html/changelogs/PsiOmegaDelta-PR-8996.yml b/html/changelogs/PsiOmegaDelta-PR-8996.yml deleted file mode 100644 index f2b71c0590..0000000000 --- a/html/changelogs/PsiOmegaDelta-PR-8996.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: PsiOmegaDelta -delete-after: True -changes: - - tweak: "Secure airlocks now buzz when access is denied." diff --git a/html/changelogs/PsiOmegaDelta.yml b/html/changelogs/PsiOmegaDelta.yml index 20e7f6d2c3..6fdea55f54 100644 --- a/html/changelogs/PsiOmegaDelta.yml +++ b/html/changelogs/PsiOmegaDelta.yml @@ -1,6 +1,3 @@ author: PsiOmegaDelta -changes: - - tweak: "The mental health office door now requires psychiatrist access, and the related button now opens/closes the door instead of bolting." - - soundadd: "Restores an old soundtrack 'Thunderdome.ogg'." - - rscadd: "Some holodeck programs now have custom ambience tracks." +changes: [] delete-after: false diff --git a/html/changelogs/RavingManiac-dev-2.yml b/html/changelogs/RavingManiac-dev-2.yml deleted file mode 100644 index ea89ad9923..0000000000 --- a/html/changelogs/RavingManiac-dev-2.yml +++ /dev/null @@ -1,35 +0,0 @@ -################################ -# Example Changelog File -# -# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. -# -# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) -# When it is, any changes listed below will disappear. -# -# Valid Prefixes: -# bugfix -# wip (For works in progress) -# tweak -# soundadd -# sounddel -# rscadd (general adding of nice things) -# rscdel (general deleting of nice things) -# imageadd -# imagedel -# spellcheck (typo fixes) -# experiment -################################# - -# Your name. -author: RavingManiac - -# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. -delete-after: True - -# Any changes you've made. See valid prefix list above. -# INDENT WITH TWO SPACES. NOT TABS. SPACES. -# SCREW THIS UP AND IT WON'T WORK. -# Also, this gets changed to [] after reading. Just remove the brackets when you add new shit. -# Please surround your changes in double quotes ("). It works without them, but if you use certain characters it screws up compiling. The quotes will not show up in the changelog. -changes: - - rscadd: "The phoron research lab has been renovated to include a heat-exchange system, a gas mixer/filter and a waste gas disposal pump." diff --git a/html/changelogs/RavingManiac-master.yml b/html/changelogs/RavingManiac-master.yml deleted file mode 100644 index 9d3ea70147..0000000000 --- a/html/changelogs/RavingManiac-master.yml +++ /dev/null @@ -1,5 +0,0 @@ -author: RavingManiac -delete-after: True - -changes: - - tweak: "Candles now burn for about 30 mintutes." diff --git a/html/changelogs/Yoshax-ICanIntoSurgery.YML b/html/changelogs/Yoshax-ICanIntoSurgery.YML deleted file mode 100644 index 9aa57af213..0000000000 --- a/html/changelogs/Yoshax-ICanIntoSurgery.YML +++ /dev/null @@ -1,5 +0,0 @@ -author: Yoshax -delete-after: True - -changes: - - tweak: "Adds items to the orderable antag surgical kit so its actually useful for surgery." \ No newline at end of file diff --git a/html/changelogs/Yoshax-LoadoutPoints.YML b/html/changelogs/Yoshax-LoadoutPoints.YML deleted file mode 100644 index 051e156a2d..0000000000 --- a/html/changelogs/Yoshax-LoadoutPoints.YML +++ /dev/null @@ -1,5 +0,0 @@ -author: Yoshax -delete-after: True - -changes: - - tweak: "Adjusts custom loadout costs to be more standardised and balances. Purely cosmetic items, shoes, hats, and all things that do not provide a straight advtange (sterile mask, or pAI, protection from viruses and possible door hacking or records access, respectively), each cost 1 point, items that provide an advantage like those just mentioned, or provide armor or storage cost 2 points." \ No newline at end of file diff --git a/html/changelogs/Yoshax-MoreFunPracticeShoot.YML b/html/changelogs/Yoshax-MoreFunPracticeShoot.YML deleted file mode 100644 index 0ee6e60259..0000000000 --- a/html/changelogs/Yoshax-MoreFunPracticeShoot.YML +++ /dev/null @@ -1,8 +0,0 @@ -author: Yoshax -delete-after: True - -changes: - - rscadd: "Adds practice rounds, both .45 for Sec and Detective's guns, also 9mm top mounted for the Saber, and for the Bulldog - - rscadd: "Adds the .45 and 9mm practice rounds to the armory." - - rscadd: "Adds all the practice rounds to the autolathe." - - tweak: "Adds r_walls to the back of the firing range, leaves the sides normal." diff --git a/html/changelogs/Yoshax-OpenPls.YML b/html/changelogs/Yoshax-OpenPls.YML deleted file mode 100644 index eb85bc81d8..0000000000 --- a/html/changelogs/Yoshax-OpenPls.YML +++ /dev/null @@ -1,5 +0,0 @@ -author: Yoshax -delete-after: True - -changes: - - bugfix: "Fixes HoS' office door to not be CMO locked." diff --git a/html/changelogs/kelenius-PR-8991.yml b/html/changelogs/kelenius-PR-8991.yml deleted file mode 100644 index f85183c240..0000000000 --- a/html/changelogs/kelenius-PR-8991.yml +++ /dev/null @@ -1,40 +0,0 @@ -################################ -# Example Changelog File -# -# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. -# -# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) -# When it is, any changes listed below will disappear. -# -# Valid Prefixes: -# bugfix -# wip (For works in progress) -# tweak -# soundadd -# sounddel -# rscadd (general adding of nice things) -# rscdel (general deleting of nice things) -# imageadd -# imagedel -# spellcheck (typo fixes) -# experiment -################################# - -# Your name. -author: Kelenius - -# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. -delete-after: True - -changes: - - rscadd: "Good news to the roboticists! The long waited firmware update for the bots has arrived. You can expect the following changes:" - - rscadd: "Medbots have improved the disease detection algorithms." - - rscadd: "Floorbot firmware has been bugtested. In particular, they will no longer get stuck near the windows, hopelessly trying to fix the floor under the glass." - - rscadd: "Floorbots have also received an internal low-power metal synthesizer. They will use it to make their own tiles. Slowly." - - rscadd: "Following the complains from humanitarian organizations regarding securitron brutality, stength of their stunners has been toned down. They will also politely demand that you get on the floor before arresting you. Except for the taser-mounted guys, they will still tase you down." - - rscadd: "Other minor fixes." - - rscdel: "The lasertag bots are now forbidden to build and use following the incident #1526672. Please don't let it happen again." - - scaadd: "The farmbot design has been finished! Made from a watertank, robot arm, plant analyzer, bucket, minihoe and a proximity sensor, these small (not really) bots will be a useful companion to any gardener and/or xenobotanist." - - tweak: "Spider learning alert: they have learned to recognize the bots and will mercilessly attack them." - - scadd: "An experimental CPU upgrade would theoretically allow any of the bots to function with the same intelligence capacity as the maintenance drones. We still have no idea what causes it to boot up. Science!" - - scadd: "INCOMING TRANSMISSION: Greetings to agents, pirates, operatives, and anyone who otherwise uses our equipment. Following the NT update of bot firmware, we have updated the cryptographic sequencer's hacking routines as well. The medbots you emag will not poison you anymore, the clanbots won't clean after themselves immediately, and floorbots... wear a space suit. Oh, and it works on the new farmbots, too." From 86d2fa5f612aff1fdc9ec0925c56d3d89231ddb0 Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Tue, 28 Apr 2015 09:04:00 +0200 Subject: [PATCH 14/15] Build fixes. --- code/game/objects/items/weapons/candle.dm | 1 - code/modules/paperwork/paper.dm | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/code/game/objects/items/weapons/candle.dm b/code/game/objects/items/weapons/candle.dm index dd00c02151..9bbdd1380d 100644 --- a/code/game/objects/items/weapons/candle.dm +++ b/code/game/objects/items/weapons/candle.dm @@ -10,7 +10,6 @@ /obj/item/weapon/flame/candle/New() wax = rand(800, 1000) // Enough for 27-33 minutes. 30 minutes on average. - starting_wax = wax ..() /obj/item/weapon/flame/candle/update_icon() diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm index 758ff353bc..31cb465923 100644 --- a/code/modules/paperwork/paper.dm +++ b/code/modules/paperwork/paper.dm @@ -340,7 +340,7 @@ usr << "There isn't enough space left on \the [src] to write anything." return - var/t = strip_html_simple(input("Enter what you want to write:", "Write", null, null) as message) + var/t = strip_html_properly(input("Enter what you want to write:", "Write", null, null) as message) if(!t) return From 185aadb5a9740c9af846fd6e99c57f373a8fd10b Mon Sep 17 00:00:00 2001 From: Kelenius Date: Tue, 28 Apr 2015 16:55:13 +0300 Subject: [PATCH 15/15] Chemistry recipes: absolute pathing --- code/modules/reagents/Chemistry-Recipes.dm | 3999 ++++++++++---------- 1 file changed, 2013 insertions(+), 1986 deletions(-) diff --git a/code/modules/reagents/Chemistry-Recipes.dm b/code/modules/reagents/Chemistry-Recipes.dm index 028834d9f1..d569061037 100644 --- a/code/modules/reagents/Chemistry-Recipes.dm +++ b/code/modules/reagents/Chemistry-Recipes.dm @@ -1,2253 +1,2280 @@ -/////////////////////////////////////////////////////////////////////////////////// -datum - chemical_reaction - var/name = null - var/id = null - var/result = null - var/resultcolor = null //for paint - var/list/required_reagents = new/list() - var/list/required_catalysts = new/list() - - // Both of these variables are mostly going to be used with slime cores - but if you want to, you can use them for other things - var/atom/required_container = null // the container required for the reaction to happen - var/required_other = 0 // an integer required for the reaction to happen - - var/result_amount = 0 - var/secondary = 0 // set to nonzero if secondary reaction - var/list/secondary_results = list() //additional reagents produced by the reaction - var/requires_heating = 0 - - proc - on_reaction(var/datum/reagents/holder, var/created_volume) - return - - //I recommend you set the result amount to the total volume of all components. - - explosion_potassium - name = "Explosion" - id = "explosion_potassium" - result = null - required_reagents = list("water" = 1, "potassium" = 1) - result_amount = 2 - on_reaction(var/datum/reagents/holder, var/created_volume) - var/datum/effect/effect/system/reagents_explosion/e = new() - e.set_up(round (created_volume/10, 1), holder.my_atom, 0, 0) - e.holder_damage(holder.my_atom) - if(isliving(holder.my_atom)) - e.amount *= 0.5 - var/mob/living/L = holder.my_atom - if(L.stat!=DEAD) - e.amount *= 0.5 - e.start() - holder.clear_reagents() - return - - emp_pulse - name = "EMP Pulse" - id = "emp_pulse" - result = null - required_reagents = list("uranium" = 1, "iron" = 1) // Yes, laugh, it's the best recipe I could think of that makes a little bit of sense - result_amount = 2 - - on_reaction(var/datum/reagents/holder, var/created_volume) - var/location = get_turf(holder.my_atom) - // 100 created volume = 4 heavy range & 7 light range. A few tiles smaller than traitor EMP grandes. - // 200 created volume = 8 heavy range & 14 light range. 4 tiles larger than traitor EMP grenades. - empulse(location, round(created_volume / 24), round(created_volume / 14), 1) - holder.clear_reagents() - return - - silicate - name = "Silicate" - id = "silicate" - result = "silicate" - required_reagents = list("aluminum" = 1, "silicon" = 1, "oxygen" = 1) - result_amount = 3 - - stoxin - name = "Soporific" - id = "stoxin" - result = "stoxin" - required_reagents = list("chloralhydrate" = 1, "sugar" = 4) - result_amount = 5 - - sterilizine - name = "Sterilizine" - id = "sterilizine" - result = "sterilizine" - required_reagents = list("ethanol" = 1, "anti_toxin" = 1, "chlorine" = 1) - result_amount = 3 - - inaprovaline - name = "Inaprovaline" - id = "inaprovaline" - result = "inaprovaline" - required_reagents = list("oxygen" = 1, "carbon" = 1, "sugar" = 1) - result_amount = 3 - - anti_toxin - name = "Dylovene" - id = "anti_toxin" - result = "anti_toxin" - required_reagents = list("silicon" = 1, "potassium" = 1, "nitrogen" = 1) - result_amount = 3 - - mutagen - name = "Unstable mutagen" - id = "mutagen" - result = "mutagen" - required_reagents = list("radium" = 1, "phosphorus" = 1, "chlorine" = 1) - result_amount = 3 - - tramadol - name = "Tramadol" - id = "tramadol" - result = "tramadol" - required_reagents = list("inaprovaline" = 1, "ethanol" = 1, "oxygen" = 1) - result_amount = 3 - - paracetamol - name = "Paracetamol" - id = "paracetamol" - result = "paracetamol" - required_reagents = list("tramadol" = 1, "sugar" = 1, "water" = 1) - result_amount = 3 - - oxycodone - name = "Oxycodone" - id = "oxycodone" - result = "oxycodone" - required_reagents = list("ethanol" = 1, "tramadol" = 1) - required_catalysts = list("phoron" = 1) - result_amount = 1 - - //cyanide - // name = "Cyanide" - // id = "cyanide" - // result = "cyanide" - // required_reagents = list("hydrogen" = 1, "carbon" = 1, "nitrogen" = 1) - // result_amount = 1 - - water //I can't believe we never had this. - name = "Water" - id = "water" - result = "water" - required_reagents = list("oxygen" = 1, "hydrogen" = 2) - result_amount = 1 - - thermite - name = "Thermite" - id = "thermite" - result = "thermite" - required_reagents = list("aluminum" = 1, "iron" = 1, "oxygen" = 1) - result_amount = 3 - - lexorin - name = "Lexorin" - id = "lexorin" - result = "lexorin" - required_reagents = list("phoron" = 1, "hydrogen" = 1, "nitrogen" = 1) - result_amount = 3 - - space_drugs - name = "Space Drugs" - id = "space_drugs" - result = "space_drugs" - required_reagents = list("mercury" = 1, "sugar" = 1, "lithium" = 1) - result_amount = 3 - - lube - name = "Space Lube" - id = "lube" - result = "lube" - required_reagents = list("water" = 1, "silicon" = 1, "oxygen" = 1) - result_amount = 4 - - pacid - name = "Polytrinic acid" - id = "pacid" - result = "pacid" - required_reagents = list("sacid" = 1, "chlorine" = 1, "potassium" = 1) - result_amount = 3 - - synaptizine - name = "Synaptizine" - id = "synaptizine" - result = "synaptizine" - required_reagents = list("sugar" = 1, "lithium" = 1, "water" = 1) - result_amount = 3 - - hyronalin - name = "Hyronalin" - id = "hyronalin" - result = "hyronalin" - required_reagents = list("radium" = 1, "anti_toxin" = 1) - result_amount = 2 - - arithrazine - name = "Arithrazine" - id = "arithrazine" - result = "arithrazine" - required_reagents = list("hyronalin" = 1, "hydrogen" = 1) - result_amount = 2 - - impedrezene - name = "Impedrezene" - id = "impedrezene" - result = "impedrezene" - required_reagents = list("mercury" = 1, "oxygen" = 1, "sugar" = 1) - result_amount = 2 - - kelotane - name = "Kelotane" - id = "kelotane" - result = "kelotane" - required_reagents = list("silicon" = 1, "carbon" = 1) - result_amount = 2 - - peridaxon - name = "Peridaxon" - id = "peridaxon" - result = "peridaxon" - required_reagents = list("bicaridine" = 2, "clonexadone" = 2) - required_catalysts = list("phoron" = 5) - result_amount = 2 - - leporazine - name = "Leporazine" - id = "leporazine" - result = "leporazine" - required_reagents = list("silicon" = 1, "copper" = 1) - required_catalysts = list("phoron" = 5) - result_amount = 2 - - cryptobiolin - name = "Cryptobiolin" - id = "cryptobiolin" - result = "cryptobiolin" - required_reagents = list("potassium" = 1, "oxygen" = 1, "sugar" = 1) - result_amount = 3 - - tricordrazine - name = "Tricordrazine" - id = "tricordrazine" - result = "tricordrazine" - required_reagents = list("inaprovaline" = 1, "anti_toxin" = 1) - result_amount = 2 - - alkysine - name = "Alkysine" - id = "alkysine" - result = "alkysine" - required_reagents = list("chlorine" = 1, "nitrogen" = 1, "anti_toxin" = 1) - result_amount = 2 - - dexalin - name = "Dexalin" - id = "dexalin" - result = "dexalin" - required_reagents = list("oxygen" = 2, "phoron" = 0.1) - required_catalysts = list("phoron" = 5) - result_amount = 1 - - dermaline - name = "Dermaline" - id = "dermaline" - result = "dermaline" - required_reagents = list("oxygen" = 1, "phosphorus" = 1, "kelotane" = 1) - result_amount = 3 - - dexalinp - name = "Dexalin Plus" - id = "dexalinp" - result = "dexalinp" - required_reagents = list("dexalin" = 1, "carbon" = 1, "iron" = 1) - result_amount = 3 - - bicaridine - name = "Bicaridine" - id = "bicaridine" - result = "bicaridine" - required_reagents = list("inaprovaline" = 1, "carbon" = 1) - result_amount = 2 - - hyperzine - name = "Hyperzine" - id = "hyperzine" - result = "hyperzine" - required_reagents = list("sugar" = 1, "phosphorus" = 1, "sulfur" = 1,) - result_amount = 3 - - ryetalyn - name = "Ryetalyn" - id = "ryetalyn" - result = "ryetalyn" - required_reagents = list("arithrazine" = 1, "carbon" = 1) - result_amount = 2 - - cryoxadone - name = "Cryoxadone" - id = "cryoxadone" - result = "cryoxadone" - required_reagents = list("dexalin" = 1, "water" = 1, "oxygen" = 1) - result_amount = 3 - - clonexadone - name = "Clonexadone" - id = "clonexadone" - result = "clonexadone" - required_reagents = list("cryoxadone" = 1, "sodium" = 1, "phoron" = 0.1) - required_catalysts = list("phoron" = 5) - result_amount = 2 - - spaceacillin - name = "Spaceacillin" - id = "spaceacillin" - result = "spaceacillin" - required_reagents = list("cryptobiolin" = 1, "inaprovaline" = 1) - result_amount = 2 - - imidazoline - name = "imidazoline" - id = "imidazoline" - result = "imidazoline" - required_reagents = list("carbon" = 1, "hydrogen" = 1, "anti_toxin" = 1) - result_amount = 2 - - ethylredoxrazine - name = "Ethylredoxrazine" - id = "ethylredoxrazine" - result = "ethylredoxrazine" - required_reagents = list("oxygen" = 1, "anti_toxin" = 1, "carbon" = 1) - result_amount = 3 - - ethanoloxidation - name = "ethanoloxidation" //Kind of a placeholder in case someone ever changes it so that chemicals - id = "ethanoloxidation" // react in the body. Also it would be silly if it didn't exist. - result = "water" - required_reagents = list("ethylredoxrazine" = 1, "ethanol" = 1) - result_amount = 2 - - glycerol - name = "Glycerol" - id = "glycerol" - result = "glycerol" - required_reagents = list("cornoil" = 3, "sacid" = 1) - result_amount = 1 - - nitroglycerin - name = "Nitroglycerin" - id = "nitroglycerin" - result = "nitroglycerin" - required_reagents = list("glycerol" = 1, "pacid" = 1, "sacid" = 1) - result_amount = 2 - on_reaction(var/datum/reagents/holder, var/created_volume) - var/datum/effect/effect/system/reagents_explosion/e = new() - e.set_up(round (created_volume/2, 1), holder.my_atom, 0, 0) - e.holder_damage(holder.my_atom) - if(isliving(holder.my_atom)) - e.amount *= 0.5 - var/mob/living/L = holder.my_atom - if(L.stat!=DEAD) - e.amount *= 0.5 - e.start() - - holder.clear_reagents() - return - - sodiumchloride - name = "Sodium Chloride" - id = "sodiumchloride" - result = "sodiumchloride" - required_reagents = list("sodium" = 1, "chlorine" = 1) - result_amount = 2 - - flash_powder - name = "Flash powder" - id = "flash_powder" - result = null - required_reagents = list("aluminum" = 1, "potassium" = 1, "sulfur" = 1 ) - result_amount = null - on_reaction(var/datum/reagents/holder, var/created_volume) - var/location = get_turf(holder.my_atom) - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread - s.set_up(2, 1, location) - s.start() - for(var/mob/living/carbon/M in viewers(world.view, location)) - switch(get_dist(M, location)) - if(0 to 3) - if(hasvar(M, "glasses")) - if(istype(M:glasses, /obj/item/clothing/glasses/sunglasses)) - continue - - flick("e_flash", M.flash) - M.Weaken(15) - - if(4 to 5) - if(hasvar(M, "glasses")) - if(istype(M:glasses, /obj/item/clothing/glasses/sunglasses)) - continue - - flick("e_flash", M.flash) - M.Stun(5) - - napalm - name = "Napalm" - id = "napalm" - result = null - required_reagents = list("aluminum" = 1, "phoron" = 1, "sacid" = 1 ) - result_amount = 1 - on_reaction(var/datum/reagents/holder, var/created_volume) - var/turf/location = get_turf(holder.my_atom.loc) - for(var/turf/simulated/floor/target_tile in range(0,location)) - target_tile.assume_gas("volatile_fuel", created_volume, 400+T0C) - spawn (0) target_tile.hotspot_expose(700, 400) - holder.del_reagent("napalm") - return - - /* - smoke - name = "Smoke" - id = "smoke" - result = null - required_reagents = list("potassium" = 1, "sugar" = 1, "phosphorus" = 1 ) - result_amount = null - secondary = 1 - on_reaction(var/datum/reagents/holder, var/created_volume) - var/location = get_turf(holder.my_atom) - var/datum/effect/system/bad_smoke_spread/S = new /datum/effect/system/bad_smoke_spread - S.attach(location) - S.set_up(10, 0, location) - playsound(location, 'sound/effects/smoke.ogg', 50, 1, -3) - spawn(0) - S.start() - sleep(10) - S.start() - sleep(10) - S.start() - sleep(10) - S.start() - sleep(10) - S.start() - holder.clear_reagents() - return */ - - chemsmoke - name = "Chemsmoke" - id = "chemsmoke" - result = null - required_reagents = list("potassium" = 1, "sugar" = 1, "phosphorus" = 1) - result_amount = 0.4 - secondary = 1 - on_reaction(var/datum/reagents/holder, var/created_volume) - var/location = get_turf(holder.my_atom) - var/datum/effect/effect/system/smoke_spread/chem/S = new /datum/effect/effect/system/smoke_spread/chem - S.attach(location) - S.set_up(holder, created_volume, 0, location) - playsound(location, 'sound/effects/smoke.ogg', 50, 1, -3) - spawn(0) - S.start() - holder.clear_reagents() - return - - chloralhydrate - name = "Chloral Hydrate" - id = "chloralhydrate" - result = "chloralhydrate" - required_reagents = list("ethanol" = 1, "chlorine" = 3, "water" = 1) - result_amount = 1 - - potassium_chloride - name = "Potassium Chloride" - id = "potassium_chloride" - result = "potassium_chloride" - required_reagents = list("sodiumchloride" = 1, "potassium" = 1) - result_amount = 2 - - potassium_chlorophoride - name = "Potassium Chlorophoride" - id = "potassium_chlorophoride" - result = "potassium_chlorophoride" - required_reagents = list("potassium_chloride" = 1, "phoron" = 1, "chloralhydrate" = 1) - result_amount = 4 - - stoxin - name = "Soporific" - id = "stoxin" - result = "stoxin" - required_reagents = list("chloralhydrate" = 1, "sugar" = 4) - result_amount = 5 - - zombiepowder - name = "Zombie Powder" - id = "zombiepowder" - result = "zombiepowder" - required_reagents = list("carpotoxin" = 5, "stoxin" = 5, "copper" = 5) - result_amount = 2 - - rezadone - name = "Rezadone" - id = "rezadone" - result = "rezadone" - required_reagents = list("carpotoxin" = 1, "cryptobiolin" = 1, "copper" = 1) - result_amount = 3 - - mindbreaker - name = "Mindbreaker Toxin" - id = "mindbreaker" - result = "mindbreaker" - required_reagents = list("silicon" = 1, "hydrogen" = 1, "anti_toxin" = 1) - result_amount = 3 - - lipozine - name = "Lipozine" - id = "Lipozine" - result = "lipozine" - required_reagents = list("sodiumchloride" = 1, "ethanol" = 1, "radium" = 1) - result_amount = 3 - - phoronsolidification - name = "Solid Phoron" - id = "solidphoron" - result = null - required_reagents = list("iron" = 5, "frostoil" = 5, "phoron" = 20) - result_amount = 1 - on_reaction(var/datum/reagents/holder, var/created_volume) - var/location = get_turf(holder.my_atom) - new /obj/item/stack/sheet/mineral/phoron(location) - return - - plastication - name = "Plastic" - id = "solidplastic" - result = null - required_reagents = list("pacid" = 10, "plasticide" = 20) - result_amount = 1 - on_reaction(var/datum/reagents/holder) - new /obj/item/stack/sheet/mineral/plastic(get_turf(holder.my_atom),10) - return - - virus_food - name = "Virus Food" - id = "virusfood" - result = "virusfood" - required_reagents = list("water" = 1, "milk" = 1, "oxygen" = 1) - result_amount = 3 +/datum/chemical_reaction + var/name = null + var/id = null + var/result = null + var/resultcolor = null //for paint + var/list/required_reagents = new/list() + var/list/required_catalysts = new/list() + + // Both of these variables are mostly going to be used with slime cores - but if you want to, you can use them for other things + var/atom/required_container = null // the container required for the reaction to happen + var/required_other = 0 // an integer required for the reaction to happen + + var/result_amount = 0 + var/secondary = 0 // set to nonzero if secondary reaction + var/list/secondary_results = list() //additional reagents produced by the reaction + var/requires_heating = 0 + +/datum/chemical_reaction/proc/on_reaction(var/datum/reagents/holder, var/created_volume) + return + + //I recommend you set the result amount to the total volume of all components. + +/datum/chemical_reaction/explosion_potassium + name = "Explosion" + id = "explosion_potassium" + result = null + required_reagents = list("water" = 1, "potassium" = 1) + result_amount = 2 + +/datum/chemical_reaction/explosion_potassium/on_reaction(var/datum/reagents/holder, var/created_volume) + var/datum/effect/effect/system/reagents_explosion/e = new() + e.set_up(round (created_volume/10, 1), holder.my_atom, 0, 0) + e.holder_damage(holder.my_atom) + if(isliving(holder.my_atom)) + e.amount *= 0.5 + var/mob/living/L = holder.my_atom + if(L.stat!=DEAD) + e.amount *= 0.5 + e.start() + holder.clear_reagents() + return + +/datum/chemical_reaction/emp_pulse + name = "EMP Pulse" + id = "emp_pulse" + result = null + required_reagents = list("uranium" = 1, "iron" = 1) // Yes, laugh, it's the best recipe I could think of that makes a little bit of sense + result_amount = 2 + +/datum/chemical_reaction/emp_pulse/on_reaction(var/datum/reagents/holder, var/created_volume) + var/location = get_turf(holder.my_atom) + // 100 created volume = 4 heavy range & 7 light range. A few tiles smaller than traitor EMP grandes. + // 200 created volume = 8 heavy range & 14 light range. 4 tiles larger than traitor EMP grenades. + empulse(location, round(created_volume / 24), round(created_volume / 14), 1) + holder.clear_reagents() + return + +/datum/chemical_reaction/silicate + name = "Silicate" + id = "silicate" + result = "silicate" + required_reagents = list("aluminum" = 1, "silicon" = 1, "oxygen" = 1) + result_amount = 3 + +/datum/chemical_reaction/stoxin + name = "Soporific" + id = "stoxin" + result = "stoxin" + required_reagents = list("chloralhydrate" = 1, "sugar" = 4) + result_amount = 5 + +/datum/chemical_reaction/sterilizine + name = "Sterilizine" + id = "sterilizine" + result = "sterilizine" + required_reagents = list("ethanol" = 1, "anti_toxin" = 1, "chlorine" = 1) + result_amount = 3 + +/datum/chemical_reaction/inaprovaline + name = "Inaprovaline" + id = "inaprovaline" + result = "inaprovaline" + required_reagents = list("oxygen" = 1, "carbon" = 1, "sugar" = 1) + result_amount = 3 + +/datum/chemical_reaction/anti_toxin + name = "Dylovene" + id = "anti_toxin" + result = "anti_toxin" + required_reagents = list("silicon" = 1, "potassium" = 1, "nitrogen" = 1) + result_amount = 3 + +/datum/chemical_reaction/mutagen + name = "Unstable mutagen" + id = "mutagen" + result = "mutagen" + required_reagents = list("radium" = 1, "phosphorus" = 1, "chlorine" = 1) + result_amount = 3 + +/datum/chemical_reaction/tramadol + name = "Tramadol" + id = "tramadol" + result = "tramadol" + required_reagents = list("inaprovaline" = 1, "ethanol" = 1, "oxygen" = 1) + result_amount = 3 + +/datum/chemical_reaction/paracetamol + name = "Paracetamol" + id = "paracetamol" + result = "paracetamol" + required_reagents = list("tramadol" = 1, "sugar" = 1, "water" = 1) + result_amount = 3 + +/datum/chemical_reaction/oxycodone + name = "Oxycodone" + id = "oxycodone" + result = "oxycodone" + required_reagents = list("ethanol" = 1, "tramadol" = 1) + required_catalysts = list("phoron" = 1) + result_amount = 1 + +//cyanide +// name = "Cyanide" +// id = "cyanide" +// result = "cyanide" +// required_reagents = list("hydrogen" = 1, "carbon" = 1, "nitrogen" = 1) +// result_amount = 1 + +/datum/chemical_reaction/water //I can't believe we never had this. + name = "Water" + id = "water" + result = "water" + required_reagents = list("oxygen" = 1, "hydrogen" = 2) + result_amount = 1 + +/datum/chemical_reaction/thermite + name = "Thermite" + id = "thermite" + result = "thermite" + required_reagents = list("aluminum" = 1, "iron" = 1, "oxygen" = 1) + result_amount = 3 + +/datum/chemical_reaction/lexorin + name = "Lexorin" + id = "lexorin" + result = "lexorin" + required_reagents = list("phoron" = 1, "hydrogen" = 1, "nitrogen" = 1) + result_amount = 3 + +/datum/chemical_reaction/space_drugs + name = "Space Drugs" + id = "space_drugs" + result = "space_drugs" + required_reagents = list("mercury" = 1, "sugar" = 1, "lithium" = 1) + result_amount = 3 + +/datum/chemical_reaction/lube + name = "Space Lube" + id = "lube" + result = "lube" + required_reagents = list("water" = 1, "silicon" = 1, "oxygen" = 1) + result_amount = 4 + +/datum/chemical_reaction/pacid + name = "Polytrinic acid" + id = "pacid" + result = "pacid" + required_reagents = list("sacid" = 1, "chlorine" = 1, "potassium" = 1) + result_amount = 3 + +/datum/chemical_reaction/synaptizine + name = "Synaptizine" + id = "synaptizine" + result = "synaptizine" + required_reagents = list("sugar" = 1, "lithium" = 1, "water" = 1) + result_amount = 3 + +/datum/chemical_reaction/hyronalin + name = "Hyronalin" + id = "hyronalin" + result = "hyronalin" + required_reagents = list("radium" = 1, "anti_toxin" = 1) + result_amount = 2 + +/datum/chemical_reaction/arithrazine + name = "Arithrazine" + id = "arithrazine" + result = "arithrazine" + required_reagents = list("hyronalin" = 1, "hydrogen" = 1) + result_amount = 2 + +/datum/chemical_reaction/impedrezene + name = "Impedrezene" + id = "impedrezene" + result = "impedrezene" + required_reagents = list("mercury" = 1, "oxygen" = 1, "sugar" = 1) + result_amount = 2 + +/datum/chemical_reaction/kelotane + name = "Kelotane" + id = "kelotane" + result = "kelotane" + required_reagents = list("silicon" = 1, "carbon" = 1) + result_amount = 2 + +/datum/chemical_reaction/peridaxon + name = "Peridaxon" + id = "peridaxon" + result = "peridaxon" + required_reagents = list("bicaridine" = 2, "clonexadone" = 2) + required_catalysts = list("phoron" = 5) + result_amount = 2 + +/datum/chemical_reaction/leporazine + name = "Leporazine" + id = "leporazine" + result = "leporazine" + required_reagents = list("silicon" = 1, "copper" = 1) + required_catalysts = list("phoron" = 5) + result_amount = 2 + +/datum/chemical_reaction/cryptobiolin + name = "Cryptobiolin" + id = "cryptobiolin" + result = "cryptobiolin" + required_reagents = list("potassium" = 1, "oxygen" = 1, "sugar" = 1) + result_amount = 3 + +/datum/chemical_reaction/tricordrazine + name = "Tricordrazine" + id = "tricordrazine" + result = "tricordrazine" + required_reagents = list("inaprovaline" = 1, "anti_toxin" = 1) + result_amount = 2 + +/datum/chemical_reaction/alkysine + name = "Alkysine" + id = "alkysine" + result = "alkysine" + required_reagents = list("chlorine" = 1, "nitrogen" = 1, "anti_toxin" = 1) + result_amount = 2 + +/datum/chemical_reaction/dexalin + name = "Dexalin" + id = "dexalin" + result = "dexalin" + required_reagents = list("oxygen" = 2, "phoron" = 0.1) + required_catalysts = list("phoron" = 5) + result_amount = 1 + +/datum/chemical_reaction/dermaline + name = "Dermaline" + id = "dermaline" + result = "dermaline" + required_reagents = list("oxygen" = 1, "phosphorus" = 1, "kelotane" = 1) + result_amount = 3 + +/datum/chemical_reaction/dexalinp + name = "Dexalin Plus" + id = "dexalinp" + result = "dexalinp" + required_reagents = list("dexalin" = 1, "carbon" = 1, "iron" = 1) + result_amount = 3 + +/datum/chemical_reaction/bicaridine + name = "Bicaridine" + id = "bicaridine" + result = "bicaridine" + required_reagents = list("inaprovaline" = 1, "carbon" = 1) + result_amount = 2 + +/datum/chemical_reaction/hyperzine + name = "Hyperzine" + id = "hyperzine" + result = "hyperzine" + required_reagents = list("sugar" = 1, "phosphorus" = 1, "sulfur" = 1,) + result_amount = 3 + +/datum/chemical_reaction/ryetalyn + name = "Ryetalyn" + id = "ryetalyn" + result = "ryetalyn" + required_reagents = list("arithrazine" = 1, "carbon" = 1) + result_amount = 2 + +/datum/chemical_reaction/cryoxadone + name = "Cryoxadone" + id = "cryoxadone" + result = "cryoxadone" + required_reagents = list("dexalin" = 1, "water" = 1, "oxygen" = 1) + result_amount = 3 + +/datum/chemical_reaction/clonexadone + name = "Clonexadone" + id = "clonexadone" + result = "clonexadone" + required_reagents = list("cryoxadone" = 1, "sodium" = 1, "phoron" = 0.1) + required_catalysts = list("phoron" = 5) + result_amount = 2 + +/datum/chemical_reaction/spaceacillin + name = "Spaceacillin" + id = "spaceacillin" + result = "spaceacillin" + required_reagents = list("cryptobiolin" = 1, "inaprovaline" = 1) + result_amount = 2 + +/datum/chemical_reaction/imidazoline + name = "imidazoline" + id = "imidazoline" + result = "imidazoline" + required_reagents = list("carbon" = 1, "hydrogen" = 1, "anti_toxin" = 1) + result_amount = 2 + +/datum/chemical_reaction/ethylredoxrazine + name = "Ethylredoxrazine" + id = "ethylredoxrazine" + result = "ethylredoxrazine" + required_reagents = list("oxygen" = 1, "anti_toxin" = 1, "carbon" = 1) + result_amount = 3 + +/datum/chemical_reaction/ethanoloxidation + name = "ethanoloxidation" //Kind of a placeholder in case someone ever changes it so that chemicals + id = "ethanoloxidation" // react in the body. Also it would be silly if it didn't exist. + result = "water" + required_reagents = list("ethylredoxrazine" = 1, "ethanol" = 1) + result_amount = 2 + +/datum/chemical_reaction/glycerol + name = "Glycerol" + id = "glycerol" + result = "glycerol" + required_reagents = list("cornoil" = 3, "sacid" = 1) + result_amount = 1 + +/datum/chemical_reaction/nitroglycerin + name = "Nitroglycerin" + id = "nitroglycerin" + result = "nitroglycerin" + required_reagents = list("glycerol" = 1, "pacid" = 1, "sacid" = 1) + result_amount = 2 + +/datum/chemical_reaction/nitroglycerin/on_reaction(var/datum/reagents/holder, var/created_volume) + var/datum/effect/effect/system/reagents_explosion/e = new() + e.set_up(round (created_volume/2, 1), holder.my_atom, 0, 0) + e.holder_damage(holder.my_atom) + if(isliving(holder.my_atom)) + e.amount *= 0.5 + var/mob/living/L = holder.my_atom + if(L.stat!=DEAD) + e.amount *= 0.5 + e.start() + + holder.clear_reagents() + return + +/datum/chemical_reaction/sodiumchloride + name = "Sodium Chloride" + id = "sodiumchloride" + result = "sodiumchloride" + required_reagents = list("sodium" = 1, "chlorine" = 1) + result_amount = 2 + +/datum/chemical_reaction/flash_powder + name = "Flash powder" + id = "flash_powder" + result = null + required_reagents = list("aluminum" = 1, "potassium" = 1, "sulfur" = 1 ) + result_amount = null + +/datum/chemical_reaction/flash_powder/on_reaction(var/datum/reagents/holder, var/created_volume) + var/location = get_turf(holder.my_atom) + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + s.set_up(2, 1, location) + s.start() + for(var/mob/living/carbon/M in viewers(world.view, location)) + switch(get_dist(M, location)) + if(0 to 3) + if(hasvar(M, "glasses")) + if(istype(M:glasses, /obj/item/clothing/glasses/sunglasses)) + continue + + flick("e_flash", M.flash) + M.Weaken(15) + + if(4 to 5) + if(hasvar(M, "glasses")) + if(istype(M:glasses, /obj/item/clothing/glasses/sunglasses)) + continue + + flick("e_flash", M.flash) + M.Stun(5) + +/datum/chemical_reaction/napalm + name = "Napalm" + id = "napalm" + result = null + required_reagents = list("aluminum" = 1, "phoron" = 1, "sacid" = 1 ) + result_amount = 1 + +/datum/chemical_reaction/napalm/on_reaction(var/datum/reagents/holder, var/created_volume) + var/turf/location = get_turf(holder.my_atom.loc) + for(var/turf/simulated/floor/target_tile in range(0,location)) + target_tile.assume_gas("volatile_fuel", created_volume, 400+T0C) + spawn (0) target_tile.hotspot_expose(700, 400) + holder.del_reagent("napalm") + return + /* - mix_virus - name = "Mix Virus" - id = "mixvirus" - result = "blood" - required_reagents = list("virusfood" = 5) - required_catalysts = list("blood") - var/level = 2 +/datum/chemical_reaction/smoke + name = "Smoke" + id = "smoke" + result = null + required_reagents = list("potassium" = 1, "sugar" = 1, "phosphorus" = 1 ) + result_amount = null + secondary = 1 + on_reaction(var/datum/reagents/holder, var/created_volume) + var/location = get_turf(holder.my_atom) + var/datum/effect/system/bad_smoke_spread/S = new /datum/effect/system/bad_smoke_spread + S.attach(location) + S.set_up(10, 0, location) + playsound(location, 'sound/effects/smoke.ogg', 50, 1, -3) + spawn(0) + S.start() + sleep(10) + S.start() + sleep(10) + S.start() + sleep(10) + S.start() + sleep(10) + S.start() + holder.clear_reagents() + return */ - on_reaction(var/datum/reagents/holder, var/created_volume) +/datum/chemical_reaction/chemsmoke + name = "Chemsmoke" + id = "chemsmoke" + result = null + required_reagents = list("potassium" = 1, "sugar" = 1, "phosphorus" = 1) + result_amount = 0.4 + secondary = 1 - var/datum/reagent/blood/B = locate(/datum/reagent/blood) in holder.reagent_list - if(B && B.data) - var/datum/disease/advance/D = locate(/datum/disease/advance) in B.data["viruses"] - if(D) - D.Evolve(level - rand(0, 1)) +/datum/chemical_reaction/chemsmoke/on_reaction(var/datum/reagents/holder, var/created_volume) + var/location = get_turf(holder.my_atom) + var/datum/effect/effect/system/smoke_spread/chem/S = new /datum/effect/effect/system/smoke_spread/chem + S.attach(location) + S.set_up(holder, created_volume, 0, location) + playsound(location, 'sound/effects/smoke.ogg', 50, 1, -3) + spawn(0) + S.start() + holder.clear_reagents() + return + +/datum/chemical_reaction/chloralhydrate + name = "Chloral Hydrate" + id = "chloralhydrate" + result = "chloralhydrate" + required_reagents = list("ethanol" = 1, "chlorine" = 3, "water" = 1) + result_amount = 1 + +/datum/chemical_reaction/potassium_chloride + name = "Potassium Chloride" + id = "potassium_chloride" + result = "potassium_chloride" + required_reagents = list("sodiumchloride" = 1, "potassium" = 1) + result_amount = 2 + +/datum/chemical_reaction/potassium_chlorophoride + name = "Potassium Chlorophoride" + id = "potassium_chlorophoride" + result = "potassium_chlorophoride" + required_reagents = list("potassium_chloride" = 1, "phoron" = 1, "chloralhydrate" = 1) + result_amount = 4 + +/datum/chemical_reaction/stoxin + name = "Soporific" + id = "stoxin" + result = "stoxin" + required_reagents = list("chloralhydrate" = 1, "sugar" = 4) + result_amount = 5 + +/datum/chemical_reaction/zombiepowder + name = "Zombie Powder" + id = "zombiepowder" + result = "zombiepowder" + required_reagents = list("carpotoxin" = 5, "stoxin" = 5, "copper" = 5) + result_amount = 2 + +/datum/chemical_reaction/rezadone + name = "Rezadone" + id = "rezadone" + result = "rezadone" + required_reagents = list("carpotoxin" = 1, "cryptobiolin" = 1, "copper" = 1) + result_amount = 3 + +/datum/chemical_reaction/mindbreaker + name = "Mindbreaker Toxin" + id = "mindbreaker" + result = "mindbreaker" + required_reagents = list("silicon" = 1, "hydrogen" = 1, "anti_toxin" = 1) + result_amount = 3 + +/datum/chemical_reaction/lipozine + name = "Lipozine" + id = "Lipozine" + result = "lipozine" + required_reagents = list("sodiumchloride" = 1, "ethanol" = 1, "radium" = 1) + result_amount = 3 + +/datum/chemical_reaction/phoronsolidification + name = "Solid Phoron" + id = "solidphoron" + result = null + required_reagents = list("iron" = 5, "frostoil" = 5, "phoron" = 20) + result_amount = 1 + +/datum/chemical_reaction/phoronsolidification/on_reaction(var/datum/reagents/holder, var/created_volume) + var/location = get_turf(holder.my_atom) + new /obj/item/stack/sheet/mineral/phoron(location) + return + +/datum/chemical_reaction/plastication + name = "Plastic" + id = "solidplastic" + result = null + required_reagents = list("pacid" = 10, "plasticide" = 20) + result_amount = 1 + +/datum/chemical_reaction/plastication/on_reaction(var/datum/reagents/holder) + new /obj/item/stack/sheet/mineral/plastic(get_turf(holder.my_atom),10) + return + +/datum/chemical_reaction/virus_food + name = "Virus Food" + id = "virusfood" + result = "virusfood" + required_reagents = list("water" = 1, "milk" = 1, "oxygen" = 1) + result_amount = 3 +/* +/datum/chemical_reaction/mix_virus + name = "Mix Virus" + id = "mixvirus" + result = "blood" + required_reagents = list("virusfood" = 5) + required_catalysts = list("blood") + var/level = 2 + + on_reaction(var/datum/reagents/holder, var/created_volume) + + var/datum/reagent/blood/B = locate(/datum/reagent/blood) in holder.reagent_list + if(B && B.data) + var/datum/disease/advance/D = locate(/datum/disease/advance) in B.data["viruses"] + if(D) + D.Evolve(level - rand(0, 1)) - mix_virus_2 + mix_virus_2 - name = "Mix Virus 2" - id = "mixvirus2" - required_reagents = list("mutagen" = 5) - level = 4 + name = "Mix Virus 2" + id = "mixvirus2" + required_reagents = list("mutagen" = 5) + level = 4 - rem_virus + rem_virus - name = "Devolve Virus" - id = "remvirus" - required_reagents = list("synaptizine" = 5) + name = "Devolve Virus" + id = "remvirus" + required_reagents = list("synaptizine" = 5) - on_reaction(var/datum/reagents/holder, var/created_volume) + on_reaction(var/datum/reagents/holder, var/created_volume) - var/datum/reagent/blood/B = locate(/datum/reagent/blood) in holder.reagent_list - if(B && B.data) - var/datum/disease/advance/D = locate(/datum/disease/advance) in B.data["viruses"] - if(D) - D.Devolve() + var/datum/reagent/blood/B = locate(/datum/reagent/blood) in holder.reagent_list + if(B && B.data) + var/datum/disease/advance/D = locate(/datum/disease/advance) in B.data["viruses"] + if(D) + D.Devolve() */ - condensedcapsaicin - name = "Condensed Capsaicin" - id = "condensedcapsaicin" - result = "condensedcapsaicin" - required_reagents = list("capsaicin" = 2) - required_catalysts = list("phoron" = 5) - result_amount = 1 +/datum/chemical_reaction/condensedcapsaicin + name = "Condensed Capsaicin" + id = "condensedcapsaicin" + result = "condensedcapsaicin" + required_reagents = list("capsaicin" = 2) + required_catalysts = list("phoron" = 5) + result_amount = 1 - ketchup - name = "Ketchup" - id = "ketchup" - result = "ketchup" - required_reagents = list("tomatojuice" = 2, "water" = 1, "sugar" = 1) - result_amount = 4 +/datum/chemical_reaction/ketchup + name = "Ketchup" + id = "ketchup" + result = "ketchup" + required_reagents = list("tomatojuice" = 2, "water" = 1, "sugar" = 1) + result_amount = 4 /////////////////////////////////////////////////////////////////////////////////// // foam and foam precursor - surfactant - name = "Foam surfactant" - id = "foam surfactant" - result = "fluorosurfactant" - required_reagents = list("fluorine" = 2, "carbon" = 2, "sacid" = 1) - result_amount = 5 +/datum/chemical_reaction/surfactant + name = "Foam surfactant" + id = "foam surfactant" + result = "fluorosurfactant" + required_reagents = list("fluorine" = 2, "carbon" = 2, "sacid" = 1) + result_amount = 5 - foam - name = "Foam" - id = "foam" - result = null - required_reagents = list("fluorosurfactant" = 1, "water" = 1) - result_amount = 2 +/datum/chemical_reaction/foam + name = "Foam" + id = "foam" + result = null + required_reagents = list("fluorosurfactant" = 1, "water" = 1) + result_amount = 2 - on_reaction(var/datum/reagents/holder, var/created_volume) +/datum/chemical_reaction/foam/on_reaction(var/datum/reagents/holder, var/created_volume) + + var/location = get_turf(holder.my_atom) + for(var/mob/M in viewers(5, location)) + M << "\red The solution violently bubbles!" + + location = get_turf(holder.my_atom) + + for(var/mob/M in viewers(5, location)) + M << "\red The solution spews out foam!" + + //world << "Holder volume is [holder.total_volume]" + //for(var/datum/reagent/R in holder.reagent_list) + // world << "[R.name] = [R.volume]" + + var/datum/effect/effect/system/foam_spread/s = new() + s.set_up(created_volume, location, holder, 0) + s.start() + holder.clear_reagents() + return + +/datum/chemical_reaction/metalfoam + name = "Metal Foam" + id = "metalfoam" + result = null + required_reagents = list("aluminum" = 3, "foaming_agent" = 1, "pacid" = 1) + result_amount = 5 + +/datum/chemical_reaction/metalfoam/on_reaction(var/datum/reagents/holder, var/created_volume) - var/location = get_turf(holder.my_atom) - for(var/mob/M in viewers(5, location)) - M << "\red The solution violently bubbles!" + var/location = get_turf(holder.my_atom) - location = get_turf(holder.my_atom) + for(var/mob/M in viewers(5, location)) + M << "\red The solution spews out a metalic foam!" - for(var/mob/M in viewers(5, location)) - M << "\red The solution spews out foam!" + var/datum/effect/effect/system/foam_spread/s = new() + s.set_up(created_volume, location, holder, 1) + s.start() + return - //world << "Holder volume is [holder.total_volume]" - //for(var/datum/reagent/R in holder.reagent_list) - // world << "[R.name] = [R.volume]" +/datum/chemical_reaction/ironfoam + name = "Iron Foam" + id = "ironlfoam" + result = null + required_reagents = list("iron" = 3, "foaming_agent" = 1, "pacid" = 1) + result_amount = 5 - var/datum/effect/effect/system/foam_spread/s = new() - s.set_up(created_volume, location, holder, 0) - s.start() - holder.clear_reagents() - return - - metalfoam - name = "Metal Foam" - id = "metalfoam" - result = null - required_reagents = list("aluminum" = 3, "foaming_agent" = 1, "pacid" = 1) - result_amount = 5 - - on_reaction(var/datum/reagents/holder, var/created_volume) +/datum/chemical_reaction/ironfoam/on_reaction(var/datum/reagents/holder, var/created_volume) - var/location = get_turf(holder.my_atom) + var/location = get_turf(holder.my_atom) - for(var/mob/M in viewers(5, location)) - M << "\red The solution spews out a metalic foam!" + for(var/mob/M in viewers(5, location)) + M << "\red The solution spews out a metalic foam!" - var/datum/effect/effect/system/foam_spread/s = new() - s.set_up(created_volume, location, holder, 1) - s.start() - return - - ironfoam - name = "Iron Foam" - id = "ironlfoam" - result = null - required_reagents = list("iron" = 3, "foaming_agent" = 1, "pacid" = 1) - result_amount = 5 - - on_reaction(var/datum/reagents/holder, var/created_volume) - - - var/location = get_turf(holder.my_atom) - - for(var/mob/M in viewers(5, location)) - M << "\red The solution spews out a metalic foam!" - - var/datum/effect/effect/system/foam_spread/s = new() - s.set_up(created_volume, location, holder, 2) - s.start() - return + var/datum/effect/effect/system/foam_spread/s = new() + s.set_up(created_volume, location, holder, 2) + s.start() + return - foaming_agent - name = "Foaming Agent" - id = "foaming_agent" - result = "foaming_agent" - required_reagents = list("lithium" = 1, "hydrogen" = 1) - result_amount = 1 +/datum/chemical_reaction/foaming_agent + name = "Foaming Agent" + id = "foaming_agent" + result = "foaming_agent" + required_reagents = list("lithium" = 1, "hydrogen" = 1) + result_amount = 1 - // Synthesizing these three chemicals is pretty complex in real life, but fuck it, it's just a game! - ammonia - name = "Ammonia" - id = "ammonia" - result = "ammonia" - required_reagents = list("hydrogen" = 3, "nitrogen" = 1) - result_amount = 3 +// Synthesizing these three chemicals is pretty complex in real life, but fuck it, it's just a game! +/datum/chemical_reaction/ammonia + name = "Ammonia" + id = "ammonia" + result = "ammonia" + required_reagents = list("hydrogen" = 3, "nitrogen" = 1) + result_amount = 3 - diethylamine - name = "Diethylamine" - id = "diethylamine" - result = "diethylamine" - required_reagents = list ("ammonia" = 1, "ethanol" = 1) - result_amount = 2 +/datum/chemical_reaction/diethylamine + name = "Diethylamine" + id = "diethylamine" + result = "diethylamine" + required_reagents = list ("ammonia" = 1, "ethanol" = 1) + result_amount = 2 - space_cleaner - name = "Space cleaner" - id = "cleaner" - result = "cleaner" - required_reagents = list("ammonia" = 1, "water" = 1) - result_amount = 2 +/datum/chemical_reaction/space_cleaner + name = "Space cleaner" + id = "cleaner" + result = "cleaner" + required_reagents = list("ammonia" = 1, "water" = 1) + result_amount = 2 - plantbgone - name = "Plant-B-Gone" - id = "plantbgone" - result = "plantbgone" - required_reagents = list("toxin" = 1, "water" = 4) - result_amount = 5 +/datum/chemical_reaction/plantbgone + name = "Plant-B-Gone" + id = "plantbgone" + result = "plantbgone" + required_reagents = list("toxin" = 1, "water" = 4) + result_amount = 5 /////////////////////////////////////OLD SLIME CORE REACTIONS /////////////////////////////// /* - slimepepper - name = "Slime Condensedcapaicin" - id = "m_condensedcapaicin" - result = "condensedcapsaicin" - required_reagents = list("sugar" = 1) - result_amount = 1 - required_container = /obj/item/slime_core - required_other = 1 - slimefrost - name = "Slime Frost Oil" - id = "m_frostoil" - result = "frostoil" - required_reagents = list("water" = 1) - result_amount = 1 - required_container = /obj/item/slime_core - required_other = 1 - slimeglycerol - name = "Slime Glycerol" - id = "m_glycerol" - result = "glycerol" - required_reagents = list("blood" = 1) - result_amount = 1 - required_container = /obj/item/slime_core - required_other = 1 +slimepepper + name = "Slime Condensedcapaicin" + id = "m_condensedcapaicin" + result = "condensedcapsaicin" + required_reagents = list("sugar" = 1) + result_amount = 1 + required_container = /obj/item/slime_core + required_other = 1 +slimefrost + name = "Slime Frost Oil" + id = "m_frostoil" + result = "frostoil" + required_reagents = list("water" = 1) + result_amount = 1 + required_container = /obj/item/slime_core + required_other = 1 +slimeglycerol + name = "Slime Glycerol" + id = "m_glycerol" + result = "glycerol" + required_reagents = list("blood" = 1) + result_amount = 1 + required_container = /obj/item/slime_core + required_other = 1 - slime_explosion - name = "Slime Explosion" - id = "m_explosion" - result = null - required_reagents = list("blood" = 1) - result_amount = 2 - required_container = /obj/item/slime_core - required_other = 2 - on_reaction(var/datum/reagents/holder, var/created_volume) - var/location = get_turf(holder.my_atom) - var/datum/effect/effect/system/reagents_explosion/e = new() - e.set_up(round (created_volume/10, 1), location, 0, 0) - e.start() +slime_explosion + name = "Slime Explosion" + id = "m_explosion" + result = null + required_reagents = list("blood" = 1) + result_amount = 2 + required_container = /obj/item/slime_core + required_other = 2 + on_reaction(var/datum/reagents/holder, var/created_volume) + var/location = get_turf(holder.my_atom) + var/datum/effect/effect/system/reagents_explosion/e = new() + e.set_up(round (created_volume/10, 1), location, 0, 0) + e.start() - holder.clear_reagents() - return - slimejam - name = "Slime Jam" - id = "m_jam" - result = "slimejelly" - required_reagents = list("water" = 1) - result_amount = 1 - required_container = /obj/item/slime_core - required_other = 2 - slimesynthi - name = "Slime Synthetic Flesh" - id = "m_flesh" - result = null - required_reagents = list("sugar" = 1) - result_amount = 1 - required_container = /obj/item/slime_core - required_other = 2 - on_reaction(var/datum/reagents/holder, var/created_volume) - var/location = get_turf(holder.my_atom) - new /obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh(location) - return + holder.clear_reagents() + return +slimejam + name = "Slime Jam" + id = "m_jam" + result = "slimejelly" + required_reagents = list("water" = 1) + result_amount = 1 + required_container = /obj/item/slime_core + required_other = 2 +slimesynthi + name = "Slime Synthetic Flesh" + id = "m_flesh" + result = null + required_reagents = list("sugar" = 1) + result_amount = 1 + required_container = /obj/item/slime_core + required_other = 2 + on_reaction(var/datum/reagents/holder, var/created_volume) + var/location = get_turf(holder.my_atom) + new /obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh(location) + return - slimeenzyme - name = "Slime Enzyme" - id = "m_enzyme" - result = "enzyme" - required_reagents = list("blood" = 1, "water" = 1) - result_amount = 2 - required_container = /obj/item/slime_core - required_other = 3 - slimeplasma - name = "Slime Plasma" - id = "m_plasma" - result = "plasma" - required_reagents = list("sugar" = 1, "blood" = 2) - result_amount = 2 - required_container = /obj/item/slime_core - required_other = 3 - slimevirus - name = "Slime Virus" - id = "m_virus" - result = null - required_reagents = list("sugar" = 1, "sacid" = 1) - result_amount = 2 - required_container = /obj/item/slime_core - required_other = 3 - on_reaction(var/datum/reagents/holder, var/created_volume) - holder.clear_reagents() +slimeenzyme + name = "Slime Enzyme" + id = "m_enzyme" + result = "enzyme" + required_reagents = list("blood" = 1, "water" = 1) + result_amount = 2 + required_container = /obj/item/slime_core + required_other = 3 +slimeplasma + name = "Slime Plasma" + id = "m_plasma" + result = "plasma" + required_reagents = list("sugar" = 1, "blood" = 2) + result_amount = 2 + required_container = /obj/item/slime_core + required_other = 3 +slimevirus + name = "Slime Virus" + id = "m_virus" + result = null + required_reagents = list("sugar" = 1, "sacid" = 1) + result_amount = 2 + required_container = /obj/item/slime_core + required_other = 3 + on_reaction(var/datum/reagents/holder, var/created_volume) + holder.clear_reagents() - var/virus = pick(/datum/disease/advance/flu, /datum/disease/advance/cold, \ - /datum/disease/pierrot_throat, /datum/disease/fake_gbs, \ - /datum/disease/brainrot, /datum/disease/magnitis) + var/virus = pick(/datum/disease/advance/flu, /datum/disease/advance/cold, \ + /datum/disease/pierrot_throat, /datum/disease/fake_gbs, \ + /datum/disease/brainrot, /datum/disease/magnitis) - var/datum/disease/F = new virus(0) - var/list/data = list("viruses"= list(F)) - holder.add_reagent("blood", 20, data) + var/datum/disease/F = new virus(0) + var/list/data = list("viruses"= list(F)) + holder.add_reagent("blood", 20, data) - holder.add_reagent("cyanide", rand(1,10)) + holder.add_reagent("cyanide", rand(1,10)) - return + return - slimeteleport - name = "Slime Teleport" - id = "m_tele" - result = null - required_reagents = list("pacid" = 2, "mutagen" = 2) - required_catalysts = list("plasma" = 1) - result_amount = 1 - required_container = /obj/item/slime_core - required_other = 4 - on_reaction(var/datum/reagents/holder, var/created_volume) +slimeteleport + name = "Slime Teleport" + id = "m_tele" + result = null + required_reagents = list("pacid" = 2, "mutagen" = 2) + required_catalysts = list("plasma" = 1) + result_amount = 1 + required_container = /obj/item/slime_core + required_other = 4 + on_reaction(var/datum/reagents/holder, var/created_volume) - // Calculate new position (searches through beacons in world) - var/obj/item/device/radio/beacon/chosen - var/list/possible = list() - for(var/obj/item/device/radio/beacon/W in world) - possible += W + // Calculate new position (searches through beacons in world) + var/obj/item/device/radio/beacon/chosen + var/list/possible = list() + for(var/obj/item/device/radio/beacon/W in world) + possible += W - if(possible.len > 0) - chosen = pick(possible) + if(possible.len > 0) + chosen = pick(possible) - if(chosen) - // Calculate previous position for transition + if(chosen) + // Calculate previous position for transition - var/turf/FROM = get_turf(holder.my_atom) // the turf of origin we're travelling FROM - var/turf/TO = get_turf(chosen) // the turf of origin we're travelling TO + var/turf/FROM = get_turf(holder.my_atom) // the turf of origin we're travelling FROM + var/turf/TO = get_turf(chosen) // the turf of origin we're travelling TO - playsound(TO, 'sound/effects/phasein.ogg', 100, 1) + playsound(TO, 'sound/effects/phasein.ogg', 100, 1) - var/list/flashers = list() - for(var/mob/living/carbon/human/M in viewers(TO, null)) - if(M:eyecheck() <= 0) - flick("e_flash", M.flash) - flashers += M + var/list/flashers = list() + for(var/mob/living/carbon/human/M in viewers(TO, null)) + if(M:eyecheck() <= 0) + flick("e_flash", M.flash) + flashers += M - var/y_distance = TO.y - FROM.y - var/x_distance = TO.x - FROM.x - for (var/atom/movable/A in range(2, FROM )) // iterate thru list of mobs in the area - if(istype(A, /obj/item/device/radio/beacon)) continue // don't teleport beacons because that's just insanely stupid - if( A.anchored && !istype(A, /mob/dead/observer) ) continue // don't teleport anchored things (computers, tables, windows, grilles, etc) because this causes problems! - // do teleport ghosts however because hell why not + var/y_distance = TO.y - FROM.y + var/x_distance = TO.x - FROM.x + for (var/atom/movable/A in range(2, FROM )) // iterate thru list of mobs in the area + if(istype(A, /obj/item/device/radio/beacon)) continue // don't teleport beacons because that's just insanely stupid + if( A.anchored && !istype(A, /mob/dead/observer) ) continue // don't teleport anchored things (computers, tables, windows, grilles, etc) because this causes problems! + // do teleport ghosts however because hell why not - var/turf/newloc = locate(A.x + x_distance, A.y + y_distance, TO.z) // calculate the new place - if(!A.Move(newloc)) // if the atom, for some reason, can't move, FORCE them to move! :) We try Move() first to invoke any movement-related checks the atom needs to perform after moving - A.loc = locate(A.x + x_distance, A.y + y_distance, TO.z) + var/turf/newloc = locate(A.x + x_distance, A.y + y_distance, TO.z) // calculate the new place + if(!A.Move(newloc)) // if the atom, for some reason, can't move, FORCE them to move! :) We try Move() first to invoke any movement-related checks the atom needs to perform after moving + A.loc = locate(A.x + x_distance, A.y + y_distance, TO.z) - spawn() - if(ismob(A) && !(A in flashers)) // don't flash if we're already doing an effect - var/mob/M = A - if(M.client) - var/obj/blueeffect = new /obj(src) - blueeffect.screen_loc = "WEST,SOUTH to EAST,NORTH" - blueeffect.icon = 'icons/effects/effects.dmi' - blueeffect.icon_state = "shieldsparkles" - blueeffect.layer = 17 - blueeffect.mouse_opacity = 0 - M.client.screen += blueeffect - sleep(20) - M.client.screen -= blueeffect - qdel(blueeffect) - slimecrit - name = "Slime Crit" - id = "m_tele" - result = null - required_reagents = list("sacid" = 1, "blood" = 1) - required_catalysts = list("plasma" = 1) - result_amount = 1 - required_container = /obj/item/slime_core - required_other = 4 - on_reaction(var/datum/reagents/holder, var/created_volume) + spawn() + if(ismob(A) && !(A in flashers)) // don't flash if we're already doing an effect + var/mob/M = A + if(M.client) + var/obj/blueeffect = new /obj(src) + blueeffect.screen_loc = "WEST,SOUTH to EAST,NORTH" + blueeffect.icon = 'icons/effects/effects.dmi' + blueeffect.icon_state = "shieldsparkles" + blueeffect.layer = 17 + blueeffect.mouse_opacity = 0 + M.client.screen += blueeffect + sleep(20) + M.client.screen -= blueeffect + qdel(blueeffect) +slimecrit + name = "Slime Crit" + id = "m_tele" + result = null + required_reagents = list("sacid" = 1, "blood" = 1) + required_catalysts = list("plasma" = 1) + result_amount = 1 + required_container = /obj/item/slime_core + required_other = 4 + on_reaction(var/datum/reagents/holder, var/created_volume) - 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/clown - )//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 + 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/clown + )//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) + 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) + for(var/mob/living/carbon/human/M in viewers(get_turf(holder.my_atom), null)) + if(M:eyecheck() <= 0) + flick("e_flash", M.flash) - for(var/i = 1, i <= created_volume, i++) - var/chosen = pick(critters) - var/mob/living/simple_animal/hostile/C = new chosen - C.loc = get_turf(holder.my_atom) - if(prob(50)) - for(var/j = 1, j <= rand(1, 3), j++) - step(C, pick(NORTH,SOUTH,EAST,WEST)) - slimebork - name = "Slime Bork" - id = "m_tele" - result = null - required_reagents = list("sugar" = 1, "water" = 1) - result_amount = 2 - required_container = /obj/item/slime_core - required_other = 4 - on_reaction(var/datum/reagents/holder, var/created_volume) + for(var/i = 1, i <= created_volume, i++) + var/chosen = pick(critters) + var/mob/living/simple_animal/hostile/C = new chosen + C.loc = get_turf(holder.my_atom) + if(prob(50)) + for(var/j = 1, j <= rand(1, 3), j++) + step(C, pick(NORTH,SOUTH,EAST,WEST)) +slimebork + name = "Slime Bork" + id = "m_tele" + result = null + required_reagents = list("sugar" = 1, "water" = 1) + result_amount = 2 + required_container = /obj/item/slime_core + required_other = 4 + on_reaction(var/datum/reagents/holder, var/created_volume) - var/list/borks = typesof(/obj/item/weapon/reagent_containers/food/snacks) - /obj/item/weapon/reagent_containers/food/snacks - // BORK BORK BORK + var/list/borks = typesof(/obj/item/weapon/reagent_containers/food/snacks) - /obj/item/weapon/reagent_containers/food/snacks + // BORK BORK BORK - playsound(get_turf(holder.my_atom), 'sound/effects/phasein.ogg', 100, 1) + 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) + for(var/mob/living/carbon/human/M in viewers(get_turf(holder.my_atom), null)) + if(M:eyecheck() <= 0) + flick("e_flash", M.flash) - for(var/i = 1, i <= created_volume + rand(1,2), i++) - var/chosen = pick(borks) - var/obj/B = new chosen - if(B) - B.loc = get_turf(holder.my_atom) - if(prob(50)) - for(var/j = 1, j <= rand(1, 3), j++) - step(B, pick(NORTH,SOUTH,EAST,WEST)) + for(var/i = 1, i <= created_volume + rand(1,2), i++) + var/chosen = pick(borks) + var/obj/B = new chosen + if(B) + B.loc = get_turf(holder.my_atom) + if(prob(50)) + for(var/j = 1, j <= rand(1, 3), j++) + step(B, pick(NORTH,SOUTH,EAST,WEST)) - slimechloral - name = "Slime Chloral" - id = "m_bunch" - result = "chloralhydrate" - required_reagents = list("blood" = 1, "water" = 2) - result_amount = 2 - required_container = /obj/item/slime_core - required_other = 5 - slimeretro - name = "Slime Retro" - id = "m_xeno" - result = null - required_reagents = list("sugar" = 1) - result_amount = 1 - required_container = /obj/item/slime_core - required_other = 5 - on_reaction(var/datum/reagents/holder, var/created_volume) - var/datum/disease/F = new /datum/disease/dna_retrovirus(0) - var/list/data = list("viruses"= list(F)) - holder.add_reagent("blood", 20, data) - slimefoam - name = "Slime Foam" - id = "m_foam" - result = null - required_reagents = list("sacid" = 1) - result_amount = 2 - required_container = /obj/item/slime_core - required_other = 5 +slimechloral + name = "Slime Chloral" + id = "m_bunch" + result = "chloralhydrate" + required_reagents = list("blood" = 1, "water" = 2) + result_amount = 2 + required_container = /obj/item/slime_core + required_other = 5 +slimeretro + name = "Slime Retro" + id = "m_xeno" + result = null + required_reagents = list("sugar" = 1) + result_amount = 1 + required_container = /obj/item/slime_core + required_other = 5 + on_reaction(var/datum/reagents/holder, var/created_volume) + var/datum/disease/F = new /datum/disease/dna_retrovirus(0) + var/list/data = list("viruses"= list(F)) + holder.add_reagent("blood", 20, data) +slimefoam + name = "Slime Foam" + id = "m_foam" + result = null + required_reagents = list("sacid" = 1) + result_amount = 2 + required_container = /obj/item/slime_core + required_other = 5 - on_reaction(var/datum/reagents/holder, var/created_volume) + on_reaction(var/datum/reagents/holder, var/created_volume) - var/location = get_turf(holder.my_atom) - for(var/mob/M in viewers(5, location)) - M << "\red The solution violently bubbles!" + var/location = get_turf(holder.my_atom) + for(var/mob/M in viewers(5, location)) + M << "\red The solution violently bubbles!" - location = get_turf(holder.my_atom) + location = get_turf(holder.my_atom) - for(var/mob/M in viewers(5, location)) - M << "\red The solution spews out foam!" + for(var/mob/M in viewers(5, location)) + M << "\red The solution spews out foam!" - //world << "Holder volume is [holder.total_volume]" - //for(var/datum/reagent/R in holder.reagent_list) - // world << "[R.name] = [R.volume]" + //world << "Holder volume is [holder.total_volume]" + //for(var/datum/reagent/R in holder.reagent_list) + // world << "[R.name] = [R.volume]" - var/datum/effect/effect/system/foam_spread/s = new() - s.set_up(created_volume, location, holder, 0) - s.start() - holder.clear_reagents() - return + var/datum/effect/effect/system/foam_spread/s = new() + s.set_up(created_volume, location, holder, 0) + s.start() + holder.clear_reagents() + return */ /////////////////////////////////////////////NEW SLIME CORE REACTIONS///////////////////////////////////////////// //Grey - slimespawn - name = "Slime Spawn" - id = "m_spawn" - result = null - required_reagents = list("phoron" = 5) - result_amount = 1 - required_container = /obj/item/slime_extract/grey - required_other = 1 - on_reaction(var/datum/reagents/holder) - for(var/mob/O in viewers(get_turf(holder.my_atom), null)) - O.show_message(text("\red Infused with phoron, the core begins to quiver and grow, and soon a new baby slime emerges from it!"), 1) - var/mob/living/carbon/slime/S = new /mob/living/carbon/slime - S.loc = get_turf(holder.my_atom) +/datum/chemical_reaction/slimespawn + name = "Slime Spawn" + id = "m_spawn" + result = null + required_reagents = list("phoron" = 5) + result_amount = 1 + required_container = /obj/item/slime_extract/grey + required_other = 1 + +/datum/chemical_reaction/slimespawn/on_reaction(var/datum/reagents/holder) + for(var/mob/O in viewers(get_turf(holder.my_atom), null)) + O.show_message(text("\red Infused with phoron, the core begins to quiver and grow, and soon a new baby slime emerges from it!"), 1) + var/mob/living/carbon/slime/S = new /mob/living/carbon/slime + S.loc = get_turf(holder.my_atom) - slimemonkey - name = "Slime Monkey" - id = "m_monkey" - result = null - required_reagents = list("blood" = 5) - result_amount = 1 - required_container = /obj/item/slime_extract/grey - required_other = 1 - on_reaction(var/datum/reagents/holder) - for(var/i = 1, i <= 3, i++) - var /obj/item/weapon/reagent_containers/food/snacks/monkeycube/M = new /obj/item/weapon/reagent_containers/food/snacks/monkeycube - M.loc = get_turf(holder.my_atom) +/datum/chemical_reaction/slimemonkey + name = "Slime Monkey" + id = "m_monkey" + result = null + required_reagents = list("blood" = 5) + result_amount = 1 + required_container = /obj/item/slime_extract/grey + required_other = 1 + +/datum/chemical_reaction/slimemonkey/on_reaction(var/datum/reagents/holder) + for(var/i = 1, i <= 3, i++) + var /obj/item/weapon/reagent_containers/food/snacks/monkeycube/M = new /obj/item/weapon/reagent_containers/food/snacks/monkeycube + M.loc = get_turf(holder.my_atom) //Green - slimemutate - name = "Mutation Toxin" - id = "mutationtoxin" - result = "mutationtoxin" - required_reagents = list("phoron" = 5) - result_amount = 1 - required_other = 1 - required_container = /obj/item/slime_extract/green +/datum/chemical_reaction/slimemutate + name = "Mutation Toxin" + id = "mutationtoxin" + result = "mutationtoxin" + required_reagents = list("phoron" = 5) + result_amount = 1 + required_other = 1 + required_container = /obj/item/slime_extract/green //Metal - slimemetal - name = "Slime Metal" - id = "m_metal" - result = null - required_reagents = list("phoron" = 5) - result_amount = 1 - required_container = /obj/item/slime_extract/metal - required_other = 1 - on_reaction(var/datum/reagents/holder) - var/obj/item/stack/sheet/metal/M = new /obj/item/stack/sheet/metal - M.amount = 15 - M.loc = get_turf(holder.my_atom) - var/obj/item/stack/sheet/plasteel/P = new /obj/item/stack/sheet/plasteel - P.amount = 5 - P.loc = get_turf(holder.my_atom) +/datum/chemical_reaction/slimemetal + name = "Slime Metal" + id = "m_metal" + result = null + required_reagents = list("phoron" = 5) + result_amount = 1 + required_container = /obj/item/slime_extract/metal + required_other = 1 + +/datum/chemical_reaction/slimemetal/on_reaction(var/datum/reagents/holder) + var/obj/item/stack/sheet/metal/M = new /obj/item/stack/sheet/metal + M.amount = 15 + M.loc = get_turf(holder.my_atom) + var/obj/item/stack/sheet/plasteel/P = new /obj/item/stack/sheet/plasteel + P.amount = 5 + P.loc = get_turf(holder.my_atom) //Gold - slimecrit - name = "Slime Crit" - id = "m_tele" - result = null - required_reagents = list("phoron" = 5) - result_amount = 1 - required_container = /obj/item/slime_extract/gold - required_other = 1 - on_reaction(var/datum/reagents/holder) +/datum/chemical_reaction/slimecrit + name = "Slime Crit" + id = "m_tele" + result = null + required_reagents = list("phoron" = 5) + result_amount = 1 + required_container = /obj/item/slime_extract/gold + required_other = 1 - /*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/faithless, - /mob/living/simple_animal/hostile/panther, - /mob/living/simple_animal/hostile/snake, - /mob/living/simple_animal/hostile/retaliate, - /mob/living/simple_animal/hostile/retaliate/clown - )//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 +/datum/chemical_reaction/slimecrit/on_reaction(var/datum/reagents/holder) - playsound(get_turf(holder.my_atom), 'sound/effects/phasein.ogg', 100, 1) + /*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/faithless, + /mob/living/simple_animal/hostile/panther, + /mob/living/simple_animal/hostile/snake, + /mob/living/simple_animal/hostile/retaliate, + /mob/living/simple_animal/hostile/retaliate/clown + )//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 - for(var/mob/living/carbon/human/M in viewers(get_turf(holder.my_atom), null)) - if(M:eyecheck() <= 0) - flick("e_flash", M.flash) + playsound(get_turf(holder.my_atom), 'sound/effects/phasein.ogg', 100, 1) - for(var/i = 1, i <= 5, i++) - var/chosen = pick(critters) - var/mob/living/simple_animal/hostile/C = new chosen - C.faction = "slimesummon" - C.loc = get_turf(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(holder.my_atom), null)) - O.show_message(text("\red The slime core fizzles disappointingly,"), 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) + + for(var/i = 1, i <= 5, i++) + var/chosen = pick(critters) + var/mob/living/simple_animal/hostile/C = new chosen + C.faction = "slimesummon" + C.loc = get_turf(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(holder.my_atom), null)) + O.show_message(text("\red The slime core fizzles disappointingly,"), 1) //Silver - slimebork - name = "Slime Bork" - id = "m_tele2" - result = null - required_reagents = list("phoron" = 5) - result_amount = 1 - required_container = /obj/item/slime_extract/silver - required_other = 1 - on_reaction(var/datum/reagents/holder) +/datum/chemical_reaction/slimebork + name = "Slime Bork" + id = "m_tele2" + result = null + required_reagents = list("phoron" = 5) + result_amount = 1 + required_container = /obj/item/slime_extract/silver + required_other = 1 - var/list/borks = typesof(/obj/item/weapon/reagent_containers/food/snacks) - /obj/item/weapon/reagent_containers/food/snacks - // BORK BORK BORK +/datum/chemical_reaction/slimebork/on_reaction(var/datum/reagents/holder) - playsound(get_turf(holder.my_atom), 'sound/effects/phasein.ogg', 100, 1) + var/list/borks = typesof(/obj/item/weapon/reagent_containers/food/snacks) - /obj/item/weapon/reagent_containers/food/snacks + // BORK BORK BORK - for(var/mob/living/carbon/human/M in viewers(get_turf(holder.my_atom), null)) - if(M:eyecheck() <= 0) - flick("e_flash", M.flash) + playsound(get_turf(holder.my_atom), 'sound/effects/phasein.ogg', 100, 1) - for(var/i = 1, i <= 4 + rand(1,2), i++) - var/chosen = pick(borks) - var/obj/B = new chosen - if(B) - B.loc = get_turf(holder.my_atom) - if(prob(50)) - for(var/j = 1, j <= rand(1, 3), j++) - step(B, pick(NORTH,SOUTH,EAST,WEST)) + for(var/mob/living/carbon/human/M in viewers(get_turf(holder.my_atom), null)) + if(M:eyecheck() <= 0) + flick("e_flash", M.flash) + + for(var/i = 1, i <= 4 + rand(1,2), i++) + var/chosen = pick(borks) + var/obj/B = new chosen + if(B) + B.loc = get_turf(holder.my_atom) + if(prob(50)) + for(var/j = 1, j <= rand(1, 3), j++) + step(B, pick(NORTH,SOUTH,EAST,WEST)) //Blue - slimefrost - name = "Slime Frost Oil" - id = "m_frostoil" - result = "frostoil" - required_reagents = list("phoron" = 5) - result_amount = 10 - required_container = /obj/item/slime_extract/blue - required_other = 1 +/datum/chemical_reaction/slimefrost + name = "Slime Frost Oil" + id = "m_frostoil" + result = "frostoil" + required_reagents = list("phoron" = 5) + result_amount = 10 + required_container = /obj/item/slime_extract/blue + required_other = 1 //Dark Blue - slimefreeze - name = "Slime Freeze" - id = "m_freeze" - result = null - required_reagents = list("phoron" = 5) - result_amount = 1 - required_container = /obj/item/slime_extract/darkblue - required_other = 1 - on_reaction(var/datum/reagents/holder) - for(var/mob/O in viewers(get_turf(holder.my_atom), null)) - O.show_message(text("\red The slime extract begins to vibrate violently !"), 1) - sleep(50) - playsound(get_turf(holder.my_atom), 'sound/effects/phasein.ogg', 100, 1) - for(var/mob/living/M in range (get_turf(holder.my_atom), 7)) - M.bodytemperature -= 140 - M << "\blue You feel a chill!" +/datum/chemical_reaction/slimefreeze + name = "Slime Freeze" + id = "m_freeze" + result = null + required_reagents = list("phoron" = 5) + result_amount = 1 + required_container = /obj/item/slime_extract/darkblue + required_other = 1 + +/datum/chemical_reaction/slimefreeze/on_reaction(var/datum/reagents/holder) + for(var/mob/O in viewers(get_turf(holder.my_atom), null)) + O.show_message(text("\red The slime extract begins to vibrate violently !"), 1) + sleep(50) + playsound(get_turf(holder.my_atom), 'sound/effects/phasein.ogg', 100, 1) + for(var/mob/living/M in range (get_turf(holder.my_atom), 7)) + M.bodytemperature -= 140 + M << "\blue You feel a chill!" //Orange - slimecasp - name = "Slime Capsaicin Oil" - id = "m_capsaicinoil" - result = "capsaicin" - required_reagents = list("blood" = 5) - result_amount = 10 - required_container = /obj/item/slime_extract/orange - required_other = 1 +/datum/chemical_reaction/slimecasp + name = "Slime Capsaicin Oil" + id = "m_capsaicinoil" + result = "capsaicin" + required_reagents = list("blood" = 5) + result_amount = 10 + required_container = /obj/item/slime_extract/orange + required_other = 1 - slimefire - name = "Slime fire" - id = "m_fire" - result = null - required_reagents = list("phoron" = 5) - result_amount = 1 - required_container = /obj/item/slime_extract/orange - required_other = 1 - on_reaction(var/datum/reagents/holder) - for(var/mob/O in viewers(get_turf(holder.my_atom), null)) - O.show_message(text("\red The slime extract begins to vibrate violently !"), 1) - sleep(50) - var/turf/location = get_turf(holder.my_atom.loc) - for(var/turf/simulated/floor/target_tile in range(0,location)) - target_tile.assume_gas("phoron", 25, 1400) - spawn (0) target_tile.hotspot_expose(700, 400) +/datum/chemical_reaction/slimefire + name = "Slime fire" + id = "m_fire" + result = null + required_reagents = list("phoron" = 5) + result_amount = 1 + required_container = /obj/item/slime_extract/orange + required_other = 1 + +/datum/chemical_reaction/slimefire/on_reaction(var/datum/reagents/holder) + for(var/mob/O in viewers(get_turf(holder.my_atom), null)) + O.show_message(text("\red The slime extract begins to vibrate violently !"), 1) + sleep(50) + var/turf/location = get_turf(holder.my_atom.loc) + for(var/turf/simulated/floor/target_tile in range(0,location)) + target_tile.assume_gas("phoron", 25, 1400) + spawn (0) target_tile.hotspot_expose(700, 400) //Yellow - slimeoverload - name = "Slime EMP" - id = "m_emp" - result = null - required_reagents = list("blood" = 5) - result_amount = 1 - required_container = /obj/item/slime_extract/yellow - required_other = 1 - on_reaction(var/datum/reagents/holder, var/created_volume) - empulse(get_turf(holder.my_atom), 3, 7) +/datum/chemical_reaction/slimeoverload + name = "Slime EMP" + id = "m_emp" + result = null + required_reagents = list("blood" = 5) + result_amount = 1 + required_container = /obj/item/slime_extract/yellow + required_other = 1 + +/datum/chemical_reaction/slimeoverload/on_reaction(var/datum/reagents/holder, var/created_volume) + empulse(get_turf(holder.my_atom), 3, 7) - slimecell - name = "Slime Powercell" - id = "m_cell" - result = null - required_reagents = list("phoron" = 5) - result_amount = 1 - required_container = /obj/item/slime_extract/yellow - required_other = 1 - on_reaction(var/datum/reagents/holder, var/created_volume) - var/obj/item/weapon/cell/slime/P = new /obj/item/weapon/cell/slime - P.loc = get_turf(holder.my_atom) +/datum/chemical_reaction/slimecell + name = "Slime Powercell" + id = "m_cell" + result = null + required_reagents = list("phoron" = 5) + result_amount = 1 + required_container = /obj/item/slime_extract/yellow + required_other = 1 - slimeglow - name = "Slime Glow" - id = "m_glow" - result = null - required_reagents = list("water" = 5) - result_amount = 1 - required_container = /obj/item/slime_extract/yellow - required_other = 1 - on_reaction(var/datum/reagents/holder) - for(var/mob/O in viewers(get_turf(holder.my_atom), null)) - O.show_message(text("\red The contents of the slime core harden and begin to emit a warm, bright light."), 1) - var/obj/item/device/flashlight/slime/F = new /obj/item/device/flashlight/slime - F.loc = get_turf(holder.my_atom) +/datum/chemical_reaction/slimecell/on_reaction(var/datum/reagents/holder, var/created_volume) + var/obj/item/weapon/cell/slime/P = new /obj/item/weapon/cell/slime + P.loc = get_turf(holder.my_atom) + +/datum/chemical_reaction/slimeglow + name = "Slime Glow" + id = "m_glow" + result = null + required_reagents = list("water" = 5) + result_amount = 1 + required_container = /obj/item/slime_extract/yellow + required_other = 1 + +/datum/chemical_reaction/slimeglow/on_reaction(var/datum/reagents/holder) + for(var/mob/O in viewers(get_turf(holder.my_atom), null)) + O.show_message(text("\red The contents of the slime core harden and begin to emit a warm, bright light."), 1) + var/obj/item/device/flashlight/slime/F = new /obj/item/device/flashlight/slime + F.loc = get_turf(holder.my_atom) //Purple - slimepsteroid - name = "Slime Steroid" - id = "m_steroid" - result = null - required_reagents = list("phoron" = 5) - result_amount = 1 - required_container = /obj/item/slime_extract/purple - required_other = 1 - on_reaction(var/datum/reagents/holder) - var/obj/item/weapon/slimesteroid/P = new /obj/item/weapon/slimesteroid - P.loc = get_turf(holder.my_atom) +/datum/chemical_reaction/slimepsteroid + name = "Slime Steroid" + id = "m_steroid" + result = null + required_reagents = list("phoron" = 5) + result_amount = 1 + required_container = /obj/item/slime_extract/purple + required_other = 1 + +/datum/chemical_reaction/slimepsteroid/on_reaction(var/datum/reagents/holder) + var/obj/item/weapon/slimesteroid/P = new /obj/item/weapon/slimesteroid + P.loc = get_turf(holder.my_atom) - slimejam - name = "Slime Jam" - id = "m_jam" - result = "slimejelly" - required_reagents = list("sugar" = 5) - result_amount = 10 - required_container = /obj/item/slime_extract/purple - required_other = 1 +/datum/chemical_reaction/slimejam + name = "Slime Jam" + id = "m_jam" + result = "slimejelly" + required_reagents = list("sugar" = 5) + result_amount = 10 + required_container = /obj/item/slime_extract/purple + required_other = 1 //Dark Purple - slimeplasma - name = "Slime Plasma" - id = "m_plasma" - result = null - required_reagents = list("phoron" = 5) - result_amount = 1 - required_container = /obj/item/slime_extract/darkpurple - required_other = 1 - on_reaction(var/datum/reagents/holder) - var/obj/item/stack/sheet/mineral/phoron/P = new /obj/item/stack/sheet/mineral/phoron - P.amount = 10 - P.loc = get_turf(holder.my_atom) +/datum/chemical_reaction/slimeplasma + name = "Slime Plasma" + id = "m_plasma" + result = null + required_reagents = list("phoron" = 5) + result_amount = 1 + required_container = /obj/item/slime_extract/darkpurple + required_other = 1 + +/datum/chemical_reaction/slimeplasma/on_reaction(var/datum/reagents/holder) + var/obj/item/stack/sheet/mineral/phoron/P = new /obj/item/stack/sheet/mineral/phoron + P.amount = 10 + P.loc = get_turf(holder.my_atom) //Red - slimeglycerol - name = "Slime Glycerol" - id = "m_glycerol" - result = "glycerol" - required_reagents = list("phoron" = 5) - result_amount = 8 - required_container = /obj/item/slime_extract/red - required_other = 1 +/datum/chemical_reaction/slimeglycerol + name = "Slime Glycerol" + id = "m_glycerol" + result = "glycerol" + required_reagents = list("phoron" = 5) + result_amount = 8 + required_container = /obj/item/slime_extract/red + required_other = 1 - slimebloodlust - name = "Bloodlust" - id = "m_bloodlust" - result = null - required_reagents = list("blood" = 5) - result_amount = 1 - required_container = /obj/item/slime_extract/red - required_other = 1 - on_reaction(var/datum/reagents/holder) - for(var/mob/living/carbon/slime/slime in viewers(get_turf(holder.my_atom), null)) - slime.rabid = 1 - for(var/mob/O in viewers(get_turf(holder.my_atom), null)) - O.show_message(text("\red The [slime] is driven into a frenzy!"), 1) +/datum/chemical_reaction/slimebloodlust + name = "Bloodlust" + id = "m_bloodlust" + result = null + required_reagents = list("blood" = 5) + result_amount = 1 + required_container = /obj/item/slime_extract/red + required_other = 1 + +/datum/chemical_reaction/slimebloodlust/on_reaction(var/datum/reagents/holder) + for(var/mob/living/carbon/slime/slime in viewers(get_turf(holder.my_atom), null)) + slime.rabid = 1 + for(var/mob/O in viewers(get_turf(holder.my_atom), null)) + O.show_message(text("\red The [slime] is driven into a frenzy!"), 1) //Pink - slimeppotion - name = "Slime Potion" - id = "m_potion" - result = null - required_reagents = list("phoron" = 5) - result_amount = 1 - required_container = /obj/item/slime_extract/pink - required_other = 1 - on_reaction(var/datum/reagents/holder) - var/obj/item/weapon/slimepotion/P = new /obj/item/weapon/slimepotion - P.loc = get_turf(holder.my_atom) +/datum/chemical_reaction/slimeppotion + name = "Slime Potion" + id = "m_potion" + result = null + required_reagents = list("phoron" = 5) + result_amount = 1 + required_container = /obj/item/slime_extract/pink + required_other = 1 + +/datum/chemical_reaction/slimeppotion/on_reaction(var/datum/reagents/holder) + var/obj/item/weapon/slimepotion/P = new /obj/item/weapon/slimepotion + P.loc = get_turf(holder.my_atom) //Black - slimemutate2 - name = "Advanced Mutation Toxin" - id = "mutationtoxin2" - result = "amutationtoxin" - required_reagents = list("phoron" = 5) - result_amount = 1 - required_other = 1 - required_container = /obj/item/slime_extract/black +/datum/chemical_reaction/slimemutate2 + name = "Advanced Mutation Toxin" + id = "mutationtoxin2" + result = "amutationtoxin" + required_reagents = list("phoron" = 5) + result_amount = 1 + required_other = 1 + required_container = /obj/item/slime_extract/black //Oil - slimeexplosion - name = "Slime Explosion" - id = "m_explosion" - result = null - required_reagents = list("phoron" = 5) - result_amount = 1 - required_container = /obj/item/slime_extract/oil - required_other = 1 - on_reaction(var/datum/reagents/holder) - for(var/mob/O in viewers(get_turf(holder.my_atom), null)) - O.show_message(text("\red The slime extract begins to vibrate violently !"), 1) - sleep(50) - explosion(get_turf(holder.my_atom), 1 ,3, 6) +/datum/chemical_reaction/slimeexplosion + name = "Slime Explosion" + id = "m_explosion" + result = null + required_reagents = list("phoron" = 5) + result_amount = 1 + required_container = /obj/item/slime_extract/oil + required_other = 1 + +/datum/chemical_reaction/slimeexplosion/on_reaction(var/datum/reagents/holder) + for(var/mob/O in viewers(get_turf(holder.my_atom), null)) + O.show_message(text("\red The slime extract begins to vibrate violently !"), 1) + sleep(50) + explosion(get_turf(holder.my_atom), 1 ,3, 6) //Light Pink - slimepotion2 - name = "Slime Potion 2" - id = "m_potion2" - result = null - result_amount = 1 - required_container = /obj/item/slime_extract/lightpink - required_reagents = list("phoron" = 5) - required_other = 1 - on_reaction(var/datum/reagents/holder) - var/obj/item/weapon/slimepotion2/P = new /obj/item/weapon/slimepotion2 - P.loc = get_turf(holder.my_atom) +/datum/chemical_reaction/slimepotion2 + name = "Slime Potion 2" + id = "m_potion2" + result = null + result_amount = 1 + required_container = /obj/item/slime_extract/lightpink + required_reagents = list("phoron" = 5) + required_other = 1 + +/datum/chemical_reaction/slimepotion2/on_reaction(var/datum/reagents/holder) + var/obj/item/weapon/slimepotion2/P = new /obj/item/weapon/slimepotion2 + P.loc = get_turf(holder.my_atom) //Adamantine - slimegolem - name = "Slime Golem" - id = "m_golem" - result = null - required_reagents = list("phoron" = 5) - result_amount = 1 - required_container = /obj/item/slime_extract/adamantine - required_other = 1 - on_reaction(var/datum/reagents/holder) - var/obj/effect/golemrune/Z = new /obj/effect/golemrune - Z.loc = get_turf(holder.my_atom) - Z.announce_to_ghosts() +/datum/chemical_reaction/slimegolem + name = "Slime Golem" + id = "m_golem" + result = null + required_reagents = list("phoron" = 5) + result_amount = 1 + required_container = /obj/item/slime_extract/adamantine + required_other = 1 + +/datum/chemical_reaction/slimegolem/on_reaction(var/datum/reagents/holder) + var/obj/effect/golemrune/Z = new /obj/effect/golemrune + Z.loc = get_turf(holder.my_atom) + Z.announce_to_ghosts() //////////////////////////////////////////PAINT/////////////////////////////////////////// //Crayon dust -> paint - red_paint - name = "Red paint" - id = "red_paint" - result = "paint" - resultcolor = "#FE191A" - required_reagents = list("plasticide" = 1, "water" = 3, "crayon_dust_red" = 1) - result_amount = 5 +/datum/chemical_reaction/red_paint + name = "Red paint" + id = "red_paint" + result = "paint" + resultcolor = "#FE191A" + required_reagents = list("plasticide" = 1, "water" = 3, "crayon_dust_red" = 1) + result_amount = 5 - orange_paint - name = "Orange paint" - id = "orange_paint" - result = "paint" - resultcolor = "#FFBE4F" - required_reagents = list("plasticide" = 1, "water" = 3, "crayon_dust_orange" = 1) - result_amount = 5 +/datum/chemical_reaction/orange_paint + name = "Orange paint" + id = "orange_paint" + result = "paint" + resultcolor = "#FFBE4F" + required_reagents = list("plasticide" = 1, "water" = 3, "crayon_dust_orange" = 1) + result_amount = 5 - yellow_paint - name = "Yellow paint" - id = "yellow_paint" - result = "paint" - resultcolor = "#FDFE7D" - required_reagents = list("plasticide" = 1, "water" = 3, "crayon_dust_yellow" = 1) - result_amount = 5 +/datum/chemical_reaction/yellow_paint + name = "Yellow paint" + id = "yellow_paint" + result = "paint" + resultcolor = "#FDFE7D" + required_reagents = list("plasticide" = 1, "water" = 3, "crayon_dust_yellow" = 1) + result_amount = 5 - green_paint - name = "Green paint" - id = "green_paint" - result = "paint" - resultcolor = "#18A31A" - required_reagents = list("plasticide" = 1, "water" = 3, "crayon_dust_green" = 1) - result_amount = 5 +/datum/chemical_reaction/green_paint + name = "Green paint" + id = "green_paint" + result = "paint" + resultcolor = "#18A31A" + required_reagents = list("plasticide" = 1, "water" = 3, "crayon_dust_green" = 1) + result_amount = 5 - blue_paint - name = "Blue paint" - id = "blue_paint" - result = "paint" - resultcolor = "#247CFF" - required_reagents = list("plasticide" = 1, "water" = 3, "crayon_dust_blue" = 1) - result_amount = 5 +/datum/chemical_reaction/blue_paint + name = "Blue paint" + id = "blue_paint" + result = "paint" + resultcolor = "#247CFF" + required_reagents = list("plasticide" = 1, "water" = 3, "crayon_dust_blue" = 1) + result_amount = 5 - purple_paint - name = "Purple paint" - id = "purple_paint" - result = "paint" - resultcolor = "#CC0099" - required_reagents = list("plasticide" = 1, "water" = 3, "crayon_dust_purple" = 1) - result_amount = 5 +/datum/chemical_reaction/purple_paint + name = "Purple paint" + id = "purple_paint" + result = "paint" + resultcolor = "#CC0099" + required_reagents = list("plasticide" = 1, "water" = 3, "crayon_dust_purple" = 1) + result_amount = 5 - grey_paint //mime - name = "Grey paint" - id = "grey_paint" - result = "paint" - resultcolor = "#808080" - required_reagents = list("plasticide" = 1, "water" = 3, "crayon_dust_grey" = 1) - result_amount = 5 +/datum/chemical_reaction/grey_paint //mime + name = "Grey paint" + id = "grey_paint" + result = "paint" + resultcolor = "#808080" + required_reagents = list("plasticide" = 1, "water" = 3, "crayon_dust_grey" = 1) + result_amount = 5 - brown_paint - name = "Brown paint" - id = "brown_paint" - result = "paint" - resultcolor = "#846F35" - required_reagents = list("plasticide" = 1, "water" = 3, "crayon_dust_brown" = 1) - result_amount = 5 +/datum/chemical_reaction/brown_paint + name = "Brown paint" + id = "brown_paint" + result = "paint" + resultcolor = "#846F35" + required_reagents = list("plasticide" = 1, "water" = 3, "crayon_dust_brown" = 1) + result_amount = 5 //Ghetto reactions /* Ideally the paint should take on the blood's colour (for each of the species) - but I could not think of a way. - RKF +but I could not think of a way. - RKF - blood_paint - name = "Blood paint" - id = "blood_paint" - result = "paint" - resultcolor = "#C80000" - required_reagents = list("plasticide" = 1, "water" = 3, "blood" = 2) - result_amount = 5 +blood_paint + name = "Blood paint" + id = "blood_paint" + result = "paint" + resultcolor = "#C80000" + required_reagents = list("plasticide" = 1, "water" = 3, "blood" = 2) + result_amount = 5 */ - milk_paint - name = "Milk paint" - id = "milk_paint" - result = "paint" - resultcolor = "#F0F8FF" - required_reagents = list("plasticide" = 1, "water" = 3, "milk" = 5) - result_amount = 5 +/datum/chemical_reaction/milk_paint + name = "Milk paint" + id = "milk_paint" + result = "paint" + resultcolor = "#F0F8FF" + required_reagents = list("plasticide" = 1, "water" = 3, "milk" = 5) + result_amount = 5 - orange_juice_paint - name = "Orange juice paint" - id = "orange_juice_paint" - result = "paint" - resultcolor = "#E78108" - required_reagents = list("plasticide" = 1, "water" = 3, "orangejuice" = 5) - result_amount = 5 +/datum/chemical_reaction/orange_juice_paint + name = "Orange juice paint" + id = "orange_juice_paint" + result = "paint" + resultcolor = "#E78108" + required_reagents = list("plasticide" = 1, "water" = 3, "orangejuice" = 5) + result_amount = 5 - tomato_juice_paint - name = "Tomato juice paint" - id = "tomato_juice_paint" - result = "paint" - resultcolor = "#731008" - required_reagents = list("plasticide" = 1, "water" = 3, "tomatojuice" = 5) - result_amount = 5 +/datum/chemical_reaction/tomato_juice_paint + name = "Tomato juice paint" + id = "tomato_juice_paint" + result = "paint" + resultcolor = "#731008" + required_reagents = list("plasticide" = 1, "water" = 3, "tomatojuice" = 5) + result_amount = 5 - lime_juice_paint - name = "Lime juice paint" - id = "lime_juice_paint" - result = "paint" - resultcolor = "#365E30" - required_reagents = list("plasticide" = 1, "water" = 3, "limejuice" = 5) - result_amount = 5 +/datum/chemical_reaction/lime_juice_paint + name = "Lime juice paint" + id = "lime_juice_paint" + result = "paint" + resultcolor = "#365E30" + required_reagents = list("plasticide" = 1, "water" = 3, "limejuice" = 5) + result_amount = 5 - carrot_juice_paint - name = "Carrot juice paint" - id = "carrot_juice_paint" - result = "paint" - resultcolor = "#973800" - required_reagents = list("plasticide" = 1, "water" = 3, "carrotjuice" = 5) - result_amount = 5 +/datum/chemical_reaction/carrot_juice_paint + name = "Carrot juice paint" + id = "carrot_juice_paint" + result = "paint" + resultcolor = "#973800" + required_reagents = list("plasticide" = 1, "water" = 3, "carrotjuice" = 5) + result_amount = 5 - berry_juice_paint - name = "Berry juice paint" - id = "berry_juice_paint" - result = "paint" - resultcolor = "#990066" - required_reagents = list("plasticide" = 1, "water" = 3, "berryjuice" = 5) - result_amount = 5 +/datum/chemical_reaction/berry_juice_paint + name = "Berry juice paint" + id = "berry_juice_paint" + result = "paint" + resultcolor = "#990066" + required_reagents = list("plasticide" = 1, "water" = 3, "berryjuice" = 5) + result_amount = 5 - grape_juice_paint - name = "Grape juice paint" - id = "grape_juice_paint" - result = "paint" - resultcolor = "#863333" - required_reagents = list("plasticide" = 1, "water" = 3, "grapejuice" = 5) - result_amount = 5 +/datum/chemical_reaction/grape_juice_paint + name = "Grape juice paint" + id = "grape_juice_paint" + result = "paint" + resultcolor = "#863333" + required_reagents = list("plasticide" = 1, "water" = 3, "grapejuice" = 5) + result_amount = 5 - poisonberry_juice_paint - name = "Poison berry juice paint" - id = "poisonberry_juice_paint" - result = "paint" - resultcolor = "#863353" - required_reagents = list("plasticide" = 1, "water" = 3, "poisonberryjuice" = 5) - result_amount = 5 +/datum/chemical_reaction/poisonberry_juice_paint + name = "Poison berry juice paint" + id = "poisonberry_juice_paint" + result = "paint" + resultcolor = "#863353" + required_reagents = list("plasticide" = 1, "water" = 3, "poisonberryjuice" = 5) + result_amount = 5 - watermelon_juice_paint - name = "Watermelon juice paint" - id = "watermelon_juice_paint" - result = "paint" - resultcolor = "#B83333" - required_reagents = list("plasticide" = 1, "water" = 3, "watermelonjuice" = 5) - result_amount = 5 +/datum/chemical_reaction/watermelon_juice_paint + name = "Watermelon juice paint" + id = "watermelon_juice_paint" + result = "paint" + resultcolor = "#B83333" + required_reagents = list("plasticide" = 1, "water" = 3, "watermelonjuice" = 5) + result_amount = 5 - lemon_juice_paint - name = "Lemon juice paint" - id = "lemon_juice_paint" - result = "paint" - resultcolor = "#AFAF00" - required_reagents = list("plasticide" = 1, "water" = 3, "lemonjuice" = 5) - result_amount = 5 +/datum/chemical_reaction/lemon_juice_paint + name = "Lemon juice paint" + id = "lemon_juice_paint" + result = "paint" + resultcolor = "#AFAF00" + required_reagents = list("plasticide" = 1, "water" = 3, "lemonjuice" = 5) + result_amount = 5 - banana_juice_paint - name = "Banana juice paint" - id = "banana_juice_paint" - result = "paint" - resultcolor = "#C3AF00" - required_reagents = list("plasticide" = 1, "water" = 3, "banana" = 5) - result_amount = 5 +/datum/chemical_reaction/banana_juice_paint + name = "Banana juice paint" + id = "banana_juice_paint" + result = "paint" + resultcolor = "#C3AF00" + required_reagents = list("plasticide" = 1, "water" = 3, "banana" = 5) + result_amount = 5 - potato_juice_paint - name = "Potato juice paint" - id = "potato_juice_paint" - result = "paint" - resultcolor = "#302000" - required_reagents = list("plasticide" = 1, "water" = 3, "potatojuice" = 5) - result_amount = 5 +/datum/chemical_reaction/potato_juice_paint + name = "Potato juice paint" + id = "potato_juice_paint" + result = "paint" + resultcolor = "#302000" + required_reagents = list("plasticide" = 1, "water" = 3, "potatojuice" = 5) + result_amount = 5 //Other paint - carbon_paint - name = "Carbon paint" - id = "carbon_paint" - result = "paint" - resultcolor = "#333333" - required_reagents = list("plasticide" = 1, "water" = 3, "carbon" = 1) - result_amount = 5 +/datum/chemical_reaction/carbon_paint + name = "Carbon paint" + id = "carbon_paint" + result = "paint" + resultcolor = "#333333" + required_reagents = list("plasticide" = 1, "water" = 3, "carbon" = 1) + result_amount = 5 - aluminum_paint - name = "Aluminum paint" - id = "aluminum_paint" - result = "paint" - resultcolor = "#F0F8FF" - required_reagents = list("plasticide" = 1, "water" = 3, "aluminum" = 1) - result_amount = 5 +/datum/chemical_reaction/aluminum_paint + name = "Aluminum paint" + id = "aluminum_paint" + result = "paint" + resultcolor = "#F0F8FF" + required_reagents = list("plasticide" = 1, "water" = 3, "aluminum" = 1) + result_amount = 5 //////////////////////////////////////////FOOD MIXTURES//////////////////////////////////// - tofu - name = "Tofu" - id = "tofu" - result = null - required_reagents = list("soymilk" = 10) - required_catalysts = list("enzyme" = 5) - result_amount = 1 - on_reaction(var/datum/reagents/holder, var/created_volume) - var/location = get_turf(holder.my_atom) - for(var/i = 1, i <= created_volume, i++) - new /obj/item/weapon/reagent_containers/food/snacks/tofu(location) - return +/datum/chemical_reaction/tofu + name = "Tofu" + id = "tofu" + result = null + required_reagents = list("soymilk" = 10) + required_catalysts = list("enzyme" = 5) + result_amount = 1 - chocolate_bar - name = "Chocolate Bar" - id = "chocolate_bar" - result = null - required_reagents = list("soymilk" = 2, "coco" = 2, "sugar" = 2) - result_amount = 1 - on_reaction(var/datum/reagents/holder, var/created_volume) - var/location = get_turf(holder.my_atom) - for(var/i = 1, i <= created_volume, i++) - new /obj/item/weapon/reagent_containers/food/snacks/chocolatebar(location) - return +/datum/chemical_reaction/tofu/on_reaction(var/datum/reagents/holder, var/created_volume) + var/location = get_turf(holder.my_atom) + for(var/i = 1, i <= created_volume, i++) + new /obj/item/weapon/reagent_containers/food/snacks/tofu(location) + return - chocolate_bar2 - name = "Chocolate Bar" - id = "chocolate_bar" - result = null - required_reagents = list("milk" = 2, "coco" = 2, "sugar" = 2) - result_amount = 1 - on_reaction(var/datum/reagents/holder, var/created_volume) - var/location = get_turf(holder.my_atom) - for(var/i = 1, i <= created_volume, i++) - new /obj/item/weapon/reagent_containers/food/snacks/chocolatebar(location) - return +/datum/chemical_reaction/chocolate_bar + name = "Chocolate Bar" + id = "chocolate_bar" + result = null + required_reagents = list("soymilk" = 2, "coco" = 2, "sugar" = 2) + result_amount = 1 - hot_coco - name = "Hot Coco" - id = "hot_coco" - result = "hot_coco" - required_reagents = list("water" = 5, "coco" = 1) - result_amount = 5 +/datum/chemical_reaction/chocolate_bar/on_reaction(var/datum/reagents/holder, var/created_volume) + var/location = get_turf(holder.my_atom) + for(var/i = 1, i <= created_volume, i++) + new /obj/item/weapon/reagent_containers/food/snacks/chocolatebar(location) + return - soysauce - name = "Soy Sauce" - id = "soysauce" - result = "soysauce" - required_reagents = list("soymilk" = 4, "sacid" = 1) - result_amount = 5 +/datum/chemical_reaction/chocolate_bar2 + name = "Chocolate Bar" + id = "chocolate_bar" + result = null + required_reagents = list("milk" = 2, "coco" = 2, "sugar" = 2) + result_amount = 1 - cheesewheel - name = "Cheesewheel" - id = "cheesewheel" - result = null - required_reagents = list("milk" = 40) - required_catalysts = list("enzyme" = 5) - result_amount = 1 - on_reaction(var/datum/reagents/holder, var/created_volume) - var/location = get_turf(holder.my_atom) - new /obj/item/weapon/reagent_containers/food/snacks/sliceable/cheesewheel(location) - return +/datum/chemical_reaction/chocolate_bar2/on_reaction(var/datum/reagents/holder, var/created_volume) + var/location = get_turf(holder.my_atom) + for(var/i = 1, i <= created_volume, i++) + new /obj/item/weapon/reagent_containers/food/snacks/chocolatebar(location) + return - meatball - name = "Meatball" - id = "meatball" - result = null - required_reagents = list("protein" = 3, "flour" = 5) - result_amount = 3 - on_reaction(var/datum/reagents/holder, var/created_volume) - new /obj/item/weapon/reagent_containers/food/snacks/meatball(get_turf(holder.my_atom)) - return +/datum/chemical_reaction/hot_coco + name = "Hot Coco" + id = "hot_coco" + result = "hot_coco" + required_reagents = list("water" = 5, "coco" = 1) + result_amount = 5 - dough - name = "Dough" - id = "dough" - result = null - required_reagents = list("egg" = 3, "flour" = 10) - result_amount = 1 - on_reaction(var/datum/reagents/holder, var/created_volume) - var/turf/T = get_turf(holder.my_atom) - for(var/i = 1 to created_volume) - new /obj/item/weapon/reagent_containers/food/snacks/dough(T) - return +/datum/chemical_reaction/soysauce + name = "Soy Sauce" + id = "soysauce" + result = "soysauce" + required_reagents = list("soymilk" = 4, "sacid" = 1) + result_amount = 5 - syntiflesh - name = "Syntiflesh" - id = "syntiflesh" - result = null - required_reagents = list("blood" = 5, "clonexadone" = 1) - result_amount = 1 - on_reaction(var/datum/reagents/holder, var/created_volume) - var/turf/T = get_turf(holder.my_atom) - for(var/i = 1 to created_volume) - new /obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh(T) - return +/datum/chemical_reaction/cheesewheel + name = "Cheesewheel" + id = "cheesewheel" + result = null + required_reagents = list("milk" = 40) + required_catalysts = list("enzyme" = 5) + result_amount = 1 - hot_ramen - name = "Hot Ramen" - id = "hot_ramen" - result = "hot_ramen" - required_reagents = list("water" = 1, "dry_ramen" = 3) - result_amount = 3 +/datum/chemical_reaction/cheesewheel/on_reaction(var/datum/reagents/holder, var/created_volume) + var/location = get_turf(holder.my_atom) + new /obj/item/weapon/reagent_containers/food/snacks/sliceable/cheesewheel(location) + return - hell_ramen - name = "Hell Ramen" - id = "hell_ramen" - result = "hell_ramen" - required_reagents = list("capsaicin" = 1, "hot_ramen" = 6) - result_amount = 6 +/datum/chemical_reaction/meatball + name = "Meatball" + id = "meatball" + result = null + required_reagents = list("protein" = 3, "flour" = 5) + result_amount = 3 + +/datum/chemical_reaction/meatball/on_reaction(var/datum/reagents/holder, var/created_volume) + new /obj/item/weapon/reagent_containers/food/snacks/meatball(get_turf(holder.my_atom)) + return + +/datum/chemical_reaction/dough + name = "Dough" + id = "dough" + result = null + required_reagents = list("egg" = 3, "flour" = 10) + result_amount = 1 + +/datum/chemical_reaction/dough/on_reaction(var/datum/reagents/holder, var/created_volume) + var/turf/T = get_turf(holder.my_atom) + for(var/i = 1 to created_volume) + new /obj/item/weapon/reagent_containers/food/snacks/dough(T) + return + +/datum/chemical_reaction/syntiflesh + name = "Syntiflesh" + id = "syntiflesh" + result = null + required_reagents = list("blood" = 5, "clonexadone" = 1) + result_amount = 1 + +/datum/chemical_reaction/syntiflesh/on_reaction(var/datum/reagents/holder, var/created_volume) + var/turf/T = get_turf(holder.my_atom) + for(var/i = 1 to created_volume) + new /obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh(T) + return + +/datum/chemical_reaction/hot_ramen + name = "Hot Ramen" + id = "hot_ramen" + result = "hot_ramen" + required_reagents = list("water" = 1, "dry_ramen" = 3) + result_amount = 3 + +/datum/chemical_reaction/hell_ramen + name = "Hell Ramen" + id = "hell_ramen" + result = "hell_ramen" + required_reagents = list("capsaicin" = 1, "hot_ramen" = 6) + result_amount = 6 ////////////////////////////////////////// COCKTAILS ////////////////////////////////////// - goldschlager - name = "Goldschlager" - id = "goldschlager" - result = "goldschlager" - required_reagents = list("vodka" = 10, "gold" = 1) - result_amount = 10 +/datum/chemical_reaction/goldschlager + name = "Goldschlager" + id = "goldschlager" + result = "goldschlager" + required_reagents = list("vodka" = 10, "gold" = 1) + result_amount = 10 - patron - name = "Patron" - id = "patron" - result = "patron" - required_reagents = list("tequilla" = 10, "silver" = 1) - result_amount = 10 +/datum/chemical_reaction/patron + name = "Patron" + id = "patron" + result = "patron" + required_reagents = list("tequilla" = 10, "silver" = 1) + result_amount = 10 - bilk - name = "Bilk" - id = "bilk" - result = "bilk" - required_reagents = list("milk" = 1, "beer" = 1) - result_amount = 2 +/datum/chemical_reaction/bilk + name = "Bilk" + id = "bilk" + result = "bilk" + required_reagents = list("milk" = 1, "beer" = 1) + result_amount = 2 - icetea - name = "Iced Tea" - id = "icetea" - result = "icetea" - required_reagents = list("ice" = 1, "tea" = 3) - result_amount = 4 +/datum/chemical_reaction/icetea + name = "Iced Tea" + id = "icetea" + result = "icetea" + required_reagents = list("ice" = 1, "tea" = 3) + result_amount = 4 - icecoffee - name = "Iced Coffee" - id = "icecoffee" - result = "icecoffee" - required_reagents = list("ice" = 1, "coffee" = 3) - result_amount = 4 +/datum/chemical_reaction/icecoffee + name = "Iced Coffee" + id = "icecoffee" + result = "icecoffee" + required_reagents = list("ice" = 1, "coffee" = 3) + result_amount = 4 - nuka_cola - name = "Nuka Cola" - id = "nuka_cola" - result = "nuka_cola" - required_reagents = list("uranium" = 1, "cola" = 6) - result_amount = 6 +/datum/chemical_reaction/nuka_cola + name = "Nuka Cola" + id = "nuka_cola" + result = "nuka_cola" + required_reagents = list("uranium" = 1, "cola" = 6) + result_amount = 6 - moonshine - name = "Moonshine" - id = "moonshine" - result = "moonshine" - required_reagents = list("nutriment" = 10) - required_catalysts = list("enzyme" = 5) - result_amount = 10 +/datum/chemical_reaction/moonshine + name = "Moonshine" + id = "moonshine" + result = "moonshine" + required_reagents = list("nutriment" = 10) + required_catalysts = list("enzyme" = 5) + result_amount = 10 - grenadine - name = "Grenadine Syrup" - id = "grenadine" - result = "grenadine" - required_reagents = list("berryjuice" = 10) - required_catalysts = list("enzyme" = 5) - result_amount = 10 +/datum/chemical_reaction/grenadine + name = "Grenadine Syrup" + id = "grenadine" + result = "grenadine" + required_reagents = list("berryjuice" = 10) + required_catalysts = list("enzyme" = 5) + result_amount = 10 - wine - name = "Wine" - id = "wine" - result = "wine" - required_reagents = list("grapejuice" = 10) - required_catalysts = list("enzyme" = 5) - result_amount = 10 +/datum/chemical_reaction/wine + name = "Wine" + id = "wine" + result = "wine" + required_reagents = list("grapejuice" = 10) + required_catalysts = list("enzyme" = 5) + result_amount = 10 - pwine - name = "Poison Wine" - id = "pwine" - result = "pwine" - required_reagents = list("poisonberryjuice" = 10) - required_catalysts = list("enzyme" = 5) - result_amount = 10 +/datum/chemical_reaction/pwine + name = "Poison Wine" + id = "pwine" + result = "pwine" + required_reagents = list("poisonberryjuice" = 10) + required_catalysts = list("enzyme" = 5) + result_amount = 10 - melonliquor - name = "Melon Liquor" - id = "melonliquor" - result = "melonliquor" - required_reagents = list("watermelonjuice" = 10) - required_catalysts = list("enzyme" = 5) - result_amount = 10 +/datum/chemical_reaction/melonliquor + name = "Melon Liquor" + id = "melonliquor" + result = "melonliquor" + required_reagents = list("watermelonjuice" = 10) + required_catalysts = list("enzyme" = 5) + result_amount = 10 - bluecuracao - name = "Blue Curacao" - id = "bluecuracao" - result = "bluecuracao" - required_reagents = list("orangejuice" = 10) - required_catalysts = list("enzyme" = 5) - result_amount = 10 +/datum/chemical_reaction/bluecuracao + name = "Blue Curacao" + id = "bluecuracao" + result = "bluecuracao" + required_reagents = list("orangejuice" = 10) + required_catalysts = list("enzyme" = 5) + result_amount = 10 - spacebeer - name = "Space Beer" - id = "spacebeer" - result = "beer" - required_reagents = list("cornoil" = 10) - required_catalysts = list("enzyme" = 5) - result_amount = 10 +/datum/chemical_reaction/spacebeer + name = "Space Beer" + id = "spacebeer" + result = "beer" + required_reagents = list("cornoil" = 10) + required_catalysts = list("enzyme" = 5) + result_amount = 10 - vodka - name = "Vodka" - id = "vodka" - result = "vodka" - required_reagents = list("potato" = 10) - required_catalysts = list("enzyme" = 5) - result_amount = 10 - sake - name = "Sake" - id = "sake" - result = "sake" - required_reagents = list("rice" = 10) - required_catalysts = list("enzyme" = 5) - result_amount = 10 +/datum/chemical_reaction/vodka + name = "Vodka" + id = "vodka" + result = "vodka" + required_reagents = list("potato" = 10) + required_catalysts = list("enzyme" = 5) + result_amount = 10 +/datum/chemical_reaction/sake + name = "Sake" + id = "sake" + result = "sake" + required_reagents = list("rice" = 10) + required_catalysts = list("enzyme" = 5) + result_amount = 10 - kahlua - name = "Kahlua" - id = "kahlua" - result = "kahlua" - required_reagents = list("coffee" = 5, "sugar" = 5) - required_catalysts = list("enzyme" = 5) - result_amount = 5 +/datum/chemical_reaction/kahlua + name = "Kahlua" + id = "kahlua" + result = "kahlua" + required_reagents = list("coffee" = 5, "sugar" = 5) + required_catalysts = list("enzyme" = 5) + result_amount = 5 - gin_tonic - name = "Gin and Tonic" - id = "gintonic" - result = "gintonic" - required_reagents = list("gin" = 2, "tonic" = 1) - result_amount = 3 +/datum/chemical_reaction/gin_tonic + name = "Gin and Tonic" + id = "gintonic" + result = "gintonic" + required_reagents = list("gin" = 2, "tonic" = 1) + result_amount = 3 - cuba_libre - name = "Cuba Libre" - id = "cubalibre" - result = "cubalibre" - required_reagents = list("rum" = 2, "cola" = 1) - result_amount = 3 +/datum/chemical_reaction/cuba_libre + name = "Cuba Libre" + id = "cubalibre" + result = "cubalibre" + required_reagents = list("rum" = 2, "cola" = 1) + result_amount = 3 - martini - name = "Classic Martini" - id = "martini" - result = "martini" - required_reagents = list("gin" = 2, "vermouth" = 1) - result_amount = 3 +/datum/chemical_reaction/martini + name = "Classic Martini" + id = "martini" + result = "martini" + required_reagents = list("gin" = 2, "vermouth" = 1) + result_amount = 3 - vodkamartini - name = "Vodka Martini" - id = "vodkamartini" - result = "vodkamartini" - required_reagents = list("vodka" = 2, "vermouth" = 1) - result_amount = 3 +/datum/chemical_reaction/vodkamartini + name = "Vodka Martini" + id = "vodkamartini" + result = "vodkamartini" + required_reagents = list("vodka" = 2, "vermouth" = 1) + result_amount = 3 - white_russian - name = "White Russian" - id = "whiterussian" - result = "whiterussian" - required_reagents = list("blackrussian" = 3, "cream" = 2) - result_amount = 5 +/datum/chemical_reaction/white_russian + name = "White Russian" + id = "whiterussian" + result = "whiterussian" + required_reagents = list("blackrussian" = 3, "cream" = 2) + result_amount = 5 - whiskey_cola - name = "Whiskey Cola" - id = "whiskeycola" - result = "whiskeycola" - required_reagents = list("whiskey" = 2, "cola" = 1) - result_amount = 3 +/datum/chemical_reaction/whiskey_cola + name = "Whiskey Cola" + id = "whiskeycola" + result = "whiskeycola" + required_reagents = list("whiskey" = 2, "cola" = 1) + result_amount = 3 - screwdriver - name = "Screwdriver" - id = "screwdrivercocktail" - result = "screwdrivercocktail" - required_reagents = list("vodka" = 2, "orangejuice" = 1) - result_amount = 3 +/datum/chemical_reaction/screwdriver + name = "Screwdriver" + id = "screwdrivercocktail" + result = "screwdrivercocktail" + required_reagents = list("vodka" = 2, "orangejuice" = 1) + result_amount = 3 - bloody_mary - name = "Bloody Mary" - id = "bloodymary" - result = "bloodymary" - required_reagents = list("vodka" = 1, "tomatojuice" = 2, "limejuice" = 1) - result_amount = 4 +/datum/chemical_reaction/bloody_mary + name = "Bloody Mary" + id = "bloodymary" + result = "bloodymary" + required_reagents = list("vodka" = 1, "tomatojuice" = 2, "limejuice" = 1) + result_amount = 4 - gargle_blaster - name = "Pan-Galactic Gargle Blaster" - id = "gargleblaster" - result = "gargleblaster" - required_reagents = list("vodka" = 1, "gin" = 1, "whiskey" = 1, "cognac" = 1, "limejuice" = 1) - result_amount = 5 +/datum/chemical_reaction/gargle_blaster + name = "Pan-Galactic Gargle Blaster" + id = "gargleblaster" + result = "gargleblaster" + required_reagents = list("vodka" = 1, "gin" = 1, "whiskey" = 1, "cognac" = 1, "limejuice" = 1) + result_amount = 5 - brave_bull - name = "Brave Bull" - id = "bravebull" - result = "bravebull" - required_reagents = list("tequilla" = 2, "kahlua" = 1) - result_amount = 3 +/datum/chemical_reaction/brave_bull + name = "Brave Bull" + id = "bravebull" + result = "bravebull" + required_reagents = list("tequilla" = 2, "kahlua" = 1) + result_amount = 3 - tequilla_sunrise - name = "Tequilla Sunrise" - id = "tequillasunrise" - result = "tequillasunrise" - required_reagents = list("tequilla" = 2, "orangejuice" = 1) - result_amount = 3 +/datum/chemical_reaction/tequilla_sunrise + name = "Tequilla Sunrise" + id = "tequillasunrise" + result = "tequillasunrise" + required_reagents = list("tequilla" = 2, "orangejuice" = 1) + result_amount = 3 - phoron_special - name = "Toxins Special" - id = "phoronspecial" - result = "phoronspecial" - required_reagents = list("rum" = 2, "vermouth" = 1, "phoron" = 2) - result_amount = 5 +/datum/chemical_reaction/phoron_special + name = "Toxins Special" + id = "phoronspecial" + result = "phoronspecial" + required_reagents = list("rum" = 2, "vermouth" = 1, "phoron" = 2) + result_amount = 5 - beepsky_smash - name = "Beepksy Smash" - id = "beepksysmash" - result = "beepskysmash" - required_reagents = list("limejuice" = 2, "whiskey" = 2, "iron" = 1) - result_amount = 4 +/datum/chemical_reaction/beepsky_smash + name = "Beepksy Smash" + id = "beepksysmash" + result = "beepskysmash" + required_reagents = list("limejuice" = 2, "whiskey" = 2, "iron" = 1) + result_amount = 4 - doctor_delight - name = "The Doctor's Delight" - id = "doctordelight" - result = "doctorsdelight" - required_reagents = list("limejuice" = 1, "tomatojuice" = 1, "orangejuice" = 1, "cream" = 1, "tricordrazine" = 1) - result_amount = 5 +/datum/chemical_reaction/doctor_delight + name = "The Doctor's Delight" + id = "doctordelight" + result = "doctorsdelight" + required_reagents = list("limejuice" = 1, "tomatojuice" = 1, "orangejuice" = 1, "cream" = 1, "tricordrazine" = 1) + result_amount = 5 - irish_cream - name = "Irish Cream" - id = "irishcream" - result = "irishcream" - required_reagents = list("whiskey" = 2, "cream" = 1) - result_amount = 3 +/datum/chemical_reaction/irish_cream + name = "Irish Cream" + id = "irishcream" + result = "irishcream" + required_reagents = list("whiskey" = 2, "cream" = 1) + result_amount = 3 - manly_dorf - name = "The Manly Dorf" - id = "manlydorf" - result = "manlydorf" - required_reagents = list ("beer" = 1, "ale" = 2) - result_amount = 3 +/datum/chemical_reaction/manly_dorf + name = "The Manly Dorf" + id = "manlydorf" + result = "manlydorf" + required_reagents = list ("beer" = 1, "ale" = 2) + result_amount = 3 - hooch - name = "Hooch" - id = "hooch" - result = "hooch" - required_reagents = list ("sugar" = 1, "ethanol" = 2, "fuel" = 1) - result_amount = 3 +/datum/chemical_reaction/hooch + name = "Hooch" + id = "hooch" + result = "hooch" + required_reagents = list ("sugar" = 1, "ethanol" = 2, "fuel" = 1) + result_amount = 3 - irish_coffee - name = "Irish Coffee" - id = "irishcoffee" - result = "irishcoffee" - required_reagents = list("irishcream" = 1, "coffee" = 1) - result_amount = 2 +/datum/chemical_reaction/irish_coffee + name = "Irish Coffee" + id = "irishcoffee" + result = "irishcoffee" + required_reagents = list("irishcream" = 1, "coffee" = 1) + result_amount = 2 - b52 - name = "B-52" - id = "b52" - result = "b52" - required_reagents = list("irishcream" = 1, "kahlua" = 1, "cognac" = 1) - result_amount = 3 +/datum/chemical_reaction/b52 + name = "B-52" + id = "b52" + result = "b52" + required_reagents = list("irishcream" = 1, "kahlua" = 1, "cognac" = 1) + result_amount = 3 - atomicbomb - name = "Atomic Bomb" - id = "atomicbomb" - result = "atomicbomb" - required_reagents = list("b52" = 10, "uranium" = 1) - result_amount = 10 +/datum/chemical_reaction/atomicbomb + name = "Atomic Bomb" + id = "atomicbomb" + result = "atomicbomb" + required_reagents = list("b52" = 10, "uranium" = 1) + result_amount = 10 - margarita - name = "Margarita" - id = "margarita" - result = "margarita" - required_reagents = list("tequilla" = 2, "limejuice" = 1) - result_amount = 3 +/datum/chemical_reaction/margarita + name = "Margarita" + id = "margarita" + result = "margarita" + required_reagents = list("tequilla" = 2, "limejuice" = 1) + result_amount = 3 - longislandicedtea - name = "Long Island Iced Tea" - id = "longislandicedtea" - result = "longislandicedtea" - required_reagents = list("vodka" = 1, "gin" = 1, "tequilla" = 1, "cubalibre" = 1) - result_amount = 4 +/datum/chemical_reaction/longislandicedtea + name = "Long Island Iced Tea" + id = "longislandicedtea" + result = "longislandicedtea" + required_reagents = list("vodka" = 1, "gin" = 1, "tequilla" = 1, "cubalibre" = 1) + result_amount = 4 - icedtea - name = "Long Island Iced Tea" - id = "longislandicedtea" - result = "longislandicedtea" - required_reagents = list("vodka" = 1, "gin" = 1, "tequilla" = 1, "cubalibre" = 1) - result_amount = 4 +/datum/chemical_reaction/icedtea + name = "Long Island Iced Tea" + id = "longislandicedtea" + result = "longislandicedtea" + required_reagents = list("vodka" = 1, "gin" = 1, "tequilla" = 1, "cubalibre" = 1) + result_amount = 4 - threemileisland - name = "Three Mile Island Iced Tea" - id = "threemileisland" - result = "threemileisland" - required_reagents = list("longislandicedtea" = 10, "uranium" = 1) - result_amount = 10 +/datum/chemical_reaction/threemileisland + name = "Three Mile Island Iced Tea" + id = "threemileisland" + result = "threemileisland" + required_reagents = list("longislandicedtea" = 10, "uranium" = 1) + result_amount = 10 - whiskeysoda - name = "Whiskey Soda" - id = "whiskeysoda" - result = "whiskeysoda" - required_reagents = list("whiskey" = 2, "sodawater" = 1) - result_amount = 3 +/datum/chemical_reaction/whiskeysoda + name = "Whiskey Soda" + id = "whiskeysoda" + result = "whiskeysoda" + required_reagents = list("whiskey" = 2, "sodawater" = 1) + result_amount = 3 - black_russian - name = "Black Russian" - id = "blackrussian" - result = "blackrussian" - required_reagents = list("vodka" = 3, "kahlua" = 2) - result_amount = 5 +/datum/chemical_reaction/black_russian + name = "Black Russian" + id = "blackrussian" + result = "blackrussian" + required_reagents = list("vodka" = 3, "kahlua" = 2) + result_amount = 5 - manhattan - name = "Manhattan" - id = "manhattan" - result = "manhattan" - required_reagents = list("whiskey" = 2, "vermouth" = 1) - result_amount = 3 +/datum/chemical_reaction/manhattan + name = "Manhattan" + id = "manhattan" + result = "manhattan" + required_reagents = list("whiskey" = 2, "vermouth" = 1) + result_amount = 3 - manhattan_proj - name = "Manhattan Project" - id = "manhattan_proj" - result = "manhattan_proj" - required_reagents = list("manhattan" = 10, "uranium" = 1) - result_amount = 10 +/datum/chemical_reaction/manhattan_proj + name = "Manhattan Project" + id = "manhattan_proj" + result = "manhattan_proj" + required_reagents = list("manhattan" = 10, "uranium" = 1) + result_amount = 10 - vodka_tonic - name = "Vodka and Tonic" - id = "vodkatonic" - result = "vodkatonic" - required_reagents = list("vodka" = 2, "tonic" = 1) - result_amount = 3 +/datum/chemical_reaction/vodka_tonic + name = "Vodka and Tonic" + id = "vodkatonic" + result = "vodkatonic" + required_reagents = list("vodka" = 2, "tonic" = 1) + result_amount = 3 - gin_fizz - name = "Gin Fizz" - id = "ginfizz" - result = "ginfizz" - required_reagents = list("gin" = 2, "sodawater" = 1, "limejuice" = 1) - result_amount = 4 +/datum/chemical_reaction/gin_fizz + name = "Gin Fizz" + id = "ginfizz" + result = "ginfizz" + required_reagents = list("gin" = 2, "sodawater" = 1, "limejuice" = 1) + result_amount = 4 - bahama_mama - name = "Bahama mama" - id = "bahama_mama" - result = "bahama_mama" - required_reagents = list("rum" = 2, "orangejuice" = 2, "limejuice" = 1, "ice" = 1) - result_amount = 6 +/datum/chemical_reaction/bahama_mama + name = "Bahama mama" + id = "bahama_mama" + result = "bahama_mama" + required_reagents = list("rum" = 2, "orangejuice" = 2, "limejuice" = 1, "ice" = 1) + result_amount = 6 - singulo - name = "Singulo" - id = "singulo" - result = "singulo" - required_reagents = list("vodka" = 5, "radium" = 1, "wine" = 5) - result_amount = 10 +/datum/chemical_reaction/singulo + name = "Singulo" + id = "singulo" + result = "singulo" + required_reagents = list("vodka" = 5, "radium" = 1, "wine" = 5) + result_amount = 10 - alliescocktail - name = "Allies Cocktail" - id = "alliescocktail" - result = "alliescocktail" - required_reagents = list("martini" = 1, "vodka" = 1) - result_amount = 2 +/datum/chemical_reaction/alliescocktail + name = "Allies Cocktail" + id = "alliescocktail" + result = "alliescocktail" + required_reagents = list("martini" = 1, "vodka" = 1) + result_amount = 2 - demonsblood - name = "Demons Blood" - id = "demonsblood" - result = "demonsblood" - required_reagents = list("rum" = 1, "spacemountainwind" = 1, "blood" = 1, "dr_gibb" = 1) - result_amount = 4 +/datum/chemical_reaction/demonsblood + name = "Demons Blood" + id = "demonsblood" + result = "demonsblood" + required_reagents = list("rum" = 1, "spacemountainwind" = 1, "blood" = 1, "dr_gibb" = 1) + result_amount = 4 - booger - name = "Booger" - id = "booger" - result = "booger" - required_reagents = list("cream" = 1, "banana" = 1, "rum" = 1, "watermelonjuice" = 1) - result_amount = 4 +/datum/chemical_reaction/booger + name = "Booger" + id = "booger" + result = "booger" + required_reagents = list("cream" = 1, "banana" = 1, "rum" = 1, "watermelonjuice" = 1) + result_amount = 4 - antifreeze - name = "Anti-freeze" - id = "antifreeze" - result = "antifreeze" - required_reagents = list("vodka" = 2, "cream" = 1, "ice" = 1) - result_amount = 4 +/datum/chemical_reaction/antifreeze + name = "Anti-freeze" + id = "antifreeze" + result = "antifreeze" + required_reagents = list("vodka" = 2, "cream" = 1, "ice" = 1) + result_amount = 4 - barefoot - name = "Barefoot" - id = "barefoot" - result = "barefoot" - required_reagents = list("berryjuice" = 1, "cream" = 1, "vermouth" = 1) - result_amount = 3 +/datum/chemical_reaction/barefoot + name = "Barefoot" + id = "barefoot" + result = "barefoot" + required_reagents = list("berryjuice" = 1, "cream" = 1, "vermouth" = 1) + result_amount = 3 - grapesoda - name = "Grape Soda" - id = "grapesoda" - result = "grapesoda" - required_reagents = list("grapejuice" = 2, "cola" = 1) - result_amount = 3 +/datum/chemical_reaction/grapesoda + name = "Grape Soda" + id = "grapesoda" + result = "grapesoda" + required_reagents = list("grapejuice" = 2, "cola" = 1) + result_amount = 3 ////DRINKS THAT REQUIRED IMPROVED SPRITES BELOW:: -Agouri///// - sbiten - name = "Sbiten" - id = "sbiten" - result = "sbiten" - required_reagents = list("vodka" = 10, "capsaicin" = 1) - result_amount = 10 +/datum/chemical_reaction/sbiten + name = "Sbiten" + id = "sbiten" + result = "sbiten" + required_reagents = list("vodka" = 10, "capsaicin" = 1) + result_amount = 10 - red_mead - name = "Red Mead" - id = "red_mead" - result = "red_mead" - required_reagents = list("blood" = 1, "mead" = 1) - result_amount = 2 +/datum/chemical_reaction/red_mead + name = "Red Mead" + id = "red_mead" + result = "red_mead" + required_reagents = list("blood" = 1, "mead" = 1) + result_amount = 2 - mead - name = "Mead" - id = "mead" - result = "mead" - required_reagents = list("sugar" = 1, "water" = 1) - required_catalysts = list("enzyme" = 5) - result_amount = 2 +/datum/chemical_reaction/mead + name = "Mead" + id = "mead" + result = "mead" + required_reagents = list("sugar" = 1, "water" = 1) + required_catalysts = list("enzyme" = 5) + result_amount = 2 - iced_beer - name = "Iced Beer" - id = "iced_beer" - result = "iced_beer" - required_reagents = list("beer" = 10, "frostoil" = 1) - result_amount = 10 +/datum/chemical_reaction/iced_beer + name = "Iced Beer" + id = "iced_beer" + result = "iced_beer" + required_reagents = list("beer" = 10, "frostoil" = 1) + result_amount = 10 - iced_beer2 - name = "Iced Beer" - id = "iced_beer" - result = "iced_beer" - required_reagents = list("beer" = 5, "ice" = 1) - result_amount = 6 +/datum/chemical_reaction/iced_beer2 + name = "Iced Beer" + id = "iced_beer" + result = "iced_beer" + required_reagents = list("beer" = 5, "ice" = 1) + result_amount = 6 - grog - name = "Grog" - id = "grog" - result = "grog" - required_reagents = list("rum" = 1, "water" = 1) - result_amount = 2 +/datum/chemical_reaction/grog + name = "Grog" + id = "grog" + result = "grog" + required_reagents = list("rum" = 1, "water" = 1) + result_amount = 2 - soy_latte - name = "Soy Latte" - id = "soy_latte" - result = "soy_latte" - required_reagents = list("coffee" = 1, "soymilk" = 1) - result_amount = 2 +/datum/chemical_reaction/soy_latte + name = "Soy Latte" + id = "soy_latte" + result = "soy_latte" + required_reagents = list("coffee" = 1, "soymilk" = 1) + result_amount = 2 - cafe_latte - name = "Cafe Latte" - id = "cafe_latte" - result = "cafe_latte" - required_reagents = list("coffee" = 1, "milk" = 1) - result_amount = 2 +/datum/chemical_reaction/cafe_latte + name = "Cafe Latte" + id = "cafe_latte" + result = "cafe_latte" + required_reagents = list("coffee" = 1, "milk" = 1) + result_amount = 2 - acidspit - name = "Acid Spit" - id = "acidspit" - result = "acidspit" - required_reagents = list("sacid" = 1, "wine" = 5) - result_amount = 6 +/datum/chemical_reaction/acidspit + name = "Acid Spit" + id = "acidspit" + result = "acidspit" + required_reagents = list("sacid" = 1, "wine" = 5) + result_amount = 6 - amasec - name = "Amasec" - id = "amasec" - result = "amasec" - required_reagents = list("iron" = 1, "wine" = 5, "vodka" = 5) - result_amount = 10 +/datum/chemical_reaction/amasec + name = "Amasec" + id = "amasec" + result = "amasec" + required_reagents = list("iron" = 1, "wine" = 5, "vodka" = 5) + result_amount = 10 - changelingsting - name = "Changeling Sting" - id = "changelingsting" - result = "changelingsting" - required_reagents = list("screwdrivercocktail" = 1, "limejuice" = 1, "lemonjuice" = 1) - result_amount = 5 +/datum/chemical_reaction/changelingsting + name = "Changeling Sting" + id = "changelingsting" + result = "changelingsting" + required_reagents = list("screwdrivercocktail" = 1, "limejuice" = 1, "lemonjuice" = 1) + result_amount = 5 - aloe - name = "Aloe" - id = "aloe" - result = "aloe" - required_reagents = list("cream" = 1, "whiskey" = 1, "watermelonjuice" = 1) - result_amount = 2 +/datum/chemical_reaction/aloe + name = "Aloe" + id = "aloe" + result = "aloe" + required_reagents = list("cream" = 1, "whiskey" = 1, "watermelonjuice" = 1) + result_amount = 2 - andalusia - name = "Andalusia" - id = "andalusia" - result = "andalusia" - required_reagents = list("rum" = 1, "whiskey" = 1, "lemonjuice" = 1) - result_amount = 3 +/datum/chemical_reaction/andalusia + name = "Andalusia" + id = "andalusia" + result = "andalusia" + required_reagents = list("rum" = 1, "whiskey" = 1, "lemonjuice" = 1) + result_amount = 3 - neurotoxin - name = "Neurotoxin" - id = "neurotoxin" - result = "neurotoxin" - required_reagents = list("gargleblaster" = 1, "stoxin" = 1) - result_amount = 2 +/datum/chemical_reaction/neurotoxin + name = "Neurotoxin" + id = "neurotoxin" + result = "neurotoxin" + required_reagents = list("gargleblaster" = 1, "stoxin" = 1) + result_amount = 2 - snowwhite - name = "Snow White" - id = "snowwhite" - result = "snowwhite" - required_reagents = list("beer" = 1, "lemon_lime" = 1) - result_amount = 2 +/datum/chemical_reaction/snowwhite + name = "Snow White" + id = "snowwhite" + result = "snowwhite" + required_reagents = list("beer" = 1, "lemon_lime" = 1) + result_amount = 2 - irishcarbomb - name = "Irish Car Bomb" - id = "irishcarbomb" - result = "irishcarbomb" - required_reagents = list("ale" = 1, "irishcream" = 1) - result_amount = 2 +/datum/chemical_reaction/irishcarbomb + name = "Irish Car Bomb" + id = "irishcarbomb" + result = "irishcarbomb" + required_reagents = list("ale" = 1, "irishcream" = 1) + result_amount = 2 - syndicatebomb - name = "Syndicate Bomb" - id = "syndicatebomb" - result = "syndicatebomb" - required_reagents = list("beer" = 1, "whiskeycola" = 1) - result_amount = 2 +/datum/chemical_reaction/syndicatebomb + name = "Syndicate Bomb" + id = "syndicatebomb" + result = "syndicatebomb" + required_reagents = list("beer" = 1, "whiskeycola" = 1) + result_amount = 2 - erikasurprise - name = "Erika Surprise" - id = "erikasurprise" - result = "erikasurprise" - required_reagents = list("ale" = 1, "limejuice" = 1, "whiskey" = 1, "banana" = 1, "ice" = 1) - result_amount = 5 +/datum/chemical_reaction/erikasurprise + name = "Erika Surprise" + id = "erikasurprise" + result = "erikasurprise" + required_reagents = list("ale" = 1, "limejuice" = 1, "whiskey" = 1, "banana" = 1, "ice" = 1) + result_amount = 5 - devilskiss - name = "Devils Kiss" - id = "devilskiss" - result = "devilskiss" - required_reagents = list("blood" = 1, "kahlua" = 1, "rum" = 1) - result_amount = 3 +/datum/chemical_reaction/devilskiss + name = "Devils Kiss" + id = "devilskiss" + result = "devilskiss" + required_reagents = list("blood" = 1, "kahlua" = 1, "rum" = 1) + result_amount = 3 - hippiesdelight - name = "Hippies Delight" - id = "hippiesdelight" - result = "hippiesdelight" - required_reagents = list("psilocybin" = 1, "gargleblaster" = 1) - result_amount = 2 +/datum/chemical_reaction/hippiesdelight + name = "Hippies Delight" + id = "hippiesdelight" + result = "hippiesdelight" + required_reagents = list("psilocybin" = 1, "gargleblaster" = 1) + result_amount = 2 - bananahonk - name = "Banana Honk" - id = "bananahonk" - result = "bananahonk" - required_reagents = list("banana" = 1, "cream" = 1, "sugar" = 1) - result_amount = 3 +/datum/chemical_reaction/bananahonk + name = "Banana Honk" + id = "bananahonk" + result = "bananahonk" + required_reagents = list("banana" = 1, "cream" = 1, "sugar" = 1) + result_amount = 3 - silencer - name = "Silencer" - id = "silencer" - result = "silencer" - required_reagents = list("nothing" = 1, "cream" = 1, "sugar" = 1) - result_amount = 3 +/datum/chemical_reaction/silencer + name = "Silencer" + id = "silencer" + result = "silencer" + required_reagents = list("nothing" = 1, "cream" = 1, "sugar" = 1) + result_amount = 3 - driestmartini - name = "Driest Martini" - id = "driestmartini" - result = "driestmartini" - required_reagents = list("nothing" = 1, "gin" = 1) - result_amount = 2 +/datum/chemical_reaction/driestmartini + name = "Driest Martini" + id = "driestmartini" + result = "driestmartini" + required_reagents = list("nothing" = 1, "gin" = 1) + result_amount = 2 - lemonade - name = "Lemonade" - id = "lemonade" - result = "lemonade" - required_reagents = list("lemonjuice" = 1, "sugar" = 1, "water" = 1) - result_amount = 3 +/datum/chemical_reaction/lemonade + name = "Lemonade" + id = "lemonade" + result = "lemonade" + required_reagents = list("lemonjuice" = 1, "sugar" = 1, "water" = 1) + result_amount = 3 - kiraspecial - name = "Kira Special" - id = "kiraspecial" - result = "kiraspecial" - required_reagents = list("orangejuice" = 1, "limejuice" = 1, "sodawater" = 1) - result_amount = 2 +/datum/chemical_reaction/kiraspecial + name = "Kira Special" + id = "kiraspecial" + result = "kiraspecial" + required_reagents = list("orangejuice" = 1, "limejuice" = 1, "sodawater" = 1) + result_amount = 2 - brownstar - name = "Brown Star" - id = "brownstar" - result = "brownstar" - required_reagents = list("orangejuice" = 2, "cola" = 1) - result_amount = 2 +/datum/chemical_reaction/brownstar + name = "Brown Star" + id = "brownstar" + result = "brownstar" + required_reagents = list("orangejuice" = 2, "cola" = 1) + result_amount = 2 - milkshake - name = "Milkshake" - id = "milkshake" - result = "milkshake" - required_reagents = list("cream" = 1, "ice" = 2, "milk" = 2) - result_amount = 5 +/datum/chemical_reaction/milkshake + name = "Milkshake" + id = "milkshake" + result = "milkshake" + required_reagents = list("cream" = 1, "ice" = 2, "milk" = 2) + result_amount = 5 - rewriter - name = "Rewriter" - id = "rewriter" - result = "rewriter" - required_reagents = list("spacemountainwind" = 1, "coffee" = 1) - result_amount = 2 +/datum/chemical_reaction/rewriter + name = "Rewriter" + id = "rewriter" + result = "rewriter" + required_reagents = list("spacemountainwind" = 1, "coffee" = 1) + result_amount = 2 - suidream - name = "Sui Dream" - id = "suidream" - result = "suidream" - required_reagents = list("space_up" = 2, "bluecuracao" = 1, "melonliquor" = 1) - result_amount = 4 +/datum/chemical_reaction/suidream + name = "Sui Dream" + id = "suidream" + result = "suidream" + required_reagents = list("space_up" = 2, "bluecuracao" = 1, "melonliquor" = 1) + result_amount = 4