diff --git a/SpacemanDMM.toml b/SpacemanDMM.toml new file mode 100644 index 0000000000..500be06fa6 --- /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 7adba1474f..be103e7a55 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 c5c392e126..eb5127aed6 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 048c1563b9..9f61a8ab7c 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/mecha/mecha_construction_paths.dm b/code/game/mecha/mecha_construction_paths.dm index 3cbe670a41..e345013e3d 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 6857d7b1c4..a63322b5a3 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].") @@ -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) diff --git a/code/game/objects/items/weapons/circuitboards/frame.dm b/code/game/objects/items/weapons/circuitboards/frame.dm index 6b59d13ea5..5bd472be6c 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/game/turfs/simulated/wall_attacks.dm b/code/game/turfs/simulated/wall_attacks.dm index 676ad392f0..f9ae1e7bc3 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 c23a6020b0..500bc42633 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 a0e5e24804..22430f17a3 100644 --- a/code/modules/admin/admin_secrets.dm +++ b/code/modules/admin/admin_secrets.dm @@ -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) diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm index a9232aa65c..643c335f73 100644 --- a/code/modules/clothing/head/misc_special.dm +++ b/code/modules/clothing/head/misc_special.dm @@ -100,7 +100,6 @@ slot_r_hand_str = "engiewelding", ) - /* * Cakehat */ diff --git a/code/modules/clothing/spacesuits/rig/suits/light.dm b/code/modules/clothing/spacesuits/rig/suits/light.dm index 5291b73cb8..edf982464d 100644 --- a/code/modules/clothing/spacesuits/rig/suits/light.dm +++ b/code/modules/clothing/spacesuits/rig/suits/light.dm @@ -106,7 +106,6 @@ /obj/item/rig_module/self_destruct ) - /obj/item/clothing/gloves/gauntlets/rig/light/ninja name = "insulated gloves" siemens_coefficient = 0 diff --git a/code/modules/flufftext/TextFilters.dm b/code/modules/flufftext/TextFilters.dm index c7582fe952..bc133a83b8 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/food/food/thecake.dm b/code/modules/food/food/thecake.dm index ab0a48209c..5de17b36c6 100644 --- a/code/modules/food/food/thecake.dm +++ b/code/modules/food/food/thecake.dm @@ -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, "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?" - +// 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, "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 3863e2c57c..cd8d4435da 100644 --- a/code/modules/food/kitchen/microwave.dm +++ b/code/modules/food/kitchen/microwave.dm @@ -126,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 @@ -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("The microwave turns on.", "You hear a microwave.") diff --git a/code/modules/hydroponics/trays/tray.dm b/code/modules/hydroponics/trays/tray.dm index d86f19adeb..2e5d64c244 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 9b9be0d6c8..894ff9e8d7 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 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"