diff --git a/code/__DEFINES/subsystems.dm b/code/__DEFINES/subsystems.dm index 9ec26b7506..247e1109f8 100644 --- a/code/__DEFINES/subsystems.dm +++ b/code/__DEFINES/subsystems.dm @@ -46,8 +46,8 @@ #define INIT_ORDER_DBCORE 18 #define INIT_ORDER_BLACKBOX 17 #define INIT_ORDER_SERVER_MAINT 16 -#define INIT_ORDER_JOBS 15 -#define INIT_ORDER_EVENTS 14 +#define INIT_ORDER_EVENTS 15 +#define INIT_ORDER_JOBS 14 #define INIT_ORDER_TICKER 13 #define INIT_ORDER_MAPPING 12 #define INIT_ORDER_ATOMS 11 diff --git a/code/citadel/_cit_helpers.dm b/code/citadel/_cit_helpers.dm index 9ac58122fe..f3db31c228 100644 --- a/code/citadel/_cit_helpers.dm +++ b/code/citadel/_cit_helpers.dm @@ -26,7 +26,7 @@ proc/get_racelist(var/mob/user)//This proc returns a list of species that 'user' var/list/wlist = S.whitelist if(S.whitelisted && (wlist.Find(user.ckey) || wlist.Find(user.key) || user.client.holder)) //If your ckey is on the species whitelist or you're an admin: GLOB.whitelisted_species_list[S.id] = S.type //Add the species to their available species list. - else if(!S.whitelisted && S.roundstart) //Normal roundstart species will be handled here. + else if(!S.whitelisted) //Normal roundstart species will be handled here. GLOB.whitelisted_species_list[S.id] = S.type return GLOB.whitelisted_species_list diff --git a/code/controllers/configuration/entries/game_options.dm b/code/controllers/configuration/entries/game_options.dm index f1ee6a557c..aaa3b2a029 100644 --- a/code/controllers/configuration/entries/game_options.dm +++ b/code/controllers/configuration/entries/game_options.dm @@ -371,4 +371,4 @@ CONFIG_TWEAK(number/mc_tick_rate) CONFIG_TWEAK(number/mc_tick_rate/ValidateAndSet(str_val)) . = ..() if (.) - Master.UpdateTickRate() + Master.UpdateTickRate() \ No newline at end of file diff --git a/code/controllers/subsystem/job.dm b/code/controllers/subsystem/job.dm index fa6ca7e26b..5645f0527f 100644 --- a/code/controllers/subsystem/job.dm +++ b/code/controllers/subsystem/job.dm @@ -18,6 +18,7 @@ SUBSYSTEM_DEF(job) SetupOccupations() if(CONFIG_GET(flag/load_jobs_from_txt)) LoadJobs() + generate_selectable_species() ..() diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index 4b198d1e80..e1828b737a 100755 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -12,7 +12,7 @@ SUBSYSTEM_DEF(ticker) var/force_ending = 0 //Round was ended by admin intervention // If true, there is no lobby phase, the game starts immediately. var/start_immediately = FALSE - var/setup_done = FALSE //All game setup done including mode post setup and + var/setup_done = FALSE //All game setup done including mode post setup and var/hide_mode = 0 var/datum/game_mode/mode = null @@ -127,7 +127,7 @@ SUBSYSTEM_DEF(ticker) login_music = pick(music) else login_music = "config/title_music/sounds/[pick(music)]" - + crewobjlist = typesof(/datum/objective/crew) miscreantobjlist = (typesof(/datum/objective/miscreant) - /datum/objective/miscreant) @@ -141,6 +141,7 @@ SUBSYSTEM_DEF(ticker) GLOB.syndicate_code_phrase = generate_code_phrase() if(!GLOB.syndicate_code_response) GLOB.syndicate_code_response = generate_code_phrase() + ..() start_at = world.time + (CONFIG_GET(number/lobby_countdown) * 10) diff --git a/code/datums/components/_component.dm b/code/datums/components/_component.dm index 2f70713c32..9978b01955 100644 --- a/code/datums/components/_component.dm +++ b/code/datums/components/_component.dm @@ -220,3 +220,14 @@ C.OnTransfer(src) C.parent = src SendSignal(COMSIG_COMPONENT_ADDED, C) + +/datum/proc/TransferComponents(datum/target) + var/list/dc = datum_components + if(!dc) + return + var/comps = dc[/datum/component] + if(islist(comps)) + for(var/I in comps) + target.TakeComponent(I) + else + target.TakeComponent(comps) diff --git a/code/datums/dna.dm b/code/datums/dna.dm index 12555ee038..3987b49750 100644 --- a/code/datums/dna.dm +++ b/code/datums/dna.dm @@ -263,7 +263,7 @@ /mob/living/carbon/proc/create_dna() dna = new /datum/dna(src) if(!dna.species) - var/rando_race = pick(CONFIG_GET(keyed_flag_list/roundstart_races)) + var/rando_race = pick(GLOB.roundstart_races) dna.species = new rando_race() //proc used to update the mob's appearance after its dna UI has been changed diff --git a/code/game/machinery/computer/cloning.dm b/code/game/machinery/computer/cloning.dm index 31126a6c08..ee316b3eed 100644 --- a/code/game/machinery/computer/cloning.dm +++ b/code/game/machinery/computer/cloning.dm @@ -470,7 +470,7 @@ // species datums R.fields["mrace"] = dna.species else - var/datum/species/rando_race = pick(CONFIG_GET(keyed_flag_list/roundstart_races)) + var/datum/species/rando_race = pick(GLOB.roundstart_races) R.fields["mrace"] = rando_race.type R.fields["ckey"] = mob_occupant.ckey diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm index 8859522ed2..fba60f34ab 100644 --- a/code/game/machinery/computer/security.dm +++ b/code/game/machinery/computer/security.dm @@ -598,7 +598,7 @@ What a mess.*/ active1.fields["age"] = t1 if("species") if(istype(active1, /datum/data/record)) - var/t1 = input("Select a species", "Species Selection") as null|anything in CONFIG_GET(keyed_flag_list/roundstart_races) + var/t1 = input("Select a species", "Species Selection") as null|anything in GLOB.roundstart_races if(!canUseSecurityRecordsConsole(usr, t1, a1)) return active1.fields["species"] = t1 @@ -766,7 +766,7 @@ What a mess.*/ if(6) R.fields["m_stat"] = pick("*Insane*", "*Unstable*", "*Watch*", "Stable") if(7) - R.fields["species"] = pick(CONFIG_GET(keyed_flag_list/roundstart_races)) + R.fields["species"] = pick(GLOB.roundstart_races) if(8) var/datum/data/record/G = pick(GLOB.data_core.general) R.fields["photo_front"] = G.fields["photo_front"] diff --git a/code/game/objects/items/manuals.dm b/code/game/objects/items/manuals.dm index c0298d8122..edaa4ce648 100644 --- a/code/game/objects/items/manuals.dm +++ b/code/game/objects/items/manuals.dm @@ -1,959 +1,955 @@ -/*********************MANUALS (BOOKS)***********************/ - -//Oh god what the fuck I am not good at computer -/obj/item/book/manual - icon = 'icons/obj/library.dmi' - due_date = 0 // Game time in 1/10th seconds - unique = 1 // 0 - Normal book, 1 - Should not be treated as normal book, unable to be copied, unable to be modified - -/obj/item/book/manual/engineering_particle_accelerator - name = "Particle Accelerator User's Guide" - icon_state ="bookParticleAccelerator" - author = "Engineering Encyclopedia" // Who wrote the thing, can be changed by pen or PC. It is not automatically assigned - title = "Particle Accelerator User's Guide" - dat = {" -
- - - - -
- Step one: PANIC!
- Step two: Get your ass over to engineering! QUICKLY!!!
- Step three: Make sure the SMES is still powering the emitters, if not, setup the generator in secure storage and disconnect the emitters from the SMES.
- Step four: Next, head over to the APC and swipe it with your ID card - if it doesn't unlock, continue with step 15.
- Step five: Open the console and disengage the cover lock.
- Step six: Pry open the APC with a Crowbar.
- Step seven: Take out the empty power cell.
- Step eight: Put in the new, full power cell - if you don't have one, continue with step 15.
- Step nine: Quickly put on a Radiation suit.
- Step ten: Check if the singularity field generators withstood the down-time - if they didn't, continue with step 15.
- Step eleven: Since disaster was averted you now have to ensure it doesn't repeat. If it was a powersink which caused it and if the engineering apc is wired to the same powernet, which the powersink is on, you have to remove the piece of wire which links the apc to the powernet. If it wasn't a powersink which caused it, then skip to step 14.
- Step twelve: Grab your crowbar and pry away the tile closest to the APC.
- Step thirteen: Use the wirecutters to cut the wire which is conecting the grid to the terminal.
- Step fourteen: Go to the bar and tell the guys how you saved them all. Stop reading this guide here.
- Step fifteen: GET THE FUCK OUT OF THERE!!!
-
-
- It really is that easy! Good luck! - - - - "} - -/obj/item/book/manual/medical_cloning - name = "Cloning techniques of the 26th century" - icon_state ="bookCloning" - author = "Medical Journal, volume 3" // Who wrote the thing, can be changed by pen or PC. It is not automatically assigned - title = "Cloning techniques of the 26th century" -//big pile of shit below. - - dat = {" -
- - - - -If you’ve gotten this far, congratulations! You have mastered the art of cloning. Now, the real problem is how to resurrect yourself after that traitor had his way with you for cloning his target. - - - - - - "} - - -/obj/item/book/manual/ripley_build_and_repair - name = "APLU \"Ripley\" Construction and Operation Manual" - icon_state ="book" - author = "Weyland-Yutani Corp" // Who wrote the thing, can be changed by pen or PC. It is not automatically assigned - title = "APLU \"Ripley\" Construction and Operation Manual" -//big pile of shit below. - - dat = {" -
- - - --
- It really is that easy! Good luck!
-
-
- "}
-
-/obj/item/book/manual/nuclear
- name = "Fission Mailed: Nuclear Sabotage 101"
- icon_state ="bookNuclear"
- author = "Syndicate"
- title = "Fission Mailed: Nuclear Sabotage 101"
- dat = {"
- Nuclear Explosives 101:
- Hello and thank you for choosing the Syndicate for your nuclear information needs.
- Today's crash course will deal with the operation of a Fusion Class Nanotrasen made Nuclear Device.
- First and foremost, DO NOT TOUCH ANYTHING UNTIL THE BOMB IS IN PLACE.
- Pressing any button on the compacted bomb will cause it to extend and bolt itself into place.
- If this is done to unbolt it one must completely log in which at this time may not be possible.
- To make the nuclear device functional:
-
You start skimming through the manual...
- - - - - - "} - -/obj/item/book/manual/wiki/chemistry - name = "Chemistry Textbook" - icon_state ="chemistrybook" - author = "Nanotrasen" - title = "Chemistry Textbook" - page_link = "Guide_to_chemistry" - -/obj/item/book/manual/wiki/engineering_construction - name = "Station Repairs and Construction" - icon_state ="bookEngineering" - author = "Engineering Encyclopedia" - title = "Station Repairs and Construction" - page_link = "Guide_to_construction" - -/obj/item/book/manual/wiki/engineering_guide - name = "Engineering Textbook" - icon_state ="bookEngineering2" - author = "Engineering Encyclopedia" - title = "Engineering Textbook" - page_link = "Guide_to_engineering" - -/obj/item/book/manual/wiki/security_space_law - name = "Space Law" - desc = "A set of Nanotrasen guidelines for keeping law and order on their space stations." - icon_state = "bookSpaceLaw" - author = "Nanotrasen" - title = "Space Law" - page_link = "Space_Law" - -/obj/item/book/manual/wiki/infections - name = "Infections - Making your own pandemic!" - icon_state = "bookInfections" - author = "Infections Encyclopedia" - title = "Infections - Making your own pandemic!" - page_link = "Infections" - -/obj/item/book/manual/wiki/telescience - name = "Teleportation Science - Bluespace for dummies!" - icon_state = "book7" - author = "University of Bluespace" - title = "Teleportation Science - Bluespace for dummies!" - page_link = "Guide_to_telescience" - -/obj/item/book/manual/wiki/engineering_hacking - name = "Hacking" - icon_state ="bookHacking" - author = "Engineering Encyclopedia" - title = "Hacking" - page_link = "Hacking" +/*********************MANUALS (BOOKS)***********************/ + +//Oh god what the fuck I am not good at computer +/obj/item/book/manual + icon = 'icons/obj/library.dmi' + due_date = 0 // Game time in 1/10th seconds + unique = 1 // 0 - Normal book, 1 - Should not be treated as normal book, unable to be copied, unable to be modified + +/obj/item/book/manual/engineering_particle_accelerator + name = "Particle Accelerator User's Guide" + icon_state ="bookParticleAccelerator" + author = "Engineering Encyclopedia" // Whoever wrote the paper or book, can be changed by pen or PC. It is not automatically assigned. + title = "Particle Accelerator User's Guide" +//book contents below + + dat = {" + + + + + +
+ Step one: PANIC!
+ Step two: Get your ass over to engineering! QUICKLY!!!
+ Step three: Make sure the SMES is still powering the emitters, if not, setup the generator in secure storage and disconnect the emitters from the SMES.
+ Step four: Next, head over to the APC and swipe it with your ID card - if it doesn't unlock, continue with step 15.
+ Step five: Open the console and disengage the cover lock.
+ Step six: Pry open the APC with a Crowbar.
+ Step seven: Take out the empty power cell.
+ Step eight: Put in the new, full power cell - if you don't have one, continue with step 15.
+ Step nine: Quickly put on a Radiation suit.
+ Step ten: Check if the singularity field generators withstood the down-time - if they didn't, continue with step 15.
+ Step eleven: Since disaster was averted you now have to ensure it doesn't repeat. If it was a powersink which caused it and if the engineering apc is wired to the same powernet, which the powersink is on, you have to remove the piece of wire which links the apc to the powernet. If it wasn't a powersink which caused it, then skip to step 14.
+ Step twelve: Grab your crowbar and pry away the tile closest to the APC.
+ Step thirteen: Use the wirecutters to cut the wire which is conecting the grid to the terminal.
+ Step fourteen: Go to the bar and tell the guys how you saved them all. Stop reading this guide here.
+ Step fifteen: GET THE FUCK OUT OF THERE!!!
+
+
+ It really is that easy! Good luck! + + + + "} + +/obj/item/book/manual/medical_cloning + name = "Cloning techniques of the 26th century" + icon_state ="bookCloning" + author = "Medical Journal, volume 3" + title = "Cloning techniques of the 26th century" + dat = {" +
+ + + + +If you've gotten this far, congratulations! You have mastered the art of cloning. Now, the real problem is how to resurrect yourself after that traitor had his way with you for cloning his target. + + + + + + "} + + +/obj/item/book/manual/ripley_build_and_repair + name = "APLU \"Ripley\" Construction and Operation Manual" + icon_state ="book" + author = "Weyland-Yutani Corp" + title = "APLU \"Ripley\" Construction and Operation Manual" + dat = {" +
+ + + ++
+ It really is that easy! Good luck!
+
+
+ "}
+
+/obj/item/book/manual/nuclear
+ name = "Fission Mailed: Nuclear Sabotage 101"
+ icon_state ="bookNuclear"
+ author = "Syndicate"
+ title = "Fission Mailed: Nuclear Sabotage 101"
+ dat = {"
+ Nuclear Explosives 101:
+ Hello and thank you for choosing the Syndicate for your nuclear information needs.
+ Today's crash course will deal with the operation of a Fusion Class Nanotrasen made Nuclear Device.
+ First and foremost, DO NOT TOUCH ANYTHING UNTIL THE BOMB IS IN PLACE.
+ Pressing any button on the compacted bomb will cause it to extend and bolt itself into place.
+ If this is done to unbolt it one must completely log in which at this time may not be possible.
+ To make the nuclear device functional:
+
You start skimming through the manual...
+ + + + + + "} + +/obj/item/book/manual/wiki/chemistry + name = "Chemistry Textbook" + icon_state ="chemistrybook" + author = "Nanotrasen" + title = "Chemistry Textbook" + page_link = "Guide_to_chemistry" + +/obj/item/book/manual/wiki/engineering_construction + name = "Station Repairs and Construction" + icon_state ="bookEngineering" + author = "Engineering Encyclopedia" + title = "Station Repairs and Construction" + page_link = "Guide_to_construction" + +/obj/item/book/manual/wiki/engineering_guide + name = "Engineering Textbook" + icon_state ="bookEngineering2" + author = "Engineering Encyclopedia" + title = "Engineering Textbook" + page_link = "Guide_to_engineering" + +/obj/item/book/manual/wiki/security_space_law + name = "Space Law" + desc = "A set of Nanotrasen guidelines for keeping law and order on their space stations." + icon_state = "bookSpaceLaw" + author = "Nanotrasen" + title = "Space Law" + page_link = "Space_Law" + +/obj/item/book/manual/wiki/infections + name = "Infections - Making your own pandemic!" + icon_state = "bookInfections" + author = "Infections Encyclopedia" + title = "Infections - Making your own pandemic!" + page_link = "Infections" + +/obj/item/book/manual/wiki/telescience + name = "Teleportation Science - Bluespace for dummies!" + icon_state = "book7" + author = "University of Bluespace" + title = "Teleportation Science - Bluespace for dummies!" + page_link = "Guide_to_telescience" + +/obj/item/book/manual/wiki/engineering_hacking + name = "Hacking" + icon_state ="bookHacking" + author = "Engineering Encyclopedia" + title = "Hacking" + page_link = "Hacking" diff --git a/code/game/objects/structures/mirror.dm b/code/game/objects/structures/mirror.dm index 296e4ba757..711f9baf0b 100644 --- a/code/game/objects/structures/mirror.dm +++ b/code/game/objects/structures/mirror.dm @@ -101,8 +101,7 @@ ..() /obj/structure/mirror/magic/lesser/New() - var/list/L = CONFIG_GET(keyed_flag_list/roundstart_races) - choosable_races = L.Copy() + choosable_races = GLOB.roundstart_races.Copy() ..() /obj/structure/mirror/magic/badmin/New() diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index f72b1c7f3c..cf8fb6ffc7 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -45,7 +45,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/allow_midround_antag = 1 var/preferred_map = null var/pda_style = MONO - + var/uses_glasses_colour = 0 var/screenshake = 100 @@ -1188,7 +1188,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) if("species") - var/result = input(user, "Select a species", "Species Selection") as null|anything in CONFIG_GET(keyed_flag_list/roundstart_races) + var/result = input(user, "Select a species", "Species Selection") as null|anything in GLOB.roundstart_races if(result) var/newtype = GLOB.species_list[result] diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index dddac1e506..404e64e517 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -294,12 +294,11 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car //Species var/species_id S["species"] >> species_id - var/list/roundstart_races = CONFIG_GET(keyed_flag_list/roundstart_races) - if(species_id && (species_id in roundstart_races) && CONFIG_GET(flag/join_with_mutant_race)) + if(species_id && (species_id in GLOB.roundstart_races) && CONFIG_GET(flag/join_with_mutant_race)) var/newtype = GLOB.species_list[species_id] pref_species = new newtype() - else if (roundstart_races.len) - var/rando_race = pick(roundstart_races) + else if (GLOB.roundstart_races.len) + var/rando_race = pick(GLOB.roundstart_races) if (rando_race) pref_species = new rando_race() diff --git a/code/modules/mob/dead/new_player/preferences_setup.dm b/code/modules/mob/dead/new_player/preferences_setup.dm index 01c3e6d630..f362f09a65 100644 --- a/code/modules/mob/dead/new_player/preferences_setup.dm +++ b/code/modules/mob/dead/new_player/preferences_setup.dm @@ -14,7 +14,7 @@ facial_hair_color = hair_color eye_color = random_eye_color() if(!pref_species) - var/rando_race = pick(CONFIG_GET(keyed_flag_list/roundstart_races)) + var/rando_race = pick(GLOB.roundstart_races) pref_species = new rando_race() features = random_features() age = rand(AGE_MIN,AGE_MAX) diff --git a/code/modules/mob/living/brain/brain.dm b/code/modules/mob/living/brain/brain.dm index 94ed0129c7..c175acf9d6 100644 --- a/code/modules/mob/living/brain/brain.dm +++ b/code/modules/mob/living/brain/brain.dm @@ -19,7 +19,7 @@ /mob/living/brain/proc/create_dna() stored_dna = new /datum/dna/stored(src) if(!stored_dna.species) - var/rando_race = pick(CONFIG_GET(keyed_flag_list/roundstart_races)) + var/rando_race = pick(GLOB.roundstart_races) stored_dna.species = new rando_race() /mob/living/brain/Destroy() diff --git a/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm b/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm index d75d3f4679..a326150c60 100644 --- a/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm +++ b/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm @@ -25,6 +25,10 @@ else if (light_amount < SHADOW_SPECIES_LIGHT_THRESHOLD) //heal in the dark H.heal_overall_damage(1,1) +/datum/species/shadow/check_roundstart_eligible() + if(SSevents.holidays && SSevents.holidays[HALLOWEEN]) + return TRUE + return ..() /datum/species/shadow/nightmare name = "Nightmare" @@ -61,7 +65,8 @@ return -1 return 0 - +/datum/species/shadow/nightmare/check_roundstart_eligible() + return FALSE //Organs diff --git a/code/modules/mob/living/carbon/human/species_types/skeletons.dm b/code/modules/mob/living/carbon/human/species_types/skeletons.dm index be03e591aa..acaa182ad0 100644 --- a/code/modules/mob/living/carbon/human/species_types/skeletons.dm +++ b/code/modules/mob/living/carbon/human/species_types/skeletons.dm @@ -11,3 +11,8 @@ damage_overlay_type = ""//let's not show bloody wounds or burns over bones. disliked_food = NONE liked_food = NONE + +/datum/species/skeleton/check_roundstart_eligible() + if(SSevents.holidays && SSevents.holidays[HALLOWEEN]) + return TRUE + return ..() diff --git a/code/modules/mob/living/carbon/human/species_types/synths.dm b/code/modules/mob/living/carbon/human/species_types/synths.dm index 45b4a28bb5..8b21c2a237 100644 --- a/code/modules/mob/living/carbon/human/species_types/synths.dm +++ b/code/modules/mob/living/carbon/human/species_types/synths.dm @@ -118,4 +118,4 @@ else return ..() else - return ..() + return ..() \ No newline at end of file diff --git a/code/modules/mob/living/carbon/human/species_types/zombies.dm b/code/modules/mob/living/carbon/human/species_types/zombies.dm index 53a8a5b8bb..8c87e1c9c9 100644 --- a/code/modules/mob/living/carbon/human/species_types/zombies.dm +++ b/code/modules/mob/living/carbon/human/species_types/zombies.dm @@ -14,6 +14,11 @@ disliked_food = NONE liked_food = NONE +/datum/species/zombie/check_roundstart_eligible() + if(SSevents.holidays && SSevents.holidays[HALLOWEEN]) + return TRUE + return ..() + /datum/species/zombie/infectious name = "Infectious Zombie" id = "memezombies" @@ -24,6 +29,10 @@ mutanteyes = /obj/item/organ/eyes/night_vision/zombie var/regen_cooldown = 0 +/datum/species/zombie/infectious/check_roundstart_eligible() + return FALSE + + /datum/species/zombie/infectious/spec_stun(mob/living/carbon/human/H,amount) . = min(2, amount) diff --git a/html/changelogs/AutoChangeLog-pr-3524.yml b/html/changelogs/AutoChangeLog-pr-3524.yml new file mode 100644 index 0000000000..8966133a1d --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3524.yml @@ -0,0 +1,4 @@ +author: "Kor" +delete-after: True +changes: + - rscadd: "You can now select your Halloween race, rather than having it assigned randomly via event." diff --git a/html/changelogs/AutoChangeLog-pr-3663.yml b/html/changelogs/AutoChangeLog-pr-3663.yml new file mode 100644 index 0000000000..7fe666a739 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-3663.yml @@ -0,0 +1,4 @@ +author: "Mark9013100" +delete-after: True +changes: + - tweak: "The Medical Cloning manual has been updated."