/obj/machinery/computer/arcade/ name = "random arcade" desc = "random arcade machine" icon = 'icons/obj/computer.dmi' icon_state = "arcade" icon_keyboard = null icon_screen = "invaders" light_color = "#00FF00" var/prize = /obj/item/stack/tickets /obj/machinery/computer/arcade/power_change() ..() if(!(stat & (BROKEN|NOPOWER))) set_light(2) else set_light(0) /obj/machinery/computer/arcade/New() ..() var/choice = pick(subtypesof(/obj/machinery/computer/arcade)) new choice(loc) qdel(src) /obj/machinery/computer/arcade/proc/prizevend(var/score) if(!contents.len) var/prize_amount if(score) prize_amount = score else prize_amount = rand(1, 10) new prize(get_turf(src), prize_amount) else var/atom/movable/prize = pick(contents) prize.loc = get_turf(src) /obj/machinery/computer/arcade/emp_act(severity) ..(severity) if(stat & (NOPOWER|BROKEN)) return var/num_of_prizes = 0 switch(severity) if(1) num_of_prizes = rand(1,4) if(2) num_of_prizes = rand(0,2) for(var/i = num_of_prizes; i > 0; i--) prizevend() explosion(get_turf(src), -1, 0, 1+num_of_prizes, flame_range = 1+num_of_prizes) /obj/machinery/computer/arcade/battle name = "arcade machine" desc = "Does not support Pinball." icon = 'icons/obj/computer.dmi' icon_state = "arcade" circuit = /obj/item/weapon/circuitboard/arcade/battle var/enemy_name = "Space Villian" var/temp = "Winners Don't Use Spacedrugs" //Temporary message, for attack messages, etc var/player_hp = 30 //Player health/attack points var/player_mp = 10 var/enemy_hp = 45 //Enemy health/attack points var/enemy_mp = 20 var/gameover = 0 var/blocked = 0 //Player cannot attack/heal while set var/turtle = 0 /obj/machinery/computer/arcade/battle/New() var/name_action var/name_part1 var/name_part2 name_action = pick("Defeat ", "Annihilate ", "Save ", "Strike ", "Stop ", "Destroy ", "Robust ", "Romance ", "Pwn ", "Own ", "Ban ") name_part1 = pick("the Automatic ", "Farmer ", "Lord ", "Professor ", "the Cuban ", "the Evil ", "the Dread King ", "the Space ", "Lord ", "the Great ", "Duke ", "General ") name_part2 = pick("Melonoid", "Murdertron", "Sorcerer", "Ruin", "Jeff", "Ectoplasm", "Crushulon", "Uhangoid", "Vhakoid", "Peteoid", "slime", "Griefer", "ERPer", "Lizard Man", "Unicorn", "Bloopers") enemy_name = replacetext((name_part1 + name_part2), "the ", "") name = (name_action + name_part1 + name_part2) /obj/machinery/computer/arcade/battle/attack_hand(mob/user as mob) if(..()) return user.set_machine(src) var/dat = "Close" dat += "

[enemy_name]

" dat += "

[temp]

" dat += "
Health: [player_hp] | Magic: [player_mp] | Enemy Health: [enemy_hp]
" if(gameover) dat += "
New Game" else dat += "
Attack | " dat += "Heal | " dat += "Recharge Power" dat += "
" //user << browse(dat, "window=arcade") //onclose(user, "arcade") var/datum/browser/popup = new(user, "arcade", "Space Villian 2000") popup.set_content(dat) popup.set_title_image(user.browse_rsc_icon(icon, icon_state)) popup.open() return /obj/machinery/computer/arcade/battle/Topic(href, href_list) if(..()) return if(!blocked && !gameover) if(href_list["attack"]) blocked = 1 var/attackamt = rand(2,6) temp = "You attack for [attackamt] damage!" playsound(src.loc, 'sound/arcade/Hit.ogg', 20, 1, extrarange = -6, falloff = 10) updateUsrDialog() if(turtle > 0) turtle-- sleep(10) enemy_hp -= attackamt arcade_action() else if(href_list["heal"]) blocked = 1 var/pointamt = rand(1,3) var/healamt = rand(6,8) temp = "You use [pointamt] magic to heal for [healamt] damage!" playsound(src.loc, 'sound/arcade/Heal.ogg', 20, 1, extrarange = -6, falloff = 10) updateUsrDialog() turtle++ sleep(10) player_mp -= pointamt player_hp += healamt blocked = 1 updateUsrDialog() arcade_action() else if(href_list["charge"]) blocked = 1 var/chargeamt = rand(4,7) temp = "You regain [chargeamt] points" playsound(src.loc, 'sound/arcade/Mana.ogg', 20, 1, extrarange = -6, falloff = 10) player_mp += chargeamt if(turtle > 0) turtle-- updateUsrDialog() sleep(10) arcade_action() if(href_list["close"]) usr.unset_machine() usr << browse(null, "window=arcade") else if(href_list["newgame"]) //Reset everything temp = "New Round" player_hp = 30 player_mp = 10 enemy_hp = 45 enemy_mp = 20 gameover = 0 turtle = 0 if(emagged) New() emagged = 0 add_fingerprint(usr) updateUsrDialog() return /obj/machinery/computer/arcade/battle/proc/arcade_action() if((enemy_mp <= 0) || (enemy_hp <= 0)) if(!gameover) gameover = 1 temp = "[enemy_name] has fallen! Rejoice!" playsound(src.loc, 'sound/arcade/Win.ogg', 20, 1, extrarange = -6, falloff = 10) if(emagged) feedback_inc("arcade_win_emagged") new /obj/effect/spawner/newbomb/timer/syndicate(get_turf(src)) new /obj/item/clothing/head/collectable/petehat(get_turf(src)) message_admins("[key_name_admin(usr)] has outbombed Cuban Pete and been awarded a bomb.") log_game("[key_name(usr)] has outbombed Cuban Pete and been awarded a bomb.") New() emagged = 0 else feedback_inc("arcade_win_normal") var/score = player_hp + player_mp + 5 prizevend(score) else if(emagged && (turtle >= 4)) var/boomamt = rand(5,10) temp = "[enemy_name] throws a bomb, exploding you for [boomamt] damage!" playsound(src.loc, 'sound/arcade/Boom.ogg', 20, 1, extrarange = -6, falloff = 10) player_hp -= boomamt else if((enemy_mp <= 5) && (prob(70))) var/stealamt = rand(2,3) temp = "[enemy_name] steals [stealamt] of your power!" playsound(src.loc, 'sound/arcade/Steal.ogg', 20, 1, extrarange = -6, falloff = 10) player_mp -= stealamt updateUsrDialog() if(player_mp <= 0) gameover = 1 sleep(10) temp = "You have been drained! GAME OVER" playsound(src.loc, 'sound/arcade/Lose.ogg', 20, 1, extrarange = -6, falloff = 10) if(emagged) feedback_inc("arcade_loss_mana_emagged") usr.gib() else feedback_inc("arcade_loss_mana_normal") else if((enemy_hp <= 10) && (enemy_mp > 4)) temp = "[enemy_name] heals for 4 health!" playsound(src.loc, 'sound/arcade/Heal.ogg', 20, 1, extrarange = -6, falloff = 10) enemy_hp += 4 enemy_mp -= 4 else var/attackamt = rand(3,6) temp = "[enemy_name] attacks for [attackamt] damage!" playsound(src.loc, 'sound/arcade/Hit.ogg', 20, 1, extrarange = -6, falloff = 10) player_hp -= attackamt if((player_mp <= 0) || (player_hp <= 0)) gameover = 1 temp = "You have been crushed! GAME OVER" playsound(src.loc, 'sound/arcade/Lose.ogg', 20, 1, extrarange = -6, falloff = 10) if(emagged) feedback_inc("arcade_loss_hp_emagged") usr.gib() else feedback_inc("arcade_loss_hp_normal") blocked = 0 return /obj/machinery/computer/arcade/battle/emag_act(user as mob) if(!emagged) temp = "If you die in the game, you die for real!" player_hp = 30 player_mp = 10 enemy_hp = 45 enemy_mp = 20 gameover = 0 blocked = 0 emagged = 1 enemy_name = "Cuban Pete" name = "Outbomb Cuban Pete" updateUsrDialog() // *** 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" /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/weapon/circuitboard/arcade/orion_trail var/busy = 0 //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/playing = 0 var/gameover = 0 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 = "" /obj/machinery/computer/arcade/orion_trail/New() // 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 playing = 1 gameover = 0 lings_aboard = 0 //spaceport junk spaceport_raided = 0 spaceport_freebie = 0 last_spaceport_action = "" /obj/machinery/computer/arcade/orion_trail/attack_hand(mob/user) if(..()) return if(fuel <= 0 || food <=0 || settlers.len == 0) gameover = 1 event = null user.set_machine(src) var/dat = "" if(gameover) dat = "

Game Over

" dat += "Like many before you, your crew never made it to Orion, lost to space...
Forever." if(settlers.len == 0) dat += "
Your entire crew died, your ship joins the fleet of ghost-ships littering the galaxy." else if(food <= 0) dat += "
You ran out of food and starved." if(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(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.") dat += "

OK...

" if(emagged) to_chat(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) 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 = 1 if(href_list["continue"]) //Continue your travels if(turns >= ORION_TRAIL_WINTURN) win() 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(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_organ_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 nauseous.")//got off lucky if(severity == 2) to_chat(usr, "You suddenly feel extremely nauseous and hunch over until it passes.") M.Stun(3) 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(5) sleep(30) atom_say("[M] violently throws 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(ORION_TRAIL_FLUX) if(prob(75)) M.Weaken(3) atom_say("A sudden gust of powerful wind slams [M] into the floor!") M.take_organ_damage(25) playsound(src.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(src.loc, 'sound/effects/bang.ogg', 100, 1) var/turf/simulated/floor/F for(F in orange(1, src)) F.ChangeTurf(/turf/space) atom_say("Something slams into the floor around [src], exposing it to space!") if(hull) sleep(10) atom_say("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 atom_say("Something slams into the floor around [src] - luckily, it didn't get through!") playsound(src.loc, 'sound/effects/bang.ogg', 20, 1) if(ORION_TRAIL_MALFUNCTION) playsound(src.loc, 'sound/effects/EMPulse.ogg', 20, 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(src.loc, 'sound/machines/chime.ogg', 20, 1) else if(href_list["newgame"]) //Reset everything newgame() else if(href_list["menu"]) //back to the main menu playing = 0 event = null gameover = 0 food = 80 fuel = 60 settlers = list("Harry","Larry","Bob") else if(href_list["slow"]) //slow down food -= (alive+lings_aboard)*2 fuel -= 5 event = null else if(href_list["pastblack"]) //slow down food -= ((alive+lings_aboard)*2)*3 fuel -= 15 turns += 1 event = null else if(href_list["useengine"]) //use parts engine = max(0, --engine) event = null else if(href_list["useelec"]) //use parts electronics = max(0, --electronics) event = null else if(href_list["usehull"]) //use parts hull = max(0, --hull) event = null else if(href_list["wait"]) //wait 3 days food -= ((alive+lings_aboard)*2)*3 event = null else if(href_list["keepspeed"]) //keep speed if(prob(75)) event = "Breakdown" event() else event = null else if(href_list["blackhole"]) //keep speed past a black hole if(prob(75)) event = ORION_TRAIL_BLACKHOLE event() if(emagged) //has to be here because otherwise it doesn't work playsound(src.loc, 'sound/effects/supermatter.ogg', 100, 1) atom_say("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) atom_say("[S] winks out, just as suddenly as it appeared.") qdel(S) else event = null turns += 1 else if(href_list["holedeath"]) gameover = 1 event = null else if(href_list["eventclose"]) //end an event event = null else if(href_list["killcrew"]) //shoot a crewmember var/sheriff = remove_crewmember() //I shot the sheriff playsound(loc,'sound/weapons/Gunshot.ogg', 100, 1) if(settlers.len == 0 || alive == 0) atom_say("The last crewmember [sheriff], shot themselves, GAME OVER!") if(emagged) usr.death(0) emagged = 0 gameover = 1 event = null else if(emagged) if(usr.name == sheriff) atom_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 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 var/sold = remove_crewmember() last_spaceport_action = "You sold your crewmember, [sold]!" fuel += 7 food += 7 event() else if(href_list["leave_spaceport"]) event = null spaceport_raided = 0 spaceport_freebie = 0 last_spaceport_action = "" else if(href_list["raid_spaceport"]) 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(emagged) atom_say("WEEWOO WEEWOO, Spaceport Security en route!") for(var/i, i<=3, i++) var/mob/living/simple_animal/hostile/syndicate/ranged/orion/O = new/mob/living/simple_animal/hostile/syndicate/ranged/orion(get_turf(src)) O.target = usr fuel += FU food += FO event() else if(href_list["buyparts"]) 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"]) switch(text2num(href_list["trade"])) if(1) //Fuel fuel -= 5 food += 5 last_spaceport_action = "Traded Fuel for Food" if(2) //Food fuel += 5 food -= 5 last_spaceport_action = "Traded Food for Fuel" event() add_fingerprint(usr) updateUsrDialog() busy = 0 return /obj/machinery/computer/arcade/orion_trail/proc/event() eventdat = "

[event]

" 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

" 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

" 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

" 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 += "Oh no, some of your crew are Changelings!" 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() eventdat += "
The Changeling[ling2 ? "s":""] run[ling2 ? "":"s"] up to [deadguy] and capitulates them!" else eventdat += "
You valiantly fight off the Changeling[ling2 ? "s":""]!" eventdat += "
You cut the Changeling[ling2 ? "s":""] up into meat... Eww" if(ling2) food += 30 lings_aboard = max(0,lings_aboard-2) else food += 15 lings_aboard = max(0,--lings_aboard) else eventdat += "
The Changeling[ling2 ? "s":""] run[ling2 ? "":"s"] away, What wimps!" if(ling2) lings_aboard = max(0,lings_aboard-2) else lings_aboard = max(0,--lings_aboard) eventdat += "

Continue

" eventdat += "

Close

" if(ORION_TRAIL_SPACEPORT) if(spaceport_raided) eventdat += "The Spaceport is on high alert! they wont let you dock since you tried to attack them!" if(last_spaceport_action) eventdat += "
Last Spaceport Action: [last_spaceport_action]" eventdat += "

Depart Spaceport

" eventdat += "

Close

" else eventdat += "You pull the ship up to dock at a nearby Spaceport, 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 Spaceport 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 pitty on you, and give you some food and fuel (+[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 += "

Cant afford a new Crewmember

" //Sell crew if(settlers.len > 1) eventdat += "

Sell crew for Fuel and Food (+15FU,+15FO)

" else eventdat += "

Cant afford to sell a Crewmember

" //BUY/SELL STUFF eventdat += "

Spare Parts:

" //Engine parts if(fuel > 5) eventdat += "

Buy Engine Parts (-5FU)

" else eventdat += "

Cant afford to buy Engine Parts" //Hull plates if(fuel > 5) eventdat += "

Buy Hull Plates (-5FU)

" else eventdat += "

Cant afford to buy Hull Plates" //Electronics if(fuel > 5) eventdat += "

Buy Spare Electronics (-5FU)

" else eventdat += "

Cant afford to buy Spare Electronics" //Trade if(fuel > 5) eventdat += "

Trade Fuel for Food (-5FU,+5FO)

" else eventdat += "

Cant afford to Trade Fuel for Food 5) eventdat += "

Trade Food for Fuel (+5FU,-5FO)

" else eventdat += "

Cant afford to Trade Food for FuelYou 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 /mob/living/simple_animal/hostile/syndicate/ranged/orion name = "Spaceport Security" desc = "The Premier security forces for all spaceports found along the Orion Trail." faction = list("orion") loot = list(/obj/effect/landmark/mobcorpse/orionsecurity, /obj/item/weapon/gun/projectile/automatic/c20r, /obj/item/weapon/shield/energy) /obj/effect/landmark/mobcorpse/orionsecurity name = "Spaceport Security" corpseuniform = /obj/item/clothing/under/syndicate corpsesuit = /obj/item/clothing/suit/armor/vest corpseshoes = /obj/item/clothing/shoes/combat corpsegloves = /obj/item/clothing/gloves/combat corpseradio = /obj/item/device/radio/headset corpsemask = /obj/item/clothing/mask/gas corpsehelmet = /obj/item/clothing/head/helmet/swat corpseback = /obj/item/weapon/storage/backpack corpseid = 1 corpseidjob = "Officer" corpseidaccess = "Syndicate" /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) 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/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.") to_chat(user, "You flip the switch on the underside of [src].") active = 1 visible_message("[src] softly beeps and whirs to life!") playsound(src.loc, 'sound/machines/defib_SaftyOn.ogg', 25, 1) atom_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...") atom_say("Uh, Port? Having some issues with our reactor, could you check it out? Over.") sleep(30) atom_say("Oh, God! Code Eight! CODE EIGHT! IT'S GONNA BL-") playsound(src.loc, 'sound/machines/buzz-sigh.ogg', 25, 1) sleep(3.6) visible_message("[src] explodes!") explosion(src.loc, 1,2,4, flame_range = 3) 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