mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-07-20 19:44:46 +01:00
Merge branch 'dev' into ofChemistryAndStuff
Conflicts: code/modules/reagents/Chemistry-Recipes.dm
This commit is contained in:
@@ -955,8 +955,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_damage.dm"
|
||||
#include "code\modules\events\blob.dm"
|
||||
#include "code\modules\events\brand_intelligence.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"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/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"
|
||||
@@ -8,6 +8,10 @@
|
||||
|
||||
var/wax = 2000
|
||||
|
||||
/obj/item/weapon/flame/candle/New()
|
||||
wax = rand(800, 1000) // Enough for 27-33 minutes. 30 minutes on average.
|
||||
..()
|
||||
|
||||
/obj/item/weapon/flame/candle/update_icon()
|
||||
var/i
|
||||
if(wax > 1500)
|
||||
@@ -80,4 +84,4 @@
|
||||
/obj/item/weapon/flame/candle/dropped(mob/user)
|
||||
if(lit)
|
||||
user.SetLuminosity(user.luminosity - CANDLE_LUM)
|
||||
SetLuminosity(CANDLE_LUM)
|
||||
SetLuminosity(CANDLE_LUM)
|
||||
@@ -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
|
||||
|
||||
/*
|
||||
|
||||
@@ -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)
|
||||
@@ -0,0 +1,38 @@
|
||||
/datum/event/camera_damage/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))
|
||||
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)
|
||||
return
|
||||
if(!remaining_attempts)
|
||||
return
|
||||
|
||||
var/obj/machinery/camera/C = pick(cameranet.cameras)
|
||||
if(is_valid_camera(C))
|
||||
return C
|
||||
return acquire_random_camera(remaining_attempts--)
|
||||
|
||||
/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)
|
||||
@@ -12,9 +12,9 @@
|
||||
A << "<br>"
|
||||
|
||||
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)
|
||||
T.emp_act(1)
|
||||
|
||||
@@ -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()
|
||||
apc.overload_lighting()
|
||||
|
||||
@@ -127,11 +127,13 @@ 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 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),
|
||||
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),
|
||||
|
||||
@@ -0,0 +1,133 @@
|
||||
/obj/machinery/beehive
|
||||
name = "beehive"
|
||||
icon = 'icons/obj/apiary_bees_etc.dmi'
|
||||
icon_state = "apiary"
|
||||
density = 1
|
||||
anchored = 1
|
||||
|
||||
var/closed = 0
|
||||
var/bee_count = 0 // A real hive has 20k - 80k bees... we tone it down
|
||||
var/smoked = 0
|
||||
var/honeycombs = 0
|
||||
var/frames = 0
|
||||
var/maxFrames = 5
|
||||
|
||||
/obj/machinery/beehive/attackby(var/obj/item/I, var/mob/user)
|
||||
if(istype(I, /obj/item/weapon/crowbar))
|
||||
closed = !closed
|
||||
user.visible_message("<span class='notice'>[user] [closed ? "closes" : "opens"] \the [src].</span>", "<span class='notice'>You [closed ? "close" : "open"] \the [src]")
|
||||
else if(istype(I, /obj/item/weapon/wrench))
|
||||
anchored = !anchored
|
||||
user.visible_message("<span class='notice'>[user] [closed ? "wrenches" : "unwrenches"] \the [src].</span>", "<span class='notice'>You [closed ? "wrench" : "unwrench"] \the [src]")
|
||||
else if(istype(I, /obj/item/bee_smoker))
|
||||
if(!closed)
|
||||
user << "<span class='notice'>You need to open \the [src] with a crowbar before smoking the bees.</span>"
|
||||
return
|
||||
user.visible_message("<span class='notice'>[user] smokes the bees in \the [src].</span>", "<span class='notice'>You smoke the bees in \the [src].</span>")
|
||||
smoked = 30
|
||||
else if(istype(I, /obj/item/honey_frame))
|
||||
if(closed)
|
||||
user << "<span class='notice'>You need to open \the [src] with a crowbar before inserting \the [I].</span>"
|
||||
return
|
||||
if(frames >= maxFrames)
|
||||
user << "<span class='notice'>There is no place for an another frame.</span>"
|
||||
return
|
||||
var/obj/item/honey_frame/H = I
|
||||
if(H.honey)
|
||||
user << "<span class='notice'>\The [I] is full with beeswax and honey, empty it in the extractor first.</span>"
|
||||
return
|
||||
++frames
|
||||
user.visible_message("<span class='notice'>[user] loads \the [I] into \the [src].</span>", "<span class='notice'>You load \the [I] into \the [src].</span>")
|
||||
qdel(I)
|
||||
|
||||
/obj/machinery/beehive/attack_hand(var/mob/user)
|
||||
if(!closed)
|
||||
if(honeycombs < 1)
|
||||
user << "<span class='notice'>There are no filled honeycombs.</span>"
|
||||
return
|
||||
user.visible_message("<span class='notice'>[user] starts taking the honeycombs out of \the [src].", "<span class='notice'>You start taking the honeycombs out of \the [src]...")
|
||||
while(honeycombs > 1 && do_after(user, 30))
|
||||
new /obj/item/honey_frame/filled(loc)
|
||||
--honeycombs
|
||||
--frames
|
||||
user << "<span class='notice'>You take all filled honeycombs out.</span>"
|
||||
|
||||
/obj/machinery/beehive/process()
|
||||
if(closed && !smoked)
|
||||
pollinate_flowers()
|
||||
smoked = max(0, smoked - 1)
|
||||
|
||||
/obj/machinery/beehive/proc/pollinate_flowers()
|
||||
for(var/obj/machinery/portable_atmospherics/hydroponics/H in view(7, src))
|
||||
if(H.seed && !H.dead)
|
||||
H.health += 0.05
|
||||
honeycombs = max(honeycombs + 0.01, frames) // 100/tray amount ticks per frame, each 20 units of honey
|
||||
|
||||
/obj/machinery/honey_extractor
|
||||
name = "honey extractor"
|
||||
desc = "A machine used to turn honeycombs on the frame into honey and wax."
|
||||
icon = 'icons/obj/virology.dmi'
|
||||
icon_state = "centrifuge"
|
||||
|
||||
var/processing = 0
|
||||
var/honey = 0
|
||||
|
||||
/obj/machinery/honey_extractor/attackby(var/obj/item/I, var/mob/user)
|
||||
if(processing)
|
||||
user << "<span class='notice'>\The [src] is currently spinning, wait until it's finished.</span>"
|
||||
return
|
||||
else if(istype(I, /obj/item/honey_frame))
|
||||
var/obj/item/honey_frame/H = I
|
||||
if(!H.honey)
|
||||
user << "<span class='notice'>\The [H] is empty, put it into a beehive.</span>"
|
||||
return
|
||||
user.visible_message("<span class='notice'>[user] loads \the [H] into \the [src] and turns it on.</span>", "<span class='notice'>You load \the [H] into \the [src] and turn it on.</span>")
|
||||
processing = H.honey
|
||||
qdel(H)
|
||||
spawn(50)
|
||||
new /obj/item/honey_frame(loc)
|
||||
//new /obj/item/stack/wax(loc)
|
||||
honey += processing
|
||||
processing = 0
|
||||
else if(istype(I, /obj/item/weapon/reagent_containers/glass))
|
||||
var/obj/item/weapon/reagent_containers/glass/G = I
|
||||
var/transferred = min(G.reagents.maximum_volume - G.reagents.total_volume, honey)
|
||||
G.reagents.add_reagent("honey", transferred)
|
||||
honey -= transferred
|
||||
user.visible_message("<span class='notice'>[user] collects honey from \the [src] into \the [G].</span>", "<span class='notice'>You collect [transferred] units of honey from \the [src] into the [G].</span>")
|
||||
return 1
|
||||
|
||||
/obj/item/bee_smoker
|
||||
name = "bee smoker"
|
||||
desc = "A device used to calm down bees before harvesting honey."
|
||||
icon = 'icons/obj/apiary_bees_etc.dmi'
|
||||
icon_state = "apiary"
|
||||
w_class = 2
|
||||
|
||||
/obj/item/honey_frame
|
||||
name = "beehive frame"
|
||||
desc = "A frame for the beehive that the bees will fill with honeycombs."
|
||||
icon = 'icons/obj/apiary_bees_etc.dmi'
|
||||
icon_state = "apiary"
|
||||
w_class = 2
|
||||
|
||||
var/honey = 0
|
||||
|
||||
/obj/item/honey_frame/filled
|
||||
name = "filled beehive frame"
|
||||
desc = "A frame for the beehive that the bees have filled with honeycombs."
|
||||
honey = 20
|
||||
|
||||
/obj/item/beehive_assembly
|
||||
name = "beehive assembly"
|
||||
desc = "Contains everything you need to build a beehive. Cannot be disassembled once deployed."
|
||||
icon = 'icons/obj/apiary_bees_etc.dmi'
|
||||
icon_state = "apiary"
|
||||
|
||||
/obj/item/beehive_assembly/attack_self(var/mob/user)
|
||||
new /obj/machinery/beehive(get_turf(user))
|
||||
qdel(src)
|
||||
|
||||
/obj/item/bee_pack
|
||||
name = "bee pack"
|
||||
desc = "A stasis-pack that contains a queen bee and some workers. Put it into the beehive to wake them up."
|
||||
@@ -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
|
||||
|
||||
@@ -10,6 +10,10 @@
|
||||
|
||||
sleep(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)
|
||||
|
||||
|
||||
@@ -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_PAPER_MESSAGE_LEN
|
||||
stamped = list()
|
||||
overlays.Cut()
|
||||
updateinfolinks()
|
||||
@@ -327,12 +336,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 << "<span class='info'>There isn't enough space left on \the [src] to write anything.</span>"
|
||||
return
|
||||
|
||||
var/t = sanitize(input("Enter what you want to write:", "Write", null, null) as message, textlimit, extra = 0)
|
||||
var/t = strip_html_properly(input("Enter what you want to write:", "Write", null, null) as message)
|
||||
|
||||
if(!t)
|
||||
return
|
||||
@@ -378,6 +386,8 @@
|
||||
info += t // Oh, he wants to edit to the end of the file, let him.
|
||||
updateinfolinks()
|
||||
|
||||
update_space(t)
|
||||
|
||||
usr << browse("<HTML><HEAD><TITLE>[name]</TITLE></HEAD><BODY>[info_links][stamps]</BODY></HTML>", "window=[name]") // Update the window
|
||||
|
||||
update_icon()
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -446,9 +446,8 @@
|
||||
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
|
||||
new /obj/item/stack/sheet/mineral/phoron(get_turf(holder.my_atom), created_volume)
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/plastication
|
||||
name = "Plastic"
|
||||
@@ -595,7 +594,7 @@
|
||||
var/location = get_turf(holder.my_atom)
|
||||
|
||||
for(var/mob/M in viewers(5, location))
|
||||
M << "\red The solution spews out foam!"
|
||||
M << "<span class='warning'>The solution spews out foam!</span>"
|
||||
|
||||
var/datum/effect/effect/system/foam_spread/s = new()
|
||||
s.set_up(created_volume, location, holder, 0)
|
||||
@@ -614,7 +613,7 @@
|
||||
var/location = get_turf(holder.my_atom)
|
||||
|
||||
for(var/mob/M in viewers(5, location))
|
||||
M << "\red The solution spews out a metalic foam!"
|
||||
M << "<span class='warning'>The solution spews out a metalic foam!</span>"
|
||||
|
||||
var/datum/effect/effect/system/foam_spread/s = new()
|
||||
s.set_up(created_volume, location, holder, 1)
|
||||
@@ -632,7 +631,7 @@
|
||||
var/location = get_turf(holder.my_atom)
|
||||
|
||||
for(var/mob/M in viewers(5, location))
|
||||
M << "\red The solution spews out a metalic foam!"
|
||||
M << "<span class='warning'>The solution spews out a metalic foam!</span>"
|
||||
|
||||
var/datum/effect/effect/system/foam_spread/s = new()
|
||||
s.set_up(created_volume, location, holder, 2)
|
||||
@@ -1272,7 +1271,8 @@
|
||||
|
||||
/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)
|
||||
for(var/i = 1, i <= created_volume, i++)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/sliceable/cheesewheel(location)
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/meatball
|
||||
@@ -1282,8 +1282,10 @@
|
||||
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))
|
||||
/datum/chemical_reaction/meatball/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/meatball(location)
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/dough
|
||||
@@ -1293,8 +1295,10 @@
|
||||
required_reagents = list("egg" = 3, "flour" = 10)
|
||||
result_amount = 1
|
||||
|
||||
/datum/chemical_reaction/dough/on_reaction(var/datum/reagents/holder, var/created_volume)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/dough(get_turf(holder.my_atom))
|
||||
/datum/chemical_reaction/dough/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/dough(location)
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/syntiflesh
|
||||
@@ -1306,7 +1310,8 @@
|
||||
|
||||
/datum/chemical_reaction/syntiflesh/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)
|
||||
for(var/i = 1, i <= created_volume, i++)
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/meat/syntiflesh(location)
|
||||
return
|
||||
|
||||
/datum/chemical_reaction/hot_ramen
|
||||
|
||||
@@ -56,6 +56,52 @@
|
||||
|
||||
-->
|
||||
<div class="commit sansserif">
|
||||
<h2 class="date">28 April 2015</h2>
|
||||
<h3 class="author">Jarcolr updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="rscadd">Added 9 new bar sign designs/sprites.</li>
|
||||
</ul>
|
||||
<h3 class="author">Kelenius updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="rscadd">Good news to the roboticists! The long waited firmware update for the bots has arrived. You can expect the following changes:</li>
|
||||
<li class="rscadd">Medbots have improved the disease detection algorithms.</li>
|
||||
<li class="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.</li>
|
||||
<li class="rscadd">Floorbots have also received an internal low-power metal synthesizer. They will use it to make their own tiles. Slowly.</li>
|
||||
<li class="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.</li>
|
||||
<li class="rscadd">Other minor fixes.</li>
|
||||
<li class="rscdel">The lasertag bots are now forbidden to build and use following the incident #1526672. Please don't let it happen again.</li>
|
||||
<li class="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.</li>
|
||||
<li class="tweak">Spider learning alert: they have learned to recognize the bots and will mercilessly attack them.</li>
|
||||
<li class="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!</li>
|
||||
<li class="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.</li>
|
||||
</ul>
|
||||
<h3 class="author">PsiOmegaDelta updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="rscadd">Beware. Airlocks can now crush more things than just mobs.</li>
|
||||
<li class="rscadd">AIs now have a personal atmospherics control subsystem.</li>
|
||||
<li class="rscadd">Some borg modules now have additional subsystems.</li>
|
||||
<li class="tweak">Improves borg module handling.</li>
|
||||
<li class="tweak">Secure airlocks now buzz when access is denied.</li>
|
||||
<li class="tweak">The mental health office door now requires psychiatrist access, and the related button now opens/closes the door instead of bolting.</li>
|
||||
<li class="soundadd">Restores an old soundtrack 'Thunderdome.ogg'.</li>
|
||||
<li class="rscadd">Some holodeck programs now have custom ambience tracks.</li>
|
||||
</ul>
|
||||
<h3 class="author">RavingManiac updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="rscadd">The phoron research lab has been renovated to include a heat-exchange system, a gas mixer/filter and a waste gas disposal pump.</li>
|
||||
<li class="tweak">Candles now burn for about 30 mintutes.</li>
|
||||
</ul>
|
||||
<h3 class="author">Yoshax updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="tweak">Adds items to the orderable antag surgical kit so its actually useful for surgery.</li>
|
||||
<li class="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.</li>
|
||||
<li class="rscadd">Adds practice rounds, both .45 for Sec and Detective's guns, also 9mm top mounted for the Saber, and for the Bulldog.</li>
|
||||
<li class="rscadd">Adds the .45 and 9mm practice rounds to the armory.</li>
|
||||
<li class="rscadd">Adds all the practice rounds to the autolathe.</li>
|
||||
<li class="tweak">Adds r_walls to the back of the firing range, leaves the sides normal.</li>
|
||||
<li class="bugfix">Fixes HoS' office door to not be CMO locked.</li>
|
||||
</ul>
|
||||
|
||||
<h2 class="date">24 April 2015</h2>
|
||||
<h3 class="author">Dennok updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -1,6 +0,0 @@
|
||||
author: Jarcolr
|
||||
|
||||
delete-after: True
|
||||
|
||||
changes:
|
||||
- rscadd: "Added 9 new bar sign designs/sprites."
|
||||
@@ -1,4 +0,0 @@
|
||||
author: PsiOmegaDelta
|
||||
changes:
|
||||
- rscadd: "Beware. Airlocks can now crush more things than just mobs."
|
||||
delete-after: True
|
||||
@@ -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."
|
||||
@@ -1,4 +0,0 @@
|
||||
author: PsiOmegaDelta
|
||||
delete-after: True
|
||||
changes:
|
||||
- tweak: "Secure airlocks now buzz when access is denied."
|
||||
@@ -0,0 +1,4 @@
|
||||
author: PsiOmegaDelta
|
||||
delete-after: True
|
||||
changes:
|
||||
- rscadd: "Two new events which will cause damage to APCs or cameras when triggered."
|
||||
@@ -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
|
||||
|
||||
@@ -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."
|
||||
@@ -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."
|
||||
@@ -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."
|
||||
@@ -1,5 +0,0 @@
|
||||
author: Yoshax
|
||||
delete-after: True
|
||||
|
||||
changes:
|
||||
- bugfix: "Fixes HoS' office door to not be CMO locked."
|
||||
@@ -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."
|
||||
Reference in New Issue
Block a user