diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm index 5bcd4ec085..7a4cd3cae6 100644 --- a/_maps/map_files/BoxStation/BoxStation.dmm +++ b/_maps/map_files/BoxStation/BoxStation.dmm @@ -19258,7 +19258,7 @@ dir = 4 }, /turf/closed/wall, -/area/maintenance/port) +/area/quartermaster/warehouse) "aWD" = ( /obj/structure/reagent_dispensers/fueltank, /turf/open/floor/plasteel, @@ -19751,7 +19751,7 @@ }, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, /turf/closed/wall, -/area/maintenance/port) +/area/quartermaster/warehouse) "aXF" = ( /obj/effect/landmark/event_spawn, /turf/open/floor/plasteel/vault{ @@ -19785,7 +19785,7 @@ }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/closed/wall, -/area/maintenance/port) +/area/quartermaster/warehouse) "aXK" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -19938,7 +19938,7 @@ dir = 4 }, /turf/closed/wall, -/area/maintenance/port) +/area/quartermaster/warehouse) "aYd" = ( /obj/structure/chair/office/dark, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{ @@ -20428,7 +20428,7 @@ }, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/floorgrime, -/area/quartermaster/storage) +/area/quartermaster/warehouse) "aZq" = ( /obj/machinery/button/door{ id = "heads_meeting"; @@ -20526,7 +20526,7 @@ "aZF" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/closed/wall, -/area/maintenance/port) +/area/quartermaster/warehouse) "aZG" = ( /obj/machinery/light_switch{ pixel_y = 28 @@ -20552,7 +20552,7 @@ /obj/item/stack/sheet/cardboard, /obj/item/stack/rods/fifty, /turf/open/floor/plasteel/floorgrime, -/area/quartermaster/storage) +/area/quartermaster/warehouse) "aZJ" = ( /obj/structure/table/wood, /obj/item/device/camera/detective, @@ -20972,7 +20972,7 @@ /area/hallway/primary/starboard) "baS" = ( /turf/open/floor/plasteel/floorgrime, -/area/quartermaster/storage) +/area/quartermaster/warehouse) "baT" = ( /obj/structure/cable{ icon_state = "1-2" @@ -21011,7 +21011,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/structure/closet/crate, /turf/open/floor/plasteel/floorgrime, -/area/quartermaster/storage) +/area/quartermaster/warehouse) "baZ" = ( /obj/machinery/status_display{ layer = 4; @@ -21164,7 +21164,7 @@ /obj/structure/closet/crate, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/floorgrime, -/area/quartermaster/storage) +/area/quartermaster/warehouse) "bbu" = ( /obj/machinery/power/apc{ dir = 1; @@ -21315,7 +21315,7 @@ dir = 4 }, /turf/open/floor/plasteel/floorgrime, -/area/quartermaster/storage) +/area/quartermaster/warehouse) "bbQ" = ( /obj/structure/table/wood, /obj/item/reagent_containers/food/drinks/bottle/whiskey{ @@ -21333,7 +21333,7 @@ dir = 4 }, /turf/open/floor/plasteel/floorgrime, -/area/quartermaster/storage) +/area/quartermaster/warehouse) "bbT" = ( /obj/structure/table/wood, /obj/item/device/flashlight/lamp/green, @@ -21597,13 +21597,13 @@ dir = 8 }, /turf/open/floor/plasteel/floorgrime, -/area/quartermaster/storage) +/area/quartermaster/warehouse) "bcF" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden{ dir = 8 }, /turf/open/floor/plasteel/floorgrime, -/area/quartermaster/storage) +/area/quartermaster/warehouse) "bcG" = ( /obj/structure/table/wood, /obj/machinery/computer/security/wooden_tv, @@ -21625,7 +21625,7 @@ }, /obj/structure/closet/crate/freezer, /turf/open/floor/plasteel/floorgrime, -/area/quartermaster/storage) +/area/quartermaster/warehouse) "bcK" = ( /obj/structure/rack, /obj/effect/spawner/lootdrop/maintenance, @@ -21676,7 +21676,7 @@ dir = 4 }, /turf/open/floor/plasteel/floorgrime, -/area/quartermaster/storage) +/area/quartermaster/warehouse) "bcS" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 @@ -21686,13 +21686,13 @@ dir = 4 }, /turf/open/floor/plasteel/floorgrime, -/area/quartermaster/storage) +/area/quartermaster/warehouse) "bcT" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, /turf/closed/wall, -/area/quartermaster/storage) +/area/quartermaster/warehouse) "bcU" = ( /turf/open/floor/wood, /area/maintenance/bar) @@ -22063,7 +22063,7 @@ "bdS" = ( /obj/structure/closet/crate/internals, /turf/open/floor/plasteel/floorgrime, -/area/quartermaster/storage) +/area/quartermaster/warehouse) "bdT" = ( /obj/machinery/power/apc{ dir = 8; @@ -22082,7 +22082,7 @@ "bdU" = ( /obj/structure/closet/crate/medical, /turf/open/floor/plasteel/floorgrime, -/area/quartermaster/storage) +/area/quartermaster/warehouse) "bdV" = ( /obj/item/stack/sheet/metal, /turf/open/floor/plating/airless, @@ -22339,7 +22339,7 @@ }, /obj/structure/closet/crate, /turf/open/floor/plasteel/floorgrime, -/area/quartermaster/storage) +/area/quartermaster/warehouse) "bey" = ( /turf/open/floor/plasteel/white/corner{ dir = 8 @@ -22381,7 +22381,7 @@ }, /obj/structure/closet/crate, /turf/open/floor/plasteel/floorgrime, -/area/quartermaster/storage) +/area/quartermaster/warehouse) "beE" = ( /obj/machinery/light, /turf/open/floor/plasteel, @@ -22625,7 +22625,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/item/stack/sheet/cardboard, /turf/open/floor/plasteel/floorgrime, -/area/quartermaster/storage) +/area/quartermaster/warehouse) "bfh" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -22636,7 +22636,7 @@ "bfi" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/floorgrime, -/area/quartermaster/storage) +/area/quartermaster/warehouse) "bfj" = ( /obj/structure/disposalpipe/trunk, /obj/structure/disposaloutlet{ @@ -23087,7 +23087,7 @@ dir = 9 }, /turf/closed/wall, -/area/maintenance/port) +/area/quartermaster/warehouse) "bgz" = ( /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk, @@ -23096,7 +23096,7 @@ "bgA" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/floorgrime, -/area/quartermaster/storage) +/area/quartermaster/warehouse) "bgB" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -23694,7 +23694,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, -/area/quartermaster/storage) +/area/quartermaster/warehouse) "bhX" = ( /obj/structure/disposalpipe/sorting/wrap{ dir = 1 @@ -46740,7 +46740,7 @@ "ckQ" = ( /obj/structure/closet/cardboard, /turf/open/floor/plasteel/floorgrime, -/area/quartermaster/storage) +/area/quartermaster/warehouse) "ckS" = ( /obj/structure/closet/cardboard, /turf/open/floor/plating, @@ -52668,7 +52668,7 @@ /obj/effect/landmark/event_spawn, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/floorgrime, -/area/quartermaster/storage) +/area/quartermaster/warehouse) "cBj" = ( /obj/structure/table, /obj/item/folder/blue, @@ -60469,6 +60469,47 @@ }, /turf/closed/wall/r_wall, /area/engine/gravity_generator) +"QAz" = ( +/turf/closed/wall, +/area/quartermaster/warehouse) +"QAA" = ( +/turf/closed/wall, +/area/quartermaster/warehouse) +"QAB" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden, +/obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/power/apc{ + areastring = "/area/quartermaster/warehouse"; + dir = 4; + name = "Cargo Warehouse APC"; + pixel_x = 24 + }, +/turf/open/floor/plating, +/area/maintenance/port) +"QAC" = ( +/turf/closed/wall, +/area/quartermaster/warehouse) +"QAD" = ( +/turf/closed/wall, +/area/quartermaster/warehouse) +"QAE" = ( +/turf/closed/wall, +/area/quartermaster/warehouse) +"QAF" = ( +/turf/closed/wall, +/area/quartermaster/warehouse) +"QAG" = ( +/turf/closed/wall, +/area/quartermaster/warehouse) +"QAH" = ( +/turf/closed/wall, +/area/quartermaster/warehouse) (1,1,1) = {" aaa @@ -76561,7 +76602,7 @@ aaa aaa aaa aaa -Qxh +Qxg aaa aoV aaa @@ -76818,7 +76859,7 @@ aaa aaa aaa aaa -Qxi +Qxg aaa aoV aaa @@ -77075,7 +77116,7 @@ aaa aaa aaa aaa -Qxj +Qxg aaa aoV aaa @@ -77332,7 +77373,7 @@ aaa aaa aaa aaa -Qxk +Qxg aaa aoV aaa @@ -77589,7 +77630,7 @@ aaa aaa aaa aaa -Qxl +Qxg aaa aoV aaa @@ -79132,9 +79173,9 @@ aaf aaf aaf aag -Qxo +Qxn Qxq -Qxu +Qxn bVx caf aoV @@ -80372,7 +80413,7 @@ QvH QvO QvT Qwb -aKu +Qwd aLF aLF aOs @@ -80642,7 +80683,7 @@ aWu aYa aZD aZD -aZD +QAB aZD aZD bff @@ -80884,9 +80925,9 @@ aBT aDs aEN aGb -QvV +QvO +Qwd Qwd -aKu aLE aLE aOl @@ -80932,7 +80973,7 @@ aaa bCq bPV bCq -Qxs +Qxr bTw bCq bVD @@ -81161,7 +81202,7 @@ baS bdS bdU ckQ -aZE +QAG bjq bjr bjr @@ -81190,7 +81231,7 @@ bCq bPW Qxp bSp -bTv +Qxx bCq bVC bWx @@ -81675,7 +81716,7 @@ bcR bcE baS bex -bhY +aZF bgu bic bku @@ -81912,9 +81953,9 @@ aBW aDv aEP aGe -QvY -Qwf -aKu +QvX +Qwd +Qwd aLE aMS aOt @@ -81932,7 +81973,7 @@ bcS bbt bfi beD -aZE +QAH aZE biA bmg @@ -81962,19 +82003,19 @@ bPY cOw bCq Qxy -QxF -QxN -QxX -Qyi +Qxy +Qxy +Qxy +Qxy Qyt -QyE -QyO -cjn -cjn -cjn -cjn -cjn -cjn +Qxy +Qxy +Qxy +Qxy +Qxy +Qxy +Qxy +Qxy bUs bLv aaa @@ -82182,13 +82223,13 @@ aTH aPK aWz aWC -aZE -aZE -aZE +QAz +QAA +QAC bcT -aZE -aZE -aZE +QAD +QAE +QAF aZE bju biv @@ -82218,20 +82259,20 @@ bCq bPX bRg bRg -Qxz +Qxy QxG bVG QxY Qyj -Qyu +QxG QyF -QyP -bcU +Qxy +QxG Qzc bVG -bcU +QxG Qzy -cjn +Qxy bUs bLv aaa @@ -82428,7 +82469,7 @@ QvN QvS Qwa Qwh -aKu +Qwd aLE aMS aOi @@ -82475,20 +82516,20 @@ bLv bQa bHE bHE -QxA +Qxy QxH QxO QxZ Qyk Qyv -QyG +Qyk QyQ -QyW -Qzd +Qyk +Qyk Qzj -Qzs +Qzg Qzz -cjn +Qxy bUs bLv aaf @@ -82740,12 +82781,12 @@ Qyl Qyw QyH QyR -QyX +QyH Qze Qzk cCa -bcU -cjn +QxG +Qxy bUs bLv aaa @@ -82768,8 +82809,8 @@ QAe QAj bgN QAn -QAq -QAu +QAo +QAp bgN btG aaa @@ -82989,20 +83030,20 @@ bLv bHE bHE bSs -QxC +Qxy QxJ QxQ Qyb Qym -Qyx -bcU +QxQ +QxG QyS QyY cCa Qzl Qzt QzA -cjn +Qxy bUs bLv aaa @@ -83021,7 +83062,7 @@ QzN btF bsc QAb -QAf +QAe QAk bgN QAo @@ -83246,20 +83287,20 @@ bCq bHE bRh bLu -QxD +Qxy QxK QxR Qyc Qyn Qyy QyI -QyT -bcU +Qxy +QxG Qzf -Qzm -Qzu +Qzl +Qzt QzB -cjn +Qxy bUs bLv aaf @@ -83278,12 +83319,12 @@ QzO btG QzX bsc -QAg -QAl +QAe +QAj bgN QAp -QAr -QAw +QAo +QAn bgN btG aaa @@ -83503,20 +83544,20 @@ bCq bOK bCq bCq -QxE +Qxy QxL QxS Qyd Qyo Qyz -QyJ -cjn -bcU +Qxy +Qxy +QxG cCa Qzn Qzv cCa -cjn +Qxy bUs bLv aaa @@ -83530,9 +83571,9 @@ coz cpn QzG QzH -QzK +QzH QzP -QzT +QzH QzY QAc QAh @@ -83762,18 +83803,18 @@ bLv aaa bLv QxM -QxT -Qye -Qyp -QyA -QyK -bcU -bcU -bcU +QxS +Qxy +Qxy +Qxy +Qxy +QxG +QxG +QxG Qzo cCa QzC -cjn +Qxy bUs bLv aaa @@ -84018,19 +84059,19 @@ bHE bLv aaf bLv -bUt -QxU +QxM +QxS Qyf Qyq QyB QyL -bcU -QyZ +QxG +QyY Qzg Qzp -bcU -bcU -cjn +QxG +QxG +Qxy bUs bLv aaf @@ -84045,7 +84086,7 @@ cjJ cjJ aaa aaa -QzR +QzQ aaf aaa aaa @@ -84275,19 +84316,19 @@ bLv bCq aaa bLv -bUt -QxV +QxM +QxS Qyg Qyr QyC -QyM +Qxy QyU Qza Qzh Qzq Qzw QzD -cjn +Qxy bUs bCq aaa @@ -84302,7 +84343,7 @@ cpo cjJ aaa aaa -QzS +QzQ aaf Qoi aaa @@ -84454,8 +84495,8 @@ afy agh abc QtM -QtS -QtV +QtM +QtM aiV ajs akb @@ -84535,15 +84576,15 @@ bTB bUv QxW Qyh -Qys -QyD -QyN -QyV -Qzb -Qzi -Qzr -Qzx -QzE +Qyh +Qyh +Qyh +Qyh +Qyh +Qyh +Qyh +Qyh +Qyh car bUs bCq @@ -84710,9 +84751,9 @@ aeK afx agg abc -QtN +QtM QtT -QtW +QtM aiV ajr aka @@ -84967,9 +85008,9 @@ aeN afA afA afA -QtO -QtU -QtX +QtM +QtM +QtM aiV aju akd @@ -87802,7 +87843,7 @@ aja akl akP alx -amh +Quu ami aiX anw @@ -88365,10 +88406,10 @@ aaa Qoi aaa QwN -bsb -bsb -bsb -bsb +QwN +QwN +QwN +QwN aXf aJq byU @@ -88621,11 +88662,11 @@ aBb aBb QwJ aaa -bsb +QwN QwP QwW QwZ -bsb +QwN Qxd aJq bBi @@ -88808,7 +88849,7 @@ aaa aaa aaa aaf -Qqm +Qql aaf aaZ Qrk @@ -88870,7 +88911,7 @@ aZR aZR aZR bft -Qws +Qwq aBa QwC bmv @@ -88878,7 +88919,7 @@ QwF bnT bpg aaa -bsb +QwN QwQ buP bwm @@ -89065,12 +89106,12 @@ aaa aaa aaa aaf -Qqn +Qql aaf aaZ -Qrl +Qrk QrJ -Qsf +Qse aaZ acl cxA @@ -89083,7 +89124,7 @@ ahx ahS aiK Quc -Que +Qud akm akT aly @@ -89127,7 +89168,7 @@ bbm bdh bee bfv -Qwt +Qwq aBa big aEM @@ -89322,10 +89363,10 @@ aaa aaa aaa aaf -Qqo +Qql aaf aaZ -Qrm +Qrk QrK Qsg aaZ @@ -89344,18 +89385,18 @@ ajI akl akS alx -amh +Quu amp aiX anS aoy QuW QuZ -Qvb -Qvc -Qvd -Qve -Qvf +QuZ +QuZ +QuZ +QuZ +QuZ Qvh axB anz @@ -89384,7 +89425,7 @@ bcf bdg bed bfv -Qwu +Qwq aBa aBV bkZ @@ -89579,11 +89620,11 @@ aaa aaa aaa aaf -Qqp +Qql aaf aaZ -Qrn -QrL +Qrk +QrJ Qsh aaZ QsN @@ -89641,7 +89682,7 @@ bbm bdh bef bfv -Qwv +Qwq aBa QwD aEO @@ -89836,12 +89877,12 @@ aaa aaa aaa aaf -Qqq +Qql aaf aaZ Qro QrM -Qsi +Qsh aaZ QsO coS @@ -89898,7 +89939,7 @@ aZR aZR aZR bfw -Qww +Qwq aBa QwE bjy @@ -89906,7 +89947,7 @@ QwI bnW bpi aaa -bsb +QwN QwU buR bwo @@ -90093,7 +90134,7 @@ aaa aaa aaa aaf -Qqr +Qql aaf aaZ Qrp @@ -90119,7 +90160,7 @@ amn amV QuG anB -QuU +QuC aod aqf ahT @@ -90163,11 +90204,11 @@ aBc aBc QwL aaa -bsb +QwN QwV QwY Qxb -bsb +QwN Qxe aJq bBu @@ -90350,7 +90391,7 @@ aaa aaa aaa aaf -Qqs +Qql aaf aaZ Qrq @@ -90412,19 +90453,19 @@ bcg aZU beg aYB -Qwy -QwB +Qwq +QwA aaf aaf Qoi aaa Qoi aaa -bsb -bsb -bsb -bsb -bsb +QwN +QwN +QwN +QwN +QwN aJq aJq bBt @@ -90607,7 +90648,7 @@ aaa aaa aaa aaf -Qqt +Qql aaf aaZ Qrr @@ -90630,9 +90671,9 @@ akr akX alC Quz -amX -amX -amX +Quz +Quz +Quz aoB aod aqe @@ -90887,8 +90928,8 @@ ahY akX Qut amo -amX -amX +Quz +Quz QuO QuV QuX @@ -91123,7 +91164,7 @@ aaa aaa abp QqH -QqV +QqH Qrs abO abO @@ -91139,11 +91180,11 @@ ahA ahZ adR aiQ -Quj +Qud akt Qur anw -QuA +Qut QuC anB QuP @@ -91400,10 +91441,10 @@ ajK aks akY anA -QuB +Qut QuD amo -QuQ +QuP aoC aod aqe @@ -91639,10 +91680,10 @@ abp abO abO Qrt -QrQ -acq -acq -acq +Qrt +Qrt +Qrt +Qrt abO aew afe @@ -91659,7 +91700,7 @@ aiX akz alf QuE -QuI +QuE QuR aoF apo @@ -92154,9 +92195,9 @@ aco QqW Qru abR -abP -abP -abP +Qru +Qru +Qru abl abp abp @@ -110648,21 +110689,21 @@ aaa aaa aaa aaa -QoZ -Qpl -Qpy -QpL -QpY -Qqu -QqI -QqX -Qrv -QrR -Qsm -Qsz -QsR -Qte -Qtr +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -110905,21 +110946,21 @@ aaa aaa aaa aaa -Qpa -Qpm -Qpz -QpM -QpZ -Qqv -QqJ -QqY -Qrw -QrS -Qsn -QsA -QsS -Qtf -Qts +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -111162,21 +111203,21 @@ aaa aaa aaa aaa -Qpb -Qpn -QpA -QpN -Qqa -Qqw -QqK -QqZ -Qrx -QrT -Qso -QsB -QsT -Qtg -Qtt +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -111409,7 +111450,6 @@ aaa aaa aaa aaa -avT aaa aaa aaa @@ -111420,20 +111460,21 @@ aaa aaa aaa aaa -Qpo -QpB -QpO -Qqb -Qqx -QqL -Qra -Qry -QrU -Qsp -QsC -QsU -Qth -Qtu +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -111676,21 +111717,21 @@ aaa aaa aaa aaa -Qpc -Qpp -QpC -QpP -Qqc -Qqy -QqM -Qrb -Qrz -QrV -Qsq -QsD -QsV -Qti -Qtv +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -111933,21 +111974,21 @@ aaa aaa aaa aaa -Qpd -Qpq -QpD -QpQ -Qqd -Qqz -QqN -Qrc -QrA -QrW -Qsr -QsE -QsW -Qtj -Qtw +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -112190,21 +112231,21 @@ aaa aaa aaa aaa -Qpe -Qpr -QpE -QpR -Qqe -QqA -QqO -Qrd -QrB -QrX -Qss -QsF -QsX -Qtk -Qtx +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -112447,21 +112488,21 @@ aaa aaa aaa aaa -Qpf -Qps -QpF -QpS -Qqf -QqB -QqP -Qre -QrC -QrY -Qst -QsG -QsY -Qtl -Qty +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -112704,21 +112745,21 @@ aaa aaa aaa aaa -Qpg -Qpt -QpG -QpT -Qqg -QqC -QqQ -Qrf -QrD -QrZ -Qsu -QsH -QsZ -Qtm -Qtz +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -112961,21 +113002,21 @@ aaa aaa aaa aaa -Qph -Qpu -QpH -QpU -Qqh -QqD -QqR -Qrg -QrE -Qsa -Qsv -QsI -Qta -Qtn -QtA +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -113218,21 +113259,21 @@ aaa aaa aaa aaa -Qpi -Qpv -QpI -QpV -Qqi -QqE -QqS -Qrh -QrF -Qsb -Qsw -QsJ -Qtb -Qto -QtB +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -113475,21 +113516,21 @@ aaa aaa aaa aaa -Qpj -Qpw -QpJ -QpW -Qqj -QqF -QqT -Qri -QrG -Qsc -Qsx -QsK -Qtc -Qtp -QtC +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa @@ -113732,21 +113773,21 @@ aaa aaa aaa aaa -Qpk -Qpx -QpK -QpX -Qqk -QqG -QqU -Qrj -QrH -Qsd -Qsy -QsL -Qtd -Qtq -QtD +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa +aaa aaa aaa aaa diff --git a/_maps/map_files/PubbyStation/PubbyStation.dmm b/_maps/map_files/PubbyStation/PubbyStation.dmm index c4158d21b1..e9ea5f0797 100644 --- a/_maps/map_files/PubbyStation/PubbyStation.dmm +++ b/_maps/map_files/PubbyStation/PubbyStation.dmm @@ -14591,6 +14591,9 @@ dir = 6 }, /obj/effect/decal/cleanable/oil, +/obj/structure/cable{ + icon_state = "2-4" + }, /turf/open/floor/plating, /area/maintenance/department/cargo) "aKl" = ( @@ -14868,6 +14871,9 @@ req_access_txt = "31" }, /obj/structure/disposalpipe/segment, +/obj/structure/cable{ + icon_state = "1-2" + }, /turf/open/floor/plating, /area/maintenance/department/cargo) "aLi" = ( @@ -15320,27 +15326,27 @@ dir = 4 }, /turf/closed/wall, -/area/quartermaster/storage) +/area/quartermaster/warehouse) "aMp" = ( /obj/structure/disposalpipe/segment{ dir = 4 }, /turf/open/floor/plasteel/floorgrime, -/area/quartermaster/storage) +/area/quartermaster/warehouse) "aMq" = ( /obj/effect/spawner/lootdrop/maintenance, /obj/structure/disposalpipe/segment{ dir = 4 }, /turf/open/floor/plasteel/floorgrime, -/area/quartermaster/storage) +/area/quartermaster/warehouse) "aMr" = ( /obj/structure/closet/crate, /obj/structure/disposalpipe/segment{ dir = 4 }, /turf/open/floor/plasteel/floorgrime, -/area/quartermaster/storage) +/area/quartermaster/warehouse) "aMs" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -15349,7 +15355,7 @@ pixel_y = 32 }, /turf/open/floor/plasteel/floorgrime, -/area/quartermaster/storage) +/area/quartermaster/warehouse) "aMt" = ( /obj/structure/closet/cardboard, /obj/structure/disposalpipe/segment{ @@ -15363,20 +15369,27 @@ dir = 2 }, /turf/open/floor/plasteel/floorgrime, -/area/quartermaster/storage) +/area/quartermaster/warehouse) "aMu" = ( /obj/item/cigbutt/cigarbutt, /obj/structure/disposalpipe/segment{ dir = 4 }, /turf/open/floor/plasteel/floorgrime, -/area/quartermaster/storage) +/area/quartermaster/warehouse) "aMv" = ( /obj/structure/disposalpipe/segment{ dir = 9 }, +/obj/structure/cable, +/obj/machinery/power/apc{ + areastring = "/area/quartermaster/warehouse"; + dir = 4; + name = "Cargo Warehouse APC"; + pixel_x = 24 + }, /turf/open/floor/plasteel/floorgrime, -/area/quartermaster/storage) +/area/quartermaster/warehouse) "aMw" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -15953,20 +15966,20 @@ pixel_x = -32 }, /turf/open/floor/plasteel/floorgrime, -/area/quartermaster/storage) +/area/quartermaster/warehouse) "aNO" = ( /turf/open/floor/plasteel/floorgrime, -/area/quartermaster/storage) +/area/quartermaster/warehouse) "aNP" = ( /obj/structure/closet/crate, /turf/open/floor/plasteel/floorgrime, -/area/quartermaster/storage) +/area/quartermaster/warehouse) "aNQ" = ( /obj/structure/extinguisher_cabinet{ pixel_x = 27 }, /turf/open/floor/plasteel/floorgrime, -/area/quartermaster/storage) +/area/quartermaster/warehouse) "aNR" = ( /obj/structure/cable{ icon_state = "1-2" @@ -16499,33 +16512,33 @@ /obj/effect/spawner/lootdrop/maintenance, /obj/machinery/atmospherics/components/unary/vent_scrubber/on, /turf/open/floor/plasteel/floorgrime, -/area/quartermaster/storage) +/area/quartermaster/warehouse) "aOZ" = ( /obj/item/stack/sheet/cardboard, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 6 }, /turf/open/floor/plasteel/floorgrime, -/area/quartermaster/storage) +/area/quartermaster/warehouse) "aPa" = ( /obj/structure/closet/crate, /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, /turf/open/floor/plasteel/floorgrime, -/area/quartermaster/storage) +/area/quartermaster/warehouse) "aPb" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden{ dir = 4 }, /turf/open/floor/plasteel/floorgrime, -/area/quartermaster/storage) +/area/quartermaster/warehouse) "aPc" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on{ dir = 8 }, /turf/open/floor/plasteel/floorgrime, -/area/quartermaster/storage) +/area/quartermaster/warehouse) "aPd" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -16905,16 +16918,16 @@ }, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /turf/open/floor/plasteel/floorgrime, -/area/quartermaster/storage) +/area/quartermaster/warehouse) "aQd" = ( /obj/item/device/flashlight, /obj/machinery/atmospherics/pipe/simple/supply/hidden, /turf/open/floor/plasteel/floorgrime, -/area/quartermaster/storage) +/area/quartermaster/warehouse) "aQe" = ( /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plasteel/floorgrime, -/area/quartermaster/storage) +/area/quartermaster/warehouse) "aQf" = ( /obj/structure/closet/crate{ icon_state = "crateopen"; @@ -16922,11 +16935,11 @@ }, /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plasteel/floorgrime, -/area/quartermaster/storage) +/area/quartermaster/warehouse) "aQg" = ( /obj/structure/closet/crate/medical, /turf/open/floor/plasteel/floorgrime, -/area/quartermaster/storage) +/area/quartermaster/warehouse) "aQh" = ( /turf/closed/wall/mineral/titanium, /area/shuttle/supply) @@ -17447,7 +17460,7 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, -/area/quartermaster/storage) +/area/quartermaster/warehouse) "aRo" = ( /obj/machinery/door/poddoor/shutters{ id = "qm_warehouse"; @@ -17456,7 +17469,7 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, -/area/quartermaster/storage) +/area/quartermaster/warehouse) "aRp" = ( /obj/machinery/door/poddoor/shutters{ id = "qm_warehouse"; @@ -17464,11 +17477,11 @@ }, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, -/area/quartermaster/storage) +/area/quartermaster/warehouse) "aRq" = ( /obj/structure/closet/crate/internals, /turf/open/floor/plasteel/floorgrime, -/area/quartermaster/storage) +/area/quartermaster/warehouse) "aRr" = ( /turf/open/floor/mineral/titanium/blue, /area/shuttle/supply) @@ -48293,7 +48306,7 @@ "coL" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating/airless, -/area/quartermaster/storage) +/area/quartermaster/warehouse) "coN" = ( /turf/open/floor/plasteel/neutral/corner, /area/hallway/secondary/exit/departure_lounge) @@ -51386,6 +51399,76 @@ /obj/machinery/vending/kink, /turf/open/floor/plating, /area/maintenance/department/engine) +"cDa" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/department/cargo) +"cDb" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/structure/cable{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/department/cargo) +"cDc" = ( +/obj/structure/cable{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, +/obj/structure/cable{ + icon_state = "2-8" + }, +/turf/open/floor/plating, +/area/maintenance/department/cargo) +"cDd" = ( +/turf/closed/wall, +/area/quartermaster/warehouse) +"cDe" = ( +/turf/closed/wall, +/area/quartermaster/warehouse) +"cDf" = ( +/turf/closed/wall, +/area/quartermaster/warehouse) +"cDg" = ( +/turf/closed/wall, +/area/quartermaster/warehouse) +"cDh" = ( +/turf/closed/wall, +/area/quartermaster/warehouse) +"cDi" = ( +/turf/closed/wall, +/area/quartermaster/warehouse) +"cDj" = ( +/turf/closed/wall, +/area/quartermaster/warehouse) +"cDk" = ( +/turf/closed/wall, +/area/quartermaster/warehouse) +"cDl" = ( +/turf/closed/wall, +/area/quartermaster/warehouse) +"cDm" = ( +/turf/closed/wall, +/area/quartermaster/warehouse) +"cDn" = ( +/turf/closed/wall, +/area/quartermaster/warehouse) +"cDo" = ( +/turf/closed/wall, +/area/quartermaster/warehouse) +"cDp" = ( +/turf/closed/wall, +/area/quartermaster/warehouse) +"cDq" = ( +/turf/closed/wall, +/area/quartermaster/warehouse) (1,1,1) = {" aaa @@ -90809,12 +90892,12 @@ aEd aIj aJm aKg -aLg +cDd aMo -aLg -aLg -aLg -aLg +cDg +cDi +cDj +cDk aLg aTj aUu @@ -91842,8 +91925,8 @@ aMs aNO aPb aQe -aLg -aLg +cDl +cDm aTn aUx aVA @@ -92100,7 +92183,7 @@ aNP aPb aNO aNP -aLg +cDn aTo aSk aTm @@ -92357,7 +92440,7 @@ aNO aPc aQf aRq -aLg +cDo aTp aSk aTm @@ -92614,7 +92697,7 @@ aNQ aNO aQg aNP -aLg +cDp aTq aSk aVB @@ -92864,14 +92947,14 @@ aEd aEd aEd aEd -aKl -aLg -aLg -aLg +cDa +cDe +cDf +cDh coL coL coL -aLg +cDq aTr aUy aPd @@ -93121,7 +93204,7 @@ aGI aHr aEd aJp -aKm +cDb aLi aMw aEj @@ -93378,7 +93461,7 @@ aGJ aGJ aDl aEk -aEk +cDc aLj aMx aEj diff --git a/code/game/objects/items/circuitboards/computer_circuitboards.dm b/code/game/objects/items/circuitboards/computer_circuitboards.dm index 9558fecc80..afd0eeef95 100644 --- a/code/game/objects/items/circuitboards/computer_circuitboards.dm +++ b/code/game/objects/items/circuitboards/computer_circuitboards.dm @@ -188,21 +188,33 @@ build_path = /obj/machinery/computer/cargo var/contraband = FALSE -/obj/item/circuitboard/computer/cargo/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/device/multitool)) - if(!emagged) - contraband = !contraband - to_chat(user, "Receiver spectrum set to [contraband ? "Broad" : "Standard"].") - else - to_chat(user, "The spectrum chip is unresponsive.") - else if(istype(I, /obj/item/card/emag)) - if(!emagged) - contraband = TRUE - emagged = TRUE - to_chat(user, "You adjust [src]'s routing and receiver spectrum, unlocking special supplies and contraband.") +/obj/item/circuitboard/computer/cargo/multitool_act(mob/living/user) + if(!emagged) + contraband = !contraband + to_chat(user, "Receiver spectrum set to [contraband ? "Broad" : "Standard"].") else - return ..() + to_chat(user, "The spectrum chip is unresponsive.") +/obj/item/circuitboard/computer/cargo/emag_act(mob/living/user) + if(!emagged) + contraband = TRUE + emagged = TRUE + to_chat(user, "You adjust [src]'s routing and receiver spectrum, unlocking special supplies and contraband.") + +/obj/item/circuitboard/computer/cargo/express + name = "Express Supply Console (Computer Board)" + build_path = /obj/machinery/computer/cargo/express + +/obj/item/circuitboard/computer/cargo/express/multitool_act(mob/living/user) + if (!emagged) + to_chat(user, "Routing protocols are already set to: \"factory defaults\".") + else + to_chat(user, "You reset the routing protocols to: \"factory defaults\".") + emagged = FALSE + +/obj/item/circuitboard/computer/cargo/express/emag_act(mob/living/user) + to_chat(user, "You change the routing protocols, allowing the Drop Pod to land anywhere on the station.") + emagged = TRUE /obj/item/circuitboard/computer/cargo/request name = "Supply Request Console (Computer Board)" diff --git a/code/game/objects/items/devices/multitool.dm b/code/game/objects/items/devices/multitool.dm index a2b1ce2056..9445cd73a6 100644 --- a/code/game/objects/items/devices/multitool.dm +++ b/code/game/objects/items/devices/multitool.dm @@ -18,6 +18,7 @@ righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi' force = 5 w_class = WEIGHT_CLASS_SMALL + tool_behaviour = TOOL_MULTITOOL throwforce = 0 throw_range = 7 throw_speed = 3 diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index d46978f4b0..6e6a9f8233 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -132,7 +132,7 @@ if(opened || !can_open(user)) return playsound(loc, open_sound, 15, 1, -3) - opened = 1 + opened = TRUE if(!dense_when_open) density = FALSE climb_time *= 0.5 //it's faster to climb onto an open thing @@ -185,7 +185,7 @@ take_contents() playsound(loc, close_sound, 15, 1, -3) climb_time = initial(climb_time) - opened = 0 + opened = FALSE density = TRUE update_icon() return 1 @@ -208,6 +208,10 @@ /obj/structure/closet/attackby(obj/item/W, mob/user, params) if(user in src) return + if(!src.tool_interact(W,user)) + return ..() + +/obj/structure/closet/proc/tool_interact(obj/item/W, mob/user)//returns TRUE if attackBy call shouldnt be continued (because tool was used/closet was of wrong type), FALSE if otherwise if(opened) if(istype(W, cutting_tool)) if(istype(W, /obj/item/weldingtool)) @@ -217,29 +221,29 @@ playsound(loc, cutting_sound, 40, 1) if(do_after(user, 40*WT.toolspeed, 1, target = src)) if(!opened || !WT.isOn()) - return + return TRUE playsound(loc, cutting_sound, 50, 1) user.visible_message("[user] slices apart \the [src].", "You cut \the [src] apart with \the [WT].", "You hear welding.") deconstruct(TRUE) - return 0 + return TRUE else // for example cardboard box is cut with wirecutters user.visible_message("[user] cut apart \the [src].", \ "You cut \the [src] apart with \the [W].") deconstruct(TRUE) - return 0 + return TRUE if(user.transferItemToLoc(W, drop_location())) // so we put in unlit welder too - return 1 + return TRUE else if(istype(W, /obj/item/weldingtool) && can_weld_shut) var/obj/item/weldingtool/WT = W if(!WT.remove_fuel(0, user)) - return + return TRUE to_chat(user, "You begin [welded ? "unwelding":"welding"] \the [src]...") playsound(loc, 'sound/items/welder2.ogg', 40, 1) if(do_after(user, 40*WT.toolspeed, 1, target = src)) if(opened || !WT.isOn()) - return + return TRUE playsound(loc, WT.usesound, 50, 1) welded = !welded user.visible_message("[user] [welded ? "welds shut" : "unweldeds"] \the [src].", @@ -248,7 +252,7 @@ update_icon() else if(istype(W, /obj/item/wrench) && anchorable) if(isinspace() && !anchored) - return + return TRUE anchored = !anchored playsound(src.loc, W.usesound, 75, 1) user.visible_message("[user] [anchored ? "anchored" : "unanchored"] \the [src] [anchored ? "to" : "from"] the ground.", \ @@ -257,9 +261,9 @@ else if(user.a_intent != INTENT_HARM && !(W.flags_1 & NOBLUDGEON_1)) if(W.GetID() || !toggle(user)) togglelock(user) - return 1 + return TRUE else - return ..() + return FALSE /obj/structure/closet/MouseDrop_T(atom/movable/O, mob/living/user) if(!istype(O) || O.anchored || istype(O, /obj/screen)) diff --git a/code/game/objects/structures/crates_lockers/closets/secure/bsdroppod.dm b/code/game/objects/structures/crates_lockers/closets/secure/bsdroppod.dm new file mode 100644 index 0000000000..aa8dca50a5 --- /dev/null +++ b/code/game/objects/structures/crates_lockers/closets/secure/bsdroppod.dm @@ -0,0 +1,92 @@ +//The "BDPtarget" temp visual is created by the expressconsole, which in turn makes two things: a falling droppod animation, and the droppod itself. + + +//------------------------------------BLUESPACE DROP POD-------------------------------------// +/obj/structure/closet/bsdroppod + name = "Bluespace Drop Pod" + desc = "A Nanotrasen supply drop pod." + icon = 'icons/obj/2x2.dmi' + icon_state = "BDP" + pixel_x = -16//2x2 sprite + pixel_y = -5 + layer = TABLE_LAYER//so that the crate inside doesn't appear underneath + allow_objects = TRUE + allow_dense = TRUE + delivery_icon = null + can_weld_shut = FALSE + armor = list("melee" = 30, "bullet" = 50, "laser" = 50, "energy" = 100, "bomb" = 90, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 80) + anchored = TRUE + anchorable = FALSE + var/datum/supply_order/SupplyOrder + +/obj/structure/closet/bsdroppod/Initialize(mapload, datum/supply_order/so) + . = ..() + SupplyOrder = so//uses Supply Order passed from expressconsole into BDPtarget + addtimer(CALLBACK(src, .proc/open), 30)//open 3seconds after appearing + +/obj/structure/closet/bsdroppod/update_icon() + cut_overlays() + if (opened) + add_overlay("BDP_open") + else + add_overlay("BDP_door") + +/obj/structure/closet/bsdroppod/tool_interact(obj/item/W, mob/user) + return TRUE + +/obj/structure/closet/bsdroppod/toggle(mob/living/user) + return + +/obj/structure/closet/bsdroppod/open() + var/turf/T = get_turf(src) + opened = TRUE + SupplyOrder.generate(T)//not called during populateContents as supplyorder generation requires a turf + update_icon() + playsound(src, open_sound, 15, 1, -3) + addtimer(CALLBACK(src, .proc/sparks), 30)//3 seconds after opening, make some sparks and delete + +/obj/structure/closet/bsdroppod/proc/sparks()//sparks cant be called from addtimer + do_sparks(5, TRUE, src) + qdel(src)//no need for QDEL_IN if we already have a timer + +/obj/structure/closet/bsdroppod/Destroy()//make some sparks b4 deletion + QDEL_NULL(SupplyOrder) + return ..() + +//------------------------------------FALLING BLUESPACE DROP POD-------------------------------------// +/obj/effect/temp_visual/BDPfall + icon = 'icons/obj/2x2.dmi' + icon_state = "BDP_falling" + pixel_x = -16 + pixel_y = -5 + pixel_z = 200 + name = "Bluespace Drop Pod" + desc = "Get out of the way!" + layer = FLY_LAYER//that wasnt flying, that was falling with style! + randomdir = FALSE + +//------------------------------------TEMPORARY_VISUAL-------------------------------------// +/obj/effect/BDPtarget + icon = 'icons/mob/actions/actions_items.dmi' + icon_state = "sniper_zoom" + layer = PROJECTILE_HIT_THRESHHOLD_LAYER + light_range = 2 + var/obj/effect/temp_visual/fallingPod + +/obj/effect/BDPtarget/Initialize(mapload, datum/supply_order/SO) + . = ..() + addtimer(CALLBACK(src, .proc/beginLaunch, SO), 30)//wait 3 seconds + +/obj/effect/BDPtarget/proc/beginLaunch(datum/supply_order/SO) + fallingPod = new /obj/effect/temp_visual/BDPfall(drop_location()) + animate(fallingPod, pixel_z = 0, time = 3, easing = LINEAR_EASING)//make and animate a falling pod + addtimer(CALLBACK(src, .proc/endLaunch, SO), 3, TIMER_CLIENT_TIME)//fall 0.3seconds + +/obj/effect/BDPtarget/proc/endLaunch(datum/supply_order/SO) + new /obj/structure/closet/bsdroppod(drop_location(), SO)//pod is created + explosion(src,0,0,2, flame_range = 2) //explosion and camshake (shoutout to @cyberboss) + qdel(src) + +/obj/effect/BDPtarget/Destroy() + QDEL_NULL(fallingPod)//delete falling pod after animation's over + return ..() \ No newline at end of file diff --git a/code/modules/cargo/console.dm b/code/modules/cargo/console.dm index 296c876688..a41106a49d 100644 --- a/code/modules/cargo/console.dm +++ b/code/modules/cargo/console.dm @@ -69,7 +69,7 @@ "name" = P.group, "packs" = list() ) - if((P.hidden && !emagged) || (P.contraband && !contraband) || (P.special && !P.special_enabled)) + if((P.hidden && !emagged) || (P.contraband && !contraband) || (P.special && !P.special_enabled) || P.DropPodOnly) continue data["supplies"][P.group]["packs"] += list(list( "name" = P.name, @@ -140,7 +140,7 @@ var/datum/supply_pack/pack = SSshuttle.supply_packs[id] if(!istype(pack)) return - if((pack.hidden && !emagged) || (pack.contraband && !contraband)) + if((pack.hidden && !emagged) || (pack.contraband && !contraband) || pack.DropPodOnly) return var/name = "*None Provided*" diff --git a/code/modules/cargo/expressconsole.dm b/code/modules/cargo/expressconsole.dm new file mode 100644 index 0000000000..60be1e8349 --- /dev/null +++ b/code/modules/cargo/expressconsole.dm @@ -0,0 +1,125 @@ +/obj/machinery/computer/cargo/express + name = "express supply console" + desc = "This console allows the user to purchase a package for double the price,\ + with 1/40th of the delivery time: made possible by NanoTrasen's new \"Drop Pod Railgun\".\ + All sales are near instantaneous - please choose carefully" + icon_screen = "supply_express" + circuit = /obj/item/circuitboard/computer/cargo/express + blockade_warning = "Bluespace instability detected. Delivery impossible." + req_access = list(ACCESS_QM) + var/message + var/locked = TRUE + + +/obj/machinery/computer/cargo/express/attackby(obj/item/W, mob/living/user, params) + ..() + if((istype(W, /obj/item/card/id) || istype(W, /obj/item/device/pda)) && allowed(user)) + locked = !locked + to_chat(user, "You [locked ? "lock" : "unlock"] the interface.") + +/obj/machinery/computer/cargo/express/emag_act(mob/living/user) + if(emagged) + return + user.visible_message("[user] swipes a suspicious card through [src]!", + "You change the routing protocols, allowing the Drop Pod to land anywhere on the station.") + emagged = TRUE + // This also sets this on the circuit board + var/obj/item/circuitboard/computer/cargo/board = circuit + board.emagged = TRUE + +/obj/machinery/computer/cargo/express/ui_interact(mob/living/user, ui_key = "main", datum/tgui/ui = null, force_open = 0, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.default_state) // Remember to use the appropriate state. + ui = SStgui.try_update_ui(user, src, ui_key, ui, force_open) + if(!ui) + ui = new(user, src, ui_key, "cargo_express", name, 1000, 800, master_ui, state) + ui.open() + + +/obj/machinery/computer/cargo/express/ui_data(mob/user) + var/list/data = list() + data["locked"] = locked + data["siliconUser"] = user.has_unlimited_silicon_privilege + data["points"] = SSshuttle.points + data["supplies"] = list() + message = "For normally priced items, please use the standard Supply or Request Console. \ + Sales are near-instantaneous - please choose carefully." + if(SSshuttle.supplyBlocked) + message = blockade_warning + if(emagged) + message = "(&!#@ERROR: ROUTING_#PROTOCOL MALF(*CT#ON. $UG%ESTE@ ACT#0N: !^/PULS3-%E)ET CIR*)ITB%ARD." + + data["message"] = message + + if (emagged) + for(var/pack in SSshuttle.supply_packs) + var/datum/supply_pack/P = SSshuttle.supply_packs[pack] + if (P.name == "Toy Crate")//Can only order toys if emagged. You gotta spend 10K points to crash a droppod somewhere on the station + data["supplies"][P.group] = list( + "name" = P.group, + "packs" = list() + ) + data["supplies"][P.group]["packs"] += list(list( + "name" = P.name, + "cost" = P.cost * 2, //displays twice the normal cost + "id" = pack + )) + else + 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() + ) + if((P.hidden) || (P.contraband) || (P.special))//no fun allowed + continue + data["supplies"][P.group]["packs"] += list(list( + "name" = P.name, + "cost" = P.cost * 2, //displays twice the normal cost + "id" = pack + )) + + return data + +/obj/machinery/computer/cargo/express/ui_act(action, params, datum/tgui/ui) + switch(action) + if("add")//Generate Supply Order first + var/id = text2path(params["id"]) + var/datum/supply_pack/pack = SSshuttle.supply_packs[id] + if(!istype(pack)) + return + var/name = "*None Provided*" + var/rank = "*None Provided*" + var/ckey = usr.ckey + if(ishuman(usr)) + var/mob/living/carbon/human/H = usr + name = H.get_authentification_name() + rank = H.get_assignment() + else if(issilicon(usr)) + name = usr.real_name + rank = "Silicon" + var/reason = "" + + + var/datum/supply_order/SO = new(pack, name, rank, ckey, reason) + if(SO.pack.cost* 2 <= SSshuttle.points) //If you can afford it, then begin the delivery + SO.generateRequisition(get_turf(src)) + SSshuttle.points -= SO.pack.cost * 2//twice the normal cost + + var/list/empty_turfs = list() + var/area/landingzone + + if (!emagged) + landingzone = locate(/area/quartermaster/storage) in GLOB.sortedAreas + else + landingzone = locate(pick(GLOB.the_station_areas)) in GLOB.sortedAreas + + for(var/turf/open/floor/T in landingzone.contents) //get all the turfs in cargo bay + if(is_blocked_turf(T))//wont land on a blocked turf + continue + empty_turfs.Add(T) + + if (empty_turfs.len != 0 ) + var/LZ = empty_turfs[rand(empty_turfs.len-1)]//pick a random turf + new /obj/effect/BDPtarget(LZ, SO)//where the magic happens. this temp visual makes the actual droppod after a pause + . = TRUE + update_icon() \ No newline at end of file diff --git a/code/modules/cargo/packs.dm b/code/modules/cargo/packs.dm index de62ba465e..e575773233 100644 --- a/code/modules/cargo/packs.dm +++ b/code/modules/cargo/packs.dm @@ -1,1780 +1,1781 @@ -/datum/supply_pack - var/name = "Crate" - var/group = "" - var/hidden = FALSE - var/contraband = FALSE - var/cost = 700 // Minimum cost, or infinite points are possible. - var/access = FALSE - var/access_any = FALSE - var/list/contains = null - var/crate_name = "crate" - var/crate_type = /obj/structure/closet/crate - var/dangerous = FALSE // Should we message admins? - var/special = FALSE //Event/Station Goals/Admin enabled packs - var/special_enabled = FALSE - -/datum/supply_pack/proc/generate(turf/T) - var/obj/structure/closet/crate/C = new crate_type(T) - C.name = crate_name - if(access) - C.req_access = list(access) - if(access_any) - C.req_one_access = access_any - - fill(C) - - return C - -/datum/supply_pack/proc/fill(obj/structure/closet/crate/C) - for(var/item in contains) - new item(C) - - -////////////////////////////////////////////////////////////////////////////// -//////////////////////////// Emergency /////////////////////////////////////// -////////////////////////////////////////////////////////////////////////////// - -/datum/supply_pack/emergency - group = "Emergency" - -/datum/supply_pack/emergency/spacesuit - name = "Space Suit Crate" - cost = 3000 - access = ACCESS_EVA - contains = list(/obj/item/clothing/suit/space, - /obj/item/clothing/suit/space, - /obj/item/clothing/head/helmet/space, - /obj/item/clothing/head/helmet/space, - /obj/item/clothing/mask/breath, - /obj/item/clothing/mask/breath) - crate_name = "space suit crate" - crate_type = /obj/structure/closet/crate/secure - -/datum/supply_pack/emergency/vehicle - name = "Biker Gang Kit" //TUNNEL SNAKES OWN THIS TOWN - cost = 2000 - contraband = TRUE - contains = list(/obj/vehicle/ridden/atv, - /obj/item/key, - /obj/item/clothing/suit/jacket/leather/overcoat, - /obj/item/clothing/gloves/color/black, - /obj/item/clothing/head/soft, - /obj/item/clothing/mask/bandana/skull)//so you can properly #cargoniabikergang - crate_name = "Biker Kit" - crate_type = /obj/structure/closet/crate/large - -/datum/supply_pack/emergency/equipment - name = "Emergency Equipment" - cost = 3500 - contains = list(/mob/living/simple_animal/bot/floorbot, - /mob/living/simple_animal/bot/floorbot, - /mob/living/simple_animal/bot/medbot, - /mob/living/simple_animal/bot/medbot, - /obj/item/tank/internals/air, - /obj/item/tank/internals/air, - /obj/item/tank/internals/air, - /obj/item/tank/internals/air, - /obj/item/tank/internals/air, - /obj/item/clothing/mask/gas, - /obj/item/clothing/mask/gas, - /obj/item/clothing/mask/gas, - /obj/item/clothing/mask/gas, - /obj/item/clothing/mask/gas) - crate_name = "emergency crate" - crate_type = /obj/structure/closet/crate/internals - -/datum/supply_pack/emergency/internals - name = "Internals Crate" - cost = 1000 - contains = list(/obj/item/clothing/mask/gas, - /obj/item/clothing/mask/gas, - /obj/item/clothing/mask/gas, - /obj/item/clothing/mask/breath, - /obj/item/clothing/mask/breath, - /obj/item/clothing/mask/breath, - /obj/item/tank/internals/emergency_oxygen, - /obj/item/tank/internals/emergency_oxygen, - /obj/item/tank/internals/emergency_oxygen, - /obj/item/tank/internals/air, - /obj/item/tank/internals/air, - /obj/item/tank/internals/air) - crate_name = "internals crate" - crate_type = /obj/structure/closet/crate/internals - -/datum/supply_pack/emergency/firefighting - name = "Firefighting Crate" - cost = 1000 - contains = list(/obj/item/clothing/suit/fire/firefighter, - /obj/item/clothing/suit/fire/firefighter, - /obj/item/clothing/mask/gas, - /obj/item/clothing/mask/gas, - /obj/item/device/flashlight, - /obj/item/device/flashlight, - /obj/item/tank/internals/oxygen/red, - /obj/item/tank/internals/oxygen/red, - /obj/item/extinguisher, - /obj/item/extinguisher, - /obj/item/clothing/head/hardhat/red, - /obj/item/clothing/head/hardhat/red) - crate_name = "firefighting crate" - -/datum/supply_pack/emergency/atmostank - name = "Firefighting Watertank" - cost = 1000 - access = ACCESS_ATMOSPHERICS - contains = list(/obj/item/watertank/atmos) - crate_name = "firefighting watertank crate" - crate_type = /obj/structure/closet/crate/secure - -/datum/supply_pack/emergency/radiation - name = "Radiation Protection Crate" - cost = 1000 - contains = list(/obj/item/clothing/head/radiation, - /obj/item/clothing/head/radiation, - /obj/item/clothing/suit/radiation, - /obj/item/clothing/suit/radiation, - /obj/item/device/geiger_counter, - /obj/item/device/geiger_counter, - /obj/item/reagent_containers/food/drinks/bottle/vodka, - /obj/item/reagent_containers/food/drinks/drinkingglass/shotglass, - /obj/item/reagent_containers/food/drinks/drinkingglass/shotglass) - crate_name = "radiation protection crate" - crate_type = /obj/structure/closet/crate/radiation - -/datum/supply_pack/emergency/weedcontrol - name = "Weed Control Crate" - cost = 1500 - access = ACCESS_HYDROPONICS - contains = list(/obj/item/scythe, - /obj/item/clothing/mask/gas, - /obj/item/grenade/chem_grenade/antiweed, - /obj/item/grenade/chem_grenade/antiweed) - crate_name = "weed control crate" - crate_type = /obj/structure/closet/crate/secure/hydroponics - -/datum/supply_pack/emergency/metalfoam - name = "Metal Foam Grenade Crate" - cost = 1000 - contains = list(/obj/item/storage/box/metalfoam) - crate_name = "metal foam grenade crate" - -/datum/supply_pack/emergency/droneshells - name = "Drone Shell Crate" - cost = 1000 - contains = list(/obj/item/drone_shell, - /obj/item/drone_shell, - /obj/item/drone_shell) - crate_name = "drone shell crate" - -/datum/supply_pack/emergency/specialops - name = "Special Ops Supplies" - hidden = TRUE - cost = 2000 - contains = list(/obj/item/storage/box/emps, - /obj/item/grenade/smokebomb, - /obj/item/grenade/smokebomb, - /obj/item/grenade/smokebomb, - /obj/item/pen/sleepy, - /obj/item/grenade/chem_grenade/incendiary) - crate_name = "emergency crate" - crate_type = /obj/structure/closet/crate/internals - -/datum/supply_pack/emergency/syndicate - name = "NULL_ENTRY" - hidden = TRUE - cost = 20000 - contains = list() - crate_name = "emergency crate" - crate_type = /obj/structure/closet/crate/internals - dangerous = TRUE - -/datum/supply_pack/emergency/syndicate/fill(obj/structure/closet/crate/C) - var/crate_value = 30 - var/list/uplink_items = get_uplink_items(SSticker.mode) - while(crate_value) - var/category = pick(uplink_items) - var/item = pick(uplink_items[category]) - var/datum/uplink_item/I = uplink_items[category][item] - - if(!I.surplus || prob(100 - I.surplus)) - continue - if(crate_value < I.cost) - continue - crate_value -= I.cost - new I.item(C) - -////////////////////////////////////////////////////////////////////////////// -//////////////////////////// Security //////////////////////////////////////// -////////////////////////////////////////////////////////////////////////////// - -/datum/supply_pack/security - group = "Security" - access = ACCESS_SECURITY - crate_type = /obj/structure/closet/crate/secure/gear - -/datum/supply_pack/security/supplies - name = "Security Supplies Crate" - cost = 1000 - contains = list(/obj/item/storage/box/flashbangs, - /obj/item/storage/box/teargas, - /obj/item/storage/box/flashes, - /obj/item/storage/box/handcuffs) - crate_name = "security supply crate" - -/datum/supply_pack/security/helmets - name = "Helmets Crate" - cost = 1000 - contains = list(/obj/item/clothing/head/helmet/sec, - /obj/item/clothing/head/helmet/sec, - /obj/item/clothing/head/helmet/sec) - crate_name = "helmet crate" - -/datum/supply_pack/security/armor - name = "Armor Crate" - cost = 1000 - contains = list(/obj/item/clothing/suit/armor/vest, - /obj/item/clothing/suit/armor/vest, - /obj/item/clothing/suit/armor/vest) - crate_name = "armor crate" - -/datum/supply_pack/security/baton - name = "Stun Batons Crate" - cost = 1000 - contains = list(/obj/item/melee/baton/loaded, - /obj/item/melee/baton/loaded, - /obj/item/melee/baton/loaded) - crate_name = "stun baton crate" - -/datum/supply_pack/security/wall_flash - name = "Wall-Mounted Flash Crate" - cost = 1000 - contains = list(/obj/item/storage/box/wall_flash, - /obj/item/storage/box/wall_flash, - /obj/item/storage/box/wall_flash, - /obj/item/storage/box/wall_flash) - crate_name = "wall-mounted flash crate" - -/datum/supply_pack/security/laser - name = "Lasers Crate" - cost = 2000 - contains = list(/obj/item/gun/energy/laser, - /obj/item/gun/energy/laser, - /obj/item/gun/energy/laser) - crate_name = "laser crate" - -/datum/supply_pack/security/taser - name = "Taser Crate" - cost = 3000 - contains = list(/obj/item/gun/energy/e_gun/advtaser, - /obj/item/gun/energy/e_gun/advtaser, - /obj/item/gun/energy/e_gun/advtaser) - crate_name = "taser crate" - -/datum/supply_pack/security/disabler - name = "Disabler Crate" - cost = 1500 - contains = list(/obj/item/gun/energy/disabler, - /obj/item/gun/energy/disabler, - /obj/item/gun/energy/disabler) - crate_name = "disabler crate" - -/datum/supply_pack/security/forensics - name = "Forensics Crate" - cost = 2000 - contains = list(/obj/item/device/detective_scanner, - /obj/item/storage/box/evidence, - /obj/item/device/camera, - /obj/item/device/taperecorder, - /obj/item/toy/crayon/white, - /obj/item/clothing/head/fedora/det_hat) - crate_name = "forensics crate" - -/datum/supply_pack/security/armory - access = ACCESS_ARMORY - crate_type = /obj/structure/closet/crate/secure/weapon - -/datum/supply_pack/security/armory/riothelmets - name = "Riot Helmets Crate" - cost = 1500 - contains = list(/obj/item/clothing/head/helmet/riot, - /obj/item/clothing/head/helmet/riot, - /obj/item/clothing/head/helmet/riot) - crate_name = "riot helmets crate" - -/datum/supply_pack/security/armory/riotarmor - name = "Riot Armor Crate" - cost = 1500 - contains = list(/obj/item/clothing/suit/armor/riot, - /obj/item/clothing/suit/armor/riot, - /obj/item/clothing/suit/armor/riot) - crate_name = "riot armor crate" - -/datum/supply_pack/security/armory/riotshields - name = "Riot Shields Crate" - cost = 2000 - contains = list(/obj/item/shield/riot, - /obj/item/shield/riot, - /obj/item/shield/riot) - crate_name = "riot shields crate" - -/datum/supply_pack/security/armory/bulletarmor - name = "Bulletproof Armor Crate" - cost = 1500 - contains = list(/obj/item/clothing/suit/armor/bulletproof, - /obj/item/clothing/suit/armor/bulletproof, - /obj/item/clothing/suit/armor/bulletproof) - crate_name = "bulletproof armor crate" - -/datum/supply_pack/security/armory/swat - name = "SWAT Crate" - cost = 6000 - contains = list(/obj/item/clothing/head/helmet/swat/nanotrasen, - /obj/item/clothing/head/helmet/swat/nanotrasen, - /obj/item/clothing/suit/space/swat, - /obj/item/clothing/suit/space/swat, - /obj/item/clothing/mask/gas/sechailer/swat, - /obj/item/clothing/mask/gas/sechailer/swat, - /obj/item/storage/belt/military/assault, - /obj/item/storage/belt/military/assault, - /obj/item/clothing/gloves/combat, - /obj/item/clothing/gloves/combat) - crate_name = "swat crate" - -/datum/supply_pack/security/armory/combatknives - name = "Combat Knives Crate" - cost = 3000 - contains = list(/obj/item/kitchen/knife/combat, - /obj/item/kitchen/knife/combat, - /obj/item/kitchen/knife/combat) - crate_name = "combat knife crate" - -/datum/supply_pack/security/armory/laserarmor - name = "Reflector Vest Crate" - cost = 2000 - contains = list(/obj/item/clothing/suit/armor/laserproof, - /obj/item/clothing/suit/armor/laserproof) - crate_name = "reflector vest crate" - crate_type = /obj/structure/closet/crate/secure/plasma - -/datum/supply_pack/security/armory/ballistic - name = "Combat Shotguns Crate" - cost = 8000 - contains = list(/obj/item/gun/ballistic/shotgun/automatic/combat, - /obj/item/gun/ballistic/shotgun/automatic/combat, - /obj/item/gun/ballistic/shotgun/automatic/combat, - /obj/item/storage/belt/bandolier, - /obj/item/storage/belt/bandolier, - /obj/item/storage/belt/bandolier) - crate_name = "combat shotguns crate" - -/datum/supply_pack/security/armory/energy - name = "Energy Guns Crate" - cost = 2500 - contains = list(/obj/item/gun/energy/e_gun, - /obj/item/gun/energy/e_gun) - crate_name = "energy gun crate" - crate_type = /obj/structure/closet/crate/secure/plasma - -/datum/supply_pack/security/armory/fire - name = "Incendiary Weapons Crate" - cost = 1500 - access = ACCESS_HEADS - contains = list(/obj/item/flamethrower/full, - /obj/item/tank/internals/plasma, - /obj/item/tank/internals/plasma, - /obj/item/tank/internals/plasma, - /obj/item/grenade/chem_grenade/incendiary, - /obj/item/grenade/chem_grenade/incendiary, - /obj/item/grenade/chem_grenade/incendiary) - crate_name = "incendiary weapons crate" - crate_type = /obj/structure/closet/crate/secure/plasma - dangerous = TRUE - -/datum/supply_pack/security/armory/wt550 - name = "WT-550 Auto Rifle Crate" - cost = 3500 - contains = list(/obj/item/gun/ballistic/automatic/wt550, - /obj/item/gun/ballistic/automatic/wt550) - crate_name = "auto rifle crate" - -/datum/supply_pack/security/armory/wt550ammo - name = "WT-550 Auto Rifle Ammo Crate" - cost = 3000 - contains = list(/obj/item/ammo_box/magazine/wt550m9, - /obj/item/ammo_box/magazine/wt550m9, - /obj/item/ammo_box/magazine/wt550m9, - /obj/item/ammo_box/magazine/wt550m9) - crate_name = "auto rifle ammo crate" - -/datum/supply_pack/security/armory/mindshield - name = "mindshield implants Crate" - cost = 4000 - contains = list(/obj/item/storage/lockbox/loyalty) - crate_name = "mindshield implant crate" - -/datum/supply_pack/security/armory/trackingimp - name = "Tracking Implants Crate" - cost = 2000 - contains = list(/obj/item/storage/box/trackimp) - crate_name = "tracking implant crate" - -/datum/supply_pack/security/armory/chemimp - name = "Chemical Implants Crate" - cost = 2000 - contains = list(/obj/item/storage/box/chemimp) - crate_name = "chemical implant crate" - -/datum/supply_pack/security/armory/exileimp - name = "Exile Implants Crate" - cost = 3000 - contains = list(/obj/item/storage/box/exileimp) - crate_name = "exile implant crate" - -/datum/supply_pack/security/securitybarriers - name = "Security Barriers Crate" - contains = list(/obj/item/grenade/barrier, - /obj/item/grenade/barrier, - /obj/item/grenade/barrier, - /obj/item/grenade/barrier) - cost = 2000 - crate_name = "security barriers crate" - -/datum/supply_pack/security/firingpins - name = "Standard Firing Pins Crate" - cost = 2000 - contains = list(/obj/item/storage/box/firingpins, - /obj/item/storage/box/firingpins) - crate_name = "firing pins crate" - -/datum/supply_pack/security/securityclothes - name = "Security Clothing Crate" - cost = 3000 - contains = list(/obj/item/clothing/under/rank/security/navyblue, - /obj/item/clothing/under/rank/security/navyblue, - /obj/item/clothing/suit/security/officer, - /obj/item/clothing/suit/security/officer, - /obj/item/clothing/head/beret/sec/navyofficer, - /obj/item/clothing/head/beret/sec/navyofficer, - /obj/item/clothing/under/rank/warden/navyblue, - /obj/item/clothing/suit/security/warden, - /obj/item/clothing/head/beret/sec/navywarden, - /obj/item/clothing/under/rank/head_of_security/navyblue, - /obj/item/clothing/suit/security/hos, - /obj/item/clothing/head/beret/sec/navyhos) - crate_name = "security clothing crate" - -/datum/supply_pack/security/justiceinbound - name = "Standard Justice Enforcer Crate" - cost = 6000 //justice comes at a price. An expensive, noisy price. - contraband = TRUE - contains = list(/obj/item/clothing/head/helmet/justice, - /obj/item/clothing/mask/gas/sechailer) - crate_name = "security clothing crate" - -////////////////////////////////////////////////////////////////////////////// -//////////////////////////// Engineering ///////////////////////////////////// -////////////////////////////////////////////////////////////////////////////// - -/datum/supply_pack/engineering - group = "Engineering" - crate_type = /obj/structure/closet/crate/engineering - -/datum/supply_pack/engineering/fueltank - name = "Fuel Tank Crate" - cost = 800 - contains = list(/obj/structure/reagent_dispensers/fueltank) - crate_name = "fuel tank crate" - crate_type = /obj/structure/closet/crate/large - -/datum/supply_pack/engineering/oxygen - name = "Oxygen Canister" - cost = 1500 - contains = list(/obj/machinery/portable_atmospherics/canister/oxygen) - crate_name = "oxygen canister crate" - crate_type = /obj/structure/closet/crate/large - -/datum/supply_pack/engineering/nitrogen - name = "Nitrogen Canister" - cost = 2000 - contains = list(/obj/machinery/portable_atmospherics/canister/nitrogen) - crate_name = "nitrogen canister crate" - crate_type = /obj/structure/closet/crate/large - -/datum/supply_pack/engineering/carbon_dio - name = "Carbon Dioxide Canister" - cost = 3000 - contains = list(/obj/machinery/portable_atmospherics/canister/carbon_dioxide) - crate_name = "carbon dioxide canister crate" - crate_type = /obj/structure/closet/crate/large - -/datum/supply_pack/science/nitrous_oxide_canister - name = "Nitrous Oxide Canister" - cost = 3000 - access = ACCESS_ATMOSPHERICS - contains = list(/obj/machinery/portable_atmospherics/canister/nitrous_oxide) - crate_name = "nitrous oxide canister crate" - crate_type = /obj/structure/closet/crate/secure - -/datum/supply_pack/engineering/tools - name = "Toolbox Crate" - contains = list(/obj/item/storage/toolbox/electrical, - /obj/item/storage/toolbox/electrical, - /obj/item/storage/toolbox/mechanical, - /obj/item/storage/toolbox/electrical, - /obj/item/storage/toolbox/mechanical, - /obj/item/storage/toolbox/mechanical) - cost = 1000 - crate_name = "toolbox crate" - -/datum/supply_pack/engineering/powergamermitts - name = "Insulated Gloves Crate" - cost = 2000 //Made of pure-grade bullshittinium - contains = list(/obj/item/clothing/gloves/color/yellow, - /obj/item/clothing/gloves/color/yellow, - /obj/item/clothing/gloves/color/yellow) - crate_name = "insulated gloves crate" - -/datum/supply_pack/engineering/power - name = "Powercell Crate" - cost = 1000 - contains = list(/obj/item/stock_parts/cell/high, - /obj/item/stock_parts/cell/high, - /obj/item/stock_parts/cell/high) - crate_name = "electrical maintenance crate" - crate_type = /obj/structure/closet/crate/engineering/electrical - -/obj/item/stock_parts/cell/inducer_supply - maxcharge = 5000 - charge = 5000 - -/datum/supply_pack/engineering/inducers - name = "NT-75 Electromagnetic Power Inducers Crate" - cost = 2000 - contains = list(/obj/item/inducer/sci {cell_type = /obj/item/stock_parts/cell/inducer_supply; opened = 0}, /obj/item/inducer/sci {cell_type = /obj/item/stock_parts/cell/inducer_supply; opened = 0}) //FALSE doesn't work in modified type paths apparently. - crate_name = "inducer crate" - crate_type = /obj/structure/closet/crate/engineering/electrical - -/datum/supply_pack/engineering/engiequipment - name = "Engineering Gear Crate" - cost = 1300 - contains = list(/obj/item/storage/belt/utility, - /obj/item/storage/belt/utility, - /obj/item/storage/belt/utility, - /obj/item/clothing/suit/hazardvest, - /obj/item/clothing/suit/hazardvest, - /obj/item/clothing/suit/hazardvest, - /obj/item/clothing/head/welding, - /obj/item/clothing/head/welding, - /obj/item/clothing/head/welding, - /obj/item/clothing/head/hardhat, - /obj/item/clothing/head/hardhat, - /obj/item/clothing/head/hardhat, - /obj/item/clothing/glasses/meson/engine, - /obj/item/clothing/glasses/meson/engine) - crate_name = "engineering gear crate" - - -/datum/supply_pack/engineering/shieldgen - name = "Anti-breach Shield Projector Crate" - cost = 2500 - contains = list(/obj/machinery/shieldgen, - /obj/machinery/shieldgen) - crate_name = "anti-breach shield projector crate" - -/datum/supply_pack/engineering/grounding_rods - name = "Grounding Rod Crate" - cost = 1700 - contains = list(/obj/machinery/power/grounding_rod, - /obj/machinery/power/grounding_rod, - /obj/machinery/power/grounding_rod, - /obj/machinery/power/grounding_rod) - crate_name = "grounding rod crate" - crate_type = /obj/structure/closet/crate/engineering/electrical - -/datum/supply_pack/engineering/pacman - name = "P.A.C.M.A.N Generator Crate" - cost = 2500 - contains = list(/obj/machinery/power/port_gen/pacman) - crate_name = "PACMAN generator crate" - crate_type = /obj/structure/closet/crate/engineering/electrical - -/datum/supply_pack/engineering/solar - name = "Solar Panel Crate" - cost = 2000 - contains = list(/obj/item/solar_assembly, - /obj/item/solar_assembly, - /obj/item/solar_assembly, - /obj/item/solar_assembly, - /obj/item/solar_assembly, - /obj/item/solar_assembly, - /obj/item/solar_assembly, - /obj/item/solar_assembly, - /obj/item/solar_assembly, - /obj/item/solar_assembly, - /obj/item/solar_assembly, - /obj/item/solar_assembly, - /obj/item/solar_assembly, - /obj/item/solar_assembly, - /obj/item/solar_assembly, - /obj/item/solar_assembly, - /obj/item/solar_assembly, - /obj/item/solar_assembly, - /obj/item/solar_assembly, - /obj/item/solar_assembly, - /obj/item/solar_assembly, - /obj/item/circuitboard/computer/solar_control, - /obj/item/electronics/tracker, - /obj/item/paper/guides/jobs/engi/solars) - crate_name = "solar panel crate" - crate_type = /obj/structure/closet/crate/engineering/electrical - -/datum/supply_pack/engineering/engine - name = "Emitter Crate" - cost = 1500 - access = ACCESS_CE - contains = list(/obj/machinery/power/emitter, - /obj/machinery/power/emitter) - crate_name = "emitter crate" - crate_type = /obj/structure/closet/crate/secure/engineering - dangerous = TRUE - -/datum/supply_pack/engineering/engine/field_gen - name = "Field Generator Crate" - cost = 1500 - contains = list(/obj/machinery/field/generator, - /obj/machinery/field/generator) - crate_name = "field generator crate" - -/datum/supply_pack/engineering/engine/sing_gen - name = "Singularity Generator Crate" - cost = 5000 - contains = list(/obj/machinery/the_singularitygen) - crate_name = "singularity generator crate" - -/datum/supply_pack/engineering/engine/tesla_gen - name = "Tesla Generator Crate" - cost = 5000 - contains = list(/obj/machinery/the_singularitygen/tesla) - crate_name = "tesla generator crate" - -/datum/supply_pack/engineering/engine/collector - name = "Collector Crate" - cost = 2500 - contains = list(/obj/machinery/power/rad_collector, - /obj/machinery/power/rad_collector, - /obj/machinery/power/rad_collector) - crate_name = "collector crate" - -/datum/supply_pack/engineering/engine/PA - name = "Particle Accelerator Crate" - cost = 3000 - contains = list(/obj/structure/particle_accelerator/fuel_chamber, - /obj/machinery/particle_accelerator/control_box, - /obj/structure/particle_accelerator/particle_emitter/center, - /obj/structure/particle_accelerator/particle_emitter/left, - /obj/structure/particle_accelerator/particle_emitter/right, - /obj/structure/particle_accelerator/power_box, - /obj/structure/particle_accelerator/end_cap) - crate_name = "particle accelerator crate" - -/datum/supply_pack/engineering/engine/supermatter_shard - name = "Supermatter Shard Crate" - cost = 10000 - access = ACCESS_CE - contains = list(/obj/machinery/power/supermatter_shard) - crate_name = "supermatter shard crate" - crate_type = /obj/structure/closet/crate/secure/engineering - dangerous = TRUE - -/datum/supply_pack/engineering/engine/am_shielding - name = "Antimatter Shielding Crate" - cost = 2000 - contains = list(/obj/item/device/am_shielding_container, - /obj/item/device/am_shielding_container, - /obj/item/device/am_shielding_container, - /obj/item/device/am_shielding_container, - /obj/item/device/am_shielding_container, - /obj/item/device/am_shielding_container, - /obj/item/device/am_shielding_container, - /obj/item/device/am_shielding_container, - /obj/item/device/am_shielding_container, - /obj/item/device/am_shielding_container)//10 shields: 3x3 containment and a core - crate_name = "antimatter shielding crate" - -/datum/supply_pack/engineering/engine/am_core - name = "Antimatter Control Crate" - cost = 5000 - contains = list(/obj/machinery/power/am_control_unit) - crate_name = "antimatter control crate" - -/datum/supply_pack/engineering/engine/am_jar - name = "Antimatter Containment Jar Crate" - cost = 2000 - contains = list(/obj/item/am_containment, - /obj/item/am_containment) - crate_name = "antimatter jar crate" - -/datum/supply_pack/engineering/shuttle_engine - name = "Shuttle Engine Crate" - cost = 5000 - access = ACCESS_CE - contains = list(/obj/structure/shuttle/engine/propulsion/burst/cargo) - crate_name = "shuttle engine crate" - crate_type = /obj/structure/closet/crate/secure/engineering - special = TRUE - -////////////////////////////////////////////////////////////////////////////// -//////////////////////////// Medical ///////////////////////////////////////// -////////////////////////////////////////////////////////////////////////////// - -/datum/supply_pack/medical - group = "Medical" - crate_type = /obj/structure/closet/crate/medical - -/datum/supply_pack/medical/supplies - name = "Medical Supplies Crate" - cost = 2000 - contains = list(/obj/item/reagent_containers/glass/bottle/charcoal, - /obj/item/reagent_containers/glass/bottle/charcoal, - /obj/item/reagent_containers/glass/bottle/epinephrine, - /obj/item/reagent_containers/glass/bottle/epinephrine, - /obj/item/reagent_containers/glass/bottle/morphine, - /obj/item/reagent_containers/glass/bottle/morphine, - /obj/item/reagent_containers/glass/bottle/morphine, - /obj/item/reagent_containers/glass/bottle/morphine, - /obj/item/reagent_containers/glass/bottle/morphine, - /obj/item/reagent_containers/glass/bottle/morphine, - /obj/item/reagent_containers/glass/bottle/toxin, - /obj/item/reagent_containers/glass/bottle/toxin, - /obj/item/reagent_containers/glass/beaker/large, - /obj/item/reagent_containers/glass/beaker/large, - /obj/item/reagent_containers/pill/insulin, - /obj/item/reagent_containers/pill/insulin, - /obj/item/reagent_containers/pill/insulin, - /obj/item/reagent_containers/pill/insulin, - /obj/item/stack/medical/gauze, - /obj/item/storage/box/beakers, - /obj/item/storage/box/syringes, - /obj/item/storage/box/bodybags) - crate_name = "medical supplies crate" - -/datum/supply_pack/medical/firstaid - name = "First Aid Kit Crate" - cost = 1000 - contains = list(/obj/item/storage/firstaid/regular, - /obj/item/storage/firstaid/regular, - /obj/item/storage/firstaid/regular, - /obj/item/storage/firstaid/regular) - crate_name = "first aid kit crate" - -/datum/supply_pack/medical/firstaidbruises - name = "Bruise Treatment Kit Crate" - cost = 1000 - contains = list(/obj/item/storage/firstaid/brute, - /obj/item/storage/firstaid/brute, - /obj/item/storage/firstaid/brute) - crate_name = "brute treatment kit crate" - -/datum/supply_pack/medical/firstaidburns - name = "Burn Treatment Kit Crate" - cost = 1000 - contains = list(/obj/item/storage/firstaid/fire, - /obj/item/storage/firstaid/fire, - /obj/item/storage/firstaid/fire) - crate_name = "burn treatment kit crate" - -/datum/supply_pack/medical/firstaidtoxins - name = "Toxin Treatment Kit Crate" - cost = 1000 - contains = list(/obj/item/storage/firstaid/toxin, - /obj/item/storage/firstaid/toxin, - /obj/item/storage/firstaid/toxin) - crate_name = "toxin treatment kit crate" - -/datum/supply_pack/medical/firstaidoxygen - name = "Oxygen Deprivation Kit Crate" - cost = 1000 - contains = list(/obj/item/storage/firstaid/o2, - /obj/item/storage/firstaid/o2, - /obj/item/storage/firstaid/o2) - crate_name = "oxygen deprivation kit crate" - -/datum/supply_pack/medical/virus - name = "Virus Crate" - cost = 2500 - access = ACCESS_CMO - contains = list(/obj/item/reagent_containers/glass/bottle/flu_virion, - /obj/item/reagent_containers/glass/bottle/cold, - /obj/item/reagent_containers/glass/bottle/epiglottis_virion, - /obj/item/reagent_containers/glass/bottle/liver_enhance_virion, - /obj/item/reagent_containers/glass/bottle/fake_gbs, - /obj/item/reagent_containers/glass/bottle/magnitis, - /obj/item/reagent_containers/glass/bottle/pierrot_throat, - /obj/item/reagent_containers/glass/bottle/brainrot, - /obj/item/reagent_containers/glass/bottle/hallucigen_virion, - /obj/item/reagent_containers/glass/bottle/anxiety, - /obj/item/reagent_containers/glass/bottle/beesease, - /obj/item/storage/box/syringes, - /obj/item/storage/box/beakers, - /obj/item/reagent_containers/glass/bottle/mutagen) - crate_name = "virus crate" - crate_type = /obj/structure/closet/crate/secure/plasma - dangerous = TRUE - -/datum/supply_pack/medical/bloodpacks - name = "Blood Pack Variety Crate" - cost = 3500 - contains = list(/obj/item/reagent_containers/blood/empty, - /obj/item/reagent_containers/blood/empty, - /obj/item/reagent_containers/blood/APlus, - /obj/item/reagent_containers/blood/AMinus, - /obj/item/reagent_containers/blood/BPlus, - /obj/item/reagent_containers/blood/BMinus, - /obj/item/reagent_containers/blood/OPlus, - /obj/item/reagent_containers/blood/OMinus) - crate_name = "blood freezer" - crate_type = /obj/structure/closet/crate/freezer - -/datum/supply_pack/medical/iv_drip - name = "IV Drip Crate" - cost = 1000 - contains = list(/obj/machinery/iv_drip) - crate_name = "iv drip crate" - -/datum/supply_pack/medical/defibs - name = "Defibrillator Crate" - cost = 2500 - contains = list(/obj/item/defibrillator/loaded, - /obj/item/defibrillator/loaded) - crate_name = "defibrillator crate" - -/datum/supply_pack/medical/vending - name = "Medical Vending Crate" - cost = 2000 - contains = list(/obj/item/vending_refill/medical, - /obj/item/vending_refill/medical, - /obj/item/vending_refill/medical) - crate_name = "medical vending crate" - -////////////////////////////////////////////////////////////////////////////// -//////////////////////////// Science ///////////////////////////////////////// -////////////////////////////////////////////////////////////////////////////// - -/datum/supply_pack/science - group = "Science" - crate_type = /obj/structure/closet/crate/science - -/datum/supply_pack/science/robotics - name = "Robotics Assembly Crate" - cost = 1000 - access = ACCESS_ROBOTICS - contains = list(/obj/item/device/assembly/prox_sensor, - /obj/item/device/assembly/prox_sensor, - /obj/item/device/assembly/prox_sensor, - /obj/item/storage/toolbox/electrical, - /obj/item/storage/box/flashes, - /obj/item/stock_parts/cell/high, - /obj/item/stock_parts/cell/high) - crate_name = "robotics assembly crate" - crate_type = /obj/structure/closet/crate/secure/science - -/datum/supply_pack/science/robotics/mecha_ripley - name = "Circuit Crate (Ripley APLU)" - cost = 3000 - access = ACCESS_ROBOTICS - contains = list(/obj/item/book/manual/ripley_build_and_repair, - /obj/item/circuitboard/mecha/ripley/main, - /obj/item/circuitboard/mecha/ripley/peripherals) - crate_name = "\improper APLU Ripley circuit crate" - crate_type = /obj/structure/closet/crate/secure/science - -/datum/supply_pack/science/robotics/mecha_odysseus - name = "Circuit Crate (Odysseus)" - cost = 2500 - access = ACCESS_ROBOTICS - contains = list(/obj/item/circuitboard/mecha/odysseus/peripherals, - /obj/item/circuitboard/mecha/odysseus/main) - crate_name = "\improper Odysseus circuit crate" - crate_type = /obj/structure/closet/crate/secure/science - -/datum/supply_pack/science/plasma - name = "Plasma Assembly Crate" - cost = 1000 - access = ACCESS_TOX_STORAGE - contains = list(/obj/item/tank/internals/plasma, - /obj/item/tank/internals/plasma, - /obj/item/tank/internals/plasma, - /obj/item/device/assembly/igniter, - /obj/item/device/assembly/igniter, - /obj/item/device/assembly/igniter, - /obj/item/device/assembly/prox_sensor, - /obj/item/device/assembly/prox_sensor, - /obj/item/device/assembly/prox_sensor, - /obj/item/device/assembly/timer, - /obj/item/device/assembly/timer, - /obj/item/device/assembly/timer) - crate_name = "plasma assembly crate" - crate_type = /obj/structure/closet/crate/secure/plasma - -/datum/supply_pack/science/shieldwalls - name = "Shield Generators" - cost = 2000 - access = ACCESS_TELEPORTER - contains = list(/obj/machinery/shieldwallgen, - /obj/machinery/shieldwallgen, - /obj/machinery/shieldwallgen, - /obj/machinery/shieldwallgen) - crate_name = "shield generators crate" - crate_type = /obj/structure/closet/crate/secure/science - -/datum/supply_pack/science/transfer_valves - name = "Tank Transfer Valves Crate" - cost = 6000 - access = ACCESS_RD - contains = list(/obj/item/device/transfer_valve, - /obj/item/device/transfer_valve) - crate_name = "tank transfer valves crate" - crate_type = /obj/structure/closet/crate/secure/science - dangerous = TRUE - -/datum/supply_pack/science/tablets - name = "Tablet Crate" - cost = 5000 - contains = list(/obj/item/device/modular_computer/tablet/preset/cargo, - /obj/item/device/modular_computer/tablet/preset/cargo, - /obj/item/device/modular_computer/tablet/preset/cargo, - /obj/item/device/modular_computer/tablet/preset/cargo, - /obj/item/device/modular_computer/tablet/preset/cargo) - crate_name = "tablet crate" - -////////////////////////////////////////////////////////////////////////////// -//////////////////////////// Organic ///////////////////////////////////////// -////////////////////////////////////////////////////////////////////////////// - -/datum/supply_pack/organic - group = "Food & Livestock" - crate_type = /obj/structure/closet/crate/freezer - -/datum/supply_pack/organic/food - name = "Food Crate" - cost = 1000 - contains = list(/obj/item/reagent_containers/food/condiment/flour, - /obj/item/reagent_containers/food/condiment/rice, - /obj/item/reagent_containers/food/condiment/milk, - /obj/item/reagent_containers/food/condiment/soymilk, - /obj/item/reagent_containers/food/condiment/saltshaker, - /obj/item/reagent_containers/food/condiment/peppermill, - /obj/item/storage/fancy/egg_box, - /obj/item/reagent_containers/food/condiment/enzyme, - /obj/item/reagent_containers/food/condiment/sugar, - /obj/item/reagent_containers/food/snacks/meat/slab/monkey, - /obj/item/reagent_containers/food/snacks/grown/banana, - /obj/item/reagent_containers/food/snacks/grown/banana, - /obj/item/reagent_containers/food/snacks/grown/banana) - crate_name = "food crate" - -/datum/supply_pack/organic/pizza - name = "Pizza Crate" - cost = 6000 // Best prices this side of the galaxy. - contains = list(/obj/item/pizzabox/margherita, - /obj/item/pizzabox/mushroom, - /obj/item/pizzabox/meat, - /obj/item/pizzabox/vegetable) - crate_name = "pizza crate" - -/datum/supply_pack/organic/cream_piee - name = "High-yield Clown-grade Cream Pie Crate" - cost = 6000 - contains = list(/obj/item/storage/backpack/duffelbag/clown/cream_pie) - crate_name = "party equipment crate" - contraband = TRUE - access = ACCESS_THEATRE - crate_type = /obj/structure/closet/crate/secure - -/datum/supply_pack/organic/monkey - name = "Monkey Crate" - cost = 2000 - contains = list (/obj/item/storage/box/monkeycubes) - crate_name = "monkey crate" - -/datum/supply_pack/organic/party - name = "Party Equipment" - cost = 2000 - contains = list(/obj/item/storage/box/drinkingglasses, - /obj/item/reagent_containers/food/drinks/shaker, - /obj/item/reagent_containers/food/drinks/bottle/patron, - /obj/item/reagent_containers/food/drinks/bottle/goldschlager, - /obj/item/reagent_containers/food/drinks/ale, - /obj/item/reagent_containers/food/drinks/ale, - /obj/item/reagent_containers/food/drinks/beer, - /obj/item/reagent_containers/food/drinks/beer, - /obj/item/reagent_containers/food/drinks/beer, - /obj/item/reagent_containers/food/drinks/beer, - /obj/item/device/flashlight/glowstick, - /obj/item/device/flashlight/glowstick/red, - /obj/item/device/flashlight/glowstick/blue, - /obj/item/device/flashlight/glowstick/cyan, - /obj/item/device/flashlight/glowstick/orange, - /obj/item/device/flashlight/glowstick/yellow, - /obj/item/device/flashlight/glowstick/pink) - crate_name = "party equipment crate" - -/datum/supply_pack/organic/critter - crate_type = /obj/structure/closet/crate/critter - -/datum/supply_pack/organic/critter/cow - name = "Cow Crate" - cost = 3000 - contains = list(/mob/living/simple_animal/cow) - crate_name = "cow crate" - -/datum/supply_pack/organic/critter/goat - name = "Goat Crate" - cost = 2500 - contains = list(/mob/living/simple_animal/hostile/retaliate/goat) - crate_name = "goat crate" - -/datum/supply_pack/organic/critter/chick - name = "Chicken Crate" - cost = 2000 - contains = list( /mob/living/simple_animal/chick) - crate_name = "chicken crate" - -/datum/supply_pack/organic/critter/corgi - name = "Corgi Crate" - cost = 5000 - contains = list(/mob/living/simple_animal/pet/dog/corgi, - /obj/item/clothing/neck/petcollar) - crate_name = "corgi crate" - -/datum/supply_pack/organic/critter/corgi/generate() - . = ..() - if(prob(50)) - var/mob/living/simple_animal/pet/dog/corgi/D = locate() in . - qdel(D) - new /mob/living/simple_animal/pet/dog/corgi/Lisa(.) - -/datum/supply_pack/organic/critter/cat - name = "Cat Crate" - cost = 5000 //Cats are worth as much as corgis. - contains = list(/mob/living/simple_animal/pet/cat, - /obj/item/clothing/neck/petcollar, - /obj/item/toy/cattoy) - crate_name = "cat crate" - -/datum/supply_pack/organic/critter/cat/generate() - . = ..() - if(prob(50)) - var/mob/living/simple_animal/pet/cat/C = locate() in . - qdel(C) - new /mob/living/simple_animal/pet/cat/Proc(.) - -/datum/supply_pack/organic/critter/pug - name = "Pug Crate" - cost = 5000 - contains = list(/mob/living/simple_animal/pet/dog/pug, - /obj/item/clothing/neck/petcollar) - crate_name = "pug crate" - -/datum/supply_pack/organic/critter/fox - name = "Fox Crate" - cost = 5000 - contains = list(/mob/living/simple_animal/pet/fox, - /obj/item/clothing/neck/petcollar) - crate_name = "fox crate" - -/datum/supply_pack/organic/critter/butterfly - name = "Butterflies Crate" - contraband = TRUE - cost = 5000 - contains = list(/mob/living/simple_animal/butterfly) - crate_name = "entomology samples crate" - -/datum/supply_pack/organic/critter/butterfly/generate() - . = ..() - for(var/i in 1 to 49) - new /mob/living/simple_animal/butterfly(.) - -/datum/supply_pack/organic/hydroponics - name = "Hydroponics Crate" - cost = 1500 - contains = list(/obj/item/reagent_containers/spray/plantbgone, - /obj/item/reagent_containers/spray/plantbgone, - /obj/item/reagent_containers/glass/bottle/ammonia, - /obj/item/reagent_containers/glass/bottle/ammonia, - /obj/item/hatchet, - /obj/item/cultivator, - /obj/item/device/plant_analyzer, - /obj/item/clothing/gloves/botanic_leather, - /obj/item/clothing/suit/apron) - crate_name = "hydroponics crate" - crate_type = /obj/structure/closet/crate/hydroponics - -/datum/supply_pack/organic/hydroponics/hydrotank - name = "Hydroponics Backpack Crate" - cost = 1000 - access = ACCESS_HYDROPONICS - contains = list(/obj/item/watertank) - crate_name = "hydroponics backpack crate" - crate_type = /obj/structure/closet/crate/secure - -/datum/supply_pack/organic/potted_plants - name = "Potted Plants Crate" - cost = 700 - contains = list(/obj/item/twohanded/required/kirbyplants/random, - /obj/item/twohanded/required/kirbyplants/random, - /obj/item/twohanded/required/kirbyplants/random, - /obj/item/twohanded/required/kirbyplants/random, - /obj/item/twohanded/required/kirbyplants/random) - crate_name = "potted plants crate" - crate_type = /obj/structure/closet/crate/hydroponics - -/datum/supply_pack/organic/hydroponics/seeds - name = "Seeds Crate" - cost = 1000 - contains = list(/obj/item/seeds/chili, - /obj/item/seeds/berry, - /obj/item/seeds/corn, - /obj/item/seeds/eggplant, - /obj/item/seeds/tomato, - /obj/item/seeds/soya, - /obj/item/seeds/wheat, - /obj/item/seeds/wheat/rice, - /obj/item/seeds/carrot, - /obj/item/seeds/sunflower, - /obj/item/seeds/chanter, - /obj/item/seeds/potato, - /obj/item/seeds/sugarcane) - crate_name = "seeds crate" - -/datum/supply_pack/organic/hydroponics/exoticseeds - name = "Exotic Seeds Crate" - cost = 1500 - contains = list(/obj/item/seeds/nettle, - /obj/item/seeds/replicapod, - /obj/item/seeds/replicapod, - /obj/item/seeds/replicapod, - /obj/item/seeds/plump, - /obj/item/seeds/liberty, - /obj/item/seeds/amanita, - /obj/item/seeds/reishi, - /obj/item/seeds/banana, - /obj/item/seeds/eggplant/eggy, - /obj/item/seeds/random, - /obj/item/seeds/random) - crate_name = "exotic seeds crate" - -/datum/supply_pack/organic/hydroponics/beekeeping_fullkit - name = "Beekeeping Starter Crate" - cost = 1500 - contains = list(/obj/structure/beebox, - /obj/item/honey_frame, - /obj/item/honey_frame, - /obj/item/honey_frame, - /obj/item/queen_bee/bought, - /obj/item/clothing/head/beekeeper_head, - /obj/item/clothing/suit/beekeeper_suit, - /obj/item/melee/flyswatter) - crate_name = "beekeeping starter crate" - -/datum/supply_pack/organic/hydroponics/beekeeping_suits - name = "Beekeeper Suit Crate" - cost = 1000 - contains = list(/obj/item/clothing/head/beekeeper_head, - /obj/item/clothing/suit/beekeeper_suit, - /obj/item/clothing/head/beekeeper_head, - /obj/item/clothing/suit/beekeeper_suit) - crate_name = "beekeeper suits" - -/datum/supply_pack/organic/vending - name = "Bartending Supply Crate" - cost = 2000 - contains = list(/obj/item/vending_refill/boozeomat, - /obj/item/vending_refill/boozeomat, - /obj/item/vending_refill/boozeomat, - /obj/item/vending_refill/coffee, - /obj/item/vending_refill/coffee, - /obj/item/vending_refill/coffee) - crate_name = "bartending supply crate" - -/datum/supply_pack/organic/vending/snack - name = "Snack Supply Crate" - cost = 1500 - contains = list(/obj/item/vending_refill/snack, - /obj/item/vending_refill/snack, - /obj/item/vending_refill/snack) - crate_name = "snacks supply crate" - -/datum/supply_pack/organic/vending/cola - name = "Softdrinks Supply Crate" - cost = 1500 - contains = list(/obj/item/vending_refill/cola, - /obj/item/vending_refill/cola, - /obj/item/vending_refill/cola) - crate_name = "soft drinks supply crate" - -/datum/supply_pack/organic/vending/cigarette - name = "Cigarette Supply Crate" - cost = 1500 - contains = list(/obj/item/vending_refill/cigarette, - /obj/item/vending_refill/cigarette, - /obj/item/vending_refill/cigarette) - crate_name = "cigarette supply crate" - -/datum/supply_pack/organic/vending/games - name = "Games Supply Crate" - cost = 1000 - contains = list(/obj/item/vending_refill/games, - /obj/item/vending_refill/games, - /obj/item/vending_refill/games) - crate_name = "games supply crate" - -////////////////////////////////////////////////////////////////////////////// -//////////////////////////// Materials /////////////////////////////////////// -////////////////////////////////////////////////////////////////////////////// - -/datum/supply_pack/materials - group = "Raw Materials" - -/datum/supply_pack/materials/metal50 - name = "50 Metal Sheets" - cost = 1000 - contains = list(/obj/item/stack/sheet/metal/fifty) - crate_name = "metal sheets crate" - -/datum/supply_pack/materials/plasteel20 - name = "20 Plasteel Sheets" - cost = 7500 - contains = list(/obj/item/stack/sheet/plasteel/twenty) - crate_name = "plasteel sheets crate" - -/datum/supply_pack/materials/plasteel50 - name = "50 Plasteel Sheets" - cost = 16500 - contains = list(/obj/item/stack/sheet/plasteel/fifty) - crate_name = "plasteel sheets crate" - -/datum/supply_pack/materials/glass50 - name = "50 Glass Sheets" - cost = 1000 - contains = list(/obj/item/stack/sheet/glass/fifty) - crate_name = "glass sheets crate" - -/datum/supply_pack/materials/wood50 - name = "50 Wood Planks" - cost = 2000 - contains = list(/obj/item/stack/sheet/mineral/wood/fifty) - crate_name = "wood planks crate" - -/datum/supply_pack/materials/cardboard50 - name = "50 Cardboard Sheets" - cost = 1000 - contains = list(/obj/item/stack/sheet/cardboard/fifty) - crate_name = "cardboard sheets crate" - -/datum/supply_pack/materials/plastic50 - name = "50 Plastic Sheets" - cost = 1000 - contains = list(/obj/item/stack/sheet/plastic/fifty) - crate_name = "plastic sheets crate" - -/datum/supply_pack/materials/sandstone30 - name = "30 Sandstone Blocks" - cost = 1000 - contains = list(/obj/item/stack/sheet/mineral/sandstone/thirty) - crate_name = "sandstone blocks crate" - -////////////////////////////////////////////////////////////////////////////// -//////////////////////////// Miscellaneous /////////////////////////////////// -////////////////////////////////////////////////////////////////////////////// - -/datum/supply_pack/misc - group = "Miscellaneous Supplies" - -/datum/supply_pack/misc/minerkit - name = "Shaft Miner Starter Kit" - cost = 2500 - access = ACCESS_QM - contains = list(/obj/item/pickaxe/mini, - /obj/item/clothing/glasses/meson, - /obj/item/device/t_scanner/adv_mining_scanner/lesser, - /obj/item/device/radio/headset/headset_cargo/mining, - /obj/item/storage/bag/ore, - /obj/item/clothing/suit/hooded/explorer, - /obj/item/clothing/mask/gas/explorer) - crate_name = "shaft miner starter kit" - crate_type = /obj/structure/closet/crate/secure - -/datum/supply_pack/misc/mule - name = "MULEbot Crate" - cost = 2000 - contains = list(/mob/living/simple_animal/bot/mulebot) - crate_name = "\improper MULEbot Crate" - crate_type = /obj/structure/closet/crate/large - -/datum/supply_pack/misc/conveyor - name = "Conveyor Assembly Crate" - cost = 1500 - contains = list(/obj/item/conveyor_construct, - /obj/item/conveyor_construct, - /obj/item/conveyor_construct, - /obj/item/conveyor_construct, - /obj/item/conveyor_construct, - /obj/item/conveyor_construct, - /obj/item/conveyor_switch_construct, - /obj/item/paper/guides/conveyor) - crate_name = "conveyor assembly crate" - -/datum/supply_pack/misc/watertank - name = "Water Tank Crate" - cost = 600 - contains = list(/obj/structure/reagent_dispensers/watertank) - crate_name = "water tank crate" - crate_type = /obj/structure/closet/crate/large - -/datum/supply_pack/misc/hightank - name = "High-Capacity Water Tank Crate" - cost = 1200 - contains = list(/obj/structure/reagent_dispensers/watertank/high) - crate_name = "high-capacity water tank crate" - crate_type = /obj/structure/closet/crate/large - -/datum/supply_pack/misc/water_vapor - name = "Water Vapor Canister" - cost = 2500 - contains = list(/obj/machinery/portable_atmospherics/canister/water_vapor) - crate_name = "water vapor canister crate" - crate_type = /obj/structure/closet/crate/large - -/datum/supply_pack/misc/lasertag - name = "Laser Tag Crate" - cost = 1500 - contains = list(/obj/item/gun/energy/laser/redtag, - /obj/item/gun/energy/laser/redtag, - /obj/item/gun/energy/laser/redtag, - /obj/item/gun/energy/laser/bluetag, - /obj/item/gun/energy/laser/bluetag, - /obj/item/gun/energy/laser/bluetag, - /obj/item/clothing/suit/redtag, - /obj/item/clothing/suit/redtag, - /obj/item/clothing/suit/redtag, - /obj/item/clothing/suit/bluetag, - /obj/item/clothing/suit/bluetag, - /obj/item/clothing/suit/bluetag, - /obj/item/clothing/head/helmet/redtaghelm, - /obj/item/clothing/head/helmet/redtaghelm, - /obj/item/clothing/head/helmet/redtaghelm, - /obj/item/clothing/head/helmet/bluetaghelm, - /obj/item/clothing/head/helmet/bluetaghelm, - /obj/item/clothing/head/helmet/bluetaghelm) - crate_name = "laser tag crate" - -/datum/supply_pack/misc/lasertag/pins - name = "Laser Tag Firing Pins Crate" - cost = 3000 - contraband = TRUE - contains = list(/obj/item/storage/box/lasertagpins) - crate_name = "laser tag crate" - -/datum/supply_pack/misc/clownpin - name = "Hilarious Firing Pin Crate" - cost = 5000 - contraband = TRUE - contains = list(/obj/item/device/firing_pin/clown) - // It's /technically/ a toy. For the clown, at least. - crate_name = "toy crate" - -/datum/supply_pack/misc/religious_supplies - name = "Religious Supplies Crate" - cost = 4000 // it costs so much because the Space Church is ran by Space Jews - contains = list(/obj/item/reagent_containers/food/drinks/bottle/holywater, - /obj/item/reagent_containers/food/drinks/bottle/holywater, - /obj/item/storage/book/bible/booze, - /obj/item/storage/book/bible/booze, - /obj/item/clothing/suit/hooded/chaplain_hoodie, - /obj/item/clothing/suit/hooded/chaplain_hoodie, - /obj/item/clothing/under/burial, - /obj/item/clothing/under/burial) - crate_name = "religious supplies crate" - -/datum/supply_pack/misc/book_crate - name = "Book Crate" - cost = 1500 - contains = list(/obj/item/book/codex_gigas, - /obj/item/book/manual/random/, - /obj/item/book/manual/random/, - /obj/item/book/manual/random/, - /obj/item/book/random/triple) - -/datum/supply_pack/misc/paper - name = "Bureaucracy Crate" - cost = 1500 - contains = list(/obj/structure/filingcabinet/chestdrawer/wheeled, - /obj/item/device/camera_film, - /obj/item/hand_labeler, - /obj/item/hand_labeler_refill, - /obj/item/hand_labeler_refill, - /obj/item/paper_bin, - /obj/item/pen/fourcolor, - /obj/item/pen/fourcolor, - /obj/item/pen, - /obj/item/pen/fountain, - /obj/item/pen/blue, - /obj/item/pen/red, - /obj/item/folder/blue, - /obj/item/folder/red, - /obj/item/folder/yellow, - /obj/item/clipboard, - /obj/item/clipboard, - /obj/item/stamp, - /obj/item/stamp/denied) - crate_name = "bureaucracy crate" - -/datum/supply_pack/misc/fountainpens - name = "Calligraphy Crate" - cost = 700 - contains = list(/obj/item/storage/box/fountainpens) - crate_type = /obj/structure/closet/crate/wooden - -/datum/supply_pack/misc/toner - name = "Toner Crate" - cost = 1000 - contains = list(/obj/item/device/toner, - /obj/item/device/toner, - /obj/item/device/toner, - /obj/item/device/toner, - /obj/item/device/toner, - /obj/item/device/toner) - crate_name = "toner crate" - -/datum/supply_pack/misc/janitor - name = "Janitorial Supplies Crate" - cost = 1000 - contains = list(/obj/item/reagent_containers/glass/bucket, - /obj/item/reagent_containers/glass/bucket, - /obj/item/reagent_containers/glass/bucket, - /obj/item/mop, - /obj/item/caution, - /obj/item/caution, - /obj/item/caution, - /obj/item/storage/bag/trash, - /obj/item/reagent_containers/spray/cleaner, - /obj/item/reagent_containers/glass/rag, - /obj/item/grenade/chem_grenade/cleaner, - /obj/item/grenade/chem_grenade/cleaner, - /obj/item/grenade/chem_grenade/cleaner) - crate_name = "janitorial supplies crate" - -/datum/supply_pack/misc/janitor/janicart - name = "Janitorial Cart and Galoshes Crate" - cost = 2000 - contains = list(/obj/structure/janitorialcart, - /obj/item/clothing/shoes/galoshes) - crate_name = "janitorial cart crate" - crate_type = /obj/structure/closet/crate/large - -/datum/supply_pack/misc/janitor/janitank - name = "Janitor Backpack Crate" - cost = 1000 - access = ACCESS_JANITOR - contains = list(/obj/item/watertank/janitor) - crate_name = "janitor backpack crate" - crate_type = /obj/structure/closet/crate/secure - -/datum/supply_pack/misc/janitor/lightbulbs - name = "Replacement Lights" - cost = 1000 - contains = list(/obj/item/storage/box/lights/mixed, - /obj/item/storage/box/lights/mixed, - /obj/item/storage/box/lights/mixed) - crate_name = "replacement lights" - -/datum/supply_pack/misc/noslipfloor - name = "High-traction Floor Tiles" - cost = 2000 - contains = list(/obj/item/stack/tile/noslip/thirty) - crate_name = "high-traction floor tiles crate" - -/datum/supply_pack/misc/plasmaman - name = "Plasmaman Supply Kit" - cost = 2000 - contains = list(/obj/item/clothing/under/plasmaman, - /obj/item/clothing/under/plasmaman, - /obj/item/tank/internals/plasmaman/belt/full, - /obj/item/tank/internals/plasmaman/belt/full, - /obj/item/clothing/head/helmet/space/plasmaman, - /obj/item/clothing/head/helmet/space/plasmaman) - crate_name = "plasmaman supply kit" - -/datum/supply_pack/misc/costume - name = "Standard Costume Crate" - cost = 1000 - access = ACCESS_THEATRE - contains = list(/obj/item/storage/backpack/clown, - /obj/item/clothing/shoes/clown_shoes, - /obj/item/clothing/mask/gas/clown_hat, - /obj/item/clothing/under/rank/clown, - /obj/item/bikehorn, - /obj/item/clothing/under/rank/mime, - /obj/item/clothing/shoes/sneakers/black, - /obj/item/clothing/gloves/color/white, - /obj/item/clothing/mask/gas/mime, - /obj/item/clothing/head/beret, - /obj/item/clothing/suit/suspenders, - /obj/item/reagent_containers/food/drinks/bottle/bottleofnothing, - /obj/item/storage/backpack/mime) - crate_name = "standard costume crate" - crate_type = /obj/structure/closet/crate/secure - -/datum/supply_pack/misc/costume_original - name = "Original Costume Crate" - cost = 1000 - contains = list(/obj/item/clothing/head/snowman, - /obj/item/clothing/suit/snowman, - /obj/item/clothing/head/chicken, - /obj/item/clothing/suit/chickensuit, - /obj/item/clothing/mask/gas/monkeymask, - /obj/item/clothing/suit/monkeysuit, - /obj/item/clothing/head/cardborg, - /obj/item/clothing/suit/cardborg, - /obj/item/clothing/head/xenos, - /obj/item/clothing/suit/xenos, - /obj/item/clothing/suit/hooded/ian_costume, - /obj/item/clothing/suit/hooded/carp_costume, - /obj/item/clothing/suit/hooded/bee_costume) - crate_name = "original costume crate" - -/datum/supply_pack/misc/wizard - name = "Wizard Costume Crate" - cost = 2000 - contains = list(/obj/item/staff, - /obj/item/clothing/suit/wizrobe/fake, - /obj/item/clothing/shoes/sandal, - /obj/item/clothing/head/wizard/fake) - crate_name = "wizard costume crate" - -/datum/supply_pack/misc/randomised - name = "Collectable Hats Crate!" - cost = 20000 - var/num_contained = 3 //number of items picked to be contained in a randomised crate - contains = list(/obj/item/clothing/head/collectable/chef, - /obj/item/clothing/head/collectable/paper, - /obj/item/clothing/head/collectable/tophat, - /obj/item/clothing/head/collectable/captain, - /obj/item/clothing/head/collectable/beret, - /obj/item/clothing/head/collectable/welding, - /obj/item/clothing/head/collectable/flatcap, - /obj/item/clothing/head/collectable/pirate, - /obj/item/clothing/head/collectable/kitty, - /obj/item/clothing/head/collectable/rabbitears, - /obj/item/clothing/head/collectable/wizard, - /obj/item/clothing/head/collectable/hardhat, - /obj/item/clothing/head/collectable/HoS, - /obj/item/clothing/head/collectable/HoP, - /obj/item/clothing/head/collectable/thunderdome, - /obj/item/clothing/head/collectable/swat, - /obj/item/clothing/head/collectable/slime, - /obj/item/clothing/head/collectable/police, - /obj/item/clothing/head/collectable/slime, - /obj/item/clothing/head/collectable/xenom, - /obj/item/clothing/head/collectable/petehat) - crate_name = "collectable hats crate" - -/datum/supply_pack/misc/randomised/fill(obj/structure/closet/crate/C) - var/list/L = contains.Copy() - for(var/i in 1 to num_contained) - var/item = pick_n_take(L) - new item(C) - -/datum/supply_pack/misc/bigband - contains = list(/obj/item/device/instrument/violin, - /obj/item/device/instrument/guitar, - /obj/item/device/instrument/glockenspiel, - /obj/item/device/instrument/accordion, - /obj/item/device/instrument/saxophone, - /obj/item/device/instrument/trombone, - /obj/item/device/instrument/recorder, - /obj/item/device/instrument/harmonica, - /obj/structure/piano/unanchored) - name = "Big band instrument collection" - cost = 5000 - crate_name = "Big band musical instruments collection" - -/datum/supply_pack/misc/randomised/contraband - name = "Contraband Crate" - contraband = TRUE - cost = 3000 - num_contained = 5 - contains = list(/obj/item/poster/random_contraband, - /obj/item/storage/fancy/cigarettes/cigpack_shadyjims, - /obj/item/storage/fancy/cigarettes/cigpack_midori, - /obj/item/seeds/ambrosia/deus, - /obj/item/clothing/neck/necklace/dope) - crate_name = "crate" - -/datum/supply_pack/misc/randomised/toys - name = "Toy Crate" - cost = 5000 // or play the arcade machines ya lazy bum - // TODO make this actually just use the arcade machine loot list - num_contained = 5 - contains = list(/obj/item/toy/spinningtoy, - /obj/item/toy/sword, - /obj/item/toy/foamblade, - /obj/item/toy/talking/AI, - /obj/item/toy/talking/owl, - /obj/item/toy/talking/griffin, - /obj/item/toy/nuke, - /obj/item/toy/minimeteor, - /obj/item/toy/plush/carpplushie, - /obj/item/toy/plush/lizardplushie, - /obj/item/toy/plush/snakeplushie, - /obj/item/toy/plush/nukeplushie, - /obj/item/toy/plush/slimeplushie, - /obj/item/coin/antagtoken, - /obj/item/stack/tile/fakespace/loaded, - /obj/item/gun/ballistic/shotgun/toy/crossbow, - /obj/item/toy/redbutton, - /obj/item/toy/eightball, - /obj/item/vending_refill/donksoft) - crate_name = "toy crate" - -/datum/supply_pack/misc/autodrobe - name = "Autodrobe Supply Crate" - cost = 1500 - contains = list(/obj/item/vending_refill/autodrobe, - /obj/item/vending_refill/autodrobe) - crate_name = "autodrobe supply crate" - -/datum/supply_pack/misc/formalwear - name = "Formalwear Crate" - cost = 3000 //Lots of very expensive items. You gotta pay up to look good! - contains = list(/obj/item/clothing/under/blacktango, - /obj/item/clothing/under/assistantformal, - /obj/item/clothing/under/assistantformal, - /obj/item/clothing/under/lawyer/bluesuit, - /obj/item/clothing/suit/toggle/lawyer, - /obj/item/clothing/under/lawyer/purpsuit, - /obj/item/clothing/suit/toggle/lawyer/purple, - /obj/item/clothing/under/lawyer/blacksuit, - /obj/item/clothing/suit/toggle/lawyer/black, - /obj/item/clothing/accessory/waistcoat, - /obj/item/clothing/neck/tie/blue, - /obj/item/clothing/neck/tie/red, - /obj/item/clothing/neck/tie/black, - /obj/item/clothing/head/bowler, - /obj/item/clothing/head/fedora, - /obj/item/clothing/head/flatcap, - /obj/item/clothing/head/beret, - /obj/item/clothing/head/that, - /obj/item/clothing/shoes/laceup, - /obj/item/clothing/shoes/laceup, - /obj/item/clothing/shoes/laceup, - /obj/item/clothing/under/suit_jacket/charcoal, - /obj/item/clothing/under/suit_jacket/navy, - /obj/item/clothing/under/suit_jacket/burgundy, - /obj/item/clothing/under/suit_jacket/checkered, - /obj/item/clothing/under/suit_jacket/tan, - /obj/item/lipstick/random) - crate_name = "formalwear crate" - -/datum/supply_pack/misc/foamforce - name = "Foam Force Crate" - cost = 1000 - contains = list(/obj/item/gun/ballistic/shotgun/toy, - /obj/item/gun/ballistic/shotgun/toy, - /obj/item/gun/ballistic/shotgun/toy, - /obj/item/gun/ballistic/shotgun/toy, - /obj/item/gun/ballistic/shotgun/toy, - /obj/item/gun/ballistic/shotgun/toy, - /obj/item/gun/ballistic/shotgun/toy, - /obj/item/gun/ballistic/shotgun/toy) - crate_name = "foam force crate" - -/datum/supply_pack/misc/foamforce/bonus - name = "Foam Force Pistols Crate" - contraband = TRUE - cost = 4000 - contains = list(/obj/item/gun/ballistic/automatic/toy/pistol, - /obj/item/gun/ballistic/automatic/toy/pistol, - /obj/item/ammo_box/magazine/toy/pistol, - /obj/item/ammo_box/magazine/toy/pistol) - crate_name = "foam force crate" - -/datum/supply_pack/misc/artsupply - name = "Art Supplies" - cost = 800 - contains = list(/obj/structure/easel, - /obj/structure/easel, - /obj/item/canvas/nineteenXnineteen, - /obj/item/canvas/nineteenXnineteen, - /obj/item/canvas/twentythreeXnineteen, - /obj/item/canvas/twentythreeXnineteen, - /obj/item/canvas/twentythreeXtwentythree, - /obj/item/canvas/twentythreeXtwentythree, - /obj/item/toy/crayon/rainbow, - /obj/item/toy/crayon/rainbow) - crate_name = "art supply crate" - -/datum/supply_pack/misc/bsa - name = "Bluespace Artillery Parts" - cost = 15000 - special = TRUE - contains = list(/obj/item/circuitboard/machine/bsa/front, - /obj/item/circuitboard/machine/bsa/middle, - /obj/item/circuitboard/machine/bsa/back, - /obj/item/circuitboard/computer/bsa_control - ) - crate_name= "bluespace artillery parts crate" - -/datum/supply_pack/misc/dna_vault - name = "DNA Vault Parts" - cost = 12000 - special = TRUE - contains = list( - /obj/item/circuitboard/machine/dna_vault, - /obj/item/device/dna_probe, - /obj/item/device/dna_probe, - /obj/item/device/dna_probe, - /obj/item/device/dna_probe, - /obj/item/device/dna_probe - ) - crate_name= "dna vault parts crate" - -/datum/supply_pack/misc/dna_probes - name = "DNA Vault Samplers" - cost = 3000 - special = TRUE - contains = list(/obj/item/device/dna_probe, - /obj/item/device/dna_probe, - /obj/item/device/dna_probe, - /obj/item/device/dna_probe, - /obj/item/device/dna_probe - ) - crate_name= "dna samplers crate" - - -/datum/supply_pack/misc/shield_sat - name = "Shield Generator Satellite" - cost = 3000 - special = TRUE - contains = list( - /obj/machinery/satellite/meteor_shield, - /obj/machinery/satellite/meteor_shield, - /obj/machinery/satellite/meteor_shield - ) - crate_name= "shield sat crate" - - -/datum/supply_pack/misc/shield_sat_control - name = "Shield System Control Board" - cost = 5000 - special = TRUE - contains = list(/obj/item/circuitboard/computer/sat_control) - crate_name= "shield control board crate" - -/datum/supply_pack/misc/bicycle - name = "Bicycle" - cost = 1000000 - contains = list(/obj/vehicle/bicycle) - crate_name = "Bicycle Crate" - crate_type = /obj/structure/closet/crate/large +/datum/supply_pack + var/name = "Crate" + var/group = "" + var/hidden = FALSE + var/contraband = FALSE + var/cost = 700 // Minimum cost, or infinite points are possible. + var/access = FALSE + var/access_any = FALSE + var/list/contains = null + var/crate_name = "crate" + var/crate_type = /obj/structure/closet/crate + var/dangerous = FALSE // Should we message admins? + var/special = FALSE //Event/Station Goals/Admin enabled packs + var/special_enabled = FALSE + var/DropPodOnly = FALSE//only usable by the Bluespace Drop Pod via the express cargo console + +/datum/supply_pack/proc/generate(turf/T) + var/obj/structure/closet/crate/C = new crate_type(T) + C.name = crate_name + if(access) + C.req_access = list(access) + if(access_any) + C.req_one_access = access_any + + fill(C) + + return C + +/datum/supply_pack/proc/fill(obj/structure/closet/crate/C) + for(var/item in contains) + new item(C) + + +////////////////////////////////////////////////////////////////////////////// +//////////////////////////// Emergency /////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// + +/datum/supply_pack/emergency + group = "Emergency" + +/datum/supply_pack/emergency/spacesuit + name = "Space Suit Crate" + cost = 3000 + access = ACCESS_EVA + contains = list(/obj/item/clothing/suit/space, + /obj/item/clothing/suit/space, + /obj/item/clothing/head/helmet/space, + /obj/item/clothing/head/helmet/space, + /obj/item/clothing/mask/breath, + /obj/item/clothing/mask/breath) + crate_name = "space suit crate" + crate_type = /obj/structure/closet/crate/secure + +/datum/supply_pack/emergency/vehicle + name = "Biker Gang Kit" //TUNNEL SNAKES OWN THIS TOWN + cost = 2000 + contraband = TRUE + contains = list(/obj/vehicle/ridden/atv, + /obj/item/key, + /obj/item/clothing/suit/jacket/leather/overcoat, + /obj/item/clothing/gloves/color/black, + /obj/item/clothing/head/soft, + /obj/item/clothing/mask/bandana/skull)//so you can properly #cargoniabikergang + crate_name = "Biker Kit" + crate_type = /obj/structure/closet/crate/large + +/datum/supply_pack/emergency/equipment + name = "Emergency Equipment" + cost = 3500 + contains = list(/mob/living/simple_animal/bot/floorbot, + /mob/living/simple_animal/bot/floorbot, + /mob/living/simple_animal/bot/medbot, + /mob/living/simple_animal/bot/medbot, + /obj/item/tank/internals/air, + /obj/item/tank/internals/air, + /obj/item/tank/internals/air, + /obj/item/tank/internals/air, + /obj/item/tank/internals/air, + /obj/item/clothing/mask/gas, + /obj/item/clothing/mask/gas, + /obj/item/clothing/mask/gas, + /obj/item/clothing/mask/gas, + /obj/item/clothing/mask/gas) + crate_name = "emergency crate" + crate_type = /obj/structure/closet/crate/internals + +/datum/supply_pack/emergency/internals + name = "Internals Crate" + cost = 1000 + contains = list(/obj/item/clothing/mask/gas, + /obj/item/clothing/mask/gas, + /obj/item/clothing/mask/gas, + /obj/item/clothing/mask/breath, + /obj/item/clothing/mask/breath, + /obj/item/clothing/mask/breath, + /obj/item/tank/internals/emergency_oxygen, + /obj/item/tank/internals/emergency_oxygen, + /obj/item/tank/internals/emergency_oxygen, + /obj/item/tank/internals/air, + /obj/item/tank/internals/air, + /obj/item/tank/internals/air) + crate_name = "internals crate" + crate_type = /obj/structure/closet/crate/internals + +/datum/supply_pack/emergency/firefighting + name = "Firefighting Crate" + cost = 1000 + contains = list(/obj/item/clothing/suit/fire/firefighter, + /obj/item/clothing/suit/fire/firefighter, + /obj/item/clothing/mask/gas, + /obj/item/clothing/mask/gas, + /obj/item/device/flashlight, + /obj/item/device/flashlight, + /obj/item/tank/internals/oxygen/red, + /obj/item/tank/internals/oxygen/red, + /obj/item/extinguisher, + /obj/item/extinguisher, + /obj/item/clothing/head/hardhat/red, + /obj/item/clothing/head/hardhat/red) + crate_name = "firefighting crate" + +/datum/supply_pack/emergency/atmostank + name = "Firefighting Watertank" + cost = 1000 + access = ACCESS_ATMOSPHERICS + contains = list(/obj/item/watertank/atmos) + crate_name = "firefighting watertank crate" + crate_type = /obj/structure/closet/crate/secure + +/datum/supply_pack/emergency/radiation + name = "Radiation Protection Crate" + cost = 1000 + contains = list(/obj/item/clothing/head/radiation, + /obj/item/clothing/head/radiation, + /obj/item/clothing/suit/radiation, + /obj/item/clothing/suit/radiation, + /obj/item/device/geiger_counter, + /obj/item/device/geiger_counter, + /obj/item/reagent_containers/food/drinks/bottle/vodka, + /obj/item/reagent_containers/food/drinks/drinkingglass/shotglass, + /obj/item/reagent_containers/food/drinks/drinkingglass/shotglass) + crate_name = "radiation protection crate" + crate_type = /obj/structure/closet/crate/radiation + +/datum/supply_pack/emergency/weedcontrol + name = "Weed Control Crate" + cost = 1500 + access = ACCESS_HYDROPONICS + contains = list(/obj/item/scythe, + /obj/item/clothing/mask/gas, + /obj/item/grenade/chem_grenade/antiweed, + /obj/item/grenade/chem_grenade/antiweed) + crate_name = "weed control crate" + crate_type = /obj/structure/closet/crate/secure/hydroponics + +/datum/supply_pack/emergency/metalfoam + name = "Metal Foam Grenade Crate" + cost = 1000 + contains = list(/obj/item/storage/box/metalfoam) + crate_name = "metal foam grenade crate" + +/datum/supply_pack/emergency/droneshells + name = "Drone Shell Crate" + cost = 1000 + contains = list(/obj/item/drone_shell, + /obj/item/drone_shell, + /obj/item/drone_shell) + crate_name = "drone shell crate" + +/datum/supply_pack/emergency/specialops + name = "Special Ops Supplies" + hidden = TRUE + cost = 2000 + contains = list(/obj/item/storage/box/emps, + /obj/item/grenade/smokebomb, + /obj/item/grenade/smokebomb, + /obj/item/grenade/smokebomb, + /obj/item/pen/sleepy, + /obj/item/grenade/chem_grenade/incendiary) + crate_name = "emergency crate" + crate_type = /obj/structure/closet/crate/internals + +/datum/supply_pack/emergency/syndicate + name = "NULL_ENTRY" + hidden = TRUE + cost = 20000 + contains = list() + crate_name = "emergency crate" + crate_type = /obj/structure/closet/crate/internals + dangerous = TRUE + +/datum/supply_pack/emergency/syndicate/fill(obj/structure/closet/crate/C) + var/crate_value = 30 + var/list/uplink_items = get_uplink_items(SSticker.mode) + while(crate_value) + var/category = pick(uplink_items) + var/item = pick(uplink_items[category]) + var/datum/uplink_item/I = uplink_items[category][item] + + if(!I.surplus || prob(100 - I.surplus)) + continue + if(crate_value < I.cost) + continue + crate_value -= I.cost + new I.item(C) + +////////////////////////////////////////////////////////////////////////////// +//////////////////////////// Security //////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// + +/datum/supply_pack/security + group = "Security" + access = ACCESS_SECURITY + crate_type = /obj/structure/closet/crate/secure/gear + +/datum/supply_pack/security/supplies + name = "Security Supplies Crate" + cost = 1000 + contains = list(/obj/item/storage/box/flashbangs, + /obj/item/storage/box/teargas, + /obj/item/storage/box/flashes, + /obj/item/storage/box/handcuffs) + crate_name = "security supply crate" + +/datum/supply_pack/security/helmets + name = "Helmets Crate" + cost = 1000 + contains = list(/obj/item/clothing/head/helmet/sec, + /obj/item/clothing/head/helmet/sec, + /obj/item/clothing/head/helmet/sec) + crate_name = "helmet crate" + +/datum/supply_pack/security/armor + name = "Armor Crate" + cost = 1000 + contains = list(/obj/item/clothing/suit/armor/vest, + /obj/item/clothing/suit/armor/vest, + /obj/item/clothing/suit/armor/vest) + crate_name = "armor crate" + +/datum/supply_pack/security/baton + name = "Stun Batons Crate" + cost = 1000 + contains = list(/obj/item/melee/baton/loaded, + /obj/item/melee/baton/loaded, + /obj/item/melee/baton/loaded) + crate_name = "stun baton crate" + +/datum/supply_pack/security/wall_flash + name = "Wall-Mounted Flash Crate" + cost = 1000 + contains = list(/obj/item/storage/box/wall_flash, + /obj/item/storage/box/wall_flash, + /obj/item/storage/box/wall_flash, + /obj/item/storage/box/wall_flash) + crate_name = "wall-mounted flash crate" + +/datum/supply_pack/security/laser + name = "Lasers Crate" + cost = 2000 + contains = list(/obj/item/gun/energy/laser, + /obj/item/gun/energy/laser, + /obj/item/gun/energy/laser) + crate_name = "laser crate" + +/datum/supply_pack/security/taser + name = "Taser Crate" + cost = 3000 + contains = list(/obj/item/gun/energy/e_gun/advtaser, + /obj/item/gun/energy/e_gun/advtaser, + /obj/item/gun/energy/e_gun/advtaser) + crate_name = "taser crate" + +/datum/supply_pack/security/disabler + name = "Disabler Crate" + cost = 1500 + contains = list(/obj/item/gun/energy/disabler, + /obj/item/gun/energy/disabler, + /obj/item/gun/energy/disabler) + crate_name = "disabler crate" + +/datum/supply_pack/security/forensics + name = "Forensics Crate" + cost = 2000 + contains = list(/obj/item/device/detective_scanner, + /obj/item/storage/box/evidence, + /obj/item/device/camera, + /obj/item/device/taperecorder, + /obj/item/toy/crayon/white, + /obj/item/clothing/head/fedora/det_hat) + crate_name = "forensics crate" + +/datum/supply_pack/security/armory + access = ACCESS_ARMORY + crate_type = /obj/structure/closet/crate/secure/weapon + +/datum/supply_pack/security/armory/riothelmets + name = "Riot Helmets Crate" + cost = 1500 + contains = list(/obj/item/clothing/head/helmet/riot, + /obj/item/clothing/head/helmet/riot, + /obj/item/clothing/head/helmet/riot) + crate_name = "riot helmets crate" + +/datum/supply_pack/security/armory/riotarmor + name = "Riot Armor Crate" + cost = 1500 + contains = list(/obj/item/clothing/suit/armor/riot, + /obj/item/clothing/suit/armor/riot, + /obj/item/clothing/suit/armor/riot) + crate_name = "riot armor crate" + +/datum/supply_pack/security/armory/riotshields + name = "Riot Shields Crate" + cost = 2000 + contains = list(/obj/item/shield/riot, + /obj/item/shield/riot, + /obj/item/shield/riot) + crate_name = "riot shields crate" + +/datum/supply_pack/security/armory/bulletarmor + name = "Bulletproof Armor Crate" + cost = 1500 + contains = list(/obj/item/clothing/suit/armor/bulletproof, + /obj/item/clothing/suit/armor/bulletproof, + /obj/item/clothing/suit/armor/bulletproof) + crate_name = "bulletproof armor crate" + +/datum/supply_pack/security/armory/swat + name = "SWAT Crate" + cost = 6000 + contains = list(/obj/item/clothing/head/helmet/swat/nanotrasen, + /obj/item/clothing/head/helmet/swat/nanotrasen, + /obj/item/clothing/suit/space/swat, + /obj/item/clothing/suit/space/swat, + /obj/item/clothing/mask/gas/sechailer/swat, + /obj/item/clothing/mask/gas/sechailer/swat, + /obj/item/storage/belt/military/assault, + /obj/item/storage/belt/military/assault, + /obj/item/clothing/gloves/combat, + /obj/item/clothing/gloves/combat) + crate_name = "swat crate" + +/datum/supply_pack/security/armory/combatknives + name = "Combat Knives Crate" + cost = 3000 + contains = list(/obj/item/kitchen/knife/combat, + /obj/item/kitchen/knife/combat, + /obj/item/kitchen/knife/combat) + crate_name = "combat knife crate" + +/datum/supply_pack/security/armory/laserarmor + name = "Reflector Vest Crate" + cost = 2000 + contains = list(/obj/item/clothing/suit/armor/laserproof, + /obj/item/clothing/suit/armor/laserproof) + crate_name = "reflector vest crate" + crate_type = /obj/structure/closet/crate/secure/plasma + +/datum/supply_pack/security/armory/ballistic + name = "Combat Shotguns Crate" + cost = 8000 + contains = list(/obj/item/gun/ballistic/shotgun/automatic/combat, + /obj/item/gun/ballistic/shotgun/automatic/combat, + /obj/item/gun/ballistic/shotgun/automatic/combat, + /obj/item/storage/belt/bandolier, + /obj/item/storage/belt/bandolier, + /obj/item/storage/belt/bandolier) + crate_name = "combat shotguns crate" + +/datum/supply_pack/security/armory/energy + name = "Energy Guns Crate" + cost = 2500 + contains = list(/obj/item/gun/energy/e_gun, + /obj/item/gun/energy/e_gun) + crate_name = "energy gun crate" + crate_type = /obj/structure/closet/crate/secure/plasma + +/datum/supply_pack/security/armory/fire + name = "Incendiary Weapons Crate" + cost = 1500 + access = ACCESS_HEADS + contains = list(/obj/item/flamethrower/full, + /obj/item/tank/internals/plasma, + /obj/item/tank/internals/plasma, + /obj/item/tank/internals/plasma, + /obj/item/grenade/chem_grenade/incendiary, + /obj/item/grenade/chem_grenade/incendiary, + /obj/item/grenade/chem_grenade/incendiary) + crate_name = "incendiary weapons crate" + crate_type = /obj/structure/closet/crate/secure/plasma + dangerous = TRUE + +/datum/supply_pack/security/armory/wt550 + name = "WT-550 Auto Rifle Crate" + cost = 3500 + contains = list(/obj/item/gun/ballistic/automatic/wt550, + /obj/item/gun/ballistic/automatic/wt550) + crate_name = "auto rifle crate" + +/datum/supply_pack/security/armory/wt550ammo + name = "WT-550 Auto Rifle Ammo Crate" + cost = 3000 + contains = list(/obj/item/ammo_box/magazine/wt550m9, + /obj/item/ammo_box/magazine/wt550m9, + /obj/item/ammo_box/magazine/wt550m9, + /obj/item/ammo_box/magazine/wt550m9) + crate_name = "auto rifle ammo crate" + +/datum/supply_pack/security/armory/mindshield + name = "mindshield implants Crate" + cost = 4000 + contains = list(/obj/item/storage/lockbox/loyalty) + crate_name = "mindshield implant crate" + +/datum/supply_pack/security/armory/trackingimp + name = "Tracking Implants Crate" + cost = 2000 + contains = list(/obj/item/storage/box/trackimp) + crate_name = "tracking implant crate" + +/datum/supply_pack/security/armory/chemimp + name = "Chemical Implants Crate" + cost = 2000 + contains = list(/obj/item/storage/box/chemimp) + crate_name = "chemical implant crate" + +/datum/supply_pack/security/armory/exileimp + name = "Exile Implants Crate" + cost = 3000 + contains = list(/obj/item/storage/box/exileimp) + crate_name = "exile implant crate" + +/datum/supply_pack/security/securitybarriers + name = "Security Barriers Crate" + contains = list(/obj/item/grenade/barrier, + /obj/item/grenade/barrier, + /obj/item/grenade/barrier, + /obj/item/grenade/barrier) + cost = 2000 + crate_name = "security barriers crate" + +/datum/supply_pack/security/firingpins + name = "Standard Firing Pins Crate" + cost = 2000 + contains = list(/obj/item/storage/box/firingpins, + /obj/item/storage/box/firingpins) + crate_name = "firing pins crate" + +/datum/supply_pack/security/securityclothes + name = "Security Clothing Crate" + cost = 3000 + contains = list(/obj/item/clothing/under/rank/security/navyblue, + /obj/item/clothing/under/rank/security/navyblue, + /obj/item/clothing/suit/security/officer, + /obj/item/clothing/suit/security/officer, + /obj/item/clothing/head/beret/sec/navyofficer, + /obj/item/clothing/head/beret/sec/navyofficer, + /obj/item/clothing/under/rank/warden/navyblue, + /obj/item/clothing/suit/security/warden, + /obj/item/clothing/head/beret/sec/navywarden, + /obj/item/clothing/under/rank/head_of_security/navyblue, + /obj/item/clothing/suit/security/hos, + /obj/item/clothing/head/beret/sec/navyhos) + crate_name = "security clothing crate" + +/datum/supply_pack/security/justiceinbound + name = "Standard Justice Enforcer Crate" + cost = 6000 //justice comes at a price. An expensive, noisy price. + contraband = TRUE + contains = list(/obj/item/clothing/head/helmet/justice, + /obj/item/clothing/mask/gas/sechailer) + crate_name = "security clothing crate" + +////////////////////////////////////////////////////////////////////////////// +//////////////////////////// Engineering ///////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// + +/datum/supply_pack/engineering + group = "Engineering" + crate_type = /obj/structure/closet/crate/engineering + +/datum/supply_pack/engineering/fueltank + name = "Fuel Tank Crate" + cost = 800 + contains = list(/obj/structure/reagent_dispensers/fueltank) + crate_name = "fuel tank crate" + crate_type = /obj/structure/closet/crate/large + +/datum/supply_pack/engineering/oxygen + name = "Oxygen Canister" + cost = 1500 + contains = list(/obj/machinery/portable_atmospherics/canister/oxygen) + crate_name = "oxygen canister crate" + crate_type = /obj/structure/closet/crate/large + +/datum/supply_pack/engineering/nitrogen + name = "Nitrogen Canister" + cost = 2000 + contains = list(/obj/machinery/portable_atmospherics/canister/nitrogen) + crate_name = "nitrogen canister crate" + crate_type = /obj/structure/closet/crate/large + +/datum/supply_pack/engineering/carbon_dio + name = "Carbon Dioxide Canister" + cost = 3000 + contains = list(/obj/machinery/portable_atmospherics/canister/carbon_dioxide) + crate_name = "carbon dioxide canister crate" + crate_type = /obj/structure/closet/crate/large + +/datum/supply_pack/science/nitrous_oxide_canister + name = "Nitrous Oxide Canister" + cost = 3000 + access = ACCESS_ATMOSPHERICS + contains = list(/obj/machinery/portable_atmospherics/canister/nitrous_oxide) + crate_name = "nitrous oxide canister crate" + crate_type = /obj/structure/closet/crate/secure + +/datum/supply_pack/engineering/tools + name = "Toolbox Crate" + contains = list(/obj/item/storage/toolbox/electrical, + /obj/item/storage/toolbox/electrical, + /obj/item/storage/toolbox/mechanical, + /obj/item/storage/toolbox/electrical, + /obj/item/storage/toolbox/mechanical, + /obj/item/storage/toolbox/mechanical) + cost = 1000 + crate_name = "toolbox crate" + +/datum/supply_pack/engineering/powergamermitts + name = "Insulated Gloves Crate" + cost = 2000 //Made of pure-grade bullshittinium + contains = list(/obj/item/clothing/gloves/color/yellow, + /obj/item/clothing/gloves/color/yellow, + /obj/item/clothing/gloves/color/yellow) + crate_name = "insulated gloves crate" + +/datum/supply_pack/engineering/power + name = "Powercell Crate" + cost = 1000 + contains = list(/obj/item/stock_parts/cell/high, + /obj/item/stock_parts/cell/high, + /obj/item/stock_parts/cell/high) + crate_name = "electrical maintenance crate" + crate_type = /obj/structure/closet/crate/engineering/electrical + +/obj/item/stock_parts/cell/inducer_supply + maxcharge = 5000 + charge = 5000 + +/datum/supply_pack/engineering/inducers + name = "NT-75 Electromagnetic Power Inducers Crate" + cost = 2000 + contains = list(/obj/item/inducer/sci {cell_type = /obj/item/stock_parts/cell/inducer_supply; opened = 0}, /obj/item/inducer/sci {cell_type = /obj/item/stock_parts/cell/inducer_supply; opened = 0}) //FALSE doesn't work in modified type paths apparently. + crate_name = "inducer crate" + crate_type = /obj/structure/closet/crate/engineering/electrical + +/datum/supply_pack/engineering/engiequipment + name = "Engineering Gear Crate" + cost = 1300 + contains = list(/obj/item/storage/belt/utility, + /obj/item/storage/belt/utility, + /obj/item/storage/belt/utility, + /obj/item/clothing/suit/hazardvest, + /obj/item/clothing/suit/hazardvest, + /obj/item/clothing/suit/hazardvest, + /obj/item/clothing/head/welding, + /obj/item/clothing/head/welding, + /obj/item/clothing/head/welding, + /obj/item/clothing/head/hardhat, + /obj/item/clothing/head/hardhat, + /obj/item/clothing/head/hardhat, + /obj/item/clothing/glasses/meson/engine, + /obj/item/clothing/glasses/meson/engine) + crate_name = "engineering gear crate" + + +/datum/supply_pack/engineering/shieldgen + name = "Anti-breach Shield Projector Crate" + cost = 2500 + contains = list(/obj/machinery/shieldgen, + /obj/machinery/shieldgen) + crate_name = "anti-breach shield projector crate" + +/datum/supply_pack/engineering/grounding_rods + name = "Grounding Rod Crate" + cost = 1700 + contains = list(/obj/machinery/power/grounding_rod, + /obj/machinery/power/grounding_rod, + /obj/machinery/power/grounding_rod, + /obj/machinery/power/grounding_rod) + crate_name = "grounding rod crate" + crate_type = /obj/structure/closet/crate/engineering/electrical + +/datum/supply_pack/engineering/pacman + name = "P.A.C.M.A.N Generator Crate" + cost = 2500 + contains = list(/obj/machinery/power/port_gen/pacman) + crate_name = "PACMAN generator crate" + crate_type = /obj/structure/closet/crate/engineering/electrical + +/datum/supply_pack/engineering/solar + name = "Solar Panel Crate" + cost = 2000 + contains = list(/obj/item/solar_assembly, + /obj/item/solar_assembly, + /obj/item/solar_assembly, + /obj/item/solar_assembly, + /obj/item/solar_assembly, + /obj/item/solar_assembly, + /obj/item/solar_assembly, + /obj/item/solar_assembly, + /obj/item/solar_assembly, + /obj/item/solar_assembly, + /obj/item/solar_assembly, + /obj/item/solar_assembly, + /obj/item/solar_assembly, + /obj/item/solar_assembly, + /obj/item/solar_assembly, + /obj/item/solar_assembly, + /obj/item/solar_assembly, + /obj/item/solar_assembly, + /obj/item/solar_assembly, + /obj/item/solar_assembly, + /obj/item/solar_assembly, + /obj/item/circuitboard/computer/solar_control, + /obj/item/electronics/tracker, + /obj/item/paper/guides/jobs/engi/solars) + crate_name = "solar panel crate" + crate_type = /obj/structure/closet/crate/engineering/electrical + +/datum/supply_pack/engineering/engine + name = "Emitter Crate" + cost = 1500 + access = ACCESS_CE + contains = list(/obj/machinery/power/emitter, + /obj/machinery/power/emitter) + crate_name = "emitter crate" + crate_type = /obj/structure/closet/crate/secure/engineering + dangerous = TRUE + +/datum/supply_pack/engineering/engine/field_gen + name = "Field Generator Crate" + cost = 1500 + contains = list(/obj/machinery/field/generator, + /obj/machinery/field/generator) + crate_name = "field generator crate" + +/datum/supply_pack/engineering/engine/sing_gen + name = "Singularity Generator Crate" + cost = 5000 + contains = list(/obj/machinery/the_singularitygen) + crate_name = "singularity generator crate" + +/datum/supply_pack/engineering/engine/tesla_gen + name = "Tesla Generator Crate" + cost = 5000 + contains = list(/obj/machinery/the_singularitygen/tesla) + crate_name = "tesla generator crate" + +/datum/supply_pack/engineering/engine/collector + name = "Collector Crate" + cost = 2500 + contains = list(/obj/machinery/power/rad_collector, + /obj/machinery/power/rad_collector, + /obj/machinery/power/rad_collector) + crate_name = "collector crate" + +/datum/supply_pack/engineering/engine/PA + name = "Particle Accelerator Crate" + cost = 3000 + contains = list(/obj/structure/particle_accelerator/fuel_chamber, + /obj/machinery/particle_accelerator/control_box, + /obj/structure/particle_accelerator/particle_emitter/center, + /obj/structure/particle_accelerator/particle_emitter/left, + /obj/structure/particle_accelerator/particle_emitter/right, + /obj/structure/particle_accelerator/power_box, + /obj/structure/particle_accelerator/end_cap) + crate_name = "particle accelerator crate" + +/datum/supply_pack/engineering/engine/supermatter_shard + name = "Supermatter Shard Crate" + cost = 10000 + access = ACCESS_CE + contains = list(/obj/machinery/power/supermatter_shard) + crate_name = "supermatter shard crate" + crate_type = /obj/structure/closet/crate/secure/engineering + dangerous = TRUE + +/datum/supply_pack/engineering/engine/am_shielding + name = "Antimatter Shielding Crate" + cost = 2000 + contains = list(/obj/item/device/am_shielding_container, + /obj/item/device/am_shielding_container, + /obj/item/device/am_shielding_container, + /obj/item/device/am_shielding_container, + /obj/item/device/am_shielding_container, + /obj/item/device/am_shielding_container, + /obj/item/device/am_shielding_container, + /obj/item/device/am_shielding_container, + /obj/item/device/am_shielding_container, + /obj/item/device/am_shielding_container)//10 shields: 3x3 containment and a core + crate_name = "antimatter shielding crate" + +/datum/supply_pack/engineering/engine/am_core + name = "Antimatter Control Crate" + cost = 5000 + contains = list(/obj/machinery/power/am_control_unit) + crate_name = "antimatter control crate" + +/datum/supply_pack/engineering/engine/am_jar + name = "Antimatter Containment Jar Crate" + cost = 2000 + contains = list(/obj/item/am_containment, + /obj/item/am_containment) + crate_name = "antimatter jar crate" + +/datum/supply_pack/engineering/shuttle_engine + name = "Shuttle Engine Crate" + cost = 5000 + access = ACCESS_CE + contains = list(/obj/structure/shuttle/engine/propulsion/burst/cargo) + crate_name = "shuttle engine crate" + crate_type = /obj/structure/closet/crate/secure/engineering + special = TRUE + +////////////////////////////////////////////////////////////////////////////// +//////////////////////////// Medical ///////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// + +/datum/supply_pack/medical + group = "Medical" + crate_type = /obj/structure/closet/crate/medical + +/datum/supply_pack/medical/supplies + name = "Medical Supplies Crate" + cost = 2000 + contains = list(/obj/item/reagent_containers/glass/bottle/charcoal, + /obj/item/reagent_containers/glass/bottle/charcoal, + /obj/item/reagent_containers/glass/bottle/epinephrine, + /obj/item/reagent_containers/glass/bottle/epinephrine, + /obj/item/reagent_containers/glass/bottle/morphine, + /obj/item/reagent_containers/glass/bottle/morphine, + /obj/item/reagent_containers/glass/bottle/morphine, + /obj/item/reagent_containers/glass/bottle/morphine, + /obj/item/reagent_containers/glass/bottle/morphine, + /obj/item/reagent_containers/glass/bottle/morphine, + /obj/item/reagent_containers/glass/bottle/toxin, + /obj/item/reagent_containers/glass/bottle/toxin, + /obj/item/reagent_containers/glass/beaker/large, + /obj/item/reagent_containers/glass/beaker/large, + /obj/item/reagent_containers/pill/insulin, + /obj/item/reagent_containers/pill/insulin, + /obj/item/reagent_containers/pill/insulin, + /obj/item/reagent_containers/pill/insulin, + /obj/item/stack/medical/gauze, + /obj/item/storage/box/beakers, + /obj/item/storage/box/syringes, + /obj/item/storage/box/bodybags) + crate_name = "medical supplies crate" + +/datum/supply_pack/medical/firstaid + name = "First Aid Kit Crate" + cost = 1000 + contains = list(/obj/item/storage/firstaid/regular, + /obj/item/storage/firstaid/regular, + /obj/item/storage/firstaid/regular, + /obj/item/storage/firstaid/regular) + crate_name = "first aid kit crate" + +/datum/supply_pack/medical/firstaidbruises + name = "Bruise Treatment Kit Crate" + cost = 1000 + contains = list(/obj/item/storage/firstaid/brute, + /obj/item/storage/firstaid/brute, + /obj/item/storage/firstaid/brute) + crate_name = "brute treatment kit crate" + +/datum/supply_pack/medical/firstaidburns + name = "Burn Treatment Kit Crate" + cost = 1000 + contains = list(/obj/item/storage/firstaid/fire, + /obj/item/storage/firstaid/fire, + /obj/item/storage/firstaid/fire) + crate_name = "burn treatment kit crate" + +/datum/supply_pack/medical/firstaidtoxins + name = "Toxin Treatment Kit Crate" + cost = 1000 + contains = list(/obj/item/storage/firstaid/toxin, + /obj/item/storage/firstaid/toxin, + /obj/item/storage/firstaid/toxin) + crate_name = "toxin treatment kit crate" + +/datum/supply_pack/medical/firstaidoxygen + name = "Oxygen Deprivation Kit Crate" + cost = 1000 + contains = list(/obj/item/storage/firstaid/o2, + /obj/item/storage/firstaid/o2, + /obj/item/storage/firstaid/o2) + crate_name = "oxygen deprivation kit crate" + +/datum/supply_pack/medical/virus + name = "Virus Crate" + cost = 2500 + access = ACCESS_CMO + contains = list(/obj/item/reagent_containers/glass/bottle/flu_virion, + /obj/item/reagent_containers/glass/bottle/cold, + /obj/item/reagent_containers/glass/bottle/epiglottis_virion, + /obj/item/reagent_containers/glass/bottle/liver_enhance_virion, + /obj/item/reagent_containers/glass/bottle/fake_gbs, + /obj/item/reagent_containers/glass/bottle/magnitis, + /obj/item/reagent_containers/glass/bottle/pierrot_throat, + /obj/item/reagent_containers/glass/bottle/brainrot, + /obj/item/reagent_containers/glass/bottle/hallucigen_virion, + /obj/item/reagent_containers/glass/bottle/anxiety, + /obj/item/reagent_containers/glass/bottle/beesease, + /obj/item/storage/box/syringes, + /obj/item/storage/box/beakers, + /obj/item/reagent_containers/glass/bottle/mutagen) + crate_name = "virus crate" + crate_type = /obj/structure/closet/crate/secure/plasma + dangerous = TRUE + +/datum/supply_pack/medical/bloodpacks + name = "Blood Pack Variety Crate" + cost = 3500 + contains = list(/obj/item/reagent_containers/blood/empty, + /obj/item/reagent_containers/blood/empty, + /obj/item/reagent_containers/blood/APlus, + /obj/item/reagent_containers/blood/AMinus, + /obj/item/reagent_containers/blood/BPlus, + /obj/item/reagent_containers/blood/BMinus, + /obj/item/reagent_containers/blood/OPlus, + /obj/item/reagent_containers/blood/OMinus) + crate_name = "blood freezer" + crate_type = /obj/structure/closet/crate/freezer + +/datum/supply_pack/medical/iv_drip + name = "IV Drip Crate" + cost = 1000 + contains = list(/obj/machinery/iv_drip) + crate_name = "iv drip crate" + +/datum/supply_pack/medical/defibs + name = "Defibrillator Crate" + cost = 2500 + contains = list(/obj/item/defibrillator/loaded, + /obj/item/defibrillator/loaded) + crate_name = "defibrillator crate" + +/datum/supply_pack/medical/vending + name = "Medical Vending Crate" + cost = 2000 + contains = list(/obj/item/vending_refill/medical, + /obj/item/vending_refill/medical, + /obj/item/vending_refill/medical) + crate_name = "medical vending crate" + +////////////////////////////////////////////////////////////////////////////// +//////////////////////////// Science ///////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// + +/datum/supply_pack/science + group = "Science" + crate_type = /obj/structure/closet/crate/science + +/datum/supply_pack/science/robotics + name = "Robotics Assembly Crate" + cost = 1000 + access = ACCESS_ROBOTICS + contains = list(/obj/item/device/assembly/prox_sensor, + /obj/item/device/assembly/prox_sensor, + /obj/item/device/assembly/prox_sensor, + /obj/item/storage/toolbox/electrical, + /obj/item/storage/box/flashes, + /obj/item/stock_parts/cell/high, + /obj/item/stock_parts/cell/high) + crate_name = "robotics assembly crate" + crate_type = /obj/structure/closet/crate/secure/science + +/datum/supply_pack/science/robotics/mecha_ripley + name = "Circuit Crate (Ripley APLU)" + cost = 3000 + access = ACCESS_ROBOTICS + contains = list(/obj/item/book/manual/ripley_build_and_repair, + /obj/item/circuitboard/mecha/ripley/main, + /obj/item/circuitboard/mecha/ripley/peripherals) + crate_name = "\improper APLU Ripley circuit crate" + crate_type = /obj/structure/closet/crate/secure/science + +/datum/supply_pack/science/robotics/mecha_odysseus + name = "Circuit Crate (Odysseus)" + cost = 2500 + access = ACCESS_ROBOTICS + contains = list(/obj/item/circuitboard/mecha/odysseus/peripherals, + /obj/item/circuitboard/mecha/odysseus/main) + crate_name = "\improper Odysseus circuit crate" + crate_type = /obj/structure/closet/crate/secure/science + +/datum/supply_pack/science/plasma + name = "Plasma Assembly Crate" + cost = 1000 + access = ACCESS_TOX_STORAGE + contains = list(/obj/item/tank/internals/plasma, + /obj/item/tank/internals/plasma, + /obj/item/tank/internals/plasma, + /obj/item/device/assembly/igniter, + /obj/item/device/assembly/igniter, + /obj/item/device/assembly/igniter, + /obj/item/device/assembly/prox_sensor, + /obj/item/device/assembly/prox_sensor, + /obj/item/device/assembly/prox_sensor, + /obj/item/device/assembly/timer, + /obj/item/device/assembly/timer, + /obj/item/device/assembly/timer) + crate_name = "plasma assembly crate" + crate_type = /obj/structure/closet/crate/secure/plasma + +/datum/supply_pack/science/shieldwalls + name = "Shield Generators" + cost = 2000 + access = ACCESS_TELEPORTER + contains = list(/obj/machinery/shieldwallgen, + /obj/machinery/shieldwallgen, + /obj/machinery/shieldwallgen, + /obj/machinery/shieldwallgen) + crate_name = "shield generators crate" + crate_type = /obj/structure/closet/crate/secure/science + +/datum/supply_pack/science/transfer_valves + name = "Tank Transfer Valves Crate" + cost = 6000 + access = ACCESS_RD + contains = list(/obj/item/device/transfer_valve, + /obj/item/device/transfer_valve) + crate_name = "tank transfer valves crate" + crate_type = /obj/structure/closet/crate/secure/science + dangerous = TRUE + +/datum/supply_pack/science/tablets + name = "Tablet Crate" + cost = 5000 + contains = list(/obj/item/device/modular_computer/tablet/preset/cargo, + /obj/item/device/modular_computer/tablet/preset/cargo, + /obj/item/device/modular_computer/tablet/preset/cargo, + /obj/item/device/modular_computer/tablet/preset/cargo, + /obj/item/device/modular_computer/tablet/preset/cargo) + crate_name = "tablet crate" + +////////////////////////////////////////////////////////////////////////////// +//////////////////////////// Organic ///////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// + +/datum/supply_pack/organic + group = "Food & Livestock" + crate_type = /obj/structure/closet/crate/freezer + +/datum/supply_pack/organic/food + name = "Food Crate" + cost = 1000 + contains = list(/obj/item/reagent_containers/food/condiment/flour, + /obj/item/reagent_containers/food/condiment/rice, + /obj/item/reagent_containers/food/condiment/milk, + /obj/item/reagent_containers/food/condiment/soymilk, + /obj/item/reagent_containers/food/condiment/saltshaker, + /obj/item/reagent_containers/food/condiment/peppermill, + /obj/item/storage/fancy/egg_box, + /obj/item/reagent_containers/food/condiment/enzyme, + /obj/item/reagent_containers/food/condiment/sugar, + /obj/item/reagent_containers/food/snacks/meat/slab/monkey, + /obj/item/reagent_containers/food/snacks/grown/banana, + /obj/item/reagent_containers/food/snacks/grown/banana, + /obj/item/reagent_containers/food/snacks/grown/banana) + crate_name = "food crate" + +/datum/supply_pack/organic/pizza + name = "Pizza Crate" + cost = 6000 // Best prices this side of the galaxy. + contains = list(/obj/item/pizzabox/margherita, + /obj/item/pizzabox/mushroom, + /obj/item/pizzabox/meat, + /obj/item/pizzabox/vegetable) + crate_name = "pizza crate" + +/datum/supply_pack/organic/cream_piee + name = "High-yield Clown-grade Cream Pie Crate" + cost = 6000 + contains = list(/obj/item/storage/backpack/duffelbag/clown/cream_pie) + crate_name = "party equipment crate" + contraband = TRUE + access = ACCESS_THEATRE + crate_type = /obj/structure/closet/crate/secure + +/datum/supply_pack/organic/monkey + name = "Monkey Crate" + cost = 2000 + contains = list (/obj/item/storage/box/monkeycubes) + crate_name = "monkey crate" + +/datum/supply_pack/organic/party + name = "Party Equipment" + cost = 2000 + contains = list(/obj/item/storage/box/drinkingglasses, + /obj/item/reagent_containers/food/drinks/shaker, + /obj/item/reagent_containers/food/drinks/bottle/patron, + /obj/item/reagent_containers/food/drinks/bottle/goldschlager, + /obj/item/reagent_containers/food/drinks/ale, + /obj/item/reagent_containers/food/drinks/ale, + /obj/item/reagent_containers/food/drinks/beer, + /obj/item/reagent_containers/food/drinks/beer, + /obj/item/reagent_containers/food/drinks/beer, + /obj/item/reagent_containers/food/drinks/beer, + /obj/item/device/flashlight/glowstick, + /obj/item/device/flashlight/glowstick/red, + /obj/item/device/flashlight/glowstick/blue, + /obj/item/device/flashlight/glowstick/cyan, + /obj/item/device/flashlight/glowstick/orange, + /obj/item/device/flashlight/glowstick/yellow, + /obj/item/device/flashlight/glowstick/pink) + crate_name = "party equipment crate" + +/datum/supply_pack/organic/critter + crate_type = /obj/structure/closet/crate/critter + +/datum/supply_pack/organic/critter/cow + name = "Cow Crate" + cost = 3000 + contains = list(/mob/living/simple_animal/cow) + crate_name = "cow crate" + +/datum/supply_pack/organic/critter/goat + name = "Goat Crate" + cost = 2500 + contains = list(/mob/living/simple_animal/hostile/retaliate/goat) + crate_name = "goat crate" + +/datum/supply_pack/organic/critter/chick + name = "Chicken Crate" + cost = 2000 + contains = list( /mob/living/simple_animal/chick) + crate_name = "chicken crate" + +/datum/supply_pack/organic/critter/corgi + name = "Corgi Crate" + cost = 5000 + contains = list(/mob/living/simple_animal/pet/dog/corgi, + /obj/item/clothing/neck/petcollar) + crate_name = "corgi crate" + +/datum/supply_pack/organic/critter/corgi/generate() + . = ..() + if(prob(50)) + var/mob/living/simple_animal/pet/dog/corgi/D = locate() in . + qdel(D) + new /mob/living/simple_animal/pet/dog/corgi/Lisa(.) + +/datum/supply_pack/organic/critter/cat + name = "Cat Crate" + cost = 5000 //Cats are worth as much as corgis. + contains = list(/mob/living/simple_animal/pet/cat, + /obj/item/clothing/neck/petcollar, + /obj/item/toy/cattoy) + crate_name = "cat crate" + +/datum/supply_pack/organic/critter/cat/generate() + . = ..() + if(prob(50)) + var/mob/living/simple_animal/pet/cat/C = locate() in . + qdel(C) + new /mob/living/simple_animal/pet/cat/Proc(.) + +/datum/supply_pack/organic/critter/pug + name = "Pug Crate" + cost = 5000 + contains = list(/mob/living/simple_animal/pet/dog/pug, + /obj/item/clothing/neck/petcollar) + crate_name = "pug crate" + +/datum/supply_pack/organic/critter/fox + name = "Fox Crate" + cost = 5000 + contains = list(/mob/living/simple_animal/pet/fox, + /obj/item/clothing/neck/petcollar) + crate_name = "fox crate" + +/datum/supply_pack/organic/critter/butterfly + name = "Butterflies Crate" + contraband = TRUE + cost = 5000 + contains = list(/mob/living/simple_animal/butterfly) + crate_name = "entomology samples crate" + +/datum/supply_pack/organic/critter/butterfly/generate() + . = ..() + for(var/i in 1 to 49) + new /mob/living/simple_animal/butterfly(.) + +/datum/supply_pack/organic/hydroponics + name = "Hydroponics Crate" + cost = 1500 + contains = list(/obj/item/reagent_containers/spray/plantbgone, + /obj/item/reagent_containers/spray/plantbgone, + /obj/item/reagent_containers/glass/bottle/ammonia, + /obj/item/reagent_containers/glass/bottle/ammonia, + /obj/item/hatchet, + /obj/item/cultivator, + /obj/item/device/plant_analyzer, + /obj/item/clothing/gloves/botanic_leather, + /obj/item/clothing/suit/apron) + crate_name = "hydroponics crate" + crate_type = /obj/structure/closet/crate/hydroponics + +/datum/supply_pack/organic/hydroponics/hydrotank + name = "Hydroponics Backpack Crate" + cost = 1000 + access = ACCESS_HYDROPONICS + contains = list(/obj/item/watertank) + crate_name = "hydroponics backpack crate" + crate_type = /obj/structure/closet/crate/secure + +/datum/supply_pack/organic/potted_plants + name = "Potted Plants Crate" + cost = 700 + contains = list(/obj/item/twohanded/required/kirbyplants/random, + /obj/item/twohanded/required/kirbyplants/random, + /obj/item/twohanded/required/kirbyplants/random, + /obj/item/twohanded/required/kirbyplants/random, + /obj/item/twohanded/required/kirbyplants/random) + crate_name = "potted plants crate" + crate_type = /obj/structure/closet/crate/hydroponics + +/datum/supply_pack/organic/hydroponics/seeds + name = "Seeds Crate" + cost = 1000 + contains = list(/obj/item/seeds/chili, + /obj/item/seeds/berry, + /obj/item/seeds/corn, + /obj/item/seeds/eggplant, + /obj/item/seeds/tomato, + /obj/item/seeds/soya, + /obj/item/seeds/wheat, + /obj/item/seeds/wheat/rice, + /obj/item/seeds/carrot, + /obj/item/seeds/sunflower, + /obj/item/seeds/chanter, + /obj/item/seeds/potato, + /obj/item/seeds/sugarcane) + crate_name = "seeds crate" + +/datum/supply_pack/organic/hydroponics/exoticseeds + name = "Exotic Seeds Crate" + cost = 1500 + contains = list(/obj/item/seeds/nettle, + /obj/item/seeds/replicapod, + /obj/item/seeds/replicapod, + /obj/item/seeds/replicapod, + /obj/item/seeds/plump, + /obj/item/seeds/liberty, + /obj/item/seeds/amanita, + /obj/item/seeds/reishi, + /obj/item/seeds/banana, + /obj/item/seeds/eggplant/eggy, + /obj/item/seeds/random, + /obj/item/seeds/random) + crate_name = "exotic seeds crate" + +/datum/supply_pack/organic/hydroponics/beekeeping_fullkit + name = "Beekeeping Starter Crate" + cost = 1500 + contains = list(/obj/structure/beebox, + /obj/item/honey_frame, + /obj/item/honey_frame, + /obj/item/honey_frame, + /obj/item/queen_bee/bought, + /obj/item/clothing/head/beekeeper_head, + /obj/item/clothing/suit/beekeeper_suit, + /obj/item/melee/flyswatter) + crate_name = "beekeeping starter crate" + +/datum/supply_pack/organic/hydroponics/beekeeping_suits + name = "Beekeeper Suit Crate" + cost = 1000 + contains = list(/obj/item/clothing/head/beekeeper_head, + /obj/item/clothing/suit/beekeeper_suit, + /obj/item/clothing/head/beekeeper_head, + /obj/item/clothing/suit/beekeeper_suit) + crate_name = "beekeeper suits" + +/datum/supply_pack/organic/vending + name = "Bartending Supply Crate" + cost = 2000 + contains = list(/obj/item/vending_refill/boozeomat, + /obj/item/vending_refill/boozeomat, + /obj/item/vending_refill/boozeomat, + /obj/item/vending_refill/coffee, + /obj/item/vending_refill/coffee, + /obj/item/vending_refill/coffee) + crate_name = "bartending supply crate" + +/datum/supply_pack/organic/vending/snack + name = "Snack Supply Crate" + cost = 1500 + contains = list(/obj/item/vending_refill/snack, + /obj/item/vending_refill/snack, + /obj/item/vending_refill/snack) + crate_name = "snacks supply crate" + +/datum/supply_pack/organic/vending/cola + name = "Softdrinks Supply Crate" + cost = 1500 + contains = list(/obj/item/vending_refill/cola, + /obj/item/vending_refill/cola, + /obj/item/vending_refill/cola) + crate_name = "soft drinks supply crate" + +/datum/supply_pack/organic/vending/cigarette + name = "Cigarette Supply Crate" + cost = 1500 + contains = list(/obj/item/vending_refill/cigarette, + /obj/item/vending_refill/cigarette, + /obj/item/vending_refill/cigarette) + crate_name = "cigarette supply crate" + +/datum/supply_pack/organic/vending/games + name = "Games Supply Crate" + cost = 1000 + contains = list(/obj/item/vending_refill/games, + /obj/item/vending_refill/games, + /obj/item/vending_refill/games) + crate_name = "games supply crate" + +////////////////////////////////////////////////////////////////////////////// +//////////////////////////// Materials /////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// + +/datum/supply_pack/materials + group = "Raw Materials" + +/datum/supply_pack/materials/metal50 + name = "50 Metal Sheets" + cost = 1000 + contains = list(/obj/item/stack/sheet/metal/fifty) + crate_name = "metal sheets crate" + +/datum/supply_pack/materials/plasteel20 + name = "20 Plasteel Sheets" + cost = 7500 + contains = list(/obj/item/stack/sheet/plasteel/twenty) + crate_name = "plasteel sheets crate" + +/datum/supply_pack/materials/plasteel50 + name = "50 Plasteel Sheets" + cost = 16500 + contains = list(/obj/item/stack/sheet/plasteel/fifty) + crate_name = "plasteel sheets crate" + +/datum/supply_pack/materials/glass50 + name = "50 Glass Sheets" + cost = 1000 + contains = list(/obj/item/stack/sheet/glass/fifty) + crate_name = "glass sheets crate" + +/datum/supply_pack/materials/wood50 + name = "50 Wood Planks" + cost = 2000 + contains = list(/obj/item/stack/sheet/mineral/wood/fifty) + crate_name = "wood planks crate" + +/datum/supply_pack/materials/cardboard50 + name = "50 Cardboard Sheets" + cost = 1000 + contains = list(/obj/item/stack/sheet/cardboard/fifty) + crate_name = "cardboard sheets crate" + +/datum/supply_pack/materials/plastic50 + name = "50 Plastic Sheets" + cost = 1000 + contains = list(/obj/item/stack/sheet/plastic/fifty) + crate_name = "plastic sheets crate" + +/datum/supply_pack/materials/sandstone30 + name = "30 Sandstone Blocks" + cost = 1000 + contains = list(/obj/item/stack/sheet/mineral/sandstone/thirty) + crate_name = "sandstone blocks crate" + +////////////////////////////////////////////////////////////////////////////// +//////////////////////////// Miscellaneous /////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// + +/datum/supply_pack/misc + group = "Miscellaneous Supplies" + +/datum/supply_pack/misc/minerkit + name = "Shaft Miner Starter Kit" + cost = 2500 + access = ACCESS_QM + contains = list(/obj/item/pickaxe/mini, + /obj/item/clothing/glasses/meson, + /obj/item/device/t_scanner/adv_mining_scanner/lesser, + /obj/item/device/radio/headset/headset_cargo/mining, + /obj/item/storage/bag/ore, + /obj/item/clothing/suit/hooded/explorer, + /obj/item/clothing/mask/gas/explorer) + crate_name = "shaft miner starter kit" + crate_type = /obj/structure/closet/crate/secure + +/datum/supply_pack/misc/mule + name = "MULEbot Crate" + cost = 2000 + contains = list(/mob/living/simple_animal/bot/mulebot) + crate_name = "\improper MULEbot Crate" + crate_type = /obj/structure/closet/crate/large + +/datum/supply_pack/misc/conveyor + name = "Conveyor Assembly Crate" + cost = 1500 + contains = list(/obj/item/conveyor_construct, + /obj/item/conveyor_construct, + /obj/item/conveyor_construct, + /obj/item/conveyor_construct, + /obj/item/conveyor_construct, + /obj/item/conveyor_construct, + /obj/item/conveyor_switch_construct, + /obj/item/paper/guides/conveyor) + crate_name = "conveyor assembly crate" + +/datum/supply_pack/misc/watertank + name = "Water Tank Crate" + cost = 600 + contains = list(/obj/structure/reagent_dispensers/watertank) + crate_name = "water tank crate" + crate_type = /obj/structure/closet/crate/large + +/datum/supply_pack/misc/hightank + name = "High-Capacity Water Tank Crate" + cost = 1200 + contains = list(/obj/structure/reagent_dispensers/watertank/high) + crate_name = "high-capacity water tank crate" + crate_type = /obj/structure/closet/crate/large + +/datum/supply_pack/misc/water_vapor + name = "Water Vapor Canister" + cost = 2500 + contains = list(/obj/machinery/portable_atmospherics/canister/water_vapor) + crate_name = "water vapor canister crate" + crate_type = /obj/structure/closet/crate/large + +/datum/supply_pack/misc/lasertag + name = "Laser Tag Crate" + cost = 1500 + contains = list(/obj/item/gun/energy/laser/redtag, + /obj/item/gun/energy/laser/redtag, + /obj/item/gun/energy/laser/redtag, + /obj/item/gun/energy/laser/bluetag, + /obj/item/gun/energy/laser/bluetag, + /obj/item/gun/energy/laser/bluetag, + /obj/item/clothing/suit/redtag, + /obj/item/clothing/suit/redtag, + /obj/item/clothing/suit/redtag, + /obj/item/clothing/suit/bluetag, + /obj/item/clothing/suit/bluetag, + /obj/item/clothing/suit/bluetag, + /obj/item/clothing/head/helmet/redtaghelm, + /obj/item/clothing/head/helmet/redtaghelm, + /obj/item/clothing/head/helmet/redtaghelm, + /obj/item/clothing/head/helmet/bluetaghelm, + /obj/item/clothing/head/helmet/bluetaghelm, + /obj/item/clothing/head/helmet/bluetaghelm) + crate_name = "laser tag crate" + +/datum/supply_pack/misc/lasertag/pins + name = "Laser Tag Firing Pins Crate" + cost = 3000 + contraband = TRUE + contains = list(/obj/item/storage/box/lasertagpins) + crate_name = "laser tag crate" + +/datum/supply_pack/misc/clownpin + name = "Hilarious Firing Pin Crate" + cost = 5000 + contraband = TRUE + contains = list(/obj/item/device/firing_pin/clown) + // It's /technically/ a toy. For the clown, at least. + crate_name = "toy crate" + +/datum/supply_pack/misc/religious_supplies + name = "Religious Supplies Crate" + cost = 4000 // it costs so much because the Space Church is ran by Space Jews + contains = list(/obj/item/reagent_containers/food/drinks/bottle/holywater, + /obj/item/reagent_containers/food/drinks/bottle/holywater, + /obj/item/storage/book/bible/booze, + /obj/item/storage/book/bible/booze, + /obj/item/clothing/suit/hooded/chaplain_hoodie, + /obj/item/clothing/suit/hooded/chaplain_hoodie, + /obj/item/clothing/under/burial, + /obj/item/clothing/under/burial) + crate_name = "religious supplies crate" + +/datum/supply_pack/misc/book_crate + name = "Book Crate" + cost = 1500 + contains = list(/obj/item/book/codex_gigas, + /obj/item/book/manual/random/, + /obj/item/book/manual/random/, + /obj/item/book/manual/random/, + /obj/item/book/random/triple) + +/datum/supply_pack/misc/paper + name = "Bureaucracy Crate" + cost = 1500 + contains = list(/obj/structure/filingcabinet/chestdrawer/wheeled, + /obj/item/device/camera_film, + /obj/item/hand_labeler, + /obj/item/hand_labeler_refill, + /obj/item/hand_labeler_refill, + /obj/item/paper_bin, + /obj/item/pen/fourcolor, + /obj/item/pen/fourcolor, + /obj/item/pen, + /obj/item/pen/fountain, + /obj/item/pen/blue, + /obj/item/pen/red, + /obj/item/folder/blue, + /obj/item/folder/red, + /obj/item/folder/yellow, + /obj/item/clipboard, + /obj/item/clipboard, + /obj/item/stamp, + /obj/item/stamp/denied) + crate_name = "bureaucracy crate" + +/datum/supply_pack/misc/fountainpens + name = "Calligraphy Crate" + cost = 700 + contains = list(/obj/item/storage/box/fountainpens) + crate_type = /obj/structure/closet/crate/wooden + +/datum/supply_pack/misc/toner + name = "Toner Crate" + cost = 1000 + contains = list(/obj/item/device/toner, + /obj/item/device/toner, + /obj/item/device/toner, + /obj/item/device/toner, + /obj/item/device/toner, + /obj/item/device/toner) + crate_name = "toner crate" + +/datum/supply_pack/misc/janitor + name = "Janitorial Supplies Crate" + cost = 1000 + contains = list(/obj/item/reagent_containers/glass/bucket, + /obj/item/reagent_containers/glass/bucket, + /obj/item/reagent_containers/glass/bucket, + /obj/item/mop, + /obj/item/caution, + /obj/item/caution, + /obj/item/caution, + /obj/item/storage/bag/trash, + /obj/item/reagent_containers/spray/cleaner, + /obj/item/reagent_containers/glass/rag, + /obj/item/grenade/chem_grenade/cleaner, + /obj/item/grenade/chem_grenade/cleaner, + /obj/item/grenade/chem_grenade/cleaner) + crate_name = "janitorial supplies crate" + +/datum/supply_pack/misc/janitor/janicart + name = "Janitorial Cart and Galoshes Crate" + cost = 2000 + contains = list(/obj/structure/janitorialcart, + /obj/item/clothing/shoes/galoshes) + crate_name = "janitorial cart crate" + crate_type = /obj/structure/closet/crate/large + +/datum/supply_pack/misc/janitor/janitank + name = "Janitor Backpack Crate" + cost = 1000 + access = ACCESS_JANITOR + contains = list(/obj/item/watertank/janitor) + crate_name = "janitor backpack crate" + crate_type = /obj/structure/closet/crate/secure + +/datum/supply_pack/misc/janitor/lightbulbs + name = "Replacement Lights" + cost = 1000 + contains = list(/obj/item/storage/box/lights/mixed, + /obj/item/storage/box/lights/mixed, + /obj/item/storage/box/lights/mixed) + crate_name = "replacement lights" + +/datum/supply_pack/misc/noslipfloor + name = "High-traction Floor Tiles" + cost = 2000 + contains = list(/obj/item/stack/tile/noslip/thirty) + crate_name = "high-traction floor tiles crate" + +/datum/supply_pack/misc/plasmaman + name = "Plasmaman Supply Kit" + cost = 2000 + contains = list(/obj/item/clothing/under/plasmaman, + /obj/item/clothing/under/plasmaman, + /obj/item/tank/internals/plasmaman/belt/full, + /obj/item/tank/internals/plasmaman/belt/full, + /obj/item/clothing/head/helmet/space/plasmaman, + /obj/item/clothing/head/helmet/space/plasmaman) + crate_name = "plasmaman supply kit" + +/datum/supply_pack/misc/costume + name = "Standard Costume Crate" + cost = 1000 + access = ACCESS_THEATRE + contains = list(/obj/item/storage/backpack/clown, + /obj/item/clothing/shoes/clown_shoes, + /obj/item/clothing/mask/gas/clown_hat, + /obj/item/clothing/under/rank/clown, + /obj/item/bikehorn, + /obj/item/clothing/under/rank/mime, + /obj/item/clothing/shoes/sneakers/black, + /obj/item/clothing/gloves/color/white, + /obj/item/clothing/mask/gas/mime, + /obj/item/clothing/head/beret, + /obj/item/clothing/suit/suspenders, + /obj/item/reagent_containers/food/drinks/bottle/bottleofnothing, + /obj/item/storage/backpack/mime) + crate_name = "standard costume crate" + crate_type = /obj/structure/closet/crate/secure + +/datum/supply_pack/misc/costume_original + name = "Original Costume Crate" + cost = 1000 + contains = list(/obj/item/clothing/head/snowman, + /obj/item/clothing/suit/snowman, + /obj/item/clothing/head/chicken, + /obj/item/clothing/suit/chickensuit, + /obj/item/clothing/mask/gas/monkeymask, + /obj/item/clothing/suit/monkeysuit, + /obj/item/clothing/head/cardborg, + /obj/item/clothing/suit/cardborg, + /obj/item/clothing/head/xenos, + /obj/item/clothing/suit/xenos, + /obj/item/clothing/suit/hooded/ian_costume, + /obj/item/clothing/suit/hooded/carp_costume, + /obj/item/clothing/suit/hooded/bee_costume) + crate_name = "original costume crate" + +/datum/supply_pack/misc/wizard + name = "Wizard Costume Crate" + cost = 2000 + contains = list(/obj/item/staff, + /obj/item/clothing/suit/wizrobe/fake, + /obj/item/clothing/shoes/sandal, + /obj/item/clothing/head/wizard/fake) + crate_name = "wizard costume crate" + +/datum/supply_pack/misc/randomised + name = "Collectable Hats Crate!" + cost = 20000 + var/num_contained = 3 //number of items picked to be contained in a randomised crate + contains = list(/obj/item/clothing/head/collectable/chef, + /obj/item/clothing/head/collectable/paper, + /obj/item/clothing/head/collectable/tophat, + /obj/item/clothing/head/collectable/captain, + /obj/item/clothing/head/collectable/beret, + /obj/item/clothing/head/collectable/welding, + /obj/item/clothing/head/collectable/flatcap, + /obj/item/clothing/head/collectable/pirate, + /obj/item/clothing/head/collectable/kitty, + /obj/item/clothing/head/collectable/rabbitears, + /obj/item/clothing/head/collectable/wizard, + /obj/item/clothing/head/collectable/hardhat, + /obj/item/clothing/head/collectable/HoS, + /obj/item/clothing/head/collectable/HoP, + /obj/item/clothing/head/collectable/thunderdome, + /obj/item/clothing/head/collectable/swat, + /obj/item/clothing/head/collectable/slime, + /obj/item/clothing/head/collectable/police, + /obj/item/clothing/head/collectable/slime, + /obj/item/clothing/head/collectable/xenom, + /obj/item/clothing/head/collectable/petehat) + crate_name = "collectable hats crate" + +/datum/supply_pack/misc/randomised/fill(obj/structure/closet/crate/C) + var/list/L = contains.Copy() + for(var/i in 1 to num_contained) + var/item = pick_n_take(L) + new item(C) + +/datum/supply_pack/misc/bigband + contains = list(/obj/item/device/instrument/violin, + /obj/item/device/instrument/guitar, + /obj/item/device/instrument/glockenspiel, + /obj/item/device/instrument/accordion, + /obj/item/device/instrument/saxophone, + /obj/item/device/instrument/trombone, + /obj/item/device/instrument/recorder, + /obj/item/device/instrument/harmonica, + /obj/structure/piano/unanchored) + name = "Big band instrument collection" + cost = 5000 + crate_name = "Big band musical instruments collection" + +/datum/supply_pack/misc/randomised/contraband + name = "Contraband Crate" + contraband = TRUE + cost = 3000 + num_contained = 5 + contains = list(/obj/item/poster/random_contraband, + /obj/item/storage/fancy/cigarettes/cigpack_shadyjims, + /obj/item/storage/fancy/cigarettes/cigpack_midori, + /obj/item/seeds/ambrosia/deus, + /obj/item/clothing/neck/necklace/dope) + crate_name = "crate" + +/datum/supply_pack/misc/randomised/toys + name = "Toy Crate" + cost = 5000 // or play the arcade machines ya lazy bum + // TODO make this actually just use the arcade machine loot list + num_contained = 5 + contains = list(/obj/item/toy/spinningtoy, + /obj/item/toy/sword, + /obj/item/toy/foamblade, + /obj/item/toy/talking/AI, + /obj/item/toy/talking/owl, + /obj/item/toy/talking/griffin, + /obj/item/toy/nuke, + /obj/item/toy/minimeteor, + /obj/item/toy/plush/carpplushie, + /obj/item/toy/plush/lizardplushie, + /obj/item/toy/plush/snakeplushie, + /obj/item/toy/plush/nukeplushie, + /obj/item/toy/plush/slimeplushie, + /obj/item/coin/antagtoken, + /obj/item/stack/tile/fakespace/loaded, + /obj/item/gun/ballistic/shotgun/toy/crossbow, + /obj/item/toy/redbutton, + /obj/item/toy/eightball, + /obj/item/vending_refill/donksoft) + crate_name = "toy crate" + +/datum/supply_pack/misc/autodrobe + name = "Autodrobe Supply Crate" + cost = 1500 + contains = list(/obj/item/vending_refill/autodrobe, + /obj/item/vending_refill/autodrobe) + crate_name = "autodrobe supply crate" + +/datum/supply_pack/misc/formalwear + name = "Formalwear Crate" + cost = 3000 //Lots of very expensive items. You gotta pay up to look good! + contains = list(/obj/item/clothing/under/blacktango, + /obj/item/clothing/under/assistantformal, + /obj/item/clothing/under/assistantformal, + /obj/item/clothing/under/lawyer/bluesuit, + /obj/item/clothing/suit/toggle/lawyer, + /obj/item/clothing/under/lawyer/purpsuit, + /obj/item/clothing/suit/toggle/lawyer/purple, + /obj/item/clothing/under/lawyer/blacksuit, + /obj/item/clothing/suit/toggle/lawyer/black, + /obj/item/clothing/accessory/waistcoat, + /obj/item/clothing/neck/tie/blue, + /obj/item/clothing/neck/tie/red, + /obj/item/clothing/neck/tie/black, + /obj/item/clothing/head/bowler, + /obj/item/clothing/head/fedora, + /obj/item/clothing/head/flatcap, + /obj/item/clothing/head/beret, + /obj/item/clothing/head/that, + /obj/item/clothing/shoes/laceup, + /obj/item/clothing/shoes/laceup, + /obj/item/clothing/shoes/laceup, + /obj/item/clothing/under/suit_jacket/charcoal, + /obj/item/clothing/under/suit_jacket/navy, + /obj/item/clothing/under/suit_jacket/burgundy, + /obj/item/clothing/under/suit_jacket/checkered, + /obj/item/clothing/under/suit_jacket/tan, + /obj/item/lipstick/random) + crate_name = "formalwear crate" + +/datum/supply_pack/misc/foamforce + name = "Foam Force Crate" + cost = 1000 + contains = list(/obj/item/gun/ballistic/shotgun/toy, + /obj/item/gun/ballistic/shotgun/toy, + /obj/item/gun/ballistic/shotgun/toy, + /obj/item/gun/ballistic/shotgun/toy, + /obj/item/gun/ballistic/shotgun/toy, + /obj/item/gun/ballistic/shotgun/toy, + /obj/item/gun/ballistic/shotgun/toy, + /obj/item/gun/ballistic/shotgun/toy) + crate_name = "foam force crate" + +/datum/supply_pack/misc/foamforce/bonus + name = "Foam Force Pistols Crate" + contraband = TRUE + cost = 4000 + contains = list(/obj/item/gun/ballistic/automatic/toy/pistol, + /obj/item/gun/ballistic/automatic/toy/pistol, + /obj/item/ammo_box/magazine/toy/pistol, + /obj/item/ammo_box/magazine/toy/pistol) + crate_name = "foam force crate" + +/datum/supply_pack/misc/artsupply + name = "Art Supplies" + cost = 800 + contains = list(/obj/structure/easel, + /obj/structure/easel, + /obj/item/canvas/nineteenXnineteen, + /obj/item/canvas/nineteenXnineteen, + /obj/item/canvas/twentythreeXnineteen, + /obj/item/canvas/twentythreeXnineteen, + /obj/item/canvas/twentythreeXtwentythree, + /obj/item/canvas/twentythreeXtwentythree, + /obj/item/toy/crayon/rainbow, + /obj/item/toy/crayon/rainbow) + crate_name = "art supply crate" + +/datum/supply_pack/misc/bsa + name = "Bluespace Artillery Parts" + cost = 15000 + special = TRUE + contains = list(/obj/item/circuitboard/machine/bsa/front, + /obj/item/circuitboard/machine/bsa/middle, + /obj/item/circuitboard/machine/bsa/back, + /obj/item/circuitboard/computer/bsa_control + ) + crate_name= "bluespace artillery parts crate" + +/datum/supply_pack/misc/dna_vault + name = "DNA Vault Parts" + cost = 12000 + special = TRUE + contains = list( + /obj/item/circuitboard/machine/dna_vault, + /obj/item/device/dna_probe, + /obj/item/device/dna_probe, + /obj/item/device/dna_probe, + /obj/item/device/dna_probe, + /obj/item/device/dna_probe + ) + crate_name= "dna vault parts crate" + +/datum/supply_pack/misc/dna_probes + name = "DNA Vault Samplers" + cost = 3000 + special = TRUE + contains = list(/obj/item/device/dna_probe, + /obj/item/device/dna_probe, + /obj/item/device/dna_probe, + /obj/item/device/dna_probe, + /obj/item/device/dna_probe + ) + crate_name= "dna samplers crate" + + +/datum/supply_pack/misc/shield_sat + name = "Shield Generator Satellite" + cost = 3000 + special = TRUE + contains = list( + /obj/machinery/satellite/meteor_shield, + /obj/machinery/satellite/meteor_shield, + /obj/machinery/satellite/meteor_shield + ) + crate_name= "shield sat crate" + + +/datum/supply_pack/misc/shield_sat_control + name = "Shield System Control Board" + cost = 5000 + special = TRUE + contains = list(/obj/item/circuitboard/computer/sat_control) + crate_name= "shield control board crate" + +/datum/supply_pack/misc/bicycle + name = "Bicycle" + cost = 1000000 + contains = list(/obj/vehicle/bicycle) + crate_name = "Bicycle Crate" + crate_type = /obj/structure/closet/crate/large diff --git a/code/modules/research/designs/comp_board_designs.dm b/code/modules/research/designs/comp_board_designs.dm index 7e743a396b..e5593ff7a6 100644 --- a/code/modules/research/designs/comp_board_designs.dm +++ b/code/modules/research/designs/comp_board_designs.dm @@ -194,7 +194,7 @@ id = "cargorequest" build_path = /obj/item/circuitboard/computer/cargo/request category = list("Computer Boards") - + /datum/design/board/stockexchange name = "Computer Design (Stock Exchange Console)" desc = "Allows for the construction of circuit boards used to build a Stock Exchange Console." diff --git a/code/modules/research/designs/mining_designs.dm b/code/modules/research/designs/mining_designs.dm index 8b193577e0..d4c716f125 100644 --- a/code/modules/research/designs/mining_designs.dm +++ b/code/modules/research/designs/mining_designs.dm @@ -2,6 +2,16 @@ ///////////////////////////////////////// /////////////////Mining////////////////// ///////////////////////////////////////// +/datum/design/cargo_express + name = "Computer Design (Express Supply Console)"//shes beautiful + desc = "Allows for the construction of circuit boards used to build an Express Supply Console."//who? + id = "cargoexpress"//the coder reading this + build_type = PROTOLATHE + materials = list(MAT_GLASS = 1000) + reagents_list = list("sacid" = 20) + build_path = /obj/item/circuitboard/computer/cargo/express + category = list("Mining Designs") + departmental_flags = DEPARTMENTAL_FLAG_CARGO /datum/design/drill name = "Mining Drill" diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm index ba43a1c24b..ca7616db89 100644 --- a/code/modules/research/techweb/all_nodes.dm +++ b/code/modules/research/techweb/all_nodes.dm @@ -424,7 +424,7 @@ display_name = "Mining Technology" description = "Better than Efficiency V." prereq_ids = list("engineering") - design_ids = list("drill", "superresonator", "triggermod", "damagemod", "cooldownmod", "rangemod", "ore_redemption", "mining_equipment_vendor") + design_ids = list("drill", "superresonator", "triggermod", "damagemod", "cooldownmod", "rangemod", "ore_redemption", "mining_equipment_vendor", "cargoexpress")//e a r l y g a m e) research_cost = 2500 export_price = 10000 diff --git a/icons/obj/2x2.dmi b/icons/obj/2x2.dmi index 3a4fa139af..21adc379e9 100644 Binary files a/icons/obj/2x2.dmi and b/icons/obj/2x2.dmi differ diff --git a/icons/obj/computer.dmi b/icons/obj/computer.dmi index fb1ae63b4e..2095bf6d25 100644 Binary files a/icons/obj/computer.dmi and b/icons/obj/computer.dmi differ diff --git a/tgstation.dme b/tgstation.dme index bda13a4325..27146c1614 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -1108,6 +1108,7 @@ #include "code\game\objects\structures\crates_lockers\closets\utility_closets.dm" #include "code\game\objects\structures\crates_lockers\closets\wardrobe.dm" #include "code\game\objects\structures\crates_lockers\closets\secure\bar.dm" +#include "code\game\objects\structures\crates_lockers\closets\secure\bsdroppod.dm" #include "code\game\objects\structures\crates_lockers\closets\secure\cargo.dm" #include "code\game\objects\structures\crates_lockers\closets\secure\engineering.dm" #include "code\game\objects\structures\crates_lockers\closets\secure\freezer.dm" @@ -1300,6 +1301,7 @@ #include "code\modules\cargo\console.dm" #include "code\modules\cargo\export_scanner.dm" #include "code\modules\cargo\exports.dm" +#include "code\modules\cargo\expressconsole.dm" #include "code\modules\cargo\order.dm" #include "code\modules\cargo\packs.dm" #include "code\modules\cargo\vg_clothing_packs.dm" diff --git a/tgui/assets/tgui.js b/tgui/assets/tgui.js index 0fb6532fe5..a8c649cdc3 100644 --- a/tgui/assets/tgui.js +++ b/tgui/assets/tgui.js @@ -1,18 +1,18 @@ -require=function t(e,n,a){function r(o,s){if(!n[o]){if(!e[o]){var p="function"==typeof require&&require;if(!s&&p)return p(o,!0);if(i)return i(o,!0);var u=Error("Cannot find module '"+o+"'");throw u.code="MODULE_NOT_FOUND",u}var c=n[o]={exports:{}};e[o][0].call(c.exports,function(t){var n=e[o][1][t];return r(n?n:t)},c,c.exports,t,e,n,a)}return n[o].exports}for(var i="function"==typeof require&&require,o=0;o2?u[2]:void 0,l=Math.min((void 0===c?o:r(c,o))-p,o-s),d=1;for(s>p&&p+l>s&&(d=-1,p+=l-1,s+=l-1);l-- >0;)p in n?n[s]=n[p]:delete n[s],s+=d,p+=d;return n}},{76:76,79:79,80:80}],6:[function(t,e,n){"use strict";var a=t(80),r=t(76),i=t(79);e.exports=[].fill||function(t){for(var e=a(this),n=i(e.length),o=arguments,s=o.length,p=r(s>1?o[1]:void 0,n),u=s>2?o[2]:void 0,c=void 0===u?n:r(u,n);c>p;)e[p++]=t;return e}},{76:76,79:79,80:80}],7:[function(t,e,n){var a=t(78),r=t(79),i=t(76);e.exports=function(t){return function(e,n,o){var s,p=a(e),u=r(p.length),c=i(o,u);if(t&&n!=n){for(;u>c;)if(s=p[c++],s!=s)return!0}else for(;u>c;c++)if((t||c in p)&&p[c]===n)return t||c;return!t&&-1}}},{76:76,78:78,79:79}],8:[function(t,e,n){var a=t(17),r=t(34),i=t(80),o=t(79),s=t(9);e.exports=function(t){var e=1==t,n=2==t,p=3==t,u=4==t,c=6==t,l=5==t||c;return function(d,f,h){for(var m,g,v=i(d),b=r(v),y=a(f,h,3),x=o(b.length),_=0,w=e?s(d,x):n?s(d,0):void 0;x>_;_++)if((l||_ in b)&&(m=b[_],g=y(m,_,v),t))if(e)w[_]=g;else if(g)switch(t){case 3:return!0;case 5:return m;case 6:return _;case 2:w.push(m)}else if(u)return!1;return c?-1:p||u?u:w}}},{17:17,34:34,79:79,80:80,9:9}],9:[function(t,e,n){var a=t(38),r=t(36),i=t(83)("species");e.exports=function(t,e){var n;return r(t)&&(n=t.constructor,"function"!=typeof n||n!==Array&&!r(n.prototype)||(n=void 0),a(n)&&(n=n[i],null===n&&(n=void 0))),new(void 0===n?Array:n)(e)}},{36:36,38:38,83:83}],10:[function(t,e,n){var a=t(11),r=t(83)("toStringTag"),i="Arguments"==a(function(){return arguments}());e.exports=function(t){var e,n,o;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=(e=Object(t))[r])?n:i?a(e):"Object"==(o=a(e))&&"function"==typeof e.callee?"Arguments":o}},{11:11,83:83}],11:[function(t,e,n){var a={}.toString;e.exports=function(t){return a.call(t).slice(8,-1)}},{}],12:[function(t,e,n){"use strict";var a=t(46),r=t(31),i=t(60),o=t(17),s=t(69),p=t(18),u=t(27),c=t(42),l=t(44),d=t(82)("id"),f=t(30),h=t(38),m=t(65),g=t(19),v=Object.isExtensible||h,b=g?"_s":"size",y=0,x=function(t,e){if(!h(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!f(t,d)){if(!v(t))return"F";if(!e)return"E";r(t,d,++y)}return"O"+t[d]},_=function(t,e){var n,a=x(e);if("F"!==a)return t._i[a];for(n=t._f;n;n=n.n)if(n.k==e)return n};e.exports={getConstructor:function(t,e,n,r){var c=t(function(t,i){s(t,c,e),t._i=a.create(null),t._f=void 0,t._l=void 0,t[b]=0,void 0!=i&&u(i,n,t[r],t)});return i(c.prototype,{clear:function(){for(var t=this,e=t._i,n=t._f;n;n=n.n)n.r=!0,n.p&&(n.p=n.p.n=void 0),delete e[n.i];t._f=t._l=void 0,t[b]=0},"delete":function(t){var e=this,n=_(e,t);if(n){var a=n.n,r=n.p;delete e._i[n.i],n.r=!0,r&&(r.n=a),a&&(a.p=r),e._f==n&&(e._f=a),e._l==n&&(e._l=r),e[b]--}return!!n},forEach:function(t){for(var e,n=o(t,arguments.length>1?arguments[1]:void 0,3);e=e?e.n:this._f;)for(n(e.v,e.k,this);e&&e.r;)e=e.p},has:function(t){return!!_(this,t)}}),g&&a.setDesc(c.prototype,"size",{get:function(){return p(this[b])}}),c},def:function(t,e,n){var a,r,i=_(t,e);return i?i.v=n:(t._l=i={i:r=x(e,!0),k:e,v:n,p:a=t._l,n:void 0,r:!1},t._f||(t._f=i),a&&(a.n=i),t[b]++,"F"!==r&&(t._i[r]=i)),t},getEntry:_,setStrong:function(t,e,n){c(t,e,function(t,e){this._t=t,this._k=e,this._l=void 0},function(){for(var t=this,e=t._k,n=t._l;n&&n.r;)n=n.p;return t._t&&(t._l=n=n?n.n:t._t._f)?"keys"==e?l(0,n.k):"values"==e?l(0,n.v):l(0,[n.k,n.v]):(t._t=void 0,l(1))},n?"entries":"values",!n,!0),m(e)}}},{17:17,18:18,19:19,27:27,30:30,31:31,38:38,42:42,44:44,46:46,60:60,65:65,69:69,82:82}],13:[function(t,e,n){var a=t(27),r=t(10);e.exports=function(t){return function(){if(r(this)!=t)throw TypeError(t+"#toJSON isn't generic");var e=[];return a(this,!1,e.push,e),e}}},{10:10,27:27}],14:[function(t,e,n){"use strict";var a=t(31),r=t(60),i=t(4),o=t(38),s=t(69),p=t(27),u=t(8),c=t(30),l=t(82)("weak"),d=Object.isExtensible||o,f=u(5),h=u(6),m=0,g=function(t){return t._l||(t._l=new v)},v=function(){this.a=[]},b=function(t,e){return f(t.a,function(t){return t[0]===e})};v.prototype={get:function(t){var e=b(this,t);return e?e[1]:void 0},has:function(t){return!!b(this,t)},set:function(t,e){var n=b(this,t);n?n[1]=e:this.a.push([t,e])},"delete":function(t){var e=h(this.a,function(e){return e[0]===t});return~e&&this.a.splice(e,1),!!~e}},e.exports={getConstructor:function(t,e,n,a){var i=t(function(t,r){s(t,i,e),t._i=m++,t._l=void 0,void 0!=r&&p(r,n,t[a],t)});return r(i.prototype,{"delete":function(t){return o(t)?d(t)?c(t,l)&&c(t[l],this._i)&&delete t[l][this._i]:g(this)["delete"](t):!1},has:function(t){return o(t)?d(t)?c(t,l)&&c(t[l],this._i):g(this).has(t):!1}}),i},def:function(t,e,n){return d(i(e))?(c(e,l)||a(e,l,{}),e[l][t._i]=n):g(t).set(e,n),t},frozenStore:g,WEAK:l}},{27:27,30:30,31:31,38:38,4:4,60:60,69:69,8:8,82:82}],15:[function(t,e,n){"use strict";var a=t(29),r=t(22),i=t(61),o=t(60),s=t(27),p=t(69),u=t(38),c=t(24),l=t(43),d=t(66);e.exports=function(t,e,n,f,h,m){var g=a[t],v=g,b=h?"set":"add",y=v&&v.prototype,x={},_=function(t){var e=y[t];i(y,t,"delete"==t?function(t){return m&&!u(t)?!1:e.call(this,0===t?0:t)}:"has"==t?function(t){return m&&!u(t)?!1:e.call(this,0===t?0:t)}:"get"==t?function(t){return m&&!u(t)?void 0:e.call(this,0===t?0:t)}:"add"==t?function(t){return e.call(this,0===t?0:t),this}:function(t,n){return e.call(this,0===t?0:t,n),this})};if("function"==typeof v&&(m||y.forEach&&!c(function(){(new v).entries().next()}))){var w,k=new v,E=k[b](m?{}:-0,1)!=k,S=c(function(){k.has(1)}),C=l(function(t){new v(t)});C||(v=e(function(e,n){p(e,v,t);var a=new g;return void 0!=n&&s(n,h,a[b],a),a}),v.prototype=y,y.constructor=v),m||k.forEach(function(t,e){w=1/e===-(1/0)}),(S||w)&&(_("delete"),_("has"),h&&_("get")),(w||E)&&_(b),m&&y.clear&&delete y.clear}else v=f.getConstructor(e,t,h,b),o(v.prototype,n);return d(v,t),x[t]=v,r(r.G+r.W+r.F*(v!=g),x),m||f.setStrong(v,t,h),v}},{22:22,24:24,27:27,29:29,38:38,43:43,60:60,61:61,66:66,69:69}],16:[function(t,e,n){var a=e.exports={version:"1.2.6"};"number"==typeof __e&&(__e=a)},{}],17:[function(t,e,n){var a=t(2);e.exports=function(t,e,n){if(a(t),void 0===e)return t;switch(n){case 1:return function(n){return t.call(e,n)};case 2:return function(n,a){return t.call(e,n,a)};case 3:return function(n,a,r){return t.call(e,n,a,r)}}return function(){return t.apply(e,arguments)}}},{2:2}],18:[function(t,e,n){e.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},{}],19:[function(t,e,n){e.exports=!t(24)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},{24:24}],20:[function(t,e,n){var a=t(38),r=t(29).document,i=a(r)&&a(r.createElement);e.exports=function(t){return i?r.createElement(t):{}}},{29:29,38:38}],21:[function(t,e,n){var a=t(46);e.exports=function(t){var e=a.getKeys(t),n=a.getSymbols;if(n)for(var r,i=n(t),o=a.isEnum,s=0;i.length>s;)o.call(t,r=i[s++])&&e.push(r);return e}},{46:46}],22:[function(t,e,n){var a=t(29),r=t(16),i=t(31),o=t(61),s=t(17),p="prototype",u=function(t,e,n){var c,l,d,f,h=t&u.F,m=t&u.G,g=t&u.S,v=t&u.P,b=t&u.B,y=m?a:g?a[e]||(a[e]={}):(a[e]||{})[p],x=m?r:r[e]||(r[e]={}),_=x[p]||(x[p]={});m&&(n=e);for(c in n)l=!h&&y&&c in y,d=(l?y:n)[c],f=b&&l?s(d,a):v&&"function"==typeof d?s(Function.call,d):d,y&&!l&&o(y,c,d),x[c]!=d&&i(x,c,f),v&&_[c]!=d&&(_[c]=d)};a.core=r,u.F=1,u.G=2,u.S=4,u.P=8,u.B=16,u.W=32,e.exports=u},{16:16,17:17,29:29,31:31,61:61}],23:[function(t,e,n){var a=t(83)("match");e.exports=function(t){var e=/./;try{"/./"[t](e)}catch(n){try{return e[a]=!1,!"/./"[t](e)}catch(r){}}return!0}},{83:83}],24:[function(t,e,n){e.exports=function(t){try{return!!t()}catch(e){return!0}}},{}],25:[function(t,e,n){"use strict";var a=t(31),r=t(61),i=t(24),o=t(18),s=t(83);e.exports=function(t,e,n){var p=s(t),u=""[t];i(function(){var e={};return e[p]=function(){return 7},7!=""[t](e)})&&(r(String.prototype,t,n(o,p,u)),a(RegExp.prototype,p,2==e?function(t,e){return u.call(t,this,e)}:function(t){return u.call(t,this)}))}},{18:18,24:24,31:31,61:61,83:83}],26:[function(t,e,n){"use strict";var a=t(4);e.exports=function(){var t=a(this),e="";return t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.unicode&&(e+="u"),t.sticky&&(e+="y"),e}},{4:4}],27:[function(t,e,n){var a=t(17),r=t(40),i=t(35),o=t(4),s=t(79),p=t(84);e.exports=function(t,e,n,u){var c,l,d,f=p(t),h=a(n,u,e?2:1),m=0;if("function"!=typeof f)throw TypeError(t+" is not iterable!");if(i(f))for(c=s(t.length);c>m;m++)e?h(o(l=t[m])[0],l[1]):h(t[m]);else for(d=f.call(t);!(l=d.next()).done;)r(d,h,l.value,e)}},{17:17,35:35,4:4,40:40,79:79,84:84}],28:[function(t,e,n){var a=t(78),r=t(46).getNames,i={}.toString,o="object"==typeof window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],s=function(t){try{return r(t)}catch(e){return o.slice()}};e.exports.get=function(t){return o&&"[object Window]"==i.call(t)?s(t):r(a(t))}},{46:46,78:78}],29:[function(t,e,n){var a=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=a)},{}],30:[function(t,e,n){var a={}.hasOwnProperty;e.exports=function(t,e){return a.call(t,e)}},{}],31:[function(t,e,n){var a=t(46),r=t(59);e.exports=t(19)?function(t,e,n){return a.setDesc(t,e,r(1,n))}:function(t,e,n){return t[e]=n,t}},{19:19,46:46,59:59}],32:[function(t,e,n){e.exports=t(29).document&&document.documentElement},{29:29}],33:[function(t,e,n){e.exports=function(t,e,n){var a=void 0===n;switch(e.length){case 0:return a?t():t.call(n);case 1:return a?t(e[0]):t.call(n,e[0]);case 2:return a?t(e[0],e[1]):t.call(n,e[0],e[1]);case 3:return a?t(e[0],e[1],e[2]):t.call(n,e[0],e[1],e[2]);case 4:return a?t(e[0],e[1],e[2],e[3]):t.call(n,e[0],e[1],e[2],e[3])}return t.apply(n,e)}},{}],34:[function(t,e,n){var a=t(11);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==a(t)?t.split(""):Object(t)}},{11:11}],35:[function(t,e,n){var a=t(45),r=t(83)("iterator"),i=Array.prototype;e.exports=function(t){return void 0!==t&&(a.Array===t||i[r]===t)}},{45:45,83:83}],36:[function(t,e,n){var a=t(11);e.exports=Array.isArray||function(t){return"Array"==a(t)}},{11:11}],37:[function(t,e,n){var a=t(38),r=Math.floor;e.exports=function(t){return!a(t)&&isFinite(t)&&r(t)===t}},{38:38}],38:[function(t,e,n){e.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},{}],39:[function(t,e,n){var a=t(38),r=t(11),i=t(83)("match");e.exports=function(t){var e;return a(t)&&(void 0!==(e=t[i])?!!e:"RegExp"==r(t))}},{11:11,38:38,83:83}],40:[function(t,e,n){var a=t(4);e.exports=function(t,e,n,r){try{return r?e(a(n)[0],n[1]):e(n)}catch(i){var o=t["return"];throw void 0!==o&&a(o.call(t)),i}}},{4:4}],41:[function(t,e,n){"use strict";var a=t(46),r=t(59),i=t(66),o={};t(31)(o,t(83)("iterator"),function(){return this}),e.exports=function(t,e,n){t.prototype=a.create(o,{next:r(1,n)}),i(t,e+" Iterator")}},{31:31,46:46,59:59,66:66,83:83}],42:[function(t,e,n){"use strict";var a=t(48),r=t(22),i=t(61),o=t(31),s=t(30),p=t(45),u=t(41),c=t(66),l=t(46).getProto,d=t(83)("iterator"),f=!([].keys&&"next"in[].keys()),h="@@iterator",m="keys",g="values",v=function(){return this};e.exports=function(t,e,n,b,y,x,_){u(n,e,b);var w,k,E=function(t){if(!f&&t in A)return A[t];switch(t){case m:return function(){return new n(this,t)};case g:return function(){return new n(this,t)}}return function(){return new n(this,t)}},S=e+" Iterator",C=y==g,P=!1,A=t.prototype,O=A[d]||A[h]||y&&A[y],T=O||E(y);if(O){var R=l(T.call(new t));c(R,S,!0),!a&&s(A,h)&&o(R,d,v),C&&O.name!==g&&(P=!0,T=function(){return O.call(this)})}if(a&&!_||!f&&!P&&A[d]||o(A,d,T),p[e]=T,p[S]=v,y)if(w={values:C?T:E(g),keys:x?T:E(m),entries:C?E("entries"):T},_)for(k in w)k in A||i(A,k,w[k]);else r(r.P+r.F*(f||P),e,w);return w}},{22:22,30:30,31:31,41:41,45:45,46:46,48:48,61:61,66:66,83:83}],43:[function(t,e,n){var a=t(83)("iterator"),r=!1;try{var i=[7][a]();i["return"]=function(){r=!0},Array.from(i,function(){throw 2})}catch(o){}e.exports=function(t,e){if(!e&&!r)return!1;var n=!1;try{var i=[7],o=i[a]();o.next=function(){return{done:n=!0}},i[a]=function(){return o},t(i)}catch(s){}return n}},{83:83}],44:[function(t,e,n){e.exports=function(t,e){return{value:e,done:!!t}}},{}],45:[function(t,e,n){e.exports={}},{}],46:[function(t,e,n){var a=Object;e.exports={create:a.create,getProto:a.getPrototypeOf,isEnum:{}.propertyIsEnumerable,getDesc:a.getOwnPropertyDescriptor,setDesc:a.defineProperty,setDescs:a.defineProperties,getKeys:a.keys,getNames:a.getOwnPropertyNames,getSymbols:a.getOwnPropertySymbols,each:[].forEach}},{}],47:[function(t,e,n){var a=t(46),r=t(78);e.exports=function(t,e){for(var n,i=r(t),o=a.getKeys(i),s=o.length,p=0;s>p;)if(i[n=o[p++]]===e)return n}},{46:46,78:78}],48:[function(t,e,n){e.exports=!1},{}],49:[function(t,e,n){e.exports=Math.expm1||function(t){return 0==(t=+t)?t:t>-1e-6&&1e-6>t?t+t*t/2:Math.exp(t)-1}},{}],50:[function(t,e,n){e.exports=Math.log1p||function(t){return(t=+t)>-1e-8&&1e-8>t?t-t*t/2:Math.log(1+t)}},{}],51:[function(t,e,n){e.exports=Math.sign||function(t){return 0==(t=+t)||t!=t?t:0>t?-1:1}},{}],52:[function(t,e,n){var a,r,i,o=t(29),s=t(75).set,p=o.MutationObserver||o.WebKitMutationObserver,u=o.process,c=o.Promise,l="process"==t(11)(u),d=function(){var t,e,n;for(l&&(t=u.domain)&&(u.domain=null,t.exit());a;)e=a.domain,n=a.fn,e&&e.enter(),n(),e&&e.exit(),a=a.next;r=void 0,t&&t.enter()};if(l)i=function(){u.nextTick(d)};else if(p){var f=1,h=document.createTextNode("");new p(d).observe(h,{characterData:!0}),i=function(){h.data=f=-f}}else i=c&&c.resolve?function(){c.resolve().then(d)}:function(){s.call(o,d)};e.exports=function(t){var e={fn:t,next:void 0,domain:l&&u.domain};r&&(r.next=e),a||(a=e,i()),r=e}},{11:11,29:29,75:75}],53:[function(t,e,n){var a=t(46),r=t(80),i=t(34);e.exports=t(24)(function(){var t=Object.assign,e={},n={},a=Symbol(),r="abcdefghijklmnopqrst";return e[a]=7,r.split("").forEach(function(t){n[t]=t}),7!=t({},e)[a]||Object.keys(t({},n)).join("")!=r})?function(t,e){for(var n=r(t),o=arguments,s=o.length,p=1,u=a.getKeys,c=a.getSymbols,l=a.isEnum;s>p;)for(var d,f=i(o[p++]),h=c?u(f).concat(c(f)):u(f),m=h.length,g=0;m>g;)l.call(f,d=h[g++])&&(n[d]=f[d]);return n}:Object.assign},{24:24,34:34,46:46,80:80}],54:[function(t,e,n){var a=t(22),r=t(16),i=t(24);e.exports=function(t,e){var n=(r.Object||{})[t]||Object[t],o={};o[t]=e(n),a(a.S+a.F*i(function(){n(1)}),"Object",o)}},{16:16,22:22,24:24}],55:[function(t,e,n){var a=t(46),r=t(78),i=a.isEnum;e.exports=function(t){return function(e){for(var n,o=r(e),s=a.getKeys(o),p=s.length,u=0,c=[];p>u;)i.call(o,n=s[u++])&&c.push(t?[n,o[n]]:o[n]);return c}}},{46:46,78:78}],56:[function(t,e,n){var a=t(46),r=t(4),i=t(29).Reflect;e.exports=i&&i.ownKeys||function(t){var e=a.getNames(r(t)),n=a.getSymbols;return n?e.concat(n(t)):e}},{29:29,4:4,46:46}],57:[function(t,e,n){"use strict";var a=t(58),r=t(33),i=t(2);e.exports=function(){for(var t=i(this),e=arguments.length,n=Array(e),o=0,s=a._,p=!1;e>o;)(n[o]=arguments[o++])===s&&(p=!0);return function(){var a,i=this,o=arguments,u=o.length,c=0,l=0;if(!p&&!u)return r(t,n,i);if(a=n.slice(),p)for(;e>c;c++)a[c]===s&&(a[c]=o[l++]);for(;u>l;)a.push(o[l++]);return r(t,a,i)}}},{2:2,33:33,58:58}],58:[function(t,e,n){e.exports=t(29)},{29:29}],59:[function(t,e,n){e.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},{}],60:[function(t,e,n){var a=t(61);e.exports=function(t,e){for(var n in e)a(t,n,e[n]);return t}},{61:61}],61:[function(t,e,n){var a=t(29),r=t(31),i=t(82)("src"),o="toString",s=Function[o],p=(""+s).split(o);t(16).inspectSource=function(t){return s.call(t)},(e.exports=function(t,e,n,o){"function"==typeof n&&(n.hasOwnProperty(i)||r(n,i,t[e]?""+t[e]:p.join(e+"")),n.hasOwnProperty("name")||r(n,"name",e)),t===a?t[e]=n:(o||delete t[e],r(t,e,n))})(Function.prototype,o,function(){return"function"==typeof this&&this[i]||s.call(this)})},{16:16,29:29,31:31,82:82}],62:[function(t,e,n){e.exports=function(t,e){var n=e===Object(e)?function(t){return e[t]}:e;return function(e){return(e+"").replace(t,n)}}},{}],63:[function(t,e,n){e.exports=Object.is||function(t,e){return t===e?0!==t||1/t===1/e:t!=t&&e!=e}},{}],64:[function(t,e,n){var a=t(46).getDesc,r=t(38),i=t(4),o=function(t,e){if(i(t),!r(e)&&null!==e)throw TypeError(e+": can't set as prototype!")};e.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(e,n,r){try{r=t(17)(Function.call,a(Object.prototype,"__proto__").set,2),r(e,[]),n=!(e instanceof Array)}catch(i){n=!0}return function(t,e){return o(t,e),n?t.__proto__=e:r(t,e),t}}({},!1):void 0),check:o}},{17:17,38:38,4:4,46:46}],65:[function(t,e,n){"use strict";var a=t(29),r=t(46),i=t(19),o=t(83)("species");e.exports=function(t){var e=a[t];i&&e&&!e[o]&&r.setDesc(e,o,{configurable:!0,get:function(){return this}})}},{19:19,29:29,46:46,83:83}],66:[function(t,e,n){var a=t(46).setDesc,r=t(30),i=t(83)("toStringTag");e.exports=function(t,e,n){t&&!r(t=n?t:t.prototype,i)&&a(t,i,{configurable:!0,value:e})}},{30:30,46:46,83:83}],67:[function(t,e,n){var a=t(29),r="__core-js_shared__",i=a[r]||(a[r]={});e.exports=function(t){return i[t]||(i[t]={})}},{29:29}],68:[function(t,e,n){var a=t(4),r=t(2),i=t(83)("species");e.exports=function(t,e){var n,o=a(t).constructor;return void 0===o||void 0==(n=a(o)[i])?e:r(n)}},{2:2,4:4,83:83}],69:[function(t,e,n){e.exports=function(t,e,n){if(!(t instanceof e))throw TypeError(n+": use the 'new' operator!");return t}},{}],70:[function(t,e,n){var a=t(77),r=t(18);e.exports=function(t){return function(e,n){var i,o,s=r(e)+"",p=a(n),u=s.length;return 0>p||p>=u?t?"":void 0:(i=s.charCodeAt(p),55296>i||i>56319||p+1===u||(o=s.charCodeAt(p+1))<56320||o>57343?t?s.charAt(p):i:t?s.slice(p,p+2):(i-55296<<10)+(o-56320)+65536)}}},{18:18,77:77}],71:[function(t,e,n){var a=t(39),r=t(18);e.exports=function(t,e,n){if(a(e))throw TypeError("String#"+n+" doesn't accept regex!");return r(t)+""}},{18:18,39:39}],72:[function(t,e,n){var a=t(79),r=t(73),i=t(18);e.exports=function(t,e,n,o){var s=i(t)+"",p=s.length,u=void 0===n?" ":n+"",c=a(e);if(p>=c)return s;""==u&&(u=" ");var l=c-p,d=r.call(u,Math.ceil(l/u.length));return d.length>l&&(d=d.slice(0,l)),o?d+s:s+d}},{18:18,73:73,79:79}],73:[function(t,e,n){"use strict";var a=t(77),r=t(18);e.exports=function(t){var e=r(this)+"",n="",i=a(t);if(0>i||i==1/0)throw RangeError("Count can't be negative");for(;i>0;(i>>>=1)&&(e+=e))1&i&&(n+=e);return n}},{18:18,77:77}],74:[function(t,e,n){var a=t(22),r=t(18),i=t(24),o=" \n\x0B\f\r   ᠎              \u2028\u2029\ufeff",s="["+o+"]",p="​…",u=RegExp("^"+s+s+"*"),c=RegExp(s+s+"*$"),l=function(t,e){var n={};n[t]=e(d),a(a.P+a.F*i(function(){return!!o[t]()||p[t]()!=p}),"String",n)},d=l.trim=function(t,e){return t=r(t)+"",1&e&&(t=t.replace(u,"")),2&e&&(t=t.replace(c,"")),t};e.exports=l},{18:18,22:22,24:24}],75:[function(t,e,n){var a,r,i,o=t(17),s=t(33),p=t(32),u=t(20),c=t(29),l=c.process,d=c.setImmediate,f=c.clearImmediate,h=c.MessageChannel,m=0,g={},v="onreadystatechange",b=function(){var t=+this;if(g.hasOwnProperty(t)){var e=g[t];delete g[t],e()}},y=function(t){b.call(t.data)};d&&f||(d=function(t){for(var e=[],n=1;arguments.length>n;)e.push(arguments[n++]);return g[++m]=function(){s("function"==typeof t?t:Function(t),e)},a(m),m},f=function(t){delete g[t]},"process"==t(11)(l)?a=function(t){l.nextTick(o(b,t,1))}:h?(r=new h,i=r.port2,r.port1.onmessage=y,a=o(i.postMessage,i,1)):c.addEventListener&&"function"==typeof postMessage&&!c.importScripts?(a=function(t){c.postMessage(t+"","*")},c.addEventListener("message",y,!1)):a=v in u("script")?function(t){p.appendChild(u("script"))[v]=function(){p.removeChild(this),b.call(t)}}:function(t){setTimeout(o(b,t,1),0)}),e.exports={set:d,clear:f}},{11:11,17:17,20:20,29:29,32:32,33:33}],76:[function(t,e,n){var a=t(77),r=Math.max,i=Math.min;e.exports=function(t,e){return t=a(t),0>t?r(t+e,0):i(t,e)}},{77:77}],77:[function(t,e,n){var a=Math.ceil,r=Math.floor;e.exports=function(t){return isNaN(t=+t)?0:(t>0?r:a)(t)}},{}],78:[function(t,e,n){var a=t(34),r=t(18);e.exports=function(t){return a(r(t))}},{18:18,34:34}],79:[function(t,e,n){var a=t(77),r=Math.min;e.exports=function(t){return t>0?r(a(t),9007199254740991):0}},{77:77}],80:[function(t,e,n){var a=t(18);e.exports=function(t){return Object(a(t))}},{18:18}],81:[function(t,e,n){var a=t(38);e.exports=function(t,e){if(!a(t))return t;var n,r;if(e&&"function"==typeof(n=t.toString)&&!a(r=n.call(t)))return r;if("function"==typeof(n=t.valueOf)&&!a(r=n.call(t)))return r;if(!e&&"function"==typeof(n=t.toString)&&!a(r=n.call(t)))return r;throw TypeError("Can't convert object to primitive value")}},{38:38}],82:[function(t,e,n){var a=0,r=Math.random();e.exports=function(t){return"Symbol(".concat(void 0===t?"":t,")_",(++a+r).toString(36))}},{}],83:[function(t,e,n){var a=t(67)("wks"),r=t(82),i=t(29).Symbol;e.exports=function(t){return a[t]||(a[t]=i&&i[t]||(i||r)("Symbol."+t))}},{29:29,67:67,82:82}],84:[function(t,e,n){var a=t(10),r=t(83)("iterator"),i=t(45);e.exports=t(16).getIteratorMethod=function(t){return void 0!=t?t[r]||t["@@iterator"]||i[a(t)]:void 0}},{10:10,16:16,45:45,83:83}],85:[function(t,e,n){"use strict";var a,r=t(46),i=t(22),o=t(19),s=t(59),p=t(32),u=t(20),c=t(30),l=t(11),d=t(33),f=t(24),h=t(4),m=t(2),g=t(38),v=t(80),b=t(78),y=t(77),x=t(76),_=t(79),w=t(34),k=t(82)("__proto__"),E=t(8),S=t(7)(!1),C=Object.prototype,P=Array.prototype,A=P.slice,O=P.join,T=r.setDesc,R=r.getDesc,j=r.setDescs,L={};o||(a=!f(function(){return 7!=T(u("div"),"a",{get:function(){return 7}}).a}),r.setDesc=function(t,e,n){if(a)try{return T(t,e,n)}catch(r){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(h(t)[e]=n.value),t},r.getDesc=function(t,e){if(a)try{return R(t,e)}catch(n){}return c(t,e)?s(!C.propertyIsEnumerable.call(t,e),t[e]):void 0},r.setDescs=j=function(t,e){h(t);for(var n,a=r.getKeys(e),i=a.length,o=0;i>o;)r.setDesc(t,n=a[o++],e[n]);return t}),i(i.S+i.F*!o,"Object",{getOwnPropertyDescriptor:r.getDesc,defineProperty:r.setDesc,defineProperties:j});var M="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(","),D=M.concat("length","prototype"),N=M.length,F=function(){var t,e=u("iframe"),n=N,a=">";for(e.style.display="none",p.appendChild(e),e.src="javascript:",t=e.contentWindow.document,t.open(),t.write(" + + + {{#if data.siliconUser }} + + {{data.locked ? "Engaged" : "Disengaged"}} + + {{else}} + Swipe a QM-Level ID card to {{data.locked ? "unlock" : "lock"}} this interface. + {{/if}} + + +{{#if !data.locked }} + + + {{Math.floor(adata.points)}} + + + + {{data.message}} + + + + {{#each data.supplies}} + + {{#each packs}} + + {{cost}} Credits (Premium Pricing) + + {{/each}} + + {{/each}} + +{{/if}} \ No newline at end of file