diff --git a/_maps/RandomZLevels/centcomAway.dmm b/_maps/RandomZLevels/centcomAway.dmm index 2731714e96e..81224c36d74 100644 --- a/_maps/RandomZLevels/centcomAway.dmm +++ b/_maps/RandomZLevels/centcomAway.dmm @@ -169,7 +169,7 @@ "dm" = (/obj/machinery/door/window/northright{base_state = "right"; dir = 4; icon_state = "right"; name = "Security Desk"; req_access_txt = "103"},/turf/simulated/floor/plasteel/shuttle{icon_state = "shuttlefloor2"},/area/awaymission/centcomAway/hangar) "dn" = (/obj/structure/closet/crate,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 9},/area/awaymission/centcomAway/hangar) "do" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 1},/area/awaymission/centcomAway/hangar) -"dp" = (/obj/structure/largecrate,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 5},/area/awaymission/centcomAway/hangar) +"dp" = (/obj/structure/closet/crate/large,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 5},/area/awaymission/centcomAway/hangar) "dq" = (/obj/structure/dresser,/turf/simulated/floor/carpet,/area/awaymission/centcomAway/cafe) "dr" = (/obj/structure/table/reinforced,/obj/item/device/t_scanner,/turf/simulated/floor/plasteel{icon_state = "yellow"},/area/awaymission/centcomAway/general) "ds" = (/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/disposal/bin,/turf/simulated/floor/plating,/area/awaymission/centcomAway/cafe) @@ -192,7 +192,7 @@ "dJ" = (/turf/simulated/floor/plasteel{icon_state = "blackcorner"; dir = 4},/area/awaymission/centcomAway/general) "dK" = (/turf/simulated/floor/plasteel{icon_state = "yellow"},/area/awaymission/centcomAway/general) "dL" = (/obj/machinery/door/airlock/hatch{name = "Rest Room"; req_access_txt = "0"},/turf/simulated/floor/plasteel/shuttle{icon_state = "shuttlefloor3"},/area/awaymission/centcomAway/hangar) -"dM" = (/obj/structure/largecrate,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 10},/area/awaymission/centcomAway/hangar) +"dM" = (/obj/structure/closet/crate/large,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 10},/area/awaymission/centcomAway/hangar) "dN" = (/obj/structure/closet/crate,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/awaymission/centcomAway/hangar) "dO" = (/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 6},/area/awaymission/centcomAway/hangar) "dP" = (/turf/simulated/floor/plasteel{icon_state = "yellow"; dir = 10},/area/awaymission/centcomAway/general) diff --git a/_maps/RandomZLevels/spacebattle.dmm b/_maps/RandomZLevels/spacebattle.dmm index a26038404da..b282455054a 100644 --- a/_maps/RandomZLevels/spacebattle.dmm +++ b/_maps/RandomZLevels/spacebattle.dmm @@ -376,7 +376,7 @@ "hm" = (/turf/simulated/floor/plasteel/shuttle/red/syndicate,/area/awaymission/spacebattle/syndicate7) "hn" = (/obj/structure/shuttle/engine/heater{icon_state = "heater"; dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/awaymission/spacebattle/syndicate7) "ho" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_r"; dir = 8},/turf/space,/area/awaymission/spacebattle/syndicate7) -"hp" = (/obj/structure/largecrate,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) +"hp" = (/obj/structure/closet/crate/large,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) "hq" = (/obj/structure/closet/crate/secure/plasma,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) "hr" = (/obj/structure/closet/crate/medical,/obj/item/weapon/storage/firstaid/fire,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) "hs" = (/obj/structure/rack,/obj/item/clothing/suit/space/hardsuit,/obj/item/clothing/head/helmet/space/hardsuit,/turf/simulated/floor/plasteel,/area/awaymission/spacebattle/cruiser) @@ -385,7 +385,7 @@ "hv" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/engine,/area/awaymission/spacebattle/cruiser) "hw" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/awaymission/spacebattle/syndicate7) "hx" = (/obj/structure/shuttle/engine/propulsion{icon_state = "propulsion_l"; dir = 8},/turf/space,/area/awaymission/spacebattle/syndicate7) -"hy" = (/obj/structure/largecrate,/mob/living/simple_animal/pet/dog/corgi/puppy,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) +"hy" = (/obj/structure/closet/crate/large,/mob/living/simple_animal/pet/dog/corgi/puppy,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) "hz" = (/obj/structure/closet/crate,/obj/item/weapon/paint/anycolor,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) "hA" = (/obj/structure/closet/crate,/obj/item/weapon/stock_parts/cell/high,/obj/item/weapon/stock_parts/cell/high,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) "hB" = (/obj/structure/closet/crate/medical,/obj/item/weapon/storage/firstaid/regular,/turf/simulated/floor/plating,/area/awaymission/spacebattle/cruiser) diff --git a/_maps/RandomZLevels/wildwest.dmm b/_maps/RandomZLevels/wildwest.dmm index 91d013263d7..36d5dc8dad5 100644 --- a/_maps/RandomZLevels/wildwest.dmm +++ b/_maps/RandomZLevels/wildwest.dmm @@ -54,7 +54,7 @@ "be" = (/obj/item/ammo_box/c10mm,/turf/simulated/floor/plating/ironsand{icon_state = "ironsand1"},/area/awaymission/wwmines) "bf" = (/mob/living/simple_animal/hostile/syndicate/ranged,/turf/simulated/floor/plating/ironsand{icon_state = "ironsand1"},/area/awaymission/wwmines) "bg" = (/turf/simulated/wall/mineral/sandstone,/area/space) -"bh" = (/obj/structure/largecrate,/turf/simulated/floor/plating,/area/awaymission/wwrefine) +"bh" = (/obj/structure/closet/crate/large,/turf/simulated/floor/plating,/area/awaymission/wwrefine) "bi" = (/obj/effect/landmark/corpse/miner/rig,/obj/effect/mine/sound/bwoink,/turf/simulated/floor/plating/ironsand{icon_state = "ironsand1"},/area/awaymission/wwmines) "bj" = (/turf/simulated/floor/wood,/area/awaymission/wwmines) "bk" = (/obj/effect/decal/cleanable/blood,/turf/simulated/floor/wood,/area/awaymission/wwmines) @@ -181,7 +181,7 @@ "dB" = (/obj/structure/toilet,/mob/living/simple_animal/hostile/creature,/turf/simulated/floor/plasteel{icon_state = "white"},/area/awaymission/wwgov) "dC" = (/turf/simulated/floor/plating/ironsand{icon_state = "ironsand9"},/area/awaymission/wwgov) "dD" = (/obj/structure/mineral_door/wood{icon_state = "wood"},/turf/simulated/floor/plating/ironsand{icon_state = "ironsand1"},/area/awaymission/wwgov) -"dE" = (/obj/structure/largecrate,/turf/simulated/floor/wood,/area/awaymission/wwmines) +"dE" = (/obj/structure/closet/crate/large,/turf/simulated/floor/wood,/area/awaymission/wwmines) "dF" = (/turf/simulated/floor/plating/ironsand{icon_state = "ironsand7"},/area/awaymission/wwgov) "dG" = (/obj/machinery/washing_machine,/turf/simulated/floor/plasteel{icon_state = "cafeteria"; dir = 5},/area/awaymission/wwmines) "dH" = (/obj/structure/bed,/obj/item/weapon/bedsheet/blue,/turf/simulated/floor/wood,/area/awaymission/wwmines) diff --git a/_maps/map_files/MiniStation/supplypacks.dm b/_maps/map_files/MiniStation/supplypacks.dm index 330322a0d6f..8bfe0e285b1 100644 --- a/_maps/map_files/MiniStation/supplypacks.dm +++ b/_maps/map_files/MiniStation/supplypacks.dm @@ -2,28 +2,28 @@ name = "Oxygen Canister" contains = list(/obj/machinery/portable_atmospherics/canister/oxygen) cost = 15 - containertype = /obj/structure/largecrate + containertype = /obj/structure/closet/crate/large containername = "oxygen canister crate" /datum/supply_packs/engineering/toxins name = "Toxins Canister" contains = list(/obj/machinery/portable_atmospherics/canister/toxins) cost = 30 - containertype = /obj/structure/largecrate + containertype = /obj/structure/closet/crate/large containername = "toxins canister crate" /datum/supply_packs/engineering/nitrogen name = "Nitrogen Canister" contains = list(/obj/machinery/portable_atmospherics/canister/nitrogen) cost = 20 - containertype = /obj/structure/largecrate + containertype = /obj/structure/closet/crate/large containername = "nitrogen canister crate" /datum/supply_packs/engineering/carbon_dio name = "Carbon Dioxide Canister" contains = list(/obj/machinery/portable_atmospherics/canister/carbon_dioxide) cost = 35 - containertype = /obj/structure/largecrate + containertype = /obj/structure/closet/crate/large containername = "carbon dioxide canister crate" @@ -34,5 +34,5 @@ name = "Hydroponics Tray Kit" contains = list(/obj/machinery/hydroponics/constructable/unattached) cost = 10 - containertype = /obj/structure/largecrate + containertype = /obj/structure/closet/crate/large containername = "hydroponics kit" \ No newline at end of file diff --git a/_maps/map_files/generic/z6.dmm b/_maps/map_files/generic/z6.dmm index c6861e94afd..8fc8a070d43 100644 --- a/_maps/map_files/generic/z6.dmm +++ b/_maps/map_files/generic/z6.dmm @@ -55,7 +55,7 @@ "bc" = (/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft) "bd" = (/obj/item/weapon/storage/box,/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft) "be" = (/obj/item/weapon/hand_labeler,/turf/simulated/floor/plating,/area/awaymission/BMPship/Aft) -"bf" = (/obj/structure/largecrate,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/awaymission/BMPship/Aft) +"bf" = (/obj/structure/closet/crate/large,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 4},/area/awaymission/BMPship/Aft) "bg" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/grille,/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Fore) "bh" = (/obj/structure/table/wood,/obj/item/stack/spacecash/c500,/obj/item/stack/spacecash/c100,/obj/item/weapon/reagent_containers/food/drinks/beer,/turf/simulated/floor/wood,/area/awaymission/BMPship/Fore) "bi" = (/obj/structure/bed,/obj/item/weapon/bedsheet/yellow,/turf/simulated/floor/wood,/area/awaymission/BMPship/Fore) @@ -112,7 +112,7 @@ "ch" = (/turf/simulated/wall/shuttle{icon_state = "swall13"},/area/awaymission/BMPship/Midship) "ci" = (/turf/simulated/wall/shuttle{icon_state = "swall15"},/area/awaymission/BMPship/Aft) "cj" = (/obj/machinery/door/poddoor/shutters{id = "packerMed"},/turf/simulated/floor/plating/airless,/area/awaymission/BMPship/Aft) -"ck" = (/obj/structure/largecrate,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 10},/area/awaymission/BMPship/Aft) +"ck" = (/obj/structure/closet/crate/large,/turf/simulated/floor/plating{icon_state = "warnplate"; dir = 10},/area/awaymission/BMPship/Aft) "cl" = (/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/awaymission/BMPship/Aft) "cm" = (/obj/machinery/light/small,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/awaymission/BMPship/Aft) "cn" = (/obj/structure/kitchenspike,/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/awaymission/BMPship/Aft) diff --git a/code/datums/supplypacks.dm b/code/datums/supplypacks.dm index 1cad46222ed..2b7c9d0bb08 100644 --- a/code/datums/supplypacks.dm +++ b/code/datums/supplypacks.dm @@ -121,6 +121,16 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine containertype = /obj/structure/closet/crate containername = "firefighting crate" +/datum/supply_packs/emergency/radiation + name = "Radiation Protection Crate" + contains = list(/obj/item/clothing/head/radiation, + /obj/item/clothing/head/radiation, + /obj/item/clothing/suit/radiation, + /obj/item/clothing/suit/radiation) + cost = 10 + containertype = /obj/structure/closet/crate/radiation + containername = "radiation protection crate" + /datum/supply_packs/emergency/atmostank name = "Firefighting Watertank" contains = list(/obj/item/weapon/watertank/atmos) @@ -136,7 +146,7 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine /obj/item/weapon/grenade/chem_grenade/antiweed, /obj/item/weapon/grenade/chem_grenade/antiweed) cost = 15 - containertype = /obj/structure/closet/crate/secure/hydrosec + containertype = /obj/structure/closet/crate/secure/hydroponics containername = "weed control crate" access = access_hydroponics @@ -441,7 +451,7 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine name = "Fuel Tank Crate" contains = list(/obj/structure/reagent_dispensers/fueltank) cost = 8 - containertype = /obj/structure/largecrate + containertype = /obj/structure/closet/crate/large containername = "fuel tank crate" /datum/supply_packs/engineering/tools //the most robust crate @@ -838,55 +848,59 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine //////// livestock /datum/supply_packs/organic/cow name = "Cow Crate" + contains = list(/mob/living/simple_animal/cow) cost = 30 - containertype = /obj/structure/closet/critter/cow + containertype = /obj/structure/closet/crate/critter containername = "cow crate" /datum/supply_packs/organic/goat name = "Goat Crate" + contains = list(/mob/living/simple_animal/hostile/retaliate/goat) cost = 25 - containertype = /obj/structure/closet/critter/goat + containertype = /obj/structure/closet/crate/critter containername = "goat crate" /datum/supply_packs/organic/chicken name = "Chicken Crate" cost = 20 - containertype = /obj/structure/closet/critter/chick + containertype = /obj/structure/closet/crate/critter/chick containername = "chicken crate" /datum/supply_packs/organic/corgi name = "Corgi Crate" cost = 50 - containertype = /obj/structure/closet/critter/corgi contains = list(/obj/item/clothing/tie/petcollar) + containertype = /obj/structure/closet/crate/critter/corgi containername = "corgi crate" /datum/supply_packs/organic/cat name = "Cat Crate" cost = 50 //Cats are worth as much as corgis. - containertype = /obj/structure/closet/critter/cat contains = list(/obj/item/clothing/tie/petcollar, /obj/item/toy/cattoy) + containertype = /obj/structure/closet/crate/critter/cat containername = "cat crate" /datum/supply_packs/organic/pug name = "Pug Crate" cost = 50 - containertype = /obj/structure/closet/critter/pug - contains = list(/obj/item/clothing/tie/petcollar) + contains = list(/mob/living/simple_animal/pet/dog/pug, + /obj/item/clothing/tie/petcollar) + containertype = /obj/structure/closet/crate/critter containername = "pug crate" /datum/supply_packs/organic/fox name = "Fox Crate" cost = 55 //Foxes are cool. - containertype = /obj/structure/closet/critter/fox - contains = list(/obj/item/clothing/tie/petcollar) + contains = list(/mob/living/simple_animal/pet/fox, + /obj/item/clothing/tie/petcollar) + containertype = /obj/structure/closet/crate/critter containername = "fox crate" /datum/supply_packs/organic/butterfly name = "Butterflies Crate" cost = 50 - containertype = /obj/structure/closet/critter/butterfly + containertype = /obj/structure/closet/crate/critter/butterfly containername = "butterflies crate" contraband = 1 @@ -1045,7 +1059,7 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine name = "MULEbot Crate" contains = list(/mob/living/simple_animal/bot/mulebot) cost = 20 - containertype = /obj/structure/largecrate/mule + containertype = /obj/structure/closet/crate/large containername = "\improper MULEbot Crate" /datum/supply_packs/misc/conveyor @@ -1065,7 +1079,7 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine name = "Water Tank Crate" contains = list(/obj/structure/reagent_dispensers/watertank) cost = 8 - containertype = /obj/structure/largecrate + containertype = /obj/structure/closet/crate/large containername = "water tank crate" /datum/supply_packs/misc/lasertag @@ -1133,7 +1147,7 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine containername = "bureaucracy crate" /datum/supply_packs/misc/toner - name = "Toner Cartridges crate" + name = "Toner Cartridges Crate" contains = list(/obj/item/device/toner, /obj/item/device/toner, /obj/item/device/toner, @@ -1169,7 +1183,7 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine contains = list(/obj/structure/janitorialcart, /obj/item/clothing/shoes/galoshes) cost = 10 - containertype = /obj/structure/largecrate + containertype = /obj/structure/closet/crate/large containername = "janitorial cart crate" /datum/supply_packs/misc/janitor/janitank @@ -1238,6 +1252,7 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine containername = "wizard costume crate" /datum/supply_packs/misc/randomised + name = "Collectable hat crate!" 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, @@ -1259,7 +1274,6 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine /obj/item/clothing/head/collectable/slime, /obj/item/clothing/head/collectable/xenom, /obj/item/clothing/head/collectable/petehat) - name = "Collectable hat crate!" cost = 200 containername = "collectable hats crate! Brought to you by Bass.inc!" @@ -1267,13 +1281,12 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine manifest += "Contains any [num_contained] of:" ..() - /datum/supply_packs/misc/randomised/contraband + name = "Contraband Crate" num_contained = 5 contains = list(/obj/item/weapon/poster/contraband, /obj/item/weapon/storage/fancy/cigarettes/dromedaryco, /obj/item/weapon/storage/fancy/cigarettes/cigpack_shadyjims) - name = "Contraband Crate" cost = 30 containername = "crate" //let's keep it subtle, eh? contraband = 1 @@ -1296,7 +1309,7 @@ var/list/all_supply_groups = list(supply_emergency,supply_security,supply_engine /obj/item/toy/redbutton) cost = 50 // or play the arcade machines ya lazy bum - containername ="toy crate" + containername = "toy crate" /datum/supply_packs/misc/autodrobe name = "Autodrobe Supply Crate" diff --git a/code/game/asteroid.dm b/code/game/asteroid.dm index 1a54baa825f..c5452d77a36 100644 --- a/code/game/asteroid.dm +++ b/code/game/asteroid.dm @@ -64,7 +64,7 @@ var/global/max_secret_rooms = 6 if("organharvest") walltypes = list(/turf/simulated/wall/r_wall=2,/turf/simulated/wall=2,/turf/simulated/mineral/random/high_chance=1) floortypes = list(/turf/simulated/floor/plasteel,/turf/simulated/floor/engine) - treasureitems = list(/mob/living/simple_animal/bot/medbot/mysterious=1, /obj/item/weapon/circular_saw=1, /obj/structure/closet/critter/cat=2) + treasureitems = list(/mob/living/simple_animal/bot/medbot/mysterious=1, /obj/item/weapon/circular_saw=1, /obj/structure/closet/crate/critter/cat=2) fluffitems = list(/obj/effect/decal/cleanable/blood=5,/obj/item/organ/internal/appendix=2,/obj/structure/closet/crate/freezer=2, /obj/structure/table/optable=1,/obj/item/weapon/scalpel=1,/obj/item/weapon/storage/firstaid/regular=3, /obj/item/weapon/tank/internals/anesthetic=1, /obj/item/weapon/surgical_drapes=2, /obj/item/device/mass_spectrometer/adv=1,/obj/item/clothing/glasses/hud/health=1) diff --git a/code/game/objects/structures/crates_lockers/bins.dm b/code/game/objects/structures/crates_lockers/bins.dm index 7bece78a795..6b255be1a1a 100644 --- a/code/game/objects/structures/crates_lockers/bins.dm +++ b/code/game/objects/structures/crates_lockers/bins.dm @@ -1,15 +1,11 @@ /obj/structure/closet/crate/bin desc = "A trash bin, place your trash here for the janitor to collect." name = "trash bin" - icon_crate = "largebins" icon_state = "largebins" - anchored = 1 - sound_effect_open = 'sound/effects/bin_open.ogg' - sound_effect_close = 'sound/effects/bin_close.ogg' - var/animation = "animate_largebins" - var/redlight = "largebinr" - var/greenlight = "largebing" - var/orangelight = "largebino" + open_sound = 'sound/effects/bin_open.ogg' + close_sound = 'sound/effects/bin_close.ogg' + anchored = TRUE + allow_mobs = TRUE /obj/structure/closet/crate/bin/New() ..() @@ -19,11 +15,11 @@ ..() overlays.Cut() if(contents.len == 0) - overlays += greenlight + overlays += "largebing" else if(contents.len >= storage_capacity) - overlays += redlight + overlays += "largebinr" else - overlays += orangelight + overlays += "largebino" /obj/structure/closet/crate/bin/attackby(obj/item/weapon/W, mob/user, params) if(istype(W, /obj/item/weapon/storage/bag/trash)) @@ -54,23 +50,15 @@ user.visible_message("[user] stuffs [O] into[src].", \ "You stuff [O] into [src].", \ "You hear a loud metal bang.") - insert(O, 1, !opened) + insert(O) if(opened) close() -/obj/structure/closet/crate/bin/open() - . = ..() - update_icon() - -/obj/structure/closet/crate/bin/close() - . = ..() - update_icon() - /obj/structure/closet/crate/bin/proc/do_animate() - playsound(src.loc, sound_effect_open, 15, 1, -3) - flick(animation, src) + playsound(src.loc, open_sound, 15, 1, -3) + flick("animate_largebins", src) spawn(13) - playsound(src.loc, sound_effect_close, 15, 1, -3) + playsound(src.loc, close_sound, 15, 1, -3) update_icon() /obj/structure/closet/crate/bin/insert(obj/item/I, include_mobs = 0, animate = 0) diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index 41c94f82650..10596418b04 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -14,6 +14,7 @@ var/large = 1 var/wall_mounted = 0 //never solid (You can always pass over it) var/health = 100 + var/breakout_time = 2 var/lastbang var/can_weld_shut = 1 var/max_mob_size = MOB_SIZE_HUMAN //Biggest mob_size accepted by the container @@ -21,6 +22,7 @@ var/storage_capacity = 30 //This is so that someone can't pack hundreds of items in a locker/crate then open it in a populated area to crash clients. var/cutting_tool = /obj/item/weapon/weldingtool var/open_sound = 'sound/machines/click.ogg' + var/close_sound = 'sound/machines/click.ogg' var/cutting_sound = 'sound/items/Welder.ogg' var/material_drop = /obj/item/stack/sheet/metal @@ -63,11 +65,10 @@ /obj/structure/closet/examine(mob/user) ..() - if(secure) - if(broken || opened || !ishuman(user)) - return //Monkeys don't get a message, nor does anyone if it's open or emagged - else - user << "Alt-click the locker to [locked ? "unlock" : "lock"] it." + if(broken) + user << "It appears to be broken." + else if(secure && !opened) + user << "Alt-click to [locked ? "unlock" : "lock"]." /obj/structure/closet/alter_health() return get_turf(src) @@ -88,22 +89,17 @@ return 1 /obj/structure/closet/proc/dump_contents() - for(var/obj/O in src) - O.loc = loc + var/turf/T = get_turf(src) + for(var/atom/movable/AM in src) + AM.forceMove(T) if(throwing) //you keep some momentum when getting out of a thrown closet - step(O, dir) - - for(var/mob/M in src) - M.loc = loc - M.reset_perspective(null) - if(throwing) - step(M, dir) + step(AM, dir) if(throwing) throwing = 0 /obj/structure/closet/proc/take_contents() - - for(var/atom/movable/AM in loc) + var/turf/T = get_turf(src) + for(var/atom/movable/AM in T) if(insert(AM) == -1) // limit reached break @@ -118,7 +114,6 @@ return 1 /obj/structure/closet/proc/insert(atom/movable/AM) - if(contents.len >= storage_capacity) return -1 @@ -132,7 +127,10 @@ mobs_stored++ if(mobs_stored >= mob_storage_capacity) return 0 +<<<<<<< ede93b63a61fbdfe3be0fe9569aa29b152e767bc L.reset_perspective(src) +======= +>>>>>>> Fix up crates L.stop_pulling() else if(!istype(AM, /obj/item) && !istype(AM, /obj/effect/dummy/chameleon)) return 0 @@ -140,20 +138,18 @@ return 0 else if(AM.flags & NODROP) return 0 - AM.loc = src + AM.forceMove(src) if(AM.pulledby) AM.pulledby.stop_pulling() return 1 /obj/structure/closet/proc/close() - if(!opened) - return 0 - if(!can_close()) + if(!opened || !can_close()) return 0 take_contents() opened = 0 - playsound(loc, open_sound, 15, 1, -3) + playsound(loc, close_sound, 15, 1, -3) density = 1 update_icon() return 1 @@ -161,7 +157,8 @@ /obj/structure/closet/proc/toggle() if(opened) return close() - return open() + else + return open() /obj/structure/closet/ex_act(severity, target) contents_explosion(severity, target) @@ -170,13 +167,12 @@ qdel(src) ..() -/obj/structure/closet/bullet_act(obj/item/projectile/Proj) +/obj/structure/closet/bullet_act(obj/item/projectile/P) ..() - if((Proj.damage_type == BRUTE || Proj.damage_type == BURN)) - health -= Proj.damage + if(P.damage_type == BRUTE || P.damage_type == BURN) + health -= P.damage if(health <= 0) qdel(src) - return /obj/structure/closet/attack_animal(mob/living/simple_animal/user) if(user.environment_smash) @@ -188,7 +184,6 @@ if(prob(75)) qdel(src) - /obj/structure/closet/attackby(obj/item/weapon/W, mob/user, params) if(user.loc == src) return @@ -313,31 +308,24 @@ if(AM.loc == src) return 0 return 1 -/obj/structure/closet/container_resist() - var/mob/living/user = usr - var/breakout_time = 2 //2 minutes by default - if(istype(user.loc, /obj/structure/closet/critter) && !welded) - breakout_time = 0.75 //45 seconds if it's an unwelded critter crate - - if( opened || (!welded && !locked && !istype(loc, /obj/mecha)) ) +/obj/structure/closet/container_resist(mob/living/user) + if(opened || (!welded && !locked && !istype(loc, /obj/mecha))) return //Door's open, not locked or welded or inside a mech, no point in resisting. //okay, so the closet is either welded or locked... resist!!! user.changeNext_move(CLICK_CD_BREAKOUT) user.last_special = world.time + CLICK_CD_BREAKOUT - user << "You lean on the back of [src] and start pushing the door open. (this will take about [breakout_time] minutes.)" - for(var/mob/O in viewers(src)) - O << "[src] begins to shake violently!" - if(do_after(user,(breakout_time*60*10), target = src)) //minutes * 60seconds * 10deciseconds + user.visible_message("[src] begins to shake violently!", + "You lean on the back of [src] and start pushing the door open.") + if(do_after(user,(breakout_time * 60 * 10), target = src)) //minutes * 60seconds * 10deciseconds if(!user || user.stat != CONSCIOUS || user.loc != src || opened || (!locked && !welded && !istype(loc, /obj/mecha)) ) return //we check after a while whether there is a point of resisting anymore and whether the user is capable of resisting - welded = 0 //applies to all lockers lockers locked = 0 //applies to critter crates and secure lockers only broken = 1 //applies to secure lockers only user.visible_message("[user] successfully broke out of [src]!", "You successfully break out of [src]!") - if(istype( loc, /obj/structure/bigDelivery)) + if(istype(loc, /obj/structure/bigDelivery)) var/obj/structure/bigDelivery/D = loc qdel(D) else if(istype( loc, /obj/mecha)) @@ -348,36 +336,28 @@ /obj/structure/closet/AltClick(mob/user) ..() - if(!user.canUseTopic(user) || broken) + if(!user.canUseTopic(user)) user << "You can't do that right now!" return + if(broken) + user << "\The [src] is broken!" if(opened || !secure || !in_range(src, user)) return else togglelock(user) -/obj/structure/closet/emp_act(severity) - for(var/obj/O in src) - O.emp_act(severity) - if(secure && !broken) - if(prob(50/severity)) - locked = !locked - update_icon() - if(prob(20/severity) && !opened) - if(!locked) - open() - else - req_access = list() - req_access += pick(get_all_accesses()) - ..() - /obj/structure/closet/proc/togglelock(mob/user) - if(secure) + if(secure && !broken) if(allowed(user)) locked = !locked add_fingerprint(user) +<<<<<<< ede93b63a61fbdfe3be0fe9569aa29b152e767bc for(var/mob/O in viewers(user, 3)) O.show_message("[user] has [locked ? null : "un"]locked the locker.", 1) +======= + visible_message("[user] [locked ? null : "un"]locks [src].", + "You [locked ? null : "un"]locks [src].") +>>>>>>> Fix up crates update_icon() else user << "Access Denied" @@ -386,16 +366,31 @@ /obj/structure/closet/emag_act(mob/user) if(secure && !broken) + user.visible_message("Sparks fly from [src]!", + "You emag [src], breaking the lock!", + "You hear a faint electrical spark.") + playsound(src.loc, 'sound/effects/sparks4.ogg', 50, 1) broken = 1 locked = 0 - desc += " It appears to be broken." - update_icon() - if(user) - visible_message("The [name] has been broken by [user] with an electromagnetic card!", "You hear a faint electrical spark.") - overlays += "sparking" - spawn(4) //overlays don't support flick so we have to cheat update_icon() +<<<<<<< ede93b63a61fbdfe3be0fe9569aa29b152e767bc /obj/structure/closet/get_remote_view_fullscreens(mob/user) if(!(user.sight & (SEEOBJS|SEEMOBS))) user.overlay_fullscreen("remote_view", /obj/screen/fullscreen/impaired, 1) +======= +/obj/structure/closet/emp_act(severity) + for(var/obj/O in src) + O.emp_act(severity) + if(secure && !broken) + if(prob(50 / severity)) + locked = !locked + update_icon() + if(prob(20 / severity) && !opened) + if(!locked) + open() + else + req_access = list() + req_access += pick(get_all_accesses()) + ..() +>>>>>>> Fix up crates diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm index 65dca528f33..b84231bc0b1 100644 --- a/code/game/objects/structures/crates_lockers/crates.dm +++ b/code/game/objects/structures/crates_lockers/crates.dm @@ -1,49 +1,98 @@ -//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:32 - /obj/structure/closet/crate name = "crate" desc = "A rectangular steel crate." icon = 'icons/obj/crates.dmi' - var/icon_crate = "crate" icon_state = "crate" req_access = null - var/rigged = 0 - var/sound_effect_open = 'sound/machines/click.ogg' - var/sound_effect_close = 'sound/machines/click.ogg' + var/allow_mobs = FALSE var/obj/item/weapon/paper/manifest/manifest /obj/structure/closet/crate/New() ..() update_icon() - /obj/structure/closet/crate/update_icon() + icon_state = "[initial(icon_state)][opened ? "open" : ""]" + overlays.Cut() - if(opened) - icon_state = "[icon_crate]open" - else - icon_state = icon_crate if(manifest) overlays += "manifest" +/obj/structure/closet/crate/attack_hand(mob/user) + add_fingerprint(user) + if(manifest) + tear_manifest(user) + return + if(!toggle()) + togglelock(user) + +/obj/structure/closet/crate/attackby(obj/item/weapon/W, mob/user, params) + if(opened) + if(isrobot(user)) + return + if(user.drop_item()) + W.Move(loc) + else if(istype(W, /obj/item/stack/packageWrap)) + return + else if(!place(user, W)) + attack_hand(user) + +/obj/structure/closet/crate/insert(atom/movable/AM) + if(contents.len >= storage_capacity) + return -1 + + if(istype(AM, /mob/living)) + var/mob/living/L = AM + if(!allow_mobs || L.buckled || L.buckled_mob) + return + L.stop_pulling() + if(AM.flags & NODROP || AM.density || AM.anchored || AM.buckled_mob || istype(AM, /obj/structure/closet)) + return + AM.forceMove(src) + if(AM.pulledby) + AM.pulledby.stop_pulling() + return 1 + +/obj/structure/closet/crate/proc/tear_manifest(mob/user) + user << "You tear the manifest off of the crate." + playsound(src, 'sound/items/poster_ripped.ogg', 75, 1) + + manifest.loc = loc + if(ishuman(user)) + user.put_in_hands(manifest) + manifest = null + update_icon() + /obj/structure/closet/crate/internals desc = "A internals crate." name = "internals crate" - icon_crate = "o2crate" icon_state = "o2crate" /obj/structure/closet/crate/trashcart desc = "A heavy, metal trashcart with wheels." name = "trash cart" - icon_crate = "trashcart" icon_state = "trashcart" /obj/structure/closet/crate/medical desc = "A medical crate." name = "medical crate" - icon_crate = "medicalcrate" icon_state = "medicalcrate" +/obj/structure/closet/crate/freezer + desc = "A freezer." + name = "freezer" + icon_state = "freezer" + +/obj/structure/closet/crate/radiation + desc = "A crate with a radiation sign on it." + name = "radiation crate" + icon_state = "radiation" + +/obj/structure/closet/crate/hydroponics + name = "hydroponics crate" + desc = "All you need to destroy those pesky weeds and pests." + icon_state = "hydrocrate" + /obj/structure/closet/crate/rcd desc = "A crate for the storage of an RCD." name = "\improper RCD crate" @@ -53,160 +102,3 @@ for(var/i in 1 to 4) new /obj/item/weapon/rcd_ammo(src) new /obj/item/weapon/rcd(src) - -/obj/structure/closet/crate/freezer - desc = "A freezer." - name = "freezer" - icon_crate = "freezer" - icon_state = "freezer" - var/target_temp = T0C - 40 - var/cooling_power = 40 - -/obj/structure/closet/crate/freezer/return_air() - var/datum/gas_mixture/gas = (..()) - if(!gas) - return null - - var/datum/gas_mixture/newgas = new/datum/gas_mixture() - newgas.copy_from(gas) - - if(newgas.temperature <= target_temp) - return - - if((newgas.temperature - cooling_power) > target_temp) - newgas.temperature -= cooling_power - else - newgas.temperature = target_temp - return newgas - - -/obj/structure/closet/crate/radiation - desc = "A crate with a radiation sign on it." - name = "radioactive gear crate" - icon_crate = "radiation" - icon_state = "radiation" - -/obj/structure/closet/crate/radiation/New() - ..() - for(var/i in 1 to 4) - new /obj/item/clothing/suit/radiation(src) - new /obj/item/clothing/head/radiation(src) - -/obj/structure/closet/crate/hydroponics - name = "hydroponics crate" - desc = "All you need to destroy those pesky weeds and pests." - icon_crate = "hydrocrate" - icon_state = "hydrocrate" - -/obj/structure/closet/crate/hydroponics/prespawned - -/obj/structure/closet/crate/hydroponics/prespawned/New() - ..() - new /obj/item/weapon/reagent_containers/spray/plantbgone(src) - new /obj/item/weapon/reagent_containers/spray/plantbgone(src) - new /obj/item/weapon/cultivator(src) - -/obj/structure/closet/crate/open() - playsound(src.loc, sound_effect_open, 15, 1, -3) - dump_contents() - src.opened = 1 - update_icon() - return 1 - -/obj/structure/closet/crate/close() - playsound(src.loc, sound_effect_close, 15, 1, -3) - take_contents() - src.opened = 0 - update_icon() - return 1 - -/obj/structure/closet/crate/insert(atom/movable/AM, include_mobs = 0) - - if(contents.len >= storage_capacity) - return -1 - if(include_mobs && isliving(AM)) - var/mob/living/L = AM - if(L.buckled) - return 0 - else if(isobj(AM)) - if(AM.density || AM.anchored || istype(AM,/obj/structure/closet)) - return 0 - else - return 0 - - if(istype(AM, /obj/structure/bed)) //This is only necessary because of rollerbeds and swivel chairs. - var/obj/structure/bed/B = AM - if(B.buckled_mob) - return 0 - - AM.loc = src - return 1 - -/obj/structure/closet/crate/proc/tear_manifest(mob/user) - user << "You tear the manifest off of the crate." - playsound(src.loc, 'sound/items/poster_ripped.ogg', 75, 1) - manifest.loc = loc - if(ishuman(user)) - user.put_in_hands(manifest) - manifest = null - overlays-="manifest" - -/obj/structure/closet/crate/attack_hand(mob/user) - if(manifest) - tear_manifest(user) - return - if(opened) - close() - else - if(rigged && locate(/obj/item/device/electropack) in src) - if(isliving(user)) - var/mob/living/L = user - if(L.electrocute_act(17, src)) - var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread - s.set_up(5, 1, src) - s.start() - return - open() - return - -/obj/structure/closet/crate/attack_paw(mob/user) - return attack_hand(user) - -/obj/structure/closet/crate/attackby(obj/item/weapon/W, mob/user, params) - if(opened) - if(isrobot(user)) - return - if(!user.drop_item()) //couldn't drop the item - user << "\The [W] is stuck to your hand, you cannot put it in \the [src]!" - return - if(W) - W.loc = src.loc - else if(istype(W, /obj/item/stack/packageWrap)) - return - else if(istype(W, /obj/item/stack/cable_coil)) - if(rigged) - user << "[src] is already rigged!" - return - var/obj/item/stack/cable_coil/C = W - if (C.use(5)) - user << "You rig [src]." - rigged = 1 - else - user << "You need 5 lengths of cable to rig [src]!" - return - else if(istype(W, /obj/item/device/electropack)) - if(rigged) - if(!user.drop_item()) - return - user << "You attach [W] to [src]." - W.loc = src - return - else if(istype(W, /obj/item/weapon/wirecutters)) - if(rigged) - user << "You cut away the wiring." - playsound(loc, 'sound/items/Wirecutter.ogg', 100, 1) - rigged = 0 - return - else if(!place(user, W)) - return attack_hand(user) - diff --git a/code/game/objects/structures/crates_lockers/crates/critter.dm b/code/game/objects/structures/crates_lockers/crates/critter.dm new file mode 100644 index 00000000000..ffe49f08023 --- /dev/null +++ b/code/game/objects/structures/crates_lockers/crates/critter.dm @@ -0,0 +1,45 @@ +/obj/structure/closet/crate/critter + name = "critter crate" + desc = "A crate designed for safe transport of animals. Only openable from the the outside." + icon_state = "crittercrate" + allow_mobs = TRUE + breakout_time = 1 + +/obj/structure/closet/crate/critter/update_icon() + overlays.Cut() + if(opened) + overlays += "crittercrate_door_open" + else + overlays += "crittercrate_door" + if(manifest) + overlays += "manifest" + +/obj/structure/closet/crate/critter/attack_hand(mob/user) + if(user in src) + user << "It won't budge!" + else + ..() + +/obj/structure/closet/crate/critter/corgi/New() + ..() + if(prob(50)) + new /mob/living/simple_animal/pet/dog/corgi/Lisa(src) + else + new /mob/living/simple_animal/pet/dog/corgi(src) + +/obj/structure/closet/crate/critter/cat/New() + ..() + if(prob(50)) + new /mob/living/simple_animal/pet/cat/Proc(src) + else + new /mob/living/simple_animal/pet/cat(src) + +/obj/structure/closet/crate/critter/chick/New() + ..() + for(var/i in 1 to rand(1, 3)) + new /mob/living/simple_animal/chick(src) + +/obj/structure/closet/crate/critter/butterfly/New() + ..() + for(var/i in 1 to 50) + new /mob/living/simple_animal/butterfly(src) \ No newline at end of file diff --git a/code/game/objects/structures/crates_lockers/crates/large.dm b/code/game/objects/structures/crates_lockers/crates/large.dm new file mode 100644 index 00000000000..93a81516a7c --- /dev/null +++ b/code/game/objects/structures/crates_lockers/crates/large.dm @@ -0,0 +1,35 @@ +/obj/structure/closet/crate/large + name = "large crate" + desc = "A hefty wooden crate." + icon_state = "largecrate" + density = 1 + material_drop = /obj/item/stack/sheet/mineral/wood + +/obj/structure/closet/crate/large/attack_hand(mob/user) + add_fingerprint(user) + if(manifest) + tear_manifest(user) + return + else + user << "You need a crowbar to pry this open!" + return + +/obj/structure/closet/crate/large/attackby(obj/item/weapon/W, mob/user, params) + if(istype(W, /obj/item/weapon/crowbar)) + var/turf/T = get_turf(src) + if(manifest) + tear_manifest(user) + + user.visible_message("[user] pries \the [src] open.", \ + "You pry open \the [src].", \ + "You hear splitting wood.") + playsound(src.loc, 'sound/weapons/slashmiss.ogg', 75, 1) + + for(var/i in 1 to rand(2, 5)) + new material_drop(src) + for(var/atom/movable/AM in contents) + AM.forceMove(T) + + qdel(src) + else + ..() diff --git a/code/game/objects/structures/crates_lockers/crates/secure.dm b/code/game/objects/structures/crates_lockers/crates/secure.dm index a4f11e7fd5f..ffcdd093a44 100644 --- a/code/game/objects/structures/crates_lockers/crates/secure.dm +++ b/code/game/objects/structures/crates_lockers/crates/secure.dm @@ -1,105 +1,36 @@ /obj/structure/closet/crate/secure desc = "A secure crate." name = "secure crate" - icon_crate = "securecrate" icon_state = "securecrate" - var/redlight = "securecrater" - var/greenlight = "securecrateg" - var/sparks = "securecratesparks" - var/emag = "securecrateemag" + secure = 1 locked = 1 health = 1000 +/obj/structure/closet/crate/secure/update_icon() + ..() + if(broken) + overlays += "securecrateemag" + else if(locked) + overlays += "securecrater" + else + overlays += "securecrateg" + /obj/structure/closet/crate/secure/weapon desc = "A secure weapons crate." name = "weapons crate" - icon_crate = "weaponcrate" icon_state = "weaponcrate" /obj/structure/closet/crate/secure/plasma desc = "A secure plasma crate." name = "plasma crate" - icon_crate = "plasmacrate" icon_state = "plasmacrate" /obj/structure/closet/crate/secure/gear desc = "A secure gear crate." name = "gear crate" - icon_crate = "secgearcrate" icon_state = "secgearcrate" -/obj/structure/closet/crate/secure/hydrosec +/obj/structure/closet/crate/secure/hydroponics desc = "A crate with a lock on it, painted in the scheme of the station's botanists." name = "secure hydroponics crate" - icon_crate = "hydrosecurecrate" icon_state = "hydrosecurecrate" - -/obj/structure/closet/crate/secure/update_icon() - ..() - if(locked) - overlays += redlight - else if(broken) - overlays += emag - else - overlays += greenlight - -/obj/structure/closet/crate/secure/attack_hand(mob/user) - if(manifest) - tear_manifest(user) - return - if(locked && !broken) - if (allowed(user)) - user << "You unlock [src]." - src.locked = 0 - update_icon() - add_fingerprint(user) - return - else - user << "[src] is locked." - return - else - ..() - -/obj/structure/closet/crate/secure/attackby(obj/item/weapon/W, mob/user, params) - if(istype(W, /obj/item/weapon/card) && src.allowed(user) && !locked && !opened && !broken) - user << "You lock \the [src]." - src.locked = 1 - update_icon() - add_fingerprint(user) - return - - return ..() - -/obj/structure/closet/crate/secure/emag_act(mob/user) - if(locked && !broken) - src.locked = 0 - src.broken = 1 - update_icon() - overlays += sparks - spawn(6) overlays -= sparks //Tried lots of stuff but nothing works right. so i have to use this *sadface* - playsound(src.loc, "sparks", 60, 1) - user << "You unlock \the [src]." - add_fingerprint(user) - -/obj/structure/closet/crate/secure/emp_act(severity) - for(var/obj/O in src) - O.emp_act(severity) - if(!broken && !opened && prob(50/severity)) - if(!locked) - src.locked = 1 - update_icon() - else - src.locked = 0 - src.broken = 1 - update_icon() - overlays += sparks - spawn(6) overlays -= sparks //Tried lots of stuff but nothing works right. so i have to use this *sadface* - playsound(src.loc, 'sound/effects/sparks4.ogg', 75, 1) - if(!opened && prob(20/severity)) - if(!locked) - open() - else - src.req_access = list() - src.req_access += pick(get_all_accesses()) - ..() - diff --git a/code/game/objects/structures/crates_lockers/largecrate.dm b/code/game/objects/structures/crates_lockers/largecrate.dm deleted file mode 100644 index 6e2ce331f0b..00000000000 --- a/code/game/objects/structures/crates_lockers/largecrate.dm +++ /dev/null @@ -1,53 +0,0 @@ -/obj/structure/largecrate - name = "large crate" - desc = "A hefty wooden crate." - icon = 'icons/obj/crates.dmi' - icon_state = "densecrate" - density = 1 - var/obj/item/weapon/paper/manifest/manifest - -/obj/structure/largecrate/New() - ..() - update_icon() - -/obj/structure/largecrate/update_icon() - ..() - overlays.Cut() - if(manifest) - overlays += "manifest" - -/obj/structure/largecrate/attack_hand(mob/user) - if(manifest) - user << "You tear the manifest off of the crate." - playsound(src.loc, 'sound/items/poster_ripped.ogg', 75, 1) - manifest.loc = loc - if(ishuman(user)) - user.put_in_hands(manifest) - manifest = null - update_icon() - return - else - user << "You need a crowbar to pry this open!" - return - -/obj/structure/largecrate/attackby(obj/item/weapon/W, mob/user, params) - if(istype(W, /obj/item/weapon/crowbar)) - if(manifest) - manifest.loc = loc - manifest = null - update_icon() - new /obj/item/stack/sheet/mineral/wood(src) - var/turf/T = get_turf(src) - for(var/atom/movable/AM in contents) - AM.loc = T - user.visible_message("[user] pries \the [src] open.", \ - "You pry open \the [src].", \ - "You hear splitting wood.") - playsound(src.loc, 'sound/items/Deconstruct.ogg', 75, 1) - qdel(src) - else - return attack_hand(user) - -/obj/structure/largecrate/mule - icon_state = "mulecrate" - diff --git a/code/modules/cargo/order.dm b/code/modules/cargo/order.dm index 7f507454e21..96bf68bcc5c 100644 --- a/code/modules/cargo/order.dm +++ b/code/modules/cargo/order.dm @@ -33,6 +33,22 @@ return reqform +/datum/subsystem/shuttle/proc/generateSupplyOrder(packId, _orderedby, _orderedbyRank, _comment) + if(!packId) + return + var/datum/supply_packs/P = supply_packs[packId] + if(!P) + return + + var/datum/supply_order/O = new() + O.ordernum = ordernum++ + O.object = P + O.orderedby = _orderedby + O.orderedbyRank = _orderedbyRank + O.comment = _comment + + return O + /datum/supply_order/proc/createObject(atom/_loc, errors=0) if(!object) return @@ -77,15 +93,9 @@ A:amount = object.amount slip.info += "