/obj/machinery/computer/arcade/ name = "random arcade" desc = "random arcade machine" icon_state = "arcade" icon_screen = "invaders" var/prize = /obj/random/arcade /obj/machinery/computer/arcade/Initialize() . = ..() // If it's a generic arcade machine, pick a random arcade // circuit board for it and make the new machine if(!circuit) var/choice = pick(typesof(/obj/item/circuitboard/arcade) - /obj/item/circuitboard/arcade) var/obj/item/circuitboard/CB = new choice() new CB.build_path(loc, CB) return INITIALIZE_HINT_QDEL /obj/machinery/computer/arcade/proc/prizevend() if(!contents.len) new prize(src.loc) else var/atom/movable/chosen_prize = pick(contents) chosen_prize.forceMove(src.loc) /obj/machinery/computer/arcade/attack_ai(mob/user as mob) return src.attack_hand(user) /obj/machinery/computer/arcade/emp_act(severity) if(stat & (NOPOWER|BROKEN)) ..(severity) 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(num_of_prizes; num_of_prizes > 0; num_of_prizes--) new prize(src.loc) ..(severity) /////////////////// // BATTLE HERE // /////////////////// /obj/machinery/computer/arcade/battle name = "arcade machine" desc = "Does not support Pinball." icon_state = "arcade" circuit = /obj/item/circuitboard/arcade/battle var/enemy_name = "Space Villian" var/temp = "Winners don't use space drugs" //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/Initialize() . = ..() 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") 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 = "" dat += "

[src.enemy_name]

" dat += "

[src.temp]

" dat += "
Health: [src.player_hp] | Magic: [src.player_mp] | Enemy Health: [src.enemy_hp]
" dat += "
" if (src.gameover) dat += "New Game" else dat += "Attack | " dat += "Heal | " dat += "Recharge Power" dat += "
" var/datum/browser/arcade_win = new(user, "arcade", capitalize_first_letters(name)) arcade_win.set_content(dat) arcade_win.open() /obj/machinery/computer/arcade/battle/Topic(href, href_list) if(..()) return 1 if (!src.blocked && !src.gameover) if (href_list["attack"]) src.blocked = 1 var/attackamt = rand(2,6) src.temp = "You attack for [attackamt] damage!" playsound(loc, 'sound/arcade/hit.ogg', 5, 1, extrarange = -3, falloff = 10, required_asfx_toggles = ASFX_ARCADE) 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!" playsound(loc, 'sound/arcade/heal.ogg', 2, 1, extrarange = -3, falloff = 10, required_asfx_toggles = ASFX_ARCADE) 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." playsound(loc, 'sound/arcade/mana.ogg', 1, 1, extrarange = -3, falloff = 10, required_asfx_toggles = ASFX_ARCADE) 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!" playsound(loc, 'sound/arcade/win.ogg', 5, 1, extrarange = -3, falloff = 10, required_asfx_toggles = ASFX_ARCADE) 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.",ckey=key_name(usr)) src.New() emagged = 0 else feedback_inc("arcade_win_normal") src.prizevend() else if (emagged && (turtle >= 4)) var/boomamt = rand(5,10) src.temp = "[src.enemy_name] throws a bomb, exploding you for [boomamt] damage!" playsound(loc, 'sound/arcade/boom.ogg', 5, 1, extrarange = -3, falloff = 10, required_asfx_toggles = ASFX_ARCADE) 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!" playsound(loc, 'sound/arcade/steal.ogg', 5, 1, extrarange = -3, falloff = 10, required_asfx_toggles = ASFX_ARCADE) 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!" playsound(loc, 'sound/arcade/heal.ogg', 5, 1, extrarange = -3, falloff = 10, required_asfx_toggles = ASFX_ARCADE) src.enemy_hp += 4 src.enemy_mp -= 4 else var/attackamt = rand(3,6) src.temp = "[src.enemy_name] attacks for [attackamt] damage!" playsound(loc, 'sound/arcade/hit.ogg', 5, 1, extrarange = -3, falloff = 10, required_asfx_toggles = ASFX_ARCADE) src.player_hp -= attackamt if ((src.player_mp <= 0) || (src.player_hp <= 0)) src.gameover = 1 src.temp = "You have been crushed! GAME OVER" playsound(loc, 'sound/arcade/lose.ogg', 5, 1, extrarange = -3, falloff = 10, required_asfx_toggles = ASFX_ARCADE) 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(var/charges, var/mob/user) 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() return 1