mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-07-20 19:44:46 +01:00
Merge remote-tracking branch 'VOREStation/master' into upstream-merge-6632
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
[diagnostics]
|
||||
macro_redefined = "off"
|
||||
macro_undefined_no_definition = "off"
|
||||
as_local_var = "off"
|
||||
tmp_no_effect = "off"
|
||||
@@ -144,9 +144,8 @@ Class Procs:
|
||||
merge(A.zone,B.zone)
|
||||
return
|
||||
|
||||
var
|
||||
a_to_b = get_dir(A,B)
|
||||
b_to_a = get_dir(B,A)
|
||||
var/a_to_b = get_dir(A,B)
|
||||
var/b_to_a = get_dir(B,A)
|
||||
|
||||
if(!A.connections) A.connections = new
|
||||
if(!B.connections) B.connections = new
|
||||
|
||||
@@ -6,8 +6,8 @@
|
||||
#define RETURN_PRECISE_POSITION(A) new /datum/position(A)
|
||||
#define RETURN_PRECISE_POINT(A) new /datum/point(A)
|
||||
|
||||
#define RETURN_POINT_VECTOR(ATOM, ANGLE, SPEED) {new /datum/point/vector(ATOM, null, null, null, null, ANGLE, SPEED)}
|
||||
#define RETURN_POINT_VECTOR_INCREMENT(ATOM, ANGLE, SPEED, AMT) {new /datum/point/vector(ATOM, null, null, null, null, ANGLE, SPEED, AMT)}
|
||||
#define RETURN_POINT_VECTOR(ATOM, ANGLE, SPEED) (new /datum/point/vector(ATOM, null, null, null, null, ANGLE, SPEED))
|
||||
#define RETURN_POINT_VECTOR_INCREMENT(ATOM, ANGLE, SPEED, AMT) (new /datum/point/vector(ATOM, null, null, null, null, ANGLE, SPEED, AMT))
|
||||
|
||||
/datum/position //For positions with map x/y/z and pixel x/y so you don't have to return lists. Could use addition/subtraction in the future I guess.
|
||||
var/x = 0
|
||||
|
||||
@@ -298,7 +298,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
|
||||
if(CHANNEL.is_admin_channel)
|
||||
dat+="<B><FONT style='BACKGROUND-COLOR: LightGreen '><A href='?src=\ref[src];show_channel=\ref[CHANNEL]'>[CHANNEL.channel_name]</A></FONT></B><BR>"
|
||||
else
|
||||
dat+="<B><A href='?src=\ref[src];show_channel=\ref[CHANNEL]'>[CHANNEL.channel_name]</A> [(CHANNEL.censored) ? ("<FONT COLOR='red'>***</FONT>") : ()]<BR></B>"
|
||||
dat+="<B><A href='?src=\ref[src];show_channel=\ref[CHANNEL]'>[CHANNEL.channel_name]</A> [(CHANNEL.censored) ? ("<FONT COLOR='red'>***</FONT>") : null]<BR></B>"
|
||||
dat+="<BR><HR><A href='?src=\ref[src];refresh=1'>Refresh</A>"
|
||||
dat+="<BR><A href='?src=\ref[src];setScreen=[0]'>Back</A>"
|
||||
if(2)
|
||||
@@ -396,7 +396,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
|
||||
dat+="<I>No feed channels found active...</I><BR>"
|
||||
else
|
||||
for(var/datum/feed_channel/CHANNEL in news_network.network_channels)
|
||||
dat+="<A href='?src=\ref[src];pick_censor_channel=\ref[CHANNEL]'>[CHANNEL.channel_name]</A> [(CHANNEL.censored) ? ("<FONT COLOR='red'>***</FONT>") : ()]<BR>"
|
||||
dat+="<A href='?src=\ref[src];pick_censor_channel=\ref[CHANNEL]'>[CHANNEL.channel_name]</A> [(CHANNEL.censored) ? ("<FONT COLOR='red'>***</FONT>") : null]<BR>"
|
||||
dat+="<BR><A href='?src=\ref[src];setScreen=[0]'>Cancel</A>"
|
||||
if(11)
|
||||
dat+="<B>[using_map.company_name] D-Notice Handler</B><HR>"
|
||||
@@ -407,7 +407,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
|
||||
dat+="<I>No feed channels found active...</I><BR>"
|
||||
else
|
||||
for(var/datum/feed_channel/CHANNEL in news_network.network_channels)
|
||||
dat+="<A href='?src=\ref[src];pick_d_notice=\ref[CHANNEL]'>[CHANNEL.channel_name]</A> [(CHANNEL.censored) ? ("<FONT COLOR='red'>***</FONT>") : ()]<BR>"
|
||||
dat+="<A href='?src=\ref[src];pick_d_notice=\ref[CHANNEL]'>[CHANNEL.channel_name]</A> [(CHANNEL.censored) ? ("<FONT COLOR='red'>***</FONT>") : null]<BR>"
|
||||
|
||||
dat+="<BR><A href='?src=\ref[src];setScreen=[0]'>Back</A>"
|
||||
if(12)
|
||||
|
||||
@@ -818,7 +818,6 @@
|
||||
if(3)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] installs the external armor layer to [holder].", "You install the external armor layer to [holder].")
|
||||
qdel(I)
|
||||
holder.icon_state = "gygax18"
|
||||
else
|
||||
user.visible_message("[user] cuts internal armor layer from [holder].", "You cut the internal armor layer from [holder].")
|
||||
@@ -829,7 +828,8 @@
|
||||
holder.icon_state = "gygax19-s"
|
||||
else
|
||||
user.visible_message("[user] pries the external armor layer from [holder].", "You pry the external armor layer from [holder].")
|
||||
new /obj/item/mecha_parts/part/gygax_armour(get_turf(holder))
|
||||
var/obj/item/stack/material/plasteel/MS = new /obj/item/stack/material/plasteel(get_turf(holder)) // Fixes serenity giving Gygax Armor Plates for the reverse action...
|
||||
MS.amount = 5
|
||||
holder.icon_state = "gygax17"
|
||||
if(1)
|
||||
if(diff==FORWARD)
|
||||
|
||||
@@ -253,6 +253,7 @@
|
||||
if(3)
|
||||
if(diff==FORWARD)
|
||||
user.visible_message("[user] installs external reinforced armor layer to [holder].", "You install external reinforced armor layer to [holder].")
|
||||
qdel(used_atom)//CHOMPedit upstream port. Fixes polecat not useing it's armor plates up.
|
||||
holder.icon_state = "polecat18"
|
||||
else
|
||||
user.visible_message("[user] cuts internal armor layer from [holder].", "You cut the internal armor layer from [holder].")
|
||||
@@ -262,9 +263,8 @@
|
||||
user.visible_message("[user] secures external armor layer.", "You secure external reinforced armor layer.")
|
||||
holder.icon_state = "polecat19"
|
||||
else
|
||||
user.visible_message("[user] pries external armor layer from [holder].", "You prie external armor layer from [holder].")
|
||||
var/obj/item/stack/material/plasteel/MS = new /obj/item/stack/material/plasteel(get_turf(holder))
|
||||
MS.amount = 5
|
||||
user.visible_message("[user] pries external armor layer from [holder].", "You pry the external armor layer from [holder].") // Rykka does smol grammar fix.
|
||||
new /obj/item/mecha_parts/micro/part/polecat_armour(get_turf(holder))// Actually gives you the polecat's armored plates back instead of plasteel.
|
||||
holder.icon_state = "polecat17"
|
||||
if(1)
|
||||
if(diff==FORWARD)
|
||||
|
||||
@@ -249,3 +249,14 @@
|
||||
/obj/item/weapon/stock_parts/capacitor = 1,
|
||||
/obj/item/weapon/stock_parts/spring = 1,
|
||||
/obj/item/stack/cable_coil = 5)
|
||||
|
||||
/obj/item/weapon/circuitboard/microwave/advanced
|
||||
name = T_BOARD("deluxe microwave")
|
||||
build_path = /obj/machinery/microwave/advanced
|
||||
board_type = new /datum/frame/frame_types/microwave
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50)
|
||||
req_components = list(
|
||||
/obj/item/weapon/stock_parts/console_screen = 1,
|
||||
/obj/item/weapon/stock_parts/motor = 1,
|
||||
/obj/item/weapon/stock_parts/capacitor = 1)
|
||||
|
||||
|
||||
@@ -138,7 +138,7 @@
|
||||
/turf/simulated/wall/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
|
||||
user.setClickCooldown(user.get_attack_speed(W))
|
||||
if (!user.)
|
||||
if (!user.IsAdvancedToolUser())
|
||||
to_chat(user, "<span class='warning'>You don't have the dexterity to do this!</span>")
|
||||
return
|
||||
|
||||
|
||||
@@ -369,7 +369,7 @@ proc/admin_notice(var/message, var/rights)
|
||||
if(CHANNEL.is_admin_channel)
|
||||
dat+="<B><FONT style='BACKGROUND-COLOR: LightGreen'><A href='?src=\ref[src];ac_show_channel=\ref[CHANNEL]'>[CHANNEL.channel_name]</A></FONT></B><BR>"
|
||||
else
|
||||
dat+="<B><A href='?src=\ref[src];ac_show_channel=\ref[CHANNEL]'>[CHANNEL.channel_name]</A> [(CHANNEL.censored) ? ("<FONT COLOR='red'>***</FONT>") : ()]<BR></B>"
|
||||
dat+="<B><A href='?src=\ref[src];ac_show_channel=\ref[CHANNEL]'>[CHANNEL.channel_name]</A> [(CHANNEL.censored) ? ("<FONT COLOR='red'>***</FONT>") : null]<BR></B>"
|
||||
dat+={"<BR><HR><A href='?src=\ref[src];ac_refresh=1'>Refresh</A>
|
||||
<BR><A href='?src=\ref[src];ac_setScreen=[0]'>Back</A>
|
||||
"}
|
||||
@@ -453,7 +453,7 @@ proc/admin_notice(var/message, var/rights)
|
||||
dat+="<I>No feed channels found active...</I><BR>"
|
||||
else
|
||||
for(var/datum/feed_channel/CHANNEL in news_network.network_channels)
|
||||
dat+="<A href='?src=\ref[src];ac_pick_censor_channel=\ref[CHANNEL]'>[CHANNEL.channel_name]</A> [(CHANNEL.censored) ? ("<FONT COLOR='red'>***</FONT>") : ()]<BR>"
|
||||
dat+="<A href='?src=\ref[src];ac_pick_censor_channel=\ref[CHANNEL]'>[CHANNEL.channel_name]</A> [(CHANNEL.censored) ? ("<FONT COLOR='red'>***</FONT>") : null]<BR>"
|
||||
dat+="<BR><A href='?src=\ref[src];ac_setScreen=[0]'>Cancel</A>"
|
||||
if(11)
|
||||
dat+={"
|
||||
@@ -466,7 +466,7 @@ proc/admin_notice(var/message, var/rights)
|
||||
dat+="<I>No feed channels found active...</I><BR>"
|
||||
else
|
||||
for(var/datum/feed_channel/CHANNEL in news_network.network_channels)
|
||||
dat+="<A href='?src=\ref[src];ac_pick_d_notice=\ref[CHANNEL]'>[CHANNEL.channel_name]</A> [(CHANNEL.censored) ? ("<FONT COLOR='red'>***</FONT>") : ()]<BR>"
|
||||
dat+="<A href='?src=\ref[src];ac_pick_d_notice=\ref[CHANNEL]'>[CHANNEL.channel_name]</A> [(CHANNEL.censored) ? ("<FONT COLOR='red'>***</FONT>") : null]<BR>"
|
||||
|
||||
dat+="<BR><A href='?src=\ref[src];ac_setScreen=[0]'>Back</A>"
|
||||
if(12)
|
||||
@@ -1223,7 +1223,7 @@ var/datum/announcement/minor/admin_min_announcer = new
|
||||
out += "<b>Autotraitor <a href='?src=\ref[ticker.mode];toggle=autotraitor'>disabled</a></b>.<br/>"
|
||||
|
||||
out += "<b>All antag ids:</b>"
|
||||
if(ticker.mode.antag_templates && ticker.mode.antag_templates.len).
|
||||
if(ticker.mode.antag_templates && ticker.mode.antag_templates.len)
|
||||
for(var/datum/antagonist/antag in ticker.mode.antag_templates)
|
||||
antag.update_current_antag_max()
|
||||
out += " <a href='?src=\ref[ticker.mode];debug_antag=[antag.id]'>[antag.id]</a>"
|
||||
@@ -1532,9 +1532,8 @@ datum/admins/var/obj/item/weapon/paper/admin/faxreply // var to hold fax replies
|
||||
P.stamps += "<hr><i>This paper has been stamped by the [P.origin] Quantum Relay.</i>"
|
||||
|
||||
var/image/stampoverlay = image('icons/obj/bureaucracy.dmi')
|
||||
var/{x; y;}
|
||||
x = rand(-2, 0)
|
||||
y = rand(-1, 2)
|
||||
var/x = rand(-2, 0)
|
||||
var/y = rand(-1, 2)
|
||||
P.offset_x += x
|
||||
P.offset_y += y
|
||||
stampoverlay.pixel_x = x
|
||||
|
||||
@@ -28,10 +28,7 @@ var/datum/admin_secrets/admin_secrets = new()
|
||||
/datum/admin_secret_category
|
||||
var/name = ""
|
||||
var/desc = ""
|
||||
var/list/datum/admin_secret_item/items
|
||||
|
||||
/datum/admin_secret_category
|
||||
items = list()
|
||||
var/list/datum/admin_secret_item/items = list()
|
||||
|
||||
/datum/admin_secret_category/proc/can_view(var/mob/user)
|
||||
for(var/datum/admin_secret_item/item in items)
|
||||
|
||||
@@ -100,7 +100,6 @@
|
||||
slot_r_hand_str = "engiewelding",
|
||||
)
|
||||
|
||||
|
||||
/*
|
||||
* Cakehat
|
||||
*/
|
||||
|
||||
@@ -106,7 +106,6 @@
|
||||
/obj/item/rig_module/self_destruct
|
||||
)
|
||||
|
||||
|
||||
/obj/item/clothing/gloves/gauntlets/rig/light/ninja
|
||||
name = "insulated gloves"
|
||||
siemens_coefficient = 0
|
||||
|
||||
@@ -66,9 +66,8 @@ proc/Ellipsis(original_msg, chance = 50)
|
||||
if(chance <= 0) return "..."
|
||||
if(chance >= 100) return original_msg
|
||||
|
||||
var/list
|
||||
words = splittext(original_msg," ")
|
||||
new_words = list()
|
||||
var/list/words = splittext(original_msg," ")
|
||||
var/list/new_words = list()
|
||||
|
||||
var/new_msg = ""
|
||||
|
||||
|
||||
+280
-280
@@ -1,280 +1,280 @@
|
||||
// Chaos cake
|
||||
|
||||
/datum/recipe/microwave/chaoscake_layerone
|
||||
reagents = list("flour" = 300,"milk" = 200, "sugar" = 100, "egg" = 30)
|
||||
fruit = list("poisonberries" = 15, "cherries" = 15)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat/,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat/,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat/,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat/
|
||||
)
|
||||
result = /obj/structure/chaoscake
|
||||
|
||||
/datum/recipe/microwave/chaoscake_layertwo
|
||||
reagents = list("flour" = 300, "milk" = 200, "sugar" = 100, "egg" = 30, )
|
||||
fruit = list("vanilla" = 15, "banana" = 15)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/dough,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/dough,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/dough,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/dough
|
||||
)
|
||||
result = /obj/item/weapon/chaoscake_layer
|
||||
|
||||
/datum/recipe/microwave/chaoscake_layerthree
|
||||
reagents = list("flour" = 240, "milk" = 150, "sugar" = 80, "egg" = 24, "deathbell" = 100)
|
||||
fruit = list("grapes" = 30)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/dough,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/dough,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/dough
|
||||
)
|
||||
result = /obj/item/weapon/chaoscake_layer/three
|
||||
|
||||
/datum/recipe/microwave/chaoscake_layerfour
|
||||
reagents = list("flour" = 240, "milk" = 150, "sugar" = 80, "egg" = 24, "milkshake" = 300)
|
||||
fruit = list("rice" = 30)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/dough,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/dough,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/dough
|
||||
)
|
||||
result = /obj/item/weapon/chaoscake_layer/four
|
||||
|
||||
/datum/recipe/microwave/chaoscake_layerfive
|
||||
reagents = list("flour" = 180, "milk" = 100, "sugar" = 60, "egg" = 18, "blood" = 300)
|
||||
fruit = list("tomato" = 20)
|
||||
items = list() //supposed to be made with lobster, still has to be ported.
|
||||
result = /obj/item/weapon/chaoscake_layer/five
|
||||
|
||||
/datum/recipe/microwave/chaoscake_layersix
|
||||
reagents = list("flour" = 180, "milk" = 100, "sugar" = 60, "egg" = 18, "sprinkles" = 10)
|
||||
fruit = list("apple" = 30)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/dough,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/dough,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/dough,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/chocolatebar,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/chocolatebar,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/chocolatebar
|
||||
)
|
||||
result = /obj/item/weapon/chaoscake_layer/six
|
||||
|
||||
/datum/recipe/microwave/chaoscake_layerseven
|
||||
reagents = list("flour" = 120, "milk" = 50, "sugar" = 40, "egg" = 12, "devilskiss" = 200)
|
||||
fruit = list("potato" = 10)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/dough,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/dough,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/dough
|
||||
)
|
||||
result = /obj/item/weapon/chaoscake_layer/seven
|
||||
|
||||
/datum/recipe/microwave/chaoscake_layereight
|
||||
reagents = list("flour" = 120, "milk" = 50, "sugar" = 40, "egg" = 12, "cream" = 200)
|
||||
fruit = list("lemon" = 10)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/dough,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/dough,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/dough
|
||||
)
|
||||
result = /obj/item/weapon/chaoscake_layer/eight
|
||||
|
||||
/datum/recipe/microwave/chaoscake_layernine
|
||||
reagents = list("water" = 100, "blood" = 100)
|
||||
fruit = list("goldapple" = 50)
|
||||
items = list()
|
||||
result = /obj/item/weapon/chaoscake_layer/nine
|
||||
|
||||
/obj/structure/chaoscake
|
||||
name = "An unfinished cake"
|
||||
desc = "A single layer of a strange cake, you can see the cherry paste ooze, but it feels very incomplete..."
|
||||
|
||||
icon = 'icons/obj/food64x64.dmi'
|
||||
icon_state = "chaoscake_unfinished-1"
|
||||
pixel_x = -16
|
||||
|
||||
var/slices = 6
|
||||
var/maxslices = 6
|
||||
var/stage = 1
|
||||
var/maxstages = 9
|
||||
var/edible = 0
|
||||
|
||||
var/regentime = 1000
|
||||
var/interval = 0
|
||||
|
||||
var/static/list/desclist2 = list(
|
||||
"The first layer of a strange cake, you can see the cherry paste ooze.",
|
||||
"The second layer of the cake sits in place now, smelling of pear with delicious colourful cream.",
|
||||
"The third layer of cake adds a strange purple layer, glazed over with frosting. It smells of grapes, but with a hint of something foul underneath.",
|
||||
"With the fourth layer added the cake looks happier again. Reeking of vanilla, it brings up memories of childhood joy.",
|
||||
"The fifth layer is extremely disturbing on that cake. Smelling of pure copper, it seems that bright blood clots are forming on top.",
|
||||
"The cake is getting closer with the sixth layer added, the pink hue smelling of chocolate, with colourful sprinkles on top.",
|
||||
"The first pair of triplets rest on the cake, despite being mostly similar to the first three, an evil aura becomes noticable.",
|
||||
"The second pair of triplets rest on the cake, if you stand on the bright side, you can feel a good aura lifting your mood.",
|
||||
"A chaos cake. Both a creation of dark and light, the two cakes are kept in a careful balance by that mystical coin in the middle. It's said its effects would dissipate if the balance is ever tipped in favour of one side too much, so both sides much be cut equally."
|
||||
)
|
||||
|
||||
/obj/item/weapon/chaoscake_layer
|
||||
name = "A layer of cake"
|
||||
desc = "a layer of cake, it is made out of colourful cream."
|
||||
icon = 'icons/obj/food.dmi'
|
||||
icon_state = "chaoscake_layer-2"
|
||||
var/layer_stage = 1
|
||||
|
||||
/obj/item/weapon/chaoscake_layer/three
|
||||
desc = "a layer of cake, glazed in purple."
|
||||
icon_state = "chaoscake_layer-3"
|
||||
layer_stage = 2
|
||||
|
||||
/obj/item/weapon/chaoscake_layer/four
|
||||
desc = "a layer of cake, reminding you of a colouring book."
|
||||
icon_state = "chaoscake_layer-4"
|
||||
layer_stage = 3
|
||||
|
||||
/obj/item/weapon/chaoscake_layer/five
|
||||
desc = "A layer of cake, smells like copper."
|
||||
icon_state = "chaoscake_layer-5"
|
||||
layer_stage = 4
|
||||
|
||||
/obj/item/weapon/chaoscake_layer/six
|
||||
desc = "A layer of cake, featuring colourful sprinkles."
|
||||
icon_state = "chaoscake_layer-6"
|
||||
layer_stage = 5
|
||||
|
||||
/obj/item/weapon/chaoscake_layer/seven
|
||||
desc = "A triplet of evil cake parts."
|
||||
icon_state = "chaoscake_layer-7"
|
||||
layer_stage = 6
|
||||
|
||||
/obj/item/weapon/chaoscake_layer/eight
|
||||
desc = "A triplet of good cake parts."
|
||||
icon_state = "chaoscake_layer-8"
|
||||
layer_stage = 7
|
||||
|
||||
/obj/item/weapon/chaoscake_layer/nine
|
||||
name = "A coin of balance"
|
||||
desc = "A very peculiar coin, it seems to stabilise the air around it."
|
||||
icon_state = "chaoscake_layer-9"
|
||||
layer_stage = 8
|
||||
|
||||
/obj/structure/chaoscake/proc/HasSliceMissing()
|
||||
..()
|
||||
if(slices < maxslices)
|
||||
if(interval >= regentime)
|
||||
interval = 0
|
||||
slices++
|
||||
HasSliceMissing()
|
||||
else
|
||||
interval++
|
||||
HasSliceMissing()
|
||||
else
|
||||
return
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/chaoscakeslice
|
||||
name = "The Chaos Cake Slice"
|
||||
desc = "A slice from The Chaos Cake, it pulses weirdly, as if angry to be seperated from the whole"
|
||||
icon_state = "chaoscake_slice-1"
|
||||
|
||||
center_of_mass = list("x"=16, "y"=10)
|
||||
nutriment_desc = list()
|
||||
nutriment_amt = 4
|
||||
volume = 80
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/chaoscakeslice/Initialize()
|
||||
..()
|
||||
var/i = rand(1,6)
|
||||
icon_state = "chaoscake_slice-[i]"
|
||||
switch(i)
|
||||
if(1)
|
||||
name = "Slice Of Evil" //Pretty damn poisonous, takes a lot of work to make safe for consumption, useful for medical.
|
||||
desc = "An odd slice, despite the grease and cherries oozing off the top, it smells delicious."
|
||||
nutriment_desc = list("The desire to consume" = 10) // You won't even taste the poison.
|
||||
reagents.add_reagent("neurotoxic_protein", 2)
|
||||
reagents.add_reagent("shockchem", 2)
|
||||
reagents.add_reagent("amatoxin", 2)
|
||||
reagents.add_reagent("carpotoxin", 2)
|
||||
reagents.add_reagent("spidertoxin", 2)
|
||||
bitesize = 7
|
||||
if(2)
|
||||
name = "Slice Of Evil" //A bad trip
|
||||
desc = "A mysterious slice, coated in purple frosting that smells like grapes."
|
||||
nutriment_desc = list("The desire to show off an party" = 10)
|
||||
reagents.add_reagent("stoxin", 2)
|
||||
reagents.add_reagent("space_drugs", 10)
|
||||
reagents.add_reagent("serotrotium", 4)
|
||||
reagents.add_reagent("cryptobiolin", 8)
|
||||
reagents.add_reagent("mindbreaker", 10)
|
||||
reagents.add_reagent("psilocybin", 10)
|
||||
bitesize = 30 //even a single bite won't make you escape fate.
|
||||
if(3)
|
||||
name = "Slice Of Evil" //acidic
|
||||
desc = "A menacing slice, smelling clearly of copper, blood clots float on top."
|
||||
nutriment_desc = list("Infernal Rage" = 10)
|
||||
reagents.add_reagent("blood", 20)
|
||||
reagents.add_reagent("stomacid", 10)
|
||||
reagents.add_reagent("mutagen", 4)
|
||||
reagents.add_reagent("thirteenloko", 20)
|
||||
reagents.add_reagent("hyperzine", 10)
|
||||
bitesize = 30
|
||||
if(4)
|
||||
name = "Slice Of Good" //anti-tox
|
||||
desc = "A colourful slice, smelling of pear and coated in delicious cream."
|
||||
nutriment_desc = list("Hapiness" = 10)
|
||||
reagents.add_reagent("anti_toxin", 2)
|
||||
reagents.add_reagent("tricordrazine", 2)
|
||||
bitesize = 3
|
||||
if(5)
|
||||
name = "Slice Of Good" //anti-oxy
|
||||
desc = "A light slice, it's pretty to look at and smells of vanilla."
|
||||
nutriment_desc = list("Freedom" = 10)
|
||||
reagents.add_reagent("dexalinp", 2)
|
||||
reagents.add_reagent("tricordrazine", 2)
|
||||
bitesize = 3
|
||||
if(6)
|
||||
name = "Slice Of Good" //anti-burn/brute
|
||||
desc = "A hearty slice, it smells of chocolate and strawberries."
|
||||
nutriment_desc = list("Love" = 10)
|
||||
reagents.add_reagent("bicaridine", 2)
|
||||
reagents.add_reagent("tricordrazine", 2)
|
||||
reagents.add_reagent("kelotane", 2)
|
||||
bitesize = 4
|
||||
|
||||
/obj/structure/chaoscake/attackby(var/obj/item/weapon/W, var/mob/living/user)
|
||||
if(istype(W,/obj/item/weapon/material/knife))
|
||||
if(edible == 1)
|
||||
HasSliceMissing()
|
||||
if(slices <= 0)
|
||||
user << "The cake hums away quietly as the chaos powered goodness slowly recovers the large amount of lost mass, best to give it a moment before cutting another slice."
|
||||
return
|
||||
else
|
||||
user << "You cut a slice of the cake. The slice looks like the cake was just baked, and you can see before your eyes as the spot where you cut the slice slowly regenerates!"
|
||||
slices = slices - 1
|
||||
icon_state = "chaoscake-[slices]"
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/chaoscakeslice(src.loc)
|
||||
|
||||
else
|
||||
to_chat(user, "<span class='notice'>It looks so good... But it feels so wrong to eat it before it's finished...</span>")
|
||||
return
|
||||
if(istype(W,/obj/item/weapon/chaoscake_layer))
|
||||
var/obj/item/weapon/chaoscake_layer/C = W
|
||||
if(C.layer_stage == 8)
|
||||
user << "Finally! The coin on the top, the almighty chaos cake is complete!"
|
||||
qdel(W)
|
||||
stage++
|
||||
desc = desclist2[stage]
|
||||
icon_state = "chaoscake-6"
|
||||
edible = 1
|
||||
name = "The Chaos Cake!"
|
||||
else if(stage == maxstages)
|
||||
user << "The cake is already done!"
|
||||
else if(stage == C.layer_stage)
|
||||
user << "You add another layer to the cake, nice."
|
||||
qdel(W)
|
||||
stage++
|
||||
desc = desclist2[stage]
|
||||
icon_state = "chaoscake_stage-[stage]"
|
||||
else
|
||||
user << "Hmm, doesnt seem like this layer is supposed to be added there?"
|
||||
|
||||
// Chaos cake
|
||||
|
||||
/datum/recipe/microwave/chaoscake_layerone
|
||||
reagents = list("flour" = 300,"milk" = 200, "sugar" = 100, "egg" = 30)
|
||||
fruit = list("poisonberries" = 15, "cherries" = 15)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat/,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat/,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat/,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/meat/
|
||||
)
|
||||
result = /obj/structure/chaoscake
|
||||
|
||||
/datum/recipe/microwave/chaoscake_layertwo
|
||||
reagents = list("flour" = 300, "milk" = 200, "sugar" = 100, "egg" = 30, )
|
||||
fruit = list("vanilla" = 15, "banana" = 15)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/dough,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/dough,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/dough,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/dough
|
||||
)
|
||||
result = /obj/item/weapon/chaoscake_layer
|
||||
|
||||
/datum/recipe/microwave/chaoscake_layerthree
|
||||
reagents = list("flour" = 240, "milk" = 150, "sugar" = 80, "egg" = 24, "deathbell" = 100)
|
||||
fruit = list("grapes" = 30)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/dough,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/dough,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/dough
|
||||
)
|
||||
result = /obj/item/weapon/chaoscake_layer/three
|
||||
|
||||
/datum/recipe/microwave/chaoscake_layerfour
|
||||
reagents = list("flour" = 240, "milk" = 150, "sugar" = 80, "egg" = 24, "milkshake" = 300)
|
||||
fruit = list("rice" = 30)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/dough,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/dough,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/dough
|
||||
)
|
||||
result = /obj/item/weapon/chaoscake_layer/four
|
||||
|
||||
/datum/recipe/microwave/chaoscake_layerfive
|
||||
reagents = list("flour" = 180, "milk" = 100, "sugar" = 60, "egg" = 18, "blood" = 300)
|
||||
fruit = list("tomato" = 20)
|
||||
items = list() //supposed to be made with lobster, still has to be ported.
|
||||
result = /obj/item/weapon/chaoscake_layer/five
|
||||
|
||||
/datum/recipe/microwave/chaoscake_layersix
|
||||
reagents = list("flour" = 180, "milk" = 100, "sugar" = 60, "egg" = 18, "sprinkles" = 10)
|
||||
fruit = list("apple" = 30)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/dough,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/dough,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/dough,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/chocolatebar,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/chocolatebar,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/chocolatebar
|
||||
)
|
||||
result = /obj/item/weapon/chaoscake_layer/six
|
||||
|
||||
/datum/recipe/microwave/chaoscake_layerseven
|
||||
reagents = list("flour" = 120, "milk" = 50, "sugar" = 40, "egg" = 12, "devilskiss" = 200)
|
||||
fruit = list("potato" = 10)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/dough,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/dough,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/dough
|
||||
)
|
||||
result = /obj/item/weapon/chaoscake_layer/seven
|
||||
|
||||
/datum/recipe/microwave/chaoscake_layereight
|
||||
reagents = list("flour" = 120, "milk" = 50, "sugar" = 40, "egg" = 12, "cream" = 200)
|
||||
fruit = list("lemon" = 10)
|
||||
items = list(
|
||||
/obj/item/weapon/reagent_containers/food/snacks/dough,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/dough,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/dough
|
||||
)
|
||||
result = /obj/item/weapon/chaoscake_layer/eight
|
||||
|
||||
/datum/recipe/microwave/chaoscake_layernine
|
||||
reagents = list("water" = 100, "blood" = 100)
|
||||
fruit = list("goldapple" = 50)
|
||||
items = list()
|
||||
result = /obj/item/weapon/chaoscake_layer/nine
|
||||
|
||||
/obj/structure/chaoscake
|
||||
name = "An unfinished cake"
|
||||
desc = "A single layer of a strange cake, you can see the cherry paste ooze, but it feels very incomplete..."
|
||||
|
||||
icon = 'icons/obj/food64x64.dmi'
|
||||
icon_state = "chaoscake_unfinished-1"
|
||||
pixel_x = -16
|
||||
|
||||
var/slices = 6
|
||||
var/maxslices = 6
|
||||
var/stage = 1
|
||||
var/maxstages = 9
|
||||
var/edible = 0
|
||||
|
||||
var/regentime = 1000
|
||||
var/interval = 0
|
||||
|
||||
var/static/list/desclist2 = list(
|
||||
"The first layer of a strange cake, you can see the cherry paste ooze.",
|
||||
"The second layer of the cake sits in place now, smelling of pear with delicious colourful cream.",
|
||||
"The third layer of cake adds a strange purple layer, glazed over with frosting. It smells of grapes, but with a hint of something foul underneath.",
|
||||
"With the fourth layer added the cake looks happier again. Reeking of vanilla, it brings up memories of childhood joy.",
|
||||
"The fifth layer is extremely disturbing on that cake. Smelling of pure copper, it seems that bright blood clots are forming on top.",
|
||||
"The cake is getting closer with the sixth layer added, the pink hue smelling of chocolate, with colourful sprinkles on top.",
|
||||
"The first pair of triplets rest on the cake, despite being mostly similar to the first three, an evil aura becomes noticable.",
|
||||
"The second pair of triplets rest on the cake, if you stand on the bright side, you can feel a good aura lifting your mood.",
|
||||
"A chaos cake. Both a creation of dark and light, the two cakes are kept in a careful balance by that mystical coin in the middle. It's said its effects would dissipate if the balance is ever tipped in favour of one side too much, so both sides much be cut equally."
|
||||
)
|
||||
|
||||
/obj/item/weapon/chaoscake_layer
|
||||
name = "A layer of cake"
|
||||
desc = "a layer of cake, it is made out of colourful cream."
|
||||
icon = 'icons/obj/food.dmi'
|
||||
icon_state = "chaoscake_layer-2"
|
||||
var/layer_stage = 1
|
||||
|
||||
/obj/item/weapon/chaoscake_layer/three
|
||||
desc = "a layer of cake, glazed in purple."
|
||||
icon_state = "chaoscake_layer-3"
|
||||
layer_stage = 2
|
||||
|
||||
/obj/item/weapon/chaoscake_layer/four
|
||||
desc = "a layer of cake, reminding you of a colouring book."
|
||||
icon_state = "chaoscake_layer-4"
|
||||
layer_stage = 3
|
||||
|
||||
/obj/item/weapon/chaoscake_layer/five
|
||||
desc = "A layer of cake, smells like copper."
|
||||
icon_state = "chaoscake_layer-5"
|
||||
layer_stage = 4
|
||||
|
||||
/obj/item/weapon/chaoscake_layer/six
|
||||
desc = "A layer of cake, featuring colourful sprinkles."
|
||||
icon_state = "chaoscake_layer-6"
|
||||
layer_stage = 5
|
||||
|
||||
/obj/item/weapon/chaoscake_layer/seven
|
||||
desc = "A triplet of evil cake parts."
|
||||
icon_state = "chaoscake_layer-7"
|
||||
layer_stage = 6
|
||||
|
||||
/obj/item/weapon/chaoscake_layer/eight
|
||||
desc = "A triplet of good cake parts."
|
||||
icon_state = "chaoscake_layer-8"
|
||||
layer_stage = 7
|
||||
|
||||
/obj/item/weapon/chaoscake_layer/nine
|
||||
name = "A coin of balance"
|
||||
desc = "A very peculiar coin, it seems to stabilise the air around it."
|
||||
icon_state = "chaoscake_layer-9"
|
||||
layer_stage = 8
|
||||
|
||||
/obj/structure/chaoscake/proc/HasSliceMissing()
|
||||
..()
|
||||
if(slices < maxslices)
|
||||
if(interval >= regentime)
|
||||
interval = 0
|
||||
slices++
|
||||
HasSliceMissing()
|
||||
else
|
||||
interval++
|
||||
HasSliceMissing()
|
||||
else
|
||||
return
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/chaoscakeslice
|
||||
name = "The Chaos Cake Slice"
|
||||
desc = "A slice from The Chaos Cake, it pulses weirdly, as if angry to be seperated from the whole"
|
||||
icon_state = "chaoscake_slice-1"
|
||||
|
||||
center_of_mass = list("x"=16, "y"=10)
|
||||
nutriment_desc = list()
|
||||
nutriment_amt = 4
|
||||
volume = 80
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/chaoscakeslice/Initialize()
|
||||
..()
|
||||
var/i = rand(1,6)
|
||||
icon_state = "chaoscake_slice-[i]"
|
||||
switch(i)
|
||||
if(1)
|
||||
name = "Slice Of Evil" //Pretty damn poisonous, takes a lot of work to make safe for consumption, useful for medical.
|
||||
desc = "An odd slice, despite the grease and cherries oozing off the top, it smells delicious."
|
||||
nutriment_desc = list("The desire to consume" = 10) // You won't even taste the poison.
|
||||
reagents.add_reagent("neurotoxic_protein", 2)
|
||||
reagents.add_reagent("shockchem", 2)
|
||||
reagents.add_reagent("amatoxin", 2)
|
||||
reagents.add_reagent("carpotoxin", 2)
|
||||
reagents.add_reagent("spidertoxin", 2)
|
||||
bitesize = 7
|
||||
if(2)
|
||||
name = "Slice Of Evil" //A bad trip
|
||||
desc = "A mysterious slice, coated in purple frosting that smells like grapes."
|
||||
nutriment_desc = list("The desire to show off an party" = 10)
|
||||
reagents.add_reagent("stoxin", 2)
|
||||
reagents.add_reagent("space_drugs", 10)
|
||||
reagents.add_reagent("serotrotium", 4)
|
||||
reagents.add_reagent("cryptobiolin", 8)
|
||||
reagents.add_reagent("mindbreaker", 10)
|
||||
reagents.add_reagent("psilocybin", 10)
|
||||
bitesize = 30 //even a single bite won't make you escape fate.
|
||||
if(3)
|
||||
name = "Slice Of Evil" //acidic
|
||||
desc = "A menacing slice, smelling clearly of copper, blood clots float on top."
|
||||
nutriment_desc = list("Infernal Rage" = 10)
|
||||
reagents.add_reagent("blood", 20)
|
||||
reagents.add_reagent("stomacid", 10)
|
||||
reagents.add_reagent("mutagen", 4)
|
||||
reagents.add_reagent("thirteenloko", 20)
|
||||
reagents.add_reagent("hyperzine", 10)
|
||||
bitesize = 30
|
||||
if(4)
|
||||
name = "Slice Of Good" //anti-tox
|
||||
desc = "A colourful slice, smelling of pear and coated in delicious cream."
|
||||
nutriment_desc = list("Hapiness" = 10)
|
||||
reagents.add_reagent("anti_toxin", 2)
|
||||
reagents.add_reagent("tricordrazine", 2)
|
||||
bitesize = 3
|
||||
if(5)
|
||||
name = "Slice Of Good" //anti-oxy
|
||||
desc = "A light slice, it's pretty to look at and smells of vanilla."
|
||||
nutriment_desc = list("Freedom" = 10)
|
||||
reagents.add_reagent("dexalinp", 2)
|
||||
reagents.add_reagent("tricordrazine", 2)
|
||||
bitesize = 3
|
||||
if(6)
|
||||
name = "Slice Of Good" //anti-burn/brute
|
||||
desc = "A hearty slice, it smells of chocolate and strawberries."
|
||||
nutriment_desc = list("Love" = 10)
|
||||
reagents.add_reagent("bicaridine", 2)
|
||||
reagents.add_reagent("tricordrazine", 2)
|
||||
reagents.add_reagent("kelotane", 2)
|
||||
bitesize = 4
|
||||
|
||||
/obj/structure/chaoscake/attackby(var/obj/item/weapon/W, var/mob/living/user)
|
||||
if(istype(W,/obj/item/weapon/material/knife))
|
||||
if(edible == 1)
|
||||
HasSliceMissing()
|
||||
if(slices <= 0)
|
||||
user << "The cake hums away quietly as the chaos powered goodness slowly recovers the large amount of lost mass, best to give it a moment before cutting another slice."
|
||||
return
|
||||
else
|
||||
user << "You cut a slice of the cake. The slice looks like the cake was just baked, and you can see before your eyes as the spot where you cut the slice slowly regenerates!"
|
||||
slices = slices - 1
|
||||
icon_state = "chaoscake-[slices]"
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/chaoscakeslice(src.loc)
|
||||
|
||||
else
|
||||
to_chat(user, "<span class='notice'>It looks so good... But it feels so wrong to eat it before it's finished...</span>")
|
||||
return
|
||||
if(istype(W,/obj/item/weapon/chaoscake_layer))
|
||||
var/obj/item/weapon/chaoscake_layer/C = W
|
||||
if(C.layer_stage == 8)
|
||||
user << "Finally! The coin on the top, the almighty chaos cake is complete!"
|
||||
qdel(W)
|
||||
stage++
|
||||
desc = desclist2[stage]
|
||||
icon_state = "chaoscake-6"
|
||||
edible = 1
|
||||
name = "The Chaos Cake!"
|
||||
else if(stage == maxstages)
|
||||
user << "The cake is already done!"
|
||||
else if(stage == C.layer_stage)
|
||||
user << "You add another layer to the cake, nice."
|
||||
qdel(W)
|
||||
stage++
|
||||
desc = desclist2[stage]
|
||||
icon_state = "chaoscake_stage-[stage]"
|
||||
else
|
||||
user << "Hmm, doesnt seem like this layer is supposed to be added there?"
|
||||
|
||||
|
||||
@@ -126,7 +126,7 @@
|
||||
to_chat(user, "<span class='warning'>It's dirty!</span>")
|
||||
return 1
|
||||
else if(is_type_in_list(O,acceptable_items))
|
||||
if (contents.len>=(max_n_of_items + component_parts.len + 1)) //Adds component_parts to the maximum number of items. The 1 is from the circuit
|
||||
if (contents.len>=(max_n_of_items + component_parts.len + circuit_item_capacity)) //Adds component_parts to the maximum number of items. changed 1 to actually just be the circuit item capacity var.
|
||||
to_chat(user, "<span class='warning'>This [src] is full of ingredients, you cannot put more.</span>")
|
||||
return 1
|
||||
if(istype(O, /obj/item/stack) && O:get_amount() > 1) // This is bad, but I can't think of how to change it
|
||||
@@ -310,14 +310,26 @@
|
||||
sleep(5) //VOREStation Edit - Quicker Microwaves
|
||||
return 1
|
||||
|
||||
/obj/machinery/microwave/proc/has_extra_item()
|
||||
for (var/obj/O in ((contents - component_parts) - circuit))
|
||||
if ( \
|
||||
!istype(O,/obj/item/weapon/reagent_containers/food) && \
|
||||
!istype(O, /obj/item/weapon/grown) \
|
||||
)
|
||||
return 1
|
||||
return 0
|
||||
/obj/machinery/microwave/proc/has_extra_item() //- coded to have different microwaves be able to handle different items
|
||||
if(item_level == 0)
|
||||
for (var/obj/O in ((contents - component_parts) - circuit))
|
||||
if ( \
|
||||
!istype(O,/obj/item/weapon/reagent_containers/food) && \
|
||||
!istype(O, /obj/item/weapon/grown) \
|
||||
)
|
||||
return 1
|
||||
return 0
|
||||
if(item_level == 1)
|
||||
for (var/obj/O in ((contents - component_parts) - circuit))
|
||||
if ( \
|
||||
!istype(O, /obj/item/weapon/reagent_containers/food) && \
|
||||
!istype(O, /obj/item/weapon/grown) && \
|
||||
!istype(O, /obj/item/slime_extract) && \
|
||||
!istype(O, /obj/item/organ) && \
|
||||
!istype(O, /obj/item/stack/material) \
|
||||
)
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/obj/machinery/microwave/proc/start()
|
||||
src.visible_message("<span class='notice'>The microwave turns on.</span>", "<span class='notice'>You hear a microwave.</span>")
|
||||
|
||||
@@ -377,7 +377,7 @@
|
||||
return
|
||||
|
||||
// Check if we should even bother working on the current seed datum.
|
||||
if(seed.mutants. && seed.mutants.len && severity > 1)
|
||||
if(seed.mutants && seed.mutants.len && severity > 1)
|
||||
mutate_species()
|
||||
return
|
||||
|
||||
|
||||
@@ -297,7 +297,7 @@
|
||||
user << browse(dat + "<html><head><title>[P.name]</title></head>" \
|
||||
+ "<body style='overflow:hidden'>" \
|
||||
+ "<div> <img src='tmp_photo.png' width = '180'" \
|
||||
+ "[P.scribble ? "<div> Written on the back:<br><i>[P.scribble]</i>" : ]"\
|
||||
+ "[P.scribble ? "<div> Written on the back:<br><i>[P.scribble]</i>" : null]"\
|
||||
+ "</body></html>", "window=[name]")
|
||||
else if(!isnull(pages[page]))
|
||||
if(!(istype(usr, /mob/living/carbon/human) || isobserver(usr) || istype(usr, /mob/living/silicon)))
|
||||
|
||||
@@ -1186,7 +1186,7 @@
|
||||
if(LAZYLEN(species.descriptors))
|
||||
descriptors = list()
|
||||
for(var/desctype in species.descriptors)
|
||||
var/datum/mob_descriptor.descriptor = species.descriptors[desctype]
|
||||
var/datum/mob_descriptor/descriptor = species.descriptors[desctype]
|
||||
descriptors[desctype] = descriptor.default_value
|
||||
|
||||
spawn(0)
|
||||
|
||||
@@ -575,9 +575,8 @@ emp_act
|
||||
return perm
|
||||
|
||||
// This is for preventing harm by being covered in water, which only prometheans need to deal with.
|
||||
// This is not actually used for now since the code for prometheans gets changed a lot.
|
||||
/mob/living/carbon/human/get_water_protection()
|
||||
var/protection = ..() // Todo: Replace with species var later.
|
||||
var/protection = species.water_resistance
|
||||
if(protection == 1) // No point doing permeability checks if it won't matter.
|
||||
return protection
|
||||
// Wearing clothing with a low permeability_coefficient can protect from water.
|
||||
@@ -585,7 +584,7 @@ emp_act
|
||||
var/converted_protection = 1 - protection
|
||||
var/perm = reagent_permeability()
|
||||
converted_protection *= perm
|
||||
return 1-converted_protection
|
||||
return CLAMP(1-converted_protection, 0, 1)
|
||||
|
||||
|
||||
/mob/living/carbon/human/shank_attack(obj/item/W, obj/item/weapon/grab/G, mob/user, hit_zone)
|
||||
@@ -614,4 +613,4 @@ emp_act
|
||||
G.last_action = world.time
|
||||
flick(G.hud.icon_state, G.hud)
|
||||
|
||||
return 1
|
||||
return 1
|
||||
|
||||
@@ -142,6 +142,7 @@
|
||||
"Your skin prickles in the heat."
|
||||
)
|
||||
|
||||
var/water_resistance = 0.1 // How wet the species gets from being splashed. Only really useful for Prometheans.
|
||||
|
||||
var/passive_temp_gain = 0 // Species will gain this much temperature every second
|
||||
var/hazard_high_pressure = HAZARD_HIGH_PRESSURE // Dangerously high pressure.
|
||||
|
||||
@@ -71,6 +71,8 @@ var/datum/species/shapeshifter/promethean/prometheans
|
||||
rarity_value = 5
|
||||
siemens_coefficient = 0.8
|
||||
|
||||
water_resistance = 0
|
||||
|
||||
genders = list(MALE, FEMALE, NEUTER, PLURAL)
|
||||
|
||||
unarmed_types = list(/datum/unarmed_attack/slime_glomp)
|
||||
@@ -171,8 +173,8 @@ var/datum/species/shapeshifter/promethean/prometheans
|
||||
var/regen_burn = TRUE
|
||||
var/regen_tox = TRUE
|
||||
var/regen_oxy = TRUE
|
||||
if(H.fire_stacks < 0) // If you're soaked, you're melting.
|
||||
H.adjustToxLoss(3 * heal_rate) // Tripled because 0.5 is miniscule, and fire_stacks are capped in both directions
|
||||
if(H.fire_stacks < 0 && H.get_water_protection() <= 0.5) // If over half your body is soaked, you're melting.
|
||||
H.adjustToxLoss(max(0,(3 - (3 * H.get_water_protection())) * heal_rate)) // Tripled because 0.5 is miniscule, and fire_stacks are capped in both directions.
|
||||
healing = FALSE
|
||||
|
||||
//Prometheans automatically clean every surface they're in contact with every life tick - this includes the floor without shoes.
|
||||
|
||||
@@ -104,7 +104,7 @@
|
||||
|
||||
if("corrupted") // Load them up with ion laws.
|
||||
var/datum/ai_laws/laws = new() // Start with an empty lawset.
|
||||
for(1 to rand(1, 3))
|
||||
for(var/i in 1 to rand(1, 3))
|
||||
laws.add_ion_law(generate_ion_law(exclude_crew_names = TRUE))
|
||||
return laws
|
||||
|
||||
|
||||
@@ -269,7 +269,7 @@
|
||||
return FALSE
|
||||
|
||||
var/turf/below = GetBelow(src)
|
||||
if((locate(/obj/structure/disposalpipe/up) in below) || locate(/obj/machinery/atmospherics/pipe/zpipe/up in below))
|
||||
if((locate(/obj/structure/disposalpipe/up) in below) || locate(/obj/machinery/atmospherics/pipe/zpipe/up) in below)
|
||||
return FALSE
|
||||
|
||||
/mob/living/can_fall()
|
||||
|
||||
@@ -546,7 +546,7 @@
|
||||
stamps += (stamps=="" ? "<HR>" : "<BR>") + "<i>This paper has been stamped with the [P.name].</i>"
|
||||
|
||||
var/image/stampoverlay = image('icons/obj/bureaucracy.dmi')
|
||||
var/{x; y;}
|
||||
var/x, y
|
||||
if(istype(P, /obj/item/weapon/stamp/captain) || istype(P, /obj/item/weapon/stamp/centcomm))
|
||||
x = rand(-2, 0)
|
||||
y = rand(-1, 2)
|
||||
|
||||
@@ -134,7 +134,7 @@
|
||||
user << browse(dat + "<html><head><title>[P.name]</title></head>" \
|
||||
+ "<body style='overflow:hidden'>" \
|
||||
+ "<div> <img src='tmp_photo.png' width = '180'" \
|
||||
+ "[P.scribble ? "<div> Written on the back:<br><i>[P.scribble]</i>" : ]"\
|
||||
+ "[P.scribble ? "<div> Written on the back:<br><i>[P.scribble]</i>" : null]"\
|
||||
+ "</body></html>", "window=[name]")
|
||||
|
||||
/obj/item/weapon/paper_bundle/attack_self(mob/user as mob)
|
||||
|
||||
@@ -1184,7 +1184,7 @@
|
||||
// defines a state machine, returns the new state
|
||||
obj/machinery/power/apc/proc/autoset(var/cur_state, var/on)
|
||||
switch(cur_state)
|
||||
if(POWERCHAN_OFF); //autoset will never turn on a channel set to off
|
||||
//if(POWERCHAN_OFF); //autoset will never turn on a channel set to off
|
||||
if(POWERCHAN_OFF_AUTO)
|
||||
if(on == 1)
|
||||
return POWERCHAN_ON_AUTO
|
||||
|
||||
@@ -194,7 +194,7 @@
|
||||
..()
|
||||
|
||||
/datum/reagent/water/affect_touch(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
if(alien == IS_SLIME)
|
||||
if(alien == IS_SLIME && prob(10))
|
||||
M.visible_message("<span class='warning'>[M]'s flesh sizzles where the water touches it!</span>", "<span class='danger'>Your flesh burns in the water!</span>")
|
||||
..()
|
||||
*/ //VOREStation Edit End.
|
||||
|
||||
@@ -3527,6 +3527,28 @@
|
||||
glass_name = "fusionnaire"
|
||||
glass_desc = "A relatively new cocktail, mostly served in the bars of NanoTrasen owned stations."
|
||||
|
||||
/datum/reagent/ethanol/deathbell
|
||||
name = "Deathbell"
|
||||
id = "deathbell"
|
||||
description = "A successful experiment to make the most alcoholic thing possible."
|
||||
taste_description = "your brains smashed out by a smooth brick of hard, ice cold alcohol"
|
||||
color = "#9f6aff"
|
||||
taste_mult = 5
|
||||
strength = 10
|
||||
adj_temp = 10
|
||||
targ_temp = 330
|
||||
|
||||
glass_name = "Deathbell"
|
||||
glass_desc = "The perfect blend of the most alcoholic things a bartender can get their hands on."
|
||||
|
||||
/datum/reagent/ethanol/deathbell/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
..()
|
||||
|
||||
if(dose * strength >= strength) // Early warning
|
||||
M.make_dizzy(24) // Intentionally higher than normal to compensate for it's previous effects.
|
||||
if(dose * strength >= strength * 2.5) // Slurring takes longer. Again, intentional.
|
||||
M.slurring = max(M.slurring, 30)
|
||||
|
||||
/datum/reagent/nutriment/magicdust
|
||||
name = "Magic Dust"
|
||||
id = "magicdust"
|
||||
|
||||
@@ -2210,6 +2210,13 @@
|
||||
required_reagents = list("sake" = 1, "melonliquor" = 1)
|
||||
result_amount = 2
|
||||
|
||||
/datum/chemical_reaction/drinks/deathbell
|
||||
name = "Deathbell"
|
||||
id = "deathbell"
|
||||
result = "deathbell"
|
||||
required_reagents = list("antifreeze" = 1, "gargleblaster" = 1, "syndicatebomb" =1)
|
||||
result_amount = 3
|
||||
|
||||
/datum/chemical_reaction/bitters
|
||||
name = "Bitters"
|
||||
id = "bitters"
|
||||
|
||||
@@ -614,6 +614,13 @@ CIRCUITS BELOW
|
||||
build_path = /obj/item/weapon/circuitboard/aicore
|
||||
sort_string = "XAAAA"
|
||||
|
||||
/datum/design/circuit/microwave/advanced
|
||||
name = "deluxe microwave"
|
||||
id = "deluxe microwave"
|
||||
req_tech = list(TECH_DATA = 5, TECH_ENGINEERING = 5, TECH_BLUESPACE = 4)
|
||||
build_path = /obj/item/weapon/circuitboard/microwave/advanced
|
||||
sort_string = "MAAAC"
|
||||
|
||||
|
||||
/* I have no idea how this was even running before, but it doesn't seem to be necessary.
|
||||
///////////////////////////////////
|
||||
|
||||
@@ -393,7 +393,7 @@ won't update every console in existence) but it's more of a hassle to do. Also,
|
||||
var/obj/item/weapon/paper/PR = new/obj/item/weapon/paper
|
||||
PR.name = "list of researched technologies"
|
||||
PR.info = "<center><b>[station_name()] Science Laboratories</b>"
|
||||
PR.info += "<h2>[ (text2num(href_list["print"]) == 2) ? "Detailed" : ] Research Progress Report</h2>"
|
||||
PR.info += "<h2>[ (text2num(href_list["print"]) == 2) ? "Detailed" : null] Research Progress Report</h2>"
|
||||
PR.info += "<i>report prepared at [stationtime2text()] station time</i></center><br>"
|
||||
if(text2num(href_list["print"]) == 2)
|
||||
PR.info += GetResearchListInfo()
|
||||
|
||||
@@ -53,10 +53,9 @@
|
||||
if(/token/word)
|
||||
return new/node/expression/value/variable(T.value)
|
||||
if(/token/accessor)
|
||||
var
|
||||
token/accessor/A=T
|
||||
node/expression/value/variable/E//=new(A.member)
|
||||
stack/S=new()
|
||||
var/token/accessor/A=T
|
||||
var/node/expression/value/variable/E//=new(A.member)
|
||||
var/stack/S=new()
|
||||
while(istype(A.object, /token/accessor))
|
||||
S.Push(A)
|
||||
A=A.object
|
||||
@@ -181,11 +180,10 @@
|
||||
- <ParseParamExpression()>
|
||||
*/
|
||||
ParseExpression(list/end=list(/token/end), list/ErrChars=list("{", "}"))
|
||||
var/stack
|
||||
opr=new
|
||||
val=new
|
||||
var/stack/opr=new
|
||||
var/stack/val=new
|
||||
src.expecting=VALUE
|
||||
for()
|
||||
while(TRUE)
|
||||
if(EndOfExpression(end))
|
||||
break
|
||||
if(istype(curToken, /token/symbol) && ErrChars.Find(curToken.value))
|
||||
@@ -278,7 +276,7 @@
|
||||
NextToken() //skip open parenthesis, already found
|
||||
var/loops = 0
|
||||
|
||||
for()
|
||||
while(TRUE)
|
||||
loops++
|
||||
if(loops>=1000)
|
||||
CRASH("Something TERRIBLE has gone wrong in ParseFunctionExpression ;__;")
|
||||
|
||||
@@ -134,7 +134,7 @@ var/const/Represents a special statement in the code triggered by a keyword.
|
||||
parser.NextToken()
|
||||
if(!parser.CheckToken("(", /token/symbol))
|
||||
return KW_FAIL
|
||||
for() //for now parameters can be separated by whitespace - they don't need a comma in between
|
||||
while(TRUE) //for now parameters can be separated by whitespace - they don't need a comma in between
|
||||
if(istype(parser.curToken, /token/symbol))
|
||||
switch(parser.curToken.value)
|
||||
if(",")
|
||||
|
||||
@@ -172,7 +172,7 @@
|
||||
if(!CheckToken("(", /token/symbol)) //Check for and skip open parenthesis
|
||||
return
|
||||
var/loops = 0
|
||||
for()
|
||||
while(TRUE)
|
||||
loops++
|
||||
if(loops>=6000)
|
||||
CRASH("Something TERRIBLE has gone wrong in ParseFunctionStatement ;__;")
|
||||
|
||||
@@ -153,8 +153,7 @@
|
||||
start - The character used to start the string.
|
||||
*/
|
||||
ReadString(start)
|
||||
var
|
||||
buf
|
||||
var/buf
|
||||
for(, codepos <= length(code), codepos++)//codepos to length(code))
|
||||
var/char=copytext(code, codepos, codepos+1)
|
||||
switch(char)
|
||||
@@ -189,9 +188,8 @@
|
||||
Reads characters separated by an item in <delim> into a token.
|
||||
*/
|
||||
ReadWord()
|
||||
var
|
||||
char=copytext(code, codepos, codepos+1)
|
||||
buf
|
||||
var/char=copytext(code, codepos, codepos+1)
|
||||
var/buf
|
||||
while(!delim.Find(char) && codepos<=length(code))
|
||||
buf+=char
|
||||
char=copytext(code, ++codepos, codepos+1)
|
||||
@@ -206,9 +204,8 @@
|
||||
Reads a symbol into a token.
|
||||
*/
|
||||
ReadSymbol()
|
||||
var
|
||||
char=copytext(code, codepos, codepos+1)
|
||||
buf
|
||||
var/char=copytext(code, codepos, codepos+1)
|
||||
var/buf
|
||||
|
||||
while(options.symbols.Find(buf+char))
|
||||
buf+=char
|
||||
@@ -223,10 +220,9 @@
|
||||
Reads a number into a token.
|
||||
*/
|
||||
ReadNumber()
|
||||
var
|
||||
char=copytext(code, codepos, codepos+1)
|
||||
buf
|
||||
dec=0
|
||||
var/char=copytext(code, codepos, codepos+1)
|
||||
var/buf
|
||||
var/dec=0
|
||||
|
||||
while(options.IsDigit(char) || (char=="." && !dec))
|
||||
if(char==".") dec=1
|
||||
@@ -246,14 +242,13 @@
|
||||
*/
|
||||
|
||||
ReadComment()
|
||||
var
|
||||
char=copytext(code, codepos, codepos+1)
|
||||
nextchar=copytext(code, codepos+1, codepos+2)
|
||||
charstring = char+nextchar
|
||||
comm = 1
|
||||
// 1: single-line comment
|
||||
// 2: multi-line comment
|
||||
expectedend = 0
|
||||
var/char=copytext(code, codepos, codepos+1)
|
||||
var/nextchar=copytext(code, codepos+1, codepos+2)
|
||||
var/charstring = char+nextchar
|
||||
var/comm = 1
|
||||
// 1: single-line comment
|
||||
// 2: multi-line comment
|
||||
var/expectedend = 0
|
||||
|
||||
if(charstring == "//" || charstring == "/*")
|
||||
if(charstring == "/*")
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 119 KiB After Width: | Height: | Size: 122 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 3.4 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 21 KiB |
@@ -1933,6 +1933,7 @@
|
||||
#include "code\modules\food\food\snacks.dm"
|
||||
#include "code\modules\food\food\snacks_vr.dm"
|
||||
#include "code\modules\food\food\z_custom_food_vr.dm"
|
||||
#include "code\modules\food\food\thecake.dm"
|
||||
#include "code\modules\food\food\drinks\bottle.dm"
|
||||
#include "code\modules\food\food\drinks\cup.dm"
|
||||
#include "code\modules\food\food\drinks\drinkingglass.dm"
|
||||
|
||||
Reference in New Issue
Block a user