mirror of
https://github.com/yogstation13/Yogstation.git
synced 2025-02-26 09:04:50 +00:00
Rewrite supply packs/cargo orders
This commit is contained in:
@@ -120,8 +120,10 @@
|
||||
//some arbitrary defines to be used by self-pruning global lists. (see master_controller)
|
||||
#define PROCESS_KILL 26 //Used to trigger removal from a processing list
|
||||
|
||||
// Cargo-related stuff.
|
||||
#define MANIFEST_ERROR_CHANCE 5
|
||||
#define MANIFEST_ERROR_NAME 1
|
||||
#define MANIFEST_ERROR_COUNT 2
|
||||
#define MANIFEST_ERROR_CONTENTS 2
|
||||
#define MANIFEST_ERROR_ITEM 4
|
||||
|
||||
#define TRANSITIONEDGE 7 //Distance from edge to move to another z-level
|
||||
|
||||
@@ -22,7 +22,7 @@ var/datum/subsystem/shuttle/SSshuttle
|
||||
var/ordernum = 1 //order number given to next order
|
||||
var/points = 50 //number of trade-points we have
|
||||
var/points_per_decisecond = 0.005 //points gained every decisecond
|
||||
var/points_per_slip = 2 //points gained per slip returned
|
||||
var/points_per_manifest = 2 //points gained per manifest returned
|
||||
var/points_per_crate = 5 //points gained per crate returned
|
||||
var/points_per_intel = 250 //points gained per intel returned
|
||||
var/points_per_plasma = 5 //points gained per plasma returned
|
||||
@@ -31,9 +31,12 @@ var/datum/subsystem/shuttle/SSshuttle
|
||||
var/list/discoveredPlants = list() //Typepaths for unusual plants we've already sent CentComm, associated with their potencies
|
||||
var/list/techLevels = list()
|
||||
var/list/researchDesigns = list()
|
||||
|
||||
var/list/supply_packs = list()
|
||||
var/list/shoppinglist = list()
|
||||
var/list/requestlist = list()
|
||||
var/list/supply_packs = list()
|
||||
var/list/orderhistory = list()
|
||||
|
||||
var/datum/round_event/shuttle_loan/shuttle_loan
|
||||
var/sold_atoms = ""
|
||||
|
||||
@@ -50,12 +53,14 @@ var/datum/subsystem/shuttle/SSshuttle
|
||||
if(!supply)
|
||||
WARNING("No /obj/docking_port/mobile/supply placed on the map!")
|
||||
|
||||
ordernum = rand(1,9000)
|
||||
ordernum = rand(1, 9000)
|
||||
|
||||
for(var/typepath in subtypesof(/datum/supply_packs))
|
||||
var/datum/supply_packs/P = new typepath()
|
||||
if(P.name == "HEADER") continue // To filter out group headers
|
||||
for(var/pack in subtypesof(/datum/supply_pack))
|
||||
var/datum/supply_pack/P = new pack()
|
||||
if(!P.contains)
|
||||
continue
|
||||
supply_packs["[P.type]"] = P
|
||||
|
||||
initial_move()
|
||||
..()
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -64,7 +64,7 @@ var/global/max_secret_rooms = 6
|
||||
if("organharvest")
|
||||
walltypes = list(/turf/simulated/wall/r_wall=2,/turf/simulated/wall=2,/turf/simulated/mineral/random/high_chance=1)
|
||||
floortypes = list(/turf/simulated/floor/plasteel,/turf/simulated/floor/engine)
|
||||
treasureitems = list(/mob/living/simple_animal/bot/medbot/mysterious=1, /obj/item/weapon/circular_saw=1, /obj/structure/closet/crate/critter/cat=2)
|
||||
treasureitems = list(/mob/living/simple_animal/bot/medbot/mysterious=1, /obj/item/weapon/circular_saw=1, /obj/structure/closet/crate/critter=2)
|
||||
fluffitems = list(/obj/effect/decal/cleanable/blood=5,/obj/item/organ/internal/appendix=2,/obj/structure/closet/crate/freezer=2,
|
||||
/obj/structure/table/optable=1,/obj/item/weapon/scalpel=1,/obj/item/weapon/storage/firstaid/regular=3,
|
||||
/obj/item/weapon/tank/internals/anesthetic=1, /obj/item/weapon/surgical_drapes=2, /obj/item/device/mass_spectrometer/adv=1,/obj/item/clothing/glasses/hud/health=1)
|
||||
|
||||
@@ -501,13 +501,13 @@ Code:
|
||||
menu += "<BR>Current approved orders: <BR><ol>"
|
||||
for(var/S in SSshuttle.shoppinglist)
|
||||
var/datum/supply_order/SO = S
|
||||
menu += "<li>#[SO.ordernum] - [SO.object.name] approved by [SO.orderedby] [SO.comment ? "([SO.comment])":""]</li>"
|
||||
menu += "<li>#[SO.id] - [SO.pack.name] approved by [SO.orderer] [SO.reason ? "([SO.reason])":""]</li>"
|
||||
menu += "</ol>"
|
||||
|
||||
menu += "Current requests: <BR><ol>"
|
||||
for(var/S in SSshuttle.requestlist)
|
||||
var/datum/supply_order/SO = S
|
||||
menu += "<li>#[SO.ordernum] - [SO.object.name] requested by [SO.orderedby]</li>"
|
||||
menu += "<li>#[SO.id] - [SO.pack.name] requested by [SO.orderer]</li>"
|
||||
menu += "</ol><font size=\"-3\">Upgrade NOW to Space Parts & Space Vendors PLUS for full remote order control and inventory management."
|
||||
|
||||
if (49) //janitorial locator
|
||||
|
||||
@@ -127,10 +127,7 @@
|
||||
mobs_stored++
|
||||
if(mobs_stored >= mob_storage_capacity)
|
||||
return 0
|
||||
<<<<<<< ede93b63a61fbdfe3be0fe9569aa29b152e767bc
|
||||
L.reset_perspective(src)
|
||||
=======
|
||||
>>>>>>> Fix up crates
|
||||
L.stop_pulling()
|
||||
else if(!istype(AM, /obj/item) && !istype(AM, /obj/effect/dummy/chameleon))
|
||||
return 0
|
||||
@@ -346,18 +343,13 @@
|
||||
else
|
||||
togglelock(user)
|
||||
|
||||
/obj/structure/closet/proc/togglelock(mob/user)
|
||||
/obj/structure/closet/proc/togglelock(mob/living/user)
|
||||
if(secure && !broken)
|
||||
if(allowed(user))
|
||||
locked = !locked
|
||||
add_fingerprint(user)
|
||||
<<<<<<< ede93b63a61fbdfe3be0fe9569aa29b152e767bc
|
||||
for(var/mob/O in viewers(user, 3))
|
||||
O.show_message("<span class='notice'>[user] has [locked ? null : "un"]locked the locker.</span>", 1)
|
||||
=======
|
||||
visible_message("<span class='notice'>[user] [locked ? null : "un"]locks [src].</span>",
|
||||
user.visible_message("<span class='notice'>[user] [locked ? null : "un"]locks [src].</span>",
|
||||
"<span class='notice'>You [locked ? null : "un"]locks [src].</span>")
|
||||
>>>>>>> Fix up crates
|
||||
update_icon()
|
||||
else
|
||||
user << "<span class='notice'>Access Denied</span>"
|
||||
@@ -374,11 +366,10 @@
|
||||
locked = 0
|
||||
update_icon()
|
||||
|
||||
<<<<<<< ede93b63a61fbdfe3be0fe9569aa29b152e767bc
|
||||
/obj/structure/closet/get_remote_view_fullscreens(mob/user)
|
||||
if(!(user.sight & (SEEOBJS|SEEMOBS)))
|
||||
user.overlay_fullscreen("remote_view", /obj/screen/fullscreen/impaired, 1)
|
||||
=======
|
||||
|
||||
/obj/structure/closet/emp_act(severity)
|
||||
for(var/obj/O in src)
|
||||
O.emp_act(severity)
|
||||
@@ -393,4 +384,3 @@
|
||||
req_access = list()
|
||||
req_access += pick(get_all_accesses())
|
||||
..()
|
||||
>>>>>>> Fix up crates
|
||||
|
||||
@@ -19,27 +19,3 @@
|
||||
user << "<span class='notice'>It won't budge!</span>"
|
||||
else
|
||||
..()
|
||||
|
||||
/obj/structure/closet/crate/critter/corgi/New()
|
||||
..()
|
||||
if(prob(50))
|
||||
new /mob/living/simple_animal/pet/dog/corgi/Lisa(src)
|
||||
else
|
||||
new /mob/living/simple_animal/pet/dog/corgi(src)
|
||||
|
||||
/obj/structure/closet/crate/critter/cat/New()
|
||||
..()
|
||||
if(prob(50))
|
||||
new /mob/living/simple_animal/pet/cat/Proc(src)
|
||||
else
|
||||
new /mob/living/simple_animal/pet/cat(src)
|
||||
|
||||
/obj/structure/closet/crate/critter/chick/New()
|
||||
..()
|
||||
for(var/i in 1 to rand(1, 3))
|
||||
new /mob/living/simple_animal/chick(src)
|
||||
|
||||
/obj/structure/closet/crate/critter/butterfly/New()
|
||||
..()
|
||||
for(var/i in 1 to 50)
|
||||
new /mob/living/simple_animal/butterfly(src)
|
||||
@@ -18,9 +18,10 @@
|
||||
var/obj/item/weapon/circuitboard/cargo/board = circuit
|
||||
contraband = board.contraband
|
||||
|
||||
/obj/machinery/computer/cargo/emag_act(mob/user)
|
||||
/obj/machinery/computer/cargo/emag_act(mob/living/user)
|
||||
if(!emagged)
|
||||
user << "<span class='notice'>Special supplies unlocked.</span>"
|
||||
user.visible_message("<span class='warning'>[user] swipes a suspicious card through [src]!",
|
||||
"<span class='notice'>You emag [src], unlocking special supplies.</span>")
|
||||
emagged = TRUE
|
||||
|
||||
/obj/machinery/computer/cargo/ui_interact(mob/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, \
|
||||
@@ -41,40 +42,38 @@
|
||||
data["loan_dispatched"] = SSshuttle.shuttle_loan && SSshuttle.shuttle_loan.dispatched
|
||||
data["message"] = SSshuttle.centcom_message || "Remember to stamp and send back the supply manifests."
|
||||
|
||||
var/list/supplies = list()
|
||||
supplies.len = all_supply_groups.len
|
||||
for(var/group in all_supply_groups)
|
||||
supplies[group] = list(
|
||||
"name" = get_supply_group_name(group),
|
||||
data["supplies"] = list()
|
||||
for(var/pack in SSshuttle.supply_packs)
|
||||
var/datum/supply_pack/P = SSshuttle.supply_packs[pack]
|
||||
if(!data["supplies"][P.group])
|
||||
data["supplies"][P.group] = list(
|
||||
"name" = P.group,
|
||||
"packs" = list()
|
||||
)
|
||||
for(var/pack in SSshuttle.supply_packs)
|
||||
var/datum/supply_packs/P = SSshuttle.supply_packs[pack]
|
||||
if((P.hidden && !emagged) || (P.contraband && !contraband))
|
||||
continue
|
||||
supplies[P.group]["packs"] += list(list(
|
||||
data["supplies"][P.group]["packs"] += list(list(
|
||||
"name" = P.name,
|
||||
"cost" = P.cost,
|
||||
"id" = pack
|
||||
))
|
||||
data["supplies"] = supplies
|
||||
|
||||
data["cart"] = list()
|
||||
for(var/datum/supply_order/SO in SSshuttle.shoppinglist)
|
||||
data["cart"] += list(list(
|
||||
"object" = SO.object.name,
|
||||
"cost" = SO.object.cost,
|
||||
"id" = SO.ordernum
|
||||
"object" = SO.pack.name,
|
||||
"cost" = SO.pack.cost,
|
||||
"id" = SO.id
|
||||
))
|
||||
|
||||
data["requests"] = list()
|
||||
for(var/datum/supply_order/SO in SSshuttle.requestlist)
|
||||
data["requests"] += list(list(
|
||||
"object" = SO.object.name,
|
||||
"cost" = SO.object.cost,
|
||||
"orderedby" = SO.orderedby,
|
||||
"comment" = SO.comment,
|
||||
"id" = SO.ordernum
|
||||
"object" = SO.pack.name,
|
||||
"cost" = SO.pack.cost,
|
||||
"orderer" = SO.orderer,
|
||||
"reason" = SO.reason,
|
||||
"id" = SO.id
|
||||
))
|
||||
|
||||
return data
|
||||
@@ -127,7 +126,7 @@
|
||||
return
|
||||
|
||||
var/turf/T = get_turf(src)
|
||||
var/datum/supply_order/SO = SSshuttle.generateSupplyOrder(id, name, rank, reason)
|
||||
var/datum/supply_order/SO = new(id, name, rank, reason)
|
||||
SO.generateRequisition(T)
|
||||
if(requestonly)
|
||||
SSshuttle.requestlist += SO
|
||||
@@ -137,7 +136,7 @@
|
||||
if("remove")
|
||||
var/id = text2num(params["id"])
|
||||
for(var/datum/supply_order/SO in SSshuttle.shoppinglist)
|
||||
if(SO.ordernum == id)
|
||||
if(SO.id == id)
|
||||
SSshuttle.shoppinglist -= SO
|
||||
. = TRUE
|
||||
break
|
||||
@@ -147,7 +146,7 @@
|
||||
if("approve")
|
||||
var/id = text2num(params["id"])
|
||||
for(var/datum/supply_order/SO in SSshuttle.requestlist)
|
||||
if(SO.ordernum == id)
|
||||
if(SO.id == id)
|
||||
SSshuttle.requestlist -= SO
|
||||
SSshuttle.shoppinglist += SO
|
||||
. = TRUE
|
||||
@@ -155,7 +154,7 @@
|
||||
if("deny")
|
||||
var/id = text2num(params["id"])
|
||||
for(var/datum/supply_order/SO in SSshuttle.requestlist)
|
||||
if(SO.ordernum == id)
|
||||
if(SO.id == id)
|
||||
SSshuttle.requestlist -= SO
|
||||
. = TRUE
|
||||
break
|
||||
|
||||
@@ -1,115 +1,89 @@
|
||||
/obj/item/weapon/paper/manifest
|
||||
name = "supply manifest"
|
||||
var/erroneous = 0
|
||||
var/points = 0
|
||||
var/ordernumber = 0
|
||||
var/order_cost = 0
|
||||
var/order_id = 0
|
||||
var/errors = 0
|
||||
|
||||
/obj/item/weapon/paper/manifest/New(atom/A, id, cost)
|
||||
..()
|
||||
order_id = id
|
||||
order_cost = cost
|
||||
|
||||
if(prob(MANIFEST_ERROR_CHANCE))
|
||||
errors |= MANIFEST_ERROR_NAME
|
||||
if(prob(MANIFEST_ERROR_CHANCE))
|
||||
errors |= MANIFEST_ERROR_CONTENTS
|
||||
if(prob(MANIFEST_ERROR_CHANCE))
|
||||
errors |= MANIFEST_ERROR_ITEM
|
||||
|
||||
/datum/supply_order
|
||||
var/ordernum
|
||||
var/datum/supply_packs/object = null
|
||||
var/orderedby = null
|
||||
var/orderedbyRank
|
||||
var/comment = null
|
||||
var/id
|
||||
var/orderer
|
||||
var/orderer_rank
|
||||
var/reason
|
||||
var/datum/supply_pack/pack
|
||||
|
||||
/datum/supply_order/proc/generateRequisition(atom/_loc)
|
||||
if(!object)
|
||||
return
|
||||
/datum/supply_order/New(pack, orderer, orderer_rank, reason)
|
||||
id = SSshuttle.ordernum++
|
||||
src.pack = SSshuttle.supply_packs[pack]
|
||||
src.orderer = orderer
|
||||
src.orderer_rank = orderer_rank
|
||||
src.reason = reason
|
||||
|
||||
var/obj/item/weapon/paper/reqform = new /obj/item/weapon/paper(_loc)
|
||||
reqform.name = "requisition form - [object.name]"
|
||||
reqform.info += "<h3>[station_name] Supply Requisition Form</h3><hr>"
|
||||
reqform.info += "INDEX: #[ordernum]<br>"
|
||||
reqform.info += "REQUESTED BY: [orderedby]<br>"
|
||||
reqform.info += "RANK: [orderedbyRank]<br>"
|
||||
reqform.info += "REASON: [comment]<br>"
|
||||
reqform.info += "SUPPLY CRATE TYPE: [object.name]<br>"
|
||||
reqform.info += "ACCESS RESTRICTION: [get_access_desc(object.access)]<br>"
|
||||
reqform.info += "CONTENTS:<br>"
|
||||
reqform.info += object.manifest
|
||||
reqform.info += "<hr>"
|
||||
reqform.info += "STAMP BELOW TO APPROVE THIS REQUISITION:<br>"
|
||||
/datum/supply_order/proc/generateRequisition(turf/T)
|
||||
var/obj/item/weapon/paper/P = new(T)
|
||||
|
||||
reqform.update_icon() //Fix for appearing blank when printed.
|
||||
P.name = "requisition form - #[id] ([pack.name])"
|
||||
P.info += "<h2>[station_name()] Supply Requisition</h2>"
|
||||
P.info += "<hr/>"
|
||||
P.info += "Order #[id]<br/>"
|
||||
P.info += "Item: [pack.name]<br/>"
|
||||
P.info += "Access Restrictions: [get_access_desc(pack.access)]<br/>"
|
||||
P.info += "Requested by: [orderer]<br/>"
|
||||
P.info += "Rank: [orderer_rank]<br/>"
|
||||
P.info += "Comment: [reason]<br/>"
|
||||
|
||||
return reqform
|
||||
P.update_icon()
|
||||
return P
|
||||
|
||||
/datum/subsystem/shuttle/proc/generateSupplyOrder(packId, _orderedby, _orderedbyRank, _comment)
|
||||
if(!packId)
|
||||
return
|
||||
var/datum/supply_packs/P = supply_packs[packId]
|
||||
if(!P)
|
||||
return
|
||||
/datum/supply_order/proc/generateManifest(obj/structure/closet/crate/C)
|
||||
var/obj/item/weapon/paper/manifest/P = new(C, id, pack.cost)
|
||||
|
||||
var/datum/supply_order/O = new()
|
||||
O.ordernum = ordernum++
|
||||
O.object = P
|
||||
O.orderedby = _orderedby
|
||||
O.orderedbyRank = _orderedbyRank
|
||||
O.comment = _comment
|
||||
var/station_name = (P.errors & MANIFEST_ERROR_NAME) ? new_station_name() : station_name()
|
||||
|
||||
return O
|
||||
|
||||
/datum/supply_order/proc/createObject(atom/_loc, errors=0)
|
||||
if(!object)
|
||||
return
|
||||
|
||||
//create the crate
|
||||
var/atom/Crate = new object.containertype(_loc)
|
||||
Crate.name = "[object.containername] [comment ? "([comment])":"" ]"
|
||||
if(object.access)
|
||||
Crate:req_access = list(text2num(object.access))
|
||||
|
||||
//create the manifest slip
|
||||
var/obj/item/weapon/paper/manifest/slip = new /obj/item/weapon/paper/manifest()
|
||||
slip.erroneous = errors
|
||||
slip.points = object.cost
|
||||
slip.ordernumber = ordernum
|
||||
|
||||
var/stationName = (errors & MANIFEST_ERROR_NAME) ? new_station_name() : station_name()
|
||||
var/packagesAmt = SSshuttle.shoppinglist.len + ((errors & MANIFEST_ERROR_COUNT) ? rand(1,2) : 0)
|
||||
|
||||
slip.info = "<h3>[command_name()] Shipping Manifest</h3><hr><br>"
|
||||
slip.info +="Order #[ordernum]<br>"
|
||||
slip.info +="Destination: [stationName]<br>"
|
||||
slip.info +="[packagesAmt] PACKAGES IN THIS SHIPMENT<br>"
|
||||
slip.info +="CONTENTS:<br><ul>"
|
||||
|
||||
//we now create the actual contents
|
||||
var/list/contains
|
||||
if(istype(object, /datum/supply_packs/misc/randomised))
|
||||
var/datum/supply_packs/misc/randomised/SO = object
|
||||
contains = list()
|
||||
if(object.contains.len)
|
||||
for(var/j=1, j<=SO.num_contained, j++)
|
||||
contains += pick(object.contains)
|
||||
P.name = "shipping manifest - #[id] ([pack.name])"
|
||||
P.info += "<h2>[command_name()] Shipping Manifest</h2>"
|
||||
P.info += "<hr/>"
|
||||
P.info += "Order #[id]<br/>"
|
||||
P.info += "Destination: [station_name]<br/>"
|
||||
P.info += "Item: [pack.name]<br/>"
|
||||
P.info += "Contents: <br/>"
|
||||
P.info += "<ul>"
|
||||
for(var/atom/movable/AM in C.contents - P)
|
||||
if((P.errors & MANIFEST_ERROR_CONTENTS))
|
||||
if(prob(50))
|
||||
P.info += "<li>[AM.name]</li>"
|
||||
else
|
||||
contains = object.contains
|
||||
|
||||
for(var/typepath in contains)
|
||||
if(!typepath)
|
||||
continue
|
||||
var/atom/A = new typepath(Crate)
|
||||
if(object.amount && A.vars.Find("amount") && A:amount)
|
||||
A:amount = object.amount
|
||||
slip.info += "<li>[A.name]</li>" //add the item to the manifest (even if it was misplaced)
|
||||
P.info += "<li>[AM.name]</li>"
|
||||
P.info += "</ul>"
|
||||
P.info += "<h4>Stamp below to confirm receipt of goods:</h4>"
|
||||
|
||||
if((errors & MANIFEST_ERROR_ITEM))
|
||||
//secure and large crates cannot lose items
|
||||
if(findtext("[object.containertype]", "/secure/") || findtext("[object.containertype]","/large/"))
|
||||
errors &= ~MANIFEST_ERROR_ITEM
|
||||
P.update_icon()
|
||||
P.loc = C
|
||||
C.manifest = P
|
||||
C.update_icon()
|
||||
|
||||
return P
|
||||
|
||||
/datum/supply_order/proc/generate(turf/T)
|
||||
var/obj/structure/closet/crate/C = pack.generate(T)
|
||||
var/obj/item/weapon/paper/manifest/M = generateManifest(C)
|
||||
|
||||
if(M.errors & MANIFEST_ERROR_ITEM)
|
||||
if(istype(C, /obj/structure/closet/crate/secure) || istype(C, /obj/structure/closet/crate/large))
|
||||
M.errors &= ~MANIFEST_ERROR_ITEM
|
||||
else
|
||||
var/lostAmt = max(round(Crate.contents.len/10), 1)
|
||||
//lose some of the items
|
||||
while(--lostAmt >= 0)
|
||||
qdel(pick(Crate.contents))
|
||||
|
||||
//manifest finalisation
|
||||
slip.info += "</ul><br>"
|
||||
slip.info += "CHECK CONTENTS AND STAMP BELOW THE LINE TO CONFIRM RECEIPT OF GOODS<hr>" // And now this is actually meaningful.
|
||||
slip.loc = Crate
|
||||
if(istype(Crate, /obj/structure/closet/crate))
|
||||
var/obj/structure/closet/crate/CR = Crate
|
||||
CR.manifest = slip
|
||||
CR.update_icon()
|
||||
|
||||
return Crate
|
||||
var/lost = max(round(C.contents.len / 10), 1)
|
||||
while(--lost >= 0)
|
||||
qdel(pick(C.contents))
|
||||
return C
|
||||
|
||||
1308
code/modules/cargo/packs.dm
Normal file
1308
code/modules/cargo/packs.dm
Normal file
File diff suppressed because it is too large
Load Diff
@@ -12,12 +12,12 @@
|
||||
earliest_start = 4000
|
||||
|
||||
/datum/round_event/shuttle_loan
|
||||
announceWhen = 1
|
||||
endWhen = 500
|
||||
var/dispatch_type = 4
|
||||
var/dispatched = 0
|
||||
var/dispatch_type = 0
|
||||
var/bonus_points = 100
|
||||
var/thanks_msg = "The cargo shuttle should return in five minutes. Have some supply points for your trouble."
|
||||
var/dispatched = 0
|
||||
announceWhen = 1
|
||||
|
||||
/datum/round_event/shuttle_loan/start()
|
||||
dispatch_type = pick(HIJACK_SYNDIE, RUSKY_PARTY, SPIDER_GIFT, DEPARTMENT_RESUPPLY, ANTIDOTE_NEEDED)
|
||||
@@ -73,8 +73,6 @@
|
||||
else
|
||||
endWhen = activeFor + 1
|
||||
|
||||
//whomever coded this didn't even bother to follow the supply ordering code as an example.
|
||||
//So I had to waste time rewriting it. Thanks for that >:[
|
||||
/datum/round_event/shuttle_loan/end()
|
||||
if(SSshuttle.shuttle_loan && SSshuttle.shuttle_loan.dispatched)
|
||||
//make sure the shuttle was dispatched in time
|
||||
@@ -91,7 +89,9 @@
|
||||
var/list/shuttle_spawns = list()
|
||||
switch(dispatch_type)
|
||||
if(HIJACK_SYNDIE)
|
||||
add_crates(list(/datum/supply_packs/emergency/specialops), empty_shuttle_turfs)
|
||||
var/datum/supply_pack/pack = SSshuttle.supply_packs[/datum/supply_pack/emergency/specialops]
|
||||
pack.generate(pick_n_take(empty_shuttle_turfs))
|
||||
|
||||
shuttle_spawns.Add(/mob/living/simple_animal/hostile/syndicate)
|
||||
shuttle_spawns.Add(/mob/living/simple_animal/hostile/syndicate)
|
||||
if(prob(75))
|
||||
@@ -100,7 +100,9 @@
|
||||
shuttle_spawns.Add(/mob/living/simple_animal/hostile/syndicate)
|
||||
|
||||
if(RUSKY_PARTY)
|
||||
add_crates(list(/datum/supply_packs/organic/party), empty_shuttle_turfs)
|
||||
var/datum/supply_pack/pack = SSshuttle.supply_packs[/datum/supply_pack/organic/party]
|
||||
pack.generate(pick_n_take(empty_shuttle_turfs))
|
||||
|
||||
shuttle_spawns.Add(/mob/living/simple_animal/hostile/russian)
|
||||
shuttle_spawns.Add(/mob/living/simple_animal/hostile/russian/ranged) //drops a mateba
|
||||
shuttle_spawns.Add(/mob/living/simple_animal/hostile/bear)
|
||||
@@ -110,7 +112,9 @@
|
||||
shuttle_spawns.Add(/mob/living/simple_animal/hostile/bear)
|
||||
|
||||
if(SPIDER_GIFT)
|
||||
add_crates(list(/datum/supply_packs/emergency/specialops), empty_shuttle_turfs)
|
||||
var/datum/supply_pack/pack = SSshuttle.supply_packs[/datum/supply_pack/emergency/specialops]
|
||||
pack.generate(pick_n_take(empty_shuttle_turfs))
|
||||
|
||||
shuttle_spawns.Add(/mob/living/simple_animal/hostile/poison/giant_spider)
|
||||
shuttle_spawns.Add(/mob/living/simple_animal/hostile/poison/giant_spider)
|
||||
shuttle_spawns.Add(/mob/living/simple_animal/hostile/poison/giant_spider/nurse)
|
||||
@@ -135,7 +139,6 @@
|
||||
T = pick(empty_shuttle_turfs)
|
||||
new /obj/effect/spider/stickyweb(T)
|
||||
|
||||
|
||||
if(ANTIDOTE_NEEDED)
|
||||
var/virus_type = pick(/datum/disease/beesease, /datum/disease/brainrot, /datum/disease/fluspanish)
|
||||
var/turf/T
|
||||
@@ -158,22 +161,23 @@
|
||||
|
||||
if(DEPARTMENT_RESUPPLY)
|
||||
var/list/crate_types = list(
|
||||
/datum/supply_packs/emergency/evac,
|
||||
/datum/supply_packs/security/supplies,
|
||||
/datum/supply_packs/organic/food,
|
||||
/datum/supply_packs/emergency/weedcontrol,
|
||||
/datum/supply_packs/engineering/tools,
|
||||
/datum/supply_packs/engineering/engiequipment,
|
||||
/datum/supply_packs/science/robotics,
|
||||
/datum/supply_packs/science/plasma,
|
||||
/datum/supply_packs/medical/supplies
|
||||
/datum/supply_pack/emergency/equipment,
|
||||
/datum/supply_pack/security/supplies,
|
||||
/datum/supply_pack/organic/food,
|
||||
/datum/supply_pack/emergency/weedcontrol,
|
||||
/datum/supply_pack/engineering/tools,
|
||||
/datum/supply_pack/engineering/engiequipment,
|
||||
/datum/supply_pack/science/robotics,
|
||||
/datum/supply_pack/science/plasma,
|
||||
/datum/supply_pack/medical/supplies
|
||||
)
|
||||
add_crates(crate_types, empty_shuttle_turfs)
|
||||
for(var/crate in crate_types)
|
||||
var/datum/supply_pack/pack = SSshuttle.supply_packs[crate]
|
||||
pack.generate(pick_n_take(empty_shuttle_turfs))
|
||||
|
||||
for(var/i=0,i<5,i++)
|
||||
var/turf/T = pick(empty_shuttle_turfs)
|
||||
var/spawn_type = pick(/obj/effect/decal/cleanable/flour, /obj/effect/decal/cleanable/robot_debris, /obj/effect/decal/cleanable/oil)
|
||||
new spawn_type(T)
|
||||
for(var/i in 1 to 5)
|
||||
var/decal = pick(/obj/effect/decal/cleanable/flour, /obj/effect/decal/cleanable/robot_debris, /obj/effect/decal/cleanable/oil)
|
||||
new decal(pick_n_take(empty_shuttle_turfs))
|
||||
|
||||
var/false_positive = 0
|
||||
while(shuttle_spawns.len && empty_shuttle_turfs.len)
|
||||
@@ -185,18 +189,8 @@
|
||||
var/spawn_type = pick_n_take(shuttle_spawns)
|
||||
new spawn_type(T)
|
||||
|
||||
/datum/round_event/shuttle_loan/proc/add_crates(list/crate_types, list/turfs)
|
||||
for(var/crate_type in crate_types)
|
||||
var/turf/T = pick_n_take(turfs)
|
||||
var/datum/supply_packs/sp_obj = new crate_type()
|
||||
var/atom/Crate = new sp_obj.containertype(T)
|
||||
Crate.name = sp_obj.containername
|
||||
for(var/type_path in sp_obj.contains)
|
||||
var/atom/A = new type_path(Crate)
|
||||
if(sp_obj.amount && A.vars.Find("amount") && A:amount)
|
||||
A:amount = sp_obj.amount
|
||||
|
||||
#undef HIJACK_SYNDIE
|
||||
#undef RUSKY_PARTY
|
||||
#undef SPIDER_GIFT
|
||||
#undef DEPARTMENT_RESUPPLY
|
||||
#undef ANTIDOTE_NEEDED
|
||||
@@ -1,7 +0,0 @@
|
||||
/datum/supply_packs/engineering/engine/supermatter_shard
|
||||
name = "Supermatter Shard Crate"
|
||||
contains = list(/obj/machinery/power/supermatter_shard)
|
||||
cost = 100 //So cargo thinks twice before killing themselves with it
|
||||
containertype = /obj/structure/closet/crate/secure
|
||||
containername = "supermatter shard crate"
|
||||
access = access_ce
|
||||
@@ -59,31 +59,23 @@
|
||||
if(!SSshuttle.shoppinglist.len)
|
||||
return
|
||||
|
||||
var/list/emptyTurfs = list()
|
||||
var/list/empty_turfs = list()
|
||||
for(var/turf/simulated/floor/T in areaInstance)
|
||||
if(T.density || T.contents.len)
|
||||
continue
|
||||
emptyTurfs += T
|
||||
empty_turfs += T
|
||||
|
||||
for(var/datum/supply_order/SO in SSshuttle.shoppinglist)
|
||||
if(!SO.object)
|
||||
if(!empty_turfs.len)
|
||||
continue
|
||||
if(SO.object.cost > SSshuttle.points)
|
||||
if(SO.pack.cost > SSshuttle.points)
|
||||
continue
|
||||
|
||||
var/errors = 0
|
||||
if(prob(5))
|
||||
errors |= MANIFEST_ERROR_COUNT
|
||||
if(prob(5))
|
||||
errors |= MANIFEST_ERROR_NAME
|
||||
if(prob(5))
|
||||
errors |= MANIFEST_ERROR_ITEM
|
||||
|
||||
var/turf/T = pick_n_take(emptyTurfs)
|
||||
SO.createObject(T, errors)
|
||||
|
||||
SSshuttle.points -= SO.object.cost
|
||||
SSshuttle.points -= SO.pack.cost
|
||||
SSshuttle.shoppinglist -= SO
|
||||
SSshuttle.orderhistory += SO
|
||||
|
||||
SO.generate(pick_n_take(empty_turfs))
|
||||
|
||||
/obj/docking_port/mobile/supply/proc/sell()
|
||||
var/crates = 0
|
||||
@@ -104,48 +96,48 @@
|
||||
if(!AM.contents.len)
|
||||
SSshuttle.sold_atoms += " (empty)"
|
||||
else
|
||||
var/slip_found = FALSE
|
||||
var/manifest_found = FALSE
|
||||
for(var/atom/movable/thing in AM)
|
||||
SSshuttle.sold_atoms += " [thing.name]"
|
||||
if(!slip_found && istype(thing, /obj/item/weapon/paper/manifest))
|
||||
var/obj/item/weapon/paper/manifest/slip = thing
|
||||
if(slip.stamped && slip.stamped.len)
|
||||
slip_found = TRUE
|
||||
if(!manifest_found && istype(thing, /obj/item/weapon/paper/manifest))
|
||||
var/obj/item/weapon/paper/manifest/manifest = thing
|
||||
if(manifest.stamped && manifest.stamped.len)
|
||||
manifest_found = TRUE
|
||||
var/denied = FALSE
|
||||
for(var/stamp in slip.stamped)
|
||||
for(var/stamp in manifest.stamped)
|
||||
if(stamp == /obj/item/weapon/stamp/denied)
|
||||
denied = TRUE
|
||||
break
|
||||
if(slip.erroneous && denied) // Caught a mistake by Centcom.
|
||||
pointsEarned = slip.points - SSshuttle.points_per_crate
|
||||
if(manifest.errors && denied) // Caught a mistake by Centcom.
|
||||
pointsEarned = manifest.order_cost - SSshuttle.points_per_crate
|
||||
SSshuttle.points += pointsEarned // Give a full refund (minus the crate).
|
||||
msg += "[pointsEarned]: Station correctly denied package [slip.ordernumber]: "
|
||||
if(slip.erroneous & MANIFEST_ERROR_NAME)
|
||||
msg += "+[pointsEarned]: Station correctly denied package #[manifest.order_id]: "
|
||||
if(manifest.errors & MANIFEST_ERROR_NAME)
|
||||
msg += "Destination station incorrect. "
|
||||
else if(slip.erroneous & MANIFEST_ERROR_COUNT)
|
||||
msg += "Packages incorrectly counted. "
|
||||
else if(slip.erroneous & MANIFEST_ERROR_ITEM)
|
||||
else if(manifest.errors & MANIFEST_ERROR_CONTENTS)
|
||||
msg += "Contents incorrectly counted. "
|
||||
else if(manifest.errors & MANIFEST_ERROR_ITEM)
|
||||
msg += "Package incomplete. "
|
||||
msg += "Points refunded."
|
||||
else if(!slip.erroneous && !denied) // Approved a slip correctly.
|
||||
pointsEarned = SSshuttle.points_per_slip
|
||||
else if(!manifest.errors && !denied) // Approved a manifest correctly.
|
||||
pointsEarned = SSshuttle.points_per_manifest
|
||||
SSshuttle.points += pointsEarned
|
||||
msg += "+[pointsEarned]: Package [slip.ordernumber] accorded."
|
||||
else if(slip.erroneous) // You done goofed.
|
||||
pointsEarned = -SSshuttle.points_per_slip
|
||||
msg += "+[pointsEarned]: Package [manifest.order_id] accorded."
|
||||
else if(manifest.errors) // You done goofed.
|
||||
pointsEarned = -SSshuttle.points_per_manifest
|
||||
SSshuttle.points += pointsEarned
|
||||
msg += "[pointsEarned]: Station erroneously approved package [slip.ordernumber]: "
|
||||
if(slip.erroneous & MANIFEST_ERROR_NAME)
|
||||
msg += "[pointsEarned]: Station erroneously approved package #[manifest.order_id]: "
|
||||
if(manifest.errors & MANIFEST_ERROR_NAME)
|
||||
msg += "Destination station incorrect."
|
||||
else if(slip.erroneous & MANIFEST_ERROR_COUNT)
|
||||
msg += "Packages incorrectly counted."
|
||||
else if(slip.erroneous & MANIFEST_ERROR_ITEM)
|
||||
else if(manifest.errors & MANIFEST_ERROR_CONTENTS)
|
||||
msg += "Contents incorrectly counted. "
|
||||
else if(manifest.errors & MANIFEST_ERROR_ITEM)
|
||||
msg += "We found unshipped items on our dock."
|
||||
msg += " Be more vigilant."
|
||||
else
|
||||
pointsEarned = round(SSshuttle.points_per_crate - slip.points)
|
||||
pointsEarned = round(SSshuttle.points_per_crate - manifest.order_cost)
|
||||
SSshuttle.points += pointsEarned
|
||||
msg += "[pointsEarned]: Station erroneously denied package [slip.ordernumber]."
|
||||
msg += "[pointsEarned]: Station errorsly denied package #[manifest.order_id]."
|
||||
|
||||
// Sell plasma
|
||||
if(istype(thing, /obj/item/stack/sheet/mineral/plasma))
|
||||
|
||||
@@ -1409,7 +1409,6 @@
|
||||
#include "code\modules\power\singularity\particle_accelerator\particle_emitter.dm"
|
||||
#include "code\modules\power\singularity\particle_accelerator\particle_power.dm"
|
||||
#include "code\modules\power\supermatter\supermatter.dm"
|
||||
#include "code\modules\power\supermatter\supermatter_crate.dm"
|
||||
#include "code\modules\power\tesla\coil.dm"
|
||||
#include "code\modules\power\tesla\energy_ball.dm"
|
||||
#include "code\modules\power\tesla\generator.dm"
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -72,8 +72,8 @@
|
||||
<div class='content'>#{{id}}</div>
|
||||
<div class='content'>{{object}}</div>
|
||||
<div class='content'>{{cost}} Points</div>
|
||||
<div class='content'>By {{orderedby}}</div>
|
||||
<div class='content'>Comment: {{comment}}</div>
|
||||
<div class='content'>By {{orderer}}</div>
|
||||
<div class='content'>Comment: {{reason}}</div>
|
||||
{{#if !data.requestonly}}
|
||||
<div class='content'>
|
||||
<ui-button icon='check' action='approve' params='{"id": "{{id}}"}'/>
|
||||
|
||||
Reference in New Issue
Block a user