/obj/machinery/computer/arcade name = "arcade machine" desc = "Does not support Pin ball." 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/list/prizes = list( /obj/item/weapon/storage/box/snappops = 2, /obj/item/toy/blink = 2, /obj/item/clothing/under/syndicate/tacticool = 2, /obj/item/toy/sword = 2, /obj/item/toy/gun = 2, /obj/item/toy/crossbow = 2, /obj/item/clothing/suit/syndicatefake = 2, /obj/item/weapon/storage/fancy/crayons = 2, /obj/item/toy/spinningtoy = 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/waterflower = 1 ) /obj/machinery/computer/arcade var/turtle = 0 /obj/machinery/computer/arcade/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/attack_ai(mob/user as mob) return src.attack_hand(user) /obj/machinery/computer/arcade/attack_paw(mob/user as mob) return src.attack_hand(user) /obj/machinery/computer/arcade/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") return /obj/machinery/computer/arcade/Topic(href, href_list) if(..()) return 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/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 if(!contents.len) feedback_inc("arcade_win_normal") 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 feedback_inc("arcade_win_normal") var/atom/movable/prize = pick(contents) prize.loc = src.loc 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/attackby(I as obj, user as mob) if(istype(I, /obj/item/weapon/card/emag) && !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() else ..() /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)