From 52977003405546251bb33403eabb1e46e10c3406 Mon Sep 17 00:00:00 2001 From: Timothy Teakettle <59849408+timothyteakettle@users.noreply.github.com> Date: Wed, 5 Aug 2020 14:11:40 +0100 Subject: [PATCH 01/23] snowflake coders are bad --- code/_globalvars/lists/flavor_misc.dm | 8 +- code/modules/client/preferences.dm | 322 ++------------------------ 2 files changed, 23 insertions(+), 307 deletions(-) diff --git a/code/_globalvars/lists/flavor_misc.dm b/code/_globalvars/lists/flavor_misc.dm index a25381f266..6afa8ef0ce 100644 --- a/code/_globalvars/lists/flavor_misc.dm +++ b/code/_globalvars/lists/flavor_misc.dm @@ -231,4 +231,10 @@ GLOBAL_LIST_INIT(speech_verbs, list("default","says","gibbers", "states", "chitt GLOBAL_LIST_INIT(roundstart_tongues, list("default","human tongue" = /obj/item/organ/tongue, "lizard tongue" = /obj/item/organ/tongue/lizard, "skeleton tongue" = /obj/item/organ/tongue/bone, "fly tongue" = /obj/item/organ/tongue/fly, "ipc tongue" = /obj/item/organ/tongue/robot/ipc)) - +//locked parts are those that your picked species requires to have +//unlocked parts are those that anyone can choose on customisation regardless +//parts not in unlocked, but in all, are thus locked +GLOBAL_LIST_INIT(all_mutant_parts, list("tail_lizard" = "Tail", "mam_tail" = "Tail", "tail_human" = "Tail", "snout" = "Snout", "frills" = "Frills", "spines" = "Spines", "body_markings" = "Body Markings", "mam_body_markings" = "Species Markings" , "mam_ears" = "Ears", "ears" = "Ears", "mam_snouts" = "Snout", "legs" = "Legs", "deco_wings" = "Decorative Wings", "insect_wings" = "Insect Wings", "insect_fluff" = "Insect Fluff", "taur" = "Tauric Body", "insect_markings" = "Insect Markings", "wings" = "Wings", "xenohead" = "Caste Head", "xenotail" = "Tail", "xenodorsal" = "Dorsal Spines", "ipc_screen" = "Screen", "ipc_antenna" = "Antenna", "meat_type" = "Meat Type")) +GLOBAL_LIST_INIT(unlocked_mutant_parts, list("meat_type", "horns")) +//parts in either of the above two lists that require a second option that allows them to be coloured +GLOBAL_LIST_INIT(colored_mutant_parts, list("insect_wings" = "wings_color", "deco_wings" = "wings_color", "horns" = "horns_color")) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 9355f83827..291e4eac0e 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -507,310 +507,20 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "" mutant_category = 0 - if(pref_species.mutant_bodyparts["tail_lizard"]) - if(!mutant_category) - dat += APPEARANCE_CATEGORY_COLUMN - - dat += "

Tail

" - - dat += "[features["tail_lizard"]]" - - mutant_category++ - if(mutant_category >= MAX_MUTANT_ROWS) - dat += "" - mutant_category = 0 - - if(pref_species.mutant_bodyparts["mam_tail"]) - if(!mutant_category) - dat += APPEARANCE_CATEGORY_COLUMN - - dat += "

Tail

" - - dat += "[features["mam_tail"]]" - - mutant_category++ - if(mutant_category >= MAX_MUTANT_ROWS) - dat += "" - mutant_category = 0 - if(pref_species.mutant_bodyparts["tail_human"]) - if(!mutant_category) - dat += APPEARANCE_CATEGORY_COLUMN - - dat += "

Tail

" - - dat += "[features["tail_human"]]" - - mutant_category++ - if(mutant_category >= MAX_MUTANT_ROWS) - dat += "" - mutant_category = 0 - - if(pref_species.mutant_bodyparts["meat_type"]) - if(!mutant_category) - dat += APPEARANCE_CATEGORY_COLUMN - - dat += "

Meat Type

" - - dat += "[features["meat_type"]]" - - mutant_category++ - if(mutant_category >= MAX_MUTANT_ROWS) - dat += "" - mutant_category = 0 - if(pref_species.mutant_bodyparts["snout"]) - if(!mutant_category) - dat += APPEARANCE_CATEGORY_COLUMN - - dat += "

Snout

" - - dat += "[features["snout"]]" - - mutant_category++ - if(mutant_category >= MAX_MUTANT_ROWS) - dat += "" - mutant_category = 0 - if(pref_species.mutant_bodyparts["horns"]) - if(!mutant_category) - dat += APPEARANCE_CATEGORY_COLUMN - - dat += "

Horns

" - - dat += "[features["horns"]]" - dat += "    Change
" - - - mutant_category++ - if(mutant_category >= MAX_MUTANT_ROWS) - dat += "" - if(pref_species.mutant_bodyparts["frills"]) - if(!mutant_category) - dat += APPEARANCE_CATEGORY_COLUMN - - dat += "

Frills

" - - dat += "[features["frills"]]" - - mutant_category++ - if(mutant_category >= MAX_MUTANT_ROWS) - dat += "" - mutant_category = 0 - - if(pref_species.mutant_bodyparts["spines"]) - if(!mutant_category) - dat += APPEARANCE_CATEGORY_COLUMN - - dat += "

Spines

" - - dat += "[features["spines"]]" - - mutant_category++ - if(mutant_category >= MAX_MUTANT_ROWS) - dat += "" - mutant_category = 0 - - if(pref_species.mutant_bodyparts["body_markings"]) - if(!mutant_category) - dat += APPEARANCE_CATEGORY_COLUMN - - dat += "

Body Markings

" - - dat += "[features["body_markings"]]" - - mutant_category++ - if(mutant_category >= MAX_MUTANT_ROWS) - dat += "" - mutant_category = 0 - if(pref_species.mutant_bodyparts["mam_body_markings"]) - if(!mutant_category) - dat += APPEARANCE_CATEGORY_COLUMN - - dat += "

Species Markings

" - - dat += "[features["mam_body_markings"]]" - - mutant_category++ - if(mutant_category >= MAX_MUTANT_ROWS) - dat += "" - - if(pref_species.mutant_bodyparts["mam_ears"]) - if(!mutant_category) - dat += APPEARANCE_CATEGORY_COLUMN - - dat += "

Ears

" - - dat += "[features["mam_ears"]]" - - mutant_category++ - if(mutant_category >= MAX_MUTANT_ROWS) - dat += "" - mutant_category = 0 - - if(pref_species.mutant_bodyparts["ears"]) - if(!mutant_category) - dat += APPEARANCE_CATEGORY_COLUMN - - dat += "

Ears

" - - dat += "[features["ears"]]" - - mutant_category++ - if(mutant_category >= MAX_MUTANT_ROWS) - dat += "" - mutant_category = 0 - - if(pref_species.mutant_bodyparts["mam_snouts"]) - if(!mutant_category) - dat += APPEARANCE_CATEGORY_COLUMN - - dat += "

Snout

" - - dat += "[features["mam_snouts"]]" - - mutant_category++ - if(mutant_category >= MAX_MUTANT_ROWS) - dat += "" - mutant_category = 0 - if(pref_species.mutant_bodyparts["legs"]) - if(!mutant_category) - dat += APPEARANCE_CATEGORY_COLUMN - - dat += "

Legs

" - - dat += "[features["legs"]]" - - mutant_category++ - if(mutant_category >= MAX_MUTANT_ROWS) - dat += "" - mutant_category = 0 - if(pref_species.mutant_bodyparts["deco_wings"]) - if(!mutant_category) - dat += APPEARANCE_CATEGORY_COLUMN - - dat += "

Decorative wings

" - - dat += "[features["deco_wings"]]" - dat += "    Change
" - - if(pref_species.mutant_bodyparts["insect_wings"]) - if(!mutant_category) - dat += APPEARANCE_CATEGORY_COLUMN - - dat += "

Insect wings

" - - dat += "[features["insect_wings"]]" - dat += "    Change
" - mutant_category++ - if(mutant_category >= MAX_MUTANT_ROWS) - dat += "" - mutant_category = 0 - if(pref_species.mutant_bodyparts["insect_fluff"]) - if(!mutant_category) - dat += APPEARANCE_CATEGORY_COLUMN - - dat += "

Insect Fluff

" - - dat += "[features["insect_fluff"]]" - mutant_category++ - if(mutant_category >= MAX_MUTANT_ROWS) - dat += "" - mutant_category = 0 - if(pref_species.mutant_bodyparts["taur"]) - if(!mutant_category) - dat += APPEARANCE_CATEGORY_COLUMN - - dat += "

Tauric Body

" - - dat += "[features["taur"]]" - - if(pref_species.mutant_bodyparts["insect_markings"]) - if(!mutant_category) - dat += APPEARANCE_CATEGORY_COLUMN - - dat += "

Insect markings

" - - dat += "[features["insect_markings"]]
" - - mutant_category++ - if(mutant_category >= MAX_MUTANT_ROWS) - dat += "" - mutant_category = 0 - - mutant_category++ - if(mutant_category >= MAX_MUTANT_ROWS) - dat += "" - mutant_category = 0 - if(pref_species.mutant_bodyparts["wings"] && GLOB.r_wings_list.len >1) - if(!mutant_category) - dat += APPEARANCE_CATEGORY_COLUMN - - dat += "

Wings

" - - dat += "[features["wings"]]" - - mutant_category++ - if(mutant_category >= MAX_MUTANT_ROWS) - dat += "" - mutant_category = 0 - if(pref_species.mutant_bodyparts["xenohead"]) - if(!mutant_category) - dat += APPEARANCE_CATEGORY_COLUMN - - dat += "

Caste Head

" - - dat += "[features["xenohead"]]" - - mutant_category++ - if(mutant_category >= MAX_MUTANT_ROWS) - dat += "" - mutant_category = 0 - if(pref_species.mutant_bodyparts["xenotail"]) - if(!mutant_category) - dat += APPEARANCE_CATEGORY_COLUMN - - dat += "

Tail

" - - dat += "[features["xenotail"]]" - - mutant_category++ - if(mutant_category >= MAX_MUTANT_ROWS) - dat += "" - mutant_category = 0 - if(pref_species.mutant_bodyparts["xenodorsal"]) - if(!mutant_category) - dat += APPEARANCE_CATEGORY_COLUMN - - dat += "

Dorsal Spines

" - - dat += "[features["xenodorsal"]]" - - mutant_category++ - if(mutant_category >= MAX_MUTANT_ROWS) - dat += "" - mutant_category = 0 - if(pref_species.mutant_bodyparts["ipc_screen"]) - if(!mutant_category) - dat += APPEARANCE_CATEGORY_COLUMN - - dat += "

Screen

" - - dat += "[features["ipc_screen"]]" - - mutant_category++ - if(mutant_category >= MAX_MUTANT_ROWS) - dat += "" - mutant_category = 0 - if(pref_species.mutant_bodyparts["ipc_antenna"]) - if(!mutant_category) - dat += APPEARANCE_CATEGORY_COLUMN - - dat += "

Antenna

" - - dat += "[features["ipc_antenna"]]" - - mutant_category++ - if(mutant_category >= MAX_MUTANT_ROWS) - dat += "" - mutant_category = 0 + for(var/mutant_part in GLOB.all_mutant_parts) + var/part_name = pref_species.mutant_bodyparts[mutant_part] + if(part_name || GLOB.unlocked_mutant_parts[mutant_part]) //either its in the species, or it's unlocked and it doesn't matter (unlocked meaning any species can have it) + if(!mutant_category) + dat += APPEARANCE_CATEGORY_COLUMN + dat += "

[part_name]

" + dat += "[features[mutant_part]]" + var/color_type = GLOB.colored_mutant_parts[mutant_part] //if it can be coloured, show the appropriate button + if(color_type) + dat += "    Change
" + mutant_category++ + if(mutant_category >= MAX_MUTANT_ROWS) + dat += "" + mutant_category = 0 if(mutant_category) dat += "" @@ -1919,7 +1629,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) features["tail_human"] = "None" features["tail_lizard"] = "None" - if("meats") + if("_type") var/new_meat new_meat = input(user, "Choose your character's meat type:", "Character Preference") as null|anything in GLOB.meat_types if(new_meat) @@ -2024,7 +1734,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) if(new_deco_wings) features["deco_wings"] = new_deco_wings - if("insect_fluffs") + if("insect_fluff") var/new_insect_fluff new_insect_fluff = input(user, "Choose your character's wings:", "Character Preference") as null|anything in GLOB.insect_fluffs_list if(new_insect_fluff) From 8effb219e1b4f107f3b7deaec2c0268ffa4ced39 Mon Sep 17 00:00:00 2001 From: Timothy Teakettle <59849408+timothyteakettle@users.noreply.github.com> Date: Wed, 5 Aug 2020 15:27:48 +0100 Subject: [PATCH 02/23] fix a bug and reduce it by 1 more line --- code/modules/client/preferences.dm | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 291e4eac0e..25cae1a9e9 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -508,11 +508,10 @@ GLOBAL_LIST_EMPTY(preferences_datums) mutant_category = 0 for(var/mutant_part in GLOB.all_mutant_parts) - var/part_name = pref_species.mutant_bodyparts[mutant_part] - if(part_name || GLOB.unlocked_mutant_parts[mutant_part]) //either its in the species, or it's unlocked and it doesn't matter (unlocked meaning any species can have it) + if(pref_species.mutant_bodyparts[mutant_part] || GLOB.unlocked_mutant_parts[mutant_part]) //either its in the species, or it's unlocked and it doesn't matter (unlocked meaning any species can have it) if(!mutant_category) dat += APPEARANCE_CATEGORY_COLUMN - dat += "

[part_name]

" + dat += "

[GLOB.all_mutant_parts[mutant_part]]

" dat += "[features[mutant_part]]" var/color_type = GLOB.colored_mutant_parts[mutant_part] //if it can be coloured, show the appropriate button if(color_type) From 1f62a4bbf91f6796c2a0c88ddf75944b907f47fd Mon Sep 17 00:00:00 2001 From: Timothy Teakettle <59849408+timothyteakettle@users.noreply.github.com> Date: Wed, 5 Aug 2020 15:29:07 +0100 Subject: [PATCH 03/23] typo --- code/modules/client/preferences.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 25cae1a9e9..a42c4b89ac 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -1628,7 +1628,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) features["tail_human"] = "None" features["tail_lizard"] = "None" - if("_type") + if("meat_type") var/new_meat new_meat = input(user, "Choose your character's meat type:", "Character Preference") as null|anything in GLOB.meat_types if(new_meat) From f2c1b251194ce56b9364a2caa3046c2458c084f7 Mon Sep 17 00:00:00 2001 From: Timothy Teakettle <59849408+timothyteakettle@users.noreply.github.com> Date: Wed, 5 Aug 2020 15:50:25 +0100 Subject: [PATCH 04/23] yes --- code/_globalvars/lists/flavor_misc.dm | 2 +- code/modules/client/preferences.dm | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/_globalvars/lists/flavor_misc.dm b/code/_globalvars/lists/flavor_misc.dm index 6afa8ef0ce..9b7589345f 100644 --- a/code/_globalvars/lists/flavor_misc.dm +++ b/code/_globalvars/lists/flavor_misc.dm @@ -234,7 +234,7 @@ GLOBAL_LIST_INIT(roundstart_tongues, list("default","human tongue" = /obj/item/o //locked parts are those that your picked species requires to have //unlocked parts are those that anyone can choose on customisation regardless //parts not in unlocked, but in all, are thus locked -GLOBAL_LIST_INIT(all_mutant_parts, list("tail_lizard" = "Tail", "mam_tail" = "Tail", "tail_human" = "Tail", "snout" = "Snout", "frills" = "Frills", "spines" = "Spines", "body_markings" = "Body Markings", "mam_body_markings" = "Species Markings" , "mam_ears" = "Ears", "ears" = "Ears", "mam_snouts" = "Snout", "legs" = "Legs", "deco_wings" = "Decorative Wings", "insect_wings" = "Insect Wings", "insect_fluff" = "Insect Fluff", "taur" = "Tauric Body", "insect_markings" = "Insect Markings", "wings" = "Wings", "xenohead" = "Caste Head", "xenotail" = "Tail", "xenodorsal" = "Dorsal Spines", "ipc_screen" = "Screen", "ipc_antenna" = "Antenna", "meat_type" = "Meat Type")) +GLOBAL_LIST_INIT(all_mutant_parts, list("tail_lizard" = "Tail", "mam_tail" = "Tail", "tail_human" = "Tail", "snout" = "Snout", "frills" = "Frills", "spines" = "Spines", "body_markings" = "Body Markings", "mam_body_markings" = "Species Markings" , "mam_ears" = "Ears", "ears" = "Ears", "mam_snouts" = "Snout", "legs" = "Legs", "deco_wings" = "Decorative Wings", "insect_wings" = "Insect Wings", "insect_fluff" = "Insect Fluff", "taur" = "Tauric Body", "insect_markings" = "Insect Markings", "wings" = "Wings", "xenohead" = "Caste Head", "xenotail" = "Tail", "xenodorsal" = "Dorsal Spines", "ipc_screen" = "Screen", "ipc_antenna" = "Antenna", "meat_type" = "Meat Type", "horns" = "Horns")) GLOBAL_LIST_INIT(unlocked_mutant_parts, list("meat_type", "horns")) //parts in either of the above two lists that require a second option that allows them to be coloured GLOBAL_LIST_INIT(colored_mutant_parts, list("insect_wings" = "wings_color", "deco_wings" = "wings_color", "horns" = "horns_color")) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index a42c4b89ac..294e6713a5 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -508,7 +508,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) mutant_category = 0 for(var/mutant_part in GLOB.all_mutant_parts) - if(pref_species.mutant_bodyparts[mutant_part] || GLOB.unlocked_mutant_parts[mutant_part]) //either its in the species, or it's unlocked and it doesn't matter (unlocked meaning any species can have it) + if(pref_species.mutant_bodyparts[mutant_part] || mutant_part in GLOB.unlocked_mutant_parts) //either its in the species, or it's unlocked and it doesn't matter (unlocked meaning any species can have it) if(!mutant_category) dat += APPEARANCE_CATEGORY_COLUMN dat += "

[GLOB.all_mutant_parts[mutant_part]]

" From 14bc60955ffe828b29d9aa832be6231d5a72b3b0 Mon Sep 17 00:00:00 2001 From: Timothy Teakettle <59849408+timothyteakettle@users.noreply.github.com> Date: Wed, 5 Aug 2020 16:31:27 +0100 Subject: [PATCH 05/23] unlocked --- code/modules/client/client_procs.dm | 3 +++ code/modules/client/preferences.dm | 18 +++++++++--------- .../modules/mob/living/carbon/human/species.dm | 3 +++ 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/code/modules/client/client_procs.dm b/code/modules/client/client_procs.dm index 5c9b1eec2e..62a997c938 100644 --- a/code/modules/client/client_procs.dm +++ b/code/modules/client/client_procs.dm @@ -988,3 +988,6 @@ GLOBAL_LIST_EMPTY(external_rsc_urls) screen -= S qdel(S) char_render_holders = null + +/client/proc/can_have_part(part_name) + return prefs.pref_species.mutant_bodyparts[part_name] || part_name in GLOB.unlocked_mutant_parts //either they have it, or its unlocked diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 294e6713a5..bac373235c 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -508,7 +508,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) mutant_category = 0 for(var/mutant_part in GLOB.all_mutant_parts) - if(pref_species.mutant_bodyparts[mutant_part] || mutant_part in GLOB.unlocked_mutant_parts) //either its in the species, or it's unlocked and it doesn't matter (unlocked meaning any species can have it) + if(parent.can_have_part(mutant_part)) if(!mutant_category) dat += APPEARANCE_CATEGORY_COLUMN dat += "

[GLOB.all_mutant_parts[mutant_part]]

" @@ -565,7 +565,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) var/tauric_shape = FALSE if(features["cock_taur"]) var/datum/sprite_accessory/penis/P = GLOB.cock_shapes_list[features["cock_shape"]] - if(P.taur_icon && pref_species.mutant_bodyparts["taur"]) + if(P.taur_icon && parent.can_have_part("taur")) var/datum/sprite_accessory/taur/T = GLOB.taur_list[features["taur"]] if(T.taur_mode & P.accepted_taurs) tauric_shape = TRUE @@ -1493,14 +1493,14 @@ GLOBAL_LIST_EMPTY(preferences_datums) pref_species = new newtype() //let's ensure that no weird shit happens on species swapping. custom_species = null - if(!pref_species.mutant_bodyparts["body_markings"]) + if(!parent.can_have_part("body_markings")) features["body_markings"] = "None" - if(!pref_species.mutant_bodyparts["mam_body_markings"]) + if(!parent.can_have_part("mam_body_markings")) features["mam_body_markings"] = "None" - if(pref_species.mutant_bodyparts["mam_body_markings"]) + if(parent.can_have_part("mam_body_markings")) if(features["mam_body_markings"] == "None") features["mam_body_markings"] = "Plain" - if(pref_species.mutant_bodyparts["tail_lizard"]) + if(parent.can_have_part("tail_lizard")) features["tail_lizard"] = "Smooth" if(pref_species.id == "felinid") features["mam_tail"] = "Cat" @@ -1881,7 +1881,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) if("cock_shape") var/new_shape var/list/hockeys = list() - if(pref_species.mutant_bodyparts["taur"]) + if(parent.can_have_part("taur")) var/datum/sprite_accessory/taur/T = GLOB.taur_list[features["taur"]] for(var/A in GLOB.cock_shapes_list) var/datum/sprite_accessory/penis/P = GLOB.cock_shapes_list[A] @@ -2488,10 +2488,10 @@ GLOBAL_LIST_EMPTY(preferences_datums) character.dna.nameless = character.nameless character.dna.custom_species = character.custom_species - if(pref_species.mutant_bodyparts["meat_type"]) + if(parent.can_have_part("meat_type")) character.type_of_meat = GLOB.meat_types[features["meat_type"]] - if(character.dna.species.mutant_bodyparts["legs"] && (character.dna.features["legs"] == "Digitigrade" || character.dna.features["legs"] == "Avian")) + if(parent.can_have_part("legs") && (character.dna.features["legs"] == "Digitigrade" || character.dna.features["legs"] == "Avian")) pref_species.species_traits |= DIGITIGRADE else pref_species.species_traits -= DIGITIGRADE diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index dc7fe86aca..c1fb704a6d 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -123,6 +123,9 @@ GLOBAL_LIST_EMPTY(roundstart_race_names) limbs_id = id ..() + //update our mutant bodyparts to include unlocked ones + mutant_bodyparts += GLOB.unlocked_mutant_parts + /proc/generate_selectable_species(clear = FALSE) if(clear) GLOB.roundstart_races = list() From 6ba359e0a1769af16e094263d18fc9fdec95baf6 Mon Sep 17 00:00:00 2001 From: Timothy Teakettle <59849408+timothyteakettle@users.noreply.github.com> Date: Wed, 5 Aug 2020 17:43:54 +0100 Subject: [PATCH 06/23] fix --- code/modules/client/client_procs.dm | 2 +- code/modules/client/preferences.dm | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/code/modules/client/client_procs.dm b/code/modules/client/client_procs.dm index 62a997c938..cfca66a2a6 100644 --- a/code/modules/client/client_procs.dm +++ b/code/modules/client/client_procs.dm @@ -990,4 +990,4 @@ GLOBAL_LIST_EMPTY(external_rsc_urls) char_render_holders = null /client/proc/can_have_part(part_name) - return prefs.pref_species.mutant_bodyparts[part_name] || part_name in GLOB.unlocked_mutant_parts //either they have it, or its unlocked + return prefs.pref_species.mutant_bodyparts[part_name] || (part_name in GLOB.unlocked_mutant_parts) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index bac373235c..c950c186e4 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -2488,10 +2488,10 @@ GLOBAL_LIST_EMPTY(preferences_datums) character.dna.nameless = character.nameless character.dna.custom_species = character.custom_species - if(parent.can_have_part("meat_type")) + if((parent && parent.can_have_part("meat_type")) || pref_species.mutant_bodyparts["meat_type"]) character.type_of_meat = GLOB.meat_types[features["meat_type"]] - if(parent.can_have_part("legs") && (character.dna.features["legs"] == "Digitigrade" || character.dna.features["legs"] == "Avian")) + if(((parent && parent.can_have_part("legs")) || pref_species.mutant_bodyparts["legs"]) && (character.dna.features["legs"] == "Digitigrade" || character.dna.features["legs"] == "Avian")) pref_species.species_traits |= DIGITIGRADE else pref_species.species_traits -= DIGITIGRADE From 815ddd1866271a5569cbbf309fa0f0eb24e072e3 Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Wed, 5 Aug 2020 21:34:26 -0700 Subject: [PATCH 07/23] oh boy --- code/__HELPERS/text.dm | 2 +- .../crafting/recipes/recipes_misc.dm | 10 ++++---- code/datums/materials/basemats.dm | 2 +- code/game/machinery/doors/airlock_types.dm | 11 +++++++++ .../items/stacks/sheets/sheet_types.dm | 21 ++++++++--------- .../objects/items/stacks/tiles/tile_types.dm | 9 ++++++++ .../objects/structures/beds_chairs/chair.dm | 6 ++--- .../objects/structures/door_assembly_types.dm | 11 +++++++++ code/game/objects/structures/girders.dm | 8 +++---- code/game/objects/structures/tables_racks.dm | 2 +- code/game/objects/structures/window.dm | 23 +++++++++++++++++++ code/game/turfs/simulated/floor/misc_floor.dm | 2 +- code/game/turfs/simulated/wall/misc_walls.dm | 2 +- code/modules/cargo/exports/sheets.dm | 4 ++-- .../chemistry/reagents/other_reagents.dm | 2 +- code/modules/ruins/lavaland_ruin_code.dm | 2 +- 16 files changed, 85 insertions(+), 32 deletions(-) diff --git a/code/__HELPERS/text.dm b/code/__HELPERS/text.dm index 9c71cfeb69..e6dac22d8d 100644 --- a/code/__HELPERS/text.dm +++ b/code/__HELPERS/text.dm @@ -811,4 +811,4 @@ GLOBAL_LIST_INIT(binary, list("0","1")) corrupted_text += pick(corruption_options) if(prob(15)) corrupted_text += pick(corruption_options) - return corrupted_text \ No newline at end of file + return corrupted_text diff --git a/code/datums/components/crafting/recipes/recipes_misc.dm b/code/datums/components/crafting/recipes/recipes_misc.dm index 214c1b1427..8061258228 100644 --- a/code/datums/components/crafting/recipes/recipes_misc.dm +++ b/code/datums/components/crafting/recipes/recipes_misc.dm @@ -188,7 +188,7 @@ result = /obj/item/screwdriver/bronze reqs = list(/obj/item/screwdriver = 1, /obj/item/stack/cable_coil = 10, - /obj/item/stack/tile/bronze = 1, + /obj/item/stack/sheet/bronze = 1, /datum/reagent/water = 15) time = 40 subcategory = CAT_TOOL @@ -200,7 +200,7 @@ result = /obj/item/weldingtool/bronze reqs = list(/obj/item/weldingtool = 1, /obj/item/stack/cable_coil = 10, - /obj/item/stack/tile/bronze = 1, + /obj/item/stack/sheet/bronze = 1, /datum/reagent/water = 15) time = 40 subcategory = CAT_TOOL @@ -212,7 +212,7 @@ result = /obj/item/wirecutters/bronze reqs = list(/obj/item/wirecutters = 1, /obj/item/stack/cable_coil = 10, - /obj/item/stack/tile/bronze = 1, + /obj/item/stack/sheet/bronze = 1, /datum/reagent/water = 15) time = 40 subcategory = CAT_TOOL @@ -224,7 +224,7 @@ result = /obj/item/crowbar/bronze reqs = list(/obj/item/crowbar = 1, /obj/item/stack/cable_coil = 10, - /obj/item/stack/tile/bronze = 1, + /obj/item/stack/sheet/bronze = 1, /datum/reagent/water = 15) time = 40 subcategory = CAT_TOOL @@ -236,7 +236,7 @@ result = /obj/item/wrench/bronze reqs = list(/obj/item/wrench = 1, /obj/item/stack/cable_coil = 10, - /obj/item/stack/tile/bronze = 1, + /obj/item/stack/sheet/bronze = 1, /datum/reagent/water = 15) time = 40 subcategory = CAT_TOOL diff --git a/code/datums/materials/basemats.dm b/code/datums/materials/basemats.dm index 721af65449..1469965b57 100644 --- a/code/datums/materials/basemats.dm +++ b/code/datums/materials/basemats.dm @@ -287,7 +287,7 @@ Unless you know what you're doing, only use the first three numbers. They're in desc = "Clock Cult? Never heard of it." color = "#92661A" categories = list(MAT_CATEGORY_RIGID = TRUE, MAT_CATEGORY_BASE_RECIPES = TRUE) - sheet_type = /obj/item/stack/tile/bronze + sheet_type = /obj/item/stack/sheet/bronze value_per_unit = 0.025 armor_modifiers = list("melee" = 1, "bullet" = 1, "laser" = 1, "energy" = 1, "bomb" = 1, "bio" = 1, "rad" = 1.5, "fire" = 1.5, "acid" = 1.5) beauty_modifier = 0.2 diff --git a/code/game/machinery/doors/airlock_types.dm b/code/game/machinery/doors/airlock_types.dm index 530a287134..b34e97d374 100644 --- a/code/game/machinery/doors/airlock_types.dm +++ b/code/game/machinery/doors/airlock_types.dm @@ -310,6 +310,17 @@ opacity = 0 glass = TRUE +/obj/machinery/door/airlock/bronze + name = "bronze airlock" + icon = 'icons/obj/doors/airlocks/clockwork/pinion_airlock.dmi' + overlays_file = 'icons/obj/doors/airlocks/clockwork/overlays.dmi' + assemblytype = /obj/structure/door_assembly/door_assembly_bronze + +/obj/machinery/door/airlock/bronze/seethru + assemblytype = /obj/structure/door_assembly/door_assembly_bronze/seethru + opacity = 0 + glass = TRUE + ////////////////////////////////// /* Station2 Airlocks diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 5f6341ea21..0326ed4d4b 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -672,6 +672,10 @@ GLOBAL_LIST_INIT(brass_recipes, list ( \ GLOBAL_LIST_INIT(bronze_recipes, list ( \ new/datum/stack_recipe("wall gear", /obj/structure/girder/bronze, 2, time = 20, one_per_turf = TRUE, on_floor = TRUE), \ null, + new/datum/stack_recipe("directional bronze window", /obj/structure/window/bronze/unanchored, time = 0, on_floor = TRUE, window_checks = TRUE), \ + new/datum/stack_recipe("fulltile bronze window", /obj/structure/window/bronze/fulltile/unanchored, 2, time = 0, on_floor = TRUE, window_checks = TRUE), \ + new/datum/stack_recipe("pinion airlock assembly", /obj/structure/door_assembly/door_assembly_bronze, 4, time = 50, one_per_turf = TRUE, on_floor = TRUE), \ + new/datum/stack_recipe("bronze pinion airlock assembly", /obj/structure/door_assembly/door_assembly_bronze/seethru, 4, time = 50, one_per_turf = TRUE, on_floor = TRUE), \ new/datum/stack_recipe("bronze hat", /obj/item/clothing/head/bronze), \ new/datum/stack_recipe("bronze suit", /obj/item/clothing/suit/bronze), \ new/datum/stack_recipe("bronze boots", /obj/item/clothing/shoes/bronze), \ @@ -679,9 +683,10 @@ GLOBAL_LIST_INIT(bronze_recipes, list ( \ new/datum/stack_recipe("bronze chair", /obj/structure/chair/bronze, 1, time = 0, one_per_turf = TRUE, on_floor = TRUE), \ new/datum/stack_recipe("bronze bar stool", /obj/structure/chair/stool/bar/bronze, 1, time = 0, one_per_turf = TRUE, on_floor = TRUE), \ new/datum/stack_recipe("bronze stool", /obj/structure/chair/stool/bronze, 1, time = 0, one_per_turf = TRUE, on_floor = TRUE), \ + new /datum/stack_Recipe("bronze floor tiles", /obj/item/stack/tile/bronze, 1, 4, 20), \ )) -/obj/item/stack/tile/bronze +/obj/item/stack/sheet/bronze name = "brass" desc = "On closer inspection, what appears to be wholly-unsuitable-for-building brass is actually more structurally stable bronze." singular_name = "bronze sheet" @@ -690,27 +695,21 @@ GLOBAL_LIST_INIT(bronze_recipes, list ( \ icon = 'icons/obj/stack_objects.dmi' custom_materials = list(/datum/material/bronze = MINERAL_MATERIAL_AMOUNT) resistance_flags = FIRE_PROOF | ACID_PROOF - throwforce = 10 - max_amount = 50 - throw_speed = 1 - throw_range = 3 - turf_type = /turf/open/floor/bronze - novariants = FALSE grind_results = list(/datum/reagent/iron = 5, /datum/reagent/copper = 3) //we have no "tin" reagent so this is the closest thing - merge_type = /obj/item/stack/tile/bronze + merge_type = /obj/item/stack/sheet/bronze tableVariant = /obj/structure/table/bronze material_type = /datum/material/bronze -/obj/item/stack/tile/bronze/attack_self(mob/living/user) +/obj/item/stack/sheet/bronze/attack_self(mob/living/user) if(is_servant_of_ratvar(user)) //still lets them build with it, just gives a message to_chat(user, "Wha... what is this cheap imitation crap? This isn't brass at all!") ..() -/obj/item/stack/tile/bronze/get_main_recipes() +/obj/item/stack/sheet/bronze/get_main_recipes() . = ..() . += GLOB.bronze_recipes -/obj/item/stack/tile/bronze/thirty +/obj/item/stack/sheet/bronze/thirty amount = 30 /* diff --git a/code/game/objects/items/stacks/tiles/tile_types.dm b/code/game/objects/items/stacks/tiles/tile_types.dm index 13fca1e8fe..0d85e897d2 100644 --- a/code/game/objects/items/stacks/tiles/tile_types.dm +++ b/code/game/objects/items/stacks/tiles/tile_types.dm @@ -513,3 +513,12 @@ icon_state = "material_tile" turf_type = /turf/open/floor/material material_flags = MATERIAL_ADD_PREFIX | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS + +/obj/item/stack/tile/bronze + name = "bronze tile" + singular_name = "bronze floor tile" + desc = "A tile made out of bronze. Looks like clockwork." + icon_state = "material_tile" + color = "#92661A" + turf_type = /turf/open/floor/bronze + custom_materials = list(/datum/material/bronze = 250) diff --git a/code/game/objects/structures/beds_chairs/chair.dm b/code/game/objects/structures/beds_chairs/chair.dm index 299ba7b659..5ff3b1988e 100644 --- a/code/game/objects/structures/beds_chairs/chair.dm +++ b/code/game/objects/structures/beds_chairs/chair.dm @@ -454,7 +454,7 @@ desc = "A bronze bar stool with red silk for a pillow." icon_state = "barbrass" item_chair = /obj/item/chair/stool/bar/bronze - buildstacktype = /obj/item/stack/tile/bronze + buildstacktype = /obj/item/stack/sheet/bronze buildstackamount = 1 /obj/structure/chair/stool/brass @@ -470,7 +470,7 @@ desc = "A bronze stool with a silk top for comfort." icon_state = "stoolbrass" item_chair = /obj/item/chair/stool/bronze - buildstacktype = /obj/item/stack/tile/bronze + buildstacktype = /obj/item/stack/sheet/bronze buildstackamount = 1 /obj/item/chair/stool/brass @@ -575,7 +575,7 @@ desc = "A spinny chair made of bronze. It has little cogs for wheels!" anchored = FALSE icon_state = "brass_chair" - buildstacktype = /obj/item/stack/tile/bronze + buildstacktype = /obj/item/stack/sheet/bronze buildstackamount = 1 item_chair = null diff --git a/code/game/objects/structures/door_assembly_types.dm b/code/game/objects/structures/door_assembly_types.dm index fe9c4e7bbc..5fb454b5bc 100644 --- a/code/game/objects/structures/door_assembly_types.dm +++ b/code/game/objects/structures/door_assembly_types.dm @@ -240,3 +240,14 @@ airlock_type = /obj/machinery/door/airlock/wood mineral = "wood" glass_type = /obj/machinery/door/airlock/wood/glass + +/obj/structure/door_assembly/door_assembly_bronze + name = "bronze airlock assembly" + icon = 'icons/obj/doors/airlocks/clockwork/pinion_airlock.dmi' + base_name = "bronze airlock" + airlock_type = /obj/machinery/door/airlock/bronze + noglass = TRUE + material_type = /obj/item/stack/tile/bronze + +/obj/structure/door_assembly/door_assembly_bronze/seethru + airlock_type = /obj/machinery/door/airlock/bronze/seethru diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm index ff62b9cc48..87cfbb56e0 100644 --- a/code/game/objects/structures/girders.dm +++ b/code/game/objects/structures/girders.dm @@ -442,19 +442,19 @@ to_chat(user, "You start slicing apart [src]...") if(W.use_tool(src, user, 40, volume=50)) to_chat(user, "You slice apart [src].") - var/obj/item/stack/tile/bronze/B = new(drop_location(), 2) + var/obj/item/stack/sheet/bronze/B = new(drop_location(), 2) transfer_fingerprints_to(B) qdel(src) else if(istype(W, /obj/item/pickaxe/drill/jackhammer)) to_chat(user, "Your jackhammer smashes through the girder!") - var/obj/item/stack/tile/bronze/B = new(drop_location(), 2) + var/obj/item/stack/sheet/bronze/B = new(drop_location(), 2) transfer_fingerprints_to(B) W.play_tool_sound(src) qdel(src) - else if(istype(W, /obj/item/stack/tile/bronze)) - var/obj/item/stack/tile/bronze/B = W + else if(istype(W, /obj/item/stack/sheet/bronze)) + var/obj/item/stack/sheet/bronze/B = W if(B.get_amount() < 2) to_chat(user, "You need at least two bronze sheets to build a bronze wall!") return 0 diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm index a553e63b0f..9f91d2c5e0 100644 --- a/code/game/objects/structures/tables_racks.dm +++ b/code/game/objects/structures/tables_racks.dm @@ -597,7 +597,7 @@ icon = 'icons/obj/smooth_structures/brass_table.dmi' icon_state = "brass_table" resistance_flags = FIRE_PROOF | ACID_PROOF - buildstack = /obj/item/stack/tile/bronze + buildstack = /obj/item/stack/sheet/bronze canSmoothWith = list(/obj/structure/table/reinforced/brass, /obj/structure/table/bronze) /obj/structure/table/bronze/tablelimbsmash(mob/living/user, mob/living/pushed_mob) diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 6aae4955f1..8be19c110e 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -875,3 +875,26 @@ GLOBAL_LIST_EMPTY(electrochromatic_window_lookup) return ..() update_icon() + +/obj/structure/window/bronze + name = "brass window" + desc = "A paper-thin pane of translucent yet reinforced brass. Nevermind, this is just weak bronze!" + icon = 'icons/obj/smooth_structures/clockwork_window.dmi' + icon_state = "clockwork_window_single" + glass_type = /obj/item/stack/tile/bronze + +/obj/structure/window/bronze/unanchored + anchored = FALSE + +/obj/structure/window/bronze/fulltile + icon_state = "clockwork_window" + smoothing_flags = SMOOTH_TRUE + canSmoothWith = null + fulltile = TRUE + flags_1 = PREVENT_CLICK_UNDER_1 + dir = FULLTILE_WINDOW_DIR + max_integrity = 50 + glass_amount = 2 + +/obj/structure/window/bronze/fulltile/unanchored + anchored = FALSE diff --git a/code/game/turfs/simulated/floor/misc_floor.dm b/code/game/turfs/simulated/floor/misc_floor.dm index f6e70f8ef5..5075bb613e 100644 --- a/code/game/turfs/simulated/floor/misc_floor.dm +++ b/code/game/turfs/simulated/floor/misc_floor.dm @@ -259,7 +259,7 @@ desc = "Some heavy bronze tiles." icon = 'icons/obj/clockwork_objects.dmi' icon_state = "clockwork_floor" - floor_tile = /obj/item/stack/tile/bronze + floor_tile = /obj/item/stack/sheet/bronze /turf/open/floor/padded name = "padded floor" diff --git a/code/game/turfs/simulated/wall/misc_walls.dm b/code/game/turfs/simulated/wall/misc_walls.dm index d445be91cb..7938d9bf4d 100644 --- a/code/game/turfs/simulated/wall/misc_walls.dm +++ b/code/game/turfs/simulated/wall/misc_walls.dm @@ -199,6 +199,6 @@ desc = "A huge chunk of bronze, decorated like gears and cogs." icon = 'icons/turf/walls/clockwork_wall.dmi' icon_state = "clockwork_wall" - sheet_type = /obj/item/stack/tile/bronze + sheet_type = /obj/item/stack/sheet/bronze sheet_amount = 2 girder_type = /obj/structure/girder/bronze diff --git a/code/modules/cargo/exports/sheets.dm b/code/modules/cargo/exports/sheets.dm index a562210164..b0676fbde2 100644 --- a/code/modules/cargo/exports/sheets.dm +++ b/code/modules/cargo/exports/sheets.dm @@ -138,11 +138,11 @@ message = "of bones" export_types = list(/obj/item/stack/sheet/bone) -/datum/export/stack/bronze +/datum/export/stack/sheet/bronze unit_name = "tiles" cost = 5 message = "of brozne" - export_types = list(/obj/item/stack/tile/bronze) + export_types = list(/obj/item/stack/sheet/bronze) /datum/export/stack/brass unit_name = "tiles" diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm index 81ad676613..020579b719 100644 --- a/code/modules/reagents/chemistry/reagents/other_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm @@ -883,7 +883,7 @@ if(istype(O, /obj/item/stack/sheet/metal)) var/obj/item/stack/sheet/metal/M = O reac_volume = min(reac_volume, M.amount) - new/obj/item/stack/tile/bronze(get_turf(M), reac_volume) + new/obj/item/stack/sheet/bronze(get_turf(M), reac_volume) M.use(reac_volume) /datum/reagent/nitrogen diff --git a/code/modules/ruins/lavaland_ruin_code.dm b/code/modules/ruins/lavaland_ruin_code.dm index 45b6939f42..e572f1ee02 100644 --- a/code/modules/ruins/lavaland_ruin_code.dm +++ b/code/modules/ruins/lavaland_ruin_code.dm @@ -93,7 +93,7 @@ /obj/item/stack/sheet/mineral/adamantine = /datum/species/golem/adamantine, /obj/item/stack/sheet/plastic = /datum/species/golem/plastic, /obj/item/stack/tile/brass = /datum/species/golem/clockwork, - /obj/item/stack/tile/bronze = /datum/species/golem/bronze, + /obj/item/stack/sheet/bronze = /datum/species/golem/bronze, /obj/item/stack/sheet/cardboard = /datum/species/golem/cardboard, /obj/item/stack/sheet/leather = /datum/species/golem/leather, /obj/item/stack/sheet/bone = /datum/species/golem/bone, From 2a0f2a38a7507112e077394898e4fb5cfd581de3 Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Wed, 5 Aug 2020 21:42:05 -0700 Subject: [PATCH 08/23] Fix --- code/game/objects/items/stacks/sheets/sheet_types.dm | 2 +- code/game/objects/structures/window.dm | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 0326ed4d4b..305c2ab276 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -683,7 +683,7 @@ GLOBAL_LIST_INIT(bronze_recipes, list ( \ new/datum/stack_recipe("bronze chair", /obj/structure/chair/bronze, 1, time = 0, one_per_turf = TRUE, on_floor = TRUE), \ new/datum/stack_recipe("bronze bar stool", /obj/structure/chair/stool/bar/bronze, 1, time = 0, one_per_turf = TRUE, on_floor = TRUE), \ new/datum/stack_recipe("bronze stool", /obj/structure/chair/stool/bronze, 1, time = 0, one_per_turf = TRUE, on_floor = TRUE), \ - new /datum/stack_Recipe("bronze floor tiles", /obj/item/stack/tile/bronze, 1, 4, 20), \ + new /datum/stack_recipe("bronze floor tiles", /obj/item/stack/tile/bronze, 1, 4, 20), \ )) /obj/item/stack/sheet/bronze diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 8be19c110e..17dacf0fe1 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -888,7 +888,6 @@ GLOBAL_LIST_EMPTY(electrochromatic_window_lookup) /obj/structure/window/bronze/fulltile icon_state = "clockwork_window" - smoothing_flags = SMOOTH_TRUE canSmoothWith = null fulltile = TRUE flags_1 = PREVENT_CLICK_UNDER_1 From d6a5442a372011ef1cf9e6ed0cde0cf942404d93 Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Thu, 6 Aug 2020 12:00:15 -0700 Subject: [PATCH 09/23] fix --- code/game/objects/structures/window.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 17dacf0fe1..888098c535 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -889,6 +889,7 @@ GLOBAL_LIST_EMPTY(electrochromatic_window_lookup) /obj/structure/window/bronze/fulltile icon_state = "clockwork_window" canSmoothWith = null + smooth = SMOOTH_TRUE fulltile = TRUE flags_1 = PREVENT_CLICK_UNDER_1 dir = FULLTILE_WINDOW_DIR From 6f754188acad2f6c7958e31431537c98eef38901 Mon Sep 17 00:00:00 2001 From: Hatterhat Date: Fri, 7 Aug 2020 18:02:33 -0500 Subject: [PATCH 10/23] funny guns go pew --- code/game/objects/effects/spawners/bundle.dm | 23 ++++++++++++++++++++ code/game/objects/items/storage/toolbox.dm | 19 ++++++++-------- code/modules/cargo/packs/armory.dm | 8 ++++--- code/modules/cargo/packs/security.dm | 13 +++++++---- 4 files changed, 47 insertions(+), 16 deletions(-) diff --git a/code/game/objects/effects/spawners/bundle.dm b/code/game/objects/effects/spawners/bundle.dm index 3f2701c03f..b75df644eb 100644 --- a/code/game/objects/effects/spawners/bundle.dm +++ b/code/game/objects/effects/spawners/bundle.dm @@ -168,3 +168,26 @@ items = list( /obj/item/clothing/mask/gas/sexymime, /obj/item/clothing/under/rank/civilian/mime/sexy) + +/obj/effect/spawner/bundle/crate/Initialize(mapload) + if(items && items.len) + var/turf/T = get_turf(src) + var/obj/structure/closet/LC = locate(/obj/structure/closet) in T + if(LC) + for(var/path in items) + new path(LC) + return INITIALIZE_HINT_QDEL + +/obj/effect/spawner/bundle/crate/mosin + name = "Mosin-Nagant spawner" + items = list( + /obj/item/gun/ballistic/shotgun/boltaction, + /obj/item/ammo_box/a762 + ) + +/obj/effect/spawner/bundle/crate/surplusrifle + name = "surplus rifle spawner" + items = list( + /obj/item/gun/ballistic/automatic/surplus, + /obj/item/ammo_box/magazine/m10mm/rifle + ) diff --git a/code/game/objects/items/storage/toolbox.dm b/code/game/objects/items/storage/toolbox.dm index ed0ee8ad07..a6b34c59e3 100644 --- a/code/game/objects/items/storage/toolbox.dm +++ b/code/game/objects/items/storage/toolbox.dm @@ -245,19 +245,20 @@ GLOBAL_LIST_EMPTY(rubber_toolbox_icons) new /obj/item/stack/cable_coil/white(src) /obj/item/storage/toolbox/ammo - name = "ammo box" - desc = "It contains a few clips." + name = "ammunition case (7.62mm stripper clips)" + desc = "It contains a few 7.62 stripper clips." icon_state = "ammobox" item_state = "ammobox" + var/ammotype = /obj/item/ammo_box/a762 // make sure this is a typepath thanks /obj/item/storage/toolbox/ammo/PopulateContents() - new /obj/item/ammo_box/a762(src) - new /obj/item/ammo_box/a762(src) - new /obj/item/ammo_box/a762(src) - new /obj/item/ammo_box/a762(src) - new /obj/item/ammo_box/a762(src) - new /obj/item/ammo_box/a762(src) - new /obj/item/ammo_box/a762(src) + for (var/i = 0, i < 7, i++) + new ammotype(src) + +/obj/item/storage/toolbox/ammo/surplus + name = "ammunition case (10mm rifle magazines)" + desc = "It contains a few 10mm rifle magazines." + ammotype = /obj/item/ammo_box/magazine/m10mm/rifle /obj/item/storage/toolbox/infiltrator name = "insidious case" diff --git a/code/modules/cargo/packs/armory.dm b/code/modules/cargo/packs/armory.dm index 835457536f..c065789e56 100644 --- a/code/modules/cargo/packs/armory.dm +++ b/code/modules/cargo/packs/armory.dm @@ -158,11 +158,10 @@ /datum/supply_pack/security/armory/russian name = "Russian Surplus Crate" - desc = "Hello Comrade, we have the most modern russian military equipment the black market can offer, for the right price of course. Sadly we couldnt remove the lock so it requires Armory access to open." + desc = "Hello Comrade, we have the most modern Russian military equipment the black market can offer, for the right price of course. Sadly we couldn't remove the lock so it requires Armory access to open." cost = 7500 contraband = TRUE contains = list(/obj/item/reagent_containers/food/snacks/rationpack, - /obj/item/ammo_box/magazine/m10mm/rifle, /obj/item/clothing/suit/armor/vest/russian, /obj/item/clothing/head/helmet/rus_helmet, /obj/item/clothing/shoes/russian, @@ -172,7 +171,10 @@ /obj/item/clothing/mask/russian_balaclava, /obj/item/clothing/head/helmet/rus_ushanka, /obj/item/clothing/suit/armor/vest/russian_coat, - /obj/item/gun/ballistic/automatic/surplus) + /obj/effect/spawner/bundle/crate/mosin, + /obj/item/storage/toolbox/ammo, + /obj/effect/spawner/bundle/crate/surplusrifle, + /obj/item/storage/toolbox/ammo/surplus) crate_name = "surplus military crate" /datum/supply_pack/security/armory/russian/fill(obj/structure/closet/crate/C) diff --git a/code/modules/cargo/packs/security.dm b/code/modules/cargo/packs/security.dm index 738eb03fbf..cf9cc5e0d1 100644 --- a/code/modules/cargo/packs/security.dm +++ b/code/modules/cargo/packs/security.dm @@ -100,7 +100,7 @@ crate_name = "surplus russian clothing" crate_type = /obj/structure/closet/crate/internals -/datum/supply_pack/security/russianmosin +/datum/supply_pack/security/russian_partisan name = "Russian Partisan Gear" desc = "An old russian partisan equipment crate, comes with a full russian outfit, a loaded surplus rifle and a second magazine." contraband = TRUE @@ -112,12 +112,17 @@ /obj/item/clothing/suit/armor/bulletproof, /obj/item/clothing/head/helmet/alt, /obj/item/clothing/gloves/tackler/combat/insulated, - /obj/item/clothing/mask/gas, - /obj/item/ammo_box/magazine/m10mm/rifle, - /obj/item/gun/ballistic/automatic/surplus) + /obj/item/clothing/mask/gas) crate_name = "surplus russian gear" crate_type = /obj/structure/closet/crate/internals +/datum/supply_pack/security/russian_partisan/fill(obj/structure/closet/crate/C) + ..() + if(prob(20)) + new /obj/effect/spawner/bundle/crate/mosin(C) + else + new /obj/effect/spawner/bundle/crate/surplusrifle(C) + /datum/supply_pack/security/sechardsuit name = "Sec Hardsuit" desc = "One Sec Hardsuit with a small air tank and mask." From ce0a5b701606c8c7676efe6eadc9ef9a3623766b Mon Sep 17 00:00:00 2001 From: Timothy Teakettle <59849408+timothyteakettle@users.noreply.github.com> Date: Sat, 8 Aug 2020 15:26:25 +0100 Subject: [PATCH 11/23] only horns is unlocked now --- code/_globalvars/lists/flavor_misc.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/_globalvars/lists/flavor_misc.dm b/code/_globalvars/lists/flavor_misc.dm index 9b7589345f..b7d3d71574 100644 --- a/code/_globalvars/lists/flavor_misc.dm +++ b/code/_globalvars/lists/flavor_misc.dm @@ -235,6 +235,6 @@ GLOBAL_LIST_INIT(roundstart_tongues, list("default","human tongue" = /obj/item/o //unlocked parts are those that anyone can choose on customisation regardless //parts not in unlocked, but in all, are thus locked GLOBAL_LIST_INIT(all_mutant_parts, list("tail_lizard" = "Tail", "mam_tail" = "Tail", "tail_human" = "Tail", "snout" = "Snout", "frills" = "Frills", "spines" = "Spines", "body_markings" = "Body Markings", "mam_body_markings" = "Species Markings" , "mam_ears" = "Ears", "ears" = "Ears", "mam_snouts" = "Snout", "legs" = "Legs", "deco_wings" = "Decorative Wings", "insect_wings" = "Insect Wings", "insect_fluff" = "Insect Fluff", "taur" = "Tauric Body", "insect_markings" = "Insect Markings", "wings" = "Wings", "xenohead" = "Caste Head", "xenotail" = "Tail", "xenodorsal" = "Dorsal Spines", "ipc_screen" = "Screen", "ipc_antenna" = "Antenna", "meat_type" = "Meat Type", "horns" = "Horns")) -GLOBAL_LIST_INIT(unlocked_mutant_parts, list("meat_type", "horns")) +GLOBAL_LIST_INIT(unlocked_mutant_parts, list("horns")) //parts in either of the above two lists that require a second option that allows them to be coloured GLOBAL_LIST_INIT(colored_mutant_parts, list("insect_wings" = "wings_color", "deco_wings" = "wings_color", "horns" = "horns_color")) From 0decd32e5436f82749f8850f6ec324f1b6acc404 Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Sat, 8 Aug 2020 18:27:54 -0700 Subject: [PATCH 12/23] Update living_active_block.dm --- code/modules/mob/living/living_active_block.dm | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/living_active_block.dm b/code/modules/mob/living/living_active_block.dm index 729e7d3d7a..be22575c0f 100644 --- a/code/modules/mob/living/living_active_block.dm +++ b/code/modules/mob/living/living_active_block.dm @@ -13,7 +13,7 @@ DelayNextAction(data.block_end_click_cd_add) return TRUE -/mob/living/proc/ACTIVE_BLOCK_START(obj/item/I) +/mob/living/proc/active_block_start(obj/item/I) if(combat_flags & (COMBAT_FLAG_ACTIVE_BLOCK_STARTING | COMBAT_FLAG_ACTIVE_BLOCKING)) return FALSE if(!(I in held_items)) @@ -109,7 +109,7 @@ animate(src, pixel_x = get_standard_pixel_x_offset(), pixel_y = get_standard_pixel_y_offset(), time = 2.5, FALSE, SINE_EASING | EASE_IN, ANIMATION_END_NOW) return combat_flags &= ~(COMBAT_FLAG_ACTIVE_BLOCK_STARTING) - ACTIVE_BLOCK_START(I) + active_block_start(I) /** * Gets the first item we can that can block, but if that fails, default to active held item.COMSIG_ENABLE_COMBAT_MODE @@ -180,6 +180,12 @@ /// Apply the stamina damage to our user, notice how damage argument is stamina_amount. /obj/item/proc/active_block_do_stamina_damage(mob/living/owner, atom/object, stamina_amount, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return) + if(istype(object, /obj/item/projectile)) + var/obj/item/projectile/P = O + if(P.stamina) + var/blocked = active_block_calculate_final_damage(owner, object, stamina, attack_text, attack_type, armour_penetration, attacker, def_zone, final_block_chance, block_return) + var/stam = active_block_stamina_cost(owner, object, blocked, attack_text, ATTACK_TYPE_PROJECTILE, armour_penetration, attacker, def_zone, final_block_chance, block_return) + stamina_amount += stam var/datum/block_parry_data/data = get_block_parry_data() if(iscarbon(owner)) var/mob/living/carbon/C = owner From 369af2a83ac3585436955f4e66b057ec63f850da Mon Sep 17 00:00:00 2001 From: Detective Google <48196179+Detective-Google@users.noreply.github.com> Date: Mon, 10 Aug 2020 14:50:37 -0500 Subject: [PATCH 13/23] adds more heatpipes to snaxi sm --- _maps/map_files/Snaxi/Snaxi.dmm | 284 ++++++++++++++++---------------- 1 file changed, 142 insertions(+), 142 deletions(-) diff --git a/_maps/map_files/Snaxi/Snaxi.dmm b/_maps/map_files/Snaxi/Snaxi.dmm index 43e7915ca4..447c0fce85 100644 --- a/_maps/map_files/Snaxi/Snaxi.dmm +++ b/_maps/map_files/Snaxi/Snaxi.dmm @@ -1640,8 +1640,8 @@ "aiS" = ( /obj/structure/closet/secure_closet/CMO, /obj/machinery/keycard_auth{ - pixel_y = 4; - pixel_x = -24 + pixel_x = -24; + pixel_y = 4 }, /obj/effect/turf_decal/tile/blue{ dir = 4 @@ -3147,8 +3147,8 @@ dir = 4 }, /obj/machinery/conveyor{ - id = "packageSort2"; - dir = 1 + dir = 1; + id = "packageSort2" }, /obj/machinery/disposal/deliveryChute, /obj/structure/window/reinforced{ @@ -4061,9 +4061,9 @@ /area/crew_quarters/dorms) "aNS" = ( /obj/machinery/turnstile{ + dir = 4; name = "Genpop Entrance Turnstile"; - req_access_txt = "69"; - dir = 4 + req_access_txt = "69" }, /obj/machinery/door/poddoor/preopen{ id = "permacell1"; @@ -4554,9 +4554,9 @@ /area/maintenance/solars/port/fore) "bcc" = ( /obj/machinery/door/window/brigdoor/security/cell{ + dir = 1; id = "Cell 2"; - name = "Cell 2"; - dir = 1 + name = "Cell 2" }, /obj/effect/turf_decal/vg_decals/numbers/two, /obj/machinery/door/poddoor/preopen{ @@ -5031,9 +5031,9 @@ "brE" = ( /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden, /obj/machinery/door/window/southleft{ + dir = 1; name = "Court Cell"; - req_access_txt = "2"; - dir = 1 + req_access_txt = "2" }, /obj/structure/window/reinforced{ dir = 8 @@ -5284,9 +5284,9 @@ dir = 1 }, /obj/machinery/turnstile{ + dir = 4; name = "Genpop Entrance Turnstile"; - req_access_txt = "69"; - dir = 4 + req_access_txt = "69" }, /turf/open/floor/plasteel/dark, /area/security/brig) @@ -6957,9 +6957,9 @@ name = "west facing firelock" }, /obj/machinery/door/window/southleft{ + dir = 8; name = "Test Chamber"; - req_access_txt = "55"; - dir = 8 + req_access_txt = "55" }, /obj/machinery/door/poddoor/preopen{ id = "xenobio2"; @@ -6975,9 +6975,9 @@ dir = 10 }, /obj/machinery/door/window/southleft{ + dir = 4; name = "Test Chamber"; - req_access_txt = "55"; - dir = 4 + req_access_txt = "55" }, /turf/open/floor/plasteel, /area/science/xenobiology) @@ -7072,9 +7072,9 @@ dir = 4 }, /obj/machinery/door/window/brigdoor{ + dir = 1; name = "Reception Desk"; - req_access_txt = "63"; - dir = 1 + req_access_txt = "63" }, /obj/machinery/door/window/brigdoor{ dir = 8; @@ -7475,8 +7475,8 @@ }, /obj/structure/table/wood, /obj/machinery/recharger{ - pixel_y = 4; - pixel_x = -7 + pixel_x = -7; + pixel_y = 4 }, /obj/item/book/manual/wiki/security_space_law{ pixel_x = 6; @@ -9296,8 +9296,8 @@ }, /obj/machinery/camera{ c_tag = "Medbay West"; - network = list("ss13","medbay"); - dir = 4 + dir = 4; + network = list("ss13","medbay") }, /turf/open/floor/plasteel/white, /area/medical/medbay/central) @@ -9414,9 +9414,9 @@ req_access_txt = "10" }, /obj/machinery/door/window/northright{ + dir = 4; name = "Engineering Delivery"; - req_access_txt = "10"; - dir = 4 + req_access_txt = "10" }, /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel/dark, @@ -10387,8 +10387,8 @@ dir = 4 }, /obj/machinery/shower{ - pixel_y = 20; - pixel_x = 11 + pixel_x = 11; + pixel_y = 20 }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -10760,8 +10760,8 @@ /obj/structure/table/wood, /obj/item/book/manual/wiki/security_space_law, /obj/item/flashlight/lamp/green{ - pixel_y = 1; - pixel_x = -7 + pixel_x = -7; + pixel_y = 1 }, /turf/open/floor/wood, /area/security/courtroom) @@ -11207,9 +11207,9 @@ dir = 4 }, /obj/machinery/turnstile{ + dir = 8; name = "Genpop Exit Turnstile"; - req_access_txt = "70"; - dir = 8 + req_access_txt = "70" }, /turf/open/floor/plasteel/dark, /area/security/brig) @@ -12173,8 +12173,8 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden, /obj/machinery/button/flasher{ id = "PCell 1"; - pixel_y = 9; - pixel_x = -37 + pixel_x = -37; + pixel_y = 9 }, /turf/open/floor/plasteel/dark, /area/security/brig) @@ -12356,9 +12356,9 @@ dir = 4 }, /obj/machinery/turnstile{ + dir = 8; name = "Genpop Exit Turnstile"; - req_access_txt = "70"; - dir = 8 + req_access_txt = "70" }, /obj/effect/turf_decal/tile/red{ dir = 1 @@ -13510,9 +13510,9 @@ icon_state = "1-4" }, /obj/machinery/door/window/brigdoor/security/cell{ + dir = 8; id = "Cell 1"; - name = "Cell 1"; - dir = 8 + name = "Cell 1" }, /obj/effect/turf_decal/vg_decals/numbers/one, /obj/machinery/door/poddoor/preopen{ @@ -14345,8 +14345,8 @@ name = "Door Bolt Control"; normaldoorcontrol = 1; pixel_x = 24; - specialfunctions = 4; - pixel_y = -5 + pixel_y = -5; + specialfunctions = 4 }, /obj/machinery/light/small{ dir = 8 @@ -14836,8 +14836,8 @@ /obj/structure/table/wood, /obj/item/book/manual/wiki/security_space_law, /obj/item/flashlight/lamp/green{ - pixel_y = 1; - pixel_x = -7 + pixel_x = -7; + pixel_y = 1 }, /turf/open/floor/wood, /area/security/courtroom) @@ -15538,9 +15538,9 @@ /obj/machinery/button/door{ id = "Secure Gate"; name = "Cell Shutters"; + pixel_x = 3; pixel_y = 24; - req_access_txt = "2"; - pixel_x = 3 + req_access_txt = "2" }, /turf/open/floor/plasteel/dark, /area/security/brig) @@ -16835,9 +16835,9 @@ /obj/machinery/button/door{ id = "kitchen"; name = "Kitchen Shutters Control"; - req_access_txt = "28"; pixel_x = 24; - pixel_y = -4 + pixel_y = -4; + req_access_txt = "28" }, /turf/open/floor/plasteel/cafeteria, /area/crew_quarters/kitchen) @@ -17096,8 +17096,8 @@ dir = 8 }, /obj/machinery/computer/monitor{ - name = "bridge power monitoring console"; - dir = 1 + dir = 1; + name = "bridge power monitoring console" }, /obj/structure/cable{ icon_state = "0-2" @@ -17235,8 +17235,8 @@ /obj/item/folder/blue, /obj/item/stamp/law, /obj/item/flashlight/lamp/green{ - pixel_y = 1; - pixel_x = -7 + pixel_x = -7; + pixel_y = 1 }, /turf/open/floor/plasteel/cult, /area/lawoffice) @@ -18426,9 +18426,9 @@ /area/engine/engineering) "hVH" = ( /obj/machinery/atmospherics/components/unary/vent_pump/siphon/on{ + dir = 1; external_pressure_bound = 120; - name = "killroom vent"; - dir = 1 + name = "killroom vent" }, /turf/open/floor/circuit/telecomms, /area/science/xenobiology) @@ -18466,8 +18466,8 @@ }, /obj/machinery/camera{ c_tag = "Surgery Observation"; - network = list("ss13","medbay"); - dir = 8 + dir = 8; + network = list("ss13","medbay") }, /turf/open/floor/plasteel/dark, /area/medical/surgery) @@ -18616,8 +18616,8 @@ /area/security/main) "iam" = ( /obj/machinery/computer/slot_machine{ - pixel_y = 2; - pixel_x = -7 + pixel_x = -7; + pixel_y = 2 }, /turf/open/floor/wood, /area/maintenance/bar) @@ -19807,8 +19807,8 @@ /obj/machinery/button/door{ id = "hos"; name = "HoS Office Shutters"; - pixel_y = -26; - pixel_x = -6 + pixel_x = -6; + pixel_y = -26 }, /turf/open/floor/carpet, /area/crew_quarters/heads/hos) @@ -21383,8 +21383,8 @@ pixel_y = -22 }, /obj/machinery/button/door/incinerator_vent_toxmix{ - pixel_y = -22; - pixel_x = 9 + pixel_x = 9; + pixel_y = -22 }, /obj/machinery/meter, /turf/open/floor/plasteel/white, @@ -24577,8 +24577,8 @@ "lMF" = ( /obj/machinery/camera{ c_tag = "Virology Module"; - network = list("ss13","medbay"); - dir = 1 + dir = 1; + network = list("ss13","medbay") }, /obj/structure/disposalpipe/segment{ dir = 4 @@ -26012,8 +26012,8 @@ /obj/machinery/button/door{ id = "engsm"; name = "Radiation Shutters Control"; - req_access_txt = "10"; - pixel_y = 25 + pixel_y = 25; + req_access_txt = "10" }, /obj/machinery/atmospherics/pipe/manifold/cyan/visible, /obj/effect/turf_decal/stripes/line{ @@ -26159,9 +26159,9 @@ dir = 4 }, /obj/machinery/turnstile{ + dir = 8; name = "Genpop Exit Turnstile"; - req_access_txt = "70"; - dir = 8 + req_access_txt = "70" }, /obj/structure/cable{ icon_state = "4-8" @@ -27616,8 +27616,8 @@ /area/bridge) "nFM" = ( /obj/machinery/atmospherics/components/binary/pump{ - name = "Port Mix to Engine"; - dir = 1 + dir = 1; + name = "Port Mix to Engine" }, /turf/open/floor/plasteel, /area/engine/atmos) @@ -27738,9 +27738,9 @@ "nJI" = ( /obj/structure/table/reinforced, /obj/machinery/door/window/southleft{ + dir = 4; name = "Reception Desk"; - req_access_txt = "63"; - dir = 4 + req_access_txt = "63" }, /obj/structure/cable{ icon_state = "1-2" @@ -27989,8 +27989,8 @@ /area/engine/engineering) "nSX" = ( /obj/machinery/atmospherics/components/binary/pump/on{ - name = "Gas to Cooling Loop"; - dir = 1 + dir = 1; + name = "Gas to Cooling Loop" }, /turf/open/floor/plating, /area/engine/atmospherics_engine) @@ -30136,8 +30136,8 @@ /area/quartermaster/storage) "pfb" = ( /obj/machinery/atmospherics/components/binary/pump/on{ - name = "Gas to Cooling Loop"; - dir = 1 + dir = 1; + name = "Gas to Cooling Loop" }, /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -30845,10 +30845,10 @@ /area/ai_monitored/security/armory) "pvY" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on{ + dir = 1; external_pressure_bound = 140; name = "killroom vent"; - pressure_checks = 0; - dir = 1 + pressure_checks = 0 }, /turf/open/floor/circuit/telecomms, /area/science/xenobiology) @@ -31385,9 +31385,9 @@ dir = 4 }, /obj/machinery/turnstile{ + dir = 8; name = "Genpop Exit Turnstile"; - req_access_txt = "70"; - dir = 8 + req_access_txt = "70" }, /obj/machinery/door/firedoor/border_only{ dir = 8; @@ -32565,8 +32565,8 @@ }, /obj/machinery/button/ignition{ id = "testigniter"; - pixel_y = -30; - pixel_x = -1 + pixel_x = -1; + pixel_y = -30 }, /obj/structure/disposalpipe/trunk{ dir = 1 @@ -32750,9 +32750,9 @@ /area/maintenance/bar) "qEz" = ( /obj/machinery/door/window/brigdoor/security/cell{ + dir = 1; id = "Cell 3"; - name = "Cell 3"; - dir = 1 + name = "Cell 3" }, /obj/effect/turf_decal/vg_decals/numbers/three, /obj/machinery/door/poddoor/preopen{ @@ -33684,8 +33684,8 @@ "rgQ" = ( /obj/machinery/camera{ c_tag = "Xenobiology Test Chamber"; - network = list("xeno","rd"); - dir = 4 + dir = 4; + network = list("xeno","rd") }, /turf/open/floor/engine, /area/science/xenobiology) @@ -34451,8 +34451,8 @@ }, /obj/machinery/camera{ c_tag = "AI Chamber - Core"; - network = list("aicore"); - dir = 4 + dir = 4; + network = list("aicore") }, /turf/open/floor/circuit/off, /area/ai_monitored/turret_protected/ai) @@ -34542,9 +34542,9 @@ dir = 4 }, /obj/machinery/turnstile{ + dir = 8; name = "Genpop Exit Turnstile"; - req_access_txt = "70"; - dir = 8 + req_access_txt = "70" }, /obj/machinery/door/firedoor/border_only{ dir = 4; @@ -37770,8 +37770,8 @@ }, /obj/machinery/camera{ c_tag = "Genetics Research"; - network = list("ss13","medbay"); - dir = 8 + dir = 8; + network = list("ss13","medbay") }, /turf/open/floor/plasteel/white, /area/medical/genetics) @@ -37932,9 +37932,9 @@ /obj/machinery/button/door{ id = "Secure Brig Control"; name = "Brig Control Shutters"; + pixel_x = -6; pixel_y = -3; - req_access_txt = "2"; - pixel_x = -6 + req_access_txt = "2" }, /turf/open/floor/plasteel/dark, /area/security/warden) @@ -39014,8 +39014,8 @@ "uuY" = ( /obj/machinery/camera{ c_tag = "Toxins Lab West"; - network = list("ss13","rd"); - dir = 4 + dir = 4; + network = list("ss13","rd") }, /obj/structure/table/reinforced, /obj/item/assembly/prox_sensor{ @@ -39406,9 +39406,9 @@ pixel_y = 23 }, /obj/machinery/door/window/southright{ + dir = 8; name = "Bar Door"; - req_one_access_txt = "25;28"; - dir = 8 + req_one_access_txt = "25;28" }, /obj/machinery/door/firedoor/border_only{ dir = 8; @@ -39560,8 +39560,8 @@ dir = 4 }, /obj/machinery/computer/security/telescreen/prison{ - pixel_x = 29; - dir = 8 + dir = 8; + pixel_x = 29 }, /turf/open/floor/plasteel/cult, /area/lawoffice) @@ -39968,8 +39968,8 @@ dir = 8 }, /obj/structure/chair{ - name = "Judge"; - dir = 4 + dir = 4; + name = "Judge" }, /turf/open/floor/wood, /area/security/courtroom) @@ -40683,8 +40683,8 @@ }, /obj/machinery/button/ignition{ id = "Incinerator"; - pixel_y = 35; - pixel_x = -1 + pixel_x = -1; + pixel_y = 35 }, /turf/open/floor/plasteel, /area/engine/atmospherics_engine) @@ -42591,8 +42591,8 @@ "wtt" = ( /obj/structure/table/wood, /obj/item/flashlight/lamp/green{ - pixel_y = 13; - pixel_x = -7 + pixel_x = -7; + pixel_y = 13 }, /obj/item/camera/detective, /obj/item/hand_labeler{ @@ -42600,8 +42600,8 @@ }, /obj/item/storage/briefcase, /obj/item/storage/secure/safe{ - pixel_y = 36; - pixel_x = 6 + pixel_x = 6; + pixel_y = 36 }, /turf/open/floor/carpet, /area/security/detectives_office) @@ -44647,8 +44647,8 @@ areastring = "/area/engine/engineering"; dir = 8; name = "Engineering APC"; - pixel_y = -1; - pixel_x = -27 + pixel_x = -27; + pixel_y = -1 }, /obj/machinery/firealarm{ dir = 1; @@ -100071,11 +100071,11 @@ xUL xUL xUL xUL -xUL -xUL -xUL rGc jls +rGc +cly +jls odg ucC gUL @@ -100327,12 +100327,12 @@ bum bum bum bum -bum -bum -bum rGc tdX tdX +tdX +cly +tdX jPj ucC gUL @@ -100584,12 +100584,12 @@ bum bum bum bum -bum -bum -bum dQW tdX tdX +tdX +cly +tdX jls ucC gUL @@ -100841,12 +100841,12 @@ bum bum bum bum -bum -bum -bum rGc tdX tdX +tdX +cly +tdX jPj ucC cfs @@ -101098,12 +101098,12 @@ bum bum bum bum -bum -bum -bum dQW tdX tdX +tdX +cly +tdX jls ucC cfs @@ -101355,11 +101355,11 @@ bum bum bum bum -bum -bum -bum -xUL +rGc +jPj dQW +jPj +rGc flw flw lFN @@ -101612,11 +101612,11 @@ bum bum bum bum -bum -bum -bum -xUL -xUL +dQW +cly +cly +cly +jPj dQW jPj bnU @@ -101869,9 +101869,9 @@ bum bum bum bum -bum -bum -bum +xUL +xUL +xUL bDA bYY bYY @@ -102126,9 +102126,9 @@ bum bum bum bum -bum -bum -bum +xUL +xUL +xUL gjW xUL xUL @@ -102383,9 +102383,9 @@ bum bum bum bum -bum -bum -bum +xUL +xUL +xUL xUL xUL bum @@ -102640,9 +102640,9 @@ bum bum bum bum -bum -bum -bum +xUL +xUL +xUL xUL xUL sTq From 23b235d6ed001cc4b047aa3b2ee0d94ec05a8635 Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Tue, 11 Aug 2020 01:42:42 -0700 Subject: [PATCH 14/23] Update living_active_block.dm --- code/modules/mob/living/living_active_block.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/living_active_block.dm b/code/modules/mob/living/living_active_block.dm index be22575c0f..2493509e16 100644 --- a/code/modules/mob/living/living_active_block.dm +++ b/code/modules/mob/living/living_active_block.dm @@ -181,9 +181,9 @@ /// Apply the stamina damage to our user, notice how damage argument is stamina_amount. /obj/item/proc/active_block_do_stamina_damage(mob/living/owner, atom/object, stamina_amount, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return) if(istype(object, /obj/item/projectile)) - var/obj/item/projectile/P = O + var/obj/item/projectile/P = object if(P.stamina) - var/blocked = active_block_calculate_final_damage(owner, object, stamina, attack_text, attack_type, armour_penetration, attacker, def_zone, final_block_chance, block_return) + var/blocked = active_block_calculate_final_damage(owner, object, P.stamina, attack_text, attack_type, armour_penetration, attacker, def_zone, final_block_chance, block_return) var/stam = active_block_stamina_cost(owner, object, blocked, attack_text, ATTACK_TYPE_PROJECTILE, armour_penetration, attacker, def_zone, final_block_chance, block_return) stamina_amount += stam var/datum/block_parry_data/data = get_block_parry_data() From 82298fd56c796534d95566bb7e0a6c85b037906a Mon Sep 17 00:00:00 2001 From: Timothy Teakettle <59849408+timothyteakettle@users.noreply.github.com> Date: Wed, 12 Aug 2020 17:03:23 +0100 Subject: [PATCH 15/23] yes --- code/modules/client/preferences_savefile.dm | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index 59d99674eb..07670b3ea5 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -5,7 +5,7 @@ // You do not need to raise this if you are adding new values that have sane defaults. // Only raise this value when changing the meaning/format/name/layout of an existing value // where you would want the updater procs below to run -#define SAVEFILE_VERSION_MAX 33 +#define SAVEFILE_VERSION_MAX 34 /* SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Carn @@ -200,6 +200,13 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car features["silicon_flavor_text"] = html_encode(features["silicon_flavor_text"]) features["ooc_notes"] = html_encode(features["ooc_notes"]) + if(current_version < 34) + if(features["horns"] && S["species"]) //check for saved horn data + var/datum/species/loaded_species = GLOB.species_list[S["species"]] + if(loaded_species && !initial(loaded_species.mutant_bodyparts["horns"])) //if saved horn data plus previously no initial horns were allowed on their race, wipe the horns + features["horns"] = null + + /datum/preferences/proc/load_path(ckey,filename="preferences.sav") if(!ckey) return @@ -224,7 +231,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car var/needs_update = savefile_needs_update(S) if(needs_update == -2) //fatal, can't load any data return 0 - + . = TRUE //general preferences @@ -443,7 +450,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car return 0 . = TRUE - + //Species var/species_id S["species"] >> species_id From e5d48e307a3ba33f3af08f68b4917acf54954936 Mon Sep 17 00:00:00 2001 From: Timothy Teakettle <59849408+timothyteakettle@users.noreply.github.com> Date: Wed, 12 Aug 2020 17:04:37 +0100 Subject: [PATCH 16/23] woops --- code/modules/client/preferences_savefile.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index 07670b3ea5..dc66008027 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -203,7 +203,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car if(current_version < 34) if(features["horns"] && S["species"]) //check for saved horn data var/datum/species/loaded_species = GLOB.species_list[S["species"]] - if(loaded_species && !initial(loaded_species.mutant_bodyparts["horns"])) //if saved horn data plus previously no initial horns were allowed on their race, wipe the horns + if(loaded_species && !initial(loaded_species.mutant_bodyparts)["horns"]) //if saved horn data plus previously no initial horns were allowed on their race, wipe the horns features["horns"] = null From a9caceb001d9225911f39047260ae44e8bf22c17 Mon Sep 17 00:00:00 2001 From: timothyteakettle <59849408+timothyteakettle@users.noreply.github.com> Date: Fri, 14 Aug 2020 02:27:54 +0100 Subject: [PATCH 17/23] insect fluff! --- code/_globalvars/lists/flavor_misc.dm | 2 +- code/modules/client/preferences_savefile.dm | 13 ++++++++----- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/code/_globalvars/lists/flavor_misc.dm b/code/_globalvars/lists/flavor_misc.dm index b7d3d71574..7c2ebc5f0c 100644 --- a/code/_globalvars/lists/flavor_misc.dm +++ b/code/_globalvars/lists/flavor_misc.dm @@ -235,6 +235,6 @@ GLOBAL_LIST_INIT(roundstart_tongues, list("default","human tongue" = /obj/item/o //unlocked parts are those that anyone can choose on customisation regardless //parts not in unlocked, but in all, are thus locked GLOBAL_LIST_INIT(all_mutant_parts, list("tail_lizard" = "Tail", "mam_tail" = "Tail", "tail_human" = "Tail", "snout" = "Snout", "frills" = "Frills", "spines" = "Spines", "body_markings" = "Body Markings", "mam_body_markings" = "Species Markings" , "mam_ears" = "Ears", "ears" = "Ears", "mam_snouts" = "Snout", "legs" = "Legs", "deco_wings" = "Decorative Wings", "insect_wings" = "Insect Wings", "insect_fluff" = "Insect Fluff", "taur" = "Tauric Body", "insect_markings" = "Insect Markings", "wings" = "Wings", "xenohead" = "Caste Head", "xenotail" = "Tail", "xenodorsal" = "Dorsal Spines", "ipc_screen" = "Screen", "ipc_antenna" = "Antenna", "meat_type" = "Meat Type", "horns" = "Horns")) -GLOBAL_LIST_INIT(unlocked_mutant_parts, list("horns")) +GLOBAL_LIST_INIT(unlocked_mutant_parts, list("horns", "insect_fluff")) //parts in either of the above two lists that require a second option that allows them to be coloured GLOBAL_LIST_INIT(colored_mutant_parts, list("insect_wings" = "wings_color", "deco_wings" = "wings_color", "horns" = "horns_color")) diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index dc66008027..a5d7b3f8ca 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -5,7 +5,7 @@ // You do not need to raise this if you are adding new values that have sane defaults. // Only raise this value when changing the meaning/format/name/layout of an existing value // where you would want the updater procs below to run -#define SAVEFILE_VERSION_MAX 34 +#define SAVEFILE_VERSION_MAX 35 /* SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Carn @@ -200,11 +200,14 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car features["silicon_flavor_text"] = html_encode(features["silicon_flavor_text"]) features["ooc_notes"] = html_encode(features["ooc_notes"]) - if(current_version < 34) - if(features["horns"] && S["species"]) //check for saved horn data + if(current_version < 35) + if(S["species"]) var/datum/species/loaded_species = GLOB.species_list[S["species"]] - if(loaded_species && !initial(loaded_species.mutant_bodyparts)["horns"]) //if saved horn data plus previously no initial horns were allowed on their race, wipe the horns - features["horns"] = null + if(loaded_species) + for(var/unlocked_part in GLOB.unlocked_mutant_parts) + if(features[unlocked_part]) //check for saved data on an unlocked part + if(!initial(loaded_species.mutant_bodyparts)[unlocked_part]) //if saved horn data plus previously no initial horns were allowed on their race, wipe the horns + features[unlocked_part] = null /datum/preferences/proc/load_path(ckey,filename="preferences.sav") From 8b4fb136b224b05e672994418c5d04ee2a154b2b Mon Sep 17 00:00:00 2001 From: timothyteakettle <59849408+timothyteakettle@users.noreply.github.com> Date: Fri, 14 Aug 2020 02:37:08 +0100 Subject: [PATCH 18/23] ok fuck it --- code/modules/client/preferences_savefile.dm | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index a5d7b3f8ca..64c5e775b0 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -5,7 +5,7 @@ // You do not need to raise this if you are adding new values that have sane defaults. // Only raise this value when changing the meaning/format/name/layout of an existing value // where you would want the updater procs below to run -#define SAVEFILE_VERSION_MAX 35 +#define SAVEFILE_VERSION_MAX 34 /* SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Carn @@ -200,16 +200,6 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car features["silicon_flavor_text"] = html_encode(features["silicon_flavor_text"]) features["ooc_notes"] = html_encode(features["ooc_notes"]) - if(current_version < 35) - if(S["species"]) - var/datum/species/loaded_species = GLOB.species_list[S["species"]] - if(loaded_species) - for(var/unlocked_part in GLOB.unlocked_mutant_parts) - if(features[unlocked_part]) //check for saved data on an unlocked part - if(!initial(loaded_species.mutant_bodyparts)[unlocked_part]) //if saved horn data plus previously no initial horns were allowed on their race, wipe the horns - features[unlocked_part] = null - - /datum/preferences/proc/load_path(ckey,filename="preferences.sav") if(!ckey) return From 7661a8c8b435c2d7a83f99c7696aaae220a6c409 Mon Sep 17 00:00:00 2001 From: Changelogs Date: Mon, 17 Aug 2020 00:12:25 +0000 Subject: [PATCH 19/23] Automatic changelog compile [ci skip] --- html/changelog.html | 31 +++++++++++----------- html/changelogs/.all_changelog.yml | 13 +++++++++ html/changelogs/AutoChangeLog-pr-12739.yml | 12 --------- html/changelogs/AutoChangeLog-pr-13177.yml | 4 --- 4 files changed, 28 insertions(+), 32 deletions(-) delete mode 100644 html/changelogs/AutoChangeLog-pr-12739.yml delete mode 100644 html/changelogs/AutoChangeLog-pr-13177.yml diff --git a/html/changelog.html b/html/changelog.html index 261c23fc60..2159cfd50c 100644 --- a/html/changelog.html +++ b/html/changelog.html @@ -50,6 +50,21 @@ -->
+

17 August 2020

+

DeltaFire15 updated:

+
    +
  • Cogscarabs are no longer always Pogscarabs
  • +
+

Strazyplus updated:

+
    +
  • Added drakeborgs
  • +
  • Added drakeplushies
  • +
  • added drakeborg sprites
  • +
  • added drakeplushie sprites
  • +
  • changed some code - added drakeplushies to backpack loadout Removed duplicate voresleeper belly sprites from engdrake & jantidrake. [CC BY-NC-SA 3.0](https://creativecommons.org/licenses/by-nc-sa/3.0/)
  • +
  • Added CC BY-NC-SA 3.0 license details to icon/mob/cyborg moved drakeborg.dmi to icon/mob/cyborg
  • +
+

16 August 2020

kiwedespars updated:

    @@ -1387,22 +1402,6 @@
  • Food carts now function as intended, allowing the pouring and mixing of drinks.
  • slimes can now change their color using alter form
- -

15 June 2020

-

Anturk, kevinz000 updated:

-
    -
  • VV now properly allows access to datums in associative lists
  • -
  • SDQL2 printout has been upgraded for the 5th time.
  • -
-

kevinz000 updated:

-
    -
  • plushies now work. credits to timothytea.
  • -
  • You can now tape knives to cleanbots
  • -
-

kevinz000 (port from VOREStation) updated:

-
    -
  • Ported zoomba skins for cyborgs.
  • -
GoonStation 13 Development Team diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml index d984c0c092..1efccd666e 100644 --- a/html/changelogs/.all_changelog.yml +++ b/html/changelogs/.all_changelog.yml @@ -26931,3 +26931,16 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py. zeroisthebiggay: - rscadd: tips - rscdel: tips +2020-08-17: + DeltaFire15: + - bugfix: Cogscarabs are no longer always Pogscarabs + Strazyplus: + - rscadd: Added drakeborgs + - rscadd: Added drakeplushies + - imageadd: added drakeborg sprites + - imageadd: added drakeplushie sprites + - code_imp: changed some code - added drakeplushies to backpack loadout Removed + duplicate voresleeper belly sprites from engdrake & jantidrake. [CC BY-NC-SA + 3.0](https://creativecommons.org/licenses/by-nc-sa/3.0/) + - rscadd: Added CC BY-NC-SA 3.0 license details to icon/mob/cyborg moved drakeborg.dmi + to icon/mob/cyborg diff --git a/html/changelogs/AutoChangeLog-pr-12739.yml b/html/changelogs/AutoChangeLog-pr-12739.yml deleted file mode 100644 index 324309ddc6..0000000000 --- a/html/changelogs/AutoChangeLog-pr-12739.yml +++ /dev/null @@ -1,12 +0,0 @@ -author: "Strazyplus" -delete-after: True -changes: - - rscadd: "Added drakeborgs" - - rscadd: "Added drakeplushies" - - imageadd: "added drakeborg sprites" - - imageadd: "added drakeplushie sprites" - - code_imp: "changed some code - added drakeplushies to backpack loadout -Removed duplicate voresleeper belly sprites from engdrake & jantidrake. -[CC BY-NC-SA 3.0](https://creativecommons.org/licenses/by-nc-sa/3.0/)" - - rscadd: "Added CC BY-NC-SA 3.0 license details to icon/mob/cyborg -moved drakeborg.dmi to icon/mob/cyborg" diff --git a/html/changelogs/AutoChangeLog-pr-13177.yml b/html/changelogs/AutoChangeLog-pr-13177.yml deleted file mode 100644 index e55e4973e9..0000000000 --- a/html/changelogs/AutoChangeLog-pr-13177.yml +++ /dev/null @@ -1,4 +0,0 @@ -author: "DeltaFire15" -delete-after: True -changes: - - bugfix: "Cogscarabs are no longer always Pogscarabs" From 1be6b8789725bd3c990c0b72338815d58cb527f8 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 16 Aug 2020 20:20:07 -0500 Subject: [PATCH 20/23] Automatic changelog generation for PR #13045 [ci skip] --- html/changelogs/AutoChangeLog-pr-13045.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-13045.yml diff --git a/html/changelogs/AutoChangeLog-pr-13045.yml b/html/changelogs/AutoChangeLog-pr-13045.yml new file mode 100644 index 0000000000..ea813fe8c4 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13045.yml @@ -0,0 +1,5 @@ +author: "ported from tg" +delete-after: True +changes: + - rscadd: "bronze airlocks and windows can now be built" + - balance: "i also tweaked bronze flooring to be cheaper." From dbf065526adb1fffd4459ab3bfdcb216e0ffb936 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 16 Aug 2020 20:20:32 -0500 Subject: [PATCH 21/23] Automatic changelog generation for PR #13092 [ci skip] --- html/changelogs/AutoChangeLog-pr-13092.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-13092.yml diff --git a/html/changelogs/AutoChangeLog-pr-13092.yml b/html/changelogs/AutoChangeLog-pr-13092.yml new file mode 100644 index 0000000000..fd8e39800f --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13092.yml @@ -0,0 +1,4 @@ +author: "silicons" +delete-after: True +changes: + - tweak: "stamina draining projectiles without stamina for their primary damage type now has their stamina damage taken into account for shield blocking, rather than the block being done for free for that." From 6f0c6ca88df13dbe6a9d6afc990a74962ad01476 Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 16 Aug 2020 20:35:08 -0500 Subject: [PATCH 22/23] Automatic changelog generation for PR #13037 [ci skip] --- html/changelogs/AutoChangeLog-pr-13037.yml | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-13037.yml diff --git a/html/changelogs/AutoChangeLog-pr-13037.yml b/html/changelogs/AutoChangeLog-pr-13037.yml new file mode 100644 index 0000000000..83dba115e9 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13037.yml @@ -0,0 +1,5 @@ +author: "timothyteakettle" +delete-after: True +changes: + - refactor: "snowflake code for mutant bodypart selection has been rewritten to be ~14x shorter" + - tweak: "meat type and horns can now be selected by any species" From bdacd72f3d67f3b3314fc02d081489e9f4b1b18d Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Sun, 16 Aug 2020 20:38:56 -0500 Subject: [PATCH 23/23] Automatic changelog generation for PR #13067 [ci skip] --- html/changelogs/AutoChangeLog-pr-13067.yml | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 html/changelogs/AutoChangeLog-pr-13067.yml diff --git a/html/changelogs/AutoChangeLog-pr-13067.yml b/html/changelogs/AutoChangeLog-pr-13067.yml new file mode 100644 index 0000000000..48e760b002 --- /dev/null +++ b/html/changelogs/AutoChangeLog-pr-13067.yml @@ -0,0 +1,4 @@ +author: "Hatterhat" +delete-after: True +changes: + - balance: "The funny blyat men have stumbled upon another surplus of Mosin-Nagants and are starting to pack them into crates again."