Minesweeper" //When we need to revert to the main menu we set web as this
+ web = static_web
+ web += sheet.css_tag()
+
+ if(obj_flags & EMAGGED)
+ web = "
MinesweeperMinesweeper EXTREME EDITION: Iteration #[randomnumber]" //Different colour mix for every random number made
+ do_sparks(5, 1, src)
+
+ if(href_list["Main_Menu"])
+ game_status = MINESWEEPER_GAME_MAIN_MENU
+ mine_limit = 0
+ rows = 0
+ columns = 0
+ mine_placed = 0
+ if(href_list["Easy"])
+ playsound(loc, 'sound/arcade/minesweeper_menuselect.ogg', 50, 0, extrarange = -3, falloff = 10)
+ flag_text = "OFF"
+ game_status = MINESWEEPER_GAME_PLAYING
+ reset_board = TRUE
+ difficulty = "Easy"
+ rows = 10 //9x9 board
+ columns = 10
+ mine_limit = 10
+ if(href_list["Intermediate"])
+ playsound(loc, 'sound/arcade/minesweeper_menuselect.ogg', 50, 0, extrarange = -3, falloff = 10)
+ flag_text = "OFF"
+ game_status = MINESWEEPER_GAME_PLAYING
+ reset_board = TRUE
+ difficulty = "Intermediate"
+ rows = 17 //16x16 board
+ columns = 17
+ mine_limit = 40
+ if(href_list["Hard"])
+ playsound(loc, 'sound/arcade/minesweeper_menuselect.ogg', 50, 0, extrarange = -3, falloff = 10)
+ flag_text = "OFF"
+ game_status = MINESWEEPER_GAME_PLAYING
+ reset_board = TRUE
+ difficulty = "Hard"
+ rows = 17 //16x30 board
+ columns = 31
+ mine_limit = 99
+ if(href_list["Custom"])
+ playsound(loc, 'sound/arcade/minesweeper_menuselect.ogg', 50, 0, extrarange = -3, falloff = 10)
+ flag_text = "OFF"
+ game_status = MINESWEEPER_GAME_PLAYING
+ reset_board = TRUE
+ difficulty = "Custom"
+ rows = text2num(input(usr, "How many rows do you want? (Maximum of 30 allowed)", "Minesweeper Rows"))+1 //+1 as dm arrays start at 1
+ columns = text2num(input(usr, "How many columns do you want? (Maximum of 50 allowed)", "Minesweeper Squares"))+1 //+1 as dm arrays start at 1
+ var/grid_area = (rows-1)*(columns-1)
+ mine_limit = text2num(input(usr, "How many mines do you want? (Maximum of [round(grid_area*0.85)] allowed)", "Minesweeper Mines"))
+ custom_generation()
+ if(href_list["Flag"])
+ playsound(loc, 'sound/arcade/minesweeper_boardpress.ogg', 50, 0, extrarange = -3, falloff = 10)
+ if(!flagging)
+ flagging = TRUE
+ flag_text = "ON"
+ else
+ flagging = FALSE
+ flag_text = "OFF"
+
+ if(game_status == MINESWEEPER_GAME_MAIN_MENU)
+ if(obj_flags & EMAGGED)
+ playsound(loc, 'sound/arcade/minesweeper_emag2.ogg', 50, 0, extrarange = -3, falloff = 10)
+ web += "
Explode in the game, explode in real life!
What difficulty do you want to play?
Easy (9x9 board, 10 mines)
Intermediate (16x16 board, 40 mines)
Hard (16x30 board, 99 mines)
Custom"
+ else
+ playsound(loc, 'sound/arcade/minesweeper_startup.ogg', 50, 0, extrarange = -3, falloff = 10)
+ web += web_difficulty_menu
+
+ if(game_status == MINESWEEPER_GAME_PLAYING)
+ prizevended = FALSE
+ mine_sound = TRUE
+
+ area = (rows-1)*(columns-1)
+
+ if(reset_board)
+ mine_placed = 0
+ var/reset_everything = TRUE
+ make_mines(reset_everything)
+
+ safe_squares_revealed = 0
+ win_condition = area-mine_placed
+
+ if(game_status != MINESWEEPER_GAME_MAIN_MENU)
+ for(var/y1=1;y1= 0) //Check that it's not already revealed, and stop flag removal if we're out of flag mode
+ table[y1][x1] += 10
+ if(table[y1][x1] != 10)
+ playsound(loc, 'sound/arcade/minesweeper_boardpress.ogg', 50, 0, extrarange = -3, falloff = 10)
+ else
+ if(game_status != MINESWEEPER_GAME_LOST && game_status != MINESWEEPER_GAME_WON)
+ game_status = MINESWEEPER_GAME_LOST
+ if(obj_flags & EMAGGED && !exploding_hell)
+ exploding_hell = TRUE
+ explode_EVERYTHING()
+ if(mine_sound)
+ switch(rand(1,3)) //Play every time a mine is hit
+ if(1)
+ playsound(loc, 'sound/arcade/minesweeper_explosion1.ogg', 50, 0, extrarange = -3, falloff = 10)
+ if(2)
+ playsound(loc, 'sound/arcade/minesweeper_explosion2.ogg', 50, 0, extrarange = -3, falloff = 10)
+ if(3)
+ playsound(loc, 'sound/arcade/minesweeper_explosion3.ogg', 50, 0, extrarange = -3, falloff = 10)
+ mine_sound = FALSE
+ else
+ playsound(loc, 'sound/arcade/minesweeper_boardpress.ogg', 50, 0, extrarange = -3, falloff = 10)
+ if(table[y1][x1] >= 0) //Check that it's not already flagged
+ table[y1][x1] -= 10
+ else if(table[y1][x1] < 0) //If flagged, remove the flag
+ table[y1][x1] += 10
+ if(href_list["same_board"]) //Reset the board... kinda
+ if(game_status != MINESWEEPER_GAME_PLAYING)
+ game_status = MINESWEEPER_GAME_PLAYING
+ if(table[y1][x1] >= 10) //If revealed, become unrevealed!
+ playsound(loc, 'sound/arcade/minesweeper_menuselect.ogg', 50, 0, extrarange = -3, falloff = 10)
+ table[y1][x1] -= 10
+ if(table[y1][x1] > 10 && !reset_board)
+ safe_squares_revealed += 1
+ var/y2 = y1
+ var/x2 = x1
+ work_squares(y2, x2) //Work squares while in this loop so there's less load
+ reset_board = FALSE
+
+ web += "" //Start setting up the html table
+ web += ""
+ for(var/y1=1;y1"
+ for(var/x1=1;x1[MINESWEEPERIMG(flag)]"
+ else
+ web += "![]() | "
+ if(0)
+ if(game_status != MINESWEEPER_GAME_PLAYING)
+ web += "[MINESWEEPERIMG(mine)] | "
+ else
+ web += "![]() | " //Make unique hrefs for every square
+ if(1 to 9)
+ if(game_status != MINESWEEPER_GAME_PLAYING)
+ web += "[MINESWEEPERIMG(hidden)] | "
+ else
+ web += "![]() | " //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)] | "
+ web += ""
+ web += "
"
+ web += ""
+ web += "
"
+
+ if(safe_squares_revealed >= win_condition && game_status == MINESWEEPER_GAME_PLAYING)
+ game_status = MINESWEEPER_GAME_WON
+
+ if(game_status == MINESWEEPER_GAME_WON)
+ if(rows < 10 || columns < 10) //If less than easy difficulty
+ if(!prizevended)
+ playsound(loc, 'sound/arcade/minesweeper_winfail.ogg', 50, 0, extrarange = -3, falloff = 10)
+ say("You cleared the board of all mines, but you picked too small of a board! Try again with at least a 9x9 board!")
+ prizevended = TRUE
+ web += "You won, but your board was too small! Pick a bigger board next time!
Want to play again?
Easy (9x9 board, 10 mines)
Intermediate (16x16 board, 40 mines)
Hard (16x30 board, 99 mines)
Custom
Play on the same board
Return to Main Menu
"
+ else
+ if(!prizevended)
+ playsound(loc, 'sound/arcade/minesweeper_win.ogg', 50, 0, extrarange = -3, falloff = 10)
+ say("You cleared the board of all mines! Congratulations!")
+ if(obj_flags & EMAGGED)
+ var/itemname
+ switch(rand(1,3))
+ if(1)
+ itemname = "a syndicate bomb beacon"
+ new /obj/item/sbeacondrop/bomb(loc)
+ if(2)
+ itemname = "a grenade launcher"
+ new /obj/item/gun/ballistic/revolver/grenadelauncher/unrestricted(loc)
+ new /obj/item/ammo_casing/a40mm(loc)
+ new /obj/item/ammo_casing/a40mm(loc)
+ new /obj/item/ammo_casing/a40mm(loc)
+ if(3)
+ itemname = "two bags of c4"
+ new /obj/item/storage/backpack/duffelbag/syndie/c4(loc)
+ new /obj/item/storage/backpack/duffelbag/syndie/x4(loc)
+ message_admins("[key_name_admin(user)] won emagged Minesweeper and got [itemname]!")
+ visible_message("[src] dispenses [itemname]!", "You hear a chime and a clunk.")
+ else
+ prizevend(user)
+ prizevended = TRUE
+ web += "Congratulations, you have won!
Want to play again?
Easy (9x9 board, 10 mines)
Intermediate (16x16 board, 40 mines)
Hard (16x30 board, 99 mines)
Custom
Play on the same board
Return to Main Menu
"
+
+ if(game_status == MINESWEEPER_GAME_LOST)
+ web += "You have lost!
Try again?
Easy (9x9 board, 10 mines)
Intermediate (16x16 board, 40 mines)
Hard (16x30 board, 99 mines)
Custom
Play on the same board
Return to Main Menu
"
+
+ if(game_status == MINESWEEPER_GAME_PLAYING)
+ web += "Return to Main Menu
"
+ web += ""
+
+ web += " "
+ saved_web = web
+ user << browse(web,"window=minesweeper,size=400x500")
+ return
+
+/obj/machinery/computer/arcade/minesweeper/emag_act(mob/user)
+ if(obj_flags & EMAGGED)
+ return
+ desc = "An arcade machine that generates grids. It's clunking and sparking everywhere, almost as if threatening to explode at any moment!"
+ do_sparks(5, 1, src)
+ randomnumber = rand(1,255)
+ randomcolour = rgb(randomnumber,randomnumber/2,randomnumber/3)
+ obj_flags |= EMAGGED
+ if(game_status == MINESWEEPER_GAME_MAIN_MENU)
+ to_chat(user, "
An ominous tune plays from the arcade's speakers!")
+ playsound(user, 'sound/arcade/minesweeper_emag1.ogg', 100, 0, extrarange = 3, falloff = 10)
+ else //Can't let you do that, star fox!
+ to_chat(user, "
The machine buzzes and sparks... the game has been reset!")
+ playsound(user, 'sound/machines/buzz-sigh.ogg', 100, 0, extrarange = 3, falloff = 10) //Loud buzz
+ game_status = MINESWEEPER_GAME_MAIN_MENU
+
+/obj/machinery/computer/arcade/minesweeper/proc/custom_generation()
+ playsound(loc, 'sound/arcade/minesweeper_menuselect.ogg', 50, 0, extrarange = -3, falloff = 10) //Entered into the menu so ping sound
+ if(rows < 4)
+ rows = text2num(input(usr, "You must put at least 4 rows! Pick a higher amount of rows", "Minesweeper Rows"))+1 //+1 as dm arrays start at 1
+ playsound(loc, 'sound/arcade/minesweeper_menuselect.ogg', 50, 0, extrarange = -3, falloff = 10)
+ custom_generation()
+ if(columns < 4)
+ columns = text2num(input(usr, "You must put at least 4 columns! Pick a higher amount of columns", "Minesweeper Columns"))+1 //+1 as dm arrays start at 1
+ playsound(loc, 'sound/arcade/minesweeper_menuselect.ogg', 50, 0, extrarange = -3, falloff = 10)
+ custom_generation()
+ if(rows > 31)
+ rows = text2num(input(usr, "A maximum of 30 rows are allowed! Pick a lower amount of rows", "Minesweeper Rows"))+1 //+1 as dm arrays start at 1
+ playsound(loc, 'sound/arcade/minesweeper_menuselect.ogg', 50, 0, extrarange = -3, falloff = 10)
+ custom_generation()
+ if(columns > 51)
+ columns = text2num(input(usr, "A maximum of 50 columns are allowed! Pick a lower amount of columns", "Minesweeper Columns"))+1//+1 as dm arrays start at 1
+ playsound(loc, 'sound/arcade/minesweeper_menuselect.ogg', 50, 0, extrarange = -3, falloff = 10)
+ custom_generation()
+ var/grid_area = (rows-1)*(columns-1) //Need a live update of this, won't update if we use the area var in topic
+ if(mine_limit > round(grid_area*0.85))
+ mine_limit = text2num(input(usr, "You can only put in [round(grid_area*0.85)] mines on this board! Pick a lower amount of mines to insert", "Minesweeper Mines"))
+ playsound(loc, 'sound/arcade/minesweeper_menuselect.ogg', 50, 0, extrarange = -3, falloff = 10)
+ custom_generation()
+ if(mine_limit < round(grid_area/6.4)) //Same mine density as intermediate difficulty
+ mine_limit = text2num(input(usr, "You must at least put [round(grid_area/6.4)] mines on this board! Pick a higher amount of mines to insert", "Minesweeper Mines"))
+ playsound(loc, 'sound/arcade/minesweeper_menuselect.ogg', 50, 0, extrarange = -3, falloff = 10)
+ custom_generation()
+
+/obj/machinery/computer/arcade/minesweeper/proc/make_mines(var/reset_everything)
+ if(mine_placed < mine_limit)
+ for(var/y1=1;y1
0 && x3 > 0)
+ y2 = y3
+ x2 = x3
+ if(table[y2][x2] == 1)
+ for(y3=y2-1;y3= rows || y3 < 1)
+ continue
+ for(x3=x2-1;x3= columns || x3 < 1)
+ continue
+ if(table[y3][x3] == 0)
+ table[y2][x2] += 1
+ if(table[y2][x2] == 11)
+ for(y3=y2-1;y3= rows || y3 < 1)
+ continue
+ for(x3=x2-1;x3= columns || x3 < 1)
+ continue
+ if(table[y3][x3] > 0 && table[y3][x3] < 10)
+ table[y3][x3] += 10
+ work_squares(y3, x3) //Refresh so we check everything we might be missing
+
+/obj/machinery/computer/arcade/minesweeper/proc/explode_EVERYTHING()
+ var/mob/living/user = usr
+ to_chat(user, "You feel a great sense of dread wash over you, as if you just unleashed armageddon upon yourself!")
+ var/row_limit = rows-1
+ var/column_limit = columns-1
+ var/mine_limit_v2 = mine_limit
+ if(rows > 11)
+ row_limit = 10
+ if(columns > 11)
+ column_limit = 10
+ if(mine_limit > (rows*columns) * 0.25)
+ mine_limit_v2 = 24
+ message_admins("[key_name_admin(user)] failed Minesweeper and has unleashed an explosion armageddon of size [row_limit],[column_limit] around [ADMIN_LOOKUPFLW(user.loc)]!")
+ if(mine_limit_v2 < 10)
+ explosion(loc, 2, 4, 8, 16) //Thought you could survive by putting as few mines as possible, huh??
+ else
+ explosion(loc, 1, 3, rand(1,5), rand(1,10))
+ for(var/y69=y-row_limit;y69coward!\""
+ icon_state = "arcade"
+ circuit = /obj/item/circuitboard/computer/arcade/amputation
+
+/obj/machinery/computer/arcade/amputation/attack_hand(mob/user)
+ if(!iscarbon(user))
+ return
+ var/mob/living/carbon/c_user = user
+ if(!c_user.get_bodypart(BODY_ZONE_L_ARM) && !c_user.get_bodypart(BODY_ZONE_R_ARM))
+ return
+ to_chat(c_user, "You move your hand towards the machine, and begin to hesitate as a bloodied guillotine emerges from inside of it...")
+ if(do_after(c_user, 50, target = src))
+ to_chat(c_user, "The guillotine drops on your arm, and the machine sucks it in!")
+ playsound(loc, 'sound/weapons/slice.ogg', 25, 1, -1)
+ var/which_hand = BODY_ZONE_L_ARM
+ if(!(c_user.active_hand_index % 2))
+ which_hand = BODY_ZONE_R_ARM
+ var/obj/item/bodypart/chopchop = c_user.get_bodypart(which_hand)
+ chopchop.dismember()
+ qdel(chopchop)
+ playsound(loc, 'sound/arcade/win.ogg', 50, 1, extrarange = -3, falloff = 10)
+ for(var/i=1; i<=rand(3,5); i++)
+ prizevend(user)
+ else
+ to_chat(c_user, "You (wisely) decide against putting your hand in the machine.")
\ No newline at end of file
diff --git a/code/game/machinery/computer/arcade/orion_trail.dm b/code/game/machinery/computer/arcade/orion_trail.dm
new file mode 100644
index 0000000000..12941dea35
--- /dev/null
+++ b/code/game/machinery/computer/arcade/orion_trail.dm
@@ -0,0 +1,809 @@
+
+
+// *** THE ORION TRAIL ** //
+
+#define ORION_TRAIL_WINTURN 9
+
+//Orion Trail Events
+#define ORION_TRAIL_RAIDERS "Raiders"
+#define ORION_TRAIL_FLUX "Interstellar Flux"
+#define ORION_TRAIL_ILLNESS "Illness"
+#define ORION_TRAIL_BREAKDOWN "Breakdown"
+#define ORION_TRAIL_LING "Changelings?"
+#define ORION_TRAIL_LING_ATTACK "Changeling Ambush"
+#define ORION_TRAIL_MALFUNCTION "Malfunction"
+#define ORION_TRAIL_COLLISION "Collision"
+#define ORION_TRAIL_SPACEPORT "Spaceport"
+#define ORION_TRAIL_BLACKHOLE "BlackHole"
+
+#define ORION_STATUS_START 1
+#define ORION_STATUS_NORMAL 2
+#define ORION_STATUS_GAMEOVER 3
+#define ORION_STATUS_MARKET 4
+
+/obj/machinery/computer/arcade/orion_trail
+ name = "The Orion Trail"
+ desc = "Learn how our ancestors got to Orion, and have fun in the process!"
+ icon_state = "arcade"
+ circuit = /obj/item/circuitboard/computer/arcade/orion_trail
+ var/busy = FALSE //prevent clickspam that allowed people to ~speedrun~ the game.
+ var/engine = 0
+ var/hull = 0
+ var/electronics = 0
+ var/food = 80
+ var/fuel = 60
+ var/turns = 4
+ var/alive = 4
+ var/eventdat = null
+ var/event = null
+ var/list/settlers = list("Harry","Larry","Bob")
+ var/list/events = list(ORION_TRAIL_RAIDERS = 3,
+ ORION_TRAIL_FLUX = 1,
+ ORION_TRAIL_ILLNESS = 3,
+ ORION_TRAIL_BREAKDOWN = 2,
+ ORION_TRAIL_LING = 3,
+ ORION_TRAIL_MALFUNCTION = 2,
+ ORION_TRAIL_COLLISION = 1,
+ ORION_TRAIL_SPACEPORT = 2
+ )
+ var/list/stops = list()
+ var/list/stopblurbs = list()
+ var/lings_aboard = 0
+ var/spaceport_raided = 0
+ var/spaceport_freebie = 0
+ var/last_spaceport_action = ""
+ var/gameStatus = ORION_STATUS_START
+ var/canContinueEvent = 0
+
+/obj/machinery/computer/arcade/orion_trail/kobayashi
+ name = "Kobayashi Maru control computer"
+ desc = "A test for cadets"
+ icon = 'icons/obj/machines/particle_accelerator.dmi'
+ icon_state = "control_boxp"
+ events = list("Raiders" = 3, "Interstellar Flux" = 1, "Illness" = 3, "Breakdown" = 2, "Malfunction" = 2, "Collision" = 1, "Spaceport" = 2)
+ prizes = list(/obj/item/paper/fluff/holodeck/trek_diploma = 1)
+ settlers = list("Kirk","Worf","Gene")
+
+/obj/machinery/computer/arcade/orion_trail/Reset()
+ // Sets up the main trail
+ stops = list("Pluto","Asteroid Belt","Proxima Centauri","Dead Space","Rigel Prime","Tau Ceti Beta","Black Hole","Space Outpost Beta-9","Orion Prime")
+ stopblurbs = list(
+ "Pluto, long since occupied with long-range sensors and scanners, stands ready to, and indeed continues to probe the far reaches of the galaxy.",
+ "At the edge of the Sol system lies a treacherous asteroid belt. Many have been crushed by stray asteroids and misguided judgement.",
+ "The nearest star system to Sol, in ages past it stood as a reminder of the boundaries of sub-light travel, now a low-population sanctuary for adventurers and traders.",
+ "This region of space is particularly devoid of matter. Such low-density pockets are known to exist, but the vastness of it is astounding.",
+ "Rigel Prime, the center of the Rigel system, burns hot, basking its planetary bodies in warmth and radiation.",
+ "Tau Ceti Beta has recently become a waypoint for colonists headed towards Orion. There are many ships and makeshift stations in the vicinity.",
+ "Sensors indicate that a black hole's gravitational field is affecting the region of space we were headed through. We could stay of course, but risk of being overcome by its gravity, or we could change course to go around, which will take longer.",
+ "You have come into range of the first man-made structure in this region of space. It has been constructed not by travellers from Sol, but by colonists from Orion. It stands as a monument to the colonists' success.",
+ "You have made it to Orion! Congratulations! Your crew is one of the few to start a new foothold for mankind!"
+ )
+
+/obj/machinery/computer/arcade/orion_trail/proc/newgame()
+ // Set names of settlers in crew
+ settlers = list()
+ for(var/i = 1; i <= 3; i++)
+ add_crewmember()
+ add_crewmember("[usr]")
+ // Re-set items to defaults
+ engine = 1
+ hull = 1
+ electronics = 1
+ food = 80
+ fuel = 60
+ alive = 4
+ turns = 1
+ event = null
+ gameStatus = ORION_STATUS_NORMAL
+ lings_aboard = 0
+
+ //spaceport junk
+ spaceport_raided = 0
+ spaceport_freebie = 0
+ last_spaceport_action = ""
+
+/obj/machinery/computer/arcade/orion_trail/ui_interact(mob/user)
+ . = ..()
+ if(fuel <= 0 || food <=0 || settlers.len == 0)
+ gameStatus = ORION_STATUS_GAMEOVER
+ event = null
+ var/dat = ""
+ if(gameStatus == ORION_STATUS_GAMEOVER)
+ dat = "Game Over
"
+ dat += "Like many before you, your crew never made it to Orion, lost to space...
Forever."
+ if(!settlers.len)
+ dat += "
Your entire crew died, and your ship joins the fleet of ghost-ships littering the galaxy."
+ else
+ if(food <= 0)
+ dat += "
You ran out of food and starved."
+ if(obj_flags & EMAGGED)
+ user.nutrition = 0 //yeah you pretty hongry
+ to_chat(user, "Your body instantly contracts to that of one who has not eaten in months. Agonizing cramps seize you as you fall to the floor.")
+ if(fuel <= 0)
+ dat += "
You ran out of fuel, and drift, slowly, into a star."
+ if(obj_flags & EMAGGED)
+ var/mob/living/M = user
+ M.adjust_fire_stacks(5)
+ M.IgniteMob() //flew into a star, so you're on fire
+ to_chat(user, "You feel an immense wave of heat emanate from the arcade machine. Your skin bursts into flames.")
+
+ if(obj_flags & EMAGGED)
+ to_chat(user, "You're never going to make it to Orion...")
+ user.death()
+ obj_flags &= ~EMAGGED //removes the emagged status after you lose
+ gameStatus = ORION_STATUS_START
+ name = "The Orion Trail"
+ desc = "Learn how our ancestors got to Orion, and have fun in the process!"
+
+ dat += "May They Rest In Peace
"
+ else if(event)
+ dat = eventdat
+ else if(gameStatus == ORION_STATUS_NORMAL)
+ var/title = stops[turns]
+ var/subtext = stopblurbs[turns]
+ dat = "[title]
"
+ dat += "[subtext]"
+ dat += "Crew:
"
+ dat += english_list(settlers)
+ dat += "
Food: [food] | Fuel: [fuel]"
+ dat += "
Engine Parts: [engine] | Hull Panels: [hull] | Electronics: [electronics]"
+ if(turns == 7)
+ dat += "Go Around Continue
"
+ else
+ dat += "Continue
"
+ dat += "Kill a Crewmember
"
+ dat += "Close
"
+ else
+ dat = "The Orion Trail
"
+ dat += "
Experience the journey of your ancestors!
"
+ dat += "New Game"
+ dat += "Close
"
+ var/datum/browser/popup = new(user, "arcade", "The Orion Trail",400,700)
+ popup.set_content(dat)
+ popup.set_title_image(user.browse_rsc_icon(icon, icon_state))
+ popup.open()
+ return
+
+/obj/machinery/computer/arcade/orion_trail/Topic(href, href_list)
+ if(..())
+ return
+ if(href_list["close"])
+ usr.unset_machine()
+ usr << browse(null, "window=arcade")
+
+ if(busy)
+ return
+ busy = TRUE
+
+ if (href_list["continue"]) //Continue your travels
+ if(gameStatus == ORION_STATUS_NORMAL && !event && turns != 7)
+ if(turns >= ORION_TRAIL_WINTURN)
+ win(usr)
+ else
+ food -= (alive+lings_aboard)*2
+ fuel -= 5
+ if(turns == 2 && prob(30))
+ event = ORION_TRAIL_COLLISION
+ event()
+ else if(prob(75))
+ event = pickweight(events)
+ if(lings_aboard)
+ if(event == ORION_TRAIL_LING || prob(55))
+ event = ORION_TRAIL_LING_ATTACK
+ event()
+ turns += 1
+ if(obj_flags & EMAGGED)
+ var/mob/living/carbon/M = usr //for some vars
+ switch(event)
+ if(ORION_TRAIL_RAIDERS)
+ if(prob(50))
+ to_chat(usr, "You hear battle shouts. The tramping of boots on cold metal. Screams of agony. The rush of venting air. Are you going insane?")
+ M.hallucination += 30
+ else
+ to_chat(usr, "Something strikes you from behind! It hurts like hell and feel like a blunt weapon, but nothing is there...")
+ M.take_bodypart_damage(30)
+ playsound(loc, 'sound/weapons/genhit2.ogg', 100, 1)
+ if(ORION_TRAIL_ILLNESS)
+ var/severity = rand(1,3) //pray to RNGesus. PRAY, PIGS
+ if(severity == 1)
+ to_chat(M, "You suddenly feel slightly nauseated." )
+ if(severity == 2)
+ to_chat(usr, "You suddenly feel extremely nauseated and hunch over until it passes.")
+ M.Stun(60)
+ if(severity >= 3) //you didn't pray hard enough
+ to_chat(M, "An overpowering wave of nausea consumes over you. You hunch over, your stomach's contents preparing for a spectacular exit.")
+ M.Stun(100)
+ sleep(30)
+ M.vomit(10, distance = 5)
+ if(ORION_TRAIL_FLUX)
+ if(prob(75))
+ M.Knockdown(60)
+ say("A sudden gust of powerful wind slams [M] into the floor!")
+ M.take_bodypart_damage(25)
+ playsound(loc, 'sound/weapons/genhit.ogg', 100, 1)
+ else
+ to_chat(M, "A violent gale blows past you, and you barely manage to stay standing!")
+ if(ORION_TRAIL_COLLISION) //by far the most damaging event
+ if(prob(90))
+ playsound(loc, 'sound/effects/bang.ogg', 100, 1)
+ var/turf/open/floor/F
+ for(F in orange(1, src))
+ F.ScrapeAway()
+ say("Something slams into the floor around [src], exposing it to space!")
+ if(hull)
+ sleep(10)
+ say("A new floor suddenly appears around [src]. What the hell?")
+ playsound(loc, 'sound/weapons/genhit.ogg', 100, 1)
+ var/turf/open/space/T
+ for(T in orange(1, src))
+ T.PlaceOnTop(/turf/open/floor/plating)
+ else
+ say("Something slams into the floor around [src] - luckily, it didn't get through!")
+ playsound(loc, 'sound/effects/bang.ogg', 50, 1)
+ if(ORION_TRAIL_MALFUNCTION)
+ playsound(loc, 'sound/effects/empulse.ogg', 50, 1)
+ visible_message("[src] malfunctions, randomizing in-game stats!")
+ var/oldfood = food
+ var/oldfuel = fuel
+ food = rand(10,80) / rand(1,2)
+ fuel = rand(10,60) / rand(1,2)
+ if(electronics)
+ sleep(10)
+ if(oldfuel > fuel && oldfood > food)
+ audible_message("[src] lets out a somehow reassuring chime.")
+ else if(oldfuel < fuel || oldfood < food)
+ audible_message("[src] lets out a somehow ominous chime.")
+ food = oldfood
+ fuel = oldfuel
+ playsound(loc, 'sound/machines/chime.ogg', 50, 1)
+
+ else if(href_list["newgame"]) //Reset everything
+ if(gameStatus == ORION_STATUS_START)
+ newgame()
+ else if(href_list["menu"]) //back to the main menu
+ if(gameStatus == ORION_STATUS_GAMEOVER)
+ gameStatus = ORION_STATUS_START
+ event = null
+ food = 80
+ fuel = 60
+ settlers = list("Harry","Larry","Bob")
+ else if(href_list["slow"]) //slow down
+ if(event == ORION_TRAIL_FLUX)
+ food -= (alive+lings_aboard)*2
+ fuel -= 5
+ event = null
+ else if(href_list["pastblack"]) //slow down
+ if(turns == 7)
+ food -= ((alive+lings_aboard)*2)*3
+ fuel -= 15
+ turns += 1
+ event = null
+ else if(href_list["useengine"]) //use parts
+ if(event == ORION_TRAIL_BREAKDOWN)
+ engine = max(0, --engine)
+ event = null
+ else if(href_list["useelec"]) //use parts
+ if(event == ORION_TRAIL_MALFUNCTION)
+ electronics = max(0, --electronics)
+ event = null
+ else if(href_list["usehull"]) //use parts
+ if(event == ORION_TRAIL_COLLISION)
+ hull = max(0, --hull)
+ event = null
+ else if(href_list["wait"]) //wait 3 days
+ if(event == ORION_TRAIL_BREAKDOWN || event == ORION_TRAIL_MALFUNCTION || event == ORION_TRAIL_COLLISION)
+ food -= ((alive+lings_aboard)*2)*3
+ event = null
+ else if(href_list["keepspeed"]) //keep speed
+ if(event == ORION_TRAIL_FLUX)
+ if(prob(75))
+ event = "Breakdown"
+ event()
+ else
+ event = null
+ else if(href_list["blackhole"]) //keep speed past a black hole
+ if(turns == 7)
+ if(prob(75))
+ event = ORION_TRAIL_BLACKHOLE
+ event()
+ if(obj_flags & EMAGGED)
+ playsound(loc, 'sound/effects/supermatter.ogg', 100, 1)
+ say("A miniature black hole suddenly appears in front of [src], devouring [usr] alive!")
+ if(isliving(usr))
+ var/mob/living/L = usr
+ L.Stun(200, ignore_canstun = TRUE) //you can't run :^)
+ var/S = new /obj/singularity/academy(usr.loc)
+ addtimer(CALLBACK(src, /atom/movable/proc/say, "[S] winks out, just as suddenly as it appeared."), 50)
+ QDEL_IN(S, 50)
+ else
+ event = null
+ turns += 1
+ else if(href_list["holedeath"])
+ if(event == ORION_TRAIL_BLACKHOLE)
+ gameStatus = ORION_STATUS_GAMEOVER
+ event = null
+ else if(href_list["eventclose"]) //end an event
+ if(canContinueEvent)
+ event = null
+
+ else if(href_list["killcrew"]) //shoot a crewmember
+ if(gameStatus == ORION_STATUS_NORMAL || event == ORION_TRAIL_LING)
+ var/sheriff = remove_crewmember() //I shot the sheriff
+ playsound(loc,'sound/weapons/gunshot.ogg', 100, 1)
+
+ if(settlers.len == 0 || alive == 0)
+ say("The last crewmember [sheriff], shot themselves, GAME OVER!")
+ if(obj_flags & EMAGGED)
+ usr.death(0)
+ obj_flags &= EMAGGED
+ gameStatus = ORION_STATUS_GAMEOVER
+ event = null
+ else if(obj_flags & EMAGGED)
+ if(usr.name == sheriff)
+ say("The crew of the ship chose to kill [usr.name]!")
+ usr.death(0)
+
+ if(event == ORION_TRAIL_LING) //only ends the ORION_TRAIL_LING event, since you can do this action in multiple places
+ event = null
+
+ //Spaceport specific interactions
+ //they get a header because most of them don't reset event (because it's a shop, you leave when you want to)
+ //they also call event() again, to regen the eventdata, which is kind of odd but necessary
+ else if(href_list["buycrew"]) //buy a crewmember
+ if(gameStatus == ORION_STATUS_MARKET)
+ if(!spaceport_raided && food >= 10 && fuel >= 10)
+ var/bought = add_crewmember()
+ last_spaceport_action = "You hired [bought] as a new crewmember."
+ fuel -= 10
+ food -= 10
+ event()
+
+ else if(href_list["sellcrew"]) //sell a crewmember
+ if(gameStatus == ORION_STATUS_MARKET)
+ if(!spaceport_raided && settlers.len > 1)
+ var/sold = remove_crewmember()
+ last_spaceport_action = "You sold your crewmember, [sold]!"
+ fuel += 7
+ food += 7
+ event()
+
+ else if(href_list["leave_spaceport"])
+ if(gameStatus == ORION_STATUS_MARKET)
+ event = null
+ gameStatus = ORION_STATUS_NORMAL
+ spaceport_raided = 0
+ spaceport_freebie = 0
+ last_spaceport_action = ""
+
+ else if(href_list["raid_spaceport"])
+ if(gameStatus == ORION_STATUS_MARKET)
+ if(!spaceport_raided)
+ var/success = min(15 * alive,100) //default crew (4) have a 60% chance
+ spaceport_raided = 1
+
+ var/FU = 0
+ var/FO = 0
+ if(prob(success))
+ FU = rand(5,15)
+ FO = rand(5,15)
+ last_spaceport_action = "You successfully raided the spaceport! You gained [FU] Fuel and [FO] Food! (+[FU]FU,+[FO]FO)"
+ else
+ FU = rand(-5,-15)
+ FO = rand(-5,-15)
+ last_spaceport_action = "You failed to raid the spaceport! You lost [FU*-1] Fuel and [FO*-1] Food in your scramble to escape! ([FU]FU,[FO]FO)"
+
+ //your chance of lose a crewmember is 1/2 your chance of success
+ //this makes higher % failures hurt more, don't get cocky space cowboy!
+ if(prob(success*5))
+ var/lost_crew = remove_crewmember()
+ last_spaceport_action = "You failed to raid the spaceport! You lost [FU*-1] Fuel and [FO*-1] Food, AND [lost_crew] in your scramble to escape! ([FU]FI,[FO]FO,-Crew)"
+ if(obj_flags & EMAGGED)
+ say("WEEWOO! WEEWOO! Spaceport security en route!")
+ playsound(src, 'sound/items/weeoo1.ogg', 100, FALSE)
+ for(var/i, i<=3, i++)
+ var/mob/living/simple_animal/hostile/syndicate/ranged/smg/orion/O = new/mob/living/simple_animal/hostile/syndicate/ranged/smg/orion(get_turf(src))
+ O.target = usr
+
+
+ fuel += FU
+ food += FO
+ event()
+
+ else if(href_list["buyparts"])
+ if(gameStatus == ORION_STATUS_MARKET)
+ if(!spaceport_raided && fuel > 5)
+ switch(text2num(href_list["buyparts"]))
+ if(1) //Engine Parts
+ engine++
+ last_spaceport_action = "Bought Engine Parts"
+ if(2) //Hull Plates
+ hull++
+ last_spaceport_action = "Bought Hull Plates"
+ if(3) //Spare Electronics
+ electronics++
+ last_spaceport_action = "Bought Spare Electronics"
+ fuel -= 5 //they all cost 5
+ event()
+
+ else if(href_list["trade"])
+ if(gameStatus == ORION_STATUS_MARKET)
+ if(!spaceport_raided)
+ switch(text2num(href_list["trade"]))
+ if(1) //Fuel
+ if(fuel > 5)
+ fuel -= 5
+ food += 5
+ last_spaceport_action = "Traded Fuel for Food"
+ event()
+ if(2) //Food
+ if(food > 5)
+ fuel += 5
+ food -= 5
+ last_spaceport_action = "Traded Food for Fuel"
+ event()
+
+ add_fingerprint(usr)
+ updateUsrDialog()
+ busy = FALSE
+ return
+
+
+/obj/machinery/computer/arcade/orion_trail/proc/event()
+ eventdat = "[event]
"
+ canContinueEvent = 0
+ switch(event)
+ if(ORION_TRAIL_RAIDERS)
+ eventdat += "Raiders have come aboard your ship!"
+ if(prob(50))
+ var/sfood = rand(1,10)
+ var/sfuel = rand(1,10)
+ food -= sfood
+ fuel -= sfuel
+ eventdat += "
They have stolen [sfood] Food and [sfuel] Fuel."
+ else if(prob(10))
+ var/deadname = remove_crewmember()
+ eventdat += "
[deadname] tried to fight back, but was killed."
+ else
+ eventdat += "
Fortunately, you fended them off without any trouble."
+ eventdat += "Continue
"
+ eventdat += "Close
"
+ canContinueEvent = 1
+
+ if(ORION_TRAIL_FLUX)
+ eventdat += "This region of space is highly turbulent.
If we go slowly we may avoid more damage, but if we keep our speed we won't waste supplies."
+ eventdat += "
What will you do?"
+ eventdat += "Slow Down Continue
"
+ eventdat += "Close
"
+
+ if(ORION_TRAIL_ILLNESS)
+ eventdat += "A deadly illness has been contracted!"
+ var/deadname = remove_crewmember()
+ eventdat += "
[deadname] was killed by the disease."
+ eventdat += "Continue
"
+ eventdat += "Close
"
+ canContinueEvent = 1
+
+ if(ORION_TRAIL_BREAKDOWN)
+ eventdat += "Oh no! The engine has broken down!"
+ eventdat += "
You can repair it with an engine part, or you can make repairs for 3 days."
+ if(engine >= 1)
+ eventdat += "Use PartWait
"
+ else
+ eventdat += "Wait
"
+ eventdat += "Close
"
+
+ if(ORION_TRAIL_MALFUNCTION)
+ eventdat += "The ship's systems are malfunctioning!"
+ eventdat += "
You can replace the broken electronics with spares, or you can spend 3 days troubleshooting the AI."
+ if(electronics >= 1)
+ eventdat += "Use PartWait
"
+ else
+ eventdat += "Wait
"
+ eventdat += "Close
"
+
+ if(ORION_TRAIL_COLLISION)
+ eventdat += "Something hit us! Looks like there's some hull damage."
+ if(prob(25))
+ var/sfood = rand(5,15)
+ var/sfuel = rand(5,15)
+ food -= sfood
+ fuel -= sfuel
+ eventdat += "
[sfood] Food and [sfuel] Fuel was vented out into space."
+ if(prob(10))
+ var/deadname = remove_crewmember()
+ eventdat += "
[deadname] was killed by rapid depressurization."
+ eventdat += "
You can repair the damage with hull plates, or you can spend the next 3 days welding scrap together."
+ if(hull >= 1)
+ eventdat += "Use PartWait
"
+ else
+ eventdat += "Wait
"
+ eventdat += "Close
"
+
+ if(ORION_TRAIL_BLACKHOLE)
+ eventdat += "You were swept away into the black hole."
+ eventdat += "Oh...
"
+ eventdat += "Close
"
+ settlers = list()
+
+ if(ORION_TRAIL_LING)
+ eventdat += "Strange reports warn of changelings infiltrating crews on trips to Orion..."
+ if(settlers.len <= 2)
+ eventdat += "
Your crew's chance of reaching Orion is so slim the changelings likely avoided your ship..."
+ eventdat += "Continue
"
+ eventdat += "Close
"
+ if(prob(10)) // "likely", I didn't say it was guaranteed!
+ lings_aboard = min(++lings_aboard,2)
+ else
+ if(lings_aboard) //less likely to stack lings
+ if(prob(20))
+ lings_aboard = min(++lings_aboard,2)
+ else if(prob(70))
+ lings_aboard = min(++lings_aboard,2)
+
+ eventdat += "Kill a Crewmember
"
+ eventdat += "Risk it
"
+ eventdat += "Close
"
+ canContinueEvent = 1
+
+ if(ORION_TRAIL_LING_ATTACK)
+ if(lings_aboard <= 0) //shouldn't trigger, but hey.
+ eventdat += "Haha, fooled you, there are no changelings on board!"
+ eventdat += "
(You should report this to a coder :S)"
+ else
+ var/ling1 = remove_crewmember()
+ var/ling2 = ""
+ if(lings_aboard >= 2)
+ ling2 = remove_crewmember()
+
+ eventdat += "Changelings among your crew suddenly burst from hiding and attack!"
+ if(ling2)
+ eventdat += "
[ling1] and [ling2]'s arms twist and contort into grotesque blades!"
+ else
+ eventdat += "
[ling1]'s arm twists and contorts into a grotesque blade!"
+
+ var/chance2attack = alive*20
+ if(prob(chance2attack))
+ var/chancetokill = 30*lings_aboard-(5*alive) //eg: 30*2-(10) = 50%, 2 lings, 2 crew is 50% chance
+ if(prob(chancetokill))
+ var/deadguy = remove_crewmember()
+ var/murder_text = pick("The changeling[ling2 ? "s" : ""] bring[ling2 ? "" : "s"] down [deadguy] and disembowel[ling2 ? "" : "s"] them in a spray of gore!", \
+ "[ling2 ? pick(ling1, ling2) : ling1] corners [deadguy] and impales them through the stomach!", \
+ "[ling2 ? pick(ling1, ling2) : ling1] decapitates [deadguy] in a single cleaving arc!")
+ eventdat += "
[murder_text]"
+ else
+ eventdat += "
You valiantly fight off the changeling[ling2 ? "s":""]!"
+ if(ling2)
+ food += 30
+ lings_aboard = max(0,lings_aboard-2)
+ else
+ food += 15
+ lings_aboard = max(0,--lings_aboard)
+ eventdat += "
Well, it's perfectly good food...\
+
You cut the changeling[ling2 ? "s" : ""] into meat, gaining [ling2 ? "30" : "15"] Food!"
+ else
+ eventdat += "
[pick("Sensing unfavorable odds", "After a failed attack", "Suddenly breaking nerve")], \
+ the changeling[ling2 ? "s":""] vanish[ling2 ? "" : "es"] into space through the airlocks! You're safe... for now."
+ if(ling2)
+ lings_aboard = max(0,lings_aboard-2)
+ else
+ lings_aboard = max(0,--lings_aboard)
+
+ eventdat += "Continue
"
+ eventdat += "Close
"
+ canContinueEvent = 1
+
+
+ if(ORION_TRAIL_SPACEPORT)
+ gameStatus = ORION_STATUS_MARKET
+ if(spaceport_raided)
+ eventdat += "The spaceport is on high alert! You've been barred from docking by the local authorities after your failed raid."
+ if(last_spaceport_action)
+ eventdat += "
Last Spaceport Action: [last_spaceport_action]"
+ eventdat += "Depart Spaceport
"
+ eventdat += "Close
"
+ else
+ eventdat += "Your jump into the sector yields a spaceport - a lucky find!"
+ eventdat += "
This spaceport is home to travellers who failed to reach Orion, but managed to find a different home..."
+ eventdat += "
Trading terms: FU = Fuel, FO = Food"
+ if(last_spaceport_action)
+ eventdat += "
Last action: [last_spaceport_action]"
+ eventdat += "Crew:
"
+ eventdat += english_list(settlers)
+ eventdat += "
Food: [food] | Fuel: [fuel]"
+ eventdat += "
Engine Parts: [engine] | Hull Panels: [hull] | Electronics: [electronics]"
+
+
+ //If your crew is pathetic you can get freebies (provided you haven't already gotten one from this port)
+ if(!spaceport_freebie && (fuel < 20 || food < 20))
+ spaceport_freebie++
+ var/FU = 10
+ var/FO = 10
+ var/freecrew = 0
+ if(prob(30))
+ FU = 25
+ FO = 25
+
+ if(prob(10))
+ add_crewmember()
+ freecrew++
+
+ eventdat += "
The traders of the spaceport take pity on you, and generously give you some free supplies! (+[FU]FU, +[FO]FO)"
+ if(freecrew)
+ eventdat += "
You also gain a new crewmember!"
+
+ fuel += FU
+ food += FO
+
+ //CREW INTERACTIONS
+ eventdat += "Crew Management:
"
+
+ //Buy crew
+ if(food >= 10 && fuel >= 10)
+ eventdat += "Hire a New Crewmember (-10FU, -10FO)
"
+ else
+ eventdat += "You cannot afford a new crewmember.
"
+
+ //Sell crew
+ if(settlers.len > 1)
+ eventdat += "Sell Crew for Fuel and Food (+7FU, +7FO)
"
+ else
+ eventdat += "You have no other crew to sell.
"
+
+ //BUY/SELL STUFF
+ eventdat += "Spare Parts:
"
+
+ //Engine parts
+ if(fuel > 5)
+ eventdat += "Buy Engine Parts (-5FU)
"
+ else
+ eventdat += "You cannot afford engine parts."
+
+ //Hull plates
+ if(fuel > 5)
+ eventdat += "
Buy Hull Plates (-5FU)
"
+ else
+ eventdat += "You cannot afford hull plates."
+
+ //Electronics
+ if(fuel > 5)
+ eventdat += "
Buy Spare Electronics (-5FU)
"
+ else
+ eventdat += "You cannot afford spare electronics."
+
+ //Trade
+ if(fuel > 5)
+ eventdat += "
Trade Fuel for Food (-5FU,+5FO)
"
+ else
+ eventdat += "You don't have 5FU to trade.
5)
+ eventdat += "Trade Food for Fuel (+5FU,-5FO)
"
+ else
+ eventdat += "You don't have 5FO to trade.
!! Raid Spaceport !!"
+
+ eventdat += "Depart Spaceport
"
+
+
+//Add Random/Specific crewmember
+/obj/machinery/computer/arcade/orion_trail/proc/add_crewmember(var/specific = "")
+ var/newcrew = ""
+ if(specific)
+ newcrew = specific
+ else
+ if(prob(50))
+ newcrew = pick(GLOB.first_names_male)
+ else
+ newcrew = pick(GLOB.first_names_female)
+ if(newcrew)
+ settlers += newcrew
+ alive++
+ return newcrew
+
+
+//Remove Random/Specific crewmember
+/obj/machinery/computer/arcade/orion_trail/proc/remove_crewmember(var/specific = "", var/dont_remove = "")
+ var/list/safe2remove = settlers
+ var/removed = ""
+ if(dont_remove)
+ safe2remove -= dont_remove
+ if(specific && specific != dont_remove)
+ safe2remove = list(specific)
+ else
+ removed = pick(safe2remove)
+
+ if(removed)
+ if(lings_aboard && prob(40*lings_aboard)) //if there are 2 lings you're twice as likely to get one, obviously
+ lings_aboard = max(0,--lings_aboard)
+ settlers -= removed
+ alive--
+ return removed
+
+
+/obj/machinery/computer/arcade/orion_trail/proc/win(mob/user)
+ gameStatus = ORION_STATUS_START
+ say("Congratulations, you made it to Orion!")
+ if(obj_flags & EMAGGED)
+ new /obj/item/orion_ship(loc)
+ message_admins("[ADMIN_LOOKUPFLW(usr)] made it to Orion on an emagged machine and got an explosive toy ship.")
+ log_game("[key_name(usr)] made it to Orion on an emagged machine and got an explosive toy ship.")
+ else
+ prizevend(user)
+ obj_flags &= ~EMAGGED
+ name = "The Orion Trail"
+ desc = "Learn how our ancestors got to Orion, and have fun in the process!"
+
+/obj/machinery/computer/arcade/orion_trail/emag_act(mob/user)
+ if(obj_flags & EMAGGED)
+ return
+ to_chat(user, "You override the cheat code menu and skip to Cheat #[rand(1, 50)]: Realism Mode.")
+ name = "The Orion Trail: Realism Edition"
+ desc = "Learn how our ancestors got to Orion, and try not to die in the process!"
+ newgame()
+ obj_flags |= EMAGGED
+
+/mob/living/simple_animal/hostile/syndicate/ranged/smg/orion
+ name = "spaceport security"
+ desc = "Premier corporate security forces for all spaceports found along the Orion Trail."
+ faction = list("orion")
+ loot = list()
+ del_on_death = TRUE
+
+/obj/item/orion_ship
+ name = "model settler ship"
+ desc = "A model spaceship, it looks like those used back in the day when travelling to Orion! It even has a miniature FX-293 reactor, which was renowned for its instability and tendency to explode..."
+ icon = 'icons/obj/toy.dmi'
+ icon_state = "ship"
+ w_class = WEIGHT_CLASS_SMALL
+ var/active = 0 //if the ship is on
+
+/obj/item/orion_ship/examine(mob/user)
+ ..()
+ if(!(in_range(user, src)))
+ return
+ if(!active)
+ to_chat(user, "There's a little switch on the bottom. It's flipped down.")
+ else
+ to_chat(user, "There's a little switch on the bottom. It's flipped up.")
+
+/obj/item/orion_ship/attack_self(mob/user) //Minibomb-level explosion. Should probably be more because of how hard it is to survive the machine! Also, just over a 5-second fuse
+ if(active)
+ return
+
+ message_admins("[ADMIN_LOOKUPFLW(usr)] primed an explosive Orion ship for detonation at [AREACOORD(usr)].")
+ log_game("[key_name(usr)] primed an explosive Orion ship for detonation at [AREACOORD(usr)].")
+
+ to_chat(user, "You flip the switch on the underside of [src].")
+ active = 1
+ visible_message("[src] softly beeps and whirs to life!")
+ playsound(loc, 'sound/machines/defib_SaftyOn.ogg', 25, 1)
+ say("This is ship ID #[rand(1,1000)] to Orion Port Authority. We're coming in for landing, over.")
+ sleep(20)
+ visible_message("[src] begins to vibrate...")
+ say("Uh, Port? Having some issues with our reactor, could you check it out? Over.")
+ sleep(30)
+ say("Oh, God! Code Eight! CODE EIGHT! IT'S GONNA BL-")
+ playsound(loc, 'sound/machines/buzz-sigh.ogg', 25, 1)
+ sleep(3.6)
+ visible_message("[src] explodes!")
+ explosion(loc, 2,4,8, flame_range = 16)
+ qdel(src)
+
+#undef ORION_TRAIL_WINTURN
+#undef ORION_TRAIL_RAIDERS
+#undef ORION_TRAIL_FLUX
+#undef ORION_TRAIL_ILLNESS
+#undef ORION_TRAIL_BREAKDOWN
+#undef ORION_TRAIL_LING
+#undef ORION_TRAIL_LING_ATTACK
+#undef ORION_TRAIL_MALFUNCTION
+#undef ORION_TRAIL_COLLISION
+#undef ORION_TRAIL_SPACEPORT
+#undef ORION_TRAIL_BLACKHOLE
+
+#undef ORION_STATUS_START
+#undef ORION_STATUS_NORMAL
+#undef ORION_STATUS_GAMEOVER
+#undef ORION_STATUS_MARKET
diff --git a/code/game/objects/items/circuitboards/computer_circuitboards.dm b/code/game/objects/items/circuitboards/computer_circuitboards.dm
index 26f00c730e..a1ee62e2eb 100644
--- a/code/game/objects/items/circuitboards/computer_circuitboards.dm
+++ b/code/game/objects/items/circuitboards/computer_circuitboards.dm
@@ -123,6 +123,14 @@
name = "Orion Trail (Computer Board)"
build_path = /obj/machinery/computer/arcade/orion_trail
+/obj/item/circuitboard/computer/arcade/minesweeper
+ name = "Minesweeper (Computer Board)"
+ build_path = /obj/machinery/computer/arcade/minesweeper
+
+/obj/item/circuitboard/computer/arcade/amputation
+ name = "Mediborg's Amputation Adventure (Computer Board)"
+ build_path = /obj/machinery/computer/arcade/amputation
+
/obj/item/circuitboard/computer/turbine_control
name = "Turbine control (Computer Board)"
build_path = /obj/machinery/computer/turbine_computer
diff --git a/code/modules/cargo/packs.dm b/code/modules/cargo/packs.dm
index 7042913b0d..a1b0402021 100644
--- a/code/modules/cargo/packs.dm
+++ b/code/modules/cargo/packs.dm
@@ -2241,7 +2241,8 @@
/obj/item/storage/fancy/cigarettes/cigpack_shadyjims,
/obj/item/clothing/mask/gas/syndicate,
/obj/item/clothing/neck/necklace/dope,
- /obj/item/vending_refill/donksoft)
+ /obj/item/vending_refill/donksoft,
+ /obj/item/circuitboard/computer/arcade/amputation)
crate_name = "crate"
/datum/supply_pack/costumes_toys/foamforce
diff --git a/code/modules/client/asset_cache.dm b/code/modules/client/asset_cache.dm
index 7c08a3332c..e095ef304b 100644
--- a/code/modules/client/asset_cache.dm
+++ b/code/modules/client/asset_cache.dm
@@ -528,6 +528,12 @@ GLOBAL_LIST_EMPTY(asset_datums)
"browserOutput.css" = 'code/modules/goonchat/browserassets/css/browserOutput.css',
)
+/datum/asset/spritesheet/minesweeper
+ name = "minesweeper"
+
+/datum/asset/spritesheet/minesweeper/register()
+ InsertAll("minesweeper", 'icons/misc/minesweeper_tiles.dmi')
+
/datum/asset/spritesheet/goonchat
name = "chat"
diff --git a/code/modules/research/designs/comp_board_designs/comp_board_designs_all_misc.dm b/code/modules/research/designs/comp_board_designs/comp_board_designs_all_misc.dm
index 780a1bc97d..65a435a309 100644
--- a/code/modules/research/designs/comp_board_designs/comp_board_designs_all_misc.dm
+++ b/code/modules/research/designs/comp_board_designs/comp_board_designs_all_misc.dm
@@ -21,6 +21,14 @@
category = list("Computer Boards")
departmental_flags = DEPARTMENTAL_FLAG_ALL
+/datum/design/board/minesweeper
+ name = "Computer Design (Minesweeper Arcade Machine)"
+ desc = "Allows for the construction of circuit boards used to build a new Minesweeper machine."
+ id = "arcade_minesweeper"
+ build_path = /obj/item/circuitboard/computer/arcade/minesweeper
+ category = list("Computer Boards")
+ departmental_flags = DEPARTMENTAL_FLAG_ALL
+
/datum/design/board/slot_machine
name = "Computer Design (Slot Machine)"
desc = "Allows for the construction of circuit boards used to build a new slot machine."
diff --git a/icons/misc/minesweeper_tiles.dmi b/icons/misc/minesweeper_tiles.dmi
new file mode 100644
index 0000000000000000000000000000000000000000..5a5a943832b3dfb29894d4ee5d9fc3c05ee2bc14
GIT binary patch
literal 4583
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
Rd-?zX002ovPDHLkV1mi!+5i9m
literal 0
HcmV?d00001
diff --git a/modular_citadel/code/modules/research/techweb/all_nodes.dm b/modular_citadel/code/modules/research/techweb/all_nodes.dm
index e561b106d8..c0ddaceaf7 100644
--- a/modular_citadel/code/modules/research/techweb/all_nodes.dm
+++ b/modular_citadel/code/modules/research/techweb/all_nodes.dm
@@ -19,7 +19,7 @@
display_name = "Games and Toys"
description = "For the slackers on the station."
prereq_ids = list("comptech")
- design_ids = list("arcade_battle", "arcade_orion", "slotmachine", "autoylathe")
+ design_ids = list("arcade_battle", "arcade_orion", "arcade_minesweeper", "slotmachine", "autoylathe")
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 1000)
export_price = 5000
diff --git a/sound/arcade/minesweeper_boardpress.ogg b/sound/arcade/minesweeper_boardpress.ogg
new file mode 100644
index 0000000000000000000000000000000000000000..a928a7498d98b85a3c2c8248bec3d5c4f72c4146
GIT binary patch
literal 5439
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
z
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