mirror of
https://github.com/SPLURT-Station/S.P.L.U.R.T-Station-13.git
synced 2025-12-09 07:48:55 +00:00
adds public bounty consoles without inflation, also removes the mint
This commit is contained in:
@@ -16129,11 +16129,11 @@
|
||||
/area/service/bar)
|
||||
"aMw" = (
|
||||
/obj/machinery/vending/dinnerware{
|
||||
contraband = list(/obj/item/reagent_containers/food/condiment/flour = 4);
|
||||
contraband = list(/obj/item/reagent_containers/food/condiment/flour=4);
|
||||
desc = "This vendor is full of condiments to put on food.";
|
||||
name = "\improper Condiments Vendor";
|
||||
product_ads = "Get your sauces here!;No slave labour was used to make these products!;Nanotrasen Approved?!";
|
||||
products = list(/obj/item/storage/bag/tray = 8, /obj/item/reagent_containers/food/drinks/drinkingglass = 10, /obj/item/storage/box/cups = 5, /obj/item/reagent_containers/food/condiment/pack/ketchup = 20, /obj/item/reagent_containers/food/condiment/pack/mustard = 20, /obj/item/reagent_containers/food/condiment/pack/hotsauce = 20, /obj/item/reagent_containers/food/condiment/pack/astrotame = 20, /obj/item/reagent_containers/food/condiment/saltshaker = 20, /obj/item/reagent_containers/food/condiment/peppermill = 20)
|
||||
products = list(/obj/item/storage/bag/tray=8,/obj/item/reagent_containers/food/drinks/drinkingglass=10,/obj/item/storage/box/cups=5,/obj/item/reagent_containers/food/condiment/pack/ketchup=20,/obj/item/reagent_containers/food/condiment/pack/mustard=20,/obj/item/reagent_containers/food/condiment/pack/hotsauce=20,/obj/item/reagent_containers/food/condiment/pack/astrotame=20,/obj/item/reagent_containers/food/condiment/saltshaker=20,/obj/item/reagent_containers/food/condiment/peppermill=20)
|
||||
},
|
||||
/turf/open/floor/wood,
|
||||
/area/service/bar)
|
||||
@@ -17889,7 +17889,7 @@
|
||||
/area/service/bar)
|
||||
"aRA" = (
|
||||
/obj/machinery/vending/dinnerware{
|
||||
contraband = list(/obj/item/kitchen/rollingpin = 2, /obj/item/kitchen/knife/butcher = 2, /obj/item/reagent_containers/food/condiment/flour = 4)
|
||||
contraband = list(/obj/item/kitchen/rollingpin=2,/obj/item/kitchen/knife/butcher=2,/obj/item/reagent_containers/food/condiment/flour=4)
|
||||
},
|
||||
/turf/open/floor/plasteel/cafeteria,
|
||||
/area/service/kitchen)
|
||||
@@ -54482,6 +54482,10 @@
|
||||
},
|
||||
/turf/open/floor/carpet/arcade,
|
||||
/area/commons/arcade)
|
||||
"fCV" = (
|
||||
/obj/machinery/piratepad/civilian,
|
||||
/turf/open/floor/plasteel,
|
||||
/area/cargo/office)
|
||||
"fDn" = (
|
||||
/obj/structure/table,
|
||||
/obj/item/trash/chips{
|
||||
@@ -65860,6 +65864,12 @@
|
||||
/obj/item/assembly/signaler,
|
||||
/turf/open/floor/plating,
|
||||
/area/maintenance/bar)
|
||||
"wfZ" = (
|
||||
/obj/machinery/computer/piratepad_control/civilian{
|
||||
dir = 1
|
||||
},
|
||||
/turf/open/floor/plasteel,
|
||||
/area/cargo/office)
|
||||
"wgo" = (
|
||||
/obj/effect/turf_decal/stripes/line{
|
||||
dir = 10
|
||||
@@ -90509,7 +90519,7 @@ boR
|
||||
bqs
|
||||
bbR
|
||||
bkM
|
||||
bbR
|
||||
fCV
|
||||
bwd
|
||||
bxB
|
||||
bvL
|
||||
@@ -90766,7 +90776,7 @@ boT
|
||||
bbR
|
||||
bbR
|
||||
buI
|
||||
bbR
|
||||
wfZ
|
||||
bwd
|
||||
bxD
|
||||
byL
|
||||
|
||||
@@ -52,3 +52,18 @@
|
||||
#define PRICE_ABOVE_EXPENSIVE 500 // RCD, Crew pinpointer/monitor, galoshes
|
||||
#define PRICE_REALLY_EXPENSIVE 700 // More premium stuff.
|
||||
#define PRICE_ALMOST_ONE_GRAND 900 // $$$ Insulated gloves, backpack water-tank spray $$$
|
||||
|
||||
//Defines that set what kind of civilian bounties should be applied mid-round.
|
||||
#define CIV_JOB_BASIC 1
|
||||
#define CIV_JOB_ROBO 2
|
||||
#define CIV_JOB_CHEF 3
|
||||
#define CIV_JOB_SEC 4
|
||||
#define CIV_JOB_DRINK 5
|
||||
#define CIV_JOB_CHEM 6
|
||||
#define CIV_JOB_VIRO 7
|
||||
#define CIV_JOB_SCI 8
|
||||
#define CIV_JOB_ENG 9
|
||||
#define CIV_JOB_MINE 10
|
||||
#define CIV_JOB_MED 11
|
||||
#define CIV_JOB_GROW 12
|
||||
#define CIV_JOB_RANDOM 13
|
||||
|
||||
225
code/game/machinery/civilian_bountys.dm
Normal file
225
code/game/machinery/civilian_bountys.dm
Normal file
@@ -0,0 +1,225 @@
|
||||
///Pad for the Civilian Bounty Control.
|
||||
/obj/machinery/piratepad/civilian
|
||||
name = "civilian bounty pad"
|
||||
desc = "A machine designed to send civilian bounty targets to centcom."
|
||||
layer = TABLE_LAYER
|
||||
|
||||
///Computer for assigning new civilian bounties, and sending bounties for collection.
|
||||
/obj/machinery/computer/piratepad_control/civilian
|
||||
name = "civilian bounty control terminal"
|
||||
desc = "A console for assigning civilian bounties to inserted ID cards, and for controlling the bounty pad for export."
|
||||
status_report = "Ready for delivery."
|
||||
icon_screen = "civ_bounty"
|
||||
icon_keyboard = "id_key"
|
||||
warmup_time = 3 SECONDS
|
||||
var/obj/item/card/id/inserted_scan_id
|
||||
|
||||
/obj/machinery/computer/piratepad_control/civilian/Initialize()
|
||||
. = ..()
|
||||
pad = /obj/machinery/piratepad/civilian
|
||||
|
||||
/obj/machinery/computer/piratepad_control/civilian/attackby(obj/item/I, mob/living/user, params)
|
||||
. = ..()
|
||||
if(isidcard(I))
|
||||
if(id_insert(user, I, inserted_scan_id))
|
||||
inserted_scan_id = I
|
||||
return TRUE
|
||||
|
||||
/obj/machinery/computer/piratepad_control/multitool_act(mob/living/user, obj/item/multitool/I)
|
||||
if(istype(I) && istype(I.buffer,/obj/machinery/piratepad/civilian))
|
||||
to_chat(user, "<span class='notice'>You link [src] with [I.buffer] in [I] buffer.</span>")
|
||||
pad = I.buffer
|
||||
return TRUE
|
||||
|
||||
/obj/machinery/computer/piratepad_control/civilian/LateInitialize()
|
||||
. = ..()
|
||||
if(cargo_hold_id)
|
||||
for(var/obj/machinery/piratepad/civilian/C in GLOB.machines)
|
||||
if(C.cargo_hold_id == cargo_hold_id)
|
||||
pad = C
|
||||
return
|
||||
else
|
||||
pad = locate() in range(4,src)
|
||||
|
||||
/obj/machinery/computer/piratepad_control/civilian/recalc()
|
||||
if(sending)
|
||||
return FALSE
|
||||
if(!inserted_scan_id)
|
||||
status_report = "Please insert your ID first."
|
||||
playsound(loc, 'sound/machines/synth_no.ogg', 30 , TRUE)
|
||||
return FALSE
|
||||
if(!inserted_scan_id.registered_account.civilian_bounty)
|
||||
status_report = "Please accept a new civilian bounty first."
|
||||
playsound(loc, 'sound/machines/synth_no.ogg', 30 , TRUE)
|
||||
return FALSE
|
||||
status_report = "Civilian Bounty: "
|
||||
for(var/atom/movable/AM in get_turf(pad))
|
||||
if(AM == pad)
|
||||
continue
|
||||
if(inserted_scan_id.registered_account.civilian_bounty.applies_to(AM))
|
||||
status_report += "Target Applicable."
|
||||
playsound(loc, 'sound/machines/synth_yes.ogg', 30 , TRUE)
|
||||
return
|
||||
status_report += "Not Applicable."
|
||||
playsound(loc, 'sound/machines/synth_no.ogg', 30 , TRUE)
|
||||
|
||||
/**
|
||||
* This fully rewrites base behavior in order to only check for bounty objects, and nothing else.
|
||||
*/
|
||||
/obj/machinery/computer/piratepad_control/civilian/send()
|
||||
playsound(loc, 'sound/machines/wewewew.ogg', 70, TRUE)
|
||||
if(!sending)
|
||||
return
|
||||
if(!inserted_scan_id)
|
||||
stop_sending()
|
||||
return FALSE
|
||||
if(!inserted_scan_id.registered_account.civilian_bounty)
|
||||
stop_sending()
|
||||
return FALSE
|
||||
var/datum/bounty/curr_bounty = inserted_scan_id.registered_account.civilian_bounty
|
||||
var/active_stack = 0
|
||||
for(var/atom/movable/AM in get_turf(pad))
|
||||
if(AM == pad)
|
||||
continue
|
||||
if(curr_bounty.applies_to(AM))
|
||||
active_stack ++
|
||||
curr_bounty.ship(AM)
|
||||
qdel(AM)
|
||||
if(active_stack >= 1)
|
||||
status_report += "Bounty Target Found x[active_stack]. "
|
||||
else
|
||||
status_report = "No applicable targets found. Aborting."
|
||||
stop_sending()
|
||||
if(curr_bounty.can_claim())
|
||||
//Pay for the bounty with the ID's department funds.
|
||||
inserted_scan_id.registered_account.transfer_money(SSeconomy.get_dep_account(inserted_scan_id.registered_account.account_job.paycheck_department), curr_bounty.reward)
|
||||
status_report += "Bounty Completed! [curr_bounty.reward] credits have been paid out. "
|
||||
inserted_scan_id.registered_account.reset_bounty()
|
||||
pad.visible_message("<span class='notice'>[pad] activates!</span>")
|
||||
flick(pad.sending_state,pad)
|
||||
pad.icon_state = pad.idle_state
|
||||
playsound(loc, 'sound/machines/synth_yes.ogg', 30 , TRUE)
|
||||
sending = FALSE
|
||||
|
||||
/obj/machinery/computer/piratepad_control/civilian/AltClick(mob/user)
|
||||
. = ..()
|
||||
id_eject(user, inserted_scan_id)
|
||||
|
||||
/obj/machinery/computer/piratepad_control/civilian/ui_interact(mob/user, datum/tgui/ui)
|
||||
ui = SStgui.try_update_ui(user, src, ui)
|
||||
if(!ui)
|
||||
ui = new(user, src, "CivCargoHoldTerminal", name)
|
||||
ui.open()
|
||||
|
||||
/obj/machinery/computer/piratepad_control/civilian/ui_data(mob/user)
|
||||
var/list/data = list()
|
||||
data["points"] = points
|
||||
data["pad"] = pad ? TRUE : FALSE
|
||||
data["sending"] = sending
|
||||
data["status_report"] = status_report
|
||||
data["id_inserted"] = inserted_scan_id
|
||||
if(inserted_scan_id && inserted_scan_id.registered_account)
|
||||
data["id_bounty_info"] = inserted_scan_id.registered_account.bounty_text()
|
||||
data["id_bounty_num"] = inserted_scan_id.registered_account.bounty_num()
|
||||
data["id_bounty_value"] = inserted_scan_id.registered_account.bounty_value()
|
||||
return data
|
||||
|
||||
/obj/machinery/computer/piratepad_control/civilian/ui_act(action, params)
|
||||
if(..())
|
||||
return
|
||||
if(!pad)
|
||||
return
|
||||
if(!usr.canUseTopic(src, BE_CLOSE))
|
||||
return
|
||||
switch(action)
|
||||
if("recalc")
|
||||
recalc()
|
||||
if("send")
|
||||
start_sending()
|
||||
if("stop")
|
||||
stop_sending()
|
||||
if("bounty")
|
||||
if(!inserted_scan_id || !inserted_scan_id.registered_account)
|
||||
return
|
||||
var/datum/bank_account/pot_acc = inserted_scan_id.registered_account
|
||||
if(pot_acc.civilian_bounty && ((world.time) < pot_acc.bounty_timer + 5 MINUTES))
|
||||
var/curr_time = round(((pot_acc.bounty_timer + (5 MINUTES))-world.time)/ (1 MINUTES), 0.01)
|
||||
to_chat(usr, "<span class='warning'>You already have an incomplete civilian bounty, try again in [curr_time] minutes to replace it!</span>")
|
||||
return FALSE
|
||||
var/datum/bounty/crumbs = random_bounty(pot_acc.account_job.bounty_types) //It's a good scene from War Dogs (2016).
|
||||
/*if(SSeconomy.inflation_value() > 1) //lets try not to add inflation for right now
|
||||
if(istype(crumbs, /datum/bounty/item))
|
||||
var/datum/bounty/item/items = crumbs
|
||||
items.required_count = max(round((items.required_count)/(SSeconomy.inflation_value()*2)), 1)
|
||||
if(istype(crumbs, /datum/bounty/reagent))
|
||||
var/datum/bounty/reagent/chems = crumbs
|
||||
chems.required_volume = max(round((chems.required_volume)/SSeconomy.inflation_value()*2), 1)
|
||||
crumbs.reward = round(crumbs.reward/(SSeconomy.inflation_value()*2))*/
|
||||
pot_acc.bounty_timer = world.time
|
||||
pot_acc.civilian_bounty = crumbs
|
||||
if("eject")
|
||||
id_eject(usr, inserted_scan_id)
|
||||
. = TRUE
|
||||
|
||||
///Self explanitory, holds the ID card inthe console for bounty payout and manipulation.
|
||||
/obj/machinery/computer/piratepad_control/civilian/proc/id_insert(mob/user, obj/item/inserting_item, obj/item/target)
|
||||
var/obj/item/card/id/card_to_insert = inserting_item
|
||||
var/holder_item = FALSE
|
||||
|
||||
if(!isidcard(card_to_insert))
|
||||
card_to_insert = inserting_item.RemoveID()
|
||||
holder_item = TRUE
|
||||
|
||||
if(!card_to_insert || !user.transferItemToLoc(card_to_insert, src))
|
||||
return FALSE
|
||||
|
||||
if(target)
|
||||
if(holder_item && inserting_item.InsertID(target))
|
||||
playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, FALSE)
|
||||
else
|
||||
id_eject(user, target)
|
||||
|
||||
user.visible_message("<span class='notice'>[user] inserts \the [card_to_insert] into \the [src].</span>",
|
||||
"<span class='notice'>You insert \the [card_to_insert] into \the [src].</span>")
|
||||
playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, FALSE)
|
||||
updateUsrDialog()
|
||||
return TRUE
|
||||
|
||||
///Removes A stored ID card.
|
||||
/obj/machinery/computer/piratepad_control/civilian/proc/id_eject(mob/user, obj/target)
|
||||
if(!target)
|
||||
to_chat(user, "<span class='warning'>That slot is empty!</span>")
|
||||
return FALSE
|
||||
else
|
||||
target.forceMove(drop_location())
|
||||
if(!issilicon(user) && Adjacent(user))
|
||||
user.put_in_hands(target)
|
||||
user.visible_message("<span class='notice'>[user] gets \the [target] from \the [src].</span>", \
|
||||
"<span class='notice'>You get \the [target] from \the [src].</span>")
|
||||
playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, FALSE)
|
||||
inserted_scan_id = null
|
||||
updateUsrDialog()
|
||||
return TRUE
|
||||
|
||||
|
||||
///Beacon to launch a new bounty setup when activated.
|
||||
/obj/item/civ_bounty_beacon
|
||||
name = "civilian bounty beacon"
|
||||
desc = "N.T. approved civilian bounty beacon, toss it down and you will have a bounty pad and computer delivered to you."
|
||||
icon = 'icons/obj/objects.dmi'
|
||||
icon_state = "floor_beacon"
|
||||
var/uses = 2
|
||||
|
||||
/obj/item/civ_bounty_beacon/attack_self()
|
||||
loc.visible_message("<span class='warning'>\The [src] begins to beep loudly!</span>")
|
||||
addtimer(CALLBACK(src, .proc/launch_payload), 4 SECONDS)
|
||||
|
||||
/obj/item/civ_bounty_beacon/proc/launch_payload()
|
||||
playsound(src, "sparks", 80, TRUE)
|
||||
switch(uses)
|
||||
if(2)
|
||||
new /obj/machinery/piratepad/civilian(drop_location())
|
||||
if(1)
|
||||
new /obj/machinery/computer/piratepad_control/civilian(drop_location())
|
||||
qdel(src)
|
||||
uses = uses - 1
|
||||
@@ -372,6 +372,11 @@
|
||||
. += "The [D.account_holder] reports a balance of [D.account_balance] cr."
|
||||
. += "<span class='info'>Alt-Click the ID to pull money from the linked account in the form of holochips.</span>"
|
||||
. += "<span class='info'>You can insert credits into the linked account by pressing holochips, cash, or coins against the ID.</span>"
|
||||
if(registered_account.civilian_bounty)
|
||||
. += "<span class='info'><b>There is an active civilian bounty.</b>"
|
||||
. += "<span class='info'><i>[registered_account.bounty_text()]</i></span>"
|
||||
. += "<span class='info'>Quantity: [registered_account.bounty_num()]</span>"
|
||||
. += "<span class='info'>Reward: [registered_account.bounty_value()]</span>"
|
||||
if(registered_account.account_holder == user.real_name)
|
||||
. += "<span class='boldnotice'>If you lose this ID card, you can reclaim your account by Alt-Clicking a blank ID card while holding it and entering your account ID number.</span>"
|
||||
else
|
||||
|
||||
@@ -348,6 +348,10 @@
|
||||
name = "Snow Taxi (Computer Board)"
|
||||
build_path = /obj/machinery/computer/shuttle/snow_taxi
|
||||
|
||||
/obj/item/circuitboard/computer/bountypad
|
||||
name = "Bounty Pad (Computer Board)"
|
||||
build_path = /obj/machinery/computer/piratepad_control/civilian
|
||||
|
||||
// /obj/item/circuitboard/computer/bountypad
|
||||
// name = "Bounty Pad (Computer Board)"
|
||||
// build_path = /obj/machinery/computer/piratepad_control/civilian
|
||||
|
||||
@@ -685,15 +685,15 @@
|
||||
/obj/item/stack/sheet/glass = 1,
|
||||
/obj/item/vending_refill/donksoft = 1)
|
||||
|
||||
// /obj/item/circuitboard/machine/bountypad
|
||||
// name = "Civilian Bounty Pad (Machine Board)"
|
||||
// icon_state = "generic"
|
||||
// build_path = /obj/machinery/piratepad/civilian
|
||||
// req_components = list(
|
||||
// /obj/item/stock_parts/card_reader = 1,
|
||||
// /obj/item/stock_parts/scanning_module = 1,
|
||||
// /obj/item/stock_parts/micro_laser = 1
|
||||
// )
|
||||
|
||||
/obj/item/circuitboard/machine/bountypad
|
||||
name = "Civilian Bounty Pad (Machine Board)"
|
||||
icon_state = "generic"
|
||||
build_path = /obj/machinery/piratepad/civilian
|
||||
req_components = list(
|
||||
/obj/item/stock_parts/scanning_module = 1,
|
||||
/obj/item/stock_parts/micro_laser = 1
|
||||
)
|
||||
|
||||
// /obj/item/circuitboard/machine/accounting
|
||||
// name = "Account Registration Device (Machine Board)"
|
||||
|
||||
@@ -101,27 +101,30 @@
|
||||
required_count = 15
|
||||
wanted_types = list(/obj/item/shard)
|
||||
|
||||
/*
|
||||
/datum/bounty/item/assistant/comfy_chair
|
||||
name = "Comfy Chairs"
|
||||
name = "Comfortable Chairs"
|
||||
description = "Commander Pat is unhappy with his chair. He claims it hurts his back. Ship some alternatives out to humor him."
|
||||
reward = 900
|
||||
required_count = 5
|
||||
wanted_types = list(/obj/structure/chair/comfy)
|
||||
*/
|
||||
|
||||
// /datum/bounty/item/assistant/geranium
|
||||
// name = "Geraniums"
|
||||
// description = "Commander Zot has the hots for Commander Zena. Send a shipment of geraniums - her favorite flower - and he'll happily reward you."
|
||||
// reward = 1000
|
||||
// required_count = 3
|
||||
// wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/poppy/geranium)
|
||||
/datum/bounty/item/assistant/geranium
|
||||
name = "Geraniums"
|
||||
description = "Commander Zot has the hots for Commander Zena. Send a shipment of geraniums - her favorite flower - and he'll happily reward you."
|
||||
reward = 1000
|
||||
required_count = 3
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/poppy/geranium)
|
||||
include_subtypes = FALSE
|
||||
|
||||
// /datum/bounty/item/assistant/poppy
|
||||
// name = "Poppies"
|
||||
// description = "Commander Zot really wants to sweep Security Officer Olivia off her feet. Send a shipment of Poppies - her favorite flower - and he'll happily reward you."
|
||||
// reward = 1000
|
||||
// required_count = 3
|
||||
// wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/poppy)
|
||||
// include_subtypes = FALSE
|
||||
/datum/bounty/item/assistant/poppy
|
||||
name = "Poppies"
|
||||
description = "Commander Zot really wants to sweep Security Officer Olivia off her feet. Send a shipment of Poppies - her favorite flower - and he'll happily reward you."
|
||||
reward = 1000
|
||||
required_count = 3
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/grown/poppy)
|
||||
include_subtypes = FALSE
|
||||
|
||||
/datum/bounty/item/assistant/shadyjims
|
||||
name = "Shady Jim's"
|
||||
@@ -156,11 +159,6 @@
|
||||
required_count = 3
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/monkeycube)
|
||||
*/
|
||||
/datum/bounty/item/assistant/chainsaw
|
||||
name = "Chainsaw"
|
||||
description = "The chef at CentCom is having trouble butchering her animals. She requests one chainsaw, please."
|
||||
reward = 2500
|
||||
wanted_types = list(/obj/item/chainsaw)
|
||||
|
||||
/datum/bounty/item/assistant/ied
|
||||
name = "IED"
|
||||
@@ -169,30 +167,12 @@
|
||||
required_count = 3
|
||||
wanted_types = list(/obj/item/grenade/iedcasing)
|
||||
|
||||
/datum/bounty/item/assistant/bonfire
|
||||
name = "Lit Bonfire"
|
||||
description = "Space heaters are malfunctioning and the cargo crew of Central Command is starting to feel cold. Ship a lit bonfire to warm them up."
|
||||
reward = 5000
|
||||
wanted_types = list(/obj/structure/bonfire)
|
||||
|
||||
/datum/bounty/item/assistant/bonfire/applies_to(obj/O)
|
||||
if(!..())
|
||||
return FALSE
|
||||
var/obj/structure/bonfire/B = O
|
||||
return !!B.burning
|
||||
|
||||
/datum/bounty/item/assistant/corgimeat
|
||||
name = "Raw Corgi Meat"
|
||||
description = "The Syndicate recently stole all of CentCom's corgi meat. Ship out a replacement immediately."
|
||||
reward = 3000
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/meat/slab/corgi)
|
||||
|
||||
/datum/bounty/item/assistant/tail_whip
|
||||
name = "Nine Tails whip"
|
||||
description = "Commander Jackson is looking for a fine addition to her exotic weapons collection. She will reward you handsomely for either a Cat or Liz o' Nine Tails."
|
||||
reward = 4000
|
||||
wanted_types = list(/obj/item/melee/chainofcommand/tailwhip)
|
||||
|
||||
/datum/bounty/item/assistant/bolas
|
||||
name = "Bolas"
|
||||
description = "Centcom's chef has lost their mind. They're streaking naked though the halls, greased up with butter and cooking oil. Send some bola's so we can capture them."
|
||||
@@ -215,7 +195,7 @@
|
||||
wanted_types = list(/obj/item/storage/belt/utility)
|
||||
|
||||
/datum/bounty/item/assistant/gasmasks
|
||||
name = "Gas Masks"
|
||||
name = "Gas Masks"
|
||||
description = "The good news is that we have more miasma than we'll ever need. The bad news is, somone opened the release valve on the canisters. Ship us some gas masks!"
|
||||
reward = 1250
|
||||
required_count = 4
|
||||
|
||||
@@ -228,3 +228,14 @@
|
||||
multiplier = 6
|
||||
bonus_desc = "Under no circumstances mention this shipment to security."
|
||||
foodtype = "\"meal\""
|
||||
|
||||
/datum/bounty/item/botany/bonfire
|
||||
name = "Lit Bonfire"
|
||||
description = "Space heaters are malfunctioning and the cargo crew of Central Command is starting to feel cold. Grow some logs and Ship a lit bonfire to warm them up."
|
||||
wanted_types = list(/obj/structure/bonfire)
|
||||
|
||||
/datum/bounty/item/botany/bonfire/applies_to(obj/O)
|
||||
if(!..())
|
||||
return FALSE
|
||||
var/obj/structure/bonfire/B = O
|
||||
return !!B.burning
|
||||
|
||||
@@ -137,3 +137,10 @@
|
||||
reward = 2250
|
||||
required_count = 3
|
||||
wanted_types = list(/obj/item/reagent_containers/food/snacks/bbqribs)
|
||||
|
||||
/datum/bounty/item/chef/corgifarming //Butchering is a chef's job.
|
||||
name = "Corgi Hides"
|
||||
description = "Admiral Weinstein's space yacht needs new upholstery. A dozen Corgi furs should do just fine."
|
||||
reward = 30000 //that's a lot of dead dogs
|
||||
required_count = 12
|
||||
wanted_types = list(/obj/item/stack/sheet/animalhide/corgi)
|
||||
|
||||
@@ -89,3 +89,15 @@
|
||||
description = "Station 24 is being overrun by hordes of angry Mothpeople. They are requesting the ultimate bug zapper."
|
||||
reward = 50000 //requires 14k credits of purchases, not to mention cooperation with engineering/heads of staff to set up inside the cramped shuttle
|
||||
wanted_types = list(/obj/singularity/energy_ball)
|
||||
|
||||
/datum/bounty/item/engineering/emitter
|
||||
name = "Emitter"
|
||||
description = "We think there may be a defect in your station's emitter designs, based on the sheer number of delaminations your sector seems to see. Ship us one of yours."
|
||||
reward = 2500
|
||||
wanted_types = list(/obj/machinery/power/emitter)
|
||||
|
||||
/datum/bounty/item/engineering/hydro_tray
|
||||
name = "Hydroponics Tray"
|
||||
description = "The lab technicians are trying to figure out how to lower the power drain of hydroponics trays, but we fried our last one. Mind building one for us?"
|
||||
reward = 2000
|
||||
wanted_types = list(/obj/machinery/hydroponics/constructable)
|
||||
|
||||
@@ -125,3 +125,15 @@
|
||||
reward = 2250
|
||||
required_count = 5
|
||||
wanted_types = list(/obj/item/defibrillator)
|
||||
|
||||
/datum/bounty/item/medical/chainsaw
|
||||
name = "Chainsaw"
|
||||
description = "A CMO at CentCom is having trouble operating on golems. She requests one chainsaw, please."
|
||||
reward = 2500
|
||||
wanted_types = list(/obj/item/chainsaw)
|
||||
|
||||
/datum/bounty/item/medical/tail_whip //Like the cat tail bounties, with more processing.
|
||||
name = "Nine Tails whip"
|
||||
description = "Commander Jackson is looking for a fine addition to her exotic weapons collection. She will reward you handsomely for either a Cat or Liz o' Nine Tails."
|
||||
reward = 4000
|
||||
wanted_types = list(/obj/item/melee/chainofcommand/tailwhip)
|
||||
|
||||
@@ -52,3 +52,37 @@
|
||||
reward = 2750
|
||||
required_count = 3
|
||||
wanted_types = list(/obj/item/firing_pin/test_range)
|
||||
|
||||
/datum/bounty/item/security/pepperspray
|
||||
name = "Pepperspray"
|
||||
description = "We've been having a bad run of riots on Space Station 76. We could use some new pepperspray cans."
|
||||
reward = 3000
|
||||
required_count = 4
|
||||
wanted_types = list(/obj/item/reagent_containers/spray/pepper)
|
||||
|
||||
/datum/bounty/item/security/prison_clothes
|
||||
name = "Prison Uniforms"
|
||||
description = "Terragov has been unable to source any new prisoner uniforms, so if you have any spares, we'll take them off your hands."
|
||||
reward = 2000
|
||||
required_count = 4
|
||||
wanted_types = list(/obj/item/clothing/under/rank/prisoner)
|
||||
|
||||
/datum/bounty/item/security/plates
|
||||
name = "License Plates"
|
||||
description = "As a result of a bad clown car crash, we could use an advance on some of your prisoner's license plates."
|
||||
reward = 1000
|
||||
required_count = 10
|
||||
wanted_types = list(/obj/item/stack/license_plates/filled)
|
||||
|
||||
/datum/bounty/item/security/earmuffs
|
||||
name = "Earmuffs"
|
||||
description = "Central Command is getting tired of your station's messages. They've ordered that you ship some earmuffs to lessen the annoyance."
|
||||
reward = 1000
|
||||
wanted_types = list(/obj/item/clothing/ears/earmuffs)
|
||||
|
||||
/datum/bounty/item/security/handcuffs
|
||||
name = "Handcuffs"
|
||||
description = "A large influx of escaped convicts have arrived at Central Command. Now is the perfect time to ship out spare handcuffs (or restraints)."
|
||||
reward = 1000
|
||||
required_count = 5
|
||||
wanted_types = list(/obj/item/restraints/handcuffs)
|
||||
|
||||
@@ -76,8 +76,13 @@ GLOBAL_LIST_EMPTY(bounties_list)
|
||||
return TRUE
|
||||
|
||||
// Returns a new bounty of random type, but does not add it to GLOB.bounties_list.
|
||||
/proc/random_bounty()
|
||||
switch(rand(1, 15))
|
||||
/proc/random_bounty(var/guided = 0)
|
||||
var/bounty_num
|
||||
if(guided)
|
||||
bounty_num = guided
|
||||
else
|
||||
bounty_num = rand(1,13)
|
||||
switch(bounty_num)
|
||||
if(1)
|
||||
var/subtype = pick(subtypesof(/datum/bounty/item/assistant))
|
||||
return new subtype
|
||||
@@ -100,27 +105,27 @@ GLOBAL_LIST_EMPTY(bounties_list)
|
||||
var/subtype = pick(subtypesof(/datum/bounty/virus))
|
||||
return new subtype
|
||||
if(8)
|
||||
var/subtype = pick(subtypesof(/datum/bounty/item/science))
|
||||
return new subtype
|
||||
if(9)
|
||||
if(rand(2) == 1)
|
||||
var/subtype = pick(subtypesof(/datum/bounty/item/science))
|
||||
return new subtype
|
||||
var/subtype = pick(subtypesof(/datum/bounty/item/slime))
|
||||
return new subtype
|
||||
if(10)
|
||||
if(9)
|
||||
var/subtype = pick(subtypesof(/datum/bounty/item/engineering))
|
||||
return new subtype
|
||||
if(11)
|
||||
if(10)
|
||||
var/subtype = pick(subtypesof(/datum/bounty/item/mining))
|
||||
return new subtype
|
||||
if(12)
|
||||
if(11)
|
||||
var/subtype = pick(subtypesof(/datum/bounty/item/medical))
|
||||
return new subtype
|
||||
if(13)
|
||||
if(12)
|
||||
var/subtype = pick(subtypesof(/datum/bounty/item/botany))
|
||||
return new subtype
|
||||
if(14)
|
||||
if(13)
|
||||
var/subtype = pick(subtypesof(/datum/bounty/item/silly))
|
||||
return new subtype
|
||||
if(15)
|
||||
if(14)
|
||||
var/subtype = pick(subtypesof(/datum/bounty/item/gardencook))
|
||||
return new subtype
|
||||
|
||||
|
||||
@@ -10,6 +10,8 @@
|
||||
var/account_id
|
||||
var/being_dumped = FALSE //pink levels are rising
|
||||
var/withdrawDelay = 0
|
||||
var/datum/bounty/civilian_bounty
|
||||
var/bounty_timer = 0
|
||||
|
||||
/datum/bank_account/New(newname, job)
|
||||
if(add_to_accounts)
|
||||
@@ -100,6 +102,47 @@
|
||||
if(M.can_hear())
|
||||
to_chat(M, "[icon2html(icon_source, M)] <span class='notice'>[message]</span>")
|
||||
|
||||
/**
|
||||
* Returns a string with the civilian bounty's description on it.
|
||||
*/
|
||||
/datum/bank_account/proc/bounty_text()
|
||||
if(!civilian_bounty)
|
||||
return FALSE
|
||||
if(istype(civilian_bounty, /datum/bounty/item))
|
||||
var/datum/bounty/item/item = civilian_bounty
|
||||
return item.description
|
||||
if(istype(civilian_bounty, /datum/bounty/reagent))
|
||||
var/datum/bounty/reagent/chemical = civilian_bounty
|
||||
return chemical.description
|
||||
|
||||
/**
|
||||
* Returns the required item count, or required chemical units required to submit a bounty.
|
||||
*/
|
||||
/datum/bank_account/proc/bounty_num()
|
||||
if(!civilian_bounty)
|
||||
return FALSE
|
||||
if(istype(civilian_bounty, /datum/bounty/item))
|
||||
var/datum/bounty/item/item = civilian_bounty
|
||||
return "[item.shipped_count]/[item.required_count]"
|
||||
if(istype(civilian_bounty, /datum/bounty/reagent))
|
||||
var/datum/bounty/reagent/chemical = civilian_bounty
|
||||
return "[chemical.shipped_volume]/[chemical.required_volume] u"
|
||||
|
||||
/**
|
||||
* Produces the value of the account's civilian bounty reward, if able.
|
||||
*/
|
||||
/datum/bank_account/proc/bounty_value()
|
||||
if(!civilian_bounty)
|
||||
return FALSE
|
||||
return civilian_bounty.reward
|
||||
|
||||
/**
|
||||
* Performs house-cleaning on variables when a civilian bounty is replaced, or, when a bounty is claimed.
|
||||
*/
|
||||
/datum/bank_account/proc/reset_bounty()
|
||||
civilian_bounty = null
|
||||
bounty_timer = 0
|
||||
|
||||
/datum/bank_account/department
|
||||
account_holder = "Guild Credit Agency"
|
||||
var/department_id = "REPLACE_ME"
|
||||
|
||||
@@ -71,6 +71,8 @@
|
||||
|
||||
var/display_order = JOB_DISPLAY_ORDER_DEFAULT
|
||||
|
||||
var/bounty_types = CIV_JOB_BASIC
|
||||
|
||||
//If a job complies with dresscodes, loadout items will not be equipped instead of the job's outfit, instead placing the items into the player's backpack.
|
||||
var/dresscodecompliant = TRUE
|
||||
// How much threat this job is worth in dynamic. Is subtracted if the player's not an antag, added if they are.
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
ACCESS_ENGINE_EQUIP, ACCESS_EMERGENCY_STORAGE, ACCESS_CONSTRUCTION, ACCESS_MINERAL_STOREROOM)
|
||||
paycheck = PAYCHECK_MEDIUM
|
||||
paycheck_department = ACCOUNT_ENG
|
||||
bounty_types = CIV_JOB_ENG
|
||||
|
||||
starting_modifiers = list(/datum/skill_modifier/job/level/wiring, /datum/skill_modifier/job/affinity/wiring)
|
||||
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
minimal_access = list(ACCESS_BAR, ACCESS_MINERAL_STOREROOM)
|
||||
paycheck = PAYCHECK_EASY
|
||||
paycheck_department = ACCOUNT_SRV
|
||||
bounty_types = CIV_JOB_DRINK
|
||||
display_order = JOB_DISPLAY_ORDER_BARTENDER
|
||||
threat = 0.5
|
||||
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
minimal_access = list(ACCESS_HYDROPONICS, ACCESS_MORGUE, ACCESS_MINERAL_STOREROOM)
|
||||
paycheck = PAYCHECK_EASY
|
||||
paycheck_department = ACCOUNT_SRV
|
||||
bounty_types = CIV_JOB_GROW
|
||||
display_order = JOB_DISPLAY_ORDER_BOTANIST
|
||||
threat = 1.5 // lol powergame
|
||||
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
minimal_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_CHEMISTRY, ACCESS_MINERAL_STOREROOM)
|
||||
paycheck = PAYCHECK_MEDIUM
|
||||
paycheck_department = ACCOUNT_MED
|
||||
bounty_types = CIV_JOB_CHEM
|
||||
|
||||
display_order = JOB_DISPLAY_ORDER_CHEMIST
|
||||
threat = 1.5
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
ACCESS_CE, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_TCOMSAT, ACCESS_MINERAL_STOREROOM)
|
||||
paycheck = PAYCHECK_COMMAND
|
||||
paycheck_department = ACCOUNT_ENG
|
||||
bounty_types = CIV_JOB_ENG
|
||||
|
||||
starting_modifiers = list(/datum/skill_modifier/job/level/wiring/expert, /datum/skill_modifier/job/affinity/wiring)
|
||||
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
ACCESS_KEYCARD_AUTH, ACCESS_SEC_DOORS, ACCESS_MAINT_TUNNELS)
|
||||
paycheck = PAYCHECK_COMMAND
|
||||
paycheck_department = ACCOUNT_MED
|
||||
bounty_types = CIV_JOB_MED
|
||||
|
||||
display_order = JOB_DISPLAY_ORDER_CHIEF_MEDICAL_OFFICER
|
||||
blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/brainproblems, /datum/quirk/insanity)
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
minimal_access = list(ACCESS_KITCHEN, ACCESS_MORGUE, ACCESS_MINERAL_STOREROOM)
|
||||
paycheck = PAYCHECK_EASY
|
||||
paycheck_department = ACCOUNT_SRV
|
||||
bounty_types = CIV_JOB_CHEF
|
||||
|
||||
display_order = JOB_DISPLAY_ORDER_COOK
|
||||
threat = 0.2
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
minimal_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_GENETICS, ACCESS_CLONING, ACCESS_RESEARCH, ACCESS_MINERAL_STOREROOM)
|
||||
paycheck = PAYCHECK_MEDIUM
|
||||
paycheck_department = ACCOUNT_MED
|
||||
bounty_types = CIV_JOB_SCI
|
||||
|
||||
display_order = JOB_DISPLAY_ORDER_GENETICIST
|
||||
threat = 1.5
|
||||
|
||||
@@ -32,6 +32,8 @@
|
||||
ACCESS_HEADS, ACCESS_HOS, ACCESS_RC_ANNOUNCE, ACCESS_KEYCARD_AUTH, ACCESS_GATEWAY, ACCESS_MAINT_TUNNELS, ACCESS_MINERAL_STOREROOM)
|
||||
paycheck = PAYCHECK_COMMAND
|
||||
paycheck_department = ACCOUNT_SEC
|
||||
bounty_types = CIV_JOB_SEC
|
||||
|
||||
|
||||
display_order = JOB_DISPLAY_ORDER_HEAD_OF_SECURITY
|
||||
blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/brainproblems, /datum/quirk/nonviolent, /datum/quirk/paraplegic, /datum/quirk/blindness, /datum/quirk/monophobia, /datum/quirk/insanity)
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
minimal_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_SURGERY, ACCESS_CLONING, ACCESS_MINERAL_STOREROOM)
|
||||
paycheck = PAYCHECK_MEDIUM
|
||||
paycheck_department = ACCOUNT_MED
|
||||
bounty_types = CIV_JOB_MED
|
||||
|
||||
display_order = JOB_DISPLAY_ORDER_MEDICAL_DOCTOR
|
||||
threat = 0.5
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
minimal_access = list(ACCESS_MEDICAL, ACCESS_MORGUE, ACCESS_CLONING, ACCESS_MINERAL_STOREROOM, ACCESS_MAINT_TUNNELS)
|
||||
paycheck = PAYCHECK_MEDIUM
|
||||
paycheck_department = ACCOUNT_MED
|
||||
bounty_types = CIV_JOB_MED
|
||||
|
||||
display_order = JOB_DISPLAY_ORDER_PARAMEDIC
|
||||
|
||||
|
||||
@@ -32,6 +32,7 @@
|
||||
ACCESS_TECH_STORAGE, ACCESS_MINISAT, ACCESS_MAINT_TUNNELS, ACCESS_NETWORK)
|
||||
paycheck = PAYCHECK_COMMAND
|
||||
paycheck_department = ACCOUNT_SCI
|
||||
bounty_types = CIV_JOB_SCI
|
||||
|
||||
display_order = JOB_DISPLAY_ORDER_RESEARCH_DIRECTOR
|
||||
starting_modifiers = list(/datum/skill_modifier/job/level/wiring)
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
minimal_access = list(ACCESS_ROBOTICS, ACCESS_TECH_STORAGE, ACCESS_MORGUE, ACCESS_RESEARCH, ACCESS_MINERAL_STOREROOM)
|
||||
paycheck = PAYCHECK_MEDIUM
|
||||
paycheck_department = ACCOUNT_SCI
|
||||
bounty_types = CIV_JOB_ROBO
|
||||
|
||||
starting_modifiers = list(/datum/skill_modifier/job/level/wiring, /datum/skill_modifier/job/affinity/wiring)
|
||||
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
minimal_access = list(ACCESS_TOX, ACCESS_TOX_STORAGE, ACCESS_RESEARCH, ACCESS_XENOBIOLOGY, ACCESS_MINERAL_STOREROOM)
|
||||
paycheck = PAYCHECK_MEDIUM
|
||||
paycheck_department = ACCOUNT_SCI
|
||||
bounty_types = CIV_JOB_SCI
|
||||
starting_modifiers = list(/datum/skill_modifier/job/level/wiring/basic)
|
||||
display_order = JOB_DISPLAY_ORDER_SCIENTIST
|
||||
threat = 1.2
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
minimal_access = list(ACCESS_SECURITY, ACCESS_SEC_DOORS, ACCESS_BRIG, ACCESS_COURT, ACCESS_WEAPONS, ACCESS_ENTER_GENPOP, ACCESS_LEAVE_GENPOP, ACCESS_MINERAL_STOREROOM) // See /datum/job/officer/get_access()
|
||||
paycheck = PAYCHECK_HARD
|
||||
paycheck_department = ACCOUNT_SEC
|
||||
bounty_types = CIV_JOB_SEC
|
||||
|
||||
mind_traits = list(TRAIT_LAW_ENFORCEMENT_METABOLISM)
|
||||
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
minimal_access = list(ACCESS_MINING, ACCESS_MINING_STATION, ACCESS_MAILSORTING, ACCESS_MINERAL_STOREROOM)
|
||||
paycheck = PAYCHECK_EASY ///Not necessarily easy itself, but it can be trivial to make lot of cash on this job.
|
||||
paycheck_department = ACCOUNT_CAR
|
||||
bounty_types = CIV_JOB_MINE
|
||||
|
||||
display_order = JOB_DISPLAY_ORDER_SHAFT_MINER
|
||||
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
ACCESS_EXTERNAL_AIRLOCKS, ACCESS_CONSTRUCTION, ACCESS_TCOMSAT, ACCESS_MINERAL_STOREROOM)
|
||||
paycheck = PAYCHECK_MEDIUM
|
||||
paycheck_department = ACCOUNT_ENG
|
||||
bounty_types = CIV_JOB_ENG
|
||||
|
||||
starting_modifiers = list(/datum/skill_modifier/job/level/wiring, /datum/skill_modifier/job/affinity/wiring)
|
||||
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
minimal_access = list(ACCESS_MEDICAL, ACCESS_VIROLOGY, ACCESS_MINERAL_STOREROOM)
|
||||
paycheck = PAYCHECK_MEDIUM
|
||||
paycheck_department = ACCOUNT_MED
|
||||
bounty_types = CIV_JOB_VIRO
|
||||
|
||||
display_order = JOB_DISPLAY_ORDER_VIROLOGIST
|
||||
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
|
||||
paycheck = PAYCHECK_HARD
|
||||
paycheck_department = ACCOUNT_SEC
|
||||
bounty_types = CIV_JOB_SEC
|
||||
|
||||
mind_traits = list(TRAIT_LAW_ENFORCEMENT_METABOLISM)
|
||||
|
||||
|
||||
@@ -1,146 +0,0 @@
|
||||
/**********************Mint**************************/
|
||||
|
||||
|
||||
/obj/machinery/mineral/mint
|
||||
name = "coin press"
|
||||
icon = 'icons/obj/economy.dmi'
|
||||
icon_state = "coinpress0"
|
||||
density = TRUE
|
||||
input_dir = EAST
|
||||
ui_x = 300
|
||||
ui_y = 250
|
||||
needs_item_input = TRUE
|
||||
var/obj/item/storage/bag/money/bag_to_use
|
||||
var/produced_coins = 0 // how many coins the machine has made in it's last cycle
|
||||
var/processing = FALSE
|
||||
var/chosen = /datum/material/iron //which material will be used to make coins
|
||||
|
||||
|
||||
/obj/machinery/mineral/mint/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/material_container, list(
|
||||
/datum/material/iron,
|
||||
/datum/material/plasma,
|
||||
/datum/material/silver,
|
||||
/datum/material/gold,
|
||||
/datum/material/uranium,
|
||||
/datum/material/titanium,
|
||||
/datum/material/diamond,
|
||||
/datum/material/bananium,
|
||||
/datum/material/adamantine,
|
||||
/datum/material/mythril,
|
||||
/datum/material/plastic,
|
||||
/datum/material/runite
|
||||
), MINERAL_MATERIAL_AMOUNT * 75, FALSE, /obj/item/stack)
|
||||
chosen = SSmaterials.GetMaterialRef(chosen)
|
||||
|
||||
|
||||
/obj/machinery/mineral/mint/pickup_item(datum/source, atom/movable/target, atom/oldLoc)
|
||||
if(QDELETED(target))
|
||||
return
|
||||
if(!istype(target, /obj/item/stack))
|
||||
return
|
||||
|
||||
var/datum/component/material_container/materials = GetComponent(/datum/component/material_container)
|
||||
var/obj/item/stack/S = target
|
||||
|
||||
if(materials.insert_item(S))
|
||||
qdel(S)
|
||||
|
||||
/obj/machinery/mineral/mint/process()
|
||||
if(processing)
|
||||
var/datum/component/material_container/materials = GetComponent(/datum/component/material_container)
|
||||
var/datum/material/M = chosen
|
||||
|
||||
if(!M)
|
||||
processing = FALSE
|
||||
icon_state = "coinpress0"
|
||||
return
|
||||
|
||||
icon_state = "coinpress1"
|
||||
var/coin_mat = MINERAL_MATERIAL_AMOUNT
|
||||
|
||||
for(var/sheets in 1 to 2)
|
||||
if(materials.use_amount_mat(coin_mat, chosen))
|
||||
for(var/coin_to_make in 1 to 5)
|
||||
create_coins()
|
||||
else
|
||||
var/found_new = FALSE
|
||||
for(var/datum/material/inserted_material in materials.materials)
|
||||
var/amount = materials.get_material_amount(inserted_material)
|
||||
|
||||
if(amount)
|
||||
chosen = inserted_material
|
||||
found_new = TRUE
|
||||
|
||||
if(!found_new)
|
||||
processing = FALSE
|
||||
else
|
||||
STOP_PROCESSING(SSmachines, src)
|
||||
icon_state = "coinpress0"
|
||||
|
||||
/obj/machinery/mineral/mint/ui_interact(mob/user, datum/tgui/ui)
|
||||
ui = SStgui.try_update_ui(user, src, ui)
|
||||
if(!ui)
|
||||
ui = new(user, src, "Mint", name)
|
||||
ui.open()
|
||||
|
||||
/obj/machinery/mineral/mint/ui_data()
|
||||
var/list/data = list()
|
||||
data["inserted_materials"] = list()
|
||||
data["chosen_material"] = null
|
||||
|
||||
var/datum/component/material_container/materials = GetComponent(/datum/component/material_container)
|
||||
for(var/datum/material/inserted_material in materials.materials)
|
||||
var/amount = materials.get_material_amount(inserted_material)
|
||||
if(!amount)
|
||||
continue
|
||||
data["inserted_materials"] += list(list(
|
||||
"material" = inserted_material.name,
|
||||
"amount" = amount,
|
||||
))
|
||||
if(chosen == inserted_material)
|
||||
data["chosen_material"] = inserted_material.name
|
||||
|
||||
data["produced_coins"] = produced_coins
|
||||
data["processing"] = processing
|
||||
|
||||
return data;
|
||||
|
||||
/obj/machinery/mineral/mint/ui_act(action, params, datum/tgui/ui)
|
||||
. = ..()
|
||||
if(.)
|
||||
return
|
||||
if(action == "startpress")
|
||||
if (!processing)
|
||||
produced_coins = 0
|
||||
processing = TRUE
|
||||
START_PROCESSING(SSmachines, src)
|
||||
return TRUE
|
||||
if (action == "stoppress")
|
||||
processing = FALSE
|
||||
STOP_PROCESSING(SSmachines, src)
|
||||
return TRUE
|
||||
if (action == "changematerial")
|
||||
var/datum/component/material_container/materials = GetComponent(/datum/component/material_container)
|
||||
for(var/datum/material/mat in materials.materials)
|
||||
if (params["material_name"] == mat.name)
|
||||
chosen = mat
|
||||
return TRUE
|
||||
|
||||
/obj/machinery/mineral/mint/proc/create_coins()
|
||||
set waitfor = FALSE
|
||||
var/turf/T = get_step(src,output_dir)
|
||||
var/temp_list = list()
|
||||
temp_list[chosen] = 400
|
||||
if(T)
|
||||
var/obj/item/O = new /obj/item/coin(src)
|
||||
O.set_custom_materials(temp_list)
|
||||
if(QDELETED(bag_to_use) || (bag_to_use.loc != T) || !SEND_SIGNAL(bag_to_use, COMSIG_TRY_STORAGE_INSERT, O, null, TRUE)) //important to send the signal so we don't overfill the bag.
|
||||
bag_to_use = new(src) //make a new bag if we can't find or use the old one.
|
||||
unload_mineral(bag_to_use) //just forcemove memes.
|
||||
O.forceMove(bag_to_use) //don't bother sending the signal, the new bag is empty and all that.
|
||||
|
||||
SSblackbox.record_feedback("amount", "coins_minted", 1)
|
||||
produced_coins++
|
||||
CHECK_TICK
|
||||
@@ -41,3 +41,10 @@
|
||||
build_path = /obj/item/circuitboard/computer/mining_shuttle
|
||||
category = list("Computer Boards")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_CARGO
|
||||
|
||||
/datum/design/board/bountypad_control
|
||||
name = "Computer Design (Civilian Bounty Pad Control)"
|
||||
desc = "Allows for the construction of circuit boards used to build a new civilian bounty pad console."
|
||||
id = "bounty_pad_control"
|
||||
build_path = /obj/item/circuitboard/computer/bountypad
|
||||
category = list("Computer Boards")
|
||||
|
||||
@@ -40,3 +40,10 @@
|
||||
build_path = /obj/item/circuitboard/machine/ore_redemption
|
||||
category = list ("Misc. Machinery")
|
||||
departmental_flags = DEPARTMENTAL_FLAG_CARGO | DEPARTMENTAL_FLAG_SCIENCE | DEPARTMENTAL_FLAG_ENGINEERING
|
||||
|
||||
/datum/design/board/bountypad
|
||||
name = "Machine Design (Civilian Bounty Pad)"
|
||||
desc = "The circuit board for a Civilian Bounty Pad."
|
||||
id = "bounty_pad"
|
||||
build_path = /obj/item/circuitboard/machine/bountypad
|
||||
category = list ("Misc. Machinery")
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
display_name = "Advanced Data Theory"
|
||||
description = "Better insight into programming and data."
|
||||
prereq_ids = list("datatheory")
|
||||
design_ids = list("icprinter", "icupgadv", "icupgclo")
|
||||
design_ids = list("icprinter", "icupgadv", "icupgclo","bounty_pad","bounty_pad_control")
|
||||
research_costs = list(TECHWEB_POINT_TYPE_GENERIC = 3000)
|
||||
|
||||
/////////////////////////plasma tech/////////////////////////
|
||||
|
||||
BIN
sound/machines/wewewew.ogg
Normal file
BIN
sound/machines/wewewew.ogg
Normal file
Binary file not shown.
@@ -898,6 +898,7 @@
|
||||
#include "code\game\machinery\bloodbankgen.dm"
|
||||
#include "code\game\machinery\buttons.dm"
|
||||
#include "code\game\machinery\cell_charger.dm"
|
||||
#include "code\game\machinery\civilian_bountys.dm"
|
||||
#include "code\game\machinery\cloning.dm"
|
||||
#include "code\game\machinery\colormate.dm"
|
||||
#include "code\game\machinery\constructable_frame.dm"
|
||||
@@ -2514,7 +2515,6 @@
|
||||
#include "code\modules\mining\machine_vending.dm"
|
||||
#include "code\modules\mining\mine_items.dm"
|
||||
#include "code\modules\mining\minebot.dm"
|
||||
#include "code\modules\mining\mint.dm"
|
||||
#include "code\modules\mining\money_bag.dm"
|
||||
#include "code\modules\mining\ores_coins.dm"
|
||||
#include "code\modules\mining\point_bank.dm"
|
||||
|
||||
@@ -1,48 +0,0 @@
|
||||
/**
|
||||
* THIS FILE WILL SOON BE DEPRICATED!
|
||||
*/
|
||||
import { useBackend } from '../backend';
|
||||
import { Button, LabeledList, Section } from '../components';
|
||||
import { Window } from '../layouts';
|
||||
|
||||
export const Mint = (props, context) => {
|
||||
const { act, data } = useBackend(context);
|
||||
const inserted_materials = data.inserted_materials || [];
|
||||
return (
|
||||
<Window>
|
||||
<Window.Content>
|
||||
<Section
|
||||
title="Materials"
|
||||
buttons={
|
||||
<Button
|
||||
icon={data.processing ? 'times' : 'power-off'}
|
||||
content={data.processing ? 'Stop' : 'Start'}
|
||||
selected={data.processing}
|
||||
onClick={() => act(data.processing
|
||||
? 'stoppress'
|
||||
: 'startpress')} />
|
||||
}>
|
||||
<LabeledList>
|
||||
{inserted_materials.map(material => (
|
||||
<LabeledList.Item
|
||||
key={material.material}
|
||||
label={material.material}
|
||||
buttons={(
|
||||
<Button.Checkbox
|
||||
checked={data.chosen_material === material.material}
|
||||
onClick={() => act('changematerial', {
|
||||
material_name: material.material,
|
||||
})} />
|
||||
)}>
|
||||
{material.amount} cm³
|
||||
</LabeledList.Item>
|
||||
))}
|
||||
</LabeledList>
|
||||
</Section>
|
||||
<Section>
|
||||
Pressed {data.produced_coins} coins this cycle.
|
||||
</Section>
|
||||
</Window.Content>
|
||||
</Window>
|
||||
);
|
||||
};
|
||||
Reference in New Issue
Block a user