From 21b9d0e63668b528c66c714a4587ffaba93ca812 Mon Sep 17 00:00:00 2001 From: Heroman3003 <31296024+Heroman3003@users.noreply.github.com> Date: Sat, 31 Dec 2022 07:04:47 +1000 Subject: [PATCH] Adjusts events and refactors borgs a bit in process --- code/game/objects/items/trash_vr.dm | 2 +- code/game/objects/structures/door_assembly.dm | 2 +- .../objects/structures/windoor_assembly.dm | 2 +- code/modules/emotes/definitions/synthetics.dm | 2 +- code/modules/events/event_container.dm | 3 + code/modules/events/event_container_vr.dm | 3 + code/modules/events/event_dynamic.dm | 4 + .../silicon/robot/robot_modules/station.dm | 21 +-- .../silicon/robot/robot_modules/station_vr.dm | 138 +++++++++--------- maps/groundbase/groundbase_events.dm | 120 +++++++++++++++ .../stellar_delight/stellar_delight_events.dm | 121 +++++++++++++++ maps/tether/tether_events.dm | 121 +++++++++++++++ 12 files changed, 454 insertions(+), 85 deletions(-) create mode 100644 maps/groundbase/groundbase_events.dm create mode 100644 maps/stellar_delight/stellar_delight_events.dm create mode 100644 maps/tether/tether_events.dm diff --git a/code/game/objects/items/trash_vr.dm b/code/game/objects/items/trash_vr.dm index 17cf91d176..572c08a265 100644 --- a/code/game/objects/items/trash_vr.dm +++ b/code/game/objects/items/trash_vr.dm @@ -12,7 +12,7 @@ if(isrobot(M)) var/mob/living/silicon/robot/R = M - if(R.module.type == /obj/item/weapon/robot_module/robot/scrubpup) // You can now feed the trash borg yay. + if(R.module.type == /obj/item/weapon/robot_module/robot/janitor/scrubpup) // You can now feed the trash borg yay. playsound(src,'sound/items/eatfood.ogg', rand(10,50), 1) user.drop_item() forceMove(R.vore_selected) diff --git a/code/game/objects/structures/door_assembly.dm b/code/game/objects/structures/door_assembly.dm index 1698593f91..365507aa1b 100644 --- a/code/game/objects/structures/door_assembly.dm +++ b/code/game/objects/structures/door_assembly.dm @@ -161,7 +161,7 @@ update_state() /obj/structure/door_assembly/attack_robot(mob/living/silicon/robot/user) - if(Adjacent(user) && (user.module && (istype(user.module,/obj/item/weapon/robot_module/robot/engineering/general)) \ + if(Adjacent(user) && (user.module && (istype(user.module,/obj/item/weapon/robot_module/robot/engineering)) \ || istype(user.module,/obj/item/weapon/robot_module/drone))) //Only dron (and engiborg) needs this. rename_door(user) diff --git a/code/game/objects/structures/windoor_assembly.dm b/code/game/objects/structures/windoor_assembly.dm index 0ea141ce2a..2ab86a5bf0 100644 --- a/code/game/objects/structures/windoor_assembly.dm +++ b/code/game/objects/structures/windoor_assembly.dm @@ -76,7 +76,7 @@ update_state() /obj/structure/windoor_assembly/attack_robot(mob/living/silicon/robot/user) - if(Adjacent(user) && (user.module && (istype(user.module,/obj/item/weapon/robot_module/robot/engineering/general)) \ + if(Adjacent(user) && (user.module && (istype(user.module,/obj/item/weapon/robot_module/robot/engineering)) \ || istype(user.module,/obj/item/weapon/robot_module/drone))) //Only dron (and engiborg) needs this. rename_door(user) diff --git a/code/modules/emotes/definitions/synthetics.dm b/code/modules/emotes/definitions/synthetics.dm index 4f94b7b59b..4d5fea40ef 100644 --- a/code/modules/emotes/definitions/synthetics.dm +++ b/code/modules/emotes/definitions/synthetics.dm @@ -41,7 +41,7 @@ emote_sound = 'sound/voice/biamthelaw.ogg' /decl/emote/audible/synth/security/mob_can_use(var/mob/living/silicon/robot/user) - return ..() && (istype(user) && (istype(user.module, /obj/item/weapon/robot_module/robot/security) || istype(user.module, /obj/item/weapon/robot_module/robot/knine))) //VOREStation Add - knine module + return ..() && (istype(user) && (istype(user.module, /obj/item/weapon/robot_module/robot/security))) /decl/emote/audible/synth/security/halt key = "halt" diff --git a/code/modules/events/event_container.dm b/code/modules/events/event_container.dm index b4d6c70bc2..419bfa650d 100644 --- a/code/modules/events/event_container.dm +++ b/code/modules/events/event_container.dm @@ -140,8 +140,11 @@ var/global/list/severity_to_string = list(EVENT_LEVEL_MUNDANE = "Mundane", EVENT new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Lost Spiders", /datum/event/spider_migration, 20, list(ASSIGNMENT_SECURITY = 10), 1), new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Money Hacker", /datum/event/money_hacker, 0, list(ASSIGNMENT_ANY = 4), 1, 10, 25), new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Money Lotto", /datum/event/money_lotto, 0, list(ASSIGNMENT_ANY = 1), 1, 5, 15), +<<<<<<< HEAD //YW Change new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Mundane News", /datum/event/mundane_news, 300), new /datum/event_meta(EVENT_LEVEL_MUNDANE, "PDA Spam", /datum/event/pda_spam, 0, list(ASSIGNMENT_ANY = 4), 0, 25, 50), +======= +>>>>>>> a533de71c6... Merge pull request #14269 from Heroman3003/borg-event-stuff new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Shipping Error", /datum/event/shipping_error , 30, list(ASSIGNMENT_ANY = 2), 0), //YW Change new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Space Dust", /datum/event/dust , 60, list(ASSIGNMENT_ENGINEER = 20), 0, 0, 50), new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Trivial News", /datum/event/trivial_news, 400), diff --git a/code/modules/events/event_container_vr.dm b/code/modules/events/event_container_vr.dm index 6c1eea9d60..5e31da71d1 100644 --- a/code/modules/events/event_container_vr.dm +++ b/code/modules/events/event_container_vr.dm @@ -42,7 +42,10 @@ new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Lost Carp", /datum/event/carp_migration, 0, list(ASSIGNMENT_SECURITY = 40), 1, min_jobs = list(ASSIGNMENT_SECURITY = 1)), new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Money Hacker", /datum/event/money_hacker, 0, list(ASSIGNMENT_ANY = 4), 1, 10, 25), new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Money Lotto", /datum/event/money_lotto, 0, list(ASSIGNMENT_ANY = 1), 1, 5, 15), +<<<<<<< HEAD //new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Mundane News", /datum/event/mundane_news, 300), +======= +>>>>>>> a533de71c6... Merge pull request #14269 from Heroman3003/borg-event-stuff new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Shipping Error", /datum/event/shipping_error , 30, list(ASSIGNMENT_ANY = 2), 0), new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Trivial News", /datum/event/trivial_news, 400), new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Lore News", /datum/event/lore_news, 400), diff --git a/code/modules/events/event_dynamic.dm b/code/modules/events/event_dynamic.dm index 840249512a..8aec9e4ab5 100644 --- a/code/modules/events/event_dynamic.dm +++ b/code/modules/events/event_dynamic.dm @@ -208,6 +208,10 @@ var/list/event_last_fired = list() active_with_role["Medical"]++ else if(istype(R.module, /obj/item/weapon/robot_module/robot/research)) active_with_role["Scientist"]++ + else if(istype(R.module, /obj/item/weapon/robot_module/robot/janitor)) + active_with_role["Janitor"]++ + else if(istype(R.module, /obj/item/weapon/robot_module/robot/clerical/butler)) + active_with_role["Botanist"]++ if(M.mind.assigned_role in SSjob.get_job_titles_in_department(DEPARTMENT_ENGINEERING)) active_with_role["Engineer"]++ diff --git a/code/modules/mob/living/silicon/robot/robot_modules/station.dm b/code/modules/mob/living/silicon/robot/robot_modules/station.dm index 35474383a1..30a31df7b0 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules/station.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules/station.dm @@ -2,14 +2,14 @@ var/global/list/robot_modules = list( "Standard" = /obj/item/weapon/robot_module/robot/standard, "Service" = /obj/item/weapon/robot_module/robot/clerical/butler, "Clerical" = /obj/item/weapon/robot_module/robot/clerical/general, - "Research" = /obj/item/weapon/robot_module/robot/research, - "Miner" = /obj/item/weapon/robot_module/robot/miner, + "Research" = /obj/item/weapon/robot_module/robot/research/general, + "Miner" = /obj/item/weapon/robot_module/robot/miner/general, "Crisis" = /obj/item/weapon/robot_module/robot/medical/crisis, "Surgeon" = /obj/item/weapon/robot_module/robot/medical/surgeon, "Security" = /obj/item/weapon/robot_module/robot/security/general, "Combat" = /obj/item/weapon/robot_module/robot/security/combat, "Engineering" = /obj/item/weapon/robot_module/robot/engineering/general, - "Janitor" = /obj/item/weapon/robot_module/robot/janitor, + "Janitor" = /obj/item/weapon/robot_module/robot/janitor/general, "Gravekeeper" = /obj/item/weapon/robot_module/robot/gravekeeper, "Lost" = /obj/item/weapon/robot_module/robot/lost, "Protector" = /obj/item/weapon/robot_module/robot/syndicate/protector, @@ -586,7 +586,7 @@ var/global/list/robot_modules = list( "Tower" = "drider-Janitor" ) -/obj/item/weapon/robot_module/robot/janitor/New() +/obj/item/weapon/robot_module/robot/janitor/general/New() ..() src.modules += new /obj/item/weapon/soap/nanotrasen(src) src.modules += new /obj/item/weapon/storage/bag/trash(src) @@ -596,7 +596,7 @@ var/global/list/robot_modules = list( src.emag.reagents.add_reagent("lube", 250) src.emag.name = "Lube spray" -/obj/item/weapon/robot_module/robot/janitor/respawn_consumable(var/mob/living/silicon/robot/R, var/amount) +/obj/item/weapon/robot_module/robot/janitor/general/respawn_consumable(var/mob/living/silicon/robot/R, var/amount) var/obj/item/device/lightreplacer/LR = locate() in src.modules LR.Charge(R, amount) if(src.emag) @@ -626,6 +626,9 @@ var/global/list/robot_modules = list( ) /obj/item/weapon/robot_module/robot/clerical/butler + channels = list("Service" = 1) + +/obj/item/weapon/robot_module/robot/clerical/butler/general sprites = list( "M-USE NanoTrasen" = "robotServ", "Cabeiri" = "eyebot-standard", @@ -651,7 +654,7 @@ var/global/list/robot_modules = list( "Tower" = "drider-Service" ) -/obj/item/weapon/robot_module/robot/clerical/butler/New() +/obj/item/weapon/robot_module/robot/clerical/butler/general/New() ..() src.modules += new /obj/item/weapon/gripper/service(src) src.modules += new /obj/item/weapon/reagent_containers/glass/bucket(src) @@ -752,7 +755,7 @@ var/global/list/robot_modules = list( ) supported_upgrades = list(/obj/item/borg/upgrade/pka, /obj/item/borg/upgrade/diamonddrill) -/obj/item/weapon/robot_module/robot/miner/New() +/obj/item/weapon/robot_module/robot/miner/general/New() ..() src.modules += new /obj/item/borg/sight/material(src) src.modules += new /obj/item/weapon/tool/wrench/cyborg(src) @@ -790,7 +793,7 @@ var/global/list/robot_modules = list( ) supported_upgrades = list(/obj/item/borg/upgrade/advrped) -/obj/item/weapon/robot_module/robot/research/New() +/obj/item/weapon/robot_module/robot/research/general/New() ..() src.modules += new /obj/item/weapon/portable_destructive_analyzer(src) src.modules += new /obj/item/weapon/gripper/research(src) @@ -834,7 +837,7 @@ var/global/list/robot_modules = list( C.synths = list(wire) src.modules += C -/obj/item/weapon/robot_module/robot/research/respawn_consumable(var/mob/living/silicon/robot/R, var/amount) +/obj/item/weapon/robot_module/robot/research/general/respawn_consumable(var/mob/living/silicon/robot/R, var/amount) var/obj/item/weapon/reagent_containers/syringe/S = locate() in src.modules if(S.mode == 2) diff --git a/code/modules/mob/living/silicon/robot/robot_modules/station_vr.dm b/code/modules/mob/living/silicon/robot/robot_modules/station_vr.dm index 0af7b1a8b9..05974c05a9 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules/station_vr.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules/station_vr.dm @@ -63,6 +63,7 @@ ) /hook/startup/proc/robot_modules_vr() +<<<<<<< HEAD robot_modules["Medihound"] = /obj/item/weapon/robot_module/robot/medihound robot_modules["K9"] = /obj/item/weapon/robot_module/robot/knine robot_modules["ERT"] = /obj/item/weapon/robot_module/robot/ert @@ -74,8 +75,19 @@ robot_modules["KMine"] = /obj/item/weapon/robot_module/robot/kmine robot_modules["UnityHound"] = /obj/item/weapon/robot_module/robot/chound //CHOMP Addition Unity robot_modules["Honk-Hound"] = /obj/item/weapon/robot_module/robot/clerical/honkborg //CHOMP Addition Honk +======= + robot_modules["Medihound"] = /obj/item/weapon/robot_module/robot/medical/medihound + robot_modules["K9"] = /obj/item/weapon/robot_module/robot/security/knine + robot_modules["ERT"] = /obj/item/weapon/robot_module/robot/security/ert + robot_modules["Janihound"] = /obj/item/weapon/robot_module/robot/janitor/scrubpup + robot_modules["Sci-borg"] = /obj/item/weapon/robot_module/robot/research/sciencehound + robot_modules["Pupdozer"] = /obj/item/weapon/robot_module/robot/engineering/engiedog + robot_modules["Service-Hound"] = /obj/item/weapon/robot_module/robot/clerical/butler/brodog + robot_modules["BoozeHound"] = /obj/item/weapon/robot_module/robot/clerical/butler/booze + robot_modules["KMine"] = /obj/item/weapon/robot_module/robot/miner/kmine +>>>>>>> a533de71c6... Merge pull request #14269 from Heroman3003/borg-event-stuff robot_modules["Stray"] = /obj/item/weapon/robot_module/robot/stray - robot_modules["TraumaHound"] = /obj/item/weapon/robot_module/robot/medical/trauma + robot_modules["TraumaHound"] = /obj/item/weapon/robot_module/robot/medical/traumahound return 1 //Just add a new proc with the robot_module type if you wish to run some other vore code @@ -94,8 +106,10 @@ src.modules += new /obj/item/device/sleevemate(src) //Lets them scan people. . = ..() //Any Global vore modules will come from here -/obj/item/weapon/robot_module/robot/medical/surgeon +/obj/item/weapon/robot_module/robot/medical pto_type = PTO_MEDICAL + +/obj/item/weapon/robot_module/robot/medical/surgeon vr_sprites = list( "Acheron" = "mechoid-Medical", "Shellguard Noble" = "Noble-MED", @@ -105,7 +119,6 @@ ) /obj/item/weapon/robot_module/robot/medical/crisis - pto_type = PTO_MEDICAL vr_sprites = list( "Handy" = "handy-med", "Acheron" = "mechoid-Medical", @@ -115,8 +128,10 @@ "Feminine Humanoid" = "uptall-crisis" ) -/obj/item/weapon/robot_module/robot/clerical/butler +/obj/item/weapon/robot_module/robot/clerical pto_type = PTO_CIVILIAN + +/obj/item/weapon/robot_module/robot/clerical/butler/general vr_sprites = list( "Handy - Service" = "handy-service", "Handy - Hydro" = "handy-hydro", @@ -128,7 +143,6 @@ ) /obj/item/weapon/robot_module/robot/clerical/general - pto_type = PTO_CIVILIAN vr_sprites = list( "Handy" = "handy-clerk", "Acheron" = "mechoid-Service", @@ -140,6 +154,8 @@ /obj/item/weapon/robot_module/robot/janitor pto_type = PTO_CIVILIAN + +/obj/item/weapon/robot_module/robot/janitor/general vr_sprites = list( "Handy" = "handy-janitor", "Acheron" = "mechoid-Janitor", @@ -149,8 +165,10 @@ "Feminine Humanoid" = "uptall-janitor" ) -/obj/item/weapon/robot_module/robot/security/general +/obj/item/weapon/robot_module/robot/security pto_type = PTO_SECURITY + +/obj/item/weapon/robot_module/robot/security/general vr_sprites = list( "Handy" = "handy-sec", "Acheron" = "mechoid-Security", @@ -160,8 +178,18 @@ "Feminine Humanoid" = "uptall-security" ) +/obj/item/weapon/robot_module/robot/security/combat + vr_sprites = list( + "Acheron" = "mechoid-Combat", + "ZOOM-BA" = "zoomba-combat", + "W02M" = "worm-combat", + "Feminine Humanoid" = "uptall-security" + ) + /obj/item/weapon/robot_module/robot/miner pto_type = PTO_CARGO + +/obj/item/weapon/robot_module/robot/miner/general vr_sprites = list( "Handy" = "handy-miner", "Acheron" = "mechoid-Miner", @@ -182,8 +210,11 @@ "Feminine Humanoid" = "uptall-standard", "Feminine Humanoid, Variant 2" = "uptall-standard2" ) -/obj/item/weapon/robot_module/robot/engineering/general + +/obj/item/weapon/robot_module/robot/engineering pto_type = PTO_ENGINEERING + +/obj/item/weapon/robot_module/robot/engineering/general vr_sprites = list( "Acheron" = "mechoid-Engineering", "Shellguard Noble" = "Noble-ENG", @@ -194,6 +225,8 @@ /obj/item/weapon/robot_module/robot/research pto_type = PTO_SCIENCE + +/obj/item/weapon/robot_module/robot/research/general vr_sprites = list( "Acheron" = "mechoid-Science", "ZOOM-BA" = "zoomba-research", @@ -202,16 +235,7 @@ "Feminine Humanoid" = "uptall-science" ) -/obj/item/weapon/robot_module/robot/security/combat - pto_type = PTO_SECURITY - vr_sprites = list( - "Acheron" = "mechoid-Combat", - "ZOOM-BA" = "zoomba-combat", - "W02M" = "worm-combat", - "Feminine Humanoid" = "uptall-security" - ) - -/obj/item/weapon/robot_module/robot/knine +/obj/item/weapon/robot_module/robot/security/knine name = "k9 robot module" sprites = list( "K9 hound" = "k9", @@ -224,13 +248,8 @@ "Drake" = "drakesec", "Secborg model V-4" = "secraptor"//CHOMPEdit ) - channels = list("Security" = 1) - networks = list(NETWORK_SECURITY) - pto_type = PTO_SECURITY - can_be_pushed = 0 - supported_upgrades = list(/obj/item/borg/upgrade/tasercooler) -/obj/item/weapon/robot_module/robot/knine/New(var/mob/living/silicon/robot/R) +/obj/item/weapon/robot_module/robot/security/knine/New(var/mob/living/silicon/robot/R) src.modules += new /obj/item/weapon/handcuffs/cyborg(src) //You need cuffs to be a proper sec borg! src.modules += new /obj/item/weapon/dogborg/jaws/big(src) //In case there's some kind of hostile mob. src.modules += new /obj/item/weapon/melee/baton/robot(src) //Since the pounce module refused to work, they get a stunbaton instead. @@ -275,7 +294,7 @@ R.verbs |= /mob/living/silicon/robot/proc/rest_style ..() -/obj/item/weapon/robot_module/robot/knine/respawn_consumable(var/mob/living/silicon/robot/R, var/amount) +/obj/item/weapon/robot_module/robot/security/knine/respawn_consumable(var/mob/living/silicon/robot/R, var/amount) var/obj/item/device/flash/F = locate() in src.modules if(F.broken) F.broken = 0 @@ -294,13 +313,8 @@ B.bcell.give(amount)*/ -/obj/item/weapon/robot_module/robot/medihound +/obj/item/weapon/robot_module/robot/medical/medihound name = "MediHound module" - channels = list("Medical" = 1) - networks = list(NETWORK_MEDICAL) - subsystems = list(/mob/living/silicon/proc/subsystem_crew_monitor) - pto_type = PTO_MEDICAL - can_be_pushed = 0 sprites = list( "Medical Hound" = "medihound", "Dark Medical Hound (Static)" = "medihounddark", @@ -312,7 +326,7 @@ "Mediborg model V-4" = "medraptor" //CHOMPEdit ) -/obj/item/weapon/robot_module/robot/medihound/New(var/mob/living/silicon/robot/R) +/obj/item/weapon/robot_module/robot/medical/medihound/New(var/mob/living/silicon/robot/R) src.modules += new /obj/item/weapon/dogborg/jaws/small(src) //In case a patient is being attacked by carp. src.modules += new /obj/item/device/dogborg/boop_module(src) //Boop the crew. src.modules += new /obj/item/device/healthanalyzer(src) // See who's hurt specificially. @@ -396,20 +410,15 @@ R.verbs |= /mob/living/silicon/robot/proc/rest_style ..() -/obj/item/weapon/robot_module/robot/medical/trauma +/obj/item/weapon/robot_module/robot/medical/traumahound name = "traumahound robot module" - channels = list("Medical" = 1) - networks = list(NETWORK_MEDICAL) - subsystems = list(/mob/living/silicon/proc/subsystem_crew_monitor) - pto_type = PTO_MEDICAL - can_be_pushed = 0 sprites = list( "Traumahound" = "traumavale", "Drake" = "draketrauma", "Borgi" = "borgi-trauma" ) -/obj/item/weapon/robot_module/robot/medical/trauma/New(var/mob/living/silicon/robot/R) +/obj/item/weapon/robot_module/robot/medical/traumahound/New(var/mob/living/silicon/robot/R) src.modules += new /obj/item/device/healthanalyzer(src) src.modules += new /obj/item/weapon/dogborg/jaws/small(src) src.modules += new /obj/item/device/dogborg/boop_module(src) @@ -484,19 +493,15 @@ R.verbs |= /mob/living/silicon/robot/proc/rest_style ..() -/obj/item/weapon/robot_module/robot/ert +/obj/item/weapon/robot_module/robot/security/ert name = "Emergency Responce module" - channels = list("Security" = 1) - networks = list(NETWORK_SECURITY) - pto_type = PTO_SECURITY - can_be_pushed = 0 sprites = list( "Standard" = "ert", "Classic" = "ertold", "Borgi" = "borgi" ) -/obj/item/weapon/robot_module/robot/ert/New(var/mob/living/silicon/robot/R) +/obj/item/weapon/robot_module/robot/security/ert/New(var/mob/living/silicon/robot/R) src.modules += new /obj/item/weapon/handcuffs/cyborg(src) src.modules += new /obj/item/weapon/dogborg/jaws/ert(src) src.modules += new /obj/item/taperoll/police(src) @@ -540,7 +545,7 @@ R.verbs |= /mob/living/silicon/robot/proc/rest_style ..() -/obj/item/weapon/robot_module/robot/scrubpup +/obj/item/weapon/robot_module/robot/janitor/scrubpup name = "Custodial Hound module" sprites = list( "Custodial Hound" = "scrubpup", @@ -550,11 +555,9 @@ "Cat" = "vixjani", //CHOMPEdit "Drake" = "drakejanit" ) - channels = list("Service" = 1) - pto_type = PTO_CIVILIAN can_be_pushed = 0 -/obj/item/weapon/robot_module/robot/scrubpup/New(var/mob/living/silicon/robot/R) +/obj/item/weapon/robot_module/robot/janitor/scrubpup/New(var/mob/living/silicon/robot/R) src.modules += new /obj/item/weapon/dogborg/jaws/small(src) src.modules += new /obj/item/device/dogborg/boop_module(src) src.modules += new /obj/item/pupscrubber(src) @@ -632,7 +635,7 @@ R.verbs |= /mob/living/silicon/robot/proc/rest_style ..() -/obj/item/weapon/robot_module/robot/science +/obj/item/weapon/robot_module/robot/research/sciencehound name = "Research Hound Module" sprites = list( "Research Hound" = "science", @@ -643,12 +646,9 @@ "Drake" = "drakesci", "Sciborg model V-4" = "sciraptor"//CHOMPEdit ) - channels = list("Science" = 1) - pto_type = PTO_SCIENCE can_be_pushed = 0 - supported_upgrades = list(/obj/item/borg/upgrade/advrped) -/obj/item/weapon/robot_module/robot/science/New(var/mob/living/silicon/robot/R) +/obj/item/weapon/robot_module/robot/research/sciencehound/New(var/mob/living/silicon/robot/R) src.modules += new /obj/item/weapon/dogborg/jaws/small(src) src.modules += new /obj/item/device/dogborg/boop_module(src) src.modules += new /obj/item/weapon/gripper/research(src) @@ -725,7 +725,7 @@ R.verbs |= /mob/living/silicon/robot/proc/rest_style ..() -/obj/item/weapon/robot_module/robot/engiedog +/obj/item/weapon/robot_module/robot/engineering/engiedog name = "Construction Hound module" sprites = list( "Pupdozer" = "pupdozer", @@ -736,13 +736,9 @@ "Cat" = "vixengi", //CHOMPEdit "Drake" = "drakeeng" ) - channels = list("Engineering" = 1) - networks = list(NETWORK_ENGINEERING) - pto_type = PTO_ENGINEERING - subsystems = list(/mob/living/silicon/proc/subsystem_power_monitor) can_be_pushed = 0 -/obj/item/weapon/robot_module/robot/engiedog/New(var/mob/living/silicon/robot/R) +/obj/item/weapon/robot_module/robot/engineering/engiedog/New(var/mob/living/silicon/robot/R) src.modules += new /obj/item/borg/sight/meson(src) src.modules += new /obj/item/weapon/weldingtool/electric/mounted/cyborg(src) src.modules += new /obj/item/weapon/tool/screwdriver/cyborg(src) @@ -888,7 +884,7 @@ ..() // Uses modified K9 sprites. -/obj/item/weapon/robot_module/robot/clerical/brodog +/obj/item/weapon/robot_module/robot/clerical/butler/brodog name = "service-hound module" sprites = list( "Blackhound" = "k50", @@ -898,13 +894,11 @@ "Cat" = "vixserv", //CHOMPEdit "Drake" = "drakemine" ) - channels = list("Service" = 1) - pto_type = PTO_CIVILIAN can_be_pushed = 0 // In a nutshell, basicly service/butler robot but in dog form. - Port from CitadelRP -/obj/item/weapon/robot_module/robot/clerical/brodog/New(var/mob/living/silicon/robot/R) +/obj/item/weapon/robot_module/robot/clerical/butler/brodog/New(var/mob/living/silicon/robot/R) src.modules += new /obj/item/weapon/gripper/service(src) src.modules += new /obj/item/weapon/reagent_containers/glass/bucket(src) src.modules += new /obj/item/weapon/material/minihoe(src) @@ -970,7 +964,7 @@ R.verbs |= /mob/living/silicon/robot/proc/rest_style ..() -/obj/item/weapon/robot_module/robot/kmine +/obj/item/weapon/robot_module/robot/miner/kmine name = "Supply Hound Module" sprites = list( "KMine" = "kmine", @@ -980,12 +974,9 @@ "Cat Cargo" = "vixcargo", //CHOMPEdit "Drake" = "drakemine" ) - channels = list("Supply" = 1) - pto_type = PTO_CARGO can_be_pushed = 0 - supported_upgrades = list(/obj/item/borg/upgrade/pka, /obj/item/borg/upgrade/diamonddrill) -/obj/item/weapon/robot_module/robot/kmine/New(var/mob/living/silicon/robot/R) +/obj/item/weapon/robot_module/robot/miner/kmine/New(var/mob/living/silicon/robot/R) src.modules += new /obj/item/borg/sight/material(src) src.modules += new /obj/item/weapon/tool/wrench/cyborg(src) src.modules += new /obj/item/weapon/tool/screwdriver/cyborg(src) @@ -1054,10 +1045,13 @@ R.verbs -= /mob/living/silicon/robot/proc/rest_style ..() +<<<<<<< HEAD /obj/item/weapon/robot_module/robot/booze +======= + +/obj/item/weapon/robot_module/robot/clerical/butler/booze +>>>>>>> a533de71c6... Merge pull request #14269 from Heroman3003/borg-event-stuff name = "BoozeHound robot module" - channels = list("Service" = 1) - pto_type = PTO_CIVILIAN can_be_pushed = 0 sprites = list( "Beer Buddy" = "boozeborg", @@ -1070,7 +1064,7 @@ "Vodka Komrade" = "boozeborg(vodka)" ) //CHOMP Edit Added Vodka Komrade -/obj/item/weapon/robot_module/robot/booze/New(var/mob/living/silicon/robot/R) +/obj/item/weapon/robot_module/robot/clerical/butler/booze/New(var/mob/living/silicon/robot/R) ..() src.modules += new /obj/item/weapon/gripper/service(src) //src.modules += new /obj/item/weapon/reagent_containers/glass/bucket(src) @@ -1117,7 +1111,7 @@ R.verbs |= /mob/living/silicon/robot/proc/ex_reserve_refill ..() -/obj/item/weapon/robot_module/robot/booze/respawn_consumable(var/mob/living/silicon/robot/R, var/amount) +/obj/item/weapon/robot_module/robot/clerical/butler/booze/respawn_consumable(var/mob/living/silicon/robot/R, var/amount) var/obj/item/weapon/reagent_containers/food/condiment/enzyme/E = locate() in src.modules E.reagents.add_reagent("enzyme", 2 * amount) diff --git a/maps/groundbase/groundbase_events.dm b/maps/groundbase/groundbase_events.dm new file mode 100644 index 0000000000..7f4e6a0a8d --- /dev/null +++ b/maps/groundbase/groundbase_events.dm @@ -0,0 +1,120 @@ +#define ASSIGNMENT_ANY "Any" +#define ASSIGNMENT_AI "AI" +#define ASSIGNMENT_CYBORG "Cyborg" +#define ASSIGNMENT_ENGINEER "Engineer" +#define ASSIGNMENT_GARDENER "Botanist" +#define ASSIGNMENT_JANITOR "Janitor" +#define ASSIGNMENT_MEDICAL "Medical" +#define ASSIGNMENT_SCIENTIST "Scientist" +#define ASSIGNMENT_SECURITY "Security" + +// +// VOREStation overrides to the default event manager configuration. +// +// This file lets us configure which events we want in the rotation without conflicts with upstream. +// It works because the actual event containers don't define New(), allowing us to use New() to replace +// the lists of available events. If they ever do define New() this will need to be changed. +// +// Specifically the change is to move events we don't want down into the disabled_events list +// + +// Adds a list of pre-disabled events to the available events list. +// This keeps them in the rotation, but disabled, so they can be enabled with a click if desired that round. +/datum/event_container/proc/add_disabled_events(var/list/disabled_events) + for(var/datum/event_meta/EM in disabled_events) + EM.enabled = 0 + available_events += EM + +/datum/event_container/mundane/New() + available_events = list( + // Severity level, event name, even type, base weight, role weights, one shot, min weight, max weight. Last two only used if set and non-zero + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Nothing", /datum/event/nothing, 400), + // Bluescreens APCs, but they still work + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "APC Damage", /datum/event/apc_damage, 20, list(ASSIGNMENT_ENGINEER = 20), min_jobs = list(ASSIGNMENT_ENGINEER = 1)), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Brand Intelligence",/datum/event/brand_intelligence, 0, list(ASSIGNMENT_ENGINEER = 10), 1, min_jobs = list(ASSIGNMENT_ENGINEER = 1)), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Camera Damage", /datum/event/camera_damage, 20, list(ASSIGNMENT_ENGINEER = 20, ASSIGNMENT_SECURITY = 5), min_jobs = list(ASSIGNMENT_ENGINEER = 1)), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Canister Leak", /datum/event/canister_leak, 10, list(ASSIGNMENT_ENGINEER = 20), min_jobs = list(ASSIGNMENT_ENGINEER = 1)), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Economic News", /datum/event/economic_event, 300), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Lost Carp", /datum/event/carp_migration, 0, list(ASSIGNMENT_SECURITY = 10), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Money Hacker", /datum/event/money_hacker, 0, list(ASSIGNMENT_ANY = 4), 1, 10, 25), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Money Lotto", /datum/event/money_lotto, 0, list(ASSIGNMENT_ANY = 1), 1, 5, 15), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Shipping Error", /datum/event/shipping_error , 30, list(ASSIGNMENT_ANY = 2), 0), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Trivial News", /datum/event/trivial_news, 400), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Lore News", /datum/event/lore_news, 400), + // Spawns mice, lizards, or dud spiderlings + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Vermin Infestation",/datum/event/infestation, 50, list(ASSIGNMENT_JANITOR = 25), 1), + // Rot only weakens walls, not destroy them + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Wallrot", /datum/event/wallrot, 0, list(ASSIGNMENT_ENGINEER = 30), 1, min_jobs = list(ASSIGNMENT_ENGINEER = 1)), + ) + add_disabled_events(list( + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Ian Storm", /datum/event/ianstorm, 1, list(), 1), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Supply Demand", /datum/event/supply_demand, 0, list(ASSIGNMENT_ANY = 5, ASSIGNMENT_SCIENCE = 15, ASSIGNMENT_GARDENER = 10, ASSIGNMENT_ENGINEER = 10, ASSIGNMENT_MEDICAL = 15), 1), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Aurora Caelus", /datum/event/aurora_caelus, 2, list(), 1), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Space Dust", /datum/event/dust, 0, list(ASSIGNMENT_ENGINEER = 20), 0, 0, 50, min_jobs = list(ASSIGNMENT_ENGINEER = 2)), + )) + +/datum/event_container/moderate/New() + available_events = list( + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Nothing", /datum/event/nothing, 1600), + // Leaks gas into an unoccupied room. + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Atmos Leak", /datum/event/atmos_leak, 30, list(ASSIGNMENT_ENGINEER = 25), 1, min_jobs = list(ASSIGNMENT_ENGINEER = 1)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Carp School", /datum/event/carp_migration, 0, list(ASSIGNMENT_SECURITY = 30), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), + // Just disables comms for a short while. + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Communication Blackout", /datum/event/communications_blackout, 500, list(), 1), + // Just blows out a few lights + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Electrical Storm", /datum/event/electrical_storm, 70, list(ASSIGNMENT_ENGINEER = 25, ASSIGNMENT_JANITOR = 100), 1), + // Temporary power failure, but mitigatead by subgrids + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Grid Check", /datum/event/grid_check, 0, list(ASSIGNMENT_ENGINEER = 25), 1, min_jobs = list(ASSIGNMENT_ENGINEER = 1)), + // Pure RP fun, no mechanical effects. + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Ion Storm", /datum/event/ionstorm, 0, list(ASSIGNMENT_AI = 80, ASSIGNMENT_CYBORG = 50, ASSIGNMENT_SCIENTIST = 20), min_jobs = list(ASSIGNMENT_AI = 1)), + // Opens doors in brig. So just RP fun + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Prison Break", /datum/event/prison_break, 10, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_ENGINEER = 15), 1), + // Radiation, but only in space. + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Rogue Drones", /datum/event/rogue_drone, 0, list(ASSIGNMENT_SECURITY = 20), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Virology Breach", /datum/event/prison_break/virology, 0, list(ASSIGNMENT_MEDICAL = 15, ASSIGNMENT_ENGINEER = 15), 1), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Xenobiology Breach", /datum/event/prison_break/xenobiology, 0, list(ASSIGNMENT_SCIENTIST = 15, ASSIGNMENT_ENGINEER = 15), 1), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Spider Infestation", /datum/event/spider_infestation, 0, list(ASSIGNMENT_SECURITY = 30), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)), + //Evil grubs that drain station power slightly + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Grub Infestation", /datum/event/grub_infestation, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_ENGINEER = 30), 1, min_jobs = list(ASSIGNMENT_SECURITY = 1, ASSIGNMENT_ENGINEER = 1)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Drone Pod Drop", /datum/event/drone_pod_drop, 40, list(ASSIGNMENT_SCIENTIST = 40), 1), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Morph Spawn", /datum/event/morph_spawn, 75, list(ASSIGNMENT_ANY = 5), 0), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Maintenance Predator", /datum/event/maintenance_predator, 100, list(ASSIGNMENT_ANY = 5), 0), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Jellyfish School", /datum/event/jellyfish_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)), + ) + add_disabled_events(list( + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Appendicitis", /datum/event/spontaneous_appendicitis, 0, list(ASSIGNMENT_MEDICAL = 30), 1), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Meteor Shower", /datum/event/meteor_wave, 30, list(ASSIGNMENT_ENGINEER = 20)), + // Not bad (dorms are shielded) but inconvenient + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Radiation Storm", /datum/event/radiation_storm, 50, list(ASSIGNMENT_MEDICAL = 50), 1), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Random Antagonist", /datum/event/random_antag, 0, list(ASSIGNMENT_SECURITY = 1), 1, 0, 5), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Supply Demand", /datum/event/supply_demand, 0, list(ASSIGNMENT_ANY = 5, ASSIGNMENT_SCIENCE = 15, ASSIGNMENT_GARDENER = 10, ASSIGNMENT_ENGINEER = 10, ASSIGNMENT_MEDICAL = 15), 1), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Solar Storm", /datum/event/solar_storm, 30, list(ASSIGNMENT_ENGINEER = 40, ASSIGNMENT_SECURITY = 30), 1), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Gravity Failure", /datum/event/gravity, 75, list(ASSIGNMENT_ENGINEER = 60), 1), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Space Dust", /datum/event/dust, 0, list(ASSIGNMENT_ENGINEER = 20), 1, 0, 50, min_jobs = list(ASSIGNMENT_ENGINEER = 3)), + )) + +/datum/event_container/major/New() + available_events = list( + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Nothing", /datum/event/nothing, 3600), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Atmos Leak", /datum/event/atmos_leak, 20, list(ASSIGNMENT_ENGINEER = 25), 1, min_jobs = list(ASSIGNMENT_ENGINEER = 1)), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Space Vines", /datum/event/spacevine, 10, list(ASSIGNMENT_ENGINEER = 3, ASSIGNMENT_GARDENER = 3, ASSIGNMENT_SCIENTIST = 3), 1), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Carp Migration", /datum/event/carp_migration, 10, list(ASSIGNMENT_SECURITY = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Containment Breach", /datum/event/prison_break/station, 0, list(ASSIGNMENT_ENGINEER = 5, ASSIGNMENT_MEDICAL = 5, ASSIGNMENT_SECURITY = 5, ASSIGNMENT_SCIENTIST = 5), 1), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Jellyfish Migration", /datum/event/jellyfish_migration, 5, list(ASSIGNMENT_SECURITY = 5, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)), + ) + add_disabled_events(list( + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Meteor Strike", /datum/event/meteor_strike, 10, list(ASSIGNMENT_ENGINEER = 15), 1), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Blob", /datum/event/blob, 10, list(ASSIGNMENT_ENGINEER = 60), 1), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Meteor Wave", /datum/event/meteor_wave, 30, list(ASSIGNMENT_ENGINEER = 15), 1), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Supply Demand", /datum/event/supply_demand, 0, list(ASSIGNMENT_ANY = 5, ASSIGNMENT_SCIENCE = 15, ASSIGNMENT_GARDENER = 10, ASSIGNMENT_ENGINEER = 10, ASSIGNMENT_MEDICAL = 15), 1), + )) + +#undef ASSIGNMENT_ANY +#undef ASSIGNMENT_AI +#undef ASSIGNMENT_CYBORG +#undef ASSIGNMENT_ENGINEER +#undef ASSIGNMENT_GARDENER +#undef ASSIGNMENT_JANITOR +#undef ASSIGNMENT_MEDICAL +#undef ASSIGNMENT_SCIENTIST +#undef ASSIGNMENT_SECURITY diff --git a/maps/stellar_delight/stellar_delight_events.dm b/maps/stellar_delight/stellar_delight_events.dm new file mode 100644 index 0000000000..d1a4de83b4 --- /dev/null +++ b/maps/stellar_delight/stellar_delight_events.dm @@ -0,0 +1,121 @@ +#define ASSIGNMENT_ANY "Any" +#define ASSIGNMENT_AI "AI" +#define ASSIGNMENT_CYBORG "Cyborg" +#define ASSIGNMENT_ENGINEER "Engineer" +#define ASSIGNMENT_GARDENER "Botanist" +#define ASSIGNMENT_JANITOR "Janitor" +#define ASSIGNMENT_MEDICAL "Medical" +#define ASSIGNMENT_SCIENTIST "Scientist" +#define ASSIGNMENT_SECURITY "Security" + +// +// VOREStation overrides to the default event manager configuration. +// +// This file lets us configure which events we want in the rotation without conflicts with upstream. +// It works because the actual event containers don't define New(), allowing us to use New() to replace +// the lists of available events. If they ever do define New() this will need to be changed. +// +// Specifically the change is to move events we don't want down into the disabled_events list +// + +// Adds a list of pre-disabled events to the available events list. +// This keeps them in the rotation, but disabled, so they can be enabled with a click if desired that round. +/datum/event_container/proc/add_disabled_events(var/list/disabled_events) + for(var/datum/event_meta/EM in disabled_events) + EM.enabled = 0 + available_events += EM + +/datum/event_container/mundane/New() + available_events = list( + // Severity level, event name, even type, base weight, role weights, one shot, min weight, max weight. Last two only used if set and non-zero + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Nothing", /datum/event/nothing, 400), + // Bluescreens APCs, but they still work + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "APC Damage", /datum/event/apc_damage, 20, list(ASSIGNMENT_ENGINEER = 20), min_jobs = list(ASSIGNMENT_ENGINEER = 1)), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Brand Intelligence",/datum/event/brand_intelligence, 0, list(ASSIGNMENT_ENGINEER = 10), 1, min_jobs = list(ASSIGNMENT_ENGINEER = 1)), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Camera Damage", /datum/event/camera_damage, 20, list(ASSIGNMENT_ENGINEER = 20, ASSIGNMENT_SECURITY = 5), min_jobs = list(ASSIGNMENT_ENGINEER = 1)), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Canister Leak", /datum/event/canister_leak, 10, list(ASSIGNMENT_ENGINEER = 20), min_jobs = list(ASSIGNMENT_ENGINEER = 1)), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Space Dust", /datum/event/dust, 0, list(ASSIGNMENT_ENGINEER = 20), 0, 0, 50, min_jobs = list(ASSIGNMENT_ENGINEER = 2)), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Economic News", /datum/event/economic_event, 300), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Lost Carp", /datum/event/carp_migration, 0, list(ASSIGNMENT_SECURITY = 10), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Money Hacker", /datum/event/money_hacker, 0, list(ASSIGNMENT_ANY = 4), 1, 10, 25), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Money Lotto", /datum/event/money_lotto, 0, list(ASSIGNMENT_ANY = 1), 1, 5, 15), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Shipping Error", /datum/event/shipping_error , 30, list(ASSIGNMENT_ANY = 2), 0), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Trivial News", /datum/event/trivial_news, 400), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Lore News", /datum/event/lore_news, 400), + // Spawns mice, lizards, or dud spiderlings + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Vermin Infestation",/datum/event/infestation, 50, list(ASSIGNMENT_JANITOR = 25), 1), + // Rot only weakens walls, not destroy them + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Wallrot", /datum/event/wallrot, 0, list(ASSIGNMENT_ENGINEER = 30), 1, min_jobs = list(ASSIGNMENT_ENGINEER = 1)), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Aurora Caelus", /datum/event/aurora_caelus, 2, list(), 1), + ) + add_disabled_events(list( + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Ian Storm", /datum/event/ianstorm, 1, list(), 1), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Supply Demand", /datum/event/supply_demand, 0, list(ASSIGNMENT_ANY = 5, ASSIGNMENT_SCIENCE = 15, ASSIGNMENT_GARDENER = 10, ASSIGNMENT_ENGINEER = 10, ASSIGNMENT_MEDICAL = 15), 1), + )) + +/datum/event_container/moderate/New() + available_events = list( + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Nothing", /datum/event/nothing, 1600), + // Leaks gas into an unoccupied room. + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Atmos Leak", /datum/event/atmos_leak, 30, list(ASSIGNMENT_ENGINEER = 25), 1, min_jobs = list(ASSIGNMENT_ENGINEER = 1)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Carp School", /datum/event/carp_migration, 0, list(ASSIGNMENT_SECURITY = 30), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), + // Just disables comms for a short while. + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Communication Blackout", /datum/event/communications_blackout, 500, list(), 1), + // Just blows out a few lights + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Electrical Storm", /datum/event/electrical_storm, 70, list(ASSIGNMENT_ENGINEER = 25, ASSIGNMENT_JANITOR = 100), 1), + // This one is just too fun. + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Gravity Failure", /datum/event/gravity, 150, list(), 1), + // Temporary power failure, but mitigatead by subgrids + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Grid Check", /datum/event/grid_check, 0, list(ASSIGNMENT_ENGINEER = 25), 1, min_jobs = list(ASSIGNMENT_ENGINEER = 1)), + // Pure RP fun, no mechanical effects. + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Ion Storm", /datum/event/ionstorm, 0, list(ASSIGNMENT_AI = 80, ASSIGNMENT_CYBORG = 50, ASSIGNMENT_SCIENTIST = 20), min_jobs = list(ASSIGNMENT_AI = 1)), + // Opens doors in brig. So just RP fun + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Prison Break", /datum/event/prison_break, 10, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_ENGINEER = 15), 1), + // Radiation, but only in space. + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Rogue Drones", /datum/event/rogue_drone, 0, list(ASSIGNMENT_SECURITY = 20), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Solar Storm", /datum/event/solar_storm, 30, list(ASSIGNMENT_ENGINEER = 30, ASSIGNMENT_ANY = 5), 1), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Space Dust", /datum/event/dust, 0, list(ASSIGNMENT_ENGINEER = 20), 1, 0, 50, min_jobs = list(ASSIGNMENT_ENGINEER = 3)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Virology Breach", /datum/event/prison_break/virology, 0, list(ASSIGNMENT_MEDICAL = 15, ASSIGNMENT_ENGINEER = 15), 1), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Xenobiology Breach", /datum/event/prison_break/xenobiology, 0, list(ASSIGNMENT_SCIENTIST = 15, ASSIGNMENT_ENGINEER = 15), 1), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Spider Infestation", /datum/event/spider_infestation, 0, list(ASSIGNMENT_SECURITY = 30), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)), + //Evil grubs that drain station power slightly + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Grub Infestation", /datum/event/grub_infestation, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_ENGINEER = 30), 1, min_jobs = list(ASSIGNMENT_SECURITY = 1, ASSIGNMENT_ENGINEER = 1)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Drone Pod Drop", /datum/event/drone_pod_drop, 40, list(ASSIGNMENT_SCIENTIST = 40), 1), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Morph Spawn", /datum/event/morph_spawn, 75, list(ASSIGNMENT_ANY = 5), 0), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Maintenance Predator", /datum/event/maintenance_predator, 100, list(ASSIGNMENT_ANY = 5), 0), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Jellyfish School", /datum/event/jellyfish_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)), + ) + add_disabled_events(list( + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Appendicitis", /datum/event/spontaneous_appendicitis, 0, list(ASSIGNMENT_MEDICAL = 30), 1), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Meteor Shower", /datum/event/meteor_wave, 30, list(ASSIGNMENT_ENGINEER = 20)), + // Not bad (dorms are shielded) but inconvenient + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Radiation Storm", /datum/event/radiation_storm, 50, list(ASSIGNMENT_MEDICAL = 50), 1), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Random Antagonist", /datum/event/random_antag, 0, list(ASSIGNMENT_SECURITY = 1), 1, 0, 5), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Supply Demand", /datum/event/supply_demand, 0, list(ASSIGNMENT_ANY = 5, ASSIGNMENT_SCIENCE = 15, ASSIGNMENT_GARDENER = 10, ASSIGNMENT_ENGINEER = 10, ASSIGNMENT_MEDICAL = 15), 1), + )) + +/datum/event_container/major/New() + available_events = list( + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Nothing", /datum/event/nothing, 3600), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Atmos Leak", /datum/event/atmos_leak, 20, list(ASSIGNMENT_ENGINEER = 25), 1, min_jobs = list(ASSIGNMENT_ENGINEER = 1)), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Space Vines", /datum/event/spacevine, 10, list(ASSIGNMENT_ENGINEER = 3, ASSIGNMENT_GARDENER = 3, ASSIGNMENT_SCIENTIST = 3), 1), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Carp Migration", /datum/event/carp_migration, 10, list(ASSIGNMENT_SECURITY = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Containment Breach", /datum/event/prison_break/station, 0, list(ASSIGNMENT_ENGINEER = 5, ASSIGNMENT_MEDICAL = 5, ASSIGNMENT_SECURITY = 5, ASSIGNMENT_SCIENTIST = 5), 1), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Jellyfish Migration", /datum/event/jellyfish_migration, 5, list(ASSIGNMENT_SECURITY = 5, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)), + ) + add_disabled_events(list( + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Meteor Strike", /datum/event/meteor_strike, 10, list(ASSIGNMENT_ENGINEER = 15), 1), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Blob", /datum/event/blob, 10, list(ASSIGNMENT_ENGINEER = 60), 1), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Meteor Wave", /datum/event/meteor_wave, 30, list(ASSIGNMENT_ENGINEER = 15), 1), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Supply Demand", /datum/event/supply_demand, 0, list(ASSIGNMENT_ANY = 5, ASSIGNMENT_SCIENCE = 15, ASSIGNMENT_GARDENER = 10, ASSIGNMENT_ENGINEER = 10, ASSIGNMENT_MEDICAL = 15), 1), + )) + +#undef ASSIGNMENT_ANY +#undef ASSIGNMENT_AI +#undef ASSIGNMENT_CYBORG +#undef ASSIGNMENT_ENGINEER +#undef ASSIGNMENT_GARDENER +#undef ASSIGNMENT_JANITOR +#undef ASSIGNMENT_MEDICAL +#undef ASSIGNMENT_SCIENTIST +#undef ASSIGNMENT_SECURITY diff --git a/maps/tether/tether_events.dm b/maps/tether/tether_events.dm new file mode 100644 index 0000000000..b6dc85c1e0 --- /dev/null +++ b/maps/tether/tether_events.dm @@ -0,0 +1,121 @@ +#define ASSIGNMENT_ANY "Any" +#define ASSIGNMENT_AI "AI" +#define ASSIGNMENT_CYBORG "Cyborg" +#define ASSIGNMENT_ENGINEER "Engineer" +#define ASSIGNMENT_GARDENER "Botanist" +#define ASSIGNMENT_JANITOR "Janitor" +#define ASSIGNMENT_MEDICAL "Medical" +#define ASSIGNMENT_SCIENTIST "Scientist" +#define ASSIGNMENT_SECURITY "Security" + +// +// VOREStation overrides to the default event manager configuration. +// +// This file lets us configure which events we want in the rotation without conflicts with upstream. +// It works because the actual event containers don't define New(), allowing us to use New() to replace +// the lists of available events. If they ever do define New() this will need to be changed. +// +// Specifically the change is to move events we don't want down into the disabled_events list +// + +// Adds a list of pre-disabled events to the available events list. +// This keeps them in the rotation, but disabled, so they can be enabled with a click if desired that round. +/datum/event_container/proc/add_disabled_events(var/list/disabled_events) + for(var/datum/event_meta/EM in disabled_events) + EM.enabled = 0 + available_events += EM + +/datum/event_container/mundane/New() + available_events = list( + // Severity level, event name, even type, base weight, role weights, one shot, min weight, max weight. Last two only used if set and non-zero + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Nothing", /datum/event/nothing, 400), + // Bluescreens APCs, but they still work + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "APC Damage", /datum/event/apc_damage, 20, list(ASSIGNMENT_ENGINEER = 20), min_jobs = list(ASSIGNMENT_ENGINEER = 1)), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Brand Intelligence",/datum/event/brand_intelligence, 0, list(ASSIGNMENT_ENGINEER = 10), 1, min_jobs = list(ASSIGNMENT_ENGINEER = 1)), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Camera Damage", /datum/event/camera_damage, 20, list(ASSIGNMENT_ENGINEER = 20, ASSIGNMENT_SECURITY = 5), min_jobs = list(ASSIGNMENT_ENGINEER = 1)), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Canister Leak", /datum/event/canister_leak, 10, list(ASSIGNMENT_ENGINEER = 20), min_jobs = list(ASSIGNMENT_ENGINEER = 1)), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Space Dust", /datum/event/dust, 0, list(ASSIGNMENT_ENGINEER = 20), 0, 0, 50, min_jobs = list(ASSIGNMENT_ENGINEER = 2)), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Economic News", /datum/event/economic_event, 300), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Lost Carp", /datum/event/carp_migration, 0, list(ASSIGNMENT_SECURITY = 10), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Money Hacker", /datum/event/money_hacker, 0, list(ASSIGNMENT_ANY = 4), 1, 10, 25), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Money Lotto", /datum/event/money_lotto, 0, list(ASSIGNMENT_ANY = 1), 1, 5, 15), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Shipping Error", /datum/event/shipping_error , 30, list(ASSIGNMENT_ANY = 2), 0), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Trivial News", /datum/event/trivial_news, 400), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Lore News", /datum/event/lore_news, 400), + // Spawns mice, lizards, or dud spiderlings + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Vermin Infestation",/datum/event/infestation, 50, list(ASSIGNMENT_JANITOR = 25), 1), + // Rot only weakens walls, not destroy them + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Wallrot", /datum/event/wallrot, 0, list(ASSIGNMENT_ENGINEER = 30), 1, min_jobs = list(ASSIGNMENT_ENGINEER = 1)), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Aurora Caelus", /datum/event/aurora_caelus, 2, list(), 1), + ) + add_disabled_events(list( + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Ian Storm", /datum/event/ianstorm, 1, list(), 1), + new /datum/event_meta(EVENT_LEVEL_MUNDANE, "Supply Demand", /datum/event/supply_demand, 0, list(ASSIGNMENT_ANY = 5, ASSIGNMENT_SCIENCE = 15, ASSIGNMENT_GARDENER = 10, ASSIGNMENT_ENGINEER = 10, ASSIGNMENT_MEDICAL = 15), 1), + )) + +/datum/event_container/moderate/New() + available_events = list( + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Nothing", /datum/event/nothing, 1600), + // Leaks gas into an unoccupied room. + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Atmos Leak", /datum/event/atmos_leak, 30, list(ASSIGNMENT_ENGINEER = 25), 1, min_jobs = list(ASSIGNMENT_ENGINEER = 1)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Carp School", /datum/event/carp_migration, 0, list(ASSIGNMENT_SECURITY = 30), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), + // Just disables comms for a short while. + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Communication Blackout", /datum/event/communications_blackout, 500, list(), 1), + // Just blows out a few lights + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Electrical Storm", /datum/event/electrical_storm, 70, list(ASSIGNMENT_ENGINEER = 20, ASSIGNMENT_JANITOR = 150), 1), + // This one is just too fun. + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Gravity Failure", /datum/event/gravity, 75, list(ASSIGNMENT_ENGINEER = 60), 1), + // Temporary power failure, but mitigatead by subgrids + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Grid Check", /datum/event/grid_check, 0, list(ASSIGNMENT_ENGINEER = 25), 1, min_jobs = list(ASSIGNMENT_ENGINEER = 1)), + // Pure RP fun, no mechanical effects. + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Ion Storm", /datum/event/ionstorm, 0, list(ASSIGNMENT_AI = 80, ASSIGNMENT_CYBORG = 50, ASSIGNMENT_ENGINEER = 15, ASSIGNMENT_SCIENTIST = 5), min_jobs = list(ASSIGNMENT_AI = 1)), + // Opens doors in brig. So just RP fun + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Prison Break", /datum/event/prison_break, 10, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_ENGINEER = 15), 1), + // Radiation, but only in space. + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Rogue Drones", /datum/event/rogue_drone, 0, list(ASSIGNMENT_SECURITY = 20), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Solar Storm", /datum/event/solar_storm, 30, list(ASSIGNMENT_ENGINEER = 40, ASSIGNMENT_SECURITY = 30), 1), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Space Dust", /datum/event/dust, 0, list(ASSIGNMENT_ENGINEER = 20), 1, 0, 50, min_jobs = list(ASSIGNMENT_ENGINEER = 3)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Virology Breach", /datum/event/prison_break/virology, 0, list(ASSIGNMENT_MEDICAL = 15, ASSIGNMENT_ENGINEER = 15), 1), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Xenobiology Breach", /datum/event/prison_break/xenobiology, 0, list(ASSIGNMENT_SCIENTIST = 15, ASSIGNMENT_ENGINEER = 15), 1), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Spider Infestation", /datum/event/spider_infestation, 0, list(ASSIGNMENT_SECURITY = 30), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)), + //Evil grubs that drain station power slightly + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Grub Infestation", /datum/event/grub_infestation, 0, list(ASSIGNMENT_SECURITY = 10, ASSIGNMENT_ENGINEER = 30), 1, min_jobs = list(ASSIGNMENT_SECURITY = 1, ASSIGNMENT_ENGINEER = 1)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Drone Pod Drop", /datum/event/drone_pod_drop, 40, list(ASSIGNMENT_SCIENTIST = 40), 1), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Morph Spawn", /datum/event/morph_spawn, 75, list(ASSIGNMENT_ANY = 5), 0), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Maintenance Predator", /datum/event/maintenance_predator, 100, list(ASSIGNMENT_ANY = 5), 0), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Jellyfish School", /datum/event/jellyfish_migration, 0, list(ASSIGNMENT_SECURITY = 15, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)), + ) + add_disabled_events(list( + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Appendicitis", /datum/event/spontaneous_appendicitis, 0, list(ASSIGNMENT_MEDICAL = 30), 1), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Meteor Shower", /datum/event/meteor_wave, 30, list(ASSIGNMENT_ENGINEER = 20)), + // Not bad (dorms are shielded) but inconvenient + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Radiation Storm", /datum/event/radiation_storm, 50, list(ASSIGNMENT_MEDICAL = 50), 1), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Random Antagonist", /datum/event/random_antag, 0, list(ASSIGNMENT_SECURITY = 1), 1, 0, 5), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Supply Demand", /datum/event/supply_demand, 0, list(ASSIGNMENT_ANY = 5, ASSIGNMENT_SCIENCE = 15, ASSIGNMENT_GARDENER = 10, ASSIGNMENT_ENGINEER = 10, ASSIGNMENT_MEDICAL = 15), 1), + )) + +/datum/event_container/major/New() + available_events = list( + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Nothing", /datum/event/nothing, 3600), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Atmos Leak", /datum/event/atmos_leak, 20, list(ASSIGNMENT_ENGINEER = 25), 1, min_jobs = list(ASSIGNMENT_ENGINEER = 1)), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Space Vines", /datum/event/spacevine, 10, list(ASSIGNMENT_ENGINEER = 3, ASSIGNMENT_GARDENER = 3, ASSIGNMENT_SCIENTIST = 3), 1), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Carp Migration", /datum/event/carp_migration, 10, list(ASSIGNMENT_SECURITY = 5), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Containment Breach", /datum/event/prison_break/station, 0, list(ASSIGNMENT_ENGINEER = 5, ASSIGNMENT_MEDICAL = 5, ASSIGNMENT_SECURITY = 5, ASSIGNMENT_SCIENTIST = 5), 1), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Jellyfish Migration", /datum/event/jellyfish_migration, 5, list(ASSIGNMENT_SECURITY = 5, ASSIGNMENT_MEDICAL = 3), 1, min_jobs = list(ASSIGNMENT_SECURITY = 2)), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Meteor Strike", /datum/event/meteor_strike, 10, list(ASSIGNMENT_ENGINEER = 15), 1), + ) + add_disabled_events(list( + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Blob", /datum/event/blob, 10, list(ASSIGNMENT_ENGINEER = 60), 1), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Meteor Wave", /datum/event/meteor_wave, 30, list(ASSIGNMENT_ENGINEER = 15), 1), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Supply Demand", /datum/event/supply_demand, 0, list(ASSIGNMENT_ANY = 5, ASSIGNMENT_SCIENCE = 15, ASSIGNMENT_GARDENER = 10, ASSIGNMENT_ENGINEER = 10, ASSIGNMENT_MEDICAL = 15), 1), + )) + +#undef ASSIGNMENT_ANY +#undef ASSIGNMENT_AI +#undef ASSIGNMENT_CYBORG +#undef ASSIGNMENT_ENGINEER +#undef ASSIGNMENT_GARDENER +#undef ASSIGNMENT_JANITOR +#undef ASSIGNMENT_MEDICAL +#undef ASSIGNMENT_SCIENTIST +#undef ASSIGNMENT_SECURITY \ No newline at end of file