This commit is contained in:
SandPoot
2024-04-10 20:54:04 -03:00
parent 8ed65490a4
commit ca8ce67cd6
63 changed files with 872 additions and 116 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
+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/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/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
+50
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,53 @@ 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/place as anything in shuttle_areas)
var/area/shuttle/shuttle_area = place
for(var/turf/open/floor/shuttle_floor in shuttle_area)
if(is_blocked_turf(shuttle_floor))
continue
empty_turfs += shuttle_floor
var/obj/structure/closet/crate/mail/mailcrate = new(pick(empty_turfs))
//collect recipients
var/list/mail_recipients = list()
for(var/mob/living/carbon/human/player_human in GLOB.player_list)
if(player_human.stat != DEAD)
mail_recipients += player_human
//Creates mail for all the mail waiting to arrive, if there's nobody to recieve it it's just junkmail.
for(var/mail_iterator in 1 to SSeconomy.mail_waiting)
var/obj/item/mail/new_mail
if(prob(FULL_CRATE_LETTER_ODDS))
new_mail = new /obj/item/mail(mailcrate)
else
new_mail = new /obj/item/mail/envelope(mailcrate)
var/mob/living/carbon/human/mail_to
if(mail_recipients.len)
mail_to = pick(mail_recipients)
new_mail.initialize_for_recipient(mail_to)
mail_recipients -= mail_to
else
new_mail.junk_mail()
if(new_mail)
SSeconomy.mail_waiting += 1
mailcrate.update_icon()
return mailcrate
#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