Arcade Prize Counter

This commit is contained in:
FalseIncarnate
2016-02-14 01:58:36 -05:00
parent 954d0dadfa
commit 0015eac2c8
10 changed files with 171 additions and 168 deletions
+3 -3
View File
@@ -25,7 +25,7 @@
var/prize_inside = pick(possible_contents)
spawn(10)
user.unEquip(src)
if(istype(/obj/item/stack))
if(istype(prize_inside, /obj/item/stack))
var/amount = pick(5, 10, 15, 25, 50)
new prize_inside(user.loc, amount)
else
@@ -55,7 +55,7 @@
/obj/item/toy/prizeball/therapy
name = "therapy doll capsule"
desc = "Contains one squishy therapy doll."
possible_contents = subtypesof(/obj/item/toy/therapy)
possible_contents = list(/obj/random/therapy)
/obj/item/stack/tickets
name = "prize ticket"
@@ -64,7 +64,7 @@
icon = 'icons/obj/arcade.dmi'
icon_state = "tickets_1"
force = 1
throw_force = 1
throwforce = 1
throw_speed = 1
throw_range = 1
w_class = 1.0
+48 -37
View File
@@ -25,38 +25,16 @@
for(var/obj/item/weapon/stock_parts/matter_bin/B in component_parts)
prize_tier = B.rating
/obj/machinery/prize_counter/proc/UpdateListings()
var/dat = ""
for(var/datum/prize_item/item in global_prizes.prizes)
var/cost_class="affordable"
if(item.cost>tickets)
cost_class="toomuch"
var/itemID = global_prizes.prizes.Find(item)
dat += {"
<tr>
<th>
[itemID]
</th>
<td>
<p><b>[item.name]</b></p>
<p>[item.desc]</p>
</td>
"}
if(prize_tier >= item.tier_unlocked)
dat += {"
<td class="cost [cost_class]">
<a href="byond://?src=\ref[src];buy=[itemID]">[item.cost] Tickets</a>
</td>
</tr>
"}
else
dat += {"
<td>
LOCKED.
</td>
</tr>
"}
return dat
/obj/machinery/prize_counter/update_icon()
if(stat & BROKEN)
icon_state = "prize_counter-broken"
else if(panel_open)
icon_state = "prize_counter-open"
else if(stat & NOPOWER)
icon_state = "prize_counter-off"
else
icon_state = "prize_counter-on"
return
/obj/machinery/prize_counter/attackby(var/obj/item/O as obj, var/mob/user as mob, params)
if(istype(O, /obj/item/stack/tickets))
@@ -74,16 +52,18 @@
if(istype(O, /obj/item/weapon/wrench))
default_unfasten_wrench(user, O)
if(component_parts && istype(O, /obj/item/weapon/crowbar))
if(tickets) //save the tickets!
print_tickets()
default_deconstruction_crowbar(O)
/obj/machinery/prize_counter/attack_hand(mob/user as mob)
if(..())
return
add_fingerprint(user)
interact(user)
/obj/machinery/prize_counter/interact(mob/user as mob)
user.set_machine(src)
add_fingerprint(user)
if(stat & (BROKEN|NOPOWER))
return
@@ -152,7 +132,37 @@ td.cost.toomuch {
</thead>
<tbody>
"}
dat += UpdateListings()
for(var/datum/prize_item/item in global_prizes.prizes)
var/cost_class="affordable"
if(item.cost>tickets)
cost_class="toomuch"
var/itemID = global_prizes.prizes.Find(item)
dat += {"
<tr>
<th>
[itemID]
</th>
<td>
<p><b>[item.name]</b></p>
<p>[item.desc]</p>
</td>
"}
if(prize_tier >= item.tier_unlocked)
dat += {"
<td class="cost [cost_class]">
<a href="byond://?src=\ref[src];buy=[itemID]">[item.cost] Tickets</a>
</td>
</tr>
"}
else
dat += {"
<td>
LOCKED.
</td>
</tr>
"}
dat += {"
</tbody>
</table>
@@ -169,7 +179,7 @@ td.cost.toomuch {
src.add_fingerprint(usr)
if(href_list["eject"])
print_tickets
print_tickets()
if (href_list["buy"])
var/itemID = text2num(href_list["buy"])
@@ -183,7 +193,7 @@ td.cost.toomuch {
else
usr << "<span class='notice'>You've successfully purchased the item.</span>"
src.updateUsrDialog()
interact(usr)
return
/obj/machinery/prize_counter/proc/print_tickets()
@@ -194,4 +204,5 @@ td.cost.toomuch {
tickets -= 9999
print_tickets()
else
new /obj/item/stack/tickets(src.loc, tickets)
new /obj/item/stack/tickets(src.loc, tickets)
tickets = 0
+6 -9
View File
@@ -15,7 +15,7 @@ var/global/datum/prizes/global_prizes = new
if(!item)
return 0
if(prize_counter.tickets >= item.cost)
item.deliver(prize_counter)
new item.typepath(prize_counter.loc)
prize_counter.visible_message("<span class='notice'>Enjoy your prize!</span>")
return 1
else
@@ -23,7 +23,7 @@ var/global/datum/prizes/global_prizes = new
return 0
//////////////////////////////////////
// /datum/prize_item //
// prize_item datum //
//////////////////////////////////////
/datum/prize_item
@@ -33,9 +33,6 @@ var/global/datum/prizes/global_prizes = new
var/cost = 0
var/tier_unlocked = 0 //minimum tier needed to unlock the ability to select this prize
/datum/prize_item/proc/deliver(var/obj/machinery/prize_counter/P_C)
var/thing = new typepath(P_C.loc)
//////////////////////////////////////
// Tier 1 Prizes //
//////////////////////////////////////
@@ -54,7 +51,7 @@ var/global/datum/prizes/global_prizes = new
cost = 35
tier_unlocked = 1
/datum/prize_item/snap-pops
/datum/prize_item/snappops
name = "Snap-Pops"
desc = "A box of exploding snap-pop fireworks."
typepath = /obj/item/weapon/storage/box/snappops
@@ -85,7 +82,7 @@ var/global/datum/prizes/global_prizes = new
/datum/prize_item/cards
name = "Deck of cards"
desc = "Anyone fancy a game of 52-card Pickup?"
typepath = obj/item/toy/cards/deck
typepath = /obj/item/toy/cards/deck
cost = 25
tier_unlocked = 1
@@ -134,10 +131,10 @@ var/global/datum/prizes/global_prizes = new
desc = "A sticker that can make any ID look like a golden ID."
typepath = /obj/item/weapon/id_decal/gold
/datum/prize_item/id_sticker/centcomm
/datum/prize_item/id_sticker/centcom
name = "Centcomm ID Sticker"
desc = "A sticker that can make any ID look like a Central Command ID."
typepath = /obj/item/weapon/id_decal/centcomm
typepath = /obj/item/weapon/id_decal/centcom
/datum/prize_item/id_sticker/emag
name = "Suspicious ID Sticker"
@@ -490,4 +490,13 @@
build_type = IMPRINTER
materials = list(MAT_GLASS=1000, "sacid"=20)
build_path = /obj/item/weapon/circuitboard/clawgame
category = list ("Misc. Machinery")
category = list ("Misc. Machinery")
/datum/design/prize_counter
name = "Machine Design (Prize Counter)"
desc = "The circuit board for an arcade Prize Counter."
req_tech = list("programming" = 2, "materials" = 2)
build_type = IMPRINTER
materials = list(MAT_GLASS=1000, "sacid"=20)
build_path = /obj/item/weapon/circuitboard/prize_counter
category = list("Misc. Machinery")