diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm
index b0d1a1e15f..332abc11bd 100644
--- a/_maps/map_files/BoxStation/BoxStation.dmm
+++ b/_maps/map_files/BoxStation/BoxStation.dmm
@@ -17830,7 +17830,7 @@
/turf/open/floor/wood,
/area/service/bar)
"aRx" = (
-/obj/machinery/computer/arcade/minesweeper,
+/obj/machinery/computer/arcade/orion_trail,
/turf/open/floor/wood,
/area/service/bar)
"aRy" = (
@@ -60122,7 +60122,7 @@
/turf/open/floor/plasteel,
/area/commons/dorms)
"nZL" = (
-/obj/machinery/computer/arcade/minesweeper,
+/obj/machinery/computer/arcade/orion_trail,
/turf/open/floor/wood,
/area/command/heads_quarters/captain)
"oax" = (
@@ -64938,7 +64938,7 @@
/turf/open/floor/plasteel,
/area/security/prison/upper)
"vim" = (
-/obj/machinery/computer/arcade/minesweeper,
+/obj/machinery/computer/arcade/battle,
/obj/effect/decal/cleanable/dirt,
/obj/structure/cable{
icon_state = "1-2"
diff --git a/_maps/map_files/CogStation/CogStation.dmm b/_maps/map_files/CogStation/CogStation.dmm
index 74debaa989..c5e8df8ed2 100644
--- a/_maps/map_files/CogStation/CogStation.dmm
+++ b/_maps/map_files/CogStation/CogStation.dmm
@@ -858,7 +858,7 @@
/turf/open/floor/plating/airless,
/area/router/aux)
"acf" = (
-/obj/machinery/computer/arcade/minesweeper,
+/obj/machinery/computer/arcade/battle,
/turf/open/floor/carpet/arcade,
/area/commons/arcade)
"acg" = (
@@ -4505,7 +4505,7 @@
/area/maintenance/solars/starboard/fore)
"alg" = (
/obj/structure/frame/machine,
-/obj/item/circuitboard/computer/arcade/minesweeper,
+/obj/item/circuitboard/computer/arcade/orion_trail,
/turf/open/floor/plating,
/area/construction/secondary)
"alh" = (
diff --git a/_maps/map_files/LambdaStation/dorms.dmm b/_maps/map_files/LambdaStation/dorms.dmm
index afe85da6cc..e1133584b8 100644
--- a/_maps/map_files/LambdaStation/dorms.dmm
+++ b/_maps/map_files/LambdaStation/dorms.dmm
@@ -9501,7 +9501,7 @@
/obj/machinery/camera/autoname{
dir = 4
},
-/obj/machinery/computer/arcade/minesweeper{
+/obj/machinery/computer/arcade/orion_trail{
dir = 4
},
/turf/open/floor/plasteel,
diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm
index 5b5885aca6..cc78b62bdc 100644
--- a/_maps/map_files/MetaStation/MetaStation.dmm
+++ b/_maps/map_files/MetaStation/MetaStation.dmm
@@ -70208,7 +70208,7 @@
},
/area/command/gateway)
"pCQ" = (
-/obj/machinery/computer/arcade/minesweeper{
+/obj/machinery/computer/arcade/battle{
dir = 4
},
/turf/open/floor/plasteel,
diff --git a/_maps/map_files/Snaxi/Snaxi.dmm b/_maps/map_files/Snaxi/Snaxi.dmm
index d9cf6c7948..1db8a64a97 100644
--- a/_maps/map_files/Snaxi/Snaxi.dmm
+++ b/_maps/map_files/Snaxi/Snaxi.dmm
@@ -870,7 +870,7 @@
/obj/machinery/light{
dir = 4
},
-/obj/machinery/computer/arcade/minesweeper{
+/obj/machinery/computer/arcade/orion_trail{
dir = 8
},
/obj/structure/sign/poster/official/nanomichi_ad{
@@ -5842,7 +5842,7 @@
/turf/open/floor/plating,
/area/maintenance/aft/secondary)
"akQ" = (
-/obj/machinery/computer/arcade/minesweeper,
+/obj/machinery/computer/arcade/battle,
/turf/open/floor/plasteel/dark,
/area/security/prison)
"akR" = (
@@ -34938,7 +34938,7 @@
dir = 1;
pixel_y = -24
},
-/obj/machinery/computer/arcade/minesweeper{
+/obj/machinery/computer/arcade/orion_trail{
dir = 4
},
/turf/open/floor/plasteel/dark,
diff --git a/auxmos.dll b/auxmos.dll
index 52e01b515a..d16063c4e4 100644
Binary files a/auxmos.dll and b/auxmos.dll differ
diff --git a/auxmos.pdb b/auxmos.pdb
index 0f5a534a12..86b751346e 100644
Binary files a/auxmos.pdb and b/auxmos.pdb differ
diff --git a/code/controllers/subsystem/vote.dm b/code/controllers/subsystem/vote.dm
index 869a6e93dc..0e29e80245 100644
--- a/code/controllers/subsystem/vote.dm
+++ b/code/controllers/subsystem/vote.dm
@@ -326,7 +326,7 @@ SUBSYSTEM_DEF(vote)
return message_admins("A vote has tried to change the gamemode, but the game has already started. Aborting.")
GLOB.master_mode = "dynamic"
if(. == "extended")
- GLOB.dynamic_forced_extended = TRUE
+ GLOB.dynamic_extended = TRUE
message_admins("The gamemode has been voted for, and has been changed to: [GLOB.master_mode]")
log_admin("Gamemode has been voted for and switched to: [GLOB.master_mode].")
if("restart")
diff --git a/code/datums/atmosphere/planetary.dm b/code/datums/atmosphere/planetary.dm
index f1d2e85755..081777a247 100644
--- a/code/datums/atmosphere/planetary.dm
+++ b/code/datums/atmosphere/planetary.dm
@@ -7,9 +7,9 @@
GAS_N2=10,
)
normal_gases = list(
- GAS_O2=10,
- GAS_N2=10,
- GAS_CO2=10,
+ GAS_O2=5,
+ GAS_N2=5,
+ GAS_CO2=5,
)
restricted_gases = list(
GAS_BZ=0.1,
diff --git a/code/datums/components/crafting/recipes/recipes_primal.dm b/code/datums/components/crafting/recipes/recipes_primal.dm
index 73401a4198..ad71db7c59 100644
--- a/code/datums/components/crafting/recipes/recipes_primal.dm
+++ b/code/datums/components/crafting/recipes/recipes_primal.dm
@@ -295,6 +295,16 @@
/obj/item/stack/sheet/sinew = 1)
category = CAT_PRIMAL
+/datum/crafting_recipe/bone_anvil
+ name = "Bone Anvil"
+ result = /obj/structure/anvil/obtainable/bone
+ time = 200
+ reqs = list(/obj/item/stack/sheet/bone = 6,
+ /obj/item/stack/sheet/sinew = 2,
+ /obj/item/stack/sheet/animalhide/goliath_hide = 2)
+ tools = list(/obj/item/weldingtool/experimental/ashwalker, /obj/item/wirecutters/ashwalker, /obj/item/crowbar/ashwalker)
+ category = CAT_PRIMAL
+
/datum/crafting_recipe/bone_glaive
name = "Necropolis Glaive"
result = /obj/item/kinetic_crusher/glaive/bone
diff --git a/code/datums/materials/basemats.dm b/code/datums/materials/basemats.dm
index a6496622ff..5bf6b8642c 100644
--- a/code/datums/materials/basemats.dm
+++ b/code/datums/materials/basemats.dm
@@ -362,6 +362,7 @@ Unless you know what you're doing, only use the first three numbers. They're in
color = "#e3dac9"
categories = list(MAT_CATEGORY_RIGID = TRUE, MAT_CATEGORY_BASE_RECIPES = TRUE)
sheet_type = /obj/item/stack/sheet/bone
+ strength_modifier = 1.05
value_per_unit = 0.05
armor_modifiers = list("melee" = 1.2, "bullet" = 0.75, "laser" = 0.75, "energy" = 1.2, "bomb" = 1, "bio" = 1, "rad" = 1.5, "fire" = 1.5, "acid" = 1.5)
beauty_modifier = -0.2
diff --git a/code/game/gamemodes/dynamic/dynamic.dm b/code/game/gamemodes/dynamic/dynamic.dm
index e44e8faeca..cbd9c6c8c6 100644
--- a/code/game/gamemodes/dynamic/dynamic.dm
+++ b/code/game/gamemodes/dynamic/dynamic.dm
@@ -1,13 +1,16 @@
#define RULESET_STOP_PROCESSING 1
-#define FAKE_REPORT_CHANCE 8
+#define FAKE_REPORT_CHANCE 20
#define REPORT_NEG_DIVERGENCE -15
#define REPORT_POS_DIVERGENCE 15
+#define EXTENDED_CURVE_CENTER -7
// Are HIGH_IMPACT_RULESETs allowed to stack?
GLOBAL_VAR_INIT(dynamic_no_stacking, TRUE)
// If enabled does not accept or execute any rulesets.
GLOBAL_VAR_INIT(dynamic_forced_extended, FALSE)
+// Antags still allowed, but no roundstart antags + midrounds are low impact
+GLOBAL_VAR_INIT(dynamic_extended, FALSE)
// How high threat is required for HIGH_IMPACT_RULESETs stacking.
// This is independent of dynamic_no_stacking.
GLOBAL_VAR_INIT(dynamic_stacking_limit, 90)
@@ -163,6 +166,7 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1)
dat += "Split parameters: centre = [roundstart_split_curve_centre] ; width = [roundstart_split_curve_width].
"
dat += "On average, [peaceful_percentage]% of the rounds are more peaceful.
"
dat += "Forced extended: [GLOB.dynamic_forced_extended ? "On" : "Off"]
"
+ dat += "Dynamic extended: [GLOB.dynamic_extended ? "On" : "Off"]
"
dat += "No stacking (only one round-ender): [GLOB.dynamic_no_stacking ? "On" : "Off"]
"
dat += "Stacking limit: [GLOB.dynamic_stacking_limit] \[Adjust\]"
dat += "
"
@@ -192,6 +196,8 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1)
return
if (href_list["forced_extended"])
GLOB.dynamic_forced_extended = !GLOB.dynamic_forced_extended
+ else if (href_list["extended"])
+ GLOB.dynamic_extended = !GLOB.dynamic_extended
else if (href_list["no_stacking"])
GLOB.dynamic_no_stacking = !GLOB.dynamic_no_stacking
else if (href_list["adjustthreat"])
@@ -309,9 +315,10 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1)
/// Generates the threat level using lorentz distribution and assigns peaceful_percentage.
/datum/game_mode/dynamic/proc/generate_threat()
+ if(GLOB.dynamic_extended)
+ threat_curve_centre = EXTENDED_CURVE_CENTER
var/relative_threat = LORENTZ_DISTRIBUTION(threat_curve_centre, threat_curve_width)
threat_level = round(lorentz_to_amount(relative_threat), 0.1)
-
peaceful_percentage = round(LORENTZ_CUMULATIVE_DISTRIBUTION(relative_threat, threat_curve_centre, threat_curve_width), 0.01)*100
SSblackbox.record_feedback("tally","dynamic_threat",threat_level,"Initial threat level")
@@ -321,14 +328,18 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1)
/// Generates the midround and roundstart budgets
/datum/game_mode/dynamic/proc/generate_budgets()
- var/relative_round_start_budget_scale = LORENTZ_DISTRIBUTION(roundstart_split_curve_centre, roundstart_split_curve_width)
- round_start_budget = round((lorentz_to_amount(relative_round_start_budget_scale) / 100) * threat_level, 0.1)
- initial_round_start_budget = round_start_budget
- mid_round_budget = threat_level - round_start_budget
+ if(GLOB.dynamic_extended)
+ mid_round_budget = threat_level
+ round_start_budget = 0
+ else
+ var/relative_round_start_budget_scale = LORENTZ_DISTRIBUTION(roundstart_split_curve_centre, roundstart_split_curve_width)
+ round_start_budget = round((lorentz_to_amount(relative_round_start_budget_scale) / 100) * threat_level, 0.1)
+ initial_round_start_budget = round_start_budget
+ mid_round_budget = threat_level - round_start_budget
/datum/game_mode/dynamic/proc/setup_parameters()
log_game("DYNAMIC: Dynamic mode parameters for the round:")
- log_game("DYNAMIC: Centre is [threat_curve_centre], Width is [threat_curve_width], Forced extended is [GLOB.dynamic_forced_extended ? "Enabled" : "Disabled"], No stacking is [GLOB.dynamic_no_stacking ? "Enabled" : "Disabled"].")
+ log_game("DYNAMIC: Centre is [threat_curve_centre], Width is [threat_curve_width], Extended is [GLOB.dynamic_extended ? "Enabled" : "Disabled"], No stacking is [GLOB.dynamic_no_stacking ? "Enabled" : "Disabled"].")
log_game("DYNAMIC: Stacking limit is [GLOB.dynamic_stacking_limit].")
if(GLOB.dynamic_forced_threat_level >= 0)
threat_level = round(GLOB.dynamic_forced_threat_level, 0.1)
@@ -346,9 +357,15 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1)
shown_threat = clamp(threat_level + rand(REPORT_NEG_DIVERGENCE, REPORT_POS_DIVERGENCE), 0, 100)
/datum/game_mode/dynamic/proc/set_cooldowns()
+ var/coeff = GLOB.dynamic_extended ? 2 : 1
+ latejoin_delay_min *= coeff
+ latejoin_delay_max *= coeff
var/latejoin_injection_cooldown_middle = 0.5*(latejoin_delay_max + latejoin_delay_min)
latejoin_injection_cooldown = round(clamp(EXP_DISTRIBUTION(latejoin_injection_cooldown_middle), latejoin_delay_min, latejoin_delay_max)) + world.time
+ midround_delay_min *= coeff
+ midround_delay_max *= coeff
+
var/midround_injection_cooldown_middle = 0.5*(midround_delay_max + midround_delay_min)
midround_injection_cooldown = round(clamp(EXP_DISTRIBUTION(midround_injection_cooldown_middle), midround_delay_min, midround_delay_max)) + world.time
@@ -456,6 +473,9 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1)
if (GLOB.dynamic_forced_extended)
log_game("DYNAMIC: Starting a round of forced extended.")
return TRUE
+ if (GLOB.dynamic_extended)
+ log_game("DYNAMIC: Starting a round of dynamic extended.")
+ return TRUE
var/list/drafted_rules = list()
for (var/datum/dynamic_ruleset/roundstart/rule in roundstart_rules)
if (!rule.weight)
@@ -563,9 +583,10 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1)
return FALSE
// Check if the ruleset is high impact and if a high impact ruleset has been executed
else if(new_rule.flags & HIGH_IMPACT_RULESET)
- if(threat_level < GLOB.dynamic_stacking_limit && GLOB.dynamic_no_stacking)
- if(high_impact_ruleset_executed)
- return FALSE
+ if(GLOB.dynamic_extended)
+ return FALSE
+ if(high_impact_ruleset_executed && threat_level < GLOB.dynamic_stacking_limit && GLOB.dynamic_no_stacking)
+ return FALSE
var/population = current_players[CURRENT_LIVING_PLAYERS].len
if((new_rule.acceptable(population, threat_level) && new_rule.cost <= mid_round_budget) || forced)
@@ -598,8 +619,8 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1)
/datum/game_mode/dynamic/proc/midround_rule_draft()
set waitfor = FALSE
if (midround_injection_cooldown < world.time)
- /*if (GLOB.dynamic_forced_extended)
- return*/
+ if (GLOB.dynamic_forced_extended)
+ return
// Somehow it managed to trigger midround multiple times so this was moved here.
// There is no way this should be able to trigger an injection twice now.
@@ -620,6 +641,11 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1)
for (var/datum/dynamic_ruleset/midround/rule in midround_rules)
if (!rule.weight)
continue
+ if(rule.flags & HIGH_IMPACT_RULESET)
+ if (high_impact_ruleset_executed && threat_level < GLOB.dynamic_stacking_limit && GLOB.dynamic_no_stacking)
+ continue
+ if(GLOB.dynamic_extended)
+ continue
if (rule.acceptable(current_players[CURRENT_LIVING_PLAYERS].len, threat_level) && mid_round_budget >= rule.cost)
rule.trim_candidates()
if (rule.ready())
@@ -642,11 +668,17 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1)
forced_injection = dry_run
return 100
var/chance = 0
- var/max_pop_per_antag = max(5,15 - round(threat_level/10) - round(current_players[CURRENT_LIVING_PLAYERS].len/5))
+ var/effective_living_players = current_players[CURRENT_LIVING_PLAYERS].len
+ if(GLOB.dynamic_extended)
+ effective_living_players = min(effective_living_players, length(SSjob.get_living_sec())*2 + length(SSjob.get_living_heads()))
+ var/max_pop_per_antag = max(5,15 - round(threat_level/10) - round(effective_living_players/5))
if (!current_players[CURRENT_LIVING_ANTAGS].len)
- chance += 50 // No antags at all? let's boost those odds!
+ if(GLOB.dynamic_extended)
+ chance += min(50,effective_living_players*5)
+ else
+ chance += 50 // No antags at all? let's boost those odds!
else
- var/current_pop_per_antag = current_players[CURRENT_LIVING_PLAYERS].len / current_players[CURRENT_LIVING_ANTAGS].len
+ var/current_pop_per_antag = effective_living_players / current_players[CURRENT_LIVING_ANTAGS].len
if (current_pop_per_antag > max_pop_per_antag)
chance += min(50, 25+10*(current_pop_per_antag-max_pop_per_antag))
else
diff --git a/code/game/machinery/autoloom.dm b/code/game/machinery/autoloom.dm
new file mode 100644
index 0000000000..f290ac1a96
--- /dev/null
+++ b/code/game/machinery/autoloom.dm
@@ -0,0 +1,102 @@
+// like a recycler, but for plants only ig
+/obj/machinery/autoloom
+ name = "autoloom"
+ desc = "A large processing machine used to process raw biological matter, like cotton or logs. It also looks like a recycler. There's a display on the side."
+ icon = 'icons/obj/recycling.dmi'
+ icon_state = "grinder-o0"
+ layer = ABOVE_ALL_MOB_LAYER // Overhead
+ density = TRUE
+ circuit = /obj/item/circuitboard/machine/autoloom
+ var/icon_name = "grinder-o"
+ var/eat_dir = WEST
+ var/process_efficiency = 0
+ var/static/list/can_process = typecacheof(list(
+ /obj/item/stack/sheet/cotton,
+ /obj/item/grown/log,
+ /obj/item/grown/cotton
+ ))
+
+/obj/machinery/autoloom/RefreshParts()
+ for(var/obj/item/stock_parts/manipulator/M in component_parts)
+ process_efficiency = M.rating
+
+/obj/machinery/recycler/examine(mob/user)
+ . = ..()
+ . += "Biomatter processing efficiency at [amount_produced*100]%."
+
+/obj/machinery/autoloom/power_change()
+ ..()
+ update_icon()
+
+/obj/machinery/autoloom/attackby(obj/item/I, mob/user, params)
+ if(default_deconstruction_screwdriver(user, "grinder-oOpen", "grinder-o0", I))
+ return
+
+ if(default_pry_open(I))
+ return
+
+ if(default_unfasten_wrench(user, I))
+ return
+
+ if(default_deconstruction_crowbar(I))
+ return
+ return ..()
+
+/obj/machinery/autoloom/update_icon_state()
+ var/is_powered = !(stat & (BROKEN|NOPOWER))
+ icon_state = icon_name + "[is_powered]" // add the blood tag at the end
+
+/obj/machinery/autoloom/CanPass(atom/movable/AM)
+ . = ..()
+ if(!anchored)
+ return
+
+ var/move_dir = get_dir(loc, AM.loc)
+ if(move_dir == eat_dir)
+ return TRUE
+
+/obj/machinery/autoloom/Crossed(atom/movable/AM)
+ eat(AM)
+ . = ..()
+
+/obj/machinery/autoloom/proc/eat(atom/movable/AM0, sound=TRUE)
+ if(stat & (BROKEN|NOPOWER))
+ return
+ if(!isturf(AM0.loc))
+ return //I don't know how you called Crossed() but stop it.
+
+ if(is_type_in_list(AM0, can_process))
+ process_item(AM0)
+
+/obj/machinery/autoloom/proc/process_item(obj/item/I)
+ . = list()
+ for(var/A in I)
+ var/atom/movable/AM = A
+ AM.forceMove(loc)
+ if(AM.loc == loc)
+ . += AM
+
+ I.forceMove(loc)
+ if(istype(I, /obj/item/grown/log))
+ var/obj/item/grown/log/L = I
+ var/seed_modifier = 0
+ if(L.seed)
+ seed_modifier = round(L.seed.potency / 25)
+ new L.plank_type(src.loc, process_efficiency + seed_modifier)
+ qdel(L)
+ return
+
+ if(istype(I, /obj/item/stack/sheet/cotton))
+ var/obj/item/stack/sheet/cotton/RS = I
+ var/tomake = round((RS.amount / 4) * process_efficiency)
+ new RS.loom_result(src.loc, tomake)
+ qdel(RS)
+ return
+
+ if(istype(I, /obj/item/grown/cotton))
+ var/obj/item/grown/cotton/RC = I
+ var/cottonAmt = 1 + round(RC.seed.potency / 25)
+ var/newRaw = new RC.cotton_type(src.loc, cottonAmt)
+ qdel(RC)
+ process_item(newRaw)
+ return
diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm
index dd2ebf287f..e430ac469f 100644
--- a/code/game/machinery/computer/arcade.dm
+++ b/code/game/machinery/computer/arcade.dm
@@ -82,9 +82,8 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list(
// If it's a generic arcade machine, pick a random arcade
// circuit board for it and make the new machine
if(!circuit)
- var/list/gameodds = list(/obj/item/circuitboard/computer/arcade/battle = 33,
- /obj/item/circuitboard/computer/arcade/orion_trail = 33,
- /obj/item/circuitboard/computer/arcade/minesweeper = 33,
+ var/list/gameodds = list(/obj/item/circuitboard/computer/arcade/battle = 50,
+ /obj/item/circuitboard/computer/arcade/orion_trail = 50,
/obj/item/circuitboard/computer/arcade/amputation = 2)
var/thegame = pickweight(gameodds)
var/obj/item/circuitboard/CB = new thegame()
diff --git a/code/game/machinery/computer/arcade/minesweeper.dm b/code/game/machinery/computer/arcade/minesweeper.dm
deleted file mode 100644
index c9c5b30794..0000000000
--- a/code/game/machinery/computer/arcade/minesweeper.dm
+++ /dev/null
@@ -1,413 +0,0 @@
-#define MINESWEEPER_GAME_MAIN_MENU 0
-#define MINESWEEPER_GAME_PLAYING 1
-#define MINESWEEPER_GAME_LOST 2
-#define MINESWEEPER_GAME_WON 3
-#define MINESWEEPERIMG(what) {""} //Basically bypassing asset.icon_tag()
-
-/obj/machinery/computer/arcade/minesweeper
- name = "Minesweeper"
- desc = "An arcade machine that generates grids. It seems that the machine sparks and screeches when a grid is generated, as if it cannot cope with the intensity of generating the grid."
- icon_state = "arcade"
- circuit = /obj/item/circuitboard/computer/arcade/minesweeper
- var/area
- var/difficulty = "" //To show what difficulty you are playing
- var/flag_text = ""
- var/flagging = FALSE
- var/game_status = MINESWEEPER_GAME_MAIN_MENU
- var/mine_limit = 0
- var/mine_placed = 0
- var/mine_sound = TRUE //So it doesn't get repeated when multiple mines are exposed
- var/randomcolour = 1
- var/randomnumber = 1 //Random emagged game iteration number to be displayed, put here so it is persistent across one individual arcade machine
- var/safe_squares_revealed
- var/saved_web = "" //To display the web if you click on the arcade
- var/win_condition
- var/rows = 1
- var/columns = 1
- var/table[31][51] //Make the board boys, 30x50 board
- var/spark_spam = FALSE
-
-/obj/machinery/computer/arcade/minesweeper/interact(mob/user)
- var/emagged = CHECK_BITFIELD(obj_flags, EMAGGED)
- var/dat
- if(game_status == MINESWEEPER_GAME_MAIN_MENU)
- dat += "
| [MINESWEEPERIMG(flag)] | " - if(0) - if(game_status != MINESWEEPER_GAME_PLAYING) - web += "[MINESWEEPERIMG(mine)] | " - else - web += "[MINESWEEPERIMG(hidden)] | " //Make unique hrefs for every square - if(1 to 9) - if(game_status != MINESWEEPER_GAME_PLAYING) - web += "[MINESWEEPERIMG(hidden)] | " - else - web += "[MINESWEEPERIMG(hidden)] | " //Make unique hrefs for every square - if(10) - web += "[MINESWEEPERIMG(minehit)] | " - if(11) - web += "[MINESWEEPERIMG(empty)] | " - if(12) - web += "[MINESWEEPERIMG(1)] | " - if(13) - web += "[MINESWEEPERIMG(2)] | " - if(14) - web += "[MINESWEEPERIMG(3)] | " - if(15) - web += "[MINESWEEPERIMG(4)] | " - if(16) - web += "[MINESWEEPERIMG(5)] | " - if(17) - web += "[MINESWEEPERIMG(6)] | " - if(18) - web += "[MINESWEEPERIMG(7)] | " - if(19) - web += "[MINESWEEPERIMG(8)] | " - CHECK_TICK - web += "" - web += "