/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/list/prizes = list( /obj/item/weapon/storage/box/snappops = 2, /obj/item/toy/AI = 2, /obj/item/clothing/under/syndicate/tacticool = 2, /obj/item/toy/blink = 2, /obj/item/weapon/storage/box/fakesyndiesuit = 2, /obj/item/toy/sword = 2, /obj/item/toy/gun = 2, /obj/item/toy/crossbow = 2, /obj/item/weapon/storage/fancy/crayons = 2, /obj/item/toy/spinningtoy = 2, /obj/item/toy/crossbow/tommygun = 2, /obj/item/toy/prize/ripley = 1, /obj/item/toy/prize/fireripley = 1, /obj/item/toy/prize/deathripley = 1, /obj/item/toy/prize/gygax = 1, /obj/item/toy/prize/durand = 1, /obj/item/toy/prize/honk = 1, /obj/item/toy/prize/marauder = 1, /obj/item/toy/prize/seraph = 1, /obj/item/toy/prize/mauler = 1, /obj/item/toy/prize/odysseus = 1, /obj/item/toy/prize/phazon = 1, /obj/item/toy/nuke = 2, /obj/item/toy/cards/deck = 2, /obj/item/toy/carpplushie = 2, /obj/item/toy/minimeteor = 2, /obj/item/toy/redbutton = 2, /obj/item/toy/owl = 2, /obj/item/toy/griffin = 2, /obj/item/clothing/head/blob = 2, /obj/item/weapon/id_decal/gold = 2, /obj/item/weapon/id_decal/silver = 2, /obj/item/weapon/id_decal/prisoner = 2, /obj/item/weapon/id_decal/centcom = 2, /obj/item/weapon/id_decal/emag = 2, /obj/item/weapon/spellbook/oneuse/fake_gib = 2, /obj/item/toy/foamblade = 2, /obj/item/toy/flash = 2, /obj/item/toy/minigibber = 2 ) /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(typesof(/obj/machinery/computer/arcade) - /obj/machinery/computer/arcade) new choice(loc) qdel(src) /obj/machinery/computer/arcade/proc/prizevend() if(!contents.len) var/prizeselect = pickweight(prizes) new prizeselect(src.loc) if(istype(prizeselect, /obj/item/toy/gun)) //Ammo comes with the gun new /obj/item/toy/ammo/gun(src.loc) else if(istype(prizeselect, /obj/item/clothing/suit/syndicatefake)) //Helmet is part of the suit new /obj/item/clothing/head/syndicatefake(src.loc) else var/atom/movable/prize = pick(contents) prize.loc = src.loc /obj/machinery/computer/arcade/emp_act(severity) if(stat & (NOPOWER|BROKEN)) ..(severity) return var/empprize = null var/num_of_prizes = 0 switch(severity) if(1) num_of_prizes = rand(1,4) if(2) num_of_prizes = rand(0,2) for(num_of_prizes; num_of_prizes > 0; num_of_prizes--) empprize = pickweight(prizes) new empprize(src.loc) ..(severity) /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 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 ") 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") src.enemy_name = replacetext((name_part1 + name_part2), "the ", "") src.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 += "

[src.enemy_name]

" dat += "

[src.temp]

" dat += "
Health: [src.player_hp] | Magic: [src.player_mp] | Enemy Health: [src.enemy_hp]
" if (src.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(src.icon, src.icon_state)) popup.open() return /obj/machinery/computer/arcade/battle/Topic(href, href_list) if(..()) return 1 if(usr.machine != src) return 0 if (!src.blocked && !src.gameover) if (href_list["attack"]) src.blocked = 1 var/attackamt = rand(2,6) src.temp = "You attack for [attackamt] damage!" src.updateUsrDialog() if(turtle > 0) turtle-- sleep(10) src.enemy_hp -= attackamt src.arcade_action() else if (href_list["heal"]) src.blocked = 1 var/pointamt = rand(1,3) var/healamt = rand(6,8) src.temp = "You use [pointamt] magic to heal for [healamt] damage!" src.updateUsrDialog() turtle++ sleep(10) src.player_mp -= pointamt src.player_hp += healamt src.blocked = 1 src.updateUsrDialog() src.arcade_action() else if (href_list["charge"]) src.blocked = 1 var/chargeamt = rand(4,7) src.temp = "You regain [chargeamt] points" src.player_mp += chargeamt if(turtle > 0) turtle-- src.updateUsrDialog() sleep(10) src.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) src.New() emagged = 0 src.add_fingerprint(usr) src.updateUsrDialog() return /obj/machinery/computer/arcade/battle/proc/arcade_action() if ((src.enemy_mp <= 0) || (src.enemy_hp <= 0)) if(!gameover) src.gameover = 1 src.temp = "[src.enemy_name] has fallen! Rejoice!" if(emagged) feedback_inc("arcade_win_emagged") new /obj/effect/spawner/newbomb/timer/syndicate(src.loc) new /obj/item/clothing/head/collectable/petehat(src.loc) message_admins("[key_name_admin(usr)] has outbombed Cuban Pete and been awarded a bomb.") log_game("[key_name_admin(usr)] has outbombed Cuban Pete and been awarded a bomb.") src.New() emagged = 0 else feedback_inc("arcade_win_normal") prizevend() else if (emagged && (turtle >= 4)) var/boomamt = rand(5,10) src.temp = "[src.enemy_name] throws a bomb, exploding you for [boomamt] damage!" src.player_hp -= boomamt else if ((src.enemy_mp <= 5) && (prob(70))) var/stealamt = rand(2,3) src.temp = "[src.enemy_name] steals [stealamt] of your power!" src.player_mp -= stealamt src.updateUsrDialog() if (src.player_mp <= 0) src.gameover = 1 sleep(10) src.temp = "You have been drained! GAME OVER" if(emagged) feedback_inc("arcade_loss_mana_emagged") usr.gib() else feedback_inc("arcade_loss_mana_normal") else if ((src.enemy_hp <= 10) && (src.enemy_mp > 4)) src.temp = "[src.enemy_name] heals for 4 health!" src.enemy_hp += 4 src.enemy_mp -= 4 else var/attackamt = rand(3,6) src.temp = "[src.enemy_name] attacks for [attackamt] damage!" src.player_hp -= attackamt if ((src.player_mp <= 0) || (src.player_hp <= 0)) src.gameover = 1 src.temp = "You have been crushed! GAME OVER" if(emagged) feedback_inc("arcade_loss_hp_emagged") usr.gib() else feedback_inc("arcade_loss_hp_normal") src.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" src.updateUsrDialog() /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 = 'icons/obj/computer.dmi' icon_state = "arcade" circuit = /obj/item/weapon/circuitboard/arcade/orion_trail 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("Raiders" = 3, "Interstellar Flux" = 1, "Illness" = 3, "Breakdown" = 2, "Malfunction" = 2, "Collision" = 1 ) var/list/stops = list() var/list/stopblurbs = list() /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 miss-guided judgement.", "The nearest star system to Sol, in ages past it stood as a reminder of the boundaries of sub-light travel, now it is a low-population sanctuary for adventureres 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 it's planetary bodies in warmth and radiation.", "Tau Ceti Beta has recently become a way-point for colonists headed towards Orion. There are many ships and makeshift stations in the viscinity.", "Sensors indicate a black-hole's gravitational field is affecting the region of space we were headed through. We could stay the course, but risk being over-come by it's 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 colonist's success.", "You have made it to Orion! Congratulations! Your crew is one of the few to start a new foothold for man-kind!" ) /obj/machinery/computer/arcade/orion_trail/proc/newgame() // Set names of settlers in crew settlers = list() var/choice = null for(var/i = 1; i <= 3; i++) if(prob(50)) choice = pick(first_names_male) else choice = pick(first_names_female) settlers += choice settlers += "[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 /obj/machinery/computer/arcade/orion_trail/attack_hand(mob/user as mob) 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(fuel <= 0) dat += "
You ran out of fuel, and drift, slowly, into a star." dat += "

OK...

" 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 += "

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") popup.set_content(dat) popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) popup.open() return /obj/machinery/computer/arcade/orion_trail/Topic(href, href_list) if(..()) return 1 if(usr.machine != src) return 0 if(href_list["close"]) usr.unset_machine() usr << browse(null, "window=arcade") else if (href_list["continue"]) //Continue your travels if(turns >= 9) win() else if(turns == 2) if(prob(30)) event = "Collision" event() food -= alive*2 fuel -= 5 turns += 1 else food -= alive*2 fuel -= 5 turns += 1 if(prob(75)) event = pickweight(events) event() else food -= alive*2 fuel -= 5 turns += 1 if(prob(75)) event = pickweight(events) event() 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*2 fuel -= 5 event = null else if(href_list["pastblack"]) //slow down food -= (alive*2)*3 fuel -= 15 turns += 1 event = null else if(href_list["useengine"]) //use parts engine -= 1 event = null else if(href_list["useelec"]) //use parts electronics -= 1 event = null else if(href_list["usehull"]) //use parts hull -= 1 event = null else if(href_list["wait"]) //wait 3 days food -= (alive*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 = "BlackHole" event() else event = null turns += 1 else if(href_list["holedeath"]) gameover = 1 event = null else if(href_list["eventclose"]) //end an event event = null src.add_fingerprint(usr) src.updateUsrDialog() return /obj/machinery/computer/arcade/orion_trail/proc/event() eventdat = "

[event]

" if(event == "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 = pick_n_take(settlers) eventdat += "
[deadname] tried to fight back but was killed." alive -= 1 else 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?" eventdat += "

Slow Down Continue

" eventdat += "

Close

" else if(event == "Illness") eventdat += "A deadly illness has been contracted!" var/deadname = pick_n_take(settlers) eventdat += "
[deadname] was killed by the disease." 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 reapirs for 3 days." if(engine >= 1) eventdat += "

Use PartWait

" else eventdat += "

Wait

" eventdat += "

Close

" else if(event == "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

" else if(event == "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 = pick_n_take(settlers) eventdat += "
[deadname] was killed by rapid depressurization." alive -= 1 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

" else if(event == "BlackHole") eventdat += "You were swept away into the black hole." eventdat += "

Oh...

" eventdat += "

Close

" settlers = list() /obj/machinery/computer/arcade/orion_trail/proc/win() playing = 0 turns = 0 prizevend()