Merge pull request #16072 from SandPoot/mail

Adds mail to cargo
This commit is contained in:
deathride58
2024-04-12 20:42:29 -04:00
committed by GitHub
66 changed files with 1099 additions and 119 deletions
+1 -1
View File
@@ -6,7 +6,7 @@
k_elasticity = 0
unit_name = "crate"
export_types = list(/obj/structure/closet/crate)
exclude_types = list(/obj/structure/closet/crate/large, /obj/structure/closet/crate/wooden, /obj/structure/closet/crate/bin)
exclude_types = list(/obj/structure/closet/crate/large, /obj/structure/closet/crate/wooden, /obj/structure/closet/crate/bin, /obj/structure/closet/crate/mail)
/datum/export/large/crate/total_printout(datum/export_report/ex, notes = TRUE) // That's why a goddamn metal crate costs that much.
. = ..()
+2 -2
View File
@@ -23,7 +23,7 @@
/obj/item/stack/packageWrap,
/obj/item/stack/packageWrap,
/obj/item/stack/packageWrap,
/obj/item/destTagger,
/obj/item/dest_tagger,
/obj/item/hand_labeler)
crate_type = /obj/structure/closet/crate/wooden
crate_name = "wrapping paper crate"
@@ -35,7 +35,7 @@
contains = list(/obj/item/stamp,
/obj/item/stamp/denied,
/obj/item/export_scanner,
/obj/item/destTagger,
/obj/item/dest_tagger,
/obj/item/hand_labeler,
/obj/item/toner,
/obj/item/toner,
@@ -473,3 +473,17 @@
list_reagents = list(/datum/reagent/consumable/eggyolk = 5)
tastes = list("dried eggs" = 1, "confusion" = 1)
dried_being = /mob/living/simple_animal/chicken
/obj/item/reagent_containers/food/snacks/cube/chicken
name = "chicken cube"
desc = "A new Nanotrasen classic, the chicken cube. Tastes like everything!"
list_reagents = list(/datum/reagent/consumable/eggyolk = 30, /datum/reagent/medicine/strange_reagent = 1)
tastes = list("chicken" = 1, "the country" = 1, "chicken bouillon" = 1)
dried_being = /mob/living/simple_animal/chicken
/obj/item/reagent_containers/food/snacks/cube/bee
name = "bee cube"
desc = "We were sure it was a good idea. Just add water."
list_reagents = list(/datum/reagent/consumable/honey = 10, /datum/reagent/toxin = 5, /datum/reagent/medicine/strange_reagent = 1)
tastes = list("buzzing" = 1, "honey" = 1, "regret" = 1)
dried_being = /mob/living/simple_animal/hostile/poison/bees
+8
View File
@@ -12,6 +12,9 @@
var/year_offset = 0
var/obj/item/drone_hat //If this is defined, drones without a default hat will spawn with this one during the holiday; check drones_as_items.dm to see this used
// Special things to be given during this!
var/list/mail_goodies
// This proc gets run before the game starts when the holiday is activated. Do festive shit here.
/datum/holiday/proc/celebrate()
return
@@ -398,6 +401,11 @@
end_day = 2
end_month = NOVEMBER
mail_goodies = list(
/obj/item/reagent_containers/food/snacks/lollipop = 10,
/obj/item/reagent_containers/food/snacks/chocolatebar = 10
)
/datum/holiday/halloween/greet()
return "Have a spooky Halloween!"
+12
View File
@@ -76,6 +76,14 @@
var/bounty_types = CIV_JOB_BASIC
/// Goodies that can be received via the mail system.
// this is a weighted list.
/// Keep the _job definition for this empty and use /obj/item/mail to define general gifts.
var/list/mail_goodies = list()
/// If this job's mail goodies compete with generic goodies.
var/exclusive_mail_goodies = FALSE
//If a job complies with dresscodes, loadout items will not be equipped instead of the job's outfit, instead placing the items into the player's backpack.
var/dresscodecompliant = TRUE
// How much threat this job is worth in dynamic. Is subtracted if the player's not an antag, added if they are.
@@ -396,3 +404,7 @@
/datum/job/proc/after_latejoin_spawn(mob/living/spawning)
SHOULD_CALL_PARENT(TRUE)
SEND_GLOBAL_SIGNAL(COMSIG_GLOB_JOB_AFTER_LATEJOIN_SPAWN, src, spawning)
/// An overridable getter for more dynamic goodies.
/datum/job/proc/get_mail_goodies(mob/recipient)
return mail_goodies
+10 -1
View File
@@ -20,11 +20,20 @@ Assistant
dresscodecompliant = FALSE
always_can_respawn_as = TRUE
threat = 0.2
family_heirlooms = list(
/obj/item/clothing/gloves/cut/family
)
mail_goodies = list(
/obj/item/storage/box/donkpockets = 10,
/obj/item/clothing/mask/gas = 10,
/obj/item/clothing/gloves/color/fyellow = 7,
/obj/item/choice_beacon/music = 5,
/obj/item/toy/sprayoncan = 3,
/obj/item/crowbar/large = 1
)
/datum/job/assistant/get_access()
if(CONFIG_GET(flag/assistants_have_maint_access) || !CONFIG_GET(flag/jobs_have_minimal_access)) //Config has assistant maint access set
. = ..()
+8 -1
View File
@@ -20,13 +20,20 @@
bounty_types = CIV_JOB_DRINK
display_order = JOB_DISPLAY_ORDER_BARTENDER
threat = 0.5
family_heirlooms = list(
/obj/item/reagent_containers/rag,
/obj/item/clothing/head/that,
/obj/item/reagent_containers/food/drinks/shaker
)
mail_goodies = list(
/obj/item/storage/box/rubbershot = 30,
/datum/reagent/consumable/clownstears = 10,
/obj/item/stack/sheet/mineral/plasma = 10,
/obj/item/stack/sheet/mineral/uranium = 10,
)
/datum/outfit/job/bartender
name = "Bartender"
jobtype = /datum/job/bartender
+9
View File
@@ -26,6 +26,15 @@
/obj/item/toy/plush/beeplushie,
)
mail_goodies = list(
/datum/reagent/toxin/mutagen = 20,
/datum/reagent/saltpetre = 20,
/datum/reagent/diethylamine = 20,
/obj/item/gun/energy/floragun = 10,
/obj/effect/spawner/lootdrop/seed_vault = 5,// These are strong, rare seeds, so use sparingly.
/obj/item/reagent_containers/food/snacks/cube/bee = 2
)
/datum/outfit/job/botanist
name = "Botanist"
jobtype = /datum/job/hydro
+6
View File
@@ -38,6 +38,12 @@
/obj/item/toy/figure/captain
)
mail_goodies = list(
/obj/item/clothing/mask/cigarette/cigar/havana = 20,
/obj/item/storage/fancy/cigarettes/cigars/havana = 15,
/obj/item/reagent_containers/food/drinks/bottle/champagne = 10
)
/datum/job/captain/get_access()
return get_all_accesses()
@@ -21,11 +21,18 @@
display_order = JOB_DISPLAY_ORDER_CARGO_TECHNICIAN
bounty_types = CIV_JOB_RANDOM
threat = 0.2
family_heirlooms = list(
/obj/item/clipboard
)
mail_goodies = list(
/obj/item/pizzabox = 10,
/obj/item/stack/sheet/mineral/gold = 5,
/obj/item/stack/sheet/mineral/uranium = 4,
/obj/item/stack/sheet/mineral/diamond = 3,
/obj/item/gun/ballistic/shotgun/boltaction = 1
)
/datum/outfit/job/cargo_tech
name = "Cargo Technician"
jobtype = /datum/job/cargo_tech
+8 -1
View File
@@ -19,12 +19,19 @@
display_order = JOB_DISPLAY_ORDER_CHAPLAIN
threat = 0.5
family_heirlooms = list(
/obj/item/toy/windupToolbox,
/obj/item/reagent_containers/food/drinks/bottle/holywater
)
mail_goodies = list(
/obj/item/reagent_containers/food/drinks/bottle/holywater = 30,
/obj/item/toy/plush/awakenedplushie = 10,
/obj/item/grenade/chem_grenade/holy = 5,
/obj/item/toy/plush/narplush = 2,
// /obj/item/toy/plush/ratplush = 1
)
/datum/job/chaplain/after_spawn(mob/living/H, client/C)
. = ..()
+8 -1
View File
@@ -24,12 +24,19 @@
threat = 1.5
starting_modifiers = list(/datum/skill_modifier/job/surgery, /datum/skill_modifier/job/affinity/surgery)
family_heirlooms = list(
/obj/item/book/manual/wiki/chemistry,
/obj/item/fermichem/pHbooklet
)
mail_goodies = list(
/datum/reagent/flash_powder = 15,
// /datum/reagent/exotic_stabilizer = 5,
/datum/reagent/toxin/leadacetate = 5,
/obj/item/paper/secretrecipe = 1
)
/datum/outfit/job/chemist
name = "Chemist"
jobtype = /datum/job/chemist
+10 -1
View File
@@ -37,7 +37,7 @@
display_order = JOB_DISPLAY_ORDER_CHIEF_ENGINEER
blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/brainproblems, /datum/quirk/paraplegic, /datum/quirk/insanity)
threat = 2
family_heirlooms = list(
/obj/item/clothing/head/hardhat,
/obj/item/screwdriver/brass/family,
@@ -47,6 +47,15 @@
/obj/item/wirecutters/brass/family
)
mail_goodies = list(
/obj/item/reagent_containers/food/snacks/cracker = 25, //you know. for poly
/obj/item/stack/sheet/mineral/diamond = 15,
/obj/item/stack/sheet/mineral/uranium/five = 15,
/obj/item/stack/sheet/mineral/plasma/five = 15,
/obj/item/stack/sheet/mineral/gold = 15,
/obj/effect/spawner/lootdrop/space/fancytool/engineonly = 3
)
/datum/outfit/job/ce
name = "Chief Engineer"
jobtype = /datum/job/chief_engineer
@@ -35,7 +35,7 @@
threat = 2
starting_modifiers = list(/datum/skill_modifier/job/surgery, /datum/skill_modifier/job/affinity/surgery)
family_heirlooms = list(
/obj/item/storage/firstaid/ancient/heirloom,
/obj/item/scalpel,
@@ -45,6 +45,13 @@
/obj/item/cautery
)
mail_goodies = list(
/obj/effect/spawner/lootdrop/organ_spawner = 10,
// /obj/effect/spawner/lootdrop/memeorgans = 8,
/obj/effect/spawner/lootdrop/space/fancytool/advmedicalonly = 4,
/obj/effect/spawner/lootdrop/space/fancytool/raremedicalonly = 1
)
/datum/outfit/job/cmo
name = "Chief Medical Officer"
jobtype = /datum/job/cmo
+9 -1
View File
@@ -21,11 +21,19 @@
display_order = JOB_DISPLAY_ORDER_CLOWN
threat = 0 // honk
family_heirlooms = list(
/obj/item/bikehorn/golden
)
mail_goodies = list(
/obj/item/reagent_containers/food/snacks/grown/banana = 100,
/obj/item/reagent_containers/food/snacks/pie/cream = 50,
/obj/item/clothing/shoes/clown_shoes/combat = 10,
/obj/item/reagent_containers/spray/waterflower/lube = 20, // lube
/obj/item/reagent_containers/spray/waterflower/superlube = 1 // Superlube, good lord.
)
/datum/outfit/job/clown
name = "Clown"
jobtype = /datum/job/clown
+11
View File
@@ -28,6 +28,17 @@
/obj/item/clothing/head/chefhat
)
mail_goodies = list(
/obj/item/storage/box/ingredients/wildcard = 80,
/datum/reagent/consumable/caramel = 20,
/obj/item/reagent_containers/food/condiment/flour = 20,
/obj/item/reagent_containers/food/condiment/rice = 20,
/obj/item/reagent_containers/food/condiment/enzyme = 15,
/obj/item/reagent_containers/food/condiment/soymilk = 15,
/obj/item/kitchen/knife = 4,
/obj/item/kitchen/knife/butcher = 2
)
/datum/outfit/job/cook
name = "Cook"
jobtype = /datum/job/cook
+12 -1
View File
@@ -27,11 +27,22 @@
display_order = JOB_DISPLAY_ORDER_DETECTIVE
blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/brainproblems, /datum/quirk/nonviolent, /datum/quirk/paraplegic, /datum/quirk/monophobia)
threat = 1
family_heirlooms = list(
/obj/item/reagent_containers/food/drinks/flask/det
)
mail_goodies = list(
/obj/item/storage/fancy/cigarettes = 25,
/obj/item/ammo_box/c38 = 25,
/obj/item/ammo_box/c38/dumdum = 5,
/obj/item/ammo_box/c38/hotshot = 5,
/obj/item/ammo_box/c38/iceblox = 5,
/obj/item/ammo_box/c38/match = 5,
/obj/item/ammo_box/c38/trac = 5,
/obj/item/storage/belt/holster/full = 1 // detective/full
)
/datum/outfit/job/detective
name = "Detective"
jobtype = /datum/job/detective
+5 -1
View File
@@ -24,11 +24,15 @@
threat = 1.5
starting_modifiers = list(/datum/skill_modifier/job/surgery, /datum/skill_modifier/job/affinity/surgery)
family_heirlooms = list(
/obj/item/clothing/under/shorts/purple
)
mail_goodies = list(
/obj/item/storage/box/monkeycubes = 10
)
/datum/outfit/job/geneticist
name = "Geneticist"
jobtype = /datum/job/geneticist
@@ -39,11 +39,15 @@
blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/brainproblems, /datum/quirk/prosopagnosia, /datum/quirk/insanity)
threat = 2
family_heirlooms = list(
/obj/item/reagent_containers/food/drinks/trophy/silver_cup
)
mail_goodies = list(
/obj/item/card/id/silver = 10,
/obj/item/stack/sheet/bone = 5
)
/datum/outfit/job/hop
name = "Head of Personnel"
@@ -59,3 +63,11 @@
/obj/item/melee/classic_baton/telescopic=1, /obj/item/modular_computer/tablet/preset/advanced = 1)
chameleon_extras = list(/obj/item/gun/energy/e_gun, /obj/item/stamp/hop)
//only pet worth reviving
/datum/job/hop/get_mail_goodies(mob/recipient)
. = ..()
// Strange Reagent if the pet is dead.
for(var/mob/living/simple_animal/pet/dog/corgi/Ian/staff_pet in GLOB.dead_mob_list)
. += list(/datum/reagent/medicine/strange_reagent = 20)
break
+7 -1
View File
@@ -19,7 +19,7 @@
display_order = JOB_DISPLAY_ORDER_JANITOR
threat = 0.2
family_heirlooms = list(
/obj/item/mop,
/obj/item/clothing/suit/caution,
@@ -27,6 +27,12 @@
/obj/item/soap
)
mail_goodies = list(
/obj/item/grenade/chem_grenade/cleaner = 30,
/obj/item/storage/box/lights/mixed = 20,
/obj/item/lightreplacer = 10
)
/datum/outfit/job/janitor
name = "Janitor"
jobtype = /datum/job/janitor
+11 -1
View File
@@ -22,7 +22,7 @@
threat = 0.5
starting_modifiers = list(/datum/skill_modifier/job/surgery, /datum/skill_modifier/job/affinity/surgery)
family_heirlooms = list(
/obj/item/storage/firstaid/ancient/heirloom,
/obj/item/scalpel,
@@ -32,6 +32,16 @@
/obj/item/cautery
)
mail_goodies = list(
/obj/item/healthanalyzer/advanced = 15,
/obj/item/scalpel/advanced = 6,
/obj/item/retractor/advanced = 6,
/obj/item/surgicaldrill/advanced = 6,
/datum/reagent/toxin/formaldehyde = 6,
/obj/effect/spawner/lootdrop/organ_spawner = 5,
// /obj/effect/spawner/lootdrop/memeorgans = 1
)
/datum/outfit/job/doctor
name = "Medical Doctor"
jobtype = /datum/job/doctor
+8 -1
View File
@@ -20,11 +20,18 @@
display_order = JOB_DISPLAY_ORDER_MIME
threat = 0
family_heirlooms = list(
/obj/item/reagent_containers/food/snacks/baguette
)
mail_goodies = list(
/obj/item/reagent_containers/food/snacks/baguette = 15,
/obj/item/reagent_containers/food/snacks/store/cheesewheel = 10,
/obj/item/reagent_containers/food/drinks/bottle/bottleofnothing = 10,
// /obj/item/book/mimery = 1,
)
/datum/job/mime/after_spawn(mob/living/carbon/human/H, client/C)
. = ..()
H.apply_pref_name("mime", C)
+10 -1
View File
@@ -23,11 +23,20 @@
threat = 0.5
starting_modifiers = list(/datum/skill_modifier/job/surgery, /datum/skill_modifier/job/affinity/surgery)
family_heirlooms = list(
/obj/item/storage/firstaid/ancient/heirloom
)
mail_goodies = list(
/obj/item/reagent_containers/hypospray/medipen = 20,
/obj/item/reagent_containers/hypospray/medipen/oxandrolone = 10,
/obj/item/reagent_containers/hypospray/medipen/salacid = 10,
/obj/item/reagent_containers/hypospray/medipen/salbutamol = 10,
/obj/item/reagent_containers/hypospray/medipen/penacid = 10,
/obj/item/reagent_containers/hypospray/medipen/survival = 5 // survival/luxury
)
/datum/outfit/job/paramedic
name = "Paramedic"
jobtype = /datum/job/paramedic
+6 -1
View File
@@ -13,11 +13,16 @@
plasma_outfit = /datum/outfit/plasmaman/prisoner
display_order = JOB_DISPLAY_ORDER_PRISONER
family_heirlooms = list(
/obj/item/pen/blue
)
exclusive_mail_goodies = TRUE
mail_goodies = list(
/obj/effect/spawner/lootdrop/prison_contraband = 1
)
/datum/job/prisoner/get_latejoin_spawn_point()
return get_roundstart_spawn_point()
+5 -1
View File
@@ -32,12 +32,16 @@
display_order = JOB_DISPLAY_ORDER_QUARTERMASTER
blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/brainproblems, /datum/quirk/insanity)
threat = 0.5
family_heirlooms = list(
/obj/item/stamp,
/obj/item/stamp/denied
)
mail_goodies = list(
/obj/item/circuitboard/machine/emitter = 3
)
/datum/outfit/job/quartermaster
name = "Quartermaster"
jobtype = /datum/job/qm
@@ -38,11 +38,17 @@
starting_modifiers = list(/datum/skill_modifier/job/level/wiring)
blacklisted_quirks = list(/datum/quirk/mute, /datum/quirk/brainproblems, /datum/quirk/insanity)
threat = 5
family_heirlooms = list(
/obj/item/toy/plush/slimeplushie
)
mail_goodies = list(
/obj/item/storage/box/monkeycubes = 30,
/obj/item/circuitboard/machine/sleeper/party = 3,
/obj/item/borg/upgrade/ai = 2
)
/datum/outfit/job/rd
name = "Research Director"
jobtype = /datum/job/rd
+7 -1
View File
@@ -24,11 +24,17 @@
display_order = JOB_DISPLAY_ORDER_ROBOTICIST
threat = 1
family_heirlooms = list(
/obj/item/toy/figure/borg
)
mail_goodies = list(
/obj/item/storage/box/flashes = 20,
/obj/item/stack/sheet/metal/twenty = 15,
/obj/item/modular_computer/tablet/preset/advanced = 5
)
/datum/outfit/job/roboticist
name = "Roboticist"
jobtype = /datum/job/roboticist
+7 -1
View File
@@ -22,11 +22,17 @@
starting_modifiers = list(/datum/skill_modifier/job/level/wiring/basic)
display_order = JOB_DISPLAY_ORDER_SCIENTIST
threat = 1.2
family_heirlooms = list(
/obj/item/toy/plush/slimeplushie
)
mail_goodies = list(
/obj/item/raw_anomaly_core/random = 10,
// /obj/item/disk/tech_disk/spaceloot = 2,
/obj/item/camera_bug = 1
)
/datum/outfit/job/scientist
name = "Scientist"
jobtype = /datum/job/scientist
@@ -34,6 +34,14 @@
/obj/item/clothing/head/beret/sec
)
mail_goodies = list(
/obj/item/reagent_containers/food/snacks/donut/caramel = 10,
/obj/item/reagent_containers/food/snacks/donut/matcha = 10,
/obj/item/reagent_containers/food/snacks/donut/blumpkin = 5,
// /obj/item/clothing/mask/whistle = 5,
/obj/item/melee/baton/boomerang/loaded = 1
)
/datum/job/officer/get_access()
var/list/L = list()
L |= ..() | check_config_for_sec_maint()
@@ -27,7 +27,7 @@
display_order = JOB_DISPLAY_ORDER_STATION_ENGINEER
threat = 1
family_heirlooms = list(
/obj/item/clothing/head/hardhat,
/obj/item/screwdriver/brass/family,
@@ -37,6 +37,13 @@
/obj/item/wirecutters/brass/family
)
mail_goodies = list(
/obj/item/storage/box/lights/mixed = 20,
/obj/item/lightreplacer = 10,
/obj/item/holosign_creator/engineering = 8,
/obj/item/clothing/head/hardhat/red/upgraded = 1
)
/datum/outfit/job/engineer
name = "Station Engineer"
jobtype = /datum/job/engineer
+9 -1
View File
@@ -25,11 +25,19 @@
threat = 1.5
starting_modifiers = list(/datum/skill_modifier/job/surgery, /datum/skill_modifier/job/affinity/surgery)
family_heirlooms = list(
/obj/item/reagent_containers/syringe
)
mail_goodies = list(
/obj/item/reagent_containers/glass/bottle/random_virus = 15,
/obj/item/reagent_containers/glass/bottle/formaldehyde = 10,
/obj/item/reagent_containers/glass/bottle/synaptizine = 10,
/obj/item/stack/sheet/mineral/plasma = 10,
/obj/item/stack/sheet/mineral/uranium = 5
)
/datum/outfit/job/virologist
name = "Virologist"
jobtype = /datum/job/virologist
+9
View File
@@ -34,6 +34,15 @@
/obj/item/book/manual/wiki/security_space_law
)
mail_goodies = list(
/obj/item/storage/fancy/cigarettes = 15,
/obj/item/storage/box/handcuffs = 10,
/obj/item/storage/box/teargas = 10,
/obj/item/storage/box/flashbangs = 10,
/obj/item/storage/box/rubbershot = 10,
/obj/item/storage/box/lethalshot = 5
)
/datum/job/warden/get_access()
var/list/L = list()
L = ..() | check_config_for_sec_maint()
@@ -903,7 +903,7 @@
/obj/item/gripper/mining,
/obj/item/cyborg_clamp,
/obj/item/stack/marker_beacon/cyborg,
/obj/item/destTagger,
/obj/item/dest_tagger,
/obj/item/stack/packageWrap/cyborg,
/obj/item/card/id/miningborg)
emag_modules = list(/obj/item/borg/stun)
@@ -1063,7 +1063,7 @@
/obj/item/stack/sheet/rglass/cyborg,
/obj/item/stack/rods/cyborg,
/obj/item/stack/tile/plasteel/cyborg,
/obj/item/destTagger/borg,
/obj/item/dest_tagger/borg,
/obj/item/stack/cable_coil/cyborg,
/obj/item/pinpointer/syndicate_cyborg,
/obj/item/borg_chameleon,
@@ -1192,7 +1192,7 @@
/obj/item/stack/sheet/rglass/cyborg,
/obj/item/stack/rods/cyborg,
/obj/item/stack/tile/plasteel/cyborg,
/obj/item/destTagger/borg,
/obj/item/dest_tagger/borg,
/obj/item/stack/cable_coil/cyborg,
/obj/item/borg_chameleon,
/obj/item/pinpointer/spider_cyborg)
+1 -1
View File
@@ -51,7 +51,7 @@
return
if(!mod.wearer.Adjacent(target))
return
if(istype(target, /obj/structure/closet) || istype(target, /obj/structure/bigDelivery))
if(istype(target, /obj/structure/closet) || istype(target, /obj/structure/big_delivery))
var/atom/movable/picked_crate = target
if(!check_crate_pickup(picked_crate))
return
+1 -1
View File
@@ -210,7 +210,7 @@
flush = FALSE
/obj/machinery/disposal/proc/newHolderDestination(obj/structure/disposalholder/H)
for(var/obj/item/smallDelivery/O in src)
for(var/obj/item/small_delivery/O in src)
H.tomail = TRUE
return
+8 -14
View File
@@ -41,21 +41,15 @@
// now everything inside the disposal gets put into the holder
// note AM since can contain mobs or objs
for(var/A in D)
var/atom/movable/AM = A
if(AM == src)
var/atom/movable/atom_in_transit = A
if(atom_in_transit == src)
continue
SEND_SIGNAL(AM, COMSIG_MOVABLE_DISPOSING, src, D)
AM.forceMove(src)
if(istype(AM, /obj/structure/bigDelivery) && !hasmob)
var/obj/structure/bigDelivery/T = AM
src.destinationTag = T.sortTag
if(istype(AM, /obj/item/smallDelivery) && !hasmob)
var/obj/item/smallDelivery/T = AM
src.destinationTag = T.sortTag
else if(istype(AM, /mob/living/silicon/robot))
var/obj/item/destTagger/borg/tagger = locate() in AM
if (tagger)
src.destinationTag = tagger.currTag
SEND_SIGNAL(atom_in_transit, COMSIG_MOVABLE_DISPOSING, src, D, hasmob)
atom_in_transit.forceMove(src)
if(iscyborg(atom_in_transit))
var/obj/item/dest_tagger/borg/tagger = locate() in atom_in_transit
if(tagger)
destinationTag = tagger.currTag
// start the movement process
@@ -60,8 +60,8 @@
/obj/structure/disposalpipe/sorting/mail/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/destTagger))
var/obj/item/destTagger/O = I
if(istype(I, /obj/item/dest_tagger))
var/obj/item/dest_tagger/O = I
if(O.currTag)// Tagger has a tag set
if(O.currTag in sortTypes)
+48 -31
View File
@@ -1,4 +1,4 @@
/obj/structure/bigDelivery
/obj/structure/big_delivery
name = "large parcel"
desc = "A large delivery parcel."
icon = 'icons/obj/storage.dmi'
@@ -6,10 +6,14 @@
density = TRUE
mouse_drag_pointer = MOUSE_ACTIVE_POINTER
var/giftwrapped = FALSE
var/sortTag = 0
var/sort_tag = 0
var/obj/item/barcode/sticker
/obj/structure/bigDelivery/interact(mob/user)
/obj/structure/big_delivery/Initialize()
. = ..()
RegisterSignal(src, COMSIG_MOVABLE_DISPOSING, PROC_REF(disposal_handling))
/obj/structure/big_delivery/interact(mob/user)
to_chat(user, "<span class='notice'>You start to unwrap the package...</span>")
if(!do_after(user, 15, target = user))
return
@@ -18,29 +22,29 @@
unwrap_contents()
qdel(src)
/obj/structure/bigDelivery/Destroy()
/obj/structure/big_delivery/Destroy()
var/turf/T = get_turf(src)
for(var/atom/movable/AM in contents)
AM.forceMove(T)
return ..()
/obj/structure/bigDelivery/examine(mob/user)
/obj/structure/big_delivery/examine(mob/user)
. = ..()
if(sticker)
. += "There's a barcode attached to the side."
/obj/structure/bigDelivery/contents_explosion(severity, target, origin)
/obj/structure/big_delivery/contents_explosion(severity, target, origin)
for(var/atom/movable/AM in contents)
AM.ex_act(severity, target, origin)
/obj/structure/bigDelivery/attackby(obj/item/W, mob/user, params)
if(istype(W, /obj/item/destTagger))
var/obj/item/destTagger/O = W
/obj/structure/big_delivery/attackby(obj/item/W, mob/user, params)
if(istype(W, /obj/item/dest_tagger))
var/obj/item/dest_tagger/O = W
if(sortTag != O.currTag)
if(sort_tag != O.currTag)
var/tag = uppertext(GLOB.TAGGERLOCATIONS[O.currTag])
to_chat(user, "<span class='notice'>*[tag]*</span>")
sortTag = O.currTag
sort_tag = O.currTag
playsound(loc, 'sound/machines/twobeep.ogg', 100, 1)
else if(istype(W, /obj/item/pen))
@@ -108,7 +112,7 @@
else
return ..()
/obj/structure/bigDelivery/relay_container_resist(mob/living/user, obj/O)
/obj/structure/big_delivery/relay_container_resist(mob/living/user, obj/O)
if(ismovable(loc))
var/atom/movable/AM = loc //can't unwrap the wrapped container if it's inside something.
AM.relay_container_resist(user, O)
@@ -127,26 +131,35 @@
if(user.loc == src) //so we don't get the message if we resisted multiple times and succeeded.
to_chat(user, "<span class='warning'>You fail to remove [O]'s wrapping!</span>")
/obj/structure/bigDelivery/proc/unwrap_contents()
/obj/structure/big_delivery/proc/unwrap_contents()
if(!sticker)
return
for(var/obj/I in src.GetAllContents())
SEND_SIGNAL(I, COMSIG_STRUCTURE_UNWRAPPED)
/obj/item/smallDelivery
/obj/structure/big_delivery/proc/disposal_handling(disposal_source, obj/structure/disposalholder/disposal_holder, obj/machinery/disposal/disposal_machine, hasmob)
SIGNAL_HANDLER
if(!hasmob)
disposal_holder.destinationTag = sort_tag
/obj/item/small_delivery
name = "parcel"
desc = "A brown paper delivery parcel."
icon = 'icons/obj/storage.dmi'
icon_state = "deliverypackage3"
var/giftwrapped = 0
var/sortTag = 0
var/sort_tag = 0
var/obj/item/barcode/sticker
/obj/item/smallDelivery/contents_explosion(severity, target, origin)
/obj/item/small_delivery/Initialize()
. = ..()
RegisterSignal(src, COMSIG_MOVABLE_DISPOSING, PROC_REF(disposal_handling))
/obj/item/small_delivery/contents_explosion(severity, target, origin)
for(var/atom/movable/AM in contents)
AM.ex_act(severity, target, origin)
/obj/item/smallDelivery/attack_self(mob/user)
/obj/item/small_delivery/attack_self(mob/user)
to_chat(user, "<span class='notice'>You start to unwrap the package...</span>")
if(!do_after(user, 15, target = user))
return
@@ -159,7 +172,7 @@
new /obj/effect/decal/cleanable/wrapping(get_turf(user))
qdel(src)
/obj/item/smallDelivery/attack_self_tk(mob/user)
/obj/item/small_delivery/attack_self_tk(mob/user)
if(ismob(loc))
var/mob/M = loc
M.temporarilyRemoveItemFromInventory(src, TRUE)
@@ -175,14 +188,14 @@
unwrap_contents()
qdel(src)
/obj/item/smallDelivery/attackby(obj/item/W, mob/user, params)
if(istype(W, /obj/item/destTagger))
var/obj/item/destTagger/O = W
/obj/item/small_delivery/attackby(obj/item/W, mob/user, params)
if(istype(W, /obj/item/dest_tagger))
var/obj/item/dest_tagger/O = W
if(sortTag != O.currTag)
if(sort_tag != O.currTag)
var/tag = uppertext(GLOB.TAGGERLOCATIONS[O.currTag])
to_chat(user, "<span class='notice'>*[tag]*</span>")
sortTag = O.currTag
sort_tag = O.currTag
playsound(loc, 'sound/machines/twobeep.ogg', 100, 1)
else if(istype(W, /obj/item/pen))
@@ -249,19 +262,23 @@
overlaystring = copytext_char(overlaystring, 5) //5 == length("gift") + 1
add_overlay(overlaystring)
/obj/item/smallDelivery/proc/unwrap_contents()
/obj/item/small_delivery/proc/unwrap_contents()
if(!sticker)
return
for(var/obj/I in src.GetAllContents())
SEND_SIGNAL(I, COMSIG_ITEM_UNWRAPPED)
/obj/item/smallDelivery/examine(mob/user)
/obj/item/small_delivery/examine(mob/user)
. = ..()
if(sticker)
. += "There's a barcode attached to the side."
/obj/item/small_delivery/proc/disposal_handling(disposal_source, obj/structure/disposalholder/disposal_holder, obj/machinery/disposal/disposal_machine, hasmob)
SIGNAL_HANDLER
if(!hasmob)
disposal_holder.destinationTag = sort_tag
/obj/item/destTagger
/obj/item/dest_tagger
name = "destination tagger"
desc = "Used to set the destination of properly wrapped packages."
icon = 'icons/obj/device.dmi'
@@ -275,11 +292,11 @@
flags_1 = CONDUCT_1
slot_flags = ITEM_SLOT_BELT
/obj/item/destTagger/borg
/obj/item/dest_tagger/borg
name = "cyborg destination tagger"
desc = "Used to fool the disposal mail network into thinking that you're a harmless parcel. Does actually work as a regular destination tagger as well."
/obj/item/destTagger/suicide_act(mob/living/user)
/obj/item/dest_tagger/suicide_act(mob/living/user)
user.visible_message("<span class='suicide'>[user] begins tagging [user.p_their()] final destination! It looks like [user.p_theyre()] trying to commit suicide!</span>")
if (islizard(user))
to_chat(user, "<span class='notice'>*HELL*</span>")//lizard nerf
@@ -288,7 +305,7 @@
playsound(src, 'sound/machines/twobeep.ogg', 100, 1)
return BRUTELOSS
/obj/item/destTagger/proc/openwindow(mob/user)
/obj/item/dest_tagger/proc/openwindow(mob/user)
var/dat = "<tt><center><h1><b>TagMaster 2.2</b></h1></center>"
dat += "<table style='width:100%; padding:4px;'><tr>"
@@ -303,12 +320,12 @@
user << browse(dat, "window=destTagScreen;size=450x350")
onclose(user, "destTagScreen")
/obj/item/destTagger/attack_self(mob/user)
/obj/item/dest_tagger/attack_self(mob/user)
if(!locked_destination)
openwindow(user)
return
/obj/item/destTagger/Topic(href, href_list)
/obj/item/dest_tagger/Topic(href, href_list)
add_fingerprint(usr)
if(href_list["nextTag"])
var/n = text2num(href_list["nextTag"])
@@ -56,7 +56,7 @@
id = "desttagger"
build_type = AUTOLATHE | PROTOLATHE
materials = list(/datum/material/iron = 250, /datum/material/glass = 125)
build_path = /obj/item/destTagger
build_path = /obj/item/dest_tagger
category = list("initial", "Electronics")
/datum/design/handlabeler
+26
View File
@@ -27,6 +27,9 @@ GLOBAL_LIST_INIT(blacklisted_cargo_types, typecacheof(list(
/obj/machinery/syndicatebomb,
/obj/item/hilbertshotel,
/obj/machinery/launchpad,
/obj/machinery/disposal,
/obj/structure/disposalpipe,
/obj/item/mail,
/obj/item/hilbertshotel,
/obj/machinery/camera,
/obj/item/gps,
@@ -102,6 +105,7 @@ GLOBAL_LIST_INIT(cargo_shuttle_leave_behind_typecache, typecacheof(list(
/obj/docking_port/mobile/supply/initiate_docking()
if(getDockedId() == "supply_away") // Buy when we leave home.
buy()
create_mail()
. = ..() // Fly/enter transit.
if(. != DOCKING_SUCCESS)
return
@@ -236,6 +240,7 @@ GLOBAL_LIST_INIT(cargo_shuttle_leave_behind_typecache, typecacheof(list(
SO.generateCombo(miscboxes[I], I, misc_contents[I])
qdel(SO)
SSeconomy.import_total += value
var/datum/bank_account/cargo_budget = SSeconomy.get_dep_account(ACCOUNT_CAR)
investigate_log("[purchases] orders in this shipment, worth [value] credits. [cargo_budget.account_balance] credits left.", INVESTIGATE_CARGO)
@@ -286,8 +291,29 @@ GLOBAL_LIST_INIT(cargo_shuttle_leave_behind_typecache, typecacheof(list(
D.adjust_money(gain)
msg = copytext_char(msg, 1, MAX_MESSAGE_LEN)
SSeconomy.export_total += (D.account_balance - presale_points)
SSshuttle.centcom_message = msg
investigate_log("Shuttle contents sold for [D.account_balance - presale_points] credits. Contents: [ex.exported_atoms ? ex.exported_atoms.Join(",") + "." : "none."] Message: [SSshuttle.centcom_message || "none."]", INVESTIGATE_CARGO)
/*
Generates a box of mail depending on our exports and imports.
Applied in the cargo shuttle sending/arriving, by building the crate if the round is ready to introduce mail based on the economy subsystem.
Then, fills the mail crate with mail, by picking applicable crew who can recieve mail at the time to sending.
*/
/obj/docking_port/mobile/supply/proc/create_mail()
//Early return if there's no mail waiting to prevent taking up a slot.
if(!SSeconomy.mail_waiting)
return
//spawn crate
var/list/empty_turfs = list()
for(var/area/shuttle/shuttle_area as anything in shuttle_areas)
for(var/turf/open/floor/shuttle_floor in shuttle_area)
if(is_blocked_turf(shuttle_floor))
continue
empty_turfs += shuttle_floor
new /obj/structure/closet/crate/mail/economy(pick(empty_turfs))
#undef GOODY_FREE_SHIPPING_MAX
#undef CRATE_TAX
+18 -10
View File
@@ -144,16 +144,24 @@
icon_state = "cargodrobe"
product_ads = "Upgraded Assistant Style! Pick yours today!;These shorts are comfy and easy to wear, get yours now!"
vend_reply = "Thank you for using the CargoDrobe!"
products = list(/obj/item/clothing/suit/hooded/wintercoat/cargo = 3,
/obj/item/clothing/under/rank/cargo/tech = 5,
/obj/item/clothing/under/rank/cargo/tech/skirt = 5,
/obj/item/clothing/under/rank/cargo/util = 5,
/obj/item/clothing/suit/toggle/labcoat/depjacket/sup = 5,
/obj/item/clothing/under/rank/cargo/tech/long = 5,
/obj/item/clothing/shoes/sneakers/black = 5,
/obj/item/clothing/gloves/fingerless = 5,
/obj/item/clothing/head/soft = 5,
/obj/item/radio/headset/headset_cargo = 3)
products = list(
/obj/item/storage/bag/mail = 3,
/obj/item/clothing/suit/hooded/wintercoat/cargo = 3,
/obj/item/clothing/under/rank/cargo/tech = 3,
/obj/item/clothing/under/rank/cargo/tech/skirt = 3,
/obj/item/clothing/under/rank/cargo/util = 3,
/obj/item/clothing/suit/toggle/labcoat/depjacket/sup = 3,
/obj/item/clothing/under/rank/cargo/tech/long = 3,
/obj/item/clothing/shoes/sneakers/black = 3,
/obj/item/clothing/gloves/fingerless = 3,
/obj/item/clothing/head/soft = 3,
/obj/item/radio/headset/headset_cargo = 3
)
premium = list(
/obj/item/clothing/under/rank/cargo/miner = 3,
/obj/item/clothing/head/mailman = 1,
/obj/item/clothing/under/misc/mailman = 1
)
refill_canister = /obj/item/vending_refill/wardrobe/cargo_wardrobe
payment_department = ACCOUNT_CAR