Written on the back:
[P.scribble]" : null]"\
+ "", "window=[name]")
else if(!isnull(pages[page]))
if(!(istype(usr, /mob/living/carbon/human) || isobserver(usr) || istype(usr, /mob/living/silicon)))
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index f1efd4933d..643287cb19 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -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)
diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm
index 57cef190ec..a474490fbc 100644
--- a/code/modules/mob/living/carbon/human/human_defense.dm
+++ b/code/modules/mob/living/carbon/human/human_defense.dm
@@ -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
\ No newline at end of file
+ return 1
diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm
index dfc44661c8..37a8cc2b6d 100644
--- a/code/modules/mob/living/carbon/human/species/species.dm
+++ b/code/modules/mob/living/carbon/human/species/species.dm
@@ -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.
diff --git a/code/modules/mob/living/carbon/human/species/station/prometheans.dm b/code/modules/mob/living/carbon/human/species/station/prometheans.dm
index 55d11cd701..68a4ab1375 100644
--- a/code/modules/mob/living/carbon/human/species/station/prometheans.dm
+++ b/code/modules/mob/living/carbon/human/species/station/prometheans.dm
@@ -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.
diff --git a/code/modules/mob/living/silicon/robot/subtypes/lost_drone.dm b/code/modules/mob/living/silicon/robot/subtypes/lost_drone.dm
index 9d41f8b59b..d374562230 100644
--- a/code/modules/mob/living/silicon/robot/subtypes/lost_drone.dm
+++ b/code/modules/mob/living/silicon/robot/subtypes/lost_drone.dm
@@ -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
diff --git a/code/modules/multiz/movement.dm b/code/modules/multiz/movement.dm
index c3eae7b359..59ef1182d0 100644
--- a/code/modules/multiz/movement.dm
+++ b/code/modules/multiz/movement.dm
@@ -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()
diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm
index 87dbadf800..13255f9c21 100644
--- a/code/modules/paperwork/paper.dm
+++ b/code/modules/paperwork/paper.dm
@@ -546,7 +546,7 @@
stamps += (stamps=="" ? "
" : "
") + "
This paper has been stamped with the [P.name]."
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)
diff --git a/code/modules/paperwork/paper_bundle.dm b/code/modules/paperwork/paper_bundle.dm
index 2e3bfb2f79..5a15777b72 100644
--- a/code/modules/paperwork/paper_bundle.dm
+++ b/code/modules/paperwork/paper_bundle.dm
@@ -134,7 +134,7 @@
user << browse(dat + "
[P.name]" \
+ "" \
+ "

Written on the back:
[P.scribble]" : ]"\
+ + "[P.scribble ? "
Written on the back:
[P.scribble]" : null]"\
+ "", "window=[name]")
/obj/item/weapon/paper_bundle/attack_self(mob/user as mob)
diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm
index b1bb7816f1..ecc685e435 100644
--- a/code/modules/power/apc.dm
+++ b/code/modules/power/apc.dm
@@ -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
diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Core.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Core.dm
index cbe7dd9c5b..ed68723d15 100644
--- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Core.dm
+++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Core.dm
@@ -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("
[M]'s flesh sizzles where the water touches it!", "
Your flesh burns in the water!")
..()
*/ //VOREStation Edit End.
diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm
index 9659d84844..3fd9bc0598 100644
--- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm
+++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm
@@ -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"
diff --git a/code/modules/reagents/Chemistry-Recipes.dm b/code/modules/reagents/Chemistry-Recipes.dm
index 932ab5063a..d709134b98 100644
--- a/code/modules/reagents/Chemistry-Recipes.dm
+++ b/code/modules/reagents/Chemistry-Recipes.dm
@@ -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"
diff --git a/code/modules/research/designs/circuits/circuits.dm b/code/modules/research/designs/circuits/circuits.dm
index 2a8bb638bd..63150b8967 100644
--- a/code/modules/research/designs/circuits/circuits.dm
+++ b/code/modules/research/designs/circuits/circuits.dm
@@ -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.
///////////////////////////////////
diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm
index 5346f50e6e..2aa6a9913f 100755
--- a/code/modules/research/rdconsole.dm
+++ b/code/modules/research/rdconsole.dm
@@ -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 = "
[station_name()] Science Laboratories"
- PR.info += "[ (text2num(href_list["print"]) == 2) ? "Detailed" : ] Research Progress Report
"
+ PR.info += "[ (text2num(href_list["print"]) == 2) ? "Detailed" : null] Research Progress Report
"
PR.info += "report prepared at [stationtime2text()] station time"
if(text2num(href_list["print"]) == 2)
PR.info += GetResearchListInfo()
diff --git a/code/modules/scripting/Parser/Expressions.dm b/code/modules/scripting/Parser/Expressions.dm
index f27a30d3ad..14fa1b297c 100644
--- a/code/modules/scripting/Parser/Expressions.dm
+++ b/code/modules/scripting/Parser/Expressions.dm
@@ -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 @@
-
*/
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 ;__;")
diff --git a/code/modules/scripting/Parser/Keywords.dm b/code/modules/scripting/Parser/Keywords.dm
index 7d933c52ef..94e6f41afe 100644
--- a/code/modules/scripting/Parser/Keywords.dm
+++ b/code/modules/scripting/Parser/Keywords.dm
@@ -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(",")
diff --git a/code/modules/scripting/Parser/Parser.dm b/code/modules/scripting/Parser/Parser.dm
index ad961c755f..fa7dd8789f 100644
--- a/code/modules/scripting/Parser/Parser.dm
+++ b/code/modules/scripting/Parser/Parser.dm
@@ -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 ;__;")
diff --git a/code/modules/scripting/Scanner/Scanner.dm b/code/modules/scripting/Scanner/Scanner.dm
index 0162119760..78c120a22e 100644
--- a/code/modules/scripting/Scanner/Scanner.dm
+++ b/code/modules/scripting/Scanner/Scanner.dm
@@ -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 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 == "/*")
diff --git a/icons/obj/food.dmi b/icons/obj/food.dmi
index a68bc39c86..d3f2b6273b 100644
Binary files a/icons/obj/food.dmi and b/icons/obj/food.dmi differ
diff --git a/icons/obj/food64x64.dmi b/icons/obj/food64x64.dmi
new file mode 100644
index 0000000000..5feda38026
Binary files /dev/null and b/icons/obj/food64x64.dmi differ
diff --git a/icons/obj/kitchen.dmi b/icons/obj/kitchen.dmi
index 6c5a251283..45cbd2be03 100644
Binary files a/icons/obj/kitchen.dmi and b/icons/obj/kitchen.dmi differ
diff --git a/vorestation.dme b/vorestation.dme
index bce7bb0c1a..48602742b6 100644
--- a/vorestation.dme
+++ b/vorestation.dme
@@ -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"