From d0f391c6501ab24b5ff04ee9520aee2e1770d79a Mon Sep 17 00:00:00 2001 From: Rykka Date: Mon, 20 Jan 2020 18:22:05 -0700 Subject: [PATCH 01/12] Earlyport mech fixes, Fix Polecat armor issues --- code/game/mecha/mecha_construction_paths.dm | 4 ++-- code/game/mecha/micro/mecha_construction_paths_vr.dm | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/code/game/mecha/mecha_construction_paths.dm b/code/game/mecha/mecha_construction_paths.dm index 3cbe670a41f..e345013e3d1 100644 --- a/code/game/mecha/mecha_construction_paths.dm +++ b/code/game/mecha/mecha_construction_paths.dm @@ -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) diff --git a/code/game/mecha/micro/mecha_construction_paths_vr.dm b/code/game/mecha/micro/mecha_construction_paths_vr.dm index 6857d7b1c45..66272f9be70 100644 --- a/code/game/mecha/micro/mecha_construction_paths_vr.dm +++ b/code/game/mecha/micro/mecha_construction_paths_vr.dm @@ -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].") @@ -263,8 +264,7 @@ 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 + 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) From 0b6ace1a3b71976b3c9b900e63993e0b80719bab Mon Sep 17 00:00:00 2001 From: Rykka Date: Mon, 20 Jan 2020 18:24:56 -0700 Subject: [PATCH 02/12] Smol grammar fix --- code/game/mecha/micro/mecha_construction_paths_vr.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/mecha/micro/mecha_construction_paths_vr.dm b/code/game/mecha/micro/mecha_construction_paths_vr.dm index 66272f9be70..a63322b5a39 100644 --- a/code/game/mecha/micro/mecha_construction_paths_vr.dm +++ b/code/game/mecha/micro/mecha_construction_paths_vr.dm @@ -263,7 +263,7 @@ 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].") + 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) From 5954adfe46d07a6d90c898d7b61784d90b5c3dbc Mon Sep 17 00:00:00 2001 From: Atermonera Date: Mon, 20 Jan 2020 19:51:35 -0800 Subject: [PATCH 03/12] Merge pull request #6622 from Mechoid/WaterResistanceExists Water resistance exists --- code/modules/mob/living/carbon/human/human_defense.dm | 7 +++---- code/modules/mob/living/carbon/human/species/species.dm | 1 + .../mob/living/carbon/human/species/station/prometheans.dm | 6 ++++-- .../reagents/Chemistry-Reagents/Chemistry-Reagents-Core.dm | 2 +- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index 57cef190ecf..a474490fbc9 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 dfc44661c85..37a8cc2b6df 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 55d11cd701e..68a4ab13753 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/reagents/Chemistry-Reagents/Chemistry-Reagents-Core.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Core.dm index cbe7dd9c5b0..ed68723d154 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. From d10a72a77f2b9eab1958f54e8c37f65a0b84415c Mon Sep 17 00:00:00 2001 From: Atermonera Date: Mon, 20 Jan 2020 20:14:07 -0800 Subject: [PATCH 05/12] Adds a mega cooking recipe --- .../items/weapons/circuitboards/frame.dm | 11 + code/modules/food/food/thecake.dm | 280 ++++++++++++++++++ code/modules/food/kitchen/microwave.dm | 46 ++- .../Chemistry-Reagents-Food-Drinks.dm | 22 ++ code/modules/reagents/Chemistry-Recipes.dm | 7 + .../research/designs/circuits/circuits.dm | 7 + icons/obj/food.dmi | Bin 121684 -> 125218 bytes icons/obj/food64x64.dmi | Bin 0 -> 3468 bytes icons/obj/kitchen.dmi | Bin 15787 -> 21892 bytes vorestation.dme | 4 + 10 files changed, 367 insertions(+), 10 deletions(-) create mode 100644 code/modules/food/food/thecake.dm create mode 100644 icons/obj/food64x64.dmi diff --git a/code/game/objects/items/weapons/circuitboards/frame.dm b/code/game/objects/items/weapons/circuitboards/frame.dm index 6b59d13ea56..5bd472be6c6 100644 --- a/code/game/objects/items/weapons/circuitboards/frame.dm +++ b/code/game/objects/items/weapons/circuitboards/frame.dm @@ -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) + diff --git a/code/modules/food/food/thecake.dm b/code/modules/food/food/thecake.dm new file mode 100644 index 00000000000..b9639789b1e --- /dev/null +++ b/code/modules/food/food/thecake.dm @@ -0,0 +1,280 @@ +// Chaos cake + +/datum/recipe/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/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/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/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/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/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/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/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/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, "It looks so good... But it feels so wrong to eat it before it's finished...") + 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?" + diff --git a/code/modules/food/kitchen/microwave.dm b/code/modules/food/kitchen/microwave.dm index 5a237ca1e54..853ba424cab 100644 --- a/code/modules/food/kitchen/microwave.dm +++ b/code/modules/food/kitchen/microwave.dm @@ -12,6 +12,8 @@ var/operating = 0 // Is it on? var/dirty = 0 // = {0..100} Does it need cleaning? var/broken = 0 // ={0,1,2} How broken is it??? + var/circuit_item_capacity = 1 //how many items does the circuit add to max number of items + var/item_level = 0 // items microwave can handle, 0 foodstuff, 1 materials var/global/list/datum/recipe/available_recipes // List of the recipes you can use var/global/list/acceptable_items // List of the items you can put in var/global/list/acceptable_reagents // List of the reagents you can put in @@ -124,7 +126,7 @@ to_chat(user, "It's dirty!") 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, "This [src] is full of ingredients, you cannot put more.") 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 @@ -308,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("The microwave turns on.", "You hear a microwave.") @@ -395,4 +409,16 @@ if ("dispose") dispose() - return \ No newline at end of file + return + +/obj/machinery/microwave/advanced // specifically for complex recipes + name = "deluxe microwave" + icon = 'icons/obj/kitchen.dmi' + icon_state = "mw-deluxe" + circuit = /obj/item/weapon/circuitboard/microwave/advanced + circuit_item_capacity = 100 + item_level = 1 + +/obj/machinery/microwave/advanced/Initialize() + ..() + reagents.maximum_volume = 1000 \ No newline at end of file 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 9659d848443..3fd9bc05985 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 932ab5063a2..d709134b985 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 2a8bb638bde..63150b89674 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/icons/obj/food.dmi b/icons/obj/food.dmi index a68bc39c86df429dcd3c5ccd69bedf1bf49ee556..d3f2b6273bbf2832c5a25c7bf82ac20d81c4123e 100644 GIT binary patch delta 17386 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 delta 13837 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 S4eFo1Kq`uw3bk?;;r|N>`30c> diff --git a/icons/obj/food64x64.dmi b/icons/obj/food64x64.dmi new file mode 100644 index 0000000000000000000000000000000000000000..5feda3802681069d5ff941626198c4c666a814f1 GIT binary patch literal 3468 zcmaJ^X;c&0wmxB&DcA}qQ&bvhKtV-B#vsDQsR0EMTOr!C6UZo&ASnbfDqzG3FEavy z%!&+}h6*ALG-C@0+CZYnAP7l-n5n3G#eKI|uY2EG??`fnMtvXDB;y8c%zRs*i|J|7pw&8hwLub`%fjd%s zpVz-uH)z=xualIm-72>Fv36b5^Hfl%gdXnN~S%HvPqEU5qv9dd_}Y{<)gheKj4YA8k!Adiv*# zgk#TJlCLiM$$t$1N|XDY_IO5T&1I{c_++h?#85OoQW$O2{#@gv*L(Uo3}Z3wEtym} ztl9kamuVeY&81(?x+cc=&czn&`~JI|PMgyHzhT;%->Md2hREcPj*N_r&6J(!=sQXY zQkmF)Ai;D;Jtb{ZCy-CvcxCM|bUEsY7V9Og?PB9{P!M~vF`2B;+(jg|&_4MKfst^j zrAyxGb=gQ}OWIk%T0luY~K>^|&i3@*@x4AqxZO~vv4dM0&xT^-q z<<+H;uzX&GOc7-3wcaZsGl&|d^7|KUf~`0CmJO0kh=(q=zt1%ZYPU-=#R~I(tIv_k zjl5%xCK{5_FKIOPKsuRZ|IhBb=M0vK^=b@c8xQ)?!f{Z+G%O(~d{TJz<*$Q|&6o?D?j~ z=!LXX>DU|OmGqq3xu-!t=?V}wx!8W$`fA$c!;7)JS=qbR@z#WidS&i?)@HyhGFr+y z7{}+3EcCgPbd8uKknZaI=X4;VPnCd-0^|{C|z_E(_~j zHs99k6-kH`9+f_`rglNH1iF_0@Ruc*+izS*`bqg==2ow7_-?11Dn%$M;2&7taOJgB z*)K&J1hbJe=9y7l+v1Jkg&dcr5E_R^&XFwL#C8}#skO(fsu0{d%}Yre+n zgP||YM5WJejwfmftg);icG;oS+%soEjFOcIPK3&QWtufZN|hyd^D@v_4GSrEo9XT_ zbR^d-@2GIsI}`51vAE-FEu{PCuX{v;BJ{Xk?oSR??i@z<*?P${#>pvX>GY*2l{~~> zFySu?Rz(UetUo^S&0B7}HcA%=1P3=ivJA0;hQLd58RxuQwbdL+Sr2Bej@CKrLS@hU z$-A(}e>RjHQ#tuNYdd&b#U#w6U>{rhn>l6XLu3a{oA+=Hp&a%D_sO@%FNcna4^JPs zJSiR>9l)UP1N*@{$RA`;vJKM<-7Yz2UoLfh5ftE=6=646{3<53uaZ!X3Bf)nE4Rez z(9~kFXq(*!^n9UPqh9K*#fg(`w#I+TRil2=rRd6w{UC`BmdbZ4)U{=0fjm>&C#xZq-JvmRBx(b+Dn1_1p=qkC67p(g@XPCO<}9 zlQheJrjR!kHJ(z`QK;8^JGWTFy{ce9wlYQeD{hWRj9)6t=UW|^30n)*ciL2`GU;OV zB3*KoH}gi`N#;{LW+w24$LzMBY%S(S+0;m`Bp5rGP{(+()hh0iId0U9bHhui5#$E4 zg*h5bgEN@{A&XJFN47vWf7WEr*SD~m>CjFYOMS9Zh~UI0j-ng?_

Ue4NvTbVm&g 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 literal 15787 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 0dbcdf6... Merge pull request #6628 from Ketrai/cakebranch:polaris.dme #include "code\modules\food\food\drinks\bottle.dm" #include "code\modules\food\food\drinks\cup.dm" #include "code\modules\food\food\drinks\drinkingglass.dm" From 5bcb9cc9342430a6e17eaf879f7b18c51e0df87a Mon Sep 17 00:00:00 2001 From: Atermonera Date: Mon, 20 Jan 2020 22:05:25 -0800 Subject: [PATCH 06/12] Fix various syntactic problems --- SpacemanDMM.toml | 5 +++ code/ZAS/Controller.dm | 5 ++- code/datums/position_point_vector.dm | 4 +-- code/game/machinery/newscaster.dm | 6 ++-- code/game/turfs/simulated/wall_attacks.dm | 2 +- code/modules/admin/admin.dm | 13 ++++--- code/modules/admin/admin_secrets.dm | 4 +++ code/modules/clothing/head/misc_special.dm | 3 ++ .../clothing/spacesuits/rig/suits/light.dm | 3 ++ code/modules/economy/cash_register.dm | 4 +++ code/modules/economy/retail_scanner.dm | 4 +++ code/modules/flufftext/TextFilters.dm | 5 ++- code/modules/hydroponics/trays/tray.dm | 2 +- code/modules/library/lib_items.dm | 2 +- code/modules/mob/living/carbon/human/human.dm | 2 +- .../silicon/robot/subtypes/lost_drone.dm | 2 +- code/modules/multiz/movement.dm | 2 +- code/modules/paperwork/paper.dm | 2 +- code/modules/paperwork/paper_bundle.dm | 2 +- code/modules/power/apc.dm | 2 +- code/modules/research/rdconsole.dm | 2 +- code/modules/scripting/Parser/Expressions.dm | 16 ++++----- code/modules/scripting/Parser/Keywords.dm | 2 +- code/modules/scripting/Parser/Parser.dm | 2 +- code/modules/scripting/Scanner/Scanner.dm | 35 ++++++++----------- 25 files changed, 72 insertions(+), 59 deletions(-) create mode 100644 SpacemanDMM.toml diff --git a/SpacemanDMM.toml b/SpacemanDMM.toml new file mode 100644 index 00000000000..500be06fa63 --- /dev/null +++ b/SpacemanDMM.toml @@ -0,0 +1,5 @@ +[diagnostics] +macro_redefined = "off" +macro_undefined_no_definition = "off" +as_local_var = "off" +tmp_no_effect = "off" diff --git a/code/ZAS/Controller.dm b/code/ZAS/Controller.dm index 7adba1474f0..be103e7a55f 100644 --- a/code/ZAS/Controller.dm +++ b/code/ZAS/Controller.dm @@ -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 diff --git a/code/datums/position_point_vector.dm b/code/datums/position_point_vector.dm index c5c392e126d..eb5127aed66 100644 --- a/code/datums/position_point_vector.dm +++ b/code/datums/position_point_vector.dm @@ -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 diff --git a/code/game/machinery/newscaster.dm b/code/game/machinery/newscaster.dm index 048c1563b95..9f61a8ab7cb 100644 --- a/code/game/machinery/newscaster.dm +++ b/code/game/machinery/newscaster.dm @@ -298,7 +298,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co if(CHANNEL.is_admin_channel) dat+="[CHANNEL.channel_name]
" else - dat+="[CHANNEL.channel_name] [(CHANNEL.censored) ? ("***") : ()]
" + dat+="[CHANNEL.channel_name] [(CHANNEL.censored) ? ("***") : null]
" dat+="


Refresh" dat+="
Back" if(2) @@ -396,7 +396,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co dat+="No feed channels found active...
" else for(var/datum/feed_channel/CHANNEL in news_network.network_channels) - dat+="[CHANNEL.channel_name] [(CHANNEL.censored) ? ("***") : ()]
" + dat+="[CHANNEL.channel_name] [(CHANNEL.censored) ? ("***") : null]
" dat+="
Cancel" if(11) dat+="[using_map.company_name] D-Notice Handler
" @@ -407,7 +407,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co dat+="No feed channels found active...
" else for(var/datum/feed_channel/CHANNEL in news_network.network_channels) - dat+="[CHANNEL.channel_name] [(CHANNEL.censored) ? ("***") : ()]
" + dat+="[CHANNEL.channel_name] [(CHANNEL.censored) ? ("***") : null]
" dat+="
Back" if(12) diff --git a/code/game/turfs/simulated/wall_attacks.dm b/code/game/turfs/simulated/wall_attacks.dm index 676ad392f09..f9ae1e7bc3b 100644 --- a/code/game/turfs/simulated/wall_attacks.dm +++ b/code/game/turfs/simulated/wall_attacks.dm @@ -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, "You don't have the dexterity to do this!") return diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index c23a6020b09..500bc42633b 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -369,7 +369,7 @@ proc/admin_notice(var/message, var/rights) if(CHANNEL.is_admin_channel) dat+="[CHANNEL.channel_name]
" else - dat+="[CHANNEL.channel_name] [(CHANNEL.censored) ? ("***") : ()]
" + dat+="[CHANNEL.channel_name] [(CHANNEL.censored) ? ("***") : null]
" dat+={"

Refresh
Back "} @@ -453,7 +453,7 @@ proc/admin_notice(var/message, var/rights) dat+="No feed channels found active...
" else for(var/datum/feed_channel/CHANNEL in news_network.network_channels) - dat+="[CHANNEL.channel_name] [(CHANNEL.censored) ? ("***") : ()]
" + dat+="[CHANNEL.channel_name] [(CHANNEL.censored) ? ("***") : null]
" dat+="
Cancel" if(11) dat+={" @@ -466,7 +466,7 @@ proc/admin_notice(var/message, var/rights) dat+="No feed channels found active...
" else for(var/datum/feed_channel/CHANNEL in news_network.network_channels) - dat+="[CHANNEL.channel_name] [(CHANNEL.censored) ? ("***") : ()]
" + dat+="[CHANNEL.channel_name] [(CHANNEL.censored) ? ("***") : null]
" dat+="
Back" if(12) @@ -1223,7 +1223,7 @@ var/datum/announcement/minor/admin_min_announcer = new out += "Autotraitor disabled.
" out += "All antag ids:" - 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 += " [antag.id]" @@ -1532,9 +1532,8 @@ datum/admins/var/obj/item/weapon/paper/admin/faxreply // var to hold fax replies P.stamps += "
This paper has been stamped by the [P.origin] Quantum Relay." 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 diff --git a/code/modules/admin/admin_secrets.dm b/code/modules/admin/admin_secrets.dm index a0e5e248045..e3085293d53 100644 --- a/code/modules/admin/admin_secrets.dm +++ b/code/modules/admin/admin_secrets.dm @@ -28,10 +28,14 @@ var/datum/admin_secrets/admin_secrets = new() /datum/admin_secret_category var/name = "" var/desc = "" +<<<<<<< HEAD var/list/datum/admin_secret_item/items /datum/admin_secret_category items = list() +======= + var/list/datum/admin_secret_item/items = list() +>>>>>>> 9684db1... Merge pull request #6636 from SpaceManiac/patch/syntax /datum/admin_secret_category/proc/can_view(var/mob/user) for(var/datum/admin_secret_item/item in items) diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm index a9232aa65ce..cdb93b8f8d3 100644 --- a/code/modules/clothing/head/misc_special.dm +++ b/code/modules/clothing/head/misc_special.dm @@ -99,7 +99,10 @@ slot_l_hand_str = "engiewelding", slot_r_hand_str = "engiewelding", ) +<<<<<<< HEAD +======= +>>>>>>> 9684db1... Merge pull request #6636 from SpaceManiac/patch/syntax /* * Cakehat diff --git a/code/modules/clothing/spacesuits/rig/suits/light.dm b/code/modules/clothing/spacesuits/rig/suits/light.dm index 5291b73cb8d..ab57f590c03 100644 --- a/code/modules/clothing/spacesuits/rig/suits/light.dm +++ b/code/modules/clothing/spacesuits/rig/suits/light.dm @@ -106,7 +106,10 @@ /obj/item/rig_module/self_destruct ) +<<<<<<< HEAD +======= +>>>>>>> 9684db1... Merge pull request #6636 from SpaceManiac/patch/syntax /obj/item/clothing/gloves/gauntlets/rig/light/ninja name = "insulated gloves" siemens_coefficient = 0 diff --git a/code/modules/economy/cash_register.dm b/code/modules/economy/cash_register.dm index f3402f892e1..b3f9c09a248 100644 --- a/code/modules/economy/cash_register.dm +++ b/code/modules/economy/cash_register.dm @@ -536,4 +536,8 @@ account_to_connect = "Cargo" /obj/machinery/cash_register/civilian +<<<<<<< HEAD account_to_connect = "Civilian" +======= + account_to_connect = "Civilian" +>>>>>>> 9684db1... Merge pull request #6636 from SpaceManiac/patch/syntax diff --git a/code/modules/economy/retail_scanner.dm b/code/modules/economy/retail_scanner.dm index dc5c4e9cea4..678105d4766 100644 --- a/code/modules/economy/retail_scanner.dm +++ b/code/modules/economy/retail_scanner.dm @@ -418,4 +418,8 @@ account_to_connect = "Cargo" /obj/item/device/retail_scanner/civilian +<<<<<<< HEAD account_to_connect = "Civilian" +======= + account_to_connect = "Civilian" +>>>>>>> 9684db1... Merge pull request #6636 from SpaceManiac/patch/syntax diff --git a/code/modules/flufftext/TextFilters.dm b/code/modules/flufftext/TextFilters.dm index c7582fe9520..bc133a83b8c 100644 --- a/code/modules/flufftext/TextFilters.dm +++ b/code/modules/flufftext/TextFilters.dm @@ -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 = "" diff --git a/code/modules/hydroponics/trays/tray.dm b/code/modules/hydroponics/trays/tray.dm index d86f19adebb..2e5d64c244d 100644 --- a/code/modules/hydroponics/trays/tray.dm +++ b/code/modules/hydroponics/trays/tray.dm @@ -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 diff --git a/code/modules/library/lib_items.dm b/code/modules/library/lib_items.dm index 9b9be0d6c8c..894ff9e8d7d 100644 --- a/code/modules/library/lib_items.dm +++ b/code/modules/library/lib_items.dm @@ -297,7 +297,7 @@ user << browse(dat + "[P.name]" \ + "" \ + "
Written on the back:
[P.scribble]" : ]"\ + + "[P.scribble ? "
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 f1efd4933da..643287cb195 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/silicon/robot/subtypes/lost_drone.dm b/code/modules/mob/living/silicon/robot/subtypes/lost_drone.dm index 9d41f8b59bb..d3745622309 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 c3eae7b3596..59ef1182d05 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 87dbadf8004..13255f9c218 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 2e3bfb2f797..5a15777b726 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 b1bb7816f1e..ecc685e4351 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/research/rdconsole.dm b/code/modules/research/rdconsole.dm index 5346f50e6eb..2aa6a9913fa 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 f27a30d3ad3..14fa1b297cd 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 7d933c52ef8..94e6f41afe9 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 ad961c755f0..fa7dd8789fd 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 01621197602..78c120a22ec 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 == "/*") From aeee2fd56dccedcbdc454c4e5e33e54cb7a36b09 Mon Sep 17 00:00:00 2001 From: Novacat <35587478+Novacat@users.noreply.github.com> Date: Tue, 21 Jan 2020 01:10:34 -0500 Subject: [PATCH 07/12] Update admin_secrets.dm --- code/modules/admin/admin_secrets.dm | 7 ------- 1 file changed, 7 deletions(-) diff --git a/code/modules/admin/admin_secrets.dm b/code/modules/admin/admin_secrets.dm index e3085293d53..22430f17a3e 100644 --- a/code/modules/admin/admin_secrets.dm +++ b/code/modules/admin/admin_secrets.dm @@ -28,14 +28,7 @@ var/datum/admin_secrets/admin_secrets = new() /datum/admin_secret_category var/name = "" var/desc = "" -<<<<<<< HEAD - var/list/datum/admin_secret_item/items - -/datum/admin_secret_category - items = list() -======= var/list/datum/admin_secret_item/items = list() ->>>>>>> 9684db1... Merge pull request #6636 from SpaceManiac/patch/syntax /datum/admin_secret_category/proc/can_view(var/mob/user) for(var/datum/admin_secret_item/item in items) From 110d37a4e55fc5dc978f249268b4d5e0759b4800 Mon Sep 17 00:00:00 2001 From: Novacat <35587478+Novacat@users.noreply.github.com> Date: Tue, 21 Jan 2020 01:11:02 -0500 Subject: [PATCH 08/12] Update misc_special.dm --- code/modules/clothing/head/misc_special.dm | 4 ---- 1 file changed, 4 deletions(-) diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm index cdb93b8f8d3..643c335f739 100644 --- a/code/modules/clothing/head/misc_special.dm +++ b/code/modules/clothing/head/misc_special.dm @@ -99,10 +99,6 @@ slot_l_hand_str = "engiewelding", slot_r_hand_str = "engiewelding", ) -<<<<<<< HEAD - -======= ->>>>>>> 9684db1... Merge pull request #6636 from SpaceManiac/patch/syntax /* * Cakehat From c14f3340ff1f87f4fe33ce2102ca115ce6362fca Mon Sep 17 00:00:00 2001 From: Novacat <35587478+Novacat@users.noreply.github.com> Date: Tue, 21 Jan 2020 01:11:19 -0500 Subject: [PATCH 09/12] Update light.dm --- code/modules/clothing/spacesuits/rig/suits/light.dm | 4 ---- 1 file changed, 4 deletions(-) diff --git a/code/modules/clothing/spacesuits/rig/suits/light.dm b/code/modules/clothing/spacesuits/rig/suits/light.dm index ab57f590c03..edf982464de 100644 --- a/code/modules/clothing/spacesuits/rig/suits/light.dm +++ b/code/modules/clothing/spacesuits/rig/suits/light.dm @@ -106,10 +106,6 @@ /obj/item/rig_module/self_destruct ) -<<<<<<< HEAD - -======= ->>>>>>> 9684db1... Merge pull request #6636 from SpaceManiac/patch/syntax /obj/item/clothing/gloves/gauntlets/rig/light/ninja name = "insulated gloves" siemens_coefficient = 0 From 213545ed98726a943c3521a5921f326115499f62 Mon Sep 17 00:00:00 2001 From: Novacat <35587478+Novacat@users.noreply.github.com> Date: Tue, 21 Jan 2020 01:11:42 -0500 Subject: [PATCH 10/12] Update cash_register.dm --- code/modules/economy/cash_register.dm | 4 ---- 1 file changed, 4 deletions(-) diff --git a/code/modules/economy/cash_register.dm b/code/modules/economy/cash_register.dm index b3f9c09a248..f3402f892e1 100644 --- a/code/modules/economy/cash_register.dm +++ b/code/modules/economy/cash_register.dm @@ -536,8 +536,4 @@ account_to_connect = "Cargo" /obj/machinery/cash_register/civilian -<<<<<<< HEAD account_to_connect = "Civilian" -======= - account_to_connect = "Civilian" ->>>>>>> 9684db1... Merge pull request #6636 from SpaceManiac/patch/syntax From 59ef7b48cffdf7b22f983ed970422561b1fc9402 Mon Sep 17 00:00:00 2001 From: Novacat <35587478+Novacat@users.noreply.github.com> Date: Tue, 21 Jan 2020 01:12:12 -0500 Subject: [PATCH 11/12] Update retail_scanner.dm --- code/modules/economy/retail_scanner.dm | 4 ---- 1 file changed, 4 deletions(-) diff --git a/code/modules/economy/retail_scanner.dm b/code/modules/economy/retail_scanner.dm index 678105d4766..dc5c4e9cea4 100644 --- a/code/modules/economy/retail_scanner.dm +++ b/code/modules/economy/retail_scanner.dm @@ -418,8 +418,4 @@ account_to_connect = "Cargo" /obj/item/device/retail_scanner/civilian -<<<<<<< HEAD account_to_connect = "Civilian" -======= - account_to_connect = "Civilian" ->>>>>>> 9684db1... Merge pull request #6636 from SpaceManiac/patch/syntax From 144947be6f0fd0a9fc4036760f6e672b269ec9d4 Mon Sep 17 00:00:00 2001 From: Novacat <35587478+Novacat@users.noreply.github.com> Date: Tue, 21 Jan 2020 01:14:46 -0500 Subject: [PATCH 12/12] Update vorestation.dme --- vorestation.dme | 3 --- 1 file changed, 3 deletions(-) diff --git a/vorestation.dme b/vorestation.dme index bd121a4dde0..48602742b64 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -1931,12 +1931,9 @@ #include "code\modules\food\food\lunch.dm" #include "code\modules\food\food\sandwich.dm" #include "code\modules\food\food\snacks.dm" -<<<<<<< HEAD:vorestation.dme #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" ->>>>>>> 0dbcdf6... Merge pull request #6628 from Ketrai/cakebranch:polaris.dme #include "code\modules\food\food\drinks\bottle.dm" #include "code\modules\food\food\drinks\cup.dm" #include "code\modules\food\food\drinks\drinkingglass.dm"