diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm
index 1bcc4decc8e..4709f25103d 100644
--- a/code/game/machinery/computer/arcade.dm
+++ b/code/game/machinery/computer/arcade.dm
@@ -367,9 +367,27 @@
else
if(food <= 0)
dat += "
You ran out of food and starved."
+ if(emagged)
+ user.nutrition = 0 //yeah you pretty hongry
+ 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(emagged)
+ var/mob/living/M = user
+ M.adjust_fire_stacks(5)
+ M.IgniteMob() //flew into a star, so you're on fire
+ user << "You feel an immense wave of heat emanate from the arcade machine. Your skin bursts into flames."
dat += "
OK...
"
+
+ if(emagged)
+ user << "You're never going to make it to Orion..."
+ user.death()
+ emagged = 0 //removes the emagged status after you lose
+ playing = 0 //also a new game
+ name = "The Orion Trail"
+ desc = "Learn how our ancestors got to Orion, and have fun in the process!"
+
+
else if(event)
dat = eventdat
else if(playing)
@@ -427,6 +445,77 @@
if(prob(75))
event = pickweight(events)
event()
+ if(emagged)
+ var/mob/living/carbon/M = usr //for some vars
+ switch(event)
+ if("Raiders")
+ if(prob(50))
+ 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
+ usr << "Something strikes you from behind! It hurts like hell and feel like a blunt weapon, but nothing is there..."
+ M.take_organ_damage(30)
+ playsound(loc, 'sound/weapons/genhit2.ogg', 100, 1)
+ if("Illness")
+ var/severity = rand(1,3) //pray to RNGesus. PRAY, PIGS
+ if(severity == 1)
+ M << "You suddenly feel slightly nauseous." //got off lucky
+ if(severity == 2)
+ usr << "You suddenly feel extremely nauseous and hunch over until it passes."
+ M.Stun(3)
+ if(severity >= 3) //you didn't pray hard enough
+ M << "An overpowering wave of nausea consumes over you. You hunch over, your stomach's contents preparing for a spectacular exit."
+ M.Stun(5)
+ sleep(30)
+ M.visible_message("[M] throws up!", "You violently throw up!")
+ playsound(loc, 'sound/effects/splat.ogg', 50, 1)
+ M.nutrition -= 50 //lose a lot of food
+ var/turf/location = usr.loc
+ if(istype(location, /turf/simulated))
+ location.add_vomit_floor(src, 1)
+ if("Interstellar Flux")
+ if(prob(rand(50,100))) //50% of the time, it works 100% of the time
+ M.Weaken(3)
+ M.visible_message("[M] is swept off their feet!", "A sudden gust of powerful wind slams you into the floor!")
+ M.take_organ_damage(25)
+ playsound(src.loc, 'sound/weapons/Genhit.ogg', 100, 1)
+ else
+ M << "A violent gale blows past you, and you barely manage to stay standing!"
+ if("Collision") //by far the most damaging event
+ if(prob(90))
+ playsound(src.loc, 'sound/effects/bang.ogg', 100, 1)
+ var/turf/simulated/floor/F
+ for(F in orange(1, src))
+ F.ChangeTurf(/turf/space)
+ src.visible_message("Something slams into the floor around [src], exposing it to space!")
+ if(hull)
+ sleep(10)
+ src.visible_message("A new floor suddenly appears around [src]. What the hell?")
+ playsound(src.loc, 'sound/weapons/Genhit.ogg', 100, 1)
+ var/turf/space/T
+ for(T in orange(1, src))
+ T.ChangeTurf(/turf/simulated/floor/plating/)
+ else
+ src.visible_message("Something slams into the floor around [src] - luckily, it didn't get through!")
+ playsound(src.loc, 'sound/effects/bang.ogg', 50, 1)
+ if("Malfunction")
+ playsound(src.loc, 'sound/effects/EMPulse.ogg', 50, 1)
+ src.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)
+ src.audible_message("[src] lets out a somehow reassuring chime.")
+ else if(oldfuel < fuel || oldfood < food)
+ src.audible_message("[src] lets out a somehow ominous chime.")
+ food = oldfood
+ fuel = oldfuel
+ playsound(src.loc, 'sound/machines/chime.ogg', 50, 1)
+
+
else if(href_list["newgame"]) //Reset everything
newgame()
else if(href_list["menu"]) //back to the main menu
@@ -467,6 +556,15 @@
if(prob(75))
event = "BlackHole"
event()
+ if(emagged) //has to be here because otherwise it doesn't work
+ playsound(src.loc, 'sound/effects/supermatter.ogg', 100, 1)
+ src.visible_message("A miniature black hole suddenly appears in front of [src], devouring [usr] alive!")
+ usr.Stun(10) //you can't run :^)
+ var/S = new /obj/singularity/academy(usr.loc)
+ emagged = 0 //immediately removes emagged status so people can't kill themselves by sprinting up and interacting
+ sleep(50)
+ src.visible_message("[S] winks out, just as suddenly as it appeared.")
+ qdel(S)
else
event = null
turns += 1
@@ -499,7 +597,6 @@
eventdat += "
Fortunately you fended them off without any trouble."
eventdat += "Continue
"
eventdat += "Close
"
-
else if(event == "Interstellar 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?"
@@ -513,7 +610,6 @@
alive -= 1
eventdat += "Continue
"
eventdat += "Close
"
-
else if(event == "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."
@@ -560,4 +656,60 @@
/obj/machinery/computer/arcade/orion_trail/proc/win()
playing = 0
- prizevend()
+ if(emagged)
+ new /obj/item/weapon/orion_ship(src.loc)
+ message_admins("[key_name_admin(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()
+ emagged = 0
+ 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 as mob)
+ if(!emagged)
+ 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()
+ emagged = 1
+
+/obj/item/weapon/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 = 2
+ var/active = 0 //if the ship is on
+
+/obj/item/weapon/orion_ship/examine(mob/user)
+ ..()
+ if(!(in_range(user, src)))
+ return
+ if(!active)
+ user << "There's a little switch on the bottom. It's flipped down."
+ else
+ user << "There's a little switch on the bottom. It's flipped up."
+
+/obj/item/weapon/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("[key_name_admin(usr)] primed an explosive Orion ship for detonation.")
+ log_game("[key_name(usr)] primed an explosive Orion ship for detonation.")
+
+ user << "You flip the switch on the underside of [src]."
+ active = 1
+ src.visible_message("[src] softly beeps and whirs to life!")
+ playsound(src.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)
+ src.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(src.loc, 'sound/machines/buzz-sigh.ogg', 25, 1)
+ sleep(3.6)
+ src.visible_message("[src] explodes!")
+ explosion(src.loc, 1,2,4, flame_range = 3)
+ qdel(src)
diff --git a/html/changelogs/Xhuis-OrionTrailEmag.yml b/html/changelogs/Xhuis-OrionTrailEmag.yml
new file mode 100644
index 00000000000..bbd5e77184e
--- /dev/null
+++ b/html/changelogs/Xhuis-OrionTrailEmag.yml
@@ -0,0 +1,5 @@
+author: Xhuis
+delete-after: true
+
+changes:
+ - rscadd: "A new software update has given the Orion Trail game a cheat code menu. While you can't access this normally (that's for a later software update), maybe an emag could do it...?"
diff --git a/icons/obj/toy.dmi b/icons/obj/toy.dmi
index 5c62c63a925..428dd8df22f 100644
Binary files a/icons/obj/toy.dmi and b/icons/obj/toy.dmi differ