From 6dfbd8f26037adb79db4e1678bc12b440dc1d6d8 Mon Sep 17 00:00:00 2001 From: FalseIncarnate Date: Wed, 9 Dec 2015 00:37:30 -0500 Subject: [PATCH] Claw Games! Adds claw games, the absolute most-infuriating arcade game known to mankind. - Uses new fancy HTML5 / Javascript code stuff - Is buildable! - Science can produce the board with programming 2 - Requires a matter bin, manipulator, some cables, and a sheet of glass - Costs money! - Accepts cash or ID swipes, 15 credits per play token - Dispenses prizeballs! - Open them for a random plushie, carp plushie, or action figure! - Two sets of sprites, thanks to FoS and Stephanov Notes for the coders / future: This provides a basic example for introducing new HTML5 / Javascript arcade games, as well as a base type machine to use for such games. While this may seem silly, this proves that we are not doom to have to tolerate only the battle game and Orion Trail forever, and can even make our own games for the arcade. --- code/game/machinery/constructable_frame.dm | 13 +++- code/modules/arcade/arcade_base.dm | 17 +++++ code/modules/arcade/arcade_prize.dm | 24 +++++++ code/modules/arcade/claw_game.dm | 59 +++++++++--------- code/modules/arcade/crane.html | 27 +++----- .../research/designs/machine_designs.dm | 14 ++++- icons/obj/arcade.dmi | Bin 7312 -> 11361 bytes paradise.dme | 1 + 8 files changed, 106 insertions(+), 49 deletions(-) create mode 100644 code/modules/arcade/arcade_prize.dm diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm index f4f2d4d4ec6..87560b65d20 100644 --- a/code/game/machinery/constructable_frame.dm +++ b/code/game/machinery/constructable_frame.dm @@ -779,4 +779,15 @@ obj/item/weapon/circuitboard/rdserver origin_tech = "programming=1;engineering=2" req_components = list( /obj/item/weapon/stock_parts/console_screen = 1, - /obj/item/weapon/stock_parts/matter_bin = 3) \ No newline at end of file + /obj/item/weapon/stock_parts/matter_bin = 3) + +/obj/item/weapon/circuitboard/clawgame + name = "circuit board (Claw Game)" + build_path = /obj/machinery/arcade/claw + board_type = "machine" + origin_tech = "programming=2" + req_components = list( + /obj/item/weapon/stock_parts.matter_bin = 1, + /obj/item/weapon/stock_parts/manipulator = 1, + /obj/item/stack/cable_coil = 5, + /obj/item/stack/sheet/glass = 1) \ No newline at end of file diff --git a/code/modules/arcade/arcade_base.dm b/code/modules/arcade/arcade_base.dm index 15600e145c0..8a3a1ae7009 100644 --- a/code/modules/arcade/arcade_base.dm +++ b/code/modules/arcade/arcade_base.dm @@ -34,6 +34,23 @@ else user << "\The [src.name] has [tokens] play credits!" +/obj/machinery/arcade/interact(mob/user as mob) + if(stat & BROKEN || panel_open) + return 0 + if(!tokens && !freeplay) + user << "\The [src.name] doesn't have enough credits to play! Pay first!" + return 0 + if(!playing && (tokens || freeplay)) + user.set_machine(src) + playing = 1 + if(!freeplay) + tokens -= 1 + return 1 + if(playing && (src != user.machine)) + user << "Someone else is already playing this machine, please wait your turn!" + return 0 + return 1 + /obj/machinery/arcade/attackby(var/obj/item/O as obj, var/mob/user as mob, params) if(istype(O, /obj/item/weapon/screwdriver) && anchored) playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) diff --git a/code/modules/arcade/arcade_prize.dm b/code/modules/arcade/arcade_prize.dm new file mode 100644 index 00000000000..30374d31a52 --- /dev/null +++ b/code/modules/arcade/arcade_prize.dm @@ -0,0 +1,24 @@ + +/obj/item/toy/prizeball + name = "prize ball" + desc = "A toy is a toy, but a prize ball could be anything! It could even be a toy!" + icon = 'icons/obj/arcade.dmi' + icon_state = "prizeball_1" + var/opening = 0 + +/obj/item/toy/prizeball/New() + ..() + icon_state = pick("prizeball_1","prizeball_2","prizeball_3") + +/obj/item/toy/prizeball/attack_self(mob/user as mob) + if(opening) + return + opening = 1 + playsound(src.loc, 'sound/items/bubblewrap.ogg', 30, 1, extrarange = -4, falloff = 10) + icon_state = "prizeconfetti" + src.color = pick(random_color_list) + var/prize_inside = pick(/obj/random/carp_plushie, /obj/random/plushie, /obj/random/figure) //will add ticket bundles later + spawn(10) + user.unEquip(src) + new prize_inside(user.loc) + qdel(src) \ No newline at end of file diff --git a/code/modules/arcade/claw_game.dm b/code/modules/arcade/claw_game.dm index 26cdbe3c3d0..fb7d41d487e 100644 --- a/code/modules/arcade/claw_game.dm +++ b/code/modules/arcade/claw_game.dm @@ -1,10 +1,12 @@ +/var/claw_game_html = null /obj/machinery/arcade/claw name = "Claw Game" desc = "One of the most infuriating ways to win a toy." icon = 'icons/obj/arcade.dmi' - icon_state = "clawmachine_on" + icon_state = "clawmachine_1_on" token_price = 15 + var/machine_image = "_1" var/bonus_prize_chance = 5 //chance to dispense a SECOND prize if you win, increased by matter bin rating //This is to make sure the images are available @@ -16,13 +18,18 @@ 'icons/obj/arcade_images/prizeorbs.png') /obj/machinery/arcade/claw/New() + machine_image = pick("_1", "_2") + update_icon() component_parts = list() - //component_parts += new /obj/item/weapon/circuitboard/clawgame(null) + component_parts += new /obj/item/weapon/circuitboard/clawgame(null) component_parts += new /obj/item/weapon/stock_parts/matter_bin(null) component_parts += new /obj/item/weapon/stock_parts/manipulator(null) component_parts += new /obj/item/stack/cable_coil(null, 5) component_parts += new /obj/item/stack/sheet/glass(null, 1) RefreshParts() + if(!claw_game_html) + claw_game_html = file2text('code/modules/arcade/crane.html') + claw_game_html = replacetext(claw_game_html, "/* ref src */", "\ref[src]") /obj/machinery/arcade/claw/RefreshParts() var/bin_upgrades = 0 @@ -32,52 +39,46 @@ /obj/machinery/arcade/claw/update_icon() if(stat & BROKEN) - icon_state = "clawmachine_broken" + icon_state = "clawmachine[machine_image]_broken" else if(panel_open) - icon_state = "clawmachine_open" + icon_state = "clawmachine[machine_image]_open" else if(stat & NOPOWER) - icon_state = "clawmachine_off" + icon_state = "clawmachine[machine_image]_off" else - icon_state = "clawmachine_on" + icon_state = "clawmachine[machine_image]_on" return /obj/machinery/arcade/claw/proc/win() - icon_state = "clawmachine_win" - usr << "YOU WIN!" - //if(prob(bonus_prize_chance)) + icon_state = "clawmachine[machine_image]_win" + visible_message("[src.name] beeps, \"WINNER!\"") + if(prob(bonus_prize_chance)) //double prize mania! - // new /obj/item/toy/prizeball(get_turf(src)) - //new /obj/item/toy/prizeball(get_turf(src)) - spawn(5) + new /obj/item/toy/prizeball(get_turf(src)) + new /obj/item/toy/prizeball(get_turf(src)) + playsound(src.loc, 'sound/arcade/Win.ogg', 50, 1, extrarange = -3, falloff = 10) + spawn(10) update_icon() /obj/machinery/arcade/claw/attack_hand(mob/user as mob) interact(user) /obj/machinery/arcade/claw/interact(mob/user as mob) - if(stat & BROKEN || panel_open) + if(!..()) return - if(!tokens && !freeplay) - user << "The game doesn't have enough credits to play! Pay first!" - return - if(!playing && tokens) - user.set_machine(src) - playing = 1 - if(!freeplay) - tokens -= 1 - if(playing && (src != user.machine)) - user << "Someone else is already playing, please wait your turn!" - return - user << browse_rsc('page.css') for(var/i=1, i<=img_resources.len, i++) user << browse_rsc(img_resources[i]) - user << browse('crane.html', "window=Claw Game;size=600x600") + user << browse(claw_game_html, "window=arcade;size=700x600;can_close=0") return /obj/machinery/arcade/claw/Topic(href, list/href_list) if(..()) return - if(href_list["prizeWon"]) - usr << browse(null, "window=Claw Game") //just in case - win() + var/prize_won = null + prize_won = href_list["prizeWon"] + if(!isnull(prize_won)) + usr.unset_machine() + playing = 0 + usr << browse(null, "window=arcade") //just in case + if(prize_won == "1") + win() diff --git a/code/modules/arcade/crane.html b/code/modules/arcade/crane.html index 9ae0cc151c9..04c89c868b4 100644 --- a/code/modules/arcade/crane.html +++ b/code/modules/arcade/crane.html @@ -49,7 +49,7 @@ setTimeout(function(){ state='falling'; $('#debug-streak').html(0); //reset streak - document.getElementById("lose_btn").click(); + setTimeout(gameShutDown(),500); //end game because you dropped it },4*error+300); } @@ -99,16 +99,7 @@ state='hidden'; prizeWon = true; - document.getElementById("win_btn").click(); - - //$('#debug-streak').html(parseInt($('#debug-streak').html())+1); //inc streak - - //spawn new prize - /* - setTimeout(function(){ - prizes[prizes.length] = new Prize(prizes.length,{top: Math.ceil(Math.random()*100),left: original_left},crane);} - ,1000); - */ + gameShutDown(); } CheckBoundaries(); @@ -182,7 +173,7 @@ if(keys["right"] && !state) //right left += hspd; - if(keys["down"] && !state) { //space + if(keys["down"] && !state) { //drop state = 'down'; $('#'+id+' #crane-claw').css(frames['open']); @@ -256,11 +247,13 @@ } function gameShutDown(){ - if(prizeWon != true) - document.getElementById("lose_btn").click(); + var close_game_link = '

TRY AGAIN!\[Close Game\]' + if(prizeWon) + close_game_link = '

YOU WON!


\[Close Game\]' + document.getElementById('game').innerHTML = '

GAME OVER!


'+close_game_link+'
' } - +
@@ -279,8 +272,8 @@
-
-
+
+

diff --git a/code/modules/research/designs/machine_designs.dm b/code/modules/research/designs/machine_designs.dm index 5c392cc5e01..8caa9af8b12 100644 --- a/code/modules/research/designs/machine_designs.dm +++ b/code/modules/research/designs/machine_designs.dm @@ -463,11 +463,21 @@ category = list ("Misc. Machinery") /datum/design/mining_equipment_vendor - name = "Machine Design (Mining Rewards Vender Board)" - desc = "The circuit board for a Mining Rewards Vender." + name = "Machine Design (Mining Rewards Vendor Board)" + desc = "The circuit board for a Mining Rewards Vendor." id = "mining_equipment_vendor" req_tech = list("programming" = 1, "engineering" = 2) build_type = IMPRINTER materials = list(MAT_GLASS=1000, "sacid"=20) build_path = /obj/item/weapon/circuitboard/mining_equipment_vendor + category = list ("Misc. Machinery") + +/datum/design/clawgame + name = "Machine Design (Claw Game Board)" + desc = "The circuit board for a Claw Game." + id = "clawgame" + req_tech = list("programming" = 2) + build_type = IMPRINTER + materials = list(MAT_GLASS=1000, "sacid"=20) + build_path = /obj/item/weapon/circuitboard/clawgame category = list ("Misc. Machinery") \ No newline at end of file diff --git a/icons/obj/arcade.dmi b/icons/obj/arcade.dmi index 472f423d025679a732f9db61c960a6c82c95df23..50f8e800273838e90934cc2133beb8601e5c7973 100644 GIT binary patch literal 11361 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 literal 7312 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 diff --git a/paradise.dme b/paradise.dme index 2a02fd92d55..faed1e9081f 100644 --- a/paradise.dme +++ b/paradise.dme @@ -959,6 +959,7 @@ #include "code\modules\alarm\motion_alarm.dm" #include "code\modules\alarm\power_alarm.dm" #include "code\modules\arcade\arcade_base.dm" +#include "code\modules\arcade\arcade_prize.dm" #include "code\modules\arcade\claw_game.dm" #include "code\modules\assembly\assembly.dm" #include "code\modules\assembly\bomb.dm"