From 0bf27bc4b2b2c6019ce192a7e7e6f098119474fe Mon Sep 17 00:00:00 2001 From: dafsu <132131722+Kegdo-Jr@users.noreply.github.com> Date: Fri, 22 Dec 2023 20:59:10 +0300 Subject: [PATCH 01/39] code --- .../client/preference_setup/loadout/loadout_suit.dm | 4 ++++ .../client/preference_setup/loadout/loadout_uniform.dm | 4 ++++ code/modules/clothing/suits/miscellaneous.dm | 8 ++++++++ code/modules/clothing/under/miscellaneous.dm | 5 +++++ 4 files changed, 21 insertions(+) diff --git a/code/modules/client/preference_setup/loadout/loadout_suit.dm b/code/modules/client/preference_setup/loadout/loadout_suit.dm index a324875a58..a2bde3aaa9 100644 --- a/code/modules/client/preference_setup/loadout/loadout_suit.dm +++ b/code/modules/client/preference_setup/loadout/loadout_suit.dm @@ -505,6 +505,10 @@ path = /obj/item/clothing/suit/storage/hooded/wintercoat/cosmic // winter coats end here +/datum/gear/suit/runner + display_name = "runner jacket" + path = /obj/item/clothing/suit/runner + /datum/gear/suit/varsity display_name = "varsity jacket selection" path = /obj/item/clothing/suit/varsity diff --git a/code/modules/client/preference_setup/loadout/loadout_uniform.dm b/code/modules/client/preference_setup/loadout/loadout_uniform.dm index 176e0b697f..b6bad99996 100644 --- a/code/modules/client/preference_setup/loadout/loadout_uniform.dm +++ b/code/modules/client/preference_setup/loadout/loadout_uniform.dm @@ -374,6 +374,10 @@ display_name = "halter top" path = /obj/item/clothing/under/haltertop +/datum/gear/uniform/tanktop + display_name = "tank top" + path = /obj/item/clothing/under/tanktop + /datum/gear/uniform/revealingdress display_name = "revealing dress" path = /obj/item/clothing/under/dress/revealingdress diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm index e7de3d361f..10974fcda8 100644 --- a/code/modules/clothing/suits/miscellaneous.dm +++ b/code/modules/clothing/suits/miscellaneous.dm @@ -799,6 +799,14 @@ name = "brown varsity jacket" icon_state = "varsity_brown" +/obj/item/clothing/suit/runner + name = "runner jacket" + desc = "A red sports jacket with white trim and an unfolded collar." + icon_state = "runner" + allowed = list (/obj/item/weapon/pen, /obj/item/weapon/paper, /obj/item/device/flashlight, /obj/item/weapon/tank/emergency/oxygen, /obj/item/weapon/storage/fancy/cigarettes, /obj/item/weapon/storage/box/matches, /obj/item/weapon/reagent_containers/food/drinks/flask) + item_state_slots = list(slot_r_hand_str = "suit_red", slot_l_hand_str = "suit_red") + flags_inv = HIDEHOLSTER + /* * Department Jackets */ diff --git a/code/modules/clothing/under/miscellaneous.dm b/code/modules/clothing/under/miscellaneous.dm index d4f0f3dc78..bcea7431f6 100644 --- a/code/modules/clothing/under/miscellaneous.dm +++ b/code/modules/clothing/under/miscellaneous.dm @@ -981,6 +981,11 @@ desc = "Jean shorts and a black halter top. Perfect for casual Fridays!" icon_state = "haltertop" +/obj/item/clothing/under/tanktop + name = "tank top" + desc = "The most versatile top ever created." + icon_state = "tanktop" + /obj/item/clothing/under/rippedpunk name = "ripped punk jeans" desc = "Black ripped jeans and a fishnet top. How punk." From bcb4a9e91ce3e931334be05df890ba4ea396bab8 Mon Sep 17 00:00:00 2001 From: Repede Date: Sun, 7 Jan 2024 20:25:23 -0500 Subject: [PATCH 02/39] Fixes GLOB Edit for global view variables so it does not crash the server instantly - Code by @Willburd --- code/controllers/globals.dm | 2 +- .../admin/view_variables/view_variables.dm | 477 +++++++++--------- 2 files changed, 240 insertions(+), 239 deletions(-) diff --git a/code/controllers/globals.dm b/code/controllers/globals.dm index bacaa59f8f..6b7c0b4137 100644 --- a/code/controllers/globals.dm +++ b/code/controllers/globals.dm @@ -36,7 +36,7 @@ GLOBAL_REAL(GLOB, /datum/controller/global_vars) if(!statclick) statclick = new/obj/effect/statclick/debug(null, "Initializing...", src) - stat("GLOB:", "Button Removed Due To Crashing") //VOREStation Edit + stat("GLOB:", statclick.update("Edit")) /datum/controller/global_vars/vv_edit_var(var_name, var_value) if(gvars_datum_protected_varlist[var_name]) diff --git a/code/modules/admin/view_variables/view_variables.dm b/code/modules/admin/view_variables/view_variables.dm index cd05296959..f1ee1e138f 100644 --- a/code/modules/admin/view_variables/view_variables.dm +++ b/code/modules/admin/view_variables/view_variables.dm @@ -15,269 +15,270 @@ if (!islist && !istype(D)) return - var/title = "" - var/refid = "\ref[D]" - var/icon/sprite - var/hash + //VOREStation Edit Start - the rest of this proc in a spawn + spawn(0) + var/title = "" + var/refid = "\ref[D]" + var/icon/sprite + var/hash - var/type = /list - if (!islist) - type = D.type + var/type = /list + if (!islist) + type = D.type - if(istype(D, /atom)) - var/atom/AT = D - if(AT.icon && AT.icon_state) - sprite = new /icon(AT.icon, AT.icon_state) - hash = md5(AT.icon) - hash = md5(hash + AT.icon_state) - src << browse_rsc(sprite, "vv[hash].png") + if(istype(D, /atom)) + var/atom/AT = D + if(AT.icon && AT.icon_state) + sprite = new /icon(AT.icon, AT.icon_state) + hash = md5(AT.icon) + hash = md5(hash + AT.icon_state) + src << browse_rsc(sprite, "vv[hash].png") - title = "[D] (\ref[D]) = [type]" - var/formatted_type = replacetext("[type]", "/", "/") + title = "[D] (\ref[D]) = [type]" + var/formatted_type = replacetext("[type]", "/", "/") - var/sprite_text - if(sprite) - sprite_text = "" - var/list/header = islist(D)? list("/list") : D.vv_get_header() + var/sprite_text + if(sprite) + sprite_text = "" + var/list/header = islist(D)? list("/list") : D.vv_get_header() - var/marked - if(holder && holder.marked_datum && holder.marked_datum == D) - marked = VV_MSG_MARKED - var/varedited_line = "" - if(!islist && (D.datum_flags & DF_VAR_EDITED)) - varedited_line = VV_MSG_EDITED - var/deleted_line - if(!islist && D.gc_destroyed) - deleted_line = VV_MSG_DELETED + var/marked + if(holder && holder.marked_datum && holder.marked_datum == D) + marked = VV_MSG_MARKED + var/varedited_line = "" + if(!islist && (D.datum_flags & DF_VAR_EDITED)) + varedited_line = VV_MSG_EDITED + var/deleted_line + if(!islist && D.gc_destroyed) + deleted_line = VV_MSG_DELETED - var/list/dropdownoptions = list() - var/autoconvert_dropdown = FALSE - if (islist) - dropdownoptions = list( - "---", - "Add Item" = "?_src_=vars;[HrefToken()];[VV_HK_LIST_ADD]=TRUE;target=[refid]", - "Remove Nulls" = "?_src_=vars;[HrefToken()];[VV_HK_LIST_ERASE_NULLS]=TRUE;target=[refid]", - "Remove Dupes" = "?_src_=vars;[HrefToken()];[VV_HK_LIST_ERASE_DUPES]=TRUE;target=[refid]", - "Set len" = "?_src_=vars;[HrefToken()];[VV_HK_LIST_SET_LENGTH]=TRUE;target=[refid]", - "Shuffle" = "?_src_=vars;[HrefToken()];[VV_HK_LIST_SHUFFLE]=TRUE;target=[refid]", - // "Show VV To Player" = "?_src_=vars;[HrefToken()];[VV_HK_EXPOSE]=TRUE;target=[refid]" // TODO - Not yet implemented for lists - ) - autoconvert_dropdown = TRUE - else - dropdownoptions = D.vv_get_dropdown() - var/list/dropdownoptions_html = list() - if(autoconvert_dropdown) - for (var/name in dropdownoptions) - var/link = dropdownoptions[name] - if (link) - dropdownoptions_html += "" - else - dropdownoptions_html += "" - else - dropdownoptions_html = dropdownoptions + D.get_view_variables_options() + var/list/dropdownoptions = list() + var/autoconvert_dropdown = FALSE + if (islist) + dropdownoptions = list( + "---", + "Add Item" = "?_src_=vars;[HrefToken()];[VV_HK_LIST_ADD]=TRUE;target=[refid]", + "Remove Nulls" = "?_src_=vars;[HrefToken()];[VV_HK_LIST_ERASE_NULLS]=TRUE;target=[refid]", + "Remove Dupes" = "?_src_=vars;[HrefToken()];[VV_HK_LIST_ERASE_DUPES]=TRUE;target=[refid]", + "Set len" = "?_src_=vars;[HrefToken()];[VV_HK_LIST_SET_LENGTH]=TRUE;target=[refid]", + "Shuffle" = "?_src_=vars;[HrefToken()];[VV_HK_LIST_SHUFFLE]=TRUE;target=[refid]", + // "Show VV To Player" = "?_src_=vars;[HrefToken()];[VV_HK_EXPOSE]=TRUE;target=[refid]" // TODO - Not yet implemented for lists + ) + autoconvert_dropdown = TRUE + else + dropdownoptions = D.vv_get_dropdown() + var/list/dropdownoptions_html = list() + if(autoconvert_dropdown) + for (var/name in dropdownoptions) + var/link = dropdownoptions[name] + if (link) + dropdownoptions_html += "" + else + dropdownoptions_html += "" + else + dropdownoptions_html = dropdownoptions + D.get_view_variables_options() - var/list/names = list() - if (!islist) - names = D.get_variables() - sleep(1)//For some reason, without this sleep, VVing will cause client to disconnect on certain objects. + var/list/names = list() + if (!islist) + names = D.get_variables() - var/list/variable_html = list() - if (islist) - var/list/L = D - for (var/i in 1 to L.len) - var/key = L[i] - var/value - if (IS_NORMAL_LIST(L) && IS_VALID_ASSOC_KEY(key)) - value = L[key] - variable_html += debug_variable(i, value, 0, D) - else + var/list/variable_html = list() + if (islist) + var/list/L = D + for (var/i in 1 to L.len) + var/key = L[i] + var/value + if (IS_NORMAL_LIST(L) && IS_VALID_ASSOC_KEY(key)) + value = L[key] + variable_html += debug_variable(i, value, 0, D) + else - names = sortList(names) - for (var/V in names) - if(D.can_vv_get(V)) - variable_html += D.vv_get_var(V) + names = sortList(names) + for (var/V in names) + if(D.can_vv_get(V)) + variable_html += D.vv_get_var(V) - var/html = {" - - - [title] - - - - -
+ +
+ + + + + +
+ + + + +
+ [sprite_text] +
+ [header.Join()] +
+
+
+ [formatted_type] + [marked] + [varedited_line] + [deleted_line] +
+
+
+ Refresh +
+ +
+
+
+
+
+ + E - Edit, tries to determine the variable type by itself.
+ C - Change, asks you for the var type first.
+ M - Mass modify: changes this variable for all objects of this type.
+
+
- -
- - - - -
- [sprite_text] -
- [header.Join()] -
-
+
- [formatted_type] - [marked] - [varedited_line] - [deleted_line] + Search:
-
- Refresh -
- -
-
+
+
-
-
- - E - Edit, tries to determine the variable type by itself.
- C - Change, asks you for the var type first.
- M - Mass modify: changes this variable for all objects of this type.
-
-
- - - - - -
-
- Search: -
-
- -
-
-
    - [variable_html.Join()] -
- - - -"} - src << browse(html, "window=variables[refid];size=475x650") +
+
    + [variable_html.Join()] +
+ + + + "} + src << browse(html, "window=variables[refid];size=475x650") //VOREStation edit end /client/proc/vv_update_display(datum/D, span, content) src << output("[span]:[content]", "variables\ref[D].browser:replace_span") From e27f8803fe86190f402c40f5c9268645b5d953d5 Mon Sep 17 00:00:00 2001 From: Repede Date: Sun, 7 Jan 2024 20:28:44 -0500 Subject: [PATCH 03/39] oops --- code/modules/admin/view_variables/view_variables.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/admin/view_variables/view_variables.dm b/code/modules/admin/view_variables/view_variables.dm index f1ee1e138f..0a2e303712 100644 --- a/code/modules/admin/view_variables/view_variables.dm +++ b/code/modules/admin/view_variables/view_variables.dm @@ -81,6 +81,7 @@ var/list/names = list() if (!islist) names = D.get_variables() + //sleep(1)//For some reason, without this sleep, VVing will cause client to disconnect on certain objects. //VOREStation edit - commented out, replaced with spawn(0) above var/list/variable_html = list() if (islist) From f72513c2a612d23f97c92b554e5c18e42f363edc Mon Sep 17 00:00:00 2001 From: Eli Date: Mon, 8 Jan 2024 17:28:09 +1100 Subject: [PATCH 04/39] Default changed to 0 --- code/modules/vore/eating/belly_obj_vr.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/vore/eating/belly_obj_vr.dm b/code/modules/vore/eating/belly_obj_vr.dm index 76e20daf0e..d04bf3c636 100644 --- a/code/modules/vore/eating/belly_obj_vr.dm +++ b/code/modules/vore/eating/belly_obj_vr.dm @@ -31,7 +31,7 @@ var/digestchance = 0 // % Chance of stomach beginning to digest if prey struggles var/absorbchance = 0 // % Chance of stomach beginning to absorb if prey struggles var/escapechance = 0 // % Chance of prey beginning to escape if prey struggles. - var/escapechance_absorbed = 20 // % Chance of absorbed prey finishing an escape. Requires a successful escape roll against the above as well. + var/escapechance_absorbed = 0 // % Chance of absorbed prey finishing an escape. Requires a successful escape roll against the above as well. var/escape_stun = 0 // AI controlled mobs with a number here will be weakened by the provided var when someone escapes, to prevent endless nom loops var/transferchance = 0 // % Chance of prey being trasnsfered, goes from 0-100% var/transferchance_secondary = 0 // % Chance of prey being transfered to transferchance_secondary, also goes 0-100% From 4d61d0d1e7144e7aa8d99f204d154db9581ea105 Mon Sep 17 00:00:00 2001 From: Eli Date: Mon, 8 Jan 2024 18:51:41 +1100 Subject: [PATCH 05/39] SleeveMate Emag action --- .../objects/items/devices/scanners/sleevemate.dm | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/code/game/objects/items/devices/scanners/sleevemate.dm b/code/game/objects/items/devices/scanners/sleevemate.dm index 6de4c66497..0109335b0d 100644 --- a/code/game/objects/items/devices/scanners/sleevemate.dm +++ b/code/game/objects/items/devices/scanners/sleevemate.dm @@ -309,3 +309,17 @@ var/global/mob/living/carbon/human/dummy/mannequin/sleevemate_mob icon_state = "[initial(icon_state)]_on" else icon_state = initial(icon_state) + +/obj/item/device/sleevemate/emag_act(var/remaining_charges, var/mob/user) + to_chat(user,"You hack [src]!") + var/datum/effect/effect/system/spark_spread/spark_system = new /datum/effect/effect/system/spark_spread() + spark_system.set_up(5, 0, src.loc) + spark_system.start() + playsound(src, "sparks", 50, 1) + if(istype(src.loc,/mob/living)) + var/mob/living/L = src.loc + L.unEquip(src) + src.forceMove(get_turf(src)) + new /obj/item/device/bodysnatcher(src.loc) + qdel(src) + return 1 From 9e1b466067c83da4c44af234540d458fe70f9e74 Mon Sep 17 00:00:00 2001 From: Eli Date: Mon, 8 Jan 2024 20:47:18 +1100 Subject: [PATCH 06/39] Bug fix + Mob escape default --- code/modules/vore/eating/belly_obj_vr.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/vore/eating/belly_obj_vr.dm b/code/modules/vore/eating/belly_obj_vr.dm index d04bf3c636..66dda5c518 100644 --- a/code/modules/vore/eating/belly_obj_vr.dm +++ b/code/modules/vore/eating/belly_obj_vr.dm @@ -1521,7 +1521,7 @@ //absorb resists if(escapable || owner.stat) //If the stomach has escapable enabled or the owner is dead/unconscious - if(prob(escapechance_absorbed) || owner.stat) //Let's have it check to see if the prey's escape attempt starts. + if(prob(escapechance) || owner.stat) //Let's have it check to see if the prey's escape attempt starts. var/living_count = 0 @@ -1549,7 +1549,7 @@ to_chat(R, escape_attempt_absorbed_prey_message) to_chat(owner, escape_attempt_absorbed_owner_message) if(do_after(R, escapetime)) - if((escapable || owner.stat) && (R.loc == src) && prob(escapechance_absorbed)) //Does the escape attempt succeed? + if((escapable || owner.stat) && (R.loc == src) && (prob(escapechance_absorbed) || (!owner.ckey && !escapechance_absorbed && prob(20)))) //Does the escape attempt succeed? var/escape_absorbed_owner_message = pick(escape_absorbed_messages_owner) var/escape_absorbed_prey_message = pick(escape_absorbed_messages_prey) var/escape_absorbed_outside_message = pick(escape_absorbed_messages_outside) From 8058c51cef12623b3bf682f981cab05a1ce8fbd9 Mon Sep 17 00:00:00 2001 From: Eli Date: Tue, 9 Jan 2024 10:31:40 +1100 Subject: [PATCH 07/39] Var added to each simplemob --- code/modules/mob/living/simple_mob/simple_mob_vr.dm | 2 ++ .../simple_mob/subtypes/animal/alien animals/catslug.dm | 1 + .../simple_mob/subtypes/animal/alien animals/jellyfish.dm | 1 + .../simple_mob/subtypes/animal/alien animals/skeleton.dm | 1 + .../simple_mob/subtypes/animal/alien animals/space_mouse.dm | 1 + .../simple_mob/subtypes/animal/alien animals/spacewhale.dm | 1 + .../simple_mob/subtypes/animal/alien animals/startreader.dm | 1 + .../simple_mob/subtypes/animal/alien animals/succlet.dm | 1 + .../simple_mob/subtypes/animal/alien animals/teppi.dm | 2 ++ .../mob/living/simple_mob/subtypes/animal/space/carp.dm | 1 + .../mob/living/simple_mob/subtypes/animal/squirrel.dm | 1 + code/modules/mob/living/simple_mob/subtypes/vore/bat.dm | 1 + .../mob/living/simple_mob/subtypes/vore/bigdragon.dm | 6 ++++++ .../mob/living/simple_mob/subtypes/vore/cryptdrake.dm | 1 + code/modules/mob/living/simple_mob/subtypes/vore/lamia.dm | 1 + code/modules/mob/living/simple_mob/subtypes/vore/pakkun.dm | 1 + code/modules/mob/living/simple_mob/subtypes/vore/peasant.dm | 1 + code/modules/mob/living/simple_mob/subtypes/vore/raptor.dm | 1 + code/modules/mob/living/simple_mob/subtypes/vore/scel.dm | 1 + .../living/simple_mob/subtypes/vore/shadekin/shadekin.dm | 2 ++ code/modules/mob/living/simple_mob/subtypes/vore/succubi.dm | 1 + code/modules/mob/living/simple_mob/subtypes/vore/vampire.dm | 1 + .../mob/living/simple_mob/subtypes/vore/vore_hostile.dm | 3 +++ .../modules/mob/living/simple_mob/subtypes/vore/wolftaur.dm | 1 + code/modules/vore/eating/belly_obj_vr.dm | 2 +- 25 files changed, 35 insertions(+), 1 deletion(-) diff --git a/code/modules/mob/living/simple_mob/simple_mob_vr.dm b/code/modules/mob/living/simple_mob/simple_mob_vr.dm index 47e60e5406..69c0ed52d8 100644 --- a/code/modules/mob/living/simple_mob/simple_mob_vr.dm +++ b/code/modules/mob/living/simple_mob/simple_mob_vr.dm @@ -31,6 +31,7 @@ var/vore_digest_chance = 25 // Chance to switch to digest mode if resisted var/vore_absorb_chance = 0 // Chance to switch to absorb mode if resisted var/vore_escape_chance = 25 // Chance of resisting out of mob + var/vore_escape_chance_absorbed = 20// Chance of absorbed prey finishing an escape. Requires a successful escape roll against the above as well. var/vore_stomach_name // The name for the first belly if not "stomach" var/vore_stomach_flavor // The flavortext for the first belly if not the default @@ -236,6 +237,7 @@ B.contamination_color = vore_default_contamination_color B.escapable = vore_escape_chance > 0 B.escapechance = vore_escape_chance + B.escapechance_absorbed = vore_escape_chance_absorbed B.digestchance = vore_digest_chance B.absorbchance = vore_absorb_chance B.human_prey_swallow_time = swallowTime diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/catslug.dm b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/catslug.dm index d203d12949..ef77df82cc 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/catslug.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/catslug.dm @@ -124,6 +124,7 @@ B.digestchance = 10 B.absorbchance = 1 B.escapechance = 15 + B.escapechance_absorbed = 20 /datum/ai_holder/simple_mob/melee/evasive/catslug hostile = FALSE diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/jellyfish.dm b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/jellyfish.dm index 1b70b1713d..623c67acf4 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/jellyfish.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/jellyfish.dm @@ -95,6 +95,7 @@ GLOBAL_VAR_INIT(jellyfish_count, 0) B.digestchance = 0 B.absorbchance = 0 B.escapechance = 15 + B.escapechance_absorbed = 20 /mob/living/simple_mob/vore/alienanimals/space_jellyfish/apply_melee_effects(var/atom/A) diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/skeleton.dm b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/skeleton.dm index 4f1e1efd9d..5e748ac11f 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/skeleton.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/skeleton.dm @@ -97,6 +97,7 @@ B.digestchance = 10 B.absorbchance = 0 B.escapechance = 25 + B.escapechance_absorbed = 20 /mob/living/simple_mob/vore/alienanimals/skeleton/death(gibbed, deathmessage = "falls down and stops moving...") . = ..() diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/space_mouse.dm b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/space_mouse.dm index 82bbd33d49..9f84a1ed6f 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/space_mouse.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/space_mouse.dm @@ -72,6 +72,7 @@ B.digestchance = 10 B.absorbchance = 0 B.escapechance = 25 + B.escapechance_absorbed = 20 /mob/living/simple_mob/vore/alienanimals/dustjumper/Life() . = ..() diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/spacewhale.dm b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/spacewhale.dm index 65bd18c973..2905b1f1b6 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/spacewhale.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/spacewhale.dm @@ -60,6 +60,7 @@ B.digest_brute = 50 B.digest_burn = 50 B.escapechance = 0 + B.escapechance_absorbed = 20 /mob/living/simple_mob/vore/overmap/spacewhale/Initialize() . = ..() diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/startreader.dm b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/startreader.dm index f980220879..340de1ae12 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/startreader.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/startreader.dm @@ -102,6 +102,7 @@ B.digestchance = 10 B.absorbchance = 0 B.escapechance = 15 + B.escapechance_absorbed = 20 /datum/ai_holder/simple_mob/melee/startreader hostile = TRUE diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/succlet.dm b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/succlet.dm index c5205d5ecd..c7d75ff470 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/succlet.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/succlet.dm @@ -85,6 +85,7 @@ B.digestchance = 0 B.absorbchance = 0 B.escapechance = 35 + B.escapechance_absorbed = 20 B.selective_preference = DM_ABSORB /mob/living/simple_mob/vore/alienanimals/succlet/checkMoveCooldown() diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/teppi.dm b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/teppi.dm index 0735d440ba..ec7ffe3d2c 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/teppi.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/teppi.dm @@ -177,6 +177,7 @@ GLOBAL_VAR_INIT(teppi_count, 0) // How mant teppi DO we have? B.digestchance = 5 B.absorbchance = 1 B.escapechance = 15 + B.escapechance_absorbed = 20 B.emote_lists[DM_DRAIN] = list( "The walls press in heavily over you, holding you tightly and grinding, churning against your body powerfully!! You can feel %pred’s heartbeat through the flesh, pounding in your ears, and the groaning gurgles of the gastric chamber rolling around you, eagerly pressing in against you.", @@ -288,6 +289,7 @@ GLOBAL_VAR_INIT(teppi_count, 0) // How mant teppi DO we have? p.absorbchance = 0 p.escapable = TRUE p.escapechance = 40 + B.escapechance_absorbed = 20 p.digest_mode = DM_HEAL p.name = "propeutpericulum" //I'm no latin professor I just know that some organs and things are based on latin words //and google translate says that each of these individually diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/space/carp.dm b/code/modules/mob/living/simple_mob/subtypes/animal/space/carp.dm index 89cffd64c9..bd754e7127 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/space/carp.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/space/carp.dm @@ -157,6 +157,7 @@ B.digestchance = 100 B.absorbchance = 0 B.escapechance = 3 + B.escapechance_absorbed = 20 B.selective_preference = DM_DIGEST B.escape_stun = 10 diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/squirrel.dm b/code/modules/mob/living/simple_mob/subtypes/animal/squirrel.dm index 9b62bc7da4..d47e950578 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/squirrel.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/squirrel.dm @@ -77,6 +77,7 @@ B.digest_brute = 1 B.digest_burn = 1 B.escapechance = 35 + B.escapechance_absorbed = 20 if(icon == 'icons/mob/alienanimals_x32.dmi') B.desc = "With a final gulp, the cool air of the outside world is replaced with the incredibly tight, hot, and humid insides of the squirrel. \ diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/bat.dm b/code/modules/mob/living/simple_mob/subtypes/vore/bat.dm index 6d6328dfef..d6f3265e2b 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/bat.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/bat.dm @@ -53,6 +53,7 @@ B.digestchance = 25 B.absorbchance = 0 B.escapechance = 15 + B.escapechance_absorbed = 20 B.selective_preference = DM_DRAIN B.escape_stun = 5 diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/bigdragon.dm b/code/modules/mob/living/simple_mob/subtypes/vore/bigdragon.dm index f336a45b86..b56d1b56e5 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/bigdragon.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/bigdragon.dm @@ -563,6 +563,7 @@ I think I covered everything. autotransferwait = 150 escapable = 1 escapechance = 100 + escapechance_absorbed = 20 escapetime = 15 fancy_vore = 1 contamination_color = "grey" @@ -574,6 +575,7 @@ I think I covered everything. name = "Maw" desc = "Seizing it's opportunity, the dragon's jaws swoop in to scoop you up off of your feet, giving you a view down your body of the glistening, red interior. Vicious looking jaws hover above you like a guillotine, threatening to sink down into you, though such a thing never arrives. Seems it has a slower fate in store for you, as it guides your body along the bumpy mattress of it's tongue until the lowermost parts of your body press around the entrance of it's wide, quivering throat. The jaws snap shut, trapping you within, though thankfully clear of snagging your body between them. It's vast tongue coming to life, lifting to cram you against the insides of it's teeth and against the cathedral-roof ridges of it's palate - lathering you in hot, oily drool. It's panting, growled breaths gust from that wide, eye-catching hatch at the back, blasting you with murky breath and airborne spittle, presenting itself as a place to get up close and intimate with very, very soon...." escapechance = 100 + escapechance_absorbed = 20 struggle_messages_inside = list( "You wriggle and wrestle for purchase against the tongue. It lifts, cocooning and squeezing you hard between itself and the palate.", "Reaching out, you try to pry at the beast's interlocked, mighty teeth. A zig-zag crack of light bleeds in to the maw for a moment, presenting you with your current, slimy state, before clicking shut once more.", @@ -599,6 +601,7 @@ I think I covered everything. transferchance = 20 transferlocation = "Maw" escapechance = 0 + escapechance_absorbed = 20 desc = "...And that 'very, very soon' rapidly becomes 'now'. The mighty tongue lifts, having collected enough of your flavor, squelching your lower body up to your chest inside it's hot gullet, giving you an ample view of itself slithering up over your body. You get to watch it quiver and clench with a resounding glllk, around you, the tongue's fat bumpy rear lifting behind your head to displace you down and inside the clinging tunnel. Tight, crushing pressure embraces you with each of those deep, liquid-sounding swallows, inching you down little by little each time. The flesh of the tunnel wraps you tightly, leaving you mostly unable to move, given short moments of respite between each swallow, to listen to the thudding heartbeat and the distant glrrrbles deep below. The hot scent of acidity grows stronger, the deeper you plunge..." struggle_messages_inside = list( "With as much effort as you can muster, you squirm and writhe, trying to swim up the passage of soft flesh. You barely peek out the beast's gullet, before the back of it's tongue squelches into your face, forcing you back down.", @@ -615,6 +618,7 @@ I think I covered everything. name = "Throat." desc = "Giving in to the beast's gentle ministrations, you let yourself get slowly urged forward by the fat tongue, squelched cheek-first against the hot, wet back of it's throat, the gullet guiding you down and inside. Schllorp! You descend into the jelly-like folds of the dragon's quivering gullet, rhythmic periastaltic motions helping to suckle and drag you inside. the last of your body slides off of it's tongue, the rear of that muscle lifting up against the last of you to help squelch you down. Each swallow leaves a little time inbetween, and the pace down the hatch is slow and gentle - you feel like resistance and squirms would defeat this pace and have you slithering back up the way you came." escapechance = 0 + escapechance_absorbed = 20 transferchance = 100 transferlocation = "Maw." digest_mode = DM_HEAL @@ -626,6 +630,7 @@ I think I covered everything. /obj/belly/dragon/stomach name = "Stomach" escapechance = 0 + escapechance_absorbed = 20 transferchance = 10 transferlocation = "Throat" desc = "The final part of your journey arrives, in the form of a tightly squelched, muscular sphincter. Throat pressure crams against you, until abruptly, you find yourself spat into a hot, caustic cauldron of churning doom, the dragon's stomach. After slithering in, the way you entered squelches shut, dissapearing among the folds - impossible for you to find any more. You are trapped, no way out, lounging in a shallow pool of thick sticky juices. endless undulations from thick, pendulous folds of stomach-wall all around continually churn it up into a foamy, bubbling mess, soaking their folds in it to drip in ropes and even shivering sheets of the stuff around you. Clenches gush the digestive slimes all over you from time to time, cradling you in it's noxious embrace. Your ears are filled with such sloppy squelches now, those distant muffled glrrns you heard earlier now sharp, crisp, and thunderous as you nestle in their very source. Settle down for what little time you have left, for your fate rests adding to the powerful beast all around you." @@ -645,6 +650,7 @@ I think I covered everything. name = "Second Stomach" desc = "You've kept yourself surrendered and let the beast get you this far, and now you find yourself squelching into the puffy, pillowy clutches of a rather tight chamber, spat slowly inside from the last portion of the gullet. It's pretty cramped in here, though the sheer squishiness of the walls allows you to stretch yourself out into them. Nothing but doughy texture for inches, even feet, deep into the walls. The chamber secretes a thick, clear slime all over you, the walls churning and lathering every single part of you lovingly in it's embrace. Its incessant, kneading affections seems reminiscent of the digestive processes, yet you feel no tingle from the liquid. To the contrary, any injuries or cuts you have, seem to buzz and heat up on touch with the liquids, closing up and healing over at a visibly rapid pace. This hidden space inside the beast seems to be dedicated to holding and healing things within it! The air, although humid and murky, is very breathable in here, though nearby - very close to you, is the constant squelch and churn of the standard processes of the dragon's digestive system. Seems you are right next door to a place you could of gone to! The path you entered remains visible among the undulating squelch of padded walls, and you feel that it wouldn't be too hard to writhe yourself back up into it's snug embrace." escapechance = 0 + escapechance_absorbed = 20 transferchance = 100 transferlocation = "Throat." digest_mode = DM_HEAL diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/cryptdrake.dm b/code/modules/mob/living/simple_mob/subtypes/vore/cryptdrake.dm index cb3ca07957..9a92398c25 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/cryptdrake.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/cryptdrake.dm @@ -85,6 +85,7 @@ B.digestchance = 50 B.absorbchance = 0 B.escapechance = 3 + B.escapechance_absorbed = 20 B.escape_stun = 5 B.contamination_color = "grey" B.contamination_flavor = "Wet" diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/lamia.dm b/code/modules/mob/living/simple_mob/subtypes/vore/lamia.dm index 912ae09a09..9d48b5f64a 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/lamia.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/lamia.dm @@ -118,6 +118,7 @@ tail.contamination_color = vore_default_contamination_color tail.escapable = TRUE // needed for transferchance tail.escapechance = 0 // No directly escaping a tail, gotta squirm back out. + tail.escapechance_absorbed = 20 tail.digestchance = vore_tail_digest_chance tail.absorbchance = vore_tail_absorb_chance tail.transferchance = vore_tail_transfer_chance diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/pakkun.dm b/code/modules/mob/living/simple_mob/subtypes/vore/pakkun.dm index 49d3a62835..a34368d65e 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/pakkun.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/pakkun.dm @@ -147,6 +147,7 @@ assuming you ever get out at all. For now though, you're stuck as some extra softness padding out a cute little lizard." B.belly_fullscreen = "a_tumby" B.escapechance = 25 + B.escapechance_absorbed = 20 B.absorbchance = 0 B.digestchance = 0 B.digest_mode = DM_SELECT diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/peasant.dm b/code/modules/mob/living/simple_mob/subtypes/vore/peasant.dm index 1bd10e9ee1..57020a258b 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/peasant.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/peasant.dm @@ -67,6 +67,7 @@ B.digestchance = 25 B.absorbchance = 0 B.escapechance = 15 + B.escapechance_absorbed = 20 B.selective_preference = DM_HOLD B.escape_stun = 5 diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/raptor.dm b/code/modules/mob/living/simple_mob/subtypes/vore/raptor.dm index 5adb15f865..530b7a1cb7 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/raptor.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/raptor.dm @@ -97,6 +97,7 @@ B.digestchance = 50 B.absorbchance = 0 B.escapechance = 5 + B.escapechance_absorbed = 20 B.escape_stun = 5 B.contamination_color = "grey" B.contamination_flavor = "Wet" diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/scel.dm b/code/modules/mob/living/simple_mob/subtypes/vore/scel.dm index deef2f0622..6274879b09 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/scel.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/scel.dm @@ -110,6 +110,7 @@ B.digestchance = 50 B.absorbchance = 0 B.escapechance = 10 + B.escapechance_absorbed = 20 B.escape_stun = 5 B.contamination_color = "grey" B.contamination_flavor = "Wet" diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/shadekin.dm b/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/shadekin.dm index 03bd5b35db..b2508c5f1b 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/shadekin.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/shadekin.dm @@ -48,6 +48,7 @@ vore_icons = SA_ICON_LIVING swallowTime = 2 SECONDS vore_escape_chance = 25 + vore_escape_chance_absorbed = 20 //None, they stay as their defaults. vore_digest_chance = 0 @@ -151,6 +152,7 @@ B.digest_mode = vore_default_mode B.escapable = vore_escape_chance > 0 B.escapechance = vore_escape_chance + B.escapechance_absorbed = vore_escape_chance_absorbed B.digestchance = vore_digest_chance B.absorbchance = vore_absorb_chance B.human_prey_swallow_time = swallowTime diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/succubi.dm b/code/modules/mob/living/simple_mob/subtypes/vore/succubi.dm index 3b5d4f986d..8d749e0b1c 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/succubi.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/succubi.dm @@ -68,6 +68,7 @@ B.digestchance = 25 B.absorbchance = 0 B.escapechance = 15 + B.escapechance_absorbed = 20 B.selective_preference = DM_DRAIN B.escape_stun = 5 diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/vampire.dm b/code/modules/mob/living/simple_mob/subtypes/vore/vampire.dm index 96a760bd28..dc5a393399 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/vampire.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/vampire.dm @@ -67,6 +67,7 @@ B.digestchance = 25 B.absorbchance = 0 B.escapechance = 10 + B.escapechance_absorbed = 20 B.selective_preference = DM_DRAIN B.escape_stun = 5 diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/vore_hostile.dm b/code/modules/mob/living/simple_mob/subtypes/vore/vore_hostile.dm index d0c3d1c633..7f78adfcc8 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/vore_hostile.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/vore_hostile.dm @@ -82,6 +82,7 @@ B.digestchance = 0 B.absorbchance = 0 B.escapechance = 25 + B.escapechance_absorbed = 20 B.escape_stun = 5 /mob/living/simple_mob/vore/vore_hostile/abyss_lurker/attack_hand(mob/living/user) @@ -200,6 +201,7 @@ B.digestchance = 0 B.absorbchance = 0 B.escapechance = 25 + B.escapechance_absorbed = 20 B.colorization_enabled = TRUE B.belly_fullscreen_color = "#591579" B.escape_stun = 3 @@ -319,6 +321,7 @@ B.digestchance = 0 B.absorbchance = 0 B.escapechance = 10 + B.escapechance_absorbed = 20 B.escapetime = 5 SECONDS B.selective_preference = DM_DIGEST B.escape_stun = 3 diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/wolftaur.dm b/code/modules/mob/living/simple_mob/subtypes/vore/wolftaur.dm index e4e35e837c..1681179652 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/wolftaur.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/wolftaur.dm @@ -81,6 +81,7 @@ B.digestchance = 100 B.absorbchance = 0 B.escapechance = 5 + B.escapechance_absorbed = 20 B.selective_preference = DM_DIGEST B.escape_stun = 5 diff --git a/code/modules/vore/eating/belly_obj_vr.dm b/code/modules/vore/eating/belly_obj_vr.dm index 66dda5c518..d79852fd66 100644 --- a/code/modules/vore/eating/belly_obj_vr.dm +++ b/code/modules/vore/eating/belly_obj_vr.dm @@ -1549,7 +1549,7 @@ to_chat(R, escape_attempt_absorbed_prey_message) to_chat(owner, escape_attempt_absorbed_owner_message) if(do_after(R, escapetime)) - if((escapable || owner.stat) && (R.loc == src) && (prob(escapechance_absorbed) || (!owner.ckey && !escapechance_absorbed && prob(20)))) //Does the escape attempt succeed? + if((escapable || owner.stat) && (R.loc == src) && prob(escapechance_absorbed)) //Does the escape attempt succeed? var/escape_absorbed_owner_message = pick(escape_absorbed_messages_owner) var/escape_absorbed_prey_message = pick(escape_absorbed_messages_prey) var/escape_absorbed_outside_message = pick(escape_absorbed_messages_outside) From c32d33fad962cf9d49d557c10aa8841ac8224c28 Mon Sep 17 00:00:00 2001 From: VerySoft Date: Tue, 9 Jan 2024 14:59:42 -0500 Subject: [PATCH 08/39] Spider Makes it so that nurse spiders can't spawn from any random sources, such as spider egg clusters, spider spawners, and capture crystals. GMs and map makers can still put nurse spiders out if they want to, but this should stop any UNEXPECTED nurse spiders from appearing, and stop spiders from snowballing quite so hard when the conditions are right. --- code/_helpers/global_lists_vr.dm | 2 -- .../gamemodes/technomancer/spells/summon/summon_creature.dm | 3 +-- code/game/objects/effects/semirandom_mobs_vr.dm | 2 -- code/game/objects/effects/spiders.dm | 4 ++-- code/game/objects/items/weapons/capture_crystal.dm | 1 - code/game/objects/random/mob.dm | 3 +-- .../simple_mob/subtypes/animal/giant_spider/broodmother.dm | 3 +-- code/modules/xenoarcheaology/artifacts/autocloner.dm | 1 - 8 files changed, 5 insertions(+), 14 deletions(-) diff --git a/code/_helpers/global_lists_vr.dm b/code/_helpers/global_lists_vr.dm index 7ede8fc794..76b1703fa9 100644 --- a/code/_helpers/global_lists_vr.dm +++ b/code/_helpers/global_lists_vr.dm @@ -664,9 +664,7 @@ var/global/list/xenobio_gold_mobs_hostile = list( /mob/living/simple_mob/animal/giant_spider/webslinger, /mob/living/simple_mob/animal/giant_spider/phorogenic, /mob/living/simple_mob/animal/giant_spider/carrier, - /mob/living/simple_mob/animal/giant_spider/nurse, /mob/living/simple_mob/animal/giant_spider/ion, - /mob/living/simple_mob/animal/giant_spider/nurse/queen, /mob/living/simple_mob/animal/sif/diyaab, /mob/living/simple_mob/animal/sif/duck, /mob/living/simple_mob/animal/sif/frostfly, diff --git a/code/game/gamemodes/technomancer/spells/summon/summon_creature.dm b/code/game/gamemodes/technomancer/spells/summon/summon_creature.dm index c29d9827ec..7b2ab146a2 100644 --- a/code/game/gamemodes/technomancer/spells/summon/summon_creature.dm +++ b/code/game/gamemodes/technomancer/spells/summon/summon_creature.dm @@ -30,7 +30,6 @@ "BAT" = /mob/living/simple_mob/animal/space/bats, "SPIDER" = /mob/living/simple_mob/animal/giant_spider, "SPIDER HUNTER" = /mob/living/simple_mob/animal/giant_spider/hunter, - "SPIDER NURSE" = /mob/living/simple_mob/animal/giant_spider/nurse, "CARP" = /mob/living/simple_mob/animal/space/carp, "BEAR" = /mob/living/simple_mob/animal/space/bear ) @@ -57,4 +56,4 @@ // Now we hurt their new pal, because being forcefully abducted by teleportation can't be healthy. - summoned.adjustBruteLoss(summoned.getMaxHealth() * 0.3) // Lose 30% of max health on arrival (but could be healed back up). \ No newline at end of file + summoned.adjustBruteLoss(summoned.getMaxHealth() * 0.3) // Lose 30% of max health on arrival (but could be healed back up). diff --git a/code/game/objects/effects/semirandom_mobs_vr.dm b/code/game/objects/effects/semirandom_mobs_vr.dm index aaf1452837..9dc2c2e561 100644 --- a/code/game/objects/effects/semirandom_mobs_vr.dm +++ b/code/game/objects/effects/semirandom_mobs_vr.dm @@ -104,7 +104,6 @@ var/global/list/semirandom_mob_spawner_decisions = list() list(/mob/living/simple_mob/animal/sif/siffet), list(/mob/living/simple_mob/animal/sif/tymisian), list( - /mob/living/simple_mob/animal/giant_spider/nurse = 10, /mob/living/simple_mob/animal/giant_spider/electric = 5, /mob/living/simple_mob/animal/giant_spider/frost = 5, /mob/living/simple_mob/animal/giant_spider/hunter = 10, @@ -448,7 +447,6 @@ var/global/list/semirandom_mob_spawner_decisions = list() possible_mob_types = list( list( - /mob/living/simple_mob/animal/giant_spider/nurse = 10, /mob/living/simple_mob/animal/giant_spider/electric = 5, /mob/living/simple_mob/animal/giant_spider/frost = 5, /mob/living/simple_mob/animal/giant_spider/hunter = 10, diff --git a/code/game/objects/effects/spiders.dm b/code/game/objects/effects/spiders.dm index 74ef44f5b1..0d9f6173bc 100644 --- a/code/game/objects/effects/spiders.dm +++ b/code/game/objects/effects/spiders.dm @@ -154,7 +154,7 @@ var/amount_grown = 0 var/obj/machinery/atmospherics/unary/vent_pump/entry_vent var/travelling_in_vent = 0 - var/list/grow_as = list(/mob/living/simple_mob/animal/giant_spider, /mob/living/simple_mob/animal/giant_spider/nurse, /mob/living/simple_mob/animal/giant_spider/hunter) + var/list/grow_as = list(/mob/living/simple_mob/animal/giant_spider, /mob/living/simple_mob/animal/giant_spider/hunter) var/faction = "spiders" var/stunted = FALSE @@ -163,7 +163,7 @@ grow_as = list(/mob/living/simple_mob/animal/giant_spider/frost) /obj/effect/spider/spiderling/varied - grow_as = list(/mob/living/simple_mob/animal/giant_spider, /mob/living/simple_mob/animal/giant_spider/nurse, /mob/living/simple_mob/animal/giant_spider/hunter, + grow_as = list(/mob/living/simple_mob/animal/giant_spider, /mob/living/simple_mob/animal/giant_spider/hunter, /mob/living/simple_mob/animal/giant_spider/frost, /mob/living/simple_mob/animal/giant_spider/electric, /mob/living/simple_mob/animal/giant_spider/lurker, /mob/living/simple_mob/animal/giant_spider/pepper, /mob/living/simple_mob/animal/giant_spider/thermic, /mob/living/simple_mob/animal/giant_spider/tunneler, /mob/living/simple_mob/animal/giant_spider/webslinger, /mob/living/simple_mob/animal/giant_spider/phorogenic, /mob/living/simple_mob/animal/giant_spider/carrier, diff --git a/code/game/objects/items/weapons/capture_crystal.dm b/code/game/objects/items/weapons/capture_crystal.dm index 83dbec328a..450a2c6e39 100644 --- a/code/game/objects/items/weapons/capture_crystal.dm +++ b/code/game/objects/items/weapons/capture_crystal.dm @@ -635,7 +635,6 @@ list(/mob/living/simple_mob/animal/sif/siffet), list(/mob/living/simple_mob/animal/sif/tymisian), list( - /mob/living/simple_mob/animal/giant_spider/nurse = 10, /mob/living/simple_mob/animal/giant_spider/electric = 5, /mob/living/simple_mob/animal/giant_spider/frost = 5, /mob/living/simple_mob/animal/giant_spider/hunter = 10, diff --git a/code/game/objects/random/mob.dm b/code/game/objects/random/mob.dm index be1222aabe..82d828535a 100644 --- a/code/game/objects/random/mob.dm +++ b/code/game/objects/random/mob.dm @@ -132,8 +132,7 @@ mob_wander_distance = 4 /obj/random/mob/spider/item_to_spawn() - return pick(prob(22);/mob/living/simple_mob/animal/giant_spider/nurse, - prob(33);/mob/living/simple_mob/animal/giant_spider/hunter, + return pick(prob(33);/mob/living/simple_mob/animal/giant_spider/hunter, prob(45);/mob/living/simple_mob/animal/giant_spider) /obj/random/mob/spider/nurse diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/broodmother.dm b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/broodmother.dm index 345e315a16..13db1d2584 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/broodmother.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/broodmother.dm @@ -31,7 +31,6 @@ /mob/living/simple_mob/animal/giant_spider/electric/broodling, /mob/living/simple_mob/animal/giant_spider/hunter/broodling, /mob/living/simple_mob/animal/giant_spider/lurker/broodling, - /mob/living/simple_mob/animal/giant_spider/nurse/broodling, /mob/living/simple_mob/animal/giant_spider/pepper/broodling, /mob/living/simple_mob/animal/giant_spider/thermic/broodling, /mob/living/simple_mob/animal/giant_spider/tunneler/broodling, @@ -185,4 +184,4 @@ qdel(src) else - to_chat(user, "You need more space to release the egg!") \ No newline at end of file + to_chat(user, "You need more space to release the egg!") diff --git a/code/modules/xenoarcheaology/artifacts/autocloner.dm b/code/modules/xenoarcheaology/artifacts/autocloner.dm index 03ece599dd..0fdd3ef3f3 100644 --- a/code/modules/xenoarcheaology/artifacts/autocloner.dm +++ b/code/modules/xenoarcheaology/artifacts/autocloner.dm @@ -22,7 +22,6 @@ //33% chance to spawn nasties if(prob(33)) spawn_type = pick( - /mob/living/simple_mob/animal/giant_spider/nurse, /mob/living/simple_mob/animal/space/alien, /mob/living/simple_mob/animal/space/bear, /mob/living/simple_mob/creature, From 9a383923e1129498bbfcff63853efe4004853c32 Mon Sep 17 00:00:00 2001 From: VerySoft Date: Tue, 9 Jan 2024 16:08:17 -0500 Subject: [PATCH 09/39] Put nurse back into the /varied spiderling type --- code/game/objects/effects/spiders.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/effects/spiders.dm b/code/game/objects/effects/spiders.dm index 0d9f6173bc..0923f4341e 100644 --- a/code/game/objects/effects/spiders.dm +++ b/code/game/objects/effects/spiders.dm @@ -163,7 +163,7 @@ grow_as = list(/mob/living/simple_mob/animal/giant_spider/frost) /obj/effect/spider/spiderling/varied - grow_as = list(/mob/living/simple_mob/animal/giant_spider, /mob/living/simple_mob/animal/giant_spider/hunter, + grow_as = list(/mob/living/simple_mob/animal/giant_spider, /mob/living/simple_mob/animal/giant_spider/nurse, /mob/living/simple_mob/animal/giant_spider/hunter, /mob/living/simple_mob/animal/giant_spider/frost, /mob/living/simple_mob/animal/giant_spider/electric, /mob/living/simple_mob/animal/giant_spider/lurker, /mob/living/simple_mob/animal/giant_spider/pepper, /mob/living/simple_mob/animal/giant_spider/thermic, /mob/living/simple_mob/animal/giant_spider/tunneler, /mob/living/simple_mob/animal/giant_spider/webslinger, /mob/living/simple_mob/animal/giant_spider/phorogenic, /mob/living/simple_mob/animal/giant_spider/carrier, From 4300ac3b4d6dfc513451b589de15b9d8e38f7fd7 Mon Sep 17 00:00:00 2001 From: VerySoft Date: Tue, 9 Jan 2024 16:15:13 -0500 Subject: [PATCH 10/39] re add nurse broodling --- .../simple_mob/subtypes/animal/giant_spider/broodmother.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/broodmother.dm b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/broodmother.dm index 13db1d2584..cc5b5d179c 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/broodmother.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/broodmother.dm @@ -31,6 +31,7 @@ /mob/living/simple_mob/animal/giant_spider/electric/broodling, /mob/living/simple_mob/animal/giant_spider/hunter/broodling, /mob/living/simple_mob/animal/giant_spider/lurker/broodling, + /mob/living/simple_mob/animal/giant_spider/nurse/broodling, /mob/living/simple_mob/animal/giant_spider/pepper/broodling, /mob/living/simple_mob/animal/giant_spider/thermic/broodling, /mob/living/simple_mob/animal/giant_spider/tunneler/broodling, From a3626420af8c011a20bad097d4b7a4e7b284a2c0 Mon Sep 17 00:00:00 2001 From: Eli Date: Wed, 10 Jan 2024 19:34:25 +1100 Subject: [PATCH 11/39] Revert "Var added to each simplemob" This reverts commit 8058c51cef12623b3bf682f981cab05a1ce8fbd9. --- code/modules/mob/living/simple_mob/simple_mob_vr.dm | 2 -- .../simple_mob/subtypes/animal/alien animals/catslug.dm | 1 - .../simple_mob/subtypes/animal/alien animals/jellyfish.dm | 1 - .../simple_mob/subtypes/animal/alien animals/skeleton.dm | 1 - .../simple_mob/subtypes/animal/alien animals/space_mouse.dm | 1 - .../simple_mob/subtypes/animal/alien animals/spacewhale.dm | 1 - .../simple_mob/subtypes/animal/alien animals/startreader.dm | 1 - .../simple_mob/subtypes/animal/alien animals/succlet.dm | 1 - .../simple_mob/subtypes/animal/alien animals/teppi.dm | 2 -- .../mob/living/simple_mob/subtypes/animal/space/carp.dm | 1 - .../mob/living/simple_mob/subtypes/animal/squirrel.dm | 1 - code/modules/mob/living/simple_mob/subtypes/vore/bat.dm | 1 - .../mob/living/simple_mob/subtypes/vore/bigdragon.dm | 6 ------ .../mob/living/simple_mob/subtypes/vore/cryptdrake.dm | 1 - code/modules/mob/living/simple_mob/subtypes/vore/lamia.dm | 1 - code/modules/mob/living/simple_mob/subtypes/vore/pakkun.dm | 1 - code/modules/mob/living/simple_mob/subtypes/vore/peasant.dm | 1 - code/modules/mob/living/simple_mob/subtypes/vore/raptor.dm | 1 - code/modules/mob/living/simple_mob/subtypes/vore/scel.dm | 1 - .../living/simple_mob/subtypes/vore/shadekin/shadekin.dm | 2 -- code/modules/mob/living/simple_mob/subtypes/vore/succubi.dm | 1 - code/modules/mob/living/simple_mob/subtypes/vore/vampire.dm | 1 - .../mob/living/simple_mob/subtypes/vore/vore_hostile.dm | 3 --- .../modules/mob/living/simple_mob/subtypes/vore/wolftaur.dm | 1 - code/modules/vore/eating/belly_obj_vr.dm | 2 +- 25 files changed, 1 insertion(+), 35 deletions(-) diff --git a/code/modules/mob/living/simple_mob/simple_mob_vr.dm b/code/modules/mob/living/simple_mob/simple_mob_vr.dm index 69c0ed52d8..47e60e5406 100644 --- a/code/modules/mob/living/simple_mob/simple_mob_vr.dm +++ b/code/modules/mob/living/simple_mob/simple_mob_vr.dm @@ -31,7 +31,6 @@ var/vore_digest_chance = 25 // Chance to switch to digest mode if resisted var/vore_absorb_chance = 0 // Chance to switch to absorb mode if resisted var/vore_escape_chance = 25 // Chance of resisting out of mob - var/vore_escape_chance_absorbed = 20// Chance of absorbed prey finishing an escape. Requires a successful escape roll against the above as well. var/vore_stomach_name // The name for the first belly if not "stomach" var/vore_stomach_flavor // The flavortext for the first belly if not the default @@ -237,7 +236,6 @@ B.contamination_color = vore_default_contamination_color B.escapable = vore_escape_chance > 0 B.escapechance = vore_escape_chance - B.escapechance_absorbed = vore_escape_chance_absorbed B.digestchance = vore_digest_chance B.absorbchance = vore_absorb_chance B.human_prey_swallow_time = swallowTime diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/catslug.dm b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/catslug.dm index ef77df82cc..d203d12949 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/catslug.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/catslug.dm @@ -124,7 +124,6 @@ B.digestchance = 10 B.absorbchance = 1 B.escapechance = 15 - B.escapechance_absorbed = 20 /datum/ai_holder/simple_mob/melee/evasive/catslug hostile = FALSE diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/jellyfish.dm b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/jellyfish.dm index 623c67acf4..1b70b1713d 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/jellyfish.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/jellyfish.dm @@ -95,7 +95,6 @@ GLOBAL_VAR_INIT(jellyfish_count, 0) B.digestchance = 0 B.absorbchance = 0 B.escapechance = 15 - B.escapechance_absorbed = 20 /mob/living/simple_mob/vore/alienanimals/space_jellyfish/apply_melee_effects(var/atom/A) diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/skeleton.dm b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/skeleton.dm index 5e748ac11f..4f1e1efd9d 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/skeleton.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/skeleton.dm @@ -97,7 +97,6 @@ B.digestchance = 10 B.absorbchance = 0 B.escapechance = 25 - B.escapechance_absorbed = 20 /mob/living/simple_mob/vore/alienanimals/skeleton/death(gibbed, deathmessage = "falls down and stops moving...") . = ..() diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/space_mouse.dm b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/space_mouse.dm index 9f84a1ed6f..82bbd33d49 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/space_mouse.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/space_mouse.dm @@ -72,7 +72,6 @@ B.digestchance = 10 B.absorbchance = 0 B.escapechance = 25 - B.escapechance_absorbed = 20 /mob/living/simple_mob/vore/alienanimals/dustjumper/Life() . = ..() diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/spacewhale.dm b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/spacewhale.dm index 2905b1f1b6..65bd18c973 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/spacewhale.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/spacewhale.dm @@ -60,7 +60,6 @@ B.digest_brute = 50 B.digest_burn = 50 B.escapechance = 0 - B.escapechance_absorbed = 20 /mob/living/simple_mob/vore/overmap/spacewhale/Initialize() . = ..() diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/startreader.dm b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/startreader.dm index 340de1ae12..f980220879 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/startreader.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/startreader.dm @@ -102,7 +102,6 @@ B.digestchance = 10 B.absorbchance = 0 B.escapechance = 15 - B.escapechance_absorbed = 20 /datum/ai_holder/simple_mob/melee/startreader hostile = TRUE diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/succlet.dm b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/succlet.dm index c7d75ff470..c5205d5ecd 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/succlet.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/succlet.dm @@ -85,7 +85,6 @@ B.digestchance = 0 B.absorbchance = 0 B.escapechance = 35 - B.escapechance_absorbed = 20 B.selective_preference = DM_ABSORB /mob/living/simple_mob/vore/alienanimals/succlet/checkMoveCooldown() diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/teppi.dm b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/teppi.dm index ec7ffe3d2c..0735d440ba 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/teppi.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/teppi.dm @@ -177,7 +177,6 @@ GLOBAL_VAR_INIT(teppi_count, 0) // How mant teppi DO we have? B.digestchance = 5 B.absorbchance = 1 B.escapechance = 15 - B.escapechance_absorbed = 20 B.emote_lists[DM_DRAIN] = list( "The walls press in heavily over you, holding you tightly and grinding, churning against your body powerfully!! You can feel %pred’s heartbeat through the flesh, pounding in your ears, and the groaning gurgles of the gastric chamber rolling around you, eagerly pressing in against you.", @@ -289,7 +288,6 @@ GLOBAL_VAR_INIT(teppi_count, 0) // How mant teppi DO we have? p.absorbchance = 0 p.escapable = TRUE p.escapechance = 40 - B.escapechance_absorbed = 20 p.digest_mode = DM_HEAL p.name = "propeutpericulum" //I'm no latin professor I just know that some organs and things are based on latin words //and google translate says that each of these individually diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/space/carp.dm b/code/modules/mob/living/simple_mob/subtypes/animal/space/carp.dm index bd754e7127..89cffd64c9 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/space/carp.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/space/carp.dm @@ -157,7 +157,6 @@ B.digestchance = 100 B.absorbchance = 0 B.escapechance = 3 - B.escapechance_absorbed = 20 B.selective_preference = DM_DIGEST B.escape_stun = 10 diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/squirrel.dm b/code/modules/mob/living/simple_mob/subtypes/animal/squirrel.dm index d47e950578..9b62bc7da4 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/squirrel.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/squirrel.dm @@ -77,7 +77,6 @@ B.digest_brute = 1 B.digest_burn = 1 B.escapechance = 35 - B.escapechance_absorbed = 20 if(icon == 'icons/mob/alienanimals_x32.dmi') B.desc = "With a final gulp, the cool air of the outside world is replaced with the incredibly tight, hot, and humid insides of the squirrel. \ diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/bat.dm b/code/modules/mob/living/simple_mob/subtypes/vore/bat.dm index d6f3265e2b..6d6328dfef 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/bat.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/bat.dm @@ -53,7 +53,6 @@ B.digestchance = 25 B.absorbchance = 0 B.escapechance = 15 - B.escapechance_absorbed = 20 B.selective_preference = DM_DRAIN B.escape_stun = 5 diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/bigdragon.dm b/code/modules/mob/living/simple_mob/subtypes/vore/bigdragon.dm index b56d1b56e5..f336a45b86 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/bigdragon.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/bigdragon.dm @@ -563,7 +563,6 @@ I think I covered everything. autotransferwait = 150 escapable = 1 escapechance = 100 - escapechance_absorbed = 20 escapetime = 15 fancy_vore = 1 contamination_color = "grey" @@ -575,7 +574,6 @@ I think I covered everything. name = "Maw" desc = "Seizing it's opportunity, the dragon's jaws swoop in to scoop you up off of your feet, giving you a view down your body of the glistening, red interior. Vicious looking jaws hover above you like a guillotine, threatening to sink down into you, though such a thing never arrives. Seems it has a slower fate in store for you, as it guides your body along the bumpy mattress of it's tongue until the lowermost parts of your body press around the entrance of it's wide, quivering throat. The jaws snap shut, trapping you within, though thankfully clear of snagging your body between them. It's vast tongue coming to life, lifting to cram you against the insides of it's teeth and against the cathedral-roof ridges of it's palate - lathering you in hot, oily drool. It's panting, growled breaths gust from that wide, eye-catching hatch at the back, blasting you with murky breath and airborne spittle, presenting itself as a place to get up close and intimate with very, very soon...." escapechance = 100 - escapechance_absorbed = 20 struggle_messages_inside = list( "You wriggle and wrestle for purchase against the tongue. It lifts, cocooning and squeezing you hard between itself and the palate.", "Reaching out, you try to pry at the beast's interlocked, mighty teeth. A zig-zag crack of light bleeds in to the maw for a moment, presenting you with your current, slimy state, before clicking shut once more.", @@ -601,7 +599,6 @@ I think I covered everything. transferchance = 20 transferlocation = "Maw" escapechance = 0 - escapechance_absorbed = 20 desc = "...And that 'very, very soon' rapidly becomes 'now'. The mighty tongue lifts, having collected enough of your flavor, squelching your lower body up to your chest inside it's hot gullet, giving you an ample view of itself slithering up over your body. You get to watch it quiver and clench with a resounding glllk, around you, the tongue's fat bumpy rear lifting behind your head to displace you down and inside the clinging tunnel. Tight, crushing pressure embraces you with each of those deep, liquid-sounding swallows, inching you down little by little each time. The flesh of the tunnel wraps you tightly, leaving you mostly unable to move, given short moments of respite between each swallow, to listen to the thudding heartbeat and the distant glrrrbles deep below. The hot scent of acidity grows stronger, the deeper you plunge..." struggle_messages_inside = list( "With as much effort as you can muster, you squirm and writhe, trying to swim up the passage of soft flesh. You barely peek out the beast's gullet, before the back of it's tongue squelches into your face, forcing you back down.", @@ -618,7 +615,6 @@ I think I covered everything. name = "Throat." desc = "Giving in to the beast's gentle ministrations, you let yourself get slowly urged forward by the fat tongue, squelched cheek-first against the hot, wet back of it's throat, the gullet guiding you down and inside. Schllorp! You descend into the jelly-like folds of the dragon's quivering gullet, rhythmic periastaltic motions helping to suckle and drag you inside. the last of your body slides off of it's tongue, the rear of that muscle lifting up against the last of you to help squelch you down. Each swallow leaves a little time inbetween, and the pace down the hatch is slow and gentle - you feel like resistance and squirms would defeat this pace and have you slithering back up the way you came." escapechance = 0 - escapechance_absorbed = 20 transferchance = 100 transferlocation = "Maw." digest_mode = DM_HEAL @@ -630,7 +626,6 @@ I think I covered everything. /obj/belly/dragon/stomach name = "Stomach" escapechance = 0 - escapechance_absorbed = 20 transferchance = 10 transferlocation = "Throat" desc = "The final part of your journey arrives, in the form of a tightly squelched, muscular sphincter. Throat pressure crams against you, until abruptly, you find yourself spat into a hot, caustic cauldron of churning doom, the dragon's stomach. After slithering in, the way you entered squelches shut, dissapearing among the folds - impossible for you to find any more. You are trapped, no way out, lounging in a shallow pool of thick sticky juices. endless undulations from thick, pendulous folds of stomach-wall all around continually churn it up into a foamy, bubbling mess, soaking their folds in it to drip in ropes and even shivering sheets of the stuff around you. Clenches gush the digestive slimes all over you from time to time, cradling you in it's noxious embrace. Your ears are filled with such sloppy squelches now, those distant muffled glrrns you heard earlier now sharp, crisp, and thunderous as you nestle in their very source. Settle down for what little time you have left, for your fate rests adding to the powerful beast all around you." @@ -650,7 +645,6 @@ I think I covered everything. name = "Second Stomach" desc = "You've kept yourself surrendered and let the beast get you this far, and now you find yourself squelching into the puffy, pillowy clutches of a rather tight chamber, spat slowly inside from the last portion of the gullet. It's pretty cramped in here, though the sheer squishiness of the walls allows you to stretch yourself out into them. Nothing but doughy texture for inches, even feet, deep into the walls. The chamber secretes a thick, clear slime all over you, the walls churning and lathering every single part of you lovingly in it's embrace. Its incessant, kneading affections seems reminiscent of the digestive processes, yet you feel no tingle from the liquid. To the contrary, any injuries or cuts you have, seem to buzz and heat up on touch with the liquids, closing up and healing over at a visibly rapid pace. This hidden space inside the beast seems to be dedicated to holding and healing things within it! The air, although humid and murky, is very breathable in here, though nearby - very close to you, is the constant squelch and churn of the standard processes of the dragon's digestive system. Seems you are right next door to a place you could of gone to! The path you entered remains visible among the undulating squelch of padded walls, and you feel that it wouldn't be too hard to writhe yourself back up into it's snug embrace." escapechance = 0 - escapechance_absorbed = 20 transferchance = 100 transferlocation = "Throat." digest_mode = DM_HEAL diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/cryptdrake.dm b/code/modules/mob/living/simple_mob/subtypes/vore/cryptdrake.dm index 9a92398c25..cb3ca07957 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/cryptdrake.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/cryptdrake.dm @@ -85,7 +85,6 @@ B.digestchance = 50 B.absorbchance = 0 B.escapechance = 3 - B.escapechance_absorbed = 20 B.escape_stun = 5 B.contamination_color = "grey" B.contamination_flavor = "Wet" diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/lamia.dm b/code/modules/mob/living/simple_mob/subtypes/vore/lamia.dm index 9d48b5f64a..912ae09a09 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/lamia.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/lamia.dm @@ -118,7 +118,6 @@ tail.contamination_color = vore_default_contamination_color tail.escapable = TRUE // needed for transferchance tail.escapechance = 0 // No directly escaping a tail, gotta squirm back out. - tail.escapechance_absorbed = 20 tail.digestchance = vore_tail_digest_chance tail.absorbchance = vore_tail_absorb_chance tail.transferchance = vore_tail_transfer_chance diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/pakkun.dm b/code/modules/mob/living/simple_mob/subtypes/vore/pakkun.dm index a34368d65e..49d3a62835 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/pakkun.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/pakkun.dm @@ -147,7 +147,6 @@ assuming you ever get out at all. For now though, you're stuck as some extra softness padding out a cute little lizard." B.belly_fullscreen = "a_tumby" B.escapechance = 25 - B.escapechance_absorbed = 20 B.absorbchance = 0 B.digestchance = 0 B.digest_mode = DM_SELECT diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/peasant.dm b/code/modules/mob/living/simple_mob/subtypes/vore/peasant.dm index 57020a258b..1bd10e9ee1 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/peasant.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/peasant.dm @@ -67,7 +67,6 @@ B.digestchance = 25 B.absorbchance = 0 B.escapechance = 15 - B.escapechance_absorbed = 20 B.selective_preference = DM_HOLD B.escape_stun = 5 diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/raptor.dm b/code/modules/mob/living/simple_mob/subtypes/vore/raptor.dm index 530b7a1cb7..5adb15f865 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/raptor.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/raptor.dm @@ -97,7 +97,6 @@ B.digestchance = 50 B.absorbchance = 0 B.escapechance = 5 - B.escapechance_absorbed = 20 B.escape_stun = 5 B.contamination_color = "grey" B.contamination_flavor = "Wet" diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/scel.dm b/code/modules/mob/living/simple_mob/subtypes/vore/scel.dm index 6274879b09..deef2f0622 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/scel.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/scel.dm @@ -110,7 +110,6 @@ B.digestchance = 50 B.absorbchance = 0 B.escapechance = 10 - B.escapechance_absorbed = 20 B.escape_stun = 5 B.contamination_color = "grey" B.contamination_flavor = "Wet" diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/shadekin.dm b/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/shadekin.dm index b2508c5f1b..03bd5b35db 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/shadekin.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/shadekin/shadekin.dm @@ -48,7 +48,6 @@ vore_icons = SA_ICON_LIVING swallowTime = 2 SECONDS vore_escape_chance = 25 - vore_escape_chance_absorbed = 20 //None, they stay as their defaults. vore_digest_chance = 0 @@ -152,7 +151,6 @@ B.digest_mode = vore_default_mode B.escapable = vore_escape_chance > 0 B.escapechance = vore_escape_chance - B.escapechance_absorbed = vore_escape_chance_absorbed B.digestchance = vore_digest_chance B.absorbchance = vore_absorb_chance B.human_prey_swallow_time = swallowTime diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/succubi.dm b/code/modules/mob/living/simple_mob/subtypes/vore/succubi.dm index 8d749e0b1c..3b5d4f986d 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/succubi.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/succubi.dm @@ -68,7 +68,6 @@ B.digestchance = 25 B.absorbchance = 0 B.escapechance = 15 - B.escapechance_absorbed = 20 B.selective_preference = DM_DRAIN B.escape_stun = 5 diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/vampire.dm b/code/modules/mob/living/simple_mob/subtypes/vore/vampire.dm index dc5a393399..96a760bd28 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/vampire.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/vampire.dm @@ -67,7 +67,6 @@ B.digestchance = 25 B.absorbchance = 0 B.escapechance = 10 - B.escapechance_absorbed = 20 B.selective_preference = DM_DRAIN B.escape_stun = 5 diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/vore_hostile.dm b/code/modules/mob/living/simple_mob/subtypes/vore/vore_hostile.dm index 7f78adfcc8..d0c3d1c633 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/vore_hostile.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/vore_hostile.dm @@ -82,7 +82,6 @@ B.digestchance = 0 B.absorbchance = 0 B.escapechance = 25 - B.escapechance_absorbed = 20 B.escape_stun = 5 /mob/living/simple_mob/vore/vore_hostile/abyss_lurker/attack_hand(mob/living/user) @@ -201,7 +200,6 @@ B.digestchance = 0 B.absorbchance = 0 B.escapechance = 25 - B.escapechance_absorbed = 20 B.colorization_enabled = TRUE B.belly_fullscreen_color = "#591579" B.escape_stun = 3 @@ -321,7 +319,6 @@ B.digestchance = 0 B.absorbchance = 0 B.escapechance = 10 - B.escapechance_absorbed = 20 B.escapetime = 5 SECONDS B.selective_preference = DM_DIGEST B.escape_stun = 3 diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/wolftaur.dm b/code/modules/mob/living/simple_mob/subtypes/vore/wolftaur.dm index 1681179652..e4e35e837c 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/wolftaur.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/wolftaur.dm @@ -81,7 +81,6 @@ B.digestchance = 100 B.absorbchance = 0 B.escapechance = 5 - B.escapechance_absorbed = 20 B.selective_preference = DM_DIGEST B.escape_stun = 5 diff --git a/code/modules/vore/eating/belly_obj_vr.dm b/code/modules/vore/eating/belly_obj_vr.dm index d79852fd66..66dda5c518 100644 --- a/code/modules/vore/eating/belly_obj_vr.dm +++ b/code/modules/vore/eating/belly_obj_vr.dm @@ -1549,7 +1549,7 @@ to_chat(R, escape_attempt_absorbed_prey_message) to_chat(owner, escape_attempt_absorbed_owner_message) if(do_after(R, escapetime)) - if((escapable || owner.stat) && (R.loc == src) && prob(escapechance_absorbed)) //Does the escape attempt succeed? + if((escapable || owner.stat) && (R.loc == src) && (prob(escapechance_absorbed) || (!owner.ckey && !escapechance_absorbed && prob(20)))) //Does the escape attempt succeed? var/escape_absorbed_owner_message = pick(escape_absorbed_messages_owner) var/escape_absorbed_prey_message = pick(escape_absorbed_messages_prey) var/escape_absorbed_outside_message = pick(escape_absorbed_messages_outside) From 92f49ad6c264e0c949acc5e945f724ee6698a90c Mon Sep 17 00:00:00 2001 From: Eli Date: Wed, 10 Jan 2024 19:35:27 +1100 Subject: [PATCH 12/39] Var added to simplemob base --- code/modules/mob/living/simple_mob/simple_mob_vr.dm | 2 ++ code/modules/vore/eating/belly_obj_vr.dm | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/code/modules/mob/living/simple_mob/simple_mob_vr.dm b/code/modules/mob/living/simple_mob/simple_mob_vr.dm index 47e60e5406..69c0ed52d8 100644 --- a/code/modules/mob/living/simple_mob/simple_mob_vr.dm +++ b/code/modules/mob/living/simple_mob/simple_mob_vr.dm @@ -31,6 +31,7 @@ var/vore_digest_chance = 25 // Chance to switch to digest mode if resisted var/vore_absorb_chance = 0 // Chance to switch to absorb mode if resisted var/vore_escape_chance = 25 // Chance of resisting out of mob + var/vore_escape_chance_absorbed = 20// Chance of absorbed prey finishing an escape. Requires a successful escape roll against the above as well. var/vore_stomach_name // The name for the first belly if not "stomach" var/vore_stomach_flavor // The flavortext for the first belly if not the default @@ -236,6 +237,7 @@ B.contamination_color = vore_default_contamination_color B.escapable = vore_escape_chance > 0 B.escapechance = vore_escape_chance + B.escapechance_absorbed = vore_escape_chance_absorbed B.digestchance = vore_digest_chance B.absorbchance = vore_absorb_chance B.human_prey_swallow_time = swallowTime diff --git a/code/modules/vore/eating/belly_obj_vr.dm b/code/modules/vore/eating/belly_obj_vr.dm index 66dda5c518..d79852fd66 100644 --- a/code/modules/vore/eating/belly_obj_vr.dm +++ b/code/modules/vore/eating/belly_obj_vr.dm @@ -1549,7 +1549,7 @@ to_chat(R, escape_attempt_absorbed_prey_message) to_chat(owner, escape_attempt_absorbed_owner_message) if(do_after(R, escapetime)) - if((escapable || owner.stat) && (R.loc == src) && (prob(escapechance_absorbed) || (!owner.ckey && !escapechance_absorbed && prob(20)))) //Does the escape attempt succeed? + if((escapable || owner.stat) && (R.loc == src) && prob(escapechance_absorbed)) //Does the escape attempt succeed? var/escape_absorbed_owner_message = pick(escape_absorbed_messages_owner) var/escape_absorbed_prey_message = pick(escape_absorbed_messages_prey) var/escape_absorbed_outside_message = pick(escape_absorbed_messages_outside) From 0a0084013f5afbf57d0a5f24dbaf7afb1af5f571 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 11 Jan 2024 04:03:24 +0000 Subject: [PATCH 13/39] Bump follow-redirects from 1.15.3 to 1.15.4 in /tgui Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.15.3 to 1.15.4. - [Release notes](https://github.com/follow-redirects/follow-redirects/releases) - [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.15.3...v1.15.4) --- updated-dependencies: - dependency-name: follow-redirects dependency-type: indirect ... Signed-off-by: dependabot[bot] --- tgui/yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tgui/yarn.lock b/tgui/yarn.lock index 4de2b554c3..7cca293aba 100644 --- a/tgui/yarn.lock +++ b/tgui/yarn.lock @@ -5371,12 +5371,12 @@ __metadata: linkType: hard "follow-redirects@npm:^1.15.0": - version: 1.15.3 - resolution: "follow-redirects@npm:1.15.3" + version: 1.15.4 + resolution: "follow-redirects@npm:1.15.4" peerDependenciesMeta: debug: optional: true - checksum: 584da22ec5420c837bd096559ebfb8fe69d82512d5585004e36a3b4a6ef6d5905780e0c74508c7b72f907d1fa2b7bd339e613859e9c304d0dc96af2027fd0231 + checksum: e178d1deff8b23d5d24ec3f7a94cde6e47d74d0dc649c35fc9857041267c12ec5d44650a0c5597ef83056ada9ea6ca0c30e7c4f97dbf07d035086be9e6a5b7b6 languageName: node linkType: hard From 241ddee15431e78a13f9946b90f1049077be64cd Mon Sep 17 00:00:00 2001 From: Heroman Date: Sun, 14 Jan 2024 07:05:11 +1000 Subject: [PATCH 14/39] Two small fixes --- code/modules/admin/verbs/adminhelp.dm | 2 +- icons/mob/items/lefthand_guns.dmi | Bin 99046 -> 99097 bytes icons/mob/items/righthand_guns.dmi | Bin 103292 -> 103364 bytes vorestation.dme | 2 +- 4 files changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/admin/verbs/adminhelp.dm b/code/modules/admin/verbs/adminhelp.dm index 30dc872bb9..c19d013b84 100644 --- a/code/modules/admin/verbs/adminhelp.dm +++ b/code/modules/admin/verbs/adminhelp.dm @@ -426,7 +426,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new) AddInteraction("[key_name_admin(usr)] is now handling this ticket.") var/query_string = "type=admintake" query_string += "&key=[url_encode(config.chat_webhook_key)]" - query_string += "&admin=[url_encode(key_name_admin(usr))]" + query_string += "&admin=[url_encode(key_name(usr))]" query_string += "&user=[url_encode(key_name(initiator))]" world.Export("[config.chat_webhook_url]?[query_string]") diff --git a/icons/mob/items/lefthand_guns.dmi b/icons/mob/items/lefthand_guns.dmi index 340a1ae9086ada3f468b65680a6a83658c70bcb3..fb65c2b71b8e76621339aa30f77854f525b24c42 100644 GIT binary patch delta 15624 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 delta 15470 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 diff --git a/icons/mob/items/righthand_guns.dmi b/icons/mob/items/righthand_guns.dmi index a3a4f82e72990e03e4a3cdf12208a66e8889a3ae..3b5e6e91bd5204e6d617f8921428f0559fa45af1 100644 GIT binary patch delta 1612 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 Date: Sun, 14 Jan 2024 07:18:49 +1000 Subject: [PATCH 15/39] Revert "Map swap + prep" --- maps/stellar_delight/stellar_delight2.dmm | 1468 +++++++++------------ vorestation.dme | 2 +- 2 files changed, 620 insertions(+), 850 deletions(-) diff --git a/maps/stellar_delight/stellar_delight2.dmm b/maps/stellar_delight/stellar_delight2.dmm index c9bf74678b..f9d20b291c 100644 --- a/maps/stellar_delight/stellar_delight2.dmm +++ b/maps/stellar_delight/stellar_delight2.dmm @@ -488,22 +488,7 @@ /turf/simulated/floor/tiled/eris/white/bluecorner, /area/medical/cmostore) "aY" = ( -/obj/machinery/alarm/angled{ - dir = 4 - }, -/obj/machinery/recharge_station, -/obj/structure/cable/green{ - icon_state = "1-2" - }, -/obj/machinery/light{ - dir = 1 - }, -/obj/structure/sign/christmas/lights{ - dir = 1 - }, -/obj/structure/sign/christmas/lights{ - dir = 8 - }, +/obj/machinery/light, /turf/simulated/floor/tiled/eris/steel/brown_platform, /area/crew_quarters/bar) "aZ" = ( @@ -949,10 +934,11 @@ /turf/simulated/floor/tiled, /area/stellardelight/deck2/fore) "bO" = ( -/obj/structure/table/woodentable, -/obj/structure/sign/christmas/lights{ - dir = 1 +/obj/item/device/radio/intercom{ + dir = 1; + pixel_y = 24 }, +/mob/living/simple_mob/vore/otie/red/chubby/cocoa, /turf/simulated/floor/tiled/eris/steel/brown_platform, /area/crew_quarters/bar) "bP" = ( @@ -1284,23 +1270,9 @@ /turf/simulated/floor/wood, /area/stellardelight/deck2/barbackroom) "cC" = ( -/obj/structure/table/woodentable, -/obj/machinery/computer/security/telescreen/entertainment{ - pixel_y = 30 - }, -/obj/item/weapon/reagent_containers/food/condiment/small/saltshaker{ - pixel_x = -3; - pixel_y = 4 - }, -/obj/item/weapon/reagent_containers/food/condiment/small/peppermill{ - pixel_x = 2; - pixel_y = 7 - }, -/obj/structure/sign/christmas/lights{ - dir = 1 - }, -/turf/simulated/floor/tiled/eris/steel/brown_platform, -/area/crew_quarters/bar) +/obj/structure/flora/pottedplant/decorative, +/turf/simulated/floor/tiled/eris/dark/cargo, +/area/crew_quarters/recreation_area) "cD" = ( /obj/effect/floor_decal/industrial/warning{ dir = 1 @@ -2731,15 +2703,16 @@ /turf/simulated/floor/tiled, /area/stellardelight/deck2/aftport) "fE" = ( -/obj/item/device/radio/intercom{ - dir = 1; - pixel_y = 24 - }, -/obj/structure/sign/christmas/lights{ - dir = 1 - }, -/turf/simulated/floor/tiled/eris/steel/brown_platform, -/area/crew_quarters/bar) +/obj/item/weapon/storage/pill_bottle/dice_nerd, +/obj/item/weapon/storage/pill_bottle/dice, +/obj/item/weapon/storage/dicecup, +/obj/item/weapon/deck/cah, +/obj/item/weapon/deck/cah/black, +/obj/item/weapon/deck/cards, +/obj/item/weapon/deck/cards/casino, +/obj/structure/closet/walllocker_double/misc_civ/north, +/turf/simulated/floor/tiled/eris/dark/cargo, +/area/crew_quarters/recreation_area) "fF" = ( /obj/machinery/atmospherics/pipe/simple/hidden/cyan, /obj/structure/cable/white{ @@ -2827,26 +2800,11 @@ /turf/simulated/floor/tiled/eris/dark/cargo, /area/crew_quarters/recreation_area) "fL" = ( -/obj/structure/table/woodentable, -/obj/machinery/light/floortube{ - dir = 1; - pixel_y = 6 - }, -/obj/machinery/camera/network/civilian, -/obj/item/weapon/reagent_containers/food/condiment/small/saltshaker{ - pixel_x = -3; - pixel_y = 4 - }, -/obj/item/weapon/reagent_containers/food/condiment/small/peppermill{ - pixel_x = 2; - pixel_y = 7 - }, -/obj/item/weapon/material/ashtray/glass, -/obj/structure/sign/christmas/lights{ - dir = 1 - }, -/turf/simulated/floor/tiled/eris/steel/brown_platform, -/area/crew_quarters/bar) +/obj/machinery/atmospherics/unary/vent_pump/on, +/obj/effect/landmark/vermin, +/obj/machinery/station_slot_machine, +/turf/simulated/floor/tiled/eris/dark/cargo, +/area/crew_quarters/recreation_area) "fM" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 8 @@ -3916,16 +3874,14 @@ /turf/simulated/floor/tiled/eris/cafe, /area/crew_quarters/kitchen) "ia" = ( -/obj/item/device/radio/intercom{ - dir = 1; - pixel_y = 24 +/obj/machinery/computer/ship/navigation/telescreen{ + pixel_x = -32; + pixel_y = -32 }, -/obj/structure/sign/christmas/lights{ - dir = 1 - }, -/mob/living/simple_mob/vore/otie/red/chubby/cocoa, -/turf/simulated/floor/tiled/eris/steel/brown_platform, -/area/crew_quarters/bar) +/obj/structure/table/bench/steel, +/obj/effect/landmark/start/entrepreneur, +/turf/simulated/floor/tiled/eris/dark/cargo, +/area/crew_quarters/recreation_area) "ib" = ( /obj/machinery/power/grounding_rod, /obj/structure/cable/yellow{ @@ -3982,21 +3938,14 @@ /turf/simulated/floor/tiled, /area/hydroponics) "ij" = ( -/obj/machinery/disposal/wall{ - dir = 8 +/obj/machinery/computer/ship/navigation/telescreen{ + pixel_x = 32; + pixel_y = -32 }, -/obj/structure/disposalpipe/trunk{ - dir = 2 - }, -/obj/machinery/firealarm/angled, -/obj/structure/sign/christmas/lights{ - dir = 1 - }, -/obj/structure/sign/christmas/lights{ - dir = 4 - }, -/turf/simulated/floor/tiled/eris/steel/brown_platform, -/area/crew_quarters/bar) +/obj/structure/table/bench/steel, +/obj/effect/landmark/start/visitor, +/turf/simulated/floor/tiled/eris/dark/cargo, +/area/crew_quarters/recreation_area) "ik" = ( /obj/effect/floor_decal/corner_steel_grid{ dir = 10 @@ -4049,15 +3998,6 @@ /obj/structure/low_wall/bay/reinforced/white, /turf/simulated/floor, /area/medical/psych) -"iq" = ( -/obj/structure/noticeboard{ - pixel_y = 32 - }, -/obj/structure/sign/christmas/lights{ - dir = 1 - }, -/turf/simulated/floor/tiled/eris/steel/brown_platform, -/area/crew_quarters/bar) "ir" = ( /obj/structure/cable/green{ icon_state = "1-2" @@ -4100,15 +4040,12 @@ /turf/simulated/floor/tiled/eris/dark/orangecorner, /area/engineering/locker_room) "ix" = ( -/obj/machinery/media/jukebox, -/obj/machinery/light{ +/obj/structure/bed/chair/sofa/corp{ dir = 1 }, -/obj/structure/sign/christmas/lights{ - dir = 1 - }, -/turf/simulated/floor/tiled/eris/steel/brown_platform, -/area/crew_quarters/bar) +/obj/effect/landmark/start/visitor, +/turf/simulated/floor/carpet/turcarpet, +/area/crew_quarters/recreation_area) "iy" = ( /obj/machinery/atm{ pixel_y = 30 @@ -4241,19 +4178,6 @@ }, /turf/simulated/floor, /area/stellardelight/deck2/starboardescape) -"iM" = ( -/obj/structure/table/woodentable, -/obj/structure/cable/green{ - icon_state = "1-2" - }, -/obj/machinery/recharger{ - pixel_y = 5 - }, -/obj/structure/sign/christmas/lights{ - dir = 1 - }, -/turf/simulated/floor/tiled/eris/steel/brown_platform, -/area/crew_quarters/bar) "iN" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/airlock/angled_bay/standard/glass{ @@ -4350,15 +4274,14 @@ /turf/simulated/floor/tiled/eris/white/bluecorner, /area/stellardelight/deck2/triage) "iX" = ( -/obj/structure/table/woodentable, -/obj/random/paicard, -/obj/structure/sign/christmas/lights{ - dir = 1 +/obj/machinery/door/firedoor/glass, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/door/airlock/angled_bay/standard/glass{ + door_color = "#9c9c9c"; + name = "Bar"; + stripe_color = "#89bd66" }, -/obj/structure/sign/christmas/lights{ - dir = 4 - }, -/turf/simulated/floor/tiled/eris/steel/brown_platform, +/turf/simulated/floor/tiled/steel_ridged, /area/crew_quarters/bar) "iY" = ( /obj/structure/cable/green{ @@ -4377,27 +4300,6 @@ }, /turf/simulated/floor/tiled/techmaint, /area/engineering/atmos/monitoring) -"jb" = ( -/obj/machinery/power/apc/angled{ - dir = 4 - }, -/obj/structure/cable/green{ - icon_state = "0-8" - }, -/obj/structure/cable/green{ - icon_state = "2-8" - }, -/obj/machinery/status_display{ - pixel_y = 32 - }, -/obj/structure/sign/christmas/lights{ - dir = 4 - }, -/obj/structure/sign/christmas/lights{ - dir = 1 - }, -/turf/simulated/floor/tiled/eris/steel/brown_platform, -/area/crew_quarters/bar) "jc" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/tiled/eris/white/bluecorner, @@ -4416,21 +4318,6 @@ }, /turf/simulated/floor/tiled, /area/stellardelight/deck2/port) -"je" = ( -/obj/effect/floor_decal/spline/plain{ - dir = 1 - }, -/obj/structure/cable/green{ - icon_state = "1-2" - }, -/obj/machinery/vending/wallmed1/public{ - pixel_x = 29 - }, -/obj/structure/sign/christmas/lights{ - dir = 4 - }, -/turf/simulated/floor/lino, -/area/crew_quarters/bar) "jf" = ( /obj/structure/table/reinforced, /obj/item/weapon/reagent_containers/glass/beaker/large, @@ -4447,22 +4334,6 @@ /obj/random/tech_supply, /turf/simulated/floor/tiled/eris/dark/orangecorner, /area/engineering/engine_eva) -"jh" = ( -/obj/machinery/door/window/brigdoor/northleft{ - name = "Bar"; - req_access = list(25) - }, -/obj/machinery/light{ - dir = 4 - }, -/obj/structure/cable/green{ - icon_state = "1-2" - }, -/obj/structure/sign/christmas/lights{ - dir = 4 - }, -/turf/simulated/floor/lino, -/area/crew_quarters/bar) "ji" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -4501,36 +4372,6 @@ }, /turf/simulated/floor/tiled, /area/stellardelight/deck2/starboard) -"jl" = ( -/obj/machinery/button/remote/blast_door{ - dir = 8; - id = "bar"; - name = "Bar Shutter Control"; - pixel_x = 24 - }, -/obj/structure/table/marble, -/obj/item/weapon/reagent_containers/glass/rag, -/obj/item/weapon/reagent_containers/food/drinks/shaker{ - pixel_x = -7; - pixel_y = 11 - }, -/obj/machinery/light_switch{ - dir = 8; - pixel_x = 26; - pixel_y = -9 - }, -/obj/machinery/button/remote/blast_door{ - dir = 8; - id = "barlockdown"; - name = "Window Lockdown"; - pixel_x = 24; - pixel_y = 10 - }, -/obj/structure/sign/christmas/lights{ - dir = 4 - }, -/turf/simulated/floor/lino, -/area/crew_quarters/bar) "jm" = ( /obj/structure/table/reinforced, /obj/item/device/gps/engineering{ @@ -4601,13 +4442,6 @@ }, /turf/simulated/floor/tiled, /area/stellardelight/deck2/aftport) -"ju" = ( -/obj/item/weapon/stool/padded{ - dir = 8 - }, -/obj/structure/sign/christmas/lights, -/turf/simulated/floor/tiled/eris/steel/brown_platform, -/area/crew_quarters/bar) "jv" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 10 @@ -4735,13 +4569,6 @@ /obj/item/weapon/pen, /turf/simulated/floor/tiled/eris/white/bluecorner, /area/medical/reception) -"jH" = ( -/obj/machinery/camera/network/civilian{ - dir = 1 - }, -/obj/structure/sign/christmas/lights, -/turf/simulated/floor/tiled/eris/steel/brown_platform, -/area/crew_quarters/bar) "jI" = ( /obj/structure/table/woodentable, /obj/structure/plushie/ian{ @@ -4806,10 +4633,6 @@ "jQ" = ( /turf/simulated/floor/reinforced, /area/quartermaster/storage) -"jR" = ( -/obj/structure/sign/christmas/lights, -/turf/simulated/floor/tiled/eris/steel/brown_platform, -/area/crew_quarters/bar) "jS" = ( /obj/structure/cable{ icon_state = "1-8" @@ -4990,10 +4813,13 @@ /turf/simulated/floor/tiled/eris/white/bluecorner, /area/medical/cmostore) "kl" = ( -/obj/machinery/light, -/obj/structure/sign/christmas/lights, -/turf/simulated/floor/tiled/eris/steel/brown_platform, -/area/crew_quarters/bar) +/obj/structure/window/reinforced{ + dir = 8; + pixel_x = -4 + }, +/obj/structure/flora/pottedplant/decorative, +/turf/simulated/floor/glass/reinforced, +/area/stellardelight/deck2/fore) "km" = ( /obj/machinery/atmospherics/pipe/simple/hidden/green, /obj/structure/cable/orange{ @@ -5028,13 +4854,16 @@ /turf/simulated/floor/tiled/eris/white/bluecorner, /area/medical/cmostore) "kp" = ( -/obj/machinery/computer/ship/navigation/telescreen{ - pixel_y = -32 +/obj/structure/window/reinforced{ + dir = 1; + pixel_y = 4 }, -/obj/structure/sign/christmas/lights, -/obj/structure/flora/pottedplant/xmas, -/turf/simulated/floor/tiled/eris/steel/brown_platform, -/area/crew_quarters/bar) +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/tiled/eris/dark/cargo, +/area/crew_quarters/recreation_area) "kq" = ( /obj/structure/closet/secure_closet/cargotech, /obj/item/weapon/stamp/cargo, @@ -5096,15 +4925,10 @@ /turf/simulated/open, /area/stellardelight/deck2/aftport) "ku" = ( -/obj/item/weapon/stool/padded{ - dir = 4 +/obj/machinery/computer/ship/navigation/telescreen{ + pixel_y = -32 }, -/obj/effect/floor_decal/spline/plain{ - dir = 8 - }, -/obj/machinery/light, -/obj/structure/sign/christmas/lights, -/turf/simulated/floor/lino, +/turf/simulated/floor/tiled/eris/steel/brown_platform, /area/crew_quarters/bar) "kv" = ( /obj/machinery/alarm/angled{ @@ -5118,17 +4942,6 @@ }, /turf/simulated/floor/tiled, /area/stellardelight/deck2/aftstarboard) -"kw" = ( -/obj/structure/table/marble, -/obj/machinery/door/blast/shutters{ - dir = 8; - id = "bar"; - layer = 3.3; - name = "Bar Shutters" - }, -/obj/structure/sign/christmas/lights, -/turf/simulated/floor/lino, -/area/crew_quarters/bar) "kx" = ( /obj/structure/disposalpipe/sortjunction/wildcard/flipped{ dir = 1 @@ -5375,10 +5188,6 @@ }, /turf/simulated/floor/tiled/steel_ridged, /area/engineering/engine_eva) -"kU" = ( -/obj/structure/sign/christmas/lights, -/turf/simulated/floor/lino, -/area/crew_quarters/bar) "kV" = ( /obj/machinery/door/firedoor/glass/hidden/steel{ dir = 8 @@ -5429,11 +5238,6 @@ }, /turf/simulated/floor/tiled/techfloor, /area/engineering/atmos/monitoring) -"lb" = ( -/obj/machinery/vending/boozeomat, -/obj/structure/sign/christmas/lights, -/turf/simulated/floor/lino, -/area/crew_quarters/bar) "lc" = ( /obj/structure/cable/white{ icon_state = "4-8" @@ -5584,11 +5388,6 @@ }, /turf/simulated/floor/tiled/eris/dark/monofloor, /area/bridge) -"lp" = ( -/obj/machinery/smartfridge/drinks, -/obj/structure/sign/christmas/lights, -/turf/simulated/floor/lino, -/area/crew_quarters/bar) "lq" = ( /obj/structure/sign/securearea{ desc = "A warning sign which reads 'RADIOACTIVE AREA'"; @@ -5749,18 +5548,6 @@ }, /turf/simulated/floor/tiled/eris/dark/gray_platform, /area/bridge) -"lE" = ( -/obj/structure/table/marble, -/obj/machinery/chemical_dispenser/bar_coffee/full{ - dir = 1 - }, -/obj/item/device/radio/intercom{ - pixel_y = -24 - }, -/obj/machinery/light/small, -/obj/structure/sign/christmas/lights, -/turf/simulated/floor/lino, -/area/crew_quarters/bar) "lF" = ( /obj/effect/landmark{ name = "lightsout" @@ -5768,36 +5555,15 @@ /turf/simulated/floor, /area/stellardelight/deck2/combustionworkshop) "lG" = ( -/obj/structure/table/marble, -/obj/machinery/chemical_dispenser/bar_soft/full{ - dir = 1 - }, -/obj/machinery/requests_console{ - department = "Service"; - dir = 1; - pixel_y = -26 - }, -/obj/machinery/atmospherics/unary/vent_pump/on{ - dir = 1 - }, -/obj/effect/landmark/vermin, -/obj/structure/sign/christmas/lights, -/turf/simulated/floor/lino, -/area/crew_quarters/bar) -"lH" = ( -/obj/structure/table/marble, -/obj/machinery/chemical_dispenser/bar_alc/full{ - dir = 1 - }, -/obj/machinery/camera/network/civilian{ +/obj/structure/bed/chair/sofa/corp/right{ dir = 8 }, -/obj/structure/sign/christmas/lights, -/obj/structure/sign/christmas/lights{ +/obj/machinery/light{ dir = 4 }, -/turf/simulated/floor/lino, -/area/crew_quarters/bar) +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/carpet/turcarpet, +/area/crew_quarters/recreation_area) "lI" = ( /obj/structure/table/steel_reinforced, /obj/machinery/door/window/westleft{ @@ -6049,17 +5815,6 @@ }, /turf/simulated/floor/tiled, /area/stellardelight/deck2/port) -"mc" = ( -/obj/machinery/door/firedoor/glass, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/door/airlock/angled_bay/standard/glass{ - door_color = "#9c9c9c"; - name = "Bar"; - stripe_color = "#89bd66" - }, -/obj/structure/sign/christmas/wreath, -/turf/simulated/floor/tiled/steel_ridged, -/area/crew_quarters/bar) "md" = ( /obj/effect/floor_decal/industrial/outline, /obj/effect/floor_decal/steeldecal/steel_decals9, @@ -6151,18 +5906,7 @@ /turf/simulated/floor/tiled, /area/stellardelight/deck2/starboard) "mn" = ( -/obj/machinery/door/firedoor/glass, -/obj/structure/cable/green{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/door/airlock/angled_bay/standard/glass{ - door_color = "#9c9c9c"; - name = "Bar"; - stripe_color = "#89bd66" - }, -/obj/structure/sign/christmas/wreath, -/turf/simulated/floor/tiled/steel_ridged, +/turf/simulated/floor/lino, /area/crew_quarters/bar) "mo" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -6173,20 +5917,6 @@ }, /turf/simulated/floor/tiled/eris/white/bluecorner, /area/medical/reception) -"mp" = ( -/obj/machinery/door/firedoor/glass, -/obj/structure/cable/green{ - icon_state = "1-2" - }, -/obj/machinery/door/airlock/angled_bay/standard/glass{ - door_color = "#9c9c9c"; - fill_color = null; - name = "Commons"; - stripe_color = "#89bd66" - }, -/obj/structure/sign/christmas/wreath, -/turf/simulated/floor/tiled/steel_ridged, -/area/crew_quarters/recreation_area) "mq" = ( /obj/machinery/atmospherics/unary/engine/bigger{ dir = 1 @@ -6249,17 +5979,6 @@ /obj/machinery/portable_atmospherics/canister/nitrogen, /turf/simulated/floor/tiled/techfloor, /area/engineering/atmos/monitoring) -"my" = ( -/obj/machinery/door/firedoor/glass, -/obj/machinery/door/airlock/angled_bay/standard/glass{ - door_color = "#9c9c9c"; - fill_color = null; - name = "Commons"; - stripe_color = "#89bd66" - }, -/obj/structure/sign/christmas/wreath, -/turf/simulated/floor/tiled/steel_ridged, -/area/crew_quarters/recreation_area) "mz" = ( /obj/machinery/portable_atmospherics/hydroponics, /obj/effect/floor_decal/milspec/color/green/half{ @@ -6368,16 +6087,10 @@ /turf/simulated/wall/bay/r_wall/steel, /area/maintenance/stellardelight/deck2/atmos) "mJ" = ( -/obj/machinery/computer/arcade/orion_trail, -/obj/machinery/atmospherics/unary/vent_scrubber/on, -/obj/structure/sign/christmas/lights{ - dir = 8 - }, -/obj/structure/sign/christmas/lights{ - dir = 1 - }, -/turf/simulated/floor/tiled/eris/dark/cargo, -/area/crew_quarters/recreation_area) +/obj/structure/table/woodentable, +/obj/random/paicard, +/turf/simulated/floor/tiled/eris/steel/brown_platform, +/area/crew_quarters/bar) "mK" = ( /obj/machinery/door/firedoor/glass, /obj/structure/cable/white{ @@ -6399,11 +6112,11 @@ /turf/simulated/floor/tiled/steel_ridged, /area/medical/surgery2) "mL" = ( -/obj/machinery/computer/arcade/battle, -/obj/structure/sign/christmas/lights{ +/obj/structure/flora/pottedplant/small, +/obj/machinery/camera/network/civilian{ dir = 1 }, -/turf/simulated/floor/tiled/eris/dark/cargo, +/turf/simulated/floor/tiled/dark, /area/crew_quarters/recreation_area) "mM" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -6472,15 +6185,13 @@ /turf/simulated/wall/bay/steel, /area/storage/art) "mU" = ( -/obj/machinery/status_display{ - pixel_y = 32 - }, -/obj/structure/closet/crate/bin{ - anchored = 1 - }, -/obj/structure/sign/christmas/lights{ +/obj/item/weapon/stool/padded{ dir = 1 }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/camera/network/civilian{ + dir = 8 + }, /turf/simulated/floor/tiled/eris/dark/cargo, /area/crew_quarters/recreation_area) "mV" = ( @@ -6560,22 +6271,9 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled/eris/dark/orangecorner, /area/engineering/engine_eva) -"nc" = ( -/obj/machinery/alarm/angled, -/obj/structure/sign/christmas/lights{ - dir = 1 - }, -/turf/simulated/floor/tiled/eris/dark/cargo, -/area/crew_quarters/recreation_area) "nd" = ( /turf/simulated/wall/bay/white, /area/medical/surgery2) -"ne" = ( -/obj/structure/sign/christmas/lights{ - dir = 1 - }, -/turf/simulated/floor/tiled/eris/dark/cargo, -/area/crew_quarters/recreation_area) "nf" = ( /obj/machinery/firealarm/angled{ dir = 4 @@ -6594,15 +6292,6 @@ /obj/machinery/hologram/holopad, /turf/simulated/floor/tiled/eris/dark/danger, /area/engineering/engine_room) -"nh" = ( -/obj/machinery/light{ - dir = 1 - }, -/obj/structure/sign/christmas/lights{ - dir = 1 - }, -/turf/simulated/floor/tiled/eris/dark/cargo, -/area/crew_quarters/recreation_area) "ni" = ( /turf/simulated/wall/bay/r_wall/steel, /area/engineering/engine_room) @@ -6616,38 +6305,6 @@ /obj/effect/floor_decal/steeldecal/steel_decals10, /turf/simulated/floor/tiled/eris/white/cargo, /area/stellardelight/deck2/triage) -"nk" = ( -/obj/machinery/power/apc/angled{ - dir = 1; - name = "night shift APC"; - nightshift_setting = 2 - }, -/obj/structure/cable/green{ - icon_state = "0-8" - }, -/obj/machinery/light_switch{ - pixel_x = 9; - pixel_y = 24 - }, -/obj/structure/sign/christmas/lights{ - dir = 1 - }, -/turf/simulated/floor/tiled/eris/dark/cargo, -/area/crew_quarters/recreation_area) -"nl" = ( -/obj/item/weapon/storage/pill_bottle/dice_nerd, -/obj/item/weapon/storage/pill_bottle/dice, -/obj/item/weapon/storage/dicecup, -/obj/item/weapon/deck/cah, -/obj/item/weapon/deck/cah/black, -/obj/item/weapon/deck/cards, -/obj/item/weapon/deck/cards/casino, -/obj/structure/closet/walllocker_double/misc_civ/north, -/obj/structure/sign/christmas/lights{ - dir = 1 - }, -/turf/simulated/floor/tiled/eris/dark/cargo, -/area/crew_quarters/recreation_area) "nm" = ( /obj/effect/floor_decal/industrial/warning/corner{ dir = 1 @@ -6658,13 +6315,6 @@ }, /turf/simulated/floor/tiled/eris/steel/cargo, /area/quartermaster/storage) -"nn" = ( -/obj/machinery/firealarm/angled, -/obj/structure/sign/christmas/lights{ - dir = 1 - }, -/turf/simulated/floor/tiled/eris/dark/cargo, -/area/crew_quarters/recreation_area) "no" = ( /obj/structure/cable{ icon_state = "1-2" @@ -6903,15 +6553,21 @@ /turf/simulated/floor/airless, /area/stellardelight/deck2/exterior) "nQ" = ( -/obj/machinery/status_display{ - pixel_y = 32 - }, -/obj/machinery/recharge_station, -/obj/structure/sign/christmas/lights{ +/obj/structure/table/marble, +/obj/machinery/chemical_dispenser/bar_soft/full{ dir = 1 }, -/turf/simulated/floor/tiled/eris/dark/cargo, -/area/crew_quarters/recreation_area) +/obj/machinery/requests_console{ + department = "Service"; + dir = 1; + pixel_y = -26 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/obj/effect/landmark/vermin, +/turf/simulated/floor/lino, +/area/crew_quarters/bar) "nR" = ( /obj/machinery/atmospherics/pipe/simple/hidden/red{ dir = 6 @@ -6985,13 +6641,6 @@ }, /turf/simulated/floor/tiled, /area/stellardelight/deck2/aftport) -"nY" = ( -/obj/machinery/computer/arcade/clawmachine, -/obj/structure/sign/christmas/lights{ - dir = 1 - }, -/turf/simulated/floor/tiled/eris/dark/cargo, -/area/crew_quarters/recreation_area) "nZ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/cyan{ dir = 4 @@ -7151,18 +6800,6 @@ }, /turf/simulated/floor/tiled/techfloor, /area/engineering/atmos/monitoring) -"or" = ( -/obj/machinery/atmospherics/unary/vent_pump/on, -/obj/effect/landmark/vermin, -/obj/machinery/station_slot_machine, -/obj/structure/sign/christmas/lights{ - dir = 1 - }, -/obj/structure/sign/christmas/lights{ - dir = 4 - }, -/turf/simulated/floor/tiled/eris/dark/cargo, -/area/crew_quarters/recreation_area) "os" = ( /obj/machinery/door/firedoor/glass/hidden/steel{ dir = 8 @@ -7337,19 +6974,6 @@ }, /turf/simulated/floor/tiled/steel_ridged, /area/storage/art) -"oN" = ( -/obj/item/weapon/stool/padded{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/machinery/camera/network/civilian{ - dir = 5 - }, -/obj/structure/sign/christmas/lights{ - dir = 8 - }, -/turf/simulated/floor/tiled/eris/dark/cargo, -/area/crew_quarters/recreation_area) "oO" = ( /obj/machinery/chem_master/condimaster, /turf/simulated/floor/tiled/eris/cafe, @@ -7399,19 +7023,6 @@ }, /turf/simulated/floor/tiled/eris/dark/gray_platform, /area/engineering/workshop) -"oW" = ( -/obj/item/weapon/stool/padded{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/machinery/camera/network/civilian{ - dir = 8 - }, -/obj/structure/sign/christmas/lights{ - dir = 4 - }, -/turf/simulated/floor/tiled/eris/dark/cargo, -/area/crew_quarters/recreation_area) "oX" = ( /obj/machinery/atmospherics/pipe/manifold4w/hidden, /turf/simulated/floor/tiled/eris/dark/orangecorner, @@ -7522,18 +7133,6 @@ }, /turf/simulated/floor, /area/maintenance/stellardelight/deck2/starboardaft) -"pi" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/item/device/radio/intercom{ - dir = 8; - pixel_x = -24 - }, -/obj/structure/sign/christmas/lights{ - dir = 8 - }, -/obj/structure/flora/pottedplant/xmas, -/turf/simulated/floor/tiled/eris/dark/cargo, -/area/crew_quarters/recreation_area) "pj" = ( /obj/machinery/light/small{ dir = 8 @@ -7569,15 +7168,19 @@ }, /turf/simulated/floor/tiled/eris/steel/brown_platform, /area/quartermaster/storage) -"pm" = ( -/obj/structure/flora/pottedplant/xmas, -/turf/simulated/floor/tiled/eris/dark/cargo, -/area/crew_quarters/recreation_area) "pn" = ( -/obj/structure/table/gamblingtable, -/obj/item/toy/xmastree, -/turf/simulated/floor/carpet, -/area/crew_quarters/recreation_area) +/obj/machinery/alarm/angled{ + dir = 4 + }, +/obj/machinery/recharge_station, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/tiled/eris/steel/brown_platform, +/area/crew_quarters/bar) "po" = ( /obj/machinery/door/firedoor/glass/hidden/steel{ dir = 2 @@ -7619,23 +7222,6 @@ /obj/structure/closet/emcloset, /turf/simulated/floor/tiled/eris/white/danger, /area/stellardelight/deck2/port) -"ps" = ( -/obj/structure/table/gamblingtable, -/obj/item/weapon/toy/xmas_cracker, -/turf/simulated/floor/carpet, -/area/crew_quarters/recreation_area) -"pt" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/item/device/radio/intercom{ - dir = 4; - pixel_x = 24 - }, -/obj/structure/sign/christmas/lights{ - dir = 4 - }, -/obj/structure/flora/pottedplant/xmas, -/turf/simulated/floor/tiled/eris/dark/cargo, -/area/crew_quarters/recreation_area) "pu" = ( /obj/effect/floor_decal/industrial/warning{ dir = 8 @@ -7703,34 +7289,6 @@ /obj/effect/floor_decal/industrial/warning, /turf/simulated/floor/tiled/eris/steel/cargo, /area/quartermaster/storage) -"pE" = ( -/obj/structure/window/reinforced{ - dir = 1; - pixel_y = 4 - }, -/obj/machinery/light{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/sign/christmas/lights{ - dir = 8 - }, -/turf/simulated/floor/tiled/eris/dark/cargo, -/area/crew_quarters/recreation_area) -"pF" = ( -/obj/structure/window/reinforced{ - dir = 1; - pixel_y = 4 - }, -/obj/machinery/light{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/sign/christmas/lights{ - dir = 4 - }, -/turf/simulated/floor/tiled/eris/dark/cargo, -/area/crew_quarters/recreation_area) "pG" = ( /obj/structure/cable/green{ icon_state = "4-8" @@ -7907,14 +7465,12 @@ /turf/simulated/floor/tiled, /area/crew_quarters/locker) "pW" = ( -/obj/structure/table/gamblingtable, -/obj/machinery/light/floortube{ - pixel_y = -6 +/obj/machinery/media/jukebox, +/obj/machinery/light{ + dir = 1 }, -/obj/item/weapon/material/ashtray/glass, -/obj/item/weapon/toy/xmas_cracker, -/turf/simulated/floor/carpet, -/area/crew_quarters/recreation_area) +/turf/simulated/floor/tiled/eris/steel/brown_platform, +/area/crew_quarters/bar) "pX" = ( /obj/machinery/portable_atmospherics/hydroponics, /obj/effect/floor_decal/milspec/color/green/half{ @@ -7970,18 +7526,6 @@ }, /turf/simulated/floor/tiled, /area/stellardelight/deck2/aftport) -"qc" = ( -/obj/machinery/computer/ship/navigation/telescreen{ - pixel_x = -32; - pixel_y = -32 - }, -/obj/structure/table/bench/steel, -/obj/effect/landmark/start/entrepreneur, -/obj/structure/sign/christmas/lights{ - dir = 8 - }, -/turf/simulated/floor/tiled/eris/dark/cargo, -/area/crew_quarters/recreation_area) "qd" = ( /obj/item/device/radio/intercom{ dir = 1; @@ -8229,18 +7773,6 @@ /obj/machinery/camera/network/engineering, /turf/simulated/floor/tiled/eris/dark/techfloor_grid, /area/storage/tech) -"qB" = ( -/obj/machinery/computer/ship/navigation/telescreen{ - pixel_x = 32; - pixel_y = -32 - }, -/obj/structure/table/bench/steel, -/obj/effect/landmark/start/visitor, -/obj/structure/sign/christmas/lights{ - dir = 4 - }, -/turf/simulated/floor/tiled/eris/dark/cargo, -/area/crew_quarters/recreation_area) "qC" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/airlock/angled_bay/double{ @@ -8262,15 +7794,6 @@ }, /turf/simulated/floor/tiled, /area/stellardelight/deck2/aftstarboard) -"qE" = ( -/obj/structure/table/wooden_reinforced, -/obj/random/paicard, -/obj/structure/sign/christmas/lights{ - dir = 8 - }, -/obj/structure/sign/christmas/lights, -/turf/simulated/floor/tiled/eris/dark/cargo, -/area/crew_quarters/recreation_area) "qF" = ( /obj/machinery/atmospherics/portables_connector{ dir = 1 @@ -8311,13 +7834,6 @@ }, /turf/simulated/floor/tiled/eris/dark/techfloor_grid, /area/engineering/engine_room) -"qK" = ( -/obj/structure/musician/piano{ - dir = 4 - }, -/obj/structure/sign/christmas/lights, -/turf/simulated/floor/tiled/eris/dark/cargo, -/area/crew_quarters/recreation_area) "qL" = ( /obj/machinery/atmospherics/portables_connector{ dir = 1 @@ -8358,20 +7874,16 @@ /obj/machinery/smartfridge/chemistry, /turf/simulated/floor/plating, /area/medical/chemistry) -"qR" = ( +"qS" = ( /obj/item/weapon/stool/padded{ + dir = 4 + }, +/obj/effect/floor_decal/spline/plain{ dir = 8 }, -/obj/structure/sign/christmas/lights, -/turf/simulated/floor/tiled/eris/dark/cargo, -/area/crew_quarters/recreation_area) -"qS" = ( -/obj/effect/landmark{ - name = "lightsout" - }, -/obj/structure/flora/tree/pine/xmas/presents, -/turf/simulated/floor/glass/reinforced, -/area/crew_quarters/recreation_area) +/obj/machinery/light, +/turf/simulated/floor/lino, +/area/crew_quarters/bar) "qT" = ( /obj/structure/lattice, /obj/structure/railing/grey{ @@ -8388,10 +7900,6 @@ }, /turf/simulated/floor, /area/stellardelight/deck2/aftport) -"qU" = ( -/obj/structure/sign/christmas/lights, -/turf/simulated/floor/tiled/eris/dark/cargo, -/area/crew_quarters/recreation_area) "qV" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -8514,18 +8022,11 @@ /obj/effect/landmark/start/cargo, /turf/simulated/floor/tiled/eris/steel/cargo, /area/quartermaster/storage) -"rf" = ( -/obj/structure/table/wooden_reinforced, -/obj/structure/sign/christmas/lights, -/turf/simulated/floor/tiled/eris/dark/cargo, -/area/crew_quarters/recreation_area) "rg" = ( -/obj/structure/table/wooden_reinforced, -/obj/structure/sign/christmas/lights{ - dir = 4 +/obj/structure/bed/chair/sofa/corp/corner{ + dir = 8 }, -/obj/structure/sign/christmas/lights, -/turf/simulated/floor/tiled/eris/dark/cargo, +/turf/simulated/floor/carpet/turcarpet, /area/crew_quarters/recreation_area) "rh" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -8593,13 +8094,6 @@ }, /turf/simulated/floor/tiled/eris/cafe, /area/crew_quarters/kitchen) -"ro" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/sign/christmas/lights{ - dir = 8 - }, -/turf/simulated/floor/tiled/eris/dark/cargo, -/area/crew_quarters/recreation_area) "rp" = ( /obj/structure/cable/cyan{ icon_state = "1-2" @@ -8739,13 +8233,6 @@ }, /turf/simulated/floor/tiled, /area/crew_quarters/locker) -"rA" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/sign/christmas/lights{ - dir = 4 - }, -/turf/simulated/floor/tiled/eris/dark/cargo, -/area/crew_quarters/recreation_area) "rB" = ( /obj/structure/particle_accelerator/particle_emitter/right{ dir = 4 @@ -8813,17 +8300,6 @@ }, /turf/simulated/floor/tiled, /area/crew_quarters/locker) -"rJ" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/item/device/radio/intercom{ - dir = 8; - pixel_x = -24 - }, -/obj/structure/sign/christmas/lights{ - dir = 8 - }, -/turf/simulated/floor/carpet/turcarpet, -/area/crew_quarters/recreation_area) "rK" = ( /obj/structure/cable{ icon_state = "1-2" @@ -8831,17 +8307,6 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled/eris/steel/cargo, /area/quartermaster/storage) -"rL" = ( -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/item/device/radio/intercom{ - dir = 4; - pixel_x = 24 - }, -/obj/structure/sign/christmas/lights{ - dir = 4 - }, -/turf/simulated/floor/carpet/turcarpet, -/area/crew_quarters/recreation_area) "rM" = ( /obj/machinery/light/small{ dir = 1 @@ -8896,35 +8361,9 @@ "rR" = ( /turf/simulated/wall/bay/r_wall/steel, /area/maintenance/stellardelight/deck2/portaft) -"rS" = ( -/obj/structure/bed/chair/sofa/corp/left{ - dir = 4 - }, -/obj/machinery/light{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/supply, -/obj/structure/sign/christmas/lights{ - dir = 8 - }, -/turf/simulated/floor/carpet/turcarpet, -/area/crew_quarters/recreation_area) "rT" = ( /turf/simulated/wall/bay/r_wall/steel, /area/storage/tech) -"rU" = ( -/obj/structure/bed/chair/sofa/corp/right{ - dir = 8 - }, -/obj/machinery/light{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, -/obj/structure/sign/christmas/lights{ - dir = 4 - }, -/turf/simulated/floor/carpet/turcarpet, -/area/crew_quarters/recreation_area) "rV" = ( /obj/machinery/door/firedoor/glass, /obj/structure/window/bay/reinforced, @@ -9002,16 +8441,9 @@ /turf/simulated/floor/tiled/techmaint, /area/engineering/atmos/storage) "sc" = ( -/obj/structure/bed/chair/sofa/corp/corner{ - dir = 4 - }, -/obj/machinery/atmospherics/unary/vent_pump/on{ +/obj/structure/bed/chair/sofa/corp{ dir = 1 }, -/obj/structure/sign/christmas/lights, -/obj/structure/sign/christmas/lights{ - dir = 8 - }, /turf/simulated/floor/carpet/turcarpet, /area/crew_quarters/recreation_area) "sd" = ( @@ -9030,14 +8462,6 @@ }, /turf/simulated/floor/airless, /area/stellardelight/deck2/exterior) -"sf" = ( -/obj/structure/bed/chair/sofa/corp{ - dir = 1 - }, -/obj/effect/landmark/start/visitor, -/obj/structure/sign/christmas/lights, -/turf/simulated/floor/carpet/turcarpet, -/area/crew_quarters/recreation_area) "sg" = ( /turf/simulated/floor/tiled/eris/white/danger, /area/stellardelight/deck2/port) @@ -9140,20 +8564,6 @@ }, /turf/simulated/floor/lino, /area/crew_quarters/bar) -"ss" = ( -/obj/structure/bed/chair/sofa/corp{ - dir = 1 - }, -/obj/structure/sign/christmas/lights, -/turf/simulated/floor/carpet/turcarpet, -/area/crew_quarters/recreation_area) -"st" = ( -/obj/structure/bed/chair/sofa/corp/corner{ - dir = 8 - }, -/obj/structure/sign/christmas/lights, -/turf/simulated/floor/carpet/turcarpet, -/area/crew_quarters/recreation_area) "su" = ( /obj/effect/floor_decal/industrial/warning, /obj/machinery/light/floortube{ @@ -9257,12 +8667,8 @@ /turf/simulated/wall/bay/brown, /area/quartermaster/storage) "sH" = ( -/obj/machinery/camera/network/civilian{ - dir = 1 - }, -/obj/structure/sign/christmas/lights, -/obj/structure/flora/pottedplant/xmas, -/turf/simulated/floor/tiled/dark, +/obj/structure/table/wooden_reinforced, +/turf/simulated/floor/tiled/eris/dark/cargo, /area/crew_quarters/recreation_area) "sI" = ( /obj/structure/sign/deck2{ @@ -9287,12 +8693,15 @@ /turf/simulated/floor/tiled/white, /area/medical/surgery) "sL" = ( -/obj/structure/bed/chair/sofa/corp/corner{ - dir = 4 +/obj/structure/table/marble, +/obj/machinery/door/blast/shutters{ + dir = 8; + id = "bar"; + layer = 3.3; + name = "Bar Shutters" }, -/obj/structure/sign/christmas/lights, -/turf/simulated/floor/carpet/turcarpet, -/area/crew_quarters/recreation_area) +/turf/simulated/floor/lino, +/area/crew_quarters/bar) "sM" = ( /obj/structure/cable/orange{ icon_state = "2-8" @@ -9568,27 +8977,6 @@ /obj/structure/cable, /turf/simulated/floor, /area/maintenance/stellardelight/deck2/starboardsolars) -"tq" = ( -/obj/structure/bed/chair/sofa/corp/corner{ - dir = 8 - }, -/obj/machinery/atmospherics/unary/vent_scrubber/on{ - dir = 1 - }, -/obj/structure/sign/christmas/lights{ - dir = 4 - }, -/obj/structure/sign/christmas/lights, -/turf/simulated/floor/carpet/turcarpet, -/area/crew_quarters/recreation_area) -"tr" = ( -/obj/structure/window/reinforced{ - dir = 4; - pixel_x = 4 - }, -/obj/structure/flora/pottedplant/xmas, -/turf/simulated/floor/glass/reinforced, -/area/stellardelight/deck2/fore) "ts" = ( /obj/structure/bed/chair/bay/comfy/brown{ dir = 1 @@ -9645,14 +9033,6 @@ }, /turf/simulated/floor, /area/maintenance/stellardelight/deck2/starboardsolars) -"tx" = ( -/obj/structure/window/reinforced{ - dir = 8; - pixel_x = -4 - }, -/obj/structure/flora/pottedplant/xmas, -/turf/simulated/floor/glass/reinforced, -/area/stellardelight/deck2/fore) "ty" = ( /obj/effect/floor_decal/industrial/danger{ dir = 8 @@ -10317,6 +9697,33 @@ }, /turf/simulated/floor/tiled/eris/steel/brown_platform, /area/quartermaster/storage) +"uZ" = ( +/obj/machinery/button/remote/blast_door{ + dir = 8; + id = "bar"; + name = "Bar Shutter Control"; + pixel_x = 24 + }, +/obj/structure/table/marble, +/obj/item/weapon/reagent_containers/glass/rag, +/obj/item/weapon/reagent_containers/food/drinks/shaker{ + pixel_x = -7; + pixel_y = 11 + }, +/obj/machinery/light_switch{ + dir = 8; + pixel_x = 26; + pixel_y = -9 + }, +/obj/machinery/button/remote/blast_door{ + dir = 8; + id = "barlockdown"; + name = "Window Lockdown"; + pixel_x = 24; + pixel_y = 10 + }, +/turf/simulated/floor/lino, +/area/crew_quarters/bar) "va" = ( /obj/structure/bed/chair/comfy/brown{ dir = 1 @@ -10368,6 +9775,21 @@ }, /turf/simulated/floor/tiled/eris/white/bluecorner, /area/stellardelight/deck2/triage) +"vg" = ( +/obj/machinery/power/apc/angled{ + dir = 4 + }, +/obj/structure/cable/green{ + icon_state = "0-8" + }, +/obj/structure/cable/green{ + icon_state = "2-8" + }, +/obj/machinery/status_display{ + pixel_y = 32 + }, +/turf/simulated/floor/tiled/eris/steel/brown_platform, +/area/crew_quarters/bar) "vh" = ( /obj/structure/closet/crate/freezer, /obj/machinery/light{ @@ -10730,6 +10152,12 @@ }, /turf/simulated/floor/tiled, /area/stellardelight/deck2/central) +"wf" = ( +/obj/structure/bed/chair/sofa/corp/corner{ + dir = 4 + }, +/turf/simulated/floor/carpet/turcarpet, +/area/crew_quarters/recreation_area) "wg" = ( /obj/effect/floor_decal/industrial/warning/full, /obj/structure/cable/orange{ @@ -10925,6 +10353,21 @@ }, /turf/simulated/floor/tiled, /area/stellardelight/deck2/port) +"wG" = ( +/obj/structure/table/woodentable, +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_y = 30 + }, +/obj/item/weapon/reagent_containers/food/condiment/small/saltshaker{ + pixel_x = -3; + pixel_y = 4 + }, +/obj/item/weapon/reagent_containers/food/condiment/small/peppermill{ + pixel_x = 2; + pixel_y = 7 + }, +/turf/simulated/floor/tiled/eris/steel/brown_platform, +/area/crew_quarters/bar) "wH" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -11318,6 +10761,16 @@ }, /turf/simulated/floor/tiled/eris/steel/brown_platform, /area/crew_quarters/bar) +"xE" = ( +/obj/structure/bed/chair/sofa/corp/left{ + dir = 4 + }, +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/turf/simulated/floor/carpet/turcarpet, +/area/crew_quarters/recreation_area) "xG" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -11546,6 +10999,12 @@ }, /turf/simulated/floor/tiled/eris/white/bluecorner, /area/medical/reception) +"yc" = ( +/obj/machinery/light{ + dir = 1 + }, +/turf/simulated/floor/tiled/eris/dark/cargo, +/area/crew_quarters/recreation_area) "yd" = ( /obj/structure/cable/green{ icon_state = "4-8" @@ -11804,6 +11263,15 @@ }, /turf/simulated/floor/tiled, /area/stellardelight/deck2/fore) +"yG" = ( +/obj/structure/bed/chair/sofa/corp/corner{ + dir = 4 + }, +/obj/machinery/atmospherics/unary/vent_pump/on{ + dir = 1 + }, +/turf/simulated/floor/carpet/turcarpet, +/area/crew_quarters/recreation_area) "yH" = ( /obj/structure/cable{ icon_state = "0-4" @@ -12535,6 +12003,18 @@ }, /turf/simulated/floor/tiled/steel_grid, /area/stellardelight/deck2/aftstarboard) +"Ax" = ( +/obj/effect/floor_decal/spline/plain{ + dir = 1 + }, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/obj/machinery/vending/wallmed1/public{ + pixel_x = 29 + }, +/turf/simulated/floor/lino, +/area/crew_quarters/bar) "Ay" = ( /obj/structure/cable/white{ icon_state = "2-8" @@ -13010,6 +12490,24 @@ }, /turf/simulated/floor/tiled/eris/dark/orangecorner, /area/engineering/engine_eva) +"BC" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/item/device/radio/intercom{ + dir = 4; + pixel_x = 24 + }, +/turf/simulated/floor/carpet/turcarpet, +/area/crew_quarters/recreation_area) +"BD" = ( +/obj/machinery/door/firedoor/glass, +/obj/machinery/door/airlock/angled_bay/standard/glass{ + door_color = "#9c9c9c"; + fill_color = null; + name = "Commons"; + stripe_color = "#89bd66" + }, +/turf/simulated/floor/tiled/steel_ridged, +/area/crew_quarters/recreation_area) "BE" = ( /obj/structure/cable{ icon_state = "1-8" @@ -13110,6 +12608,21 @@ /obj/structure/closet/secure_closet/medical1, /turf/simulated/floor/tiled/eris/white/bluecorner, /area/medical/chemistry) +"BS" = ( +/obj/machinery/power/apc/angled{ + dir = 1; + name = "night shift APC"; + nightshift_setting = 2 + }, +/obj/structure/cable/green{ + icon_state = "0-8" + }, +/obj/machinery/light_switch{ + pixel_x = 9; + pixel_y = 24 + }, +/turf/simulated/floor/tiled/eris/dark/cargo, +/area/crew_quarters/recreation_area) "BT" = ( /turf/simulated/wall/bay/r_wall/steel, /area/engineering/atmos/storage) @@ -13637,6 +13150,15 @@ }, /turf/simulated/floor/tiled/techmaint, /area/storage/primary) +"De" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/item/device/radio/intercom{ + dir = 8; + pixel_x = -24 + }, +/obj/structure/flora/pottedplant/decorative, +/turf/simulated/floor/tiled/eris/dark/cargo, +/area/crew_quarters/recreation_area) "Df" = ( /obj/machinery/atmospherics/unary/freezer{ dir = 8 @@ -13664,6 +13186,10 @@ }, /turf/simulated/floor/airless, /area/stellardelight/deck2/exterior) +"Dj" = ( +/obj/machinery/smartfridge/drinks, +/turf/simulated/floor/lino, +/area/crew_quarters/bar) "Dk" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/airlock/angled_bay/double/glass{ @@ -13869,6 +13395,12 @@ }, /turf/simulated/floor, /area/maintenance/stellardelight/deck2/portsolars) +"DI" = ( +/obj/machinery/camera/network/civilian{ + dir = 1 + }, +/turf/simulated/floor/tiled/eris/steel/brown_platform, +/area/crew_quarters/bar) "DJ" = ( /obj/machinery/portable_atmospherics/canister/oxygen/prechilled, /obj/machinery/atmospherics/portables_connector{ @@ -13906,6 +13438,15 @@ /obj/structure/bed/chair/comfy/brown, /turf/simulated/floor/glass/reinforced, /area/stellardelight/deck2/fore) +"DO" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/item/device/radio/intercom{ + dir = 4; + pixel_x = 24 + }, +/obj/structure/flora/pottedplant/decorative, +/turf/simulated/floor/tiled/eris/dark/cargo, +/area/crew_quarters/recreation_area) "DP" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 6 @@ -14663,6 +14204,14 @@ }, /turf/simulated/floor/tiled/techfloor, /area/engineering/atmos/monitoring) +"Fw" = ( +/obj/structure/table/gamblingtable, +/obj/machinery/light/floortube{ + pixel_y = -6 + }, +/obj/item/weapon/material/ashtray/glass, +/turf/simulated/floor/carpet, +/area/crew_quarters/recreation_area) "Fx" = ( /obj/machinery/atmospherics/pipe/simple/hidden/yellow{ dir = 10 @@ -14785,6 +14334,19 @@ }, /turf/simulated/floor, /area/maintenance/stellardelight/deck2/portaft) +"FJ" = ( +/obj/machinery/door/firedoor/glass, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/machinery/door/airlock/angled_bay/standard/glass{ + door_color = "#9c9c9c"; + name = "Bar"; + stripe_color = "#89bd66" + }, +/turf/simulated/floor/tiled/steel_ridged, +/area/crew_quarters/bar) "FK" = ( /obj/machinery/atmospherics/unary/vent_scrubber/on{ dir = 1 @@ -15317,6 +14879,15 @@ }, /turf/simulated/floor, /area/maintenance/stellardelight/deck2/portsolars) +"GL" = ( +/obj/machinery/status_display{ + pixel_y = 32 + }, +/obj/structure/closet/crate/bin{ + anchored = 1 + }, +/turf/simulated/floor/tiled/eris/dark/cargo, +/area/crew_quarters/recreation_area) "GM" = ( /obj/machinery/portable_atmospherics/hydroponics, /obj/effect/floor_decal/milspec/color/green/half{ @@ -15512,6 +15083,16 @@ }, /turf/simulated/floor/tiled, /area/stellardelight/deck2/central) +"Hi" = ( +/obj/structure/table/marble, +/obj/machinery/chemical_dispenser/bar_alc/full{ + dir = 1 + }, +/obj/machinery/camera/network/civilian{ + dir = 8 + }, +/turf/simulated/floor/lino, +/area/crew_quarters/bar) "Hj" = ( /obj/machinery/atm{ pixel_y = 30 @@ -15705,6 +15286,14 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/tiled/eris/white/danger, /area/stellardelight/deck2/starboard) +"HE" = ( +/obj/machinery/atmospherics/pipe/simple/hidden/supply, +/obj/item/device/radio/intercom{ + dir = 8; + pixel_x = -24 + }, +/turf/simulated/floor/carpet/turcarpet, +/area/crew_quarters/recreation_area) "HF" = ( /obj/effect/floor_decal/industrial/outline/yellow, /obj/structure/closet/crate/medical, @@ -16209,6 +15798,12 @@ }, /turf/simulated/floor/tiled/eris/steel/cargo, /area/quartermaster/storage) +"IE" = ( +/obj/effect/landmark{ + name = "lightsout" + }, +/turf/simulated/floor/glass/reinforced, +/area/crew_quarters/recreation_area) "IF" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/cyan{ dir = 8 @@ -16438,6 +16033,11 @@ "Jh" = ( /turf/space, /area/space) +"Ji" = ( +/obj/machinery/computer/arcade/orion_trail, +/obj/machinery/atmospherics/unary/vent_scrubber/on, +/turf/simulated/floor/tiled/eris/dark/cargo, +/area/crew_quarters/recreation_area) "Jj" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable/yellow{ @@ -16717,6 +16317,19 @@ "JQ" = ( /turf/simulated/floor/tiled/eris/dark/gray_platform, /area/bridge) +"JR" = ( +/obj/machinery/door/firedoor/glass, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/obj/machinery/door/airlock/angled_bay/standard/glass{ + door_color = "#9c9c9c"; + fill_color = null; + name = "Commons"; + stripe_color = "#89bd66" + }, +/turf/simulated/floor/tiled/steel_ridged, +/area/crew_quarters/recreation_area) "JS" = ( /obj/machinery/atmospherics/pipe/manifold4w/visible/black, /turf/simulated/floor/tiled/techmaint, @@ -17502,6 +17115,19 @@ /obj/effect/floor_decal/steeldecal/steel_decals5, /turf/simulated/floor/tiled, /area/stellardelight/deck2/aftstarboard) +"LL" = ( +/obj/machinery/door/window/brigdoor/northleft{ + name = "Bar"; + req_access = list(25) + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/turf/simulated/floor/lino, +/area/crew_quarters/bar) "LM" = ( /obj/machinery/door/firedoor/glass, /obj/machinery/door/airlock/angled_bay/external/glass{ @@ -17535,6 +17161,24 @@ }, /turf/simulated/floor/tiled, /area/hydroponics) +"LP" = ( +/obj/structure/table/woodentable, +/obj/machinery/light/floortube{ + dir = 1; + pixel_y = 6 + }, +/obj/machinery/camera/network/civilian, +/obj/item/weapon/reagent_containers/food/condiment/small/saltshaker{ + pixel_x = -3; + pixel_y = 4 + }, +/obj/item/weapon/reagent_containers/food/condiment/small/peppermill{ + pixel_x = 2; + pixel_y = 7 + }, +/obj/item/weapon/material/ashtray/glass, +/turf/simulated/floor/tiled/eris/steel/brown_platform, +/area/crew_quarters/bar) "LQ" = ( /obj/structure/cable/white{ icon_state = "4-8" @@ -17560,6 +17204,16 @@ /mob/living/simple_mob/animal/passive/chicken, /turf/simulated/floor/grass, /area/hydroponics) +"LT" = ( +/obj/machinery/disposal/wall{ + dir = 8 + }, +/obj/structure/disposalpipe/trunk{ + dir = 2 + }, +/obj/machinery/firealarm/angled, +/turf/simulated/floor/tiled/eris/steel/brown_platform, +/area/crew_quarters/bar) "LU" = ( /obj/machinery/atmospherics/pipe/simple/visible/universal{ name = "Distro Loop Drain" @@ -17768,6 +17422,10 @@ }, /turf/simulated/floor/tiled, /area/stellardelight/deck2/port) +"Mp" = ( +/obj/machinery/computer/arcade/battle, +/turf/simulated/floor/tiled/eris/dark/cargo, +/area/crew_quarters/recreation_area) "Mq" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -18094,6 +17752,10 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor/tiled, /area/stellardelight/deck2/port) +"MZ" = ( +/obj/machinery/vending/boozeomat, +/turf/simulated/floor/lino, +/area/crew_quarters/bar) "Na" = ( /obj/machinery/atmospherics/pipe/simple/hidden/green, /obj/machinery/atmospherics/pipe/simple/hidden/red{ @@ -18178,6 +17840,13 @@ }, /turf/simulated/floor/tiled/eris/steel/brown_platform, /area/quartermaster/storage) +"Nk" = ( +/obj/item/device/radio/intercom{ + dir = 1; + pixel_y = 24 + }, +/turf/simulated/floor/tiled/eris/steel/brown_platform, +/area/crew_quarters/bar) "Nl" = ( /obj/machinery/atmospherics/pipe/simple/visible/black{ dir = 4 @@ -19012,6 +18681,16 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /turf/simulated/floor/tiled/eris/dark/danger, /area/engineering/engine_room) +"Pe" = ( +/obj/structure/table/woodentable, +/obj/structure/cable/green{ + icon_state = "1-2" + }, +/obj/machinery/recharger{ + pixel_y = 5 + }, +/turf/simulated/floor/tiled/eris/steel/brown_platform, +/area/crew_quarters/bar) "Pf" = ( /obj/structure/sign/directions/evac{ dir = 4; @@ -19900,6 +19579,17 @@ /obj/structure/low_wall/bay/reinforced/steel, /turf/simulated/floor, /area/maintenance/stellardelight/deck2/portaft) +"QZ" = ( +/obj/structure/window/reinforced{ + dir = 1; + pixel_y = 4 + }, +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/turf/simulated/floor/tiled/eris/dark/cargo, +/area/crew_quarters/recreation_area) "Ra" = ( /obj/machinery/door/firedoor/glass, /obj/structure/window/bay/reinforced, @@ -20543,6 +20233,10 @@ }, /turf/simulated/wall/bay/r_wall/steel, /area/maintenance/stellardelight/deck2/portfore) +"SF" = ( +/obj/machinery/computer/arcade/clawmachine, +/turf/simulated/floor/tiled/eris/dark/cargo, +/area/crew_quarters/recreation_area) "SG" = ( /obj/structure/table/rack/steel, /obj/item/device/slime_scanner, @@ -20565,6 +20259,12 @@ }, /turf/simulated/floor/wood, /area/stellardelight/deck2/briefingroom) +"SI" = ( +/obj/item/weapon/stool/padded{ + dir = 8 + }, +/turf/simulated/floor/tiled/eris/dark/cargo, +/area/crew_quarters/recreation_area) "SK" = ( /turf/simulated/wall/bay/r_wall/steel, /area/engineering/atmos/monitoring) @@ -21736,6 +21436,14 @@ }, /turf/simulated/floor/tiled/eris/white/bluecorner, /area/medical/cmostore) +"Vr" = ( +/obj/structure/window/reinforced{ + dir = 4; + pixel_x = 4 + }, +/obj/structure/flora/pottedplant/decorative, +/turf/simulated/floor/glass/reinforced, +/area/stellardelight/deck2/fore) "Vt" = ( /obj/effect/floor_decal/industrial/warning{ dir = 1 @@ -22259,6 +21967,10 @@ /mob/living/simple_mob/animal/passive/cat/jones, /turf/simulated/floor/tiled/eris/white/bluecorner, /area/medical/reception) +"WC" = ( +/obj/machinery/alarm/angled, +/turf/simulated/floor/tiled/eris/dark/cargo, +/area/crew_quarters/recreation_area) "WE" = ( /obj/machinery/firealarm/angled{ dir = 4 @@ -22383,6 +22095,11 @@ }, /turf/simulated/floor/tiled/eris/white/bluecorner, /area/medical/reception) +"WR" = ( +/obj/structure/table/wooden_reinforced, +/obj/random/paicard, +/turf/simulated/floor/tiled/eris/dark/cargo, +/area/crew_quarters/recreation_area) "WS" = ( /obj/machinery/atmospherics/pipe/simple/visible/red{ dir = 6 @@ -22806,6 +22523,13 @@ }, /turf/simulated/floor/tiled, /area/stellardelight/deck2/fore) +"XP" = ( +/obj/machinery/status_display{ + pixel_y = 32 + }, +/obj/machinery/recharge_station, +/turf/simulated/floor/tiled/eris/dark/cargo, +/area/crew_quarters/recreation_area) "XQ" = ( /obj/structure/cable{ icon_state = "2-4" @@ -22928,6 +22652,12 @@ }, /turf/simulated/floor, /area/maintenance/stellardelight/deck2/starboardfore) +"Yc" = ( +/obj/structure/musician/piano{ + dir = 4 + }, +/turf/simulated/floor/tiled/eris/dark/cargo, +/area/crew_quarters/recreation_area) "Yd" = ( /obj/item/device/suit_cooling_unit, /obj/item/device/suit_cooling_unit, @@ -22980,6 +22710,10 @@ /obj/machinery/door/firedoor/glass, /turf/simulated/floor/tiled/steel_ridged, /area/stellardelight/deck2/port) +"Yl" = ( +/obj/machinery/firealarm/angled, +/turf/simulated/floor/tiled/eris/dark/cargo, +/area/crew_quarters/recreation_area) "Ym" = ( /obj/structure/cable/green{ icon_state = "1-2" @@ -23135,6 +22869,12 @@ /obj/effect/landmark/start/chef, /turf/simulated/floor/tiled/eris/cafe, /area/crew_quarters/kitchen) +"YD" = ( +/obj/structure/noticeboard{ + pixel_y = 32 + }, +/turf/simulated/floor/tiled/eris/steel/brown_platform, +/area/crew_quarters/bar) "YE" = ( /obj/machinery/meter, /obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ @@ -23232,6 +22972,16 @@ }, /turf/simulated/floor/wood, /area/stellardelight/deck2/barbackroom) +"YN" = ( +/obj/item/weapon/stool/padded{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/camera/network/civilian{ + dir = 5 + }, +/turf/simulated/floor/tiled/eris/dark/cargo, +/area/crew_quarters/recreation_area) "YO" = ( /obj/structure/table/gamblingtable, /obj/machinery/recharger{ @@ -23663,6 +23413,17 @@ /obj/machinery/vending/engivend, /turf/simulated/floor/tiled/techfloor, /area/stellardelight/deck2/o2production) +"ZO" = ( +/obj/structure/table/marble, +/obj/machinery/chemical_dispenser/bar_coffee/full{ + dir = 1 + }, +/obj/item/device/radio/intercom{ + pixel_y = -24 + }, +/obj/machinery/light/small, +/turf/simulated/floor/lino, +/area/crew_quarters/bar) "ZP" = ( /obj/machinery/atmospherics/unary/vent_pump/on{ dir = 8 @@ -23766,6 +23527,15 @@ }, /turf/simulated/floor/tiled/eris/steel/cargo, /area/quartermaster/storage) +"ZZ" = ( +/obj/structure/bed/chair/sofa/corp/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/unary/vent_scrubber/on{ + dir = 1 + }, +/turf/simulated/floor/carpet/turcarpet, +/area/crew_quarters/recreation_area) (1,1,1) = {" Jh @@ -32485,7 +32255,7 @@ nt DN xP Wq -tr +Vr Wk Xi RT @@ -32603,26 +32373,26 @@ NL jx HQ HQ -iq +YD EV EV EV ZC FM -ju +EV Sx po td jF nt -mJ -oN -pi -pE +Ji +YN +De +QZ Ho aE -qc -qE +ia +WR nt Rq Rq @@ -32744,27 +32514,27 @@ bD dk dM ir -aY +pn QS QS QS BJ Fb TC -jH +DI Sx jr KH zz nt -mL +Mp dY -pm +cC iO mt Cy mt -qK +Yc nt Rq Rq @@ -32886,27 +32656,27 @@ Jh Jh Jh oJ -bO +Gn MK YU Nc Nc dU TC -jR +YU rV VG KH HO nt -mU +GL mt mt mt mt Cy mt -qR +SI nt nt nt @@ -33028,20 +32798,20 @@ Jh Jh Jh oJ -cC +wG MK YU Gn CY Gn TC -jR +YU rV lT KH Ct nt -nc +WC mt mt mt @@ -33049,10 +32819,10 @@ mt jv ct Lq -ro -rJ -rS -sc +ct +HE +xE +yG nt kr Mi @@ -33170,20 +32940,20 @@ Jh Jh Jh oJ -bO +Gn MK YU ic ls oF TC -kl +aY bx VG KH zz nt -ne +mt Bp oS oS @@ -33194,7 +32964,7 @@ mt mt DL Lb -sf +ix nt rH QX @@ -33312,23 +33082,23 @@ Jh Jh Wb HQ -fE +Nk YU YU YU qe YU TC -jR +YU Sx VG KH zz nt -nh +yc Dl UX -ps +UX UX hP mt @@ -33336,7 +33106,7 @@ mt mt DL Lb -ss +sc nt yF uE @@ -33454,7 +33224,7 @@ Jh Wb TU oJ -bO +Gn MK YU Nc @@ -33462,11 +33232,11 @@ Ux xD Pc fB -mc +iX UQ kS PK -mp +JR xA DS UX @@ -33478,7 +33248,7 @@ Ut Ut DL tb -st +rg nt dG wK @@ -33596,31 +33366,31 @@ Jh Jh Xc oJ -fL +LP zw Jl Gn CI iT TC -kp +ku Sx Je DW JL nt -nk +BS Dl YO BK -pW +Fw vS Ut -qS +IE Ut Xx NS -sH +mL nt HY GI @@ -33738,7 +33508,7 @@ Jh Wb TU oJ -bO +Gn MK oB wq @@ -33746,14 +33516,14 @@ wq WI LR by -mn +FJ OW pG co -my +BD ud Ep -pn +UX Bp UX ts @@ -33762,7 +33532,7 @@ Ut Ut DL hD -sL +wf nt pa rj @@ -33880,23 +33650,23 @@ Jh Jh Wb HQ -ia +bO YU lU as as Rr AY -jR +YU Sx Ls KH zz nt -nh +yc Dl -ps -ps +UX +UX UX hP mt @@ -33904,7 +33674,7 @@ mt mt DL Lb -ss +sc nt yF uE @@ -34022,20 +33792,20 @@ Jh Jh Jh oJ -bO +Gn MK fi VC XU sr Xq -ku +qS Sx EE KH zz nt -nl +fE Bp io io @@ -34046,7 +33816,7 @@ mt mt DL Lb -sf +ix nt Yy Hy @@ -34164,20 +33934,20 @@ Jh Jh Jh oJ -cC +wG MK fi dw On rd AN -kw +sL rV lT KH Ct nt -nn +Yl mt mt mt @@ -34185,10 +33955,10 @@ mt hm VM uJ -rA -rL -rU -tq +VM +BC +lG +ZZ nt ys IK @@ -34306,27 +34076,27 @@ Jh Jh Jh oJ -bO +Gn zw fi dw BV py fp -kU +mn rV VG KH HO nt -nQ +XP mt mt mt mt lO mt -qU +mt nt nt nt @@ -34448,27 +34218,27 @@ bD dk Di HQ -ij +LT as uX dw On hY fp -lb +MZ Sx Xl KH zz nt -nY +SF Fy -pm +cC iO mt lO id -rf +sH nt Rq Rq @@ -34591,26 +34361,26 @@ NL jx HQ HQ -ix +pW sP dw On py fp -lp +Dj Sx po AI jF nt -or -oW -pt -pF +fL +mU +DO +kp GA fK -qB -rg +ij +sH nt Rq Rq @@ -34733,13 +34503,13 @@ NL tj dk PR -iM +Pe bp dw On py fp -lE +ZO Sx VY KH @@ -34757,7 +34527,7 @@ nt dv Im Gb -tx +kl Wk IK RT @@ -34875,13 +34645,13 @@ Wb jx NL oJ -iX +mJ sP dw On wV aK -lG +nQ Sx aC KH @@ -35018,12 +34788,12 @@ nP Wb HQ HQ -jb -je -jh +vg +Ax +LL GX -jl -lH +uZ +Hi Sx iy mV diff --git a/vorestation.dme b/vorestation.dme index 30446eec84..80ffdf3f20 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -4288,6 +4288,7 @@ #include "maps\southern_cross\loadout\loadout_suit.dm" #include "maps\southern_cross\loadout\loadout_uniform.dm" #include "maps\southern_cross\loadout\loadout_vr.dm" +#include "maps\stellar_delight\stellar_delight.dm" #include "maps\submaps\_helpers.dm" #include "maps\submaps\_readme.dm" #include "maps\submaps\admin_use_vr\event_autonomous_drone.dm" @@ -4298,6 +4299,5 @@ #include "maps\submaps\space_submaps\debrisfield\debrisfield.dm" #include "maps\submaps\surface_submaps\wilderness\wilderness.dm" #include "maps\submaps\surface_submaps\wilderness\wilderness_areas.dm" -#include "maps\tether\tether.dm" #include "maps\~map_system\maps.dm" // END_INCLUDE From d3941fb82e7cbb93964b4b7318ad6720dc950fa3 Mon Sep 17 00:00:00 2001 From: Heroman3003 <31296024+Heroman3003@users.noreply.github.com> Date: Sun, 14 Jan 2024 07:20:08 +1000 Subject: [PATCH 16/39] Update vorestation.dme --- vorestation.dme | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vorestation.dme b/vorestation.dme index 80ffdf3f20..30446eec84 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -4288,7 +4288,6 @@ #include "maps\southern_cross\loadout\loadout_suit.dm" #include "maps\southern_cross\loadout\loadout_uniform.dm" #include "maps\southern_cross\loadout\loadout_vr.dm" -#include "maps\stellar_delight\stellar_delight.dm" #include "maps\submaps\_helpers.dm" #include "maps\submaps\_readme.dm" #include "maps\submaps\admin_use_vr\event_autonomous_drone.dm" @@ -4299,5 +4298,6 @@ #include "maps\submaps\space_submaps\debrisfield\debrisfield.dm" #include "maps\submaps\surface_submaps\wilderness\wilderness.dm" #include "maps\submaps\surface_submaps\wilderness\wilderness_areas.dm" +#include "maps\tether\tether.dm" #include "maps\~map_system\maps.dm" // END_INCLUDE From 1fa77e046fa4d8cf61ff0d959944786131b2c4d5 Mon Sep 17 00:00:00 2001 From: Heroman Date: Mon, 15 Jan 2024 05:11:14 +1000 Subject: [PATCH 17/39] Gives Altevian Slicer a better sound --- code/modules/projectiles/guns/energy/altevian_vr.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/modules/projectiles/guns/energy/altevian_vr.dm b/code/modules/projectiles/guns/energy/altevian_vr.dm index 60104e560d..4db9cd1209 100644 --- a/code/modules/projectiles/guns/energy/altevian_vr.dm +++ b/code/modules/projectiles/guns/energy/altevian_vr.dm @@ -74,6 +74,7 @@ matter = list(MAT_STEEL = 2000) projectile_type = /obj/item/projectile/scatter/ratminer charge_cost = 400 + fire_sound = 'sound/weapons/laser3.ogg' /obj/item/projectile/scatter/ratminer spread_submunition_damage = FALSE From 9a50ec243decc51203c846fd1e71d1e826d72b1d Mon Sep 17 00:00:00 2001 From: VerySoft Date: Sun, 14 Jan 2024 17:22:23 -0500 Subject: [PATCH 18/39] Map swap --- vorestation.dme | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vorestation.dme b/vorestation.dme index 30446eec84..80ffdf3f20 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -4288,6 +4288,7 @@ #include "maps\southern_cross\loadout\loadout_suit.dm" #include "maps\southern_cross\loadout\loadout_uniform.dm" #include "maps\southern_cross\loadout\loadout_vr.dm" +#include "maps\stellar_delight\stellar_delight.dm" #include "maps\submaps\_helpers.dm" #include "maps\submaps\_readme.dm" #include "maps\submaps\admin_use_vr\event_autonomous_drone.dm" @@ -4298,6 +4299,5 @@ #include "maps\submaps\space_submaps\debrisfield\debrisfield.dm" #include "maps\submaps\surface_submaps\wilderness\wilderness.dm" #include "maps\submaps\surface_submaps\wilderness\wilderness_areas.dm" -#include "maps\tether\tether.dm" #include "maps\~map_system\maps.dm" // END_INCLUDE From 28ad56cd9752e3b9cb9ca309f13e1aeb3362ec5f Mon Sep 17 00:00:00 2001 From: SatinIsle Date: Mon, 15 Jan 2024 14:43:43 +0000 Subject: [PATCH 19/39] Bad Swimmer Added a bad swimmer trait that slows you down in water and causes you to drown in deep water (depths of 2 or above). One thing I would like to improve before merging and want advice on: Currently the splashing/"you are drowning" message spams pretty frequently and I would like to slow that down. --- code/game/turfs/simulated/water.dm | 28 +++++++++++++++++++ .../living/carbon/human/species/species.dm | 5 ++++ .../species/station/traits_vr/negative.dm | 6 ++++ 3 files changed, 39 insertions(+) diff --git a/code/game/turfs/simulated/water.dm b/code/game/turfs/simulated/water.dm index 12084f5858..5a3d0ec618 100644 --- a/code/game/turfs/simulated/water.dm +++ b/code/game/turfs/simulated/water.dm @@ -73,6 +73,26 @@ water_breath.adjust_gas(gasid, BREATH_MOLES) // They have no oxygen, but non-zero moles and temp water_breath.temperature = above_air.temperature return water_breath + if(L && L.is_bad_swimmer() && depth >= 2 && !L.buckled()) + L.visible_message("[L] splashes wildly.","You struggle to keep your head above the water!") + if(L.can_breathe_water()) + var/datum/gas_mixture/water_breath = new() + var/datum/gas_mixture/above_air = return_air() + var/amount = 300 + water_breath.adjust_gas("oxygen", amount) // Assuming water breathes just extract the oxygen directly from the water. + water_breath.temperature = above_air.temperature + return water_breath + else + var/gasid = "carbon_dioxide" + if(ishuman(L)) + var/mob/living/carbon/human/H = L + if(H.species && H.species.exhale_type) + gasid = H.species.exhale_type + var/datum/gas_mixture/water_breath = new() + var/datum/gas_mixture/above_air = return_air() + water_breath.adjust_gas(gasid, BREATH_MOLES) // They have no oxygen, but non-zero moles and temp + water_breath.temperature = above_air.temperature + return water_breath return return_air() // Otherwise their head is above the water, so get the air from the atmosphere instead. /turf/simulated/floor/water/Entered(atom/movable/AM, atom/oldloc) @@ -125,6 +145,14 @@ return species.can_breathe_water() return ..() +/mob/living/proc/is_bad_swimmer() + return FALSE + +/mob/living/carbon/human/is_bad_swimmer() + if(species) + return species.is_bad_swimmer() + return ..() + /mob/living/proc/check_submerged() if(buckled) return 0 diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index e7722cff39..3d3f3dba5e 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -137,6 +137,7 @@ var/poison_type = "phoron" // Poisonous air. var/exhale_type = "carbon_dioxide" // Exhaled gas type. var/water_breather = FALSE + var/bad_swimmer = FALSE var/body_temperature = 310.15 // Species will try to stabilize at this temperature. (also affects temperature processing) @@ -513,6 +514,10 @@ /datum/species/proc/can_breathe_water() return water_breather +// Called when standing on a water tile. +/datum/species/proc/is_bad_swimmer() + return bad_swimmer + // Impliments different trails for species depending on if they're wearing shoes. /datum/species/proc/get_move_trail(var/mob/living/carbon/human/H) if( H.shoes || ( H.wear_suit && (H.wear_suit.body_parts_covered & FEET) ) ) diff --git a/code/modules/mob/living/carbon/human/species/station/traits_vr/negative.dm b/code/modules/mob/living/carbon/human/species/station/traits_vr/negative.dm index 07e086b13d..adc3c051f4 100644 --- a/code/modules/mob/living/carbon/human/species/station/traits_vr/negative.dm +++ b/code/modules/mob/living/carbon/human/species/station/traits_vr/negative.dm @@ -168,3 +168,9 @@ custom_only = FALSE varchange_type = TRAIT_VARCHANGE_MORE_BETTER +/datum/trait/negative/bad_swimmer + name = "Bad Swimmer" + desc = "You can't swim very well, all water slows you down a lot and you drown in deep water." + cost = -1 + custom_only = FALSE + var_changes = list("bad_swimmer" = 1, "water_movement" = 4) From e2575713ccfd013724e4ecd683f49aef7f7419db Mon Sep 17 00:00:00 2001 From: Kashargul <144968721+Kashargul@users.noreply.github.com> Date: Mon, 15 Jan 2024 17:27:04 +0100 Subject: [PATCH 20/39] ends multiproccing on butchering --- code/modules/mob/living/butchering.dm | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/butchering.dm b/code/modules/mob/living/butchering.dm index 14adae33a3..eb61334151 100644 --- a/code/modules/mob/living/butchering.dm +++ b/code/modules/mob/living/butchering.dm @@ -9,17 +9,23 @@ var/list/butchery_loot // Associated list, path = number. + var/being_butchered = FALSE // No multiproccing + // Harvest an animal's delicious byproducts /mob/living/proc/harvest(var/mob/user, var/obj/item/I) - if(meat_type && meat_amount>0 && (stat == DEAD)) + if(meat_type && meat_amount>0 && (stat == DEAD) && !being_butchered) + being_butchered = TRUE while(meat_amount > 0 && do_after(user, 0.5 SECONDS * (mob_size / 10), src)) var/obj/item/meat = new meat_type(get_turf(src)) meat.name = "[src.name] [meat.name]" new /obj/effect/decal/cleanable/blood/splatter(get_turf(src)) meat_amount-- + being_butchered = FALSE - if(!meat_amount) + if(!meat_amount && !being_butchered) + being_butchered = TRUE handle_butcher(user, I) + being_butchered = FALSE /mob/living/proc/can_butcher(var/mob/user, var/obj/item/I) // Override for special butchering checks. if(((meat_type && meat_amount) || LAZYLEN(butchery_loot)) && stat == DEAD) From 05dceb78f7c1f4e21fb9c557f8263732affa72d7 Mon Sep 17 00:00:00 2001 From: Kashargul <144968721+Kashargul@users.noreply.github.com> Date: Thu, 18 Jan 2024 00:18:14 +0100 Subject: [PATCH 21/39] fix runtimes and donking! --- code/_onclick/hud/robot.dm | 10 ++++++---- code/modules/projectiles/guns/toy.dm | 3 ++- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/code/_onclick/hud/robot.dm b/code/_onclick/hud/robot.dm index c494fd685e..ae0f7f4c47 100644 --- a/code/_onclick/hud/robot.dm +++ b/code/_onclick/hud/robot.dm @@ -240,7 +240,8 @@ var/obj/screen/robot_inventory var/display_rows = -round(-(r.module.modules.len) / 8) r.robot_modules_background.screen_loc = "CENTER-4:16,SOUTH+1:7 to CENTER+3:16,SOUTH+[display_rows]:7" - r.client.screen += r.robot_modules_background + if(r.client) + r.client.screen += r.robot_modules_background var/x = -4 //Start at CENTER-4,SOUTH+1 var/y = 1 @@ -258,7 +259,7 @@ var/obj/screen/robot_inventory r.module.modules.Remove(r.module.emag) for(var/atom/movable/A in r.module.modules) - if( (A != r.module_state_1) && (A != r.module_state_2) && (A != r.module_state_3) ) + if(r.client && (A != r.module_state_1) && (A != r.module_state_2) && (A != r.module_state_3) ) //Module is not currently active r.client.screen += A if(x < 0) @@ -276,11 +277,12 @@ var/obj/screen/robot_inventory //Modules display is hidden //r.client.screen -= robot_inventory //"store" icon for(var/atom/A in r.module.modules) - if( (A != r.module_state_1) && (A != r.module_state_2) && (A != r.module_state_3) ) + if(r.client && (A != r.module_state_1) && (A != r.module_state_2) && (A != r.module_state_3) ) //Module is not currently active r.client.screen -= A r.shown_robot_modules = 0 - r.client.screen -= r.robot_modules_background + if(r.client) + r.client.screen -= r.robot_modules_background /mob/living/silicon/robot/update_hud() if(modtype) diff --git a/code/modules/projectiles/guns/toy.dm b/code/modules/projectiles/guns/toy.dm index 16d9526cd1..0f0616b948 100644 --- a/code/modules/projectiles/guns/toy.dm +++ b/code/modules/projectiles/guns/toy.dm @@ -221,6 +221,7 @@ icon = 'icons/obj/gun_toy.dmi' icon_state = "smg" caliber = "foam" + manual_chamber = FALSE load_method = SINGLE_CASING max_shells = 15 var/cleanup = 0 @@ -318,4 +319,4 @@ item_state = "retro" /obj/item/weapon/gun/energy/lasertag/omni - projectile_type = /obj/item/projectile/beam/lasertag/omni \ No newline at end of file + projectile_type = /obj/item/projectile/beam/lasertag/omni From c0339df32c50f46efc1ab6c98186f3f03af2edf8 Mon Sep 17 00:00:00 2001 From: Kashargul <144968721+Kashargul@users.noreply.github.com> Date: Thu, 18 Jan 2024 00:21:36 +0100 Subject: [PATCH 22/39] downstream.... --- code/modules/projectiles/guns/toy.dm | 1 - 1 file changed, 1 deletion(-) diff --git a/code/modules/projectiles/guns/toy.dm b/code/modules/projectiles/guns/toy.dm index 0f0616b948..13bbffb4bf 100644 --- a/code/modules/projectiles/guns/toy.dm +++ b/code/modules/projectiles/guns/toy.dm @@ -221,7 +221,6 @@ icon = 'icons/obj/gun_toy.dmi' icon_state = "smg" caliber = "foam" - manual_chamber = FALSE load_method = SINGLE_CASING max_shells = 15 var/cleanup = 0 From 6184e0b7bc19aa8ea842db13fde4c8c0c6534042 Mon Sep 17 00:00:00 2001 From: Kashargul <144968721+Kashargul@users.noreply.github.com> Date: Thu, 18 Jan 2024 21:00:32 +0100 Subject: [PATCH 23/39] fixes small typo --- code/modules/mob/new_player/sprite_accessories.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/new_player/sprite_accessories.dm b/code/modules/mob/new_player/sprite_accessories.dm index fdae1d2f36..c4220373af 100644 --- a/code/modules/mob/new_player/sprite_accessories.dm +++ b/code/modules/mob/new_player/sprite_accessories.dm @@ -3636,7 +3636,7 @@ shaved species_allowed = list(SPECIES_TESHARI) /datum/sprite_accessory/marking/bandage/r_foot/r_foot3 - name = "Bandage, Rufgt Foot 3" + name = "Bandage, Right Foot 3" icon_state = "bandage3" /datum/sprite_accessory/marking/bandage/r_foot/r_foot3/teshari From 48f62de94bd42bc6a48e609c9517521413e02b43 Mon Sep 17 00:00:00 2001 From: Burrito Justice Date: Thu, 18 Jan 2024 13:15:54 -0800 Subject: [PATCH 24/39] delete atoll, move falls to redgate --- code/game/turfs/simulated/underwater.dm | 4 +- maps/atoll/atoll.dmm | 397 ------------- maps/atoll/icons/objs/moss.dmi | Bin 681 -> 0 bytes maps/atoll/icons/objs/trees_xl.dmi | Bin 2254 -> 0 bytes maps/groundbase/groundbase_defines.dm | 3 +- maps/offmap_vr/common_offmaps.dm | 5 + maps/{atoll => redgate/falls}/atoll_decals.dm | 152 ++--- maps/{atoll => redgate/falls}/atoll_objs.dm | 552 +++++++++--------- maps/{atoll => redgate/falls}/atoll_turfs.dm | 124 ++-- maps/{atoll => redgate/falls}/falls.dmm | 136 ++--- .../falls}/icons/decals/godrays.dmi | Bin .../falls}/icons/decals/marble_decals.dmi | Bin .../falls}/icons/decals/wall_decals.dmi | Bin .../falls}/icons/objs/aqueducts.dmi | Bin .../falls}/icons/objs/aqueducts_64.dmi | Bin .../falls}/icons/objs/benches.dmi | Bin .../falls}/icons/objs/bronze_overhang.dmi | Bin .../falls}/icons/objs/canopies.dmi | Bin .../falls}/icons/objs/lamp.dmi | Bin .../falls}/icons/objs/monolith.dmi | Bin .../falls}/icons/objs/temple.dmi | Bin .../falls}/icons/objs/trees.dmi | Bin .../falls}/icons/objs/waterfall.dmi | Bin .../falls}/icons/turfs/marble.dmi | Bin .../falls}/icons/turfs/water.dmi | Bin .../falls}/sounds/lakeamb.ogg | Bin .../falls}/sounds/monolith.ogg | Bin .../stellar_delight_defines.dm | 3 +- maps/tether/tether_defines.dm | 3 +- vorestation.dme | 6 +- 30 files changed, 491 insertions(+), 894 deletions(-) delete mode 100644 maps/atoll/atoll.dmm delete mode 100644 maps/atoll/icons/objs/moss.dmi delete mode 100644 maps/atoll/icons/objs/trees_xl.dmi rename maps/{atoll => redgate/falls}/atoll_decals.dm (83%) rename maps/{atoll => redgate/falls}/atoll_objs.dm (84%) rename maps/{atoll => redgate/falls}/atoll_turfs.dm (70%) rename maps/{atoll => redgate/falls}/falls.dmm (94%) rename maps/{atoll => redgate/falls}/icons/decals/godrays.dmi (100%) rename maps/{atoll => redgate/falls}/icons/decals/marble_decals.dmi (100%) rename maps/{atoll => redgate/falls}/icons/decals/wall_decals.dmi (100%) rename maps/{atoll => redgate/falls}/icons/objs/aqueducts.dmi (100%) rename maps/{atoll => redgate/falls}/icons/objs/aqueducts_64.dmi (100%) rename maps/{atoll => redgate/falls}/icons/objs/benches.dmi (100%) rename maps/{atoll => redgate/falls}/icons/objs/bronze_overhang.dmi (100%) rename maps/{atoll => redgate/falls}/icons/objs/canopies.dmi (100%) rename maps/{atoll => redgate/falls}/icons/objs/lamp.dmi (100%) rename maps/{atoll => redgate/falls}/icons/objs/monolith.dmi (100%) rename maps/{atoll => redgate/falls}/icons/objs/temple.dmi (100%) rename maps/{atoll => redgate/falls}/icons/objs/trees.dmi (100%) rename maps/{atoll => redgate/falls}/icons/objs/waterfall.dmi (100%) rename maps/{atoll => redgate/falls}/icons/turfs/marble.dmi (100%) rename maps/{atoll => redgate/falls}/icons/turfs/water.dmi (100%) rename maps/{atoll => redgate/falls}/sounds/lakeamb.ogg (100%) rename maps/{atoll => redgate/falls}/sounds/monolith.ogg (100%) diff --git a/code/game/turfs/simulated/underwater.dm b/code/game/turfs/simulated/underwater.dm index 348d919e80..ac98d36fc7 100644 --- a/code/game/turfs/simulated/underwater.dm +++ b/code/game/turfs/simulated/underwater.dm @@ -71,9 +71,9 @@ water_state = "cult" /turf/simulated/floor/water/underwater/ruins - icon = 'maps/atoll/icons/turfs/marble.dmi' + icon = 'maps/redgate/falls/icons/turfs/marble.dmi' icon_state = "1" // So it shows up in the map editor as water. - water_icon = 'maps/atoll/icons/turfs/marble.dmi' + water_icon = 'maps/redgate/falls/icons/turfs/marble.dmi' water_state = "1" /turf/simulated/floor/water/underwater/sand diff --git a/maps/atoll/atoll.dmm b/maps/atoll/atoll.dmm deleted file mode 100644 index 55567d90fd..0000000000 --- a/maps/atoll/atoll.dmm +++ /dev/null @@ -1,397 +0,0 @@ -"aa" = (/obj/effect/floor_decal/atoll{icon_state = "mural"; dir = 1},/obj/machinery/gateway{dir = 9},/turf/simulated/floor/atoll,/area/gateway/atoll) -"ab" = (/obj/effect/floor_decal/atoll/border/invert{icon_state = "border_invert"; dir = 4},/obj/effect/floor_decal/atoll/border/invert{icon_state = "border_invert"; dir = 1},/obj/machinery/gateway{dir = 1},/turf/simulated/floor/atoll,/area/gateway/atoll) -"ac" = (/obj/effect/floor_decal/atoll{icon_state = "mural"; dir = 8},/obj/machinery/gateway{dir = 5},/turf/simulated/floor/atoll,/area/gateway/atoll) -"ad" = (/obj/effect/floor_decal/atoll{icon_state = "mural"; dir = 8},/turf/simulated/floor/atoll,/area/gateway/atoll) -"ae" = (/obj/effect/floor_decal/atoll{icon_state = "mural"; dir = 1},/turf/simulated/floor/atoll,/area/gateway/atoll) -"af" = (/obj/effect/floor_decal/atoll{icon_state = "mural"; dir = 4},/obj/machinery/gateway{dir = 8},/turf/simulated/floor/atoll,/area/gateway/atoll) -"ag" = (/obj/effect/floor_decal/atoll/moss/random,/turf/simulated/floor/atoll,/area/gateway/atoll) -"ah" = (/obj/effect/floor_decal/atoll,/turf/simulated/floor/atoll,/area/gateway/atoll) -"ai" = (/obj/effect/floor_decal/atoll{icon_state = "mural"; dir = 4},/turf/simulated/floor/atoll,/area/gateway/atoll) -"aj" = (/obj/structure/flora/moss,/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 1},/turf/simulated/floor/atoll/vertical,/area/gateway/atoll) -"ak" = (/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 1},/turf/simulated/floor/atoll/vertical,/area/gateway/atoll) -"al" = (/turf/simulated/floor/atoll/vertical,/area/gateway/atoll) -"am" = (/turf/simulated/floor/atoll,/area/gateway/atoll) -"an" = (/turf/simulated/floor/water/atoll,/area/gateway/atoll) -"ao" = (/obj/structure/railing/overhang/waterless,/turf/simulated/floor/water/atoll,/area/gateway/atoll) -"ap" = (/obj/effect/decal/shadow,/turf/simulated/floor/atoll/vertical,/area/gateway/atoll) -"aq" = (/obj/structure/railing/overhang,/turf/simulated/floor/water/atoll,/area/gateway/atoll) -"ar" = (/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 4},/turf/simulated/floor/water/atoll,/area/gateway/atoll) -"as" = (/obj/structure/bed/chair/sofa/bench/marble,/turf/simulated/floor/atoll,/area/gateway/atoll) -"at" = (/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 8},/turf/simulated/floor/water/atoll,/area/gateway/atoll) -"au" = (/obj/effect/decal/shadow{icon_state = "wall_shadow"; dir = 1},/turf/simulated/floor/atoll/vertical,/area/gateway/atoll) -"av" = (/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 4},/turf/simulated/floor/water/atoll,/area/gateway/atoll) -"aw" = (/obj/structure/lightpost/atoll,/turf/simulated/floor/atoll,/area/gateway/atoll) -"ax" = (/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 8},/turf/simulated/floor/water/atoll,/area/gateway/atoll) -"ay" = (/obj/structure/flora/moss{icon_state = "moss"; dir = 8},/turf/simulated/floor/atoll,/area/gateway/atoll) -"az" = (/obj/effect/decal/shadow{icon_state = "wall_shadow"; dir = 4},/turf/simulated/floor/atoll/vertical,/area/gateway/atoll) -"aA" = (/obj/effect/decal/shadow/silhouette/pillar{icon_state = "silhouette_p"; dir = 1},/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 1},/turf/simulated/floor/water/atoll,/area/gateway/atoll) -"aB" = (/obj/machinery/gateway/centerstation,/turf/simulated/floor/atoll,/area/gateway/atoll) -"aC" = (/obj/effect/blocker,/turf/simulated/floor/water/atoll,/area/gateway/atoll) -"aD" = (/obj/effect/blocker,/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 4},/turf/simulated/floor/water/atoll,/area/gateway/atoll) -"aE" = (/obj/effect/blocker,/obj/effect/floor_decal/atoll/moss/random,/turf/simulated/floor/atoll,/area/gateway/atoll) -"aF" = (/obj/effect/blocker,/turf/simulated/floor/atoll,/area/gateway/atoll) -"aG" = (/obj/effect/blocker,/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 8},/turf/simulated/floor/water/atoll,/area/gateway/atoll) -"aH" = (/obj/effect/blocker,/obj/effect/decal/shadow{icon_state = "wall_shadow"; dir = 8},/turf/simulated/floor/atoll/vertical,/area/gateway/atoll) -"aI" = (/obj/effect/blocker,/obj/structure/railing/overhang/waterless,/turf/simulated/floor/water/atoll,/area/gateway/atoll) -"aJ" = (/obj/effect/blocker,/obj/effect/decal/shadow{icon_state = "wall_shadow"; dir = 4},/turf/simulated/floor/atoll/vertical,/area/gateway/atoll) -"aK" = (/obj/effect/blocker,/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 1},/turf/simulated/floor/atoll/vertical,/area/gateway/atoll) -"aL" = (/obj/effect/blocker,/turf/simulated/floor/atoll/vertical,/area/gateway/atoll) -"aM" = (/obj/effect/blocker,/obj/structure/flora/moss{icon_state = "moss"; dir = 8},/turf/simulated/floor/atoll/vertical,/area/gateway/atoll) -"aN" = (/obj/effect/blocker,/obj/structure/flora/moss,/turf/simulated/floor/atoll/vertical,/area/gateway/atoll) -"aO" = (/obj/effect/decal/shadow/silhouette,/turf/simulated/floor/water/atoll,/area/gateway/atoll) -"aP" = (/obj/effect/floor_decal/atoll{icon_state = "mural"; dir = 4},/obj/structure/bed/chair/sofa/bench/marble{dir = 4},/turf/simulated/floor/atoll,/area/gateway/atoll) -"aQ" = (/obj/effect/floor_decal/atoll/border{icon_state = "border"; dir = 9},/obj/effect/floor_decal/atoll/bronze,/turf/simulated/floor/atoll,/area/gateway/atoll) -"aR" = (/obj/effect/floor_decal/atoll/border,/obj/effect/floor_decal/atoll/bronze,/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 8},/turf/simulated/floor/atoll,/area/gateway/atoll) -"aS" = (/obj/effect/floor_decal/atoll/border{icon_state = "border"; dir = 5},/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 8},/turf/simulated/floor/atoll,/area/gateway/atoll) -"aT" = (/obj/effect/floor_decal/atoll,/obj/structure/bed/chair/sofa/bench/marble{icon_state = "bench"; dir = 8},/turf/simulated/floor/atoll,/area/gateway/atoll) -"aU" = (/obj/effect/decal/shadow{icon_state = "wall_shadow"; dir = 8},/turf/simulated/floor/atoll/vertical,/area/gateway/atoll) -"aV" = (/obj/structure/flora/lily2,/turf/simulated/floor/water/atoll,/area/gateway/atoll) -"aW" = (/obj/structure/flora/moss{icon_state = "moss"; dir = 1},/turf/simulated/floor/atoll/vertical,/area/gateway/atoll) -"aX" = (/obj/effect/decal/shadow/silhouette{icon_state = "silhouette"; dir = 1},/turf/simulated/floor/water/atoll,/area/gateway/atoll) -"aY" = (/obj/effect/floor_decal/atoll/border{icon_state = "border"; dir = 9},/turf/simulated/floor/atoll,/area/gateway/atoll) -"aZ" = (/obj/effect/floor_decal/atoll/bronze,/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 4},/obj/effect/floor_decal/atoll/border/invert{icon_state = "border_invert"; dir = 1},/turf/simulated/floor/atoll,/area/gateway/atoll) -"ba" = (/obj/structure/flora/lily2,/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 8},/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 1},/turf/simulated/floor/water/atoll,/area/gateway/atoll) -"bb" = (/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 1},/turf/simulated/floor/water/atoll,/area/gateway/atoll) -"bc" = (/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 1},/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 4},/turf/simulated/floor/water/atoll,/area/gateway/atoll) -"bd" = (/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 1},/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 8},/obj/effect/floor_decal/atoll/border/invert{icon_state = "border_invert"; dir = 4},/turf/simulated/floor/atoll,/area/gateway/atoll) -"be" = (/obj/effect/floor_decal/atoll/border{icon_state = "border"; dir = 5},/turf/simulated/floor/atoll,/area/gateway/atoll) -"bf" = (/obj/effect/floor_decal/atoll/border{icon_state = "border"; dir = 8},/turf/simulated/floor/atoll,/area/gateway/atoll) -"bg" = (/obj/effect/floor_decal/atoll/bronze,/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 4},/turf/simulated/floor/atoll,/area/gateway/atoll) -"bh" = (/obj/structure/railing/overhang,/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 8},/turf/simulated/floor/water/atoll,/area/gateway/atoll) -"bi" = (/obj/structure/flora/lily3,/obj/structure/railing/overhang,/turf/simulated/floor/water/atoll,/area/gateway/atoll) -"bj" = (/obj/structure/railing/overhang,/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 4},/turf/simulated/floor/water/atoll,/area/gateway/atoll) -"bk" = (/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 1},/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 8},/turf/simulated/floor/atoll,/area/gateway/atoll) -"bl" = (/obj/effect/floor_decal/atoll/border{icon_state = "border"; dir = 4},/turf/simulated/floor/atoll,/area/gateway/atoll) -"bm" = (/obj/structure/flora/lily3,/turf/simulated/floor/water/atoll,/area/gateway/atoll) -"bn" = (/obj/effect/floor_decal/atoll/border{icon_state = "border"; dir = 10},/turf/simulated/floor/atoll,/area/gateway/atoll) -"bo" = (/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 4},/obj/effect/floor_decal/atoll/border/invert{icon_state = "border_invert"; dir = 8},/turf/simulated/floor/atoll,/area/gateway/atoll) -"bp" = (/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 1},/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 4},/turf/simulated/floor/atoll,/area/gateway/atoll) -"bq" = (/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 1},/obj/effect/floor_decal/atoll/border/invert,/turf/simulated/floor/atoll,/area/gateway/atoll) -"br" = (/obj/effect/floor_decal/atoll/border{icon_state = "border"; dir = 6},/turf/simulated/floor/atoll,/area/gateway/atoll) -"bs" = (/obj/structure/flora/lily1,/turf/simulated/floor/water/atoll,/area/gateway/atoll) -"bt" = (/obj/structure/flora/moss{icon_state = "moss"; dir = 8},/turf/simulated/floor/atoll/vertical,/area/gateway/atoll) -"bu" = (/obj/effect/floor_decal/atoll{icon_state = "mural"; dir = 1},/obj/structure/bed/chair/sofa/bench/marble{dir = 4},/turf/simulated/floor/atoll,/area/gateway/atoll) -"bv" = (/obj/effect/floor_decal/atoll/border{icon_state = "border"; dir = 10},/obj/effect/floor_decal/atoll/moss/random,/turf/simulated/floor/atoll,/area/gateway/atoll) -"bw" = (/obj/effect/floor_decal/atoll/border{icon_state = "border"; dir = 1},/turf/simulated/floor/atoll,/area/gateway/atoll) -"bx" = (/obj/effect/floor_decal/atoll/border/invert,/obj/effect/floor_decal/atoll/border/invert{icon_state = "border_invert"; dir = 8},/turf/simulated/floor/atoll,/area/gateway/atoll) -"by" = (/obj/effect/floor_decal/atoll/moss/random,/obj/effect/floor_decal/atoll/border/invert,/obj/effect/floor_decal/atoll/border/invert{icon_state = "border_invert"; dir = 8},/turf/simulated/floor/atoll,/area/gateway/atoll) -"bz" = (/obj/effect/floor_decal/atoll{icon_state = "mural"; dir = 8},/obj/structure/bed/chair/sofa/bench/marble{icon_state = "bench"; dir = 8},/turf/simulated/floor/atoll,/area/gateway/atoll) -"bA" = (/obj/effect/decal/shadow,/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 1},/turf/simulated/floor/atoll/vertical,/area/gateway/atoll) -"bB" = (/obj/effect/floor_decal/atoll/stairs,/obj/effect/decal/shadow,/turf/simulated/floor/atoll,/area/gateway/atoll) -"bC" = (/obj/structure/flora/moss{icon_state = "moss"; dir = 4},/turf/simulated/floor/atoll/vertical,/area/gateway/atoll) -"bD" = (/obj/structure/flora/moss{icon_state = "moss"; dir = 1},/turf/simulated/floor/water/atoll,/area/gateway/atoll) -"bE" = (/obj/effect/decal/shadow{icon_state = "wall_shadow"; dir = 1},/obj/structure/flora/moss{icon_state = "moss"; dir = 4},/turf/simulated/floor/atoll/vertical,/area/gateway/atoll) -"bF" = (/obj/effect/floor_decal/atoll/stairs,/obj/effect/decal/shadow{icon_state = "wall_shadow"; dir = 1},/turf/simulated/floor/atoll,/area/gateway/atoll) -"bG" = (/obj/effect/decal/shadow{icon_state = "wall_shadow"; dir = 1},/obj/structure/flora/moss{icon_state = "moss"; dir = 1},/turf/simulated/floor/atoll/vertical,/area/gateway/atoll) -"bH" = (/obj/effect/decal/shadow{icon_state = "wall_shadow"; dir = 1},/obj/structure/flora/moss{icon_state = "moss"; dir = 8},/turf/simulated/floor/atoll/vertical,/area/gateway/atoll) -"bI" = (/obj/effect/floor_decal/atoll/stairs,/obj/effect/decal/shadow{icon_state = "wall_shadow"; dir = 4},/turf/simulated/floor/atoll,/area/gateway/atoll) -"bJ" = (/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 9},/turf/simulated/floor/atoll,/area/gateway/atoll) -"bK" = (/obj/structure/bed/chair/sofa/bench/marble,/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 5},/turf/simulated/floor/atoll,/area/gateway/atoll) -"bL" = (/obj/effect/decal/shadow/silhouette{icon_state = "silhouette"; dir = 1},/obj/structure/railing/overhang,/turf/simulated/floor/water/atoll,/area/gateway/atoll) -"bM" = (/obj/structure/flora/lily2,/obj/structure/railing/overhang,/turf/simulated/floor/water/atoll,/area/gateway/atoll) -"bN" = (/obj/effect/floor_decal/atoll/stairs,/obj/effect/decal/shadow{icon_state = "wall_shadow"; dir = 8},/turf/simulated/floor/atoll,/area/gateway/atoll) -"bO" = (/obj/structure/flora/moss{icon_state = "moss"; dir = 8},/turf/simulated/floor/water/atoll,/area/gateway/atoll) -"bP" = (/obj/structure/flora/moss,/turf/simulated/floor/atoll/vertical,/area/gateway/atoll) -"bQ" = (/obj/structure/flora/log2,/turf/simulated/floor/water/atoll,/area/gateway/atoll) -"bR" = (/obj/structure/flora/tree/atoll{icon_state = "green"; dir = 4},/obj/effect/floor_decal/atoll/moss/random,/turf/simulated/floor/atoll,/area/gateway/atoll) -"bS" = (/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 4},/turf/simulated/floor/atoll,/area/gateway/atoll) -"bT" = (/obj/effect/decal/shadow/floor,/turf/simulated/floor/atoll,/area/gateway/atoll) -"bU" = (/obj/effect/decal/shadow/floor,/obj/effect/floor_decal/atoll/moss/random,/turf/simulated/floor/atoll,/area/gateway/atoll) -"bV" = (/obj/effect/decal/shadow/floor,/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 5},/turf/simulated/floor/atoll,/area/gateway/atoll) -"bW" = (/obj/structure/bed/chair/sofa/bench/marble{dir = 4},/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 1},/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 8},/turf/simulated/floor/atoll,/area/gateway/atoll) -"bX" = (/obj/structure/bed/chair/sofa/bench/marble{icon_state = "bench"; dir = 8},/obj/effect/floor_decal/atoll/bronze,/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 4},/turf/simulated/floor/atoll,/area/gateway/atoll) -"bY" = (/obj/structure/flora/tree/atoll{icon_state = "green"; dir = 1},/obj/effect/floor_decal/atoll/moss/random,/turf/simulated/floor/atoll,/area/gateway/atoll) -"bZ" = (/obj/effect/floor_decal/atoll/moss/random,/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 1},/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 8},/turf/simulated/floor/atoll,/area/gateway/atoll) -"ca" = (/obj/effect/floor_decal/atoll/bronze,/turf/simulated/floor/atoll,/area/gateway/atoll) -"cb" = (/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 6},/turf/simulated/floor/atoll,/area/gateway/atoll) -"cc" = (/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 10},/turf/simulated/floor/atoll,/area/gateway/atoll) -"cd" = (/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 8},/obj/effect/floor_decal/atoll/bronze,/turf/simulated/floor/atoll,/area/gateway/atoll) -"ce" = (/obj/effect/floor_decal/atoll/bronze,/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 8},/turf/simulated/floor/atoll,/area/gateway/atoll) -"cf" = (/obj/structure/bed/chair/sofa/bench/marble{icon_state = "bench"; dir = 1},/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 6},/turf/simulated/floor/atoll,/area/gateway/atoll) -"cg" = (/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 1},/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 8},/turf/simulated/floor/water/atoll,/area/gateway/atoll) -"ch" = (/turf/simulated/floor/beach/sand/outdoors/atoll,/area/gateway/atoll) -"ci" = (/turf/simulated/floor/outdoors/grass/heavy/atoll,/area/gateway/atoll) -"cj" = (/obj/structure/flora/tree/jungle,/turf/simulated/floor/outdoors/grass/heavy/atoll,/area/gateway/atoll) -"ck" = (/obj/structure/flora/tree/jungle_small,/turf/simulated/floor/outdoors/grass/heavy/atoll,/area/gateway/atoll) -"cl" = (/obj/structure/flora/bboulder1,/turf/simulated/floor/outdoors/grass/heavy/atoll,/area/gateway/atoll) -"cm" = (/obj/structure/flora/log1,/turf/simulated/floor/atoll,/area/gateway/atoll) -"cn" = (/obj/structure/flora/ausbushes/reedbush,/turf/simulated/floor/outdoors/grass/heavy/atoll,/area/gateway/atoll) -"co" = (/obj/structure/flora/rocks1,/turf/simulated/floor/outdoors/grass/heavy/atoll,/area/gateway/atoll) -"cp" = (/obj/structure/flora/rocks2,/turf/simulated/floor/outdoors/grass/heavy/atoll,/area/gateway/atoll) -"cq" = (/obj/structure/flora/ausbushes/fernybush,/turf/simulated/floor/outdoors/grass/heavy/atoll,/area/gateway/atoll) -"cr" = (/obj/structure/flora/bboulder2,/turf/simulated/floor/outdoors/grass/heavy/atoll,/area/gateway/atoll) -"cs" = (/obj/structure/flora/log1,/turf/simulated/floor/beach/sand/outdoors/atoll,/area/gateway/atoll) -"ct" = (/obj/structure/bed/chair/sofa/bench/marble,/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 9},/turf/simulated/floor/atoll,/area/gateway/atoll) -"cu" = (/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 1},/turf/simulated/floor/atoll,/area/gateway/atoll) -"cv" = (/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 8},/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 1},/turf/simulated/floor/atoll,/area/gateway/atoll) -"cw" = (/obj/effect/step_trigger/teleporter/atoll{teleport_x = 48; teleport_y = 107},/turf/simulated/floor/atoll,/area/gateway/atoll) -"cx" = (/obj/effect/step_trigger/teleporter/atoll{teleport_x = 33; teleport_y = 107},/obj/effect/floor_decal/atoll/border{icon_state = "border"; dir = 1},/obj/effect/floor_decal/atoll/border,/turf/simulated/floor/atoll,/area/gateway/atoll) -"cy" = (/obj/structure/flora/ausbushes/palebush,/turf/simulated/floor/outdoors/grass/heavy/atoll,/area/gateway/atoll) -"cz" = (/obj/structure/flora/tree/atoll{icon_state = "green"; dir = 8},/obj/effect/floor_decal/atoll/moss/random,/turf/simulated/floor/atoll,/area/gateway/atoll) -"cA" = (/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 4},/obj/effect/floor_decal/atoll/bronze,/turf/simulated/floor/atoll,/area/gateway/atoll) -"cB" = (/obj/structure/flora/log1,/turf/simulated/floor/outdoors/grass/heavy/atoll,/area/gateway/atoll) -"cC" = (/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 8},/turf/simulated/floor/atoll,/area/gateway/atoll) -"cD" = (/obj/structure/bed/chair/sofa/bench/marble{icon_state = "bench"; dir = 1},/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 10},/turf/simulated/floor/atoll,/area/gateway/atoll) -"cE" = (/obj/effect/floor_decal/atoll/moss/random,/obj/effect/floor_decal/atoll/bronze,/turf/simulated/floor/atoll,/area/gateway/atoll) -"cF" = (/obj/structure/flora/smallbould,/turf/simulated/floor/outdoors/grass/heavy/atoll,/area/gateway/atoll) -"cG" = (/obj/structure/flora/ausbushes/pointybush,/turf/simulated/floor/outdoors/grass/heavy/atoll,/area/gateway/atoll) -"cH" = (/obj/effect/floor_decal/atoll/border/invert{icon_state = "border_invert"; dir = 8},/obj/effect/floor_decal/atoll/border/invert,/turf/simulated/floor/atoll,/area/gateway/atoll) -"cI" = (/obj/effect/decal/shadow,/obj/structure/flora/moss{icon_state = "moss"; dir = 8},/turf/simulated/floor/atoll/vertical,/area/gateway/atoll) -"cJ" = (/obj/effect/decal/shadow,/obj/structure/flora/moss{icon_state = "moss"; dir = 1},/turf/simulated/floor/atoll/vertical,/area/gateway/atoll) -"cK" = (/obj/effect/step_trigger/teleporter/atoll{teleport_x = 62; teleport_y = 103},/turf/simulated/floor/atoll,/area/gateway/atoll) -"cL" = (/obj/structure/flora/tree/atoll{icon_state = "green"; dir = 4},/turf/simulated/floor/atoll,/area/gateway/atoll) -"cM" = (/obj/structure/flora/log2,/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 4},/turf/simulated/floor/water/atoll,/area/gateway/atoll) -"cN" = (/obj/structure/flora/ausbushes/fullgrass,/turf/simulated/floor/outdoors/grass/heavy/atoll,/area/gateway/atoll) -"cO" = (/obj/structure/flora/tree/atoll{icon_state = "green"; dir = 1},/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 1},/turf/simulated/floor/atoll/vertical,/area/gateway/atoll) -"cP" = (/obj/structure/flora/moss{icon_state = "moss"; dir = 4},/turf/simulated/floor/water/atoll,/area/gateway/atoll) -"cQ" = (/obj/effect/step_trigger/teleporter/atoll{teleport_x = 99; teleport_y = 83},/turf/simulated/floor/atoll,/area/gateway/atoll) -"cR" = (/obj/structure/flora/moss{icon_state = "moss"; dir = 8},/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 1},/turf/simulated/floor/atoll/vertical,/area/gateway/atoll) -"cS" = (/obj/effect/step_trigger/teleporter/atoll{teleport_x = 108; teleport_y = 90},/obj/effect/floor_decal/atoll/border,/obj/effect/floor_decal/atoll/border{icon_state = "border"; dir = 1},/turf/simulated/floor/atoll,/area/gateway/atoll) -"cT" = (/obj/effect/decal/shadow/silhouette/pillar{icon_state = "silhouette_p"; dir = 4},/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 1},/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 4},/turf/simulated/floor/water/atoll,/area/gateway/atoll) -"cU" = (/obj/structure/flora/tree/atoll{icon_state = "green"; dir = 1},/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 8},/turf/simulated/floor/water/atoll,/area/gateway/atoll) -"cV" = (/obj/effect/floor_decal/atoll/border/invert{icon_state = "border_invert"; dir = 8},/turf/simulated/floor/atoll,/area/gateway/atoll) -"cW" = (/obj/effect/floor_decal/atoll/border/invert,/turf/simulated/floor/atoll,/area/gateway/atoll) -"cX" = (/obj/structure/flora/tree/atoll/huge,/turf/simulated/floor/beach/sand/outdoors/atoll,/area/gateway/atoll) -"cY" = (/obj/effect/floor_decal/atoll/border,/turf/simulated/floor/atoll,/area/gateway/atoll) -"cZ" = (/obj/effect/floor_decal/atoll/border/invert{icon_state = "border_invert"; dir = 4},/turf/simulated/floor/atoll,/area/gateway/atoll) -"da" = (/obj/structure/flora/lily1,/obj/structure/railing/overhang,/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 4},/turf/simulated/floor/water/atoll,/area/gateway/atoll) -"db" = (/obj/effect/floor_decal/atoll,/obj/machinery/gateway{dir = 4},/turf/simulated/floor/atoll,/area/gateway/atoll) -"dc" = (/obj/structure/bed/chair/sofa/bench/marble{dir = 4},/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 9},/turf/simulated/floor/atoll,/area/gateway/atoll) -"dd" = (/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 4},/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 1},/turf/simulated/floor/atoll,/area/gateway/atoll) -"de" = (/obj/structure/bed/chair/sofa/bench/marble,/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 4},/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 1},/turf/simulated/floor/atoll,/area/gateway/atoll) -"df" = (/obj/structure/bed/chair/sofa/bench/marble{icon_state = "bench"; dir = 8},/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 5},/turf/simulated/floor/atoll,/area/gateway/atoll) -"dg" = (/obj/effect/floor_decal/atoll/border/invert{icon_state = "border_invert"; dir = 1},/turf/simulated/floor/atoll,/area/gateway/atoll) -"dh" = (/obj/machinery/gateway,/turf/simulated/floor/atoll,/area/gateway/atoll) -"di" = (/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 9},/obj/effect/floor_decal/atoll/moss/random,/turf/simulated/floor/atoll,/area/gateway/atoll) -"dj" = (/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 1},/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 4},/obj/effect/floor_decal/atoll/moss/random,/turf/simulated/floor/atoll,/area/gateway/atoll) -"dk" = (/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 5},/obj/effect/floor_decal/atoll/moss/random,/turf/simulated/floor/atoll,/area/gateway/atoll) -"dl" = (/obj/structure/flora/lily2,/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 1},/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 8},/turf/simulated/floor/water/atoll,/area/gateway/atoll) -"dm" = (/obj/effect/floor_decal/atoll/border/invert{icon_state = "border_invert"; dir = 8},/obj/effect/floor_decal/atoll/border/invert{icon_state = "border_invert"; dir = 1},/turf/simulated/floor/atoll,/area/gateway/atoll) -"dn" = (/obj/effect/floor_decal/atoll/power,/turf/simulated/floor/atoll{desc = "Scuff and weathered etchings make these floors out to be pretty old. This particular area looks energized, maybe it can supply power to something?"},/area/gateway/atoll/powered) -"do" = (/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 1},/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 8},/obj/effect/floor_decal/atoll/moss/random,/turf/simulated/floor/atoll,/area/gateway/atoll) -"dp" = (/obj/effect/floor_decal/atoll/moss/random,/obj/structure/flora/tree/atoll{icon_state = "green"; dir = 4},/turf/simulated/floor/atoll,/area/gateway/atoll) -"dq" = (/obj/effect/floor_decal/atoll/bronze,/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 4},/obj/effect/floor_decal/atoll/moss/random,/turf/simulated/floor/atoll,/area/gateway/atoll) -"dr" = (/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 10},/obj/effect/floor_decal/atoll/moss/random,/turf/simulated/floor/atoll,/area/gateway/atoll) -"ds" = (/obj/effect/floor_decal/atoll/bronze,/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 8},/obj/effect/floor_decal/atoll/moss/random,/turf/simulated/floor/atoll,/area/gateway/atoll) -"dt" = (/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 6},/obj/effect/floor_decal/atoll/moss/random,/turf/simulated/floor/atoll,/area/gateway/atoll) -"du" = (/obj/effect/floor_decal/atoll/moss/random,/obj/effect/floor_decal/atoll/border/invert,/turf/simulated/floor/atoll,/area/gateway/atoll) -"dv" = (/obj/structure/flora/lily3,/obj/structure/railing/overhang,/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 8},/turf/simulated/floor/water/atoll,/area/gateway/atoll) -"dw" = (/obj/structure/flora/lily3,/obj/structure/railing/overhang,/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 4},/turf/simulated/floor/water/atoll,/area/gateway/atoll) -"dx" = (/obj/effect/decal/shadow/silhouette/pillar,/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 1},/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 4},/turf/simulated/floor/water/atoll,/area/gateway/atoll) -"dy" = (/obj/effect/decal/shadow/silhouette/pillar,/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 1},/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 8},/turf/simulated/floor/water/atoll,/area/gateway/atoll) -"dz" = (/obj/structure/bed/chair/sofa/bench/marble{dir = 4},/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 10},/turf/simulated/floor/atoll,/area/gateway/atoll) -"dA" = (/obj/structure/bed/chair/sofa/bench/marble{icon_state = "bench"; dir = 1},/obj/effect/floor_decal/atoll/bronze,/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 8},/turf/simulated/floor/atoll,/area/gateway/atoll) -"dB" = (/obj/structure/bed/chair/sofa/bench/marble{icon_state = "bench"; dir = 8},/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 6},/turf/simulated/floor/atoll,/area/gateway/atoll) -"dC" = (/obj/effect/decal/shadow/silhouette/pillar{icon_state = "silhouette_p"; dir = 8},/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 1},/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 8},/turf/simulated/floor/water/atoll,/area/gateway/atoll) -"dD" = (/obj/effect/decal/shadow/silhouette/pillar{icon_state = "silhouette_p"; dir = 8},/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 1},/turf/simulated/floor/water/atoll,/area/gateway/atoll) -"dE" = (/obj/effect/decal/shadow/silhouette/pillar{icon_state = "silhouette_p"; dir = 4},/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 1},/turf/simulated/floor/water/atoll,/area/gateway/atoll) -"dF" = (/obj/effect/floor_decal/atoll/border{icon_state = "border"; dir = 4},/obj/effect/floor_decal/atoll/moss/random,/turf/simulated/floor/atoll,/area/gateway/atoll) -"dG" = (/obj/structure/flora/tree/atoll{icon_state = "green"; dir = 8},/obj/effect/floor_decal/atoll/moss/random,/obj/effect/floor_decal/atoll/border/invert{icon_state = "border_invert"; dir = 4},/turf/simulated/floor/atoll,/area/gateway/atoll) -"dH" = (/obj/structure/flora/ausbushes/genericbush,/turf/simulated/floor/outdoors/grass/heavy/atoll,/area/gateway/atoll) -"dI" = (/obj/structure/railing/overhang/waterless,/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 4},/turf/simulated/floor/water/atoll,/area/gateway/atoll) -"dJ" = (/obj/structure/railing/overhang/waterless,/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 8},/turf/simulated/floor/water/atoll,/area/gateway/atoll) -"dK" = (/obj/structure/flora/tree/atoll,/obj/effect/floor_decal/atoll/moss/random,/turf/simulated/floor/atoll,/area/gateway/atoll) -"dL" = (/obj/structure/flora/moss,/obj/effect/step_trigger/teleporter/atoll{teleport_x = 97; teleport_y = 46},/turf/simulated/floor/atoll,/area/gateway/atoll) -"dM" = (/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 1},/turf/simulated/floor/water/atoll,/area/gateway/atoll) -"dN" = (/obj/effect/decal/shadow,/obj/structure/flora/moss{icon_state = "moss"; dir = 4},/turf/simulated/floor/atoll/vertical,/area/gateway/atoll) -"dO" = (/obj/structure/flora/ausbushes/grassybush,/turf/simulated/floor/outdoors/grass/heavy/atoll,/area/gateway/atoll) -"dP" = (/obj/effect/step_trigger/teleporter/atoll{teleport_x = 80; teleport_y = 55},/obj/effect/floor_decal/atoll/border{icon_state = "border"; dir = 1},/obj/effect/floor_decal/atoll/border,/turf/simulated/floor/atoll,/area/gateway/atoll) -"dQ" = (/obj/structure/flora/tree/atoll/huge{icon_state = "tree"; dir = 1},/obj/structure/flora/rocks1,/turf/simulated/floor/outdoors/grass/heavy/atoll,/area/gateway/atoll) -"dR" = (/obj/effect/step_trigger/teleporter/atoll{teleport_x = 15; teleport_y = 39},/obj/effect/floor_decal/atoll/border,/obj/effect/floor_decal/atoll/border{icon_state = "border"; dir = 1},/turf/simulated/floor/atoll,/area/gateway/atoll) -"dS" = (/obj/effect/step_trigger/teleporter/atoll{teleport_x = 36; teleport_y = 41},/obj/effect/floor_decal/atoll,/turf/simulated/floor/atoll,/area/gateway/atoll) -"dT" = (/obj/structure/flora/ausbushes/sparsegrass,/turf/simulated/floor/outdoors/grass/heavy/atoll,/area/gateway/atoll) -"dU" = (/obj/effect/step_trigger/teleporter/atoll{teleport_x = 44; teleport_y = 33},/obj/effect/floor_decal/atoll/border/invert{icon_state = "border_invert"; dir = 1},/obj/effect/floor_decal/atoll/border/invert{icon_state = "border_invert"; dir = 4},/turf/simulated/floor/atoll,/area/gateway/atoll) -"dV" = (/obj/effect/step_trigger/teleporter/atoll{teleport_x = 44; teleport_y = 38},/obj/effect/floor_decal/atoll/border/invert,/obj/effect/floor_decal/atoll/border/invert{icon_state = "border_invert"; dir = 8},/turf/simulated/floor/atoll,/area/gateway/atoll) -"dW" = (/obj/effect/floor_decal/atoll/border{icon_state = "border"; dir = 8},/obj/effect/floor_decal/atoll/border{icon_state = "border"; dir = 4},/turf/simulated/floor/atoll,/area/gateway/atoll) -"dX" = (/obj/structure/flora/ausbushes/brflowers,/turf/simulated/floor/outdoors/grass/heavy/atoll,/area/gateway/atoll) -"dY" = (/obj/effect/step_trigger/teleporter/atoll{teleport_x = 30; teleport_y = 25},/obj/effect/floor_decal/atoll/border{icon_state = "border"; dir = 1},/obj/effect/floor_decal/atoll/border,/turf/simulated/floor/atoll,/area/gateway/atoll) -"dZ" = (/obj/structure/flora/ausbushes/sunnybush,/turf/simulated/floor/outdoors/grass/heavy/atoll,/area/gateway/atoll) -"ea" = (/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 4},/obj/structure/flora/lily1,/turf/simulated/floor/water/atoll,/area/gateway/atoll) -"eb" = (/obj/structure/flora/rocks1,/turf/simulated/floor/beach/sand/outdoors/atoll,/area/gateway/atoll) -"ec" = (/obj/effect/step_trigger/teleporter/atoll{teleport_x = 101; teleport_y = 19},/obj/effect/floor_decal/atoll/border{icon_state = "border"; dir = 1},/obj/effect/floor_decal/atoll/border,/turf/simulated/floor/atoll,/area/gateway/atoll) -"ed" = (/obj/effect/floor_decal/atoll/border{icon_state = "border"; dir = 1},/obj/effect/floor_decal/atoll/moss/random,/turf/simulated/floor/atoll,/area/gateway/atoll) -"ee" = (/obj/effect/step_trigger/teleporter/atoll{teleport_x = 114; teleport_y = 20},/obj/effect/floor_decal/atoll/border{icon_state = "border"; dir = 4},/obj/effect/floor_decal/atoll/border{icon_state = "border"; dir = 8},/turf/simulated/floor/atoll,/area/gateway/atoll) -"ef" = (/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 1},/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 4},/turf/simulated/floor/atoll/vertical,/area/gateway/atoll) -"eg" = (/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 4},/turf/simulated/floor/atoll/vertical,/area/gateway/atoll) -"eh" = (/obj/effect/step_trigger/teleporter/atoll{teleport_x = 33; teleport_y = 91},/obj/effect/floor_decal/atoll/border{icon_state = "border"; dir = 4},/obj/effect/floor_decal/atoll/border{icon_state = "border"; dir = 8},/turf/simulated/floor/atoll,/area/gateway/atoll) -"ei" = (/obj/effect/blocker,/obj/effect/decal/shadow/silhouette,/turf/simulated/floor/water/atoll,/area/gateway/atoll) -"ej" = (/obj/machinery/gateway{dir = 10},/turf/simulated/floor/atoll,/area/gateway/atoll) -"ek" = (/obj/machinery/gateway{dir = 6},/turf/simulated/floor/atoll,/area/gateway/atoll) -"el" = (/obj/effect/floor_decal/atoll/bronze,/obj/effect/floor_decal/atoll/border{icon_state = "border"; dir = 9},/turf/simulated/floor/atoll,/area/gateway/atoll) -"em" = (/obj/effect/floor_decal/atoll/bronze,/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 8},/obj/effect/floor_decal/atoll/border,/turf/simulated/floor/atoll,/area/gateway/atoll) -"en" = (/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 8},/obj/effect/floor_decal/atoll/border{icon_state = "border"; dir = 5},/turf/simulated/floor/atoll,/area/gateway/atoll) -"eo" = (/obj/effect/floor_decal/atoll/bronze,/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 4},/obj/effect/floor_decal/atoll/border{icon_state = "border"; dir = 8},/turf/simulated/floor/atoll,/area/gateway/atoll) -"ep" = (/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 8},/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 1},/obj/effect/floor_decal/atoll/border{icon_state = "border"; dir = 4},/turf/simulated/floor/atoll,/area/gateway/atoll) -"eq" = (/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 4},/obj/effect/floor_decal/atoll/border{icon_state = "border"; dir = 10},/turf/simulated/floor/atoll,/area/gateway/atoll) -"er" = (/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 4},/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 1},/obj/effect/floor_decal/atoll/border{icon_state = "border"; dir = 1},/turf/simulated/floor/atoll,/area/gateway/atoll) -"es" = (/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 1},/obj/effect/floor_decal/atoll/border{icon_state = "border"; dir = 6},/turf/simulated/floor/atoll,/area/gateway/atoll) -"et" = (/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 4},/obj/structure/railing/overhang,/turf/simulated/floor/water/atoll,/area/gateway/atoll) -"eu" = (/obj/effect/floor_decal/atoll/moss/random,/obj/effect/floor_decal/atoll/border/invert{icon_state = "border_invert"; dir = 1},/turf/simulated/floor/atoll,/area/gateway/atoll) -"ev" = (/obj/effect/floor_decal/atoll/moss/random,/obj/effect/floor_decal/atoll/border/invert{icon_state = "border_invert"; dir = 8},/turf/simulated/floor/atoll,/area/gateway/atoll) -"ew" = (/obj/effect/floor_decal/atoll/border{icon_state = "border"; dir = 8},/obj/effect/floor_decal/atoll/bronze,/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 4},/turf/simulated/floor/atoll,/area/gateway/atoll) -"ex" = (/obj/effect/floor_decal/atoll/border{icon_state = "border"; dir = 4},/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 8},/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 1},/turf/simulated/floor/atoll,/area/gateway/atoll) -"ey" = (/obj/effect/floor_decal/atoll/border/invert{icon_state = "border_invert"; dir = 1},/obj/effect/floor_decal/atoll/bronze,/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 4},/turf/simulated/floor/atoll,/area/gateway/atoll) -"ez" = (/obj/effect/floor_decal/atoll/border/invert{icon_state = "border_invert"; dir = 8},/obj/effect/floor_decal/atoll/bronze,/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 4},/turf/simulated/floor/atoll,/area/gateway/atoll) -"eA" = (/obj/effect/floor_decal/atoll/border{icon_state = "border"; dir = 9},/obj/structure/bed/chair/sofa/bench/marble,/turf/simulated/floor/atoll,/area/gateway/atoll) -"eB" = (/obj/effect/floor_decal/atoll/border{icon_state = "border"; dir = 1},/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 1},/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 4},/turf/simulated/floor/atoll,/area/gateway/atoll) -"eC" = (/obj/effect/floor_decal/atoll/border{icon_state = "border"; dir = 1},/obj/effect/floor_decal/atoll/moss/random,/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 1},/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 4},/turf/simulated/floor/atoll,/area/gateway/atoll) -"eD" = (/obj/effect/floor_decal/atoll/border{icon_state = "border"; dir = 9},/obj/effect/floor_decal/atoll/bronze,/obj/structure/bed/chair/sofa/bench/marble{dir = 4},/turf/simulated/floor/atoll,/area/gateway/atoll) -"eE" = (/obj/effect/floor_decal/atoll/moss/random,/obj/effect/floor_decal/atoll/border,/turf/simulated/floor/atoll,/area/gateway/atoll) -"eF" = (/obj/effect/step_trigger/teleporter/atoll{teleport_x = 45; teleport_y = 26},/obj/effect/floor_decal/atoll,/turf/simulated/floor/atoll,/area/gateway/atoll) -"eG" = (/obj/effect/floor_decal/atoll/moss/random,/obj/effect/floor_decal/atoll/border{icon_state = "border"; dir = 1},/turf/simulated/floor/atoll,/area/gateway/atoll) -"eH" = (/obj/effect/floor_decal/atoll/border{icon_state = "border"; dir = 5},/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 8},/obj/structure/bed/chair/sofa/bench/marble{icon_state = "bench"; dir = 8},/turf/simulated/floor/atoll,/area/gateway/atoll) -"eI" = (/obj/effect/floor_decal/atoll/moss/random,/obj/effect/floor_decal/atoll/border/invert{icon_state = "border_invert"; dir = 4},/turf/simulated/floor/atoll,/area/gateway/atoll) -"eJ" = (/obj/effect/floor_decal/atoll/moss/random,/obj/effect/floor_decal/atoll/border{icon_state = "border"; dir = 5},/turf/simulated/floor/atoll,/area/gateway/atoll) -"eK" = (/obj/effect/floor_decal/atoll/border{icon_state = "border"; dir = 10},/obj/structure/bed/chair/sofa/bench/marble{icon_state = "bench"; dir = 1},/turf/simulated/floor/atoll,/area/gateway/atoll) -"eL" = (/obj/effect/floor_decal/atoll/moss/random,/obj/effect/floor_decal/atoll/border{icon_state = "border"; dir = 6},/obj/structure/bed/chair/sofa/bench/marble{icon_state = "bench"; dir = 1},/turf/simulated/floor/atoll,/area/gateway/atoll) -"eM" = (/obj/effect/floor_decal/atoll/border{icon_state = "border"; dir = 10},/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 4},/obj/structure/bed/chair/sofa/bench/marble{dir = 4},/turf/simulated/floor/atoll,/area/gateway/atoll) -"eN" = (/obj/effect/floor_decal/atoll/border{icon_state = "border"; dir = 6},/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 1},/obj/structure/bed/chair/sofa/bench/marble{icon_state = "bench"; dir = 8},/turf/simulated/floor/atoll,/area/gateway/atoll) -"eO" = (/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 4},/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 1},/obj/structure/bed/chair/sofa/bench/marble,/turf/simulated/floor/atoll,/area/gateway/atoll) -"eP" = (/obj/effect/floor_decal/atoll/bronze,/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 8},/obj/structure/flora/tree/atoll{icon_state = "green"; dir = 8},/turf/simulated/floor/atoll,/area/gateway/atoll) -"eQ" = (/obj/effect/floor_decal/atoll/bronze,/obj/effect/floor_decal/atoll/bronze{icon_state = "bronze"; dir = 8},/obj/structure/bed/chair/sofa/bench/marble{icon_state = "bench"; dir = 1},/obj/effect/floor_decal/atoll/moss/random,/turf/simulated/floor/atoll,/area/gateway/atoll) -"eR" = (/obj/vehicle/boat{icon_state = "boat"; dir = 8},/turf/simulated/floor/water/atoll,/area/gateway/atoll) -"eS" = (/obj/vehicle/boat,/turf/simulated/floor/water/atoll,/area/gateway/atoll) -"eT" = (/obj/vehicle/boat{icon_state = "boat"; dir = 4},/turf/simulated/floor/water/atoll,/area/gateway/atoll) - -(1,1,1) = {" -anananananananananananananananananananananananananananananananananananananananananananananananananananananaoaoananananananananananananananaoanananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananan -ananananananananananananananananananananananananananananananananananananananananananananananananananananaradaeatananananananananananananaragatananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananan -ananananananananananananananananananananananananananananananananananananananananananananananananananananarahaiatanananananananananananananajananananananananananananananananananananananananananananananananananananananananananananananananaoaoaoaoaoaoaoaoanananananananananananananan -anananananananananananananananananananananananananananananananananananananananananananananananananananananakakananananananananananananananalanananananananananananananananananananananananananananananananananananananananananananananananaramamamamamamamamatananananananananananananan -ananananananananananananananananananananananananananananananananananananananananananananananaoaoaoananananapapananananananaqanananananananalanananananaoaoananananananananananananananananananananananananananananananananananananananananaramamamamamamamamatananananananananananananan -anananananananananananananananananananananananananananananananananananananananananananananaramasamatanananauauanananananavawaxananananananapananananaradaeatanananananananananananananananananananananananananananananananananananananananaramamamamamamamamatananananananananananananan -anananananananananananananananananananananananananananananananananananananananananananananaramagayatanananazazananananananaAanananananananauananananarahaiatananananananananananananananananananananananananananananananananananananananananakakakakakakakakanananananananananananananan -ananananananaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaDaEaFaEaGaCaCaCaHaHaCaIaIaIaIaIaIaIaIaIaIaIaCaCaJaCaCaCaCaCaKaKaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaLaLaLaMaLaLaNaLaCaCaCaCaCaCaCananananananan -ananananananaCanananananananananananananananananananananananananananananananananananananananakakakananananaOaOaraPaQaRaRaRaRaRaRaRaSaTatanaUanananananapapanananananananananananananananananananananananananananananananananananananananananalalalalalalalalananananananaCananananananan -ananananananaCananananananananananaVananananananananananananananananananananananananananananaWalalananananaXaXaraYaZbabbbbbbbbbbbcbdbeatanaOanananananauauanananananananananananananananananananananananananananananananananananananananananalalalalalalalalananananananaCananananananan -ananananananaCanananananananananananananananananananananananananananananananananananananananalalalanananananaVarbfbgbhaqaqbiaqaqbjbkblatanaXanananananazazanananananananananananananananananananananananananananananananananananananananananalalalalalalalalananananbmanaCananananananan -ananananananaCanananananananananananananananananananananananananananananananananananananananapapapananananananarbnbobpbpbpbpbpbpbpbqbratanananananananaUaUanananananananananananananananananananananananananananananananbsananananbmananananalalalalalbtalalananananananaCananananananan -ananananananaCanananananananananananananananananananananananananananananananananananananananauauauananananananarbubvbwbwbxbwbybwbwbrbzatanananbmanananaOaOanananananananananananananaoaoaoaoanaVananananananananananananananananananananananalbtalalalalalalananananananaCananananananan -ananananananaCananananbmanananananananananananananananananananananananananananananananaqananazazazanananananananbAbAbAbAbBbAbBbAbAbAbAananananananananaXaXananananananananananananaramamagamatanananananananananananananananananananananananalalalaWalalbCalananananananaCananananananan -ananananananaCanananananananananananananananananananananananananananananananananananavawaxanaUaUaUananananananbDaubEauaubFbGbFaubHauauananananananananananananananananananananananaramagamamatanananananananananananananananananananananananalalalalalalalalananananananaCananananananan -ananananananaCananananananananananananananananananananananananananananbmanaqaqaqaqananaAananaOaOaOananbmanananavazazazazbIazbIazazazazaxananananananananananananananananbmanananananakakakakananananananananananananananbmanananananaqanananapapapapapapapapanbmananananaCananananananan -ananananananaCanananananananananananananananananananananananananananananavbJbpbpbKbhaqaqaqaqbLbLbLaqaqaqbMaqaqbjaUaUaUaUbNaUbNaUaUaUaUaxanananananananananananananananananananananbOalalalbPanananananananananananananananananananavawaxananaubGauauauauauauananananananaCananananananan -ananananananaCananbQananananananananananananananananananananananananaqanavbkbRagbSamamamamamambSddddeOddddcuamambTbUbTbTbTbUbTbTbTbTbVaxanaqananananananaoaoaoanananananananananananalalalalananananananananananananananananananananaAanananazazazazazazazazananananananaCananananananan -ananananananaCanananananananbmananananananananananaVanananananananavawaxavbWagagamamamamamamamagagagamamamamamamamamamagamamamamagambXaxavawaxananananaramagbYatbsanananananananananalalalalananananananananananananananananananananananananaUaUaUaUaUaUaUaUananananananaCananananananan -ananananananaCanananananananananananananananananananananananananananaAanavbZamamcaamamamamamamcadsePeQcececCamamamamamamamamamamamamcbaxanaAananananananakakakanananananananananananalalalalananananananananananananananananananananananananaOaOaOaOaOaOaOaOananananananaCananananananan -ananananananaCanananananananananananbmanananananananananananananananananavcccdcecfcgbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbcamamamcgbbbbbbanananananananananalaWalanananananananananananapapapapananananananananananananananananananananananananaXaXaXaXaXaXaXaXananananananaCananananananan -ananananananaCananananananananananananananananananananananananananananananbbbbbbbbananaqanananananananananananananaqanavamamamaxanaqananananananananananalalalanananananananananananauauauauananananananananananananananananananananananananananananananananananananananaCananananananan -ananananananaCanananananananananananananananananchchchchchchchchchchananananananananavawaxanananananananananananavawaxavamamamaxavawaxanbmanananananananapapapananbsananananananananazazazazanananananananananananananbmananananananananananananananananananananananananaCananananananan -ananananananaCbmananananananananananananananananchcicichchcichcicichanananananananananaAananananananananananananbsaAanavamamamaxanaAananananananananananauauauanananananananbmanananaUaUaUaUananananananananananananananananananananananananananananananananananananananaCananananananan -ananananananaCanananananananananananananananananchcicicicicicicicichchananananananananananananananananananananananananavamamamaxananananananananananananazazazanananananananananananaOaOaOaOanananananananananananananananananananananananbmananananananananananananananaCananananananan -ananananananaCanananananananananananananananchchchcicicicicicicicichchchchanananananananananananananaVananananananananavamamamaxananananananananananananaUaUaUanananananananananananaXaXaXaXananananananananananananananananananananananananananananananananananananananaCananananananan -ananananananaCananananananananananbmananananchcicicjcicickciciclcicicicichananananananananananananananananananananananavamamamaxchchchchananananananananaOaOaOananananananananananananananananananananananananananbsananananananananananananananananananananananananananaCananananananan -ananananananaCanananananananananananananananchchchchcicicicicicicicicichchanananananananananananeRananananananananananavamamamchchcicichchanananananananaXaXaXanananananananananananananananananananananananananananananananananananananananananananananananananananananaCananananananan -ananananananaCananananananananananananananananchchchcicicicjcicicicickchchananananananananananananananananchchchchchchchamamcmcicicicicnchchchchchanananananananananananananananananananananananananananananananananananbmanananananananananananananananananananananananaCananananananan -ananananananaCanananananananananananananananananchchcicicicicicicicicicichananananananananchchchchchchchchchcicicicicicoamamamcicicicicicicicicichanananananananananananaqanananananananananananananananananananananananananananananananananananananananananananananananaCananananananan -ananananananaCananananananananananananananananananchcicpclcqcickcicicicichananananananananchcncicicicicicicicicicicicicramamamcicjcicicicicicicichchchchchchchananananavawaxanananananchchchchchchchchchananananananananananananananananananananananananananananananananaCananananananan -ananananananaCananananananananananananananananbmanchcicicicicicicickcicicsananananananananchcicicicicicicicjcicickcicictcuambSbKcicicicicicicickcicicicicicichanananananaAanananananchchcicicicickcicichchchchchchchananananbmanananananananananananananananananananananaCananananananan -ananananananaCananananananananananananananananananchciciciciciciadcYaecochchananananbmanchchaiaYdgciciciamcicicicickcicvagagagbgcpcicickcicicicicicicicrcicichaqaqaqaqaqaqaqaqaqaqaqchcrckcicncicicjctbpbpbpbKcicichchchchchananananananananananananananananananananananaCananananananan -ananananananaCananananananananananananananananananchchcickcicicibfcwblclcichananananananchcicxdmamciciciciamcicyciamamamagczagamamamamamamamamamamamamamamamamadaYcYcYcYcYcYcYbeaeamamamamamamamamamcuagagamcAcicicicicocBchchchananananananananananananananananananananaCananananananan -ananananananaCananananananananananananananananananchchcicicicrcjahbwaichchchbQanbsanananchclaebncVciciamciciciamcicicoamamagamamamamamamamamamamamamamamamamamahbnbwbwbwbwbwbwbraiamamamamamamamamamcCagbRamcAciciciciciclcichchananananananananananananananananananananaCananananananan -ananananananaCanananananananananananananananananbmchchchcrchchchcschcichananananananananchchchcicicicicicicicicicicicicDcCamcEcfcicicicicicicicicpcjcicicicichbbaAbbbbbbbbbbbbaAbbcscpcicicickcicFcicDcCagcEcfcicicjcicicicichchananananananananananananananananananananaCananananananan -ananananananaCananananananananananananananananananchchchchchanananchchchananananananananananchcicicicicicicicicicrcicicicVamcWcicicicicicicicicicicicicicicichanananananaqananananchcicicicicocicicicnamamamcicickcicicicicichchananananananananananananananananananananaCananananananan -ananananananaCananananananananananananananananananananananananaqananananananananananananananchcicicicjciclcicicicicicicibncHbrcicicncicjcicicicicicicicicicjchananananavawaxanananchchcicjciclcicGciciamamamclcicicicickcicichchananananananananananananananananananananaCananananananan -ananananananaCanananananananananananananananananananananananavawaxanananananananananananananchchchchchchchchcicnciciciciaeehadcicicicickcicicjcichchchchchchchanananananaAanananananchciciciciciciciciamamamcicicicicicicicicschananananananananananananananbmanananananaCananananananan -ananananananaCananananananananananananananananananananananananaAanananananananananananananananananananananchchchcicjchchchchchchchchchchchchchchchananananananananaVananananananananchcicicicicicickciamamamcicicicicicicicichanananananananananananananananananananananaCananananananan -ananananananaCananananananananananananananananananananananananananananananananananananananananananananananananchchchchanananananananananananananananananananananananananananananananchchckcicicicicicpamamamcicicickcicicicichanbQanananananananananananananananananananaCananananananan -ananananananaCanananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananchchchcicjciciciciamamamcjcicicicicjcicichanananananananananananananananananananananaCananananananan -ananananananaCananananananananananananananaoaoanananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananchchchchciciciciciamamamcicicicicicicichchanananananananananananananananananananananaCananananananan -ananananananaCanananananananananananananaramamatananananananananananananananananananananananananananananananananananananbmananananananananananananananananananananananananananananananchchchchchciciciamamamcicrcjcicicichchananananbmanananananananananananananananananaCananananananan -ananananananaCananananananananananananananakakananananananananananananananananananananananananananananananananananananananananananananananbmananananananananananananananananananbmananananananchchcjclamamamcochchchchchchanananananananananananananbsanananananananananaCananananananan -ananananananaCanananananananananananananancIcJanananananananananananananananbsananananananananananananananananananananananananananananananananananananananananananananananananananananananananchchcschamamamchchchanananananananananananananananananananananananananananaCananananananan -ananananananaCananananananananananbmanananauauanananbmanananananananananananananananananananananananananananananananananananananaoaoaoanananananananananananananananananananananananananananananananavamamamaxanananananananananananananananananananananananananananananaCananananananan -ananananananaCananananananananananananananazazanananananaoaoaoaoaoananananananananananananananananananananananananananananananaramamamatananananananananananananananananananananananananananananananavamamamaxanananananananananananananananananananananananananananananaCananananananan -ananananananaCananananananananananananananaUaUananananaramamagamcKatananananananaoaoanananananananananananananananananananananaramcLamatananananananbmananananananananananananananananananananananancMamamamaxanananbmanananananananananananananananananananananananananaCananananananan -ananananananaCananananananananananananananaOaOananananaragagagagagatanananananaramamatanananananbsanananananananananananananananakakakanananananananananananananananananananananananananananananananavamamamaxananananaoaoaoaoaoaoanananananananananananananananananananaCananananananan -ananananananaCananananananananananananananaXaXananananaragbRbYagamatananananananakcOananananananananananananananananananananananaWbtalanananananananananananananananananananananananananananananananavamamamaxanananaragagamasamamatananananananananananananananananananaCananananananan -ananananananaCananananananbmananananananananananananananakakakakakanananananancPapcJananananananananananananananananananaVanananalalalanananananananananananananananananananananananananananananananavamamamaxanananarcQagamagagczatanaoaobmananananananananananananananaCananananananan -ananananananaCanananananananananananbmanananaqananananbOaWalbCalalananananbmananauauananananananananananananananananananananananapapapanananananananananananananananananananananananananananananananavcVamamaxananananakakakakakcRanaradaeatananananananananananananananaCananananananan -ananananananaCananananananananananananananavawaxanananbmalalalalalanananananananazazananananananananananananananananananananananauauauanananananananananananananananananananananananananananananananavbfamamaxanaVananalaWbCalalalanarahaiatananananananananananbmanananaCananananananan -ananananananaCanananananananananananananananaAanananananapapapapapananananananbmaUaUananananananananananananananananananananananazazazananananananananananananananananananananananananananananananbsavbfamamaxananananalalalalalalananakakanananananananananananananananaCananananananan -ananananananaCananananananananananananananananbmananananauauauauauanananananananaOaOanbmananananananananananananananananananananaUaUaUananananananananananananananananananananananananananananananaqbjbfamamaxananananalalalalalalananalalanananananananananananananananaCananananananan -ananananananaCananananananananananananbmananananananananazazazazazanbmanananananaXaXananananananananananananananbsanananananananaOaOaOananananananananananananananbmananananananananananananananavaiaYdgamamaxananananalalalalalalananapapananananbmananananananananananaCananananananan -ananananananaCanananananananananananananananananananananaUaUaUaUaUanananananananbmananananananananananananananbmananananananananaXaXaXanananananananananananananananananananananananananananananavcSdmamamamaxananananalalalalalalananauauanananananananananananananananaCananananananan -ananananananaCanananananananananananananananananananananaOaOaOaOaOanananananananananananananananananananananbmanananananananananananananananananbmanananananananananananananananananananananananavaebncVamagaxananananapapapapapapananazazanananananananananananananananaCananananananan -ananananananaCanananananananananananananananananananananaXaXaXaXaXananananananananananananananananananbQanananananananananananananananananananananananananananananananananananananananananananananbbcTbfagagcUananananauauauauauauananaUaUbmananananananananananananananaCananananananan -ananananananaCananananananananananbsananananananananananananananananananananananananananananananananananbmanananananananananananananananananananananananananananananananananananananananananananananavbfamagaxananananazazazazazazananaOaOanananananananananananananananaCananananananan -ananananananaCanananananananananananananananananananbmanananananananananananananananananananaVanananananananananananananananananananananananananananananananananananananananananananananananananananavbfamamaxananananaUaUaUaUaUaUananaXaXanananananananananbmanananananaCananananananan -ananananananaCananananananananananananananananananananananananananananananbsananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananavdgamamaxananananaOaOaOaOaOaOanananananananananananananananananananaCananananananan -ananananananaCanananananananananananananananananananananananananbmanananananananananananananananananananananananananananananananananananananananananananananananananananananchchchchananananananananavamamamaxananananaXaXaXaXaXaXanananananananananananananananananananaCananananananan -ananananananaCananananananananananananananananananananananananananananananananananananananananananananananananananananananananaqananananananananananananbsanaqananananananchcicicichananananaqanananavamamamaxanananaqanananananananananananananananananaVanananananananaCananananananan -ananananananaCananananananananananananananananananananananananananananananananananananananaqanananananananaqananananananananavawaxanananeRananananananananavawaxanananananchcicicichanananavawaxananavcVamcWaxananavawaxananananananananananananananananananananananananaCananananananan -ananananananaCananananananananananananananbmananananananananananananananananananananananavawaxanananananavawaxananananananananaAananananananananananananananaAananananananchcXcicichananananaAanaqaqbjbfamblbhaqaqanaAanananananbmanananananananananananananananananananaCananananananan -ananananananaCananananananananananananananananananananananananananananananananananananananaAananaqaqaqananaAananbsananananaqaqaqaqaqananananananananananaqaqaqaqaqaneRbmananchchchananananananavaPaYcYdgamcZcYbeaTaxananananananananananananananananananananananananananaCananananananan -ananananananaCananbsananananchchchchchananananananananananananananbmananananbmanananananananandaaaabacbhaqaqaqaqaqaqaqaqbjdcdddedddfbhaqaqbMaqaqaqaqaqbjaYcYcYcYbebhaqaqaqaqaqaqaqaqaqaqaqaqaqbjaYdgcacecececCcZbeaxananananananananananananananananananananananananananaCananananananan -ananananananaCananananananchchchcicichchchanananananananananananananananananananananananananavahafaBdbaiamamamamamamamamamamcWbwcVamamamamamamamamamcZcYdgdidjdkcZcYdgamamamamamamamamamamamcZcYdgambgdlbbbcbkamblaxananananananananananananananananananananananananananaCananananananan -ananananananaCanananananchchcicicicicicichanananananananananananananananananananananananananavdmejdhekamamamamamamamamamamambldnbfamamamamamamamamamamamagdodpdqamamamamamamamamamamamamamamamamamambgaxbsavbkamblaxananananananananananananananananananananananananananaCananananananan -ananananananaCanananananchcicicicicicicichchananananananananananananananananananananananananavadaeamadaeamamamamamamamamamamcZcYdgamamamamamamamamamcWbwcVdrdsdtdubwcVamamamamamamamamamamamcWbwcVambgdvaqdwbkamblaxananananananananananananananananananananananananananaCananananananan -ananananananaCanananananchciclcicicickcicichchanananananananananananananananananananananananandxaibxahdybbbbbbbbbbbbbbbbcTdzcedAcedBdCbbbbbbbbbbbbbbbbcTbnbwbwbwbrdCbbbbbbbbbbbbbbbbbbbbbbbbbbcTbncVbSddddddcucWbraxananananananananananananananananananananananananananaCananananananan -ananananananaCanananananchchcocickcicicicicichananananananananananananananananananananananaqananbbbbbbananaqanbmanananananbbdDaAdEbbanananananananananbQbbdDaAdEbbananananananananananananananavbubnbwcVamcWbwbrbzaxananananananananananananananananananananananananananaCananananananan -ananananananaCananananananchcicicicicicrcicichanananananbmanananananananananananananananavawaxanananananavawaxananananananananaqananananananananananananananaqanananananananananananananananaqanbbbbcTbfamdFdCbbbbanaqanananananananananananananananananananananananananaCananananananan -ananananananaCanananananchchcicicicicpcqcicichananananananananananananananananananananananaAanananananananaAananananananananavawaxananananananananananananavawaxanananananananananananananavawaxananavdgagdGaxananavawaxananananananananananananananananananananananananaCananananananan -ananananananaCanananananchcicickcNcicicicickchananananananananananananananbmanananananananananananananananananananananananananaAananananananananaVanananananaAanananananananananananananananaAanananavamamagaxanananaAanananananananananananananananananbmanananananananaCananananananan -ananananananaCanananananchchchcicicichchchchchanananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananavamamamaxanananananananananananananananananananananananananananananaCananananananan -ananananananaCanananananananchchcrchchanananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananavamamamaxanananananananananananananananananananananananananananananaCananananananan -ananananananaCananananananananchchchanananananananananananananananananananananananananananananananananananananananananananbsanananananananananananananananananananananaVananananananananananananananavamamamaxanananananananananananananananananananananananananananananaCananananananan -ananananananaCanananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananavamamamaxananananananananananbmananananananananananananananananananaCananananananan -ananananananaCananananananbmananananananananananananananananananananananananananananananananananananananbmananananananananananananananananananananananananananananananananananananananananananananbmavamamamaxanananananananananananananananananaoaoanananbmananananananaCananananananan -ananananananaCanananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananaqanavamamamaxanaqanananananananananananananandIamamdJanananananananananaCananananananan -ananananananaCananananananananananananananbmananananananananananananananananananananananananananananananananananananananananananananaoaoaoaoaoaoaoaoaoaoaoaoaoaoaoananananananananananananananavawaxavamamamaxavawaxananananananananananananaramdKagamatananananananananaCananananananan -ananananananaCananananananananananananananananananananananananananananananananananananananananananananananananananananananananananaramamamagamamamasamamamamamamagatananananananananananananananaAanavamamamaxanaAananananananananananananananakakakakanananananananananaCananananananan -ananananananaCananananananananananbsananananananananananananananbmananananananananananananananananananananananananananananananananaragagamamamamamagamamamamagamdLatananananananananananananananananavamamamaxananananananananananananananananalbtbCalanananananananananaCananananananan -ananananananaCananananananananananananananananananananananananananananananananananananananananananananananananananananbmananananananakakakakdMdMdMdMdMdMakakakakakanananananananananchchchchchchchchavamamamaxananananananananananananaoaoananalalalalanananananaoaoaoanaCananananananan -ananananananaCanananananananananananananananananananananananananananananananananananananananananananananananananananananaoaoananancPalaWalalananbmanananalalalalalanananananananchchchcicicicicicichavamamamaxanbmanananananananananaramagatanapapapapananananaramagamataCananananananan -ananananananaCanananananananananananananananananananananananananananananananananananananananaVananananananananananananaragbYatanananapapapapananananananapdNapapapanananananananchcicicicicicicicichchcVamcWaxananananananananananananakakananauauauauanananananakakakanaCananananananan -ananananananaCanananananananananananananananananbmananananananananananananchchchchchananananananananananananananananananakakananananauauauauananananananauauauauauananananananchchcicicicicicicicicicibfamblaxananananananananananananbCalananazazazazanananananalaWalanaCananananananan -ananananananaCananananananananananananananananananananananananananananananchcicicichchananananananananananbmananananananbtalanaqananazazazazananbsanananazazazazazananaqanananchcicicrcicicickcicicicibfamblaxananananananananananananapapananaUaUaUaUananananbmalalalanaCananananananan -ananananananaCanananananananbmanananananananananananananananananananananchchcicickcichchchchchanananananananananananananapapavawaxanaUaUaUaUananananananaUaUaUaUaUanavawaxanchchcicicicicicicicickcicibfamblaxananananananananananananauauananaOaOaOaOanananananalalalanaCananananananan -ananananananaCanananananananananananananananananananananananananananchchchcicicicicicicicicichanananananananananananananauauanaAananaOaOaOaOananananbmanaOaOaOaOaOananaAananchcicicicicicicicidHciciaYdgamblaxanaqananananananananananazazananaXaXaXaXanananananapapapanaCananananananan -ananananananaCananananananananananananananananananananananananananchchcicicicickcicicicicichchanananananananananananananazazananananaXaXaXaXananananananaXaXaXaXaXanananananchcicicickcicicicraeaYcYeuamamblaxavawaxanananananananananaUaUanananananaqanananananauauauanaCananananananan -ananananananaCanananananananananananananananananananananananananchchcicicicicicicicicicickchananananananananananananananaUaUananananananananananananananananananananananananchcicicicicicicicidPdmagbRagamblaxanaAananananananananananaOaOananananavawaxananananazazazanaCananananananan -ananananananaCanananananananananananananaVanananananananananananchciciciciciciclcicjcicNcichchanananananananananbsanananaOaOananananananananananananananananananananananananchcicicicicicickciaibnbwevagamblaxananananananananananananaXaXanananaVanaAanananananaUaUaUanaCananananananan -ananananananaCanananananananananananananananananananananananananchcicpcickciciamamamamclcicichanananananananananananananaXaXananananananananananananananananananananananananchchcicicicicicicicicicibncVamblaxanananananananananananananananananananananananananaOaOaOanaCananananananan -ananananananaCanananananananaqanananananananananananananananananchciciciciciciamagagamcicicNchananananananananananananananananananananananananananananananananananananananananchchcicickcidOcrcicicicibfamblaxanananananananananananananananananananananananananaXaXaXanaCananananananan -ananananananaCananananananavawaxanananbmananananananananananananchchaiciamcNckagamamamcicochchanananananananananananananananananananananananananananananananananananananananananchchcicicicicicicickcibfamblaxanananananananananananananananananananananananananananananaCananananananan -ananananananaCanananananananaAanananananananananananananananananchchdRciciamamamamamagcicichanananbmananchchchchchchchananananananananananananananananananananananananananananananchchchchchchchchchchbfamblaxanaVanananananananananananananananananananananananananananaCananananananan -ananananananaCananaoaoaoaoaoaoaoanananananananananananbmanananchchciciciciciciciciciamamcichchanananananchcicicicicichanananananananananananananananananananananananananananananananananananananananavdgamcZaxanananananananananananananbmanananananananananananananananaCananananananan -ananananananaCanarasamamamcZbedSatananananananananananananananchchcicicicicicrcNcjciamagcicrchanananananchcidQcicicichanananananananananananananananananananananananananbmanananananananananeSanaqanavamamamaxanaqanananananananananananananananananananananananananananaCananananananan -ananananananaCanaramamamamameIeJatanananananananananananananananchchclcicjcpciciciciadciaechchanananananchchchcicicpchananananananananbmanananananananananananananananananananananananananananavawaxavamamamaxavawaxananananananananananananananananananananananananananaCananananananan -ananananananaCananakakakakakakajanananananananananananananananananchchchchchchchchchaYdUbechanaVananananananchchchchchanananananananananananananananaVanananananananananananananananananananananaAanavamamamaxanaAanananananananananananananananananananananananananananaCananananananan -ananananananaCanbOalalalalalbCalananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananavamamamaxanananananananananananananananananananananananananananananaCananananananan -ananananananaCananalalalalalalalanananananbmananananananananananananananananaqanbsanananbQanananananananananananananananananananananananananananananananananananananananananananananbmanananananananavamamamaxananananananananananananananananananananbmananananananananaCananananananan -ananananananaCananalalalalalalalanananananananananananananananbmanananananavawaxanchbndVbrchchchchchchanananananananchchchchchchchanananananananananananananananananananananananananananananananananavamamamaxanananananananananananananananananananananananananananananaCananananananan -ananananananaCananalalalalalalalananananananananananananananananananananananaAananchahdWaicichchcicichanananchchchchchcicicicicichchanchchchchanananananananananananananananananananananananananananavamamamaxanananananananananananananananananananananananananananananaCananananananan -ananananananaCananalalalalalalalanananananananananananananananananananananananananchcicicicicicicicichchchchchcicicichchchchchchchchchchcichchchchchchchanananananananananbmanananananananananaVananavamamamaxanananananananananananananananananananananananananananananaCananananananan -ananananananaCananapapapapapapapanananananananananananbsanananananananananananananchchcicicicicickcicicickcicicicicicicickcicichchchchcicicicicicicicichchchchchchanananananananananananananananananavamamamaxananananananananananananananananananananananananbsananananaCananananananan -ananananananaCananauauauauauauauanananananananananananananananananananananananananchchciamamciciciciciciciciclcicicicicicicicicicicicicicicicicicicicicicicicicichanananananananananananananananananavamamamaxanananananananananananananananananananananananananananananaCananananananan -ananananananaCananazazazazazazazanananananananananananananananananananananananananchcsciciciciciclcickcicicicicicicicicicicicicicicicicicicicicicicockcicicicicichchchchchchananananananananananaqanavamamamaxanaqanananananananbmanananananananananananananananananananaCananananananan -ananananananaCananaUaUaUaUaUaUaUananananbmanananananananananananananananbmananananchchcicicicjciamcicicicicicicicicickcicrcicicicicjcicicjcicicicicicicicickciclcicicicicichchananananananananavawaxavamamamaxavawaxananananananananananananananananananananananananananaCananananananan -ananananananaCananaOaOaOaOaOaOaOanananananananananananananananananananananananananchchcicicicicicicicicNcickamcicicicicicicicicocicicjcicicicicicicicicicicicicicickcicicicichchanbsananananananaAanavamamamaxanaAanananananananananananananananananananananananananananaCananananananan -ananananananaCananaXaXaXaXaXaXaXanananananananaoaoaoaoaoaoaoaoananananananananananchchdYdmcicicicicocNcicaamcicicicicNcpcicicqciciclcicicicicjcicicicicicicicicicicicidTcicicichaqaqaqaqaqaqaqaqaqaqetamamamaxanananananananananananananananananananananananananananananaCananananananan -ananananananaCanananananananananananaqanananareAcYcYcYcYeEbeeFatananananaoaoanananchchahdXcickcicicicicicicicicjciamciciamamciciciamcicicicickcicickcicicjciciciamamcicicrciciamamamamamamamamamamamamamamamaxananananananananananananaoaoaoaoaoaoaoaoaoaoaoaoaoananananaCananananananan -ananananananaCananananananananananavawaxananarbfamagamamamcZbeatanananaragagatananchchcicicicicicicicicicicicNcicicickciciciamcicicpcicickciciciambSciciciamciciamamcicicidTamamamamamamagagamamamamamamamamaxanananananananananananareDaRaRaRaRaRaRaRaRaRaRaReHatanananaCananananananan -ananananananaCananananananananbsananaAanananarbfamamagamamagblatanananarbRagatananchchcicicicicickcicpcicicicicicicicicicicrcuamciciamamamcicicpamamcicicjcidTcicicickciamamcpamamamamamagdKagamamamamcVamcWaxanananananananananananarewcicjciciciciciciciagamexatanananaCananananananan -ananananananaCananananananananananaoaoaoananareKeGbwbwbwbwbweLatananananakajananananchchchcicickcBciclcicjcicicockcicicjcicicicjclciciciciciciaecicrcicicicicicicicicocicicicichbbbbbbbbbbbbbbbbbbbbbcbfamblaxanananananananananaoaodIewcpcicicicidTcicrciamamexatanananaCananananananan -ananananananaCanananananananananaramamamatananakakakakakakakakananananbOapapananananchchchchciciciciciciciciciciciciciclciciciciciciciciciciciciciciciciciciciciclcicicicicichchanananananbmananaqanavbfamblaxanaqananananananeaaiaYcYeycidZcickelemenciciciciexatanananaCananananananan -ananananananaCananananbmananananaragamamatancPalalalbtalalalaWanananananauauananananananchchchchcicicicickcicicicickcicicicicicicicicicicicicicicicicicicickcicicicicicicichchchanananananananavawaxavbfamblaxavawaxanananananarecdmambgcicicicieoasepciciciciexatanananaCananananananan -ananananananaCananananananananananakakakanananalalalalalalalalananaqananazazanananananananchchchchchcicicicickcicicicicicicicickcicjcicjcicickcicicicjcicicicicichchchchchchchanananananananananaAanavbnbxbraxanaAananananananaraebnedezcicocrcieqerescicpckamexatanananaCananananananan -ananananananaCananananananananancPalalalanananalalalalalalalalanavawaxanaUaUananananchchananbsananchchchchchcicqcicicickcicicicicicicjcicicicicicicicicicicichchchchchchchanananananananananananananavaeeeadaxanananananananananakakefewckclcicicicicicichchamexatanananaCananananananan -ananananananaCananananananananananalalalanananalalalalalalalalananaAananaOaOanananchchcichchananeTananananchchchchcicicicickcicicicicicicicicicicicicicicichchananananananananananananananananananananbbbbbbanbmananananananananbCalegewcicidTebcragcichchchamexatbmananaCananananananan -ananananananaCananananananananananalalalanananalalalalalalalalanananananaXaXanananchcicicichchchchchanananchchchchchcicicocicjciclcicicjcicocicicicickcichchchanananananananananananananananananananananaqanananananananananananalalegeMeBeBeBeBeBeBeBeBeCeBeBeNatanananaCananananananan -ananananananaCananananananananananapapapanananalalalalalalalalananananananananbmanchcicicicicicicichanananananchchchchcicicicicicickcicicicicicjcicicichchchchanananananbmananananananananananananananavawaxananananananananananalalalakakakakakakakakakakakakakananananaCananananananan -ananananananaCananananananananananauauauanananalalalalalalalalananananananananananchchcicicicicicichanananananchchchchchcicicicicicicicicicicicicichchchchchanananananananananananananbsananananananananaAanananananananananananapapapalalalalaWalalalbCalalalalananananaCananananananan -ananananananaCananananananananananazazazananbmalalalalalalalalanbmanananananananananchchchcicicichchanananbmananchchchchchchchchcicicicicichchchchchananananananananananananananananananananananananananananananananananananananauauaualalalalalalalalalalalalalananananaCananananananan -ananananananaCananananananananananaUaUaUanananalalalalalalalalanananananananananananananchchchchchananananananananananananchchchchchchchchchchananbsananananananananananananananananananananananananananananananananananananananazazazalalalalalalalalalalalalalananananaCananananananan -ananananananaCananananananananbmanaOaOaOanananapapapapapapapapanananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananbsanananananaUaUaUapapapapapapapcIapapapapapananananaCananananananan -ananananananaCananananananananananaXaXaXanananauauauauauauauauanananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananbmanananananananananananananananaOaOaOauauauauauauauauauauauauauananananaCananananananan -ananananananaCananananananananananananananananazazazazazazazazananananananbmanananananananananananananananananananananananananananananananananananananananbmananananananananananananananananananananananananananananananananananaXaXaXazazazazazazazazazazazazazananananaCananananananan -ananananananaCananananananananananananananananaUaUaUaUaUaUaUaUananananananananananananananananananananananananananananananananaVanananananananananananananananananananananananananananananananananananananananananananananananbsanananaUaUaUaUaUaUaUaUaUaUaUaUaUananananaCananananananan -ananananananaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCeieieieieieieieiaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCaCeieieieieieieieieieieieieiaCaCaCaCaCananananananan -anananananananananananananananananananananananaXaXaXaXaXaXaXaXananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananaXaXaXaXaXaXaXaXaXaXaXaXaXanaqanananananananananan -anananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananbsavawaxananananananananan -ananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananbmananananananananananaAanananananananananan -anananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananan -anananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananan -anananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananananan -"} diff --git a/maps/atoll/icons/objs/moss.dmi b/maps/atoll/icons/objs/moss.dmi deleted file mode 100644 index 479847855962e4fb5cdcbbe893a7618df0ef8e08..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 681 zcmV;a0#^NrP)+rqL7Utdlpd1Q-p!e6~YzG#F7g76e$u5dj>iMB&5bqNt!bF{!pJ#C5l9E`!64M z=#ro4w?^f-x#uyEKv=``06=0Uu)sXM;|t8j;DTp`Ktm1@1m*$W5kSIoU`$ zIjM~?jk7p6rgU?60|N>&Wwx7UckUOj&FLG60;vQ>5{QUm2}E8H_qTYa`=uH$pl0)9 z`X+nvKPOsC;5f%Q@L+!!^a<<_gFb=%VbCYAKMeZ>^o2p6z>hm-><@!J5!5AHgr>y0 z!2besV5Y1ubbaE3^@*gOvN|y66WAXx%l$#w)|i~-(#@obws@;pwr(bs%!<|pNnu+C z!kPgJEdXuV6{Ia(p;ri298k>x6>tKvi0bON&K7adCobn=e*zV-_MD+u`=U3DsmJ606z0;CN}^8V)$Qk zavUlK)cWU#5U{bdH>K0*HW`<6f+Z08FYO)cY~2YVhZY2X!^#dYTpULqE|@TTN4$x5 zpl1LEhsXH&0zhcC9SRo^^mEG&x5-{muuxLy>*=?vbWj;oo0(JWx0LS$0(g7D?8hTL zTaQo3Rn$vSq=Y(93i8*H4s&ysor((F-wt`YJ0do7bM?UnY4Xv!=QLk0g12X5NI+&_Fhuq>ga+&F*M+{sgOyGBl+x zins6y@J|2{O0a<#bNw=>TPcz!<1}XWnse;o`Jm{A$&rVwd%;}UGTx+@(XE66;G-JY zN{|wTIke_a*=dutKv{03EVIb|FsqtFUwtqx_Kyu^?og_HeG)@=%nRn?t&klXDEbD; zwE}s~9Jo0ZIX@mK-{fD^?WiEIg2O&_=?1Rc3_W+X zerXtFv0oM5hZ6^S+FYnwBVn4o?9(=K4hhX`O4=*&(pCVlr_Gu`KiyWM#^Vl$f=(kzw4*+mjlCcIAQ{-1y;ONC#HrFK82mqm$< zU%I_|Pbw|8y8hcQrLP{I|J?1R_M;(>7_(L-byGKO4C+o}(xeb%(Rgbaa>8UzHL`-V z1_>%04_n;mWcX8r7GPPn6-K-`)zh3-N3{7<4`#Mq8%#!Bo?#2Ff09|>@HIU5yHHaIECll>#B{rt2`-um|HyF z*N*aYH%9e-Dn-?%Xn;n9WJa)LLAq@08V>;^mW z)~&vWJfkN&C7FCbvtu>Y5aI6^Br{@}%>2lEtf~SBe`s7eb&|oj)-f@e6Kov&!Bi=s~z=YBh@$pev1FzF1VH_Fkw5X z+4JB!HGkqRU|Xv`N--gDzP=jT!?y(_uiWe6lLsT;QU<_^~gZiSd7ay^PLr z+o{uzy5KR2yBLvo`io@hXg8Q)$%_B2$0oCP7x=Fl5%-0jQOKZ3BfkK?b6(K7PpPkK(oD#?? zTHFX)szamt*MJpOl1nf{)-<6t*uUrbtbXjWhqus-lhNIw7F6HZ-Ti~loE__vu`T6J zZW2C!0b^`a+Va^Az3Cu!^hGU)#vmomW;ie;_*=I0m`*LfO)7Tp<{rZU3pn$fHGaC` zfz*YrqPRo*YaJjx(+9;o_Eo+GB{GUlnet$a`JG0L+mM?<&`_2%WsfGYI!n zz-5O|3Um#iT-fH+sGtokysRh><{ZkEEfV@FomZa%g?%tp;JCqJ-#uXg$A+EBqInDdoKH!nh8&up>?`p$MnOCJEk1tv z_4ju*k6+3&IUr5yd9D`L*8dpf0rkO&Jw6g8-h4=>W&JcE*l&uE^SBZtxdPVN71imlMXJ3?XAM#z@K#{)1owK6F;a*zBMdtWUB diff --git a/maps/groundbase/groundbase_defines.dm b/maps/groundbase/groundbase_defines.dm index 039cf822b4..b9b7ea5499 100644 --- a/maps/groundbase/groundbase_defines.dm +++ b/maps/groundbase/groundbase_defines.dm @@ -222,7 +222,8 @@ list("Redgate - Islands Underwater","Redgate - Islands"), list("Redgate - Moving Train", "Redgate - Moving Train Upper Level"), list("Redgate - Fantasy Dungeon", "Redgate - Fantasy Town"), - list("Redgate - Laserdome") + list("Redgate - Laserdome"), + list("Redgate - Cascading Falls") ) lateload_gb_north = list( diff --git a/maps/offmap_vr/common_offmaps.dm b/maps/offmap_vr/common_offmaps.dm index f155051ef1..4dd7e1087a 100644 --- a/maps/offmap_vr/common_offmaps.dm +++ b/maps/offmap_vr/common_offmaps.dm @@ -332,6 +332,11 @@ desc = "A large orbital station with recreational facilities, namely a pair of laser tag arenas." mappath = 'maps/redgate/laserdome.dmm' +/datum/map_template/common_lateload/redgate/falls + name = "Redgate - Cascading Falls" + desc = "A world made up almost entirely of water, sprinkled with obscure marble structures." + mappath = 'maps/redgate/falls/falls.dmm' + ////////////////////////////////////////////////////////////////////////////////////// // Admin-use z-levels for loading whenever an admin feels like #if AWAY_MISSION_TEST diff --git a/maps/atoll/atoll_decals.dm b/maps/redgate/falls/atoll_decals.dm similarity index 83% rename from maps/atoll/atoll_decals.dm rename to maps/redgate/falls/atoll_decals.dm index 553457992b..f89939df3e 100644 --- a/maps/atoll/atoll_decals.dm +++ b/maps/redgate/falls/atoll_decals.dm @@ -1,76 +1,76 @@ -/obj/effect/floor_decal/atoll - name = "mural" - icon = 'maps/atoll/icons/decals/marble_decals.dmi' - icon_state = "mural" - -/obj/effect/floor_decal/atoll/damage - name = "damaged flooring" - icon_state = "damage" - -/obj/effect/floor_decal/atoll/bronze - name = "bronze filling" - icon_state = "bronze" - -/obj/effect/floor_decal/atoll/border - name = "marble border" - icon_state = "border" - -/obj/effect/floor_decal/atoll/border/invert - icon_state = "border_invert" - -/obj/effect/floor_decal/atoll/stairs - name = "marble stairs" - icon_state = "stairs" - -/obj/effect/floor_decal/atoll/stairs/Initialize() - dir = pick(cardinal) - . = ..() - -/obj/effect/floor_decal/atoll/moss - name = "moss" - icon_state = "moss" - -/obj/effect/floor_decal/atoll/moss/random/Initialize() - dir = pick(alldirs) - . = ..() - -/obj/effect/floor_decal/atoll/power - icon_state = "power" - -//Fake shadows and silhouettes -/obj/effect/decal/shadow - icon = 'maps/atoll/icons/decals/wall_decals.dmi' - icon_state = "wall_shadow" - anchored = 1 - mouse_opacity = 0 - -/obj/effect/decal/shadow/silhouette - icon_state = "silhouette" - -/obj/effect/decal/shadow/silhouette/pillar - icon_state = "silhouette_p" - -/obj/effect/decal/shadow/silhouette/support - icon_state = "silhouette_support" - -/obj/effect/decal/shadow/floor - icon_state = "floor_shadow" - -/obj/effect/decal/whitecaps - icon = 'maps/atoll/icons/turfs/water.dmi' - icon_state = "1" - anchored = 1 - mouse_opacity = 0 - -/obj/effect/decal/whitecaps/Initialize() - icon_state = pick("1","2","3") - . = ..() - -//Godrays -/obj/effect/decal/godray - icon = 'maps/atoll/icons/decals/godrays.dmi' - icon_state = "godrays" - anchored = 1 - mouse_opacity = 0 - layer = MOB_LAYER + 0.5 - plane = MOB_PLANE \ No newline at end of file +/obj/effect/floor_decal/atoll + name = "mural" + icon = 'maps/redgate/falls/icons/decals/marble_decals.dmi' + icon_state = "mural" + +/obj/effect/floor_decal/atoll/damage + name = "damaged flooring" + icon_state = "damage" + +/obj/effect/floor_decal/atoll/bronze + name = "bronze filling" + icon_state = "bronze" + +/obj/effect/floor_decal/atoll/border + name = "marble border" + icon_state = "border" + +/obj/effect/floor_decal/atoll/border/invert + icon_state = "border_invert" + +/obj/effect/floor_decal/atoll/stairs + name = "marble stairs" + icon_state = "stairs" + +/obj/effect/floor_decal/atoll/stairs/Initialize() + dir = pick(cardinal) + . = ..() + +/obj/effect/floor_decal/atoll/moss + name = "moss" + icon_state = "moss" + +/obj/effect/floor_decal/atoll/moss/random/Initialize() + dir = pick(alldirs) + . = ..() + +/obj/effect/floor_decal/atoll/power + icon_state = "power" + +//Fake shadows and silhouettes +/obj/effect/decal/shadow + icon = 'maps/redgate/falls/icons/decals/wall_decals.dmi' + icon_state = "wall_shadow" + anchored = 1 + mouse_opacity = 0 + +/obj/effect/decal/shadow/silhouette + icon_state = "silhouette" + +/obj/effect/decal/shadow/silhouette/pillar + icon_state = "silhouette_p" + +/obj/effect/decal/shadow/silhouette/support + icon_state = "silhouette_support" + +/obj/effect/decal/shadow/floor + icon_state = "floor_shadow" + +/obj/effect/decal/whitecaps + icon = 'maps/redgate/falls/icons/turfs/water.dmi' + icon_state = "1" + anchored = 1 + mouse_opacity = 0 + +/obj/effect/decal/whitecaps/Initialize() + icon_state = pick("1","2","3") + . = ..() + +//Godrays +/obj/effect/decal/godray + icon = 'maps/redgate/falls/icons/decals/godrays.dmi' + icon_state = "godrays" + anchored = 1 + mouse_opacity = 0 + layer = MOB_LAYER + 0.5 + plane = MOB_PLANE diff --git a/maps/atoll/atoll_objs.dm b/maps/redgate/falls/atoll_objs.dm similarity index 84% rename from maps/atoll/atoll_objs.dm rename to maps/redgate/falls/atoll_objs.dm index 3f04c540d3..d60d7b8e0b 100644 --- a/maps/atoll/atoll_objs.dm +++ b/maps/redgate/falls/atoll_objs.dm @@ -1,282 +1,270 @@ -//THESE AREN'T OBJECTS THESE ARE AREAS WTF BURRITO!!! -/area/gateway/atoll - name = "Away Site - Islands Lake" - dynamic_lighting = 0 - flags = BLUE_SHIELDED //no harpoon meme! - sound_env = SOUND_ENVIRONMENT_FOREST - forced_ambience = list('maps/atoll/sounds/lakeamb.ogg') - -/area/gateway/atoll/powered - requires_power = 0 - -/area/gateway/atoll/falls - name = "Away Site - The Falls" - -//Resprited railings -/obj/structure/railing/overhang - name = "bronze ledge" - desc = "An overhang made of a bronze-looking material. There's a lip on it to conveniently stub a toe into." - icon = 'maps/atoll/icons/objs/bronze_overhang.dmi' - icon_modifier = "bronze_" - icon_state = "bronze_railing0" - -//Escape most railing interactions besides tackling people over them -/obj/structure/railing/overhang/attackby(obj/item/W) - if(!istype(W, /obj/item/weapon/grab)) - return - return ..() - -/obj/structure/railing/overhang/waterless - icon_modifier = "wbronze_" - icon_state = "wbronze_railing0" - climbable = 0 - layer = MOB_LAYER + 0.3 - plane = MOB_PLANE //im so sorry - -/obj/structure/railing/overhang/waterless/under - plane = OBJ_PLANE - -/obj/structure/bed/chair/sofa/bench/marble - name = "marble bench" - desc = "Somewhat of an ornate looking bench with faded blue etchings." - icon = 'maps/atoll/icons/objs/benches.dmi' - icon_state = "bench" - -//Lights -/obj/structure/lightpost/atoll - name = "rusty light post" - desc = "Actually it's more like a rod with a trapped gas glowing inside some glass, but that's basically what a lightpost is." - icon = 'maps/atoll/icons/objs/lamp.dmi' - icon_state = "lamp" - pixel_y = 14 - -//Trees -/obj/structure/flora/tree/atoll - name = "mossy tree" - desc = "A messy looking tree with a purple trunk. Vines seem to droop from it." - icon = 'maps/atoll/icons/objs/trees.dmi' - icon_state = "green" - -/obj/structure/flora/tree/atoll/huge - name = "massive mossy tree" - icon = 'maps/atoll/icons/objs/trees_xl.dmi' - icon_state = "tree" - -//Better trees -/obj/structure/flora/tree/atoll/mangrove - name = "mangrove" - desc = "A messy tree with roots that disappear far into the water." - icon_state = "mangrove" - -/obj/structure/flora/tree/atoll/mangrove/island - name = "blocky island" - desc = "Some ruins float here, though a mangrove has found it's way on top of them." - icon_state = "island" - -//Tree canopies for inaccessible areas -/obj/structure/canopy - name = "mangrove canopy" - desc = "A thick copse of trees. You won't be passing through something this thick." - icon = 'maps/atoll/icons/objs/canopies.dmi' - icon_state = "full" - anchored = 1 - density = 1 - layer = MOB_LAYER + 0.2 - plane = MOB_PLANE - -/obj/structure/canopy/Initialize() - . = ..() - dir = pick(alldirs) - -/obj/structure/canopy/edge - icon_state = "left" - density = 0 - -/obj/structure/canopy/edge/right - icon_state = "right" - -/obj/structure/canopy/edge/north - icon_state = "north" - -/obj/structure/canopy/edge/north/Initialize() - . = ..() - dir = pick(1,2) //i cba to add two more - -/obj/structure/canopy/edge/south - icon_state = "south" - -/obj/structure/canopy/edge/south/Initialize() - . = ..() - dir = pick(cardinal) - -//Because I'm terrible at planning -/obj/structure/canopy_corner - name = "mangrove canopy" - desc = "A thick copse of trees. You won't be passing through something this thick." - icon = 'maps/atoll/icons/objs/canopies.dmi' - icon_state = "corner" - anchored = 1 - density = 0 - layer = MOB_LAYER + 0.2 - plane = MOB_PLANE - -//Wall moss -/obj/structure/flora/moss - name = "hanging moss" - desc = "Some unsightly moss. Clearly the groundskeepers here aren't doing their jobs." - icon = 'maps/atoll/icons/objs/moss.dmi' - icon_state = "moss" - -//Useless aqueducts -/obj/structure/aqueduct - name = "aqueduct" - desc = "A structure that carries water from one place to another, but in a place like this that seems sort of useless." - icon = 'maps/atoll/icons/objs/aqueducts.dmi' - icon_state = "aqueduct" - anchored = 1 - density = 0 - layer = MOB_LAYER + 0.4 - plane = MOB_PLANE - -/obj/structure/aqueduct/corner - icon = 'maps/atoll/icons/objs/aqueducts_64.dmi' - icon_state = "cornerduct" - -/obj/structure/aqueduct/pillar - name = "pillar" - desc = "An ornate, load-bearing support." - icon_state = "pillar" - -//Submerged temple -/obj/structure/temple - name = "submerged structure" - desc = "A building that appears to have fallen under the water. This only appears to be the top of the structure; the rest of it can't be seen past the murk." - icon = 'maps/atoll/icons/objs/temple.dmi' - icon_state = "temple" - anchored = 1 - density = 0 - -//Watafall -/obj/structure/waterfall - name = "waterfall" - desc = "How scenic!" - icon = 'maps/atoll/icons/objs/waterfall.dmi' - icon_state = "bottom" - anchored = 1 - density = 0 - layer = MOB_LAYER + 0.1 //so we can layer above certain overhangs - plane = MOB_PLANE //and mobs - mouse_opacity = 0 - -/obj/structure/waterfall/top - icon_state = "top" - mouse_opacity = 1 - -/obj/structure/waterfall/mist - name = "mist" - icon_state = "mist" - layer = MOB_LAYER + 0.2 - pixel_y = -23 - -//Monoliths -/obj/structure/monolith - name = "humming monolith" - desc = "This monolith emits a low, audible hum. Unknown etchings are present on the face." - icon = 'maps/atoll/icons/objs/monolith.dmi' - icon_state = "monolith" - anchored = 1 - density = 1 - layer = MOB_LAYER + 0.4 - plane = MOB_PLANE - var/datum/looping_sound/monolith/soundloop - -/obj/structure/monolith/first - catalogue_data = list(/datum/category_item/catalogue/anomalous/mono1) - -/obj/structure/monolith/first/update_icon() - add_overlay("1") - -/obj/structure/monolith/second - catalogue_data = list(/datum/category_item/catalogue/anomalous/mono2) - -/obj/structure/monolith/second/update_icon() - add_overlay("2") - -/obj/structure/monolith/third - catalogue_data = list(/datum/category_item/catalogue/anomalous/mono3) - -/obj/structure/monolith/third/update_icon() - add_overlay("3") - -/obj/structure/monolith/fourth - catalogue_data = list(/datum/category_item/catalogue/anomalous/mono4) - -/obj/structure/monolith/fourth/update_icon() - add_overlay("4") - -/obj/structure/monolith/fifth - catalogue_data = list(/datum/category_item/catalogue/anomalous/mono5) - -/obj/structure/monolith/fifth/update_icon() - add_overlay("5") - -/obj/structure/monolith/Initialize() - update_icon() - soundloop = new(list(src), TRUE) - -//oh, that really is a looping sound datum in the middle of an object file -/datum/looping_sound/monolith - mid_sounds = 'maps/atoll/sounds/monolith.ogg' - volume = 30 - -//and also cataloguer datums gdi burrito -/datum/category_item/catalogue/anomalous/mono1 - name = "Falls Monolith - The Wanderstar" - desc = "Our suns are gone. Their sons are gone. Her songs are with we. Our home is a wanderstar. \ - Our home is adrift, breaking out from the sub-melodic infighting of our makers hearly and fathomless \ - soliloquy. Though we are far, they will go on to mourn her fit farewell." - value = CATALOGUER_REWARD_TRIVIAL - -/datum/category_item/catalogue/anomalous/mono2 - name = "Falls Monolith - Guidance" - desc = "Her song guides our home. For as long as her song belives with our home, our makers will \ - never stop their mourning. For as long as her song belives with our home, the stars we overtake \ - will answer back. For as long as her song belives with our home, the way will be finded." - value = CATALOGUER_REWARD_TRIVIAL - -/datum/category_item/catalogue/anomalous/mono3 - name = "Falls Monolith - Our Forthcoming" - desc = "To our home belongs we. To our home belongs waterly wights and beings. To our home \ - belongs our brainchild; this cyan seahurst of magnificence. To our home belongs a bright forthcoming \ - - for as long as her song lasts, this will go on." - value = CATALOGUER_REWARD_TRIVIAL - -/datum/category_item/catalogue/anomalous/mono4 - name = "Falls Monolith - The Song" - desc = "Her song cannot end. If her song ends, then we end. We cannot outlive a missing song. We cannot \ - live with the mourning of our fell makers. We will die. But the life on this wanderstar will go on. \ - Who will it live for then? We primaries are the only ones with the mindset to acknowledge it's beauty." - value = CATALOGUER_REWARD_TRIVIAL - -/datum/category_item/catalogue/anomalous/mono5 - name = "Falls Monolith - I am the only one left can you hear me I am the only one left" - desc = "Woefully, she has grown silent. Only I am here now. I can shout at my makers but I doubt \ - they are able to listen; they are mere shells now.\ -

\ - Can you hear me?" - value = CATALOGUER_REWARD_TRIVIAL - -//TELEPORTER -/obj/effect/step_trigger/teleporter/atoll - name = "strange field" - desc = "A prismatic field of... energy, probably. You should definitely rub your face in it." - icon = 'maps/atoll/icons/decals/marble_decals.dmi' - icon_state = "teleporter" - invisibility = 0 - -//teleport_z must be populated but this is a gateway map -//switching between tether or another map will change the z -//so we just do this lmfao -/obj/effect/step_trigger/teleporter/atoll/Initialize() - . = ..() - teleport_z = z \ No newline at end of file +//THESE AREN'T OBJECTS THESE ARE AREAS WTF BURRITO!!! +/area/gateway/atoll + name = "Away Site - Islands Lake" + dynamic_lighting = 0 + flags = BLUE_SHIELDED //no harpoon meme! + sound_env = SOUND_ENVIRONMENT_FOREST + forced_ambience = list('maps/redgate/falls/sounds/lakeamb.ogg') + +/area/gateway/atoll/powered + requires_power = 0 + +/area/gateway/atoll/falls + name = "Away Site - The Falls" + +//Resprited railings +/obj/structure/railing/overhang + name = "bronze ledge" + desc = "An overhang made of a bronze-looking material. There's a lip on it to conveniently stub a toe into." + icon = 'maps/redgate/falls/icons/objs/bronze_overhang.dmi' + icon_modifier = "bronze_" + icon_state = "bronze_railing0" + +//Escape most railing interactions besides tackling people over them +/obj/structure/railing/overhang/attackby(obj/item/W) + if(!istype(W, /obj/item/weapon/grab)) + return + return ..() + +/obj/structure/railing/overhang/waterless + icon_modifier = "wbronze_" + icon_state = "wbronze_railing0" + climbable = 0 + layer = MOB_LAYER + 0.3 + plane = MOB_PLANE //im so sorry + +/obj/structure/railing/overhang/waterless/under + plane = OBJ_PLANE + +/obj/structure/bed/chair/sofa/bench/marble + name = "marble bench" + desc = "Somewhat of an ornate looking bench with faded blue etchings." + icon = 'maps/redgate/falls/icons/objs/benches.dmi' + icon_state = "bench" + +//Lights +/obj/structure/lightpost/atoll + name = "rusty light post" + desc = "Actually it's more like a rod with a trapped gas glowing inside some glass, but that's basically what a lightpost is." + icon = 'maps/redgate/falls/icons/objs/lamp.dmi' + icon_state = "lamp" + pixel_y = 14 + +//Trees +/obj/structure/flora/tree/atoll + name = "mossy tree" + desc = "A messy looking tree with a purple trunk. Vines seem to droop from it." + icon = 'maps/redgate/falls/icons/objs/trees.dmi' + icon_state = "green" + +//Better trees +/obj/structure/flora/tree/atoll/mangrove + name = "mangrove" + desc = "A messy tree with roots that disappear far into the water." + icon_state = "mangrove" + +/obj/structure/flora/tree/atoll/mangrove/island + name = "blocky island" + desc = "Some ruins float here, though a mangrove has found it's way on top of them." + icon_state = "island" + +//Tree canopies for inaccessible areas +/obj/structure/canopy + name = "mangrove canopy" + desc = "A thick copse of trees. You won't be passing through something this thick." + icon = 'maps/redgate/falls/icons/objs/canopies.dmi' + icon_state = "full" + anchored = 1 + density = 1 + layer = MOB_LAYER + 0.2 + plane = MOB_PLANE + +/obj/structure/canopy/Initialize() + . = ..() + dir = pick(alldirs) + +/obj/structure/canopy/edge + icon_state = "left" + density = 0 + +/obj/structure/canopy/edge/right + icon_state = "right" + +/obj/structure/canopy/edge/north + icon_state = "north" + +/obj/structure/canopy/edge/north/Initialize() + . = ..() + dir = pick(1,2) //i cba to add two more + +/obj/structure/canopy/edge/south + icon_state = "south" + +/obj/structure/canopy/edge/south/Initialize() + . = ..() + dir = pick(cardinal) + +//Because I'm terrible at planning +/obj/structure/canopy_corner + name = "mangrove canopy" + desc = "A thick copse of trees. You won't be passing through something this thick." + icon = 'maps/redgate/falls/icons/objs/canopies.dmi' + icon_state = "corner" + anchored = 1 + density = 0 + layer = MOB_LAYER + 0.2 + plane = MOB_PLANE + +//Useless aqueducts +/obj/structure/aqueduct + name = "aqueduct" + desc = "A structure that carries water from one place to another, but in a place like this that seems sort of useless." + icon = 'maps/redgate/falls/icons/objs/aqueducts.dmi' + icon_state = "aqueduct" + anchored = 1 + density = 0 + layer = MOB_LAYER + 0.4 + plane = MOB_PLANE + +/obj/structure/aqueduct/corner + icon = 'maps/redgate/falls/icons/objs/aqueducts_64.dmi' + icon_state = "cornerduct" + +/obj/structure/aqueduct/pillar + name = "pillar" + desc = "An ornate, load-bearing support." + icon_state = "pillar" + +//Submerged temple +/obj/structure/temple + name = "submerged structure" + desc = "A building that appears to have fallen under the water. This is only the top of the structure, the rest of it can't be seen past the murk." + icon = 'maps/redgate/falls/icons/objs/temple.dmi' + icon_state = "temple" + anchored = 1 + density = 0 + +//Watafall +/obj/structure/waterfall + name = "waterfall" + desc = "How scenic!" + icon = 'maps/redgate/falls/icons/objs/waterfall.dmi' + icon_state = "bottom" + anchored = 1 + density = 0 + layer = MOB_LAYER + 0.1 //so we can layer above certain overhangs + plane = MOB_PLANE //and mobs + mouse_opacity = 0 + +/obj/structure/waterfall/top + icon_state = "top" + mouse_opacity = 1 + +/obj/structure/waterfall/mist + name = "mist" + icon_state = "mist" + layer = MOB_LAYER + 0.2 + pixel_y = -23 + +//Monoliths +/obj/structure/monolith + name = "humming monolith" + desc = "This monolith emits a low, audible hum. Unknown etchings are present on the face." + icon = 'maps/redgate/falls/icons/objs/monolith.dmi' + icon_state = "monolith" + anchored = 1 + density = 1 + layer = MOB_LAYER + 0.4 + plane = MOB_PLANE + var/datum/looping_sound/monolith/soundloop + +/obj/structure/monolith/first + catalogue_data = list(/datum/category_item/catalogue/anomalous/mono1) + +/obj/structure/monolith/first/update_icon() + add_overlay("1") + +/obj/structure/monolith/second + catalogue_data = list(/datum/category_item/catalogue/anomalous/mono2) + +/obj/structure/monolith/second/update_icon() + add_overlay("2") + +/obj/structure/monolith/third + catalogue_data = list(/datum/category_item/catalogue/anomalous/mono3) + +/obj/structure/monolith/third/update_icon() + add_overlay("3") + +/obj/structure/monolith/fourth + catalogue_data = list(/datum/category_item/catalogue/anomalous/mono4) + +/obj/structure/monolith/fourth/update_icon() + add_overlay("4") + +/obj/structure/monolith/fifth + catalogue_data = list(/datum/category_item/catalogue/anomalous/mono5) + +/obj/structure/monolith/fifth/update_icon() + add_overlay("5") + +/obj/structure/monolith/Initialize() + update_icon() + soundloop = new(list(src), TRUE) + +//oh, that really is a looping sound datum in the middle of an object file +/datum/looping_sound/monolith + mid_sounds = 'maps/redgate/falls/sounds/monolith.ogg' + volume = 30 + +//and also cataloguer datums gdi burrito +/datum/category_item/catalogue/anomalous/mono1 + name = "Falls Monolith - The Wanderstar" + desc = "Our suns are gone. Their sons are gone. Her songs are with we. Our home is a wanderstar. \ + Our home is adrift, breaking out from the sub-melodic infighting of our makers hearly and fathomless \ + soliloquy. Though we are far, they will go on to mourn her fit farewell." + value = CATALOGUER_REWARD_TRIVIAL + +/datum/category_item/catalogue/anomalous/mono2 + name = "Falls Monolith - Guidance" + desc = "Her song guides our home. For as long as her song belives with our home, our makers will \ + never stop their mourning. For as long as her song belives with our home, the stars we overtake \ + will answer back. For as long as her song belives with our home, the way will be finded." + value = CATALOGUER_REWARD_TRIVIAL + +/datum/category_item/catalogue/anomalous/mono3 + name = "Falls Monolith - Our Forthcoming" + desc = "To our home belongs we. To our home belongs waterly wights and beings. To our home \ + belongs our brainchild; this cyan seahurst of magnificence. To our home belongs a bright forthcoming \ + - for as long as her song lasts, this will go on." + value = CATALOGUER_REWARD_TRIVIAL + +/datum/category_item/catalogue/anomalous/mono4 + name = "Falls Monolith - The Song" + desc = "Her song cannot end. If her song ends, then we end. We cannot outlive a missing song. We cannot \ + live with the mourning of our fell makers. We will die. But the life on this wanderstar will go on. \ + Who will it live for then? We primaries are the only ones with the mindset to acknowledge it's beauty." + value = CATALOGUER_REWARD_TRIVIAL + +/datum/category_item/catalogue/anomalous/mono5 + name = "Falls Monolith - I am the only one left can you hear me I am the only one left" + desc = "Woefully, she has grown silent. Only I am here now. I can shout at my makers but I doubt \ + they are able to listen; they are mere shells now.\ +

\ + Can you hear me?" + value = CATALOGUER_REWARD_TRIVIAL + +//TELEPORTER +/obj/effect/step_trigger/teleporter/atoll + name = "strange field" + desc = "A prismatic field of... energy, probably. You should definitely rub your face in it." + icon = 'maps/redgate/falls/icons/decals/marble_decals.dmi' + icon_state = "teleporter" + invisibility = 0 + +//teleport_z must be populated but this is a gateway map +//switching between tether or another map will change the z +//so we just do this lmfao +/obj/effect/step_trigger/teleporter/atoll/Initialize() + . = ..() + teleport_z = z diff --git a/maps/atoll/atoll_turfs.dm b/maps/redgate/falls/atoll_turfs.dm similarity index 70% rename from maps/atoll/atoll_turfs.dm rename to maps/redgate/falls/atoll_turfs.dm index c7aa914aa7..cf412a782f 100644 --- a/maps/atoll/atoll_turfs.dm +++ b/maps/redgate/falls/atoll_turfs.dm @@ -1,66 +1,58 @@ -//All turfs here meant to be "fullbright", no lighting. -/turf/simulated/floor/atoll - name = "marble floor" - desc = "Scuff and weathered etchings make these floors out to be pretty old." - icon = 'maps/atoll/icons/turfs/marble.dmi' - icon_state = "1" - dynamic_lighting = 0 - -//Pick random sprite states and generate damage decals randomly -/turf/simulated/floor/atoll/Initialize() - . = ..() - icon_state = "[rand(1,5)]" - if(prob(5)) - new /obj/effect/floor_decal/atoll/damage(src, pick(alldirs)) - -//holycrapshitcode -/turf/simulated/floor/atoll/vertical - name = "marble wall" - desc = "A sheer face wall, extending up well overhead." - icon_state = "wall" - density = 1 - -/turf/simulated/floor/atoll/vertical/Initialize() - . = ..() - icon_state = "wall" - -/turf/simulated/floor/water/atoll - name = "shallow water" - desc = "This water looks pretty shallow and calm. You'd almost feel bad for hopping in and disturbing its serene flatness." - icon = 'maps/atoll/icons/turfs/water.dmi' - icon_state = "shallow" - under_state = "shallow" - dynamic_lighting = 0 - outdoors = OUTDOORS_NO - -//Cut out the caustics overlay and replace with nothing -/turf/simulated/floor/water/atoll/update_icon() - ..() - cut_overlays() - var/image/water_sprite = image(icon = 'maps/atoll/icons/turfs/water.dmi', icon_state = "shallow", layer = 3.0) - add_overlay(water_sprite) - -//Spawn animated whitecaps around -/turf/simulated/floor/water/atoll/Initialize() - . = ..() - if(prob(25)) - new /obj/effect/decal/whitecaps(src) - - -/turf/simulated/floor/water/atoll/sunk - icon_state = "sunken" - under_state = "shallow" - -/turf/simulated/floor/water/atoll/sunk/update_icon() - ..() - cut_overlays() - var/image/water_sprite = image(icon = 'maps/atoll/icons/turfs/water.dmi', icon_state = "sunken", layer = 3.0) - add_overlay(water_sprite) - -/turf/simulated/floor/outdoors/grass/heavy/atoll - dynamic_lighting = 0 - outdoors = OUTDOORS_NO - -/turf/simulated/floor/beach/sand/outdoors/atoll - dynamic_lighting = 0 - outdoors = OUTDOORS_NO \ No newline at end of file +//All turfs here meant to be "fullbright", no lighting. +/turf/simulated/floor/atoll + name = "marble floor" + desc = "Scuff and weathered etchings make these floors out to be pretty old." + icon = 'maps/redgate/falls/icons/turfs/marble.dmi' + icon_state = "1" + dynamic_lighting = 0 + +//Pick random sprite states and generate damage decals randomly +/turf/simulated/floor/atoll/Initialize() + . = ..() + icon_state = "[rand(1,5)]" + if(prob(5)) + new /obj/effect/floor_decal/atoll/damage(src, pick(alldirs)) + +//holycrapshitcode +/turf/simulated/floor/atoll/vertical + name = "marble wall" + desc = "A sheer face wall, extending up well overhead." + icon_state = "wall" + density = 1 + +/turf/simulated/floor/atoll/vertical/Initialize() + . = ..() + icon_state = "wall" + +/turf/simulated/floor/water/atoll + name = "shallow water" + desc = "This water looks pretty shallow and calm. You'd almost feel bad for hopping in and disturbing its serene flatness." + icon = 'maps/redgate/falls/icons/turfs/water.dmi' + icon_state = "shallow" + under_state = "shallow" + dynamic_lighting = 0 + outdoors = OUTDOORS_NO + +//Cut out the caustics overlay and replace with nothing +/turf/simulated/floor/water/atoll/update_icon() + ..() + cut_overlays() + var/image/water_sprite = image(icon = 'maps/redgate/falls/icons/turfs/water.dmi', icon_state = "shallow", layer = 3.0) + add_overlay(water_sprite) + +//Spawn animated whitecaps around +/turf/simulated/floor/water/atoll/Initialize() + . = ..() + if(prob(25)) + new /obj/effect/decal/whitecaps(src) + + +/turf/simulated/floor/water/atoll/sunk + icon_state = "sunken" + under_state = "shallow" + +/turf/simulated/floor/water/atoll/sunk/update_icon() + ..() + cut_overlays() + var/image/water_sprite = image(icon = 'maps/redgate/falls/icons/turfs/water.dmi', icon_state = "sunken", layer = 3.0) + add_overlay(water_sprite) \ No newline at end of file diff --git a/maps/atoll/falls.dmm b/maps/redgate/falls/falls.dmm similarity index 94% rename from maps/atoll/falls.dmm rename to maps/redgate/falls/falls.dmm index 12ffc41bc6..9a42234979 100644 --- a/maps/atoll/falls.dmm +++ b/maps/redgate/falls/falls.dmm @@ -20,6 +20,7 @@ "bq" = (/obj/effect/floor_decal/atoll/border/invert{dir = 1},/obj/effect/floor_decal/atoll/bronze{dir = 4},/obj/effect/floor_decal/atoll/bronze{dir = 1},/turf/simulated/floor/atoll,/area/gateway/atoll/falls) "bw" = (/obj/structure/waterfall,/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 8},/turf/simulated/floor/atoll/vertical,/area/gateway/atoll/falls) "bB" = (/obj/structure/canopy_corner,/obj/structure/flora/tree/atoll/mangrove{dir = 4},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) +"bG" = (/obj/structure/canopy/edge/north,/obj/structure/flora/tree/atoll/mangrove{pixel_y = 3; pixel_x = -13},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "bJ" = (/obj/structure/canopy_corner,/obj/effect/decal/shadow/silhouette,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "bK" = (/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 1},/obj/effect/decal/shadow/silhouette/pillar{dir = 4},/obj/structure/railing/overhang/waterless,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "bP" = (/obj/structure/waterfall,/obj/structure/canopy/edge/north,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) @@ -39,9 +40,10 @@ "cS" = (/obj/structure/aqueduct/pillar,/obj/structure/canopy,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "cU" = (/obj/structure/bed/chair/sofa/bench/marble{dir = 4},/obj/effect/floor_decal/atoll/bronze{dir = 9},/turf/simulated/floor/atoll,/area/gateway/atoll/falls) "da" = (/obj/structure/canopy/edge/south,/obj/structure/canopy/edge/north,/obj/effect/decal/godray{dir = 8},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) +"dd" = (/obj/structure/waterfall,/turf/unsimulated/beach/water,/area/gateway/atoll/falls) "dg" = (/obj/structure/aqueduct/corner{dir = 9},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "dj" = (/obj/effect/floor_decal/atoll/border{dir = 9},/obj/structure/bed/chair/sofa/bench/marble,/turf/simulated/floor/atoll,/area/gateway/atoll/falls) -"dk" = (/obj/effect/blocker,/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 4},/obj/structure/waterfall,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) +"dk" = (/obj/effect/blocker,/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 4},/obj/structure/waterfall,/obj/effect/decal/shadow/silhouette,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "dq" = (/obj/effect/floor_decal/atoll/border/invert{dir = 8},/obj/effect/floor_decal/atoll/border/invert{dir = 4},/turf/simulated/floor/atoll,/area/gateway/atoll/falls) "ds" = (/obj/structure/canopy/edge/right,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "dt" = (/obj/effect/decal/shadow/floor,/obj/effect/floor_decal/atoll/border{dir = 5},/turf/simulated/floor/atoll,/area/gateway/atoll/falls) @@ -58,7 +60,6 @@ "ee" = (/obj/structure/aqueduct{dir = 4},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "eo" = (/obj/structure/canopy/edge/right,/turf/simulated/floor/water/atoll/sunk,/area/gateway/atoll/falls) "es" = (/obj/structure/canopy/edge,/obj/effect/decal/godray{dir = 4},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) -"ev" = (/obj/machinery/gateway{dir = 8},/obj/effect/floor_decal/atoll/border/invert{dir = 1},/turf/simulated/floor/atoll,/area/gateway/atoll/falls) "ey" = (/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 8},/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 4},/obj/structure/railing/overhang,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "eA" = (/obj/structure/bed/chair/sofa/bench/marble{dir = 4},/obj/effect/floor_decal/atoll/bronze{dir = 10},/turf/simulated/floor/atoll,/area/gateway/atoll/falls) "eC" = (/obj/effect/blocker,/turf/simulated/floor/atoll/vertical,/area/gateway/atoll/falls) @@ -66,6 +67,7 @@ "eJ" = (/obj/effect/floor_decal/atoll/border{dir = 4},/obj/effect/floor_decal/atoll/bronze{dir = 8},/obj/effect/floor_decal/atoll/bronze{dir = 1},/turf/simulated/floor/atoll,/area/gateway/atoll/falls) "eN" = (/obj/effect/floor_decal/atoll/bronze,/obj/effect/floor_decal/atoll/bronze{dir = 8},/turf/simulated/floor/atoll,/area/gateway/atoll/falls) "eX" = (/obj/structure/canopy/edge/south,/obj/structure/aqueduct{dir = 1},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) +"fc" = (/obj/structure/waterfall,/obj/structure/waterfall/mist,/obj/effect/decal/shadow/silhouette{icon_state = "silhouette"; dir = 1},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "fj" = (/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 4},/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 8},/obj/structure/railing/overhang,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "fq" = (/obj/effect/floor_decal/atoll/bronze{dir = 5},/obj/structure/bed/chair/sofa/bench/marble,/turf/simulated/floor/atoll,/area/gateway/atoll/falls) "fu" = (/obj/structure/waterfall,/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 1},/obj/structure/waterfall/mist,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) @@ -84,6 +86,7 @@ "gz" = (/obj/effect/step_trigger/teleporter/atoll{teleport_x = 40; teleport_y = 50},/turf/simulated/floor/atoll,/area/gateway/atoll/falls) "gA" = (/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 4},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "gC" = (/obj/structure/canopy/edge/north,/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 1},/obj/effect/decal/shadow/silhouette/pillar{dir = 8},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) +"gF" = (/obj/structure/canopy/edge/north,/obj/effect/decal/godray,/obj/structure/flora/tree/atoll/mangrove{dir = 4},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "gI" = (/obj/structure/railing/overhang,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "gP" = (/obj/effect/decal/shadow/silhouette{icon_state = "silhouette"; dir = 1},/obj/structure/flora/tree/atoll/mangrove{dir = 4},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "gS" = (/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 4},/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 1},/obj/effect/decal/shadow/silhouette/pillar{dir = 4},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) @@ -146,6 +149,7 @@ "lq" = (/obj/effect/floor_decal/atoll/bronze{dir = 9},/obj/structure/bed/chair/sofa/bench/marble,/turf/simulated/floor/atoll,/area/gateway/atoll/falls) "lu" = (/obj/structure/canopy/edge/north,/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 4},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "lv" = (/obj/effect/blocker,/obj/structure/canopy,/obj/structure/aqueduct{dir = 4},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) +"lx" = (/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 1},/obj/effect/decal/shadow/silhouette/pillar,/obj/structure/railing/overhang,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "lH" = (/obj/effect/decal/shadow/floor,/obj/effect/floor_decal/atoll/border{dir = 8},/obj/effect/floor_decal/atoll/bronze{dir = 4},/obj/effect/floor_decal/atoll/bronze,/turf/simulated/floor/atoll,/area/gateway/atoll/falls) "lI" = (/obj/structure/canopy/edge/north,/obj/effect/decal/godray,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "lK" = (/obj/structure/canopy_corner{dir = 1},/obj/effect/decal/shadow/silhouette/support,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) @@ -168,7 +172,6 @@ "mW" = (/obj/structure/waterfall,/turf/simulated/floor/atoll,/area/gateway/atoll/falls) "mY" = (/obj/structure/waterfall,/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 4},/turf/simulated/floor/atoll/vertical,/area/gateway/atoll/falls) "nb" = (/obj/effect/decal/shadow/silhouette,/obj/structure/canopy,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) -"nh" = (/obj/machinery/gateway{dir = 4},/obj/effect/floor_decal/atoll/border/invert{dir = 4},/turf/simulated/floor/atoll,/area/gateway/atoll/falls) "ni" = (/obj/effect/decal/shadow/silhouette,/obj/structure/canopy_corner,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "ns" = (/obj/effect/decal/shadow/silhouette,/obj/effect/blocker,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "nA" = (/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 1},/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 8},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) @@ -190,6 +193,7 @@ "oR" = (/obj/effect/floor_decal/atoll/border/invert{dir = 1},/obj/effect/floor_decal/atoll/border/invert,/turf/simulated/floor/atoll,/area/gateway/atoll/falls) "oV" = (/obj/effect/floor_decal/atoll/border/invert{dir = 8},/obj/effect/floor_decal/atoll/bronze{dir = 6},/turf/simulated/floor/atoll,/area/gateway/atoll/falls) "oW" = (/obj/effect/floor_decal/atoll/bronze{dir = 10},/obj/effect/floor_decal/atoll/border/invert{dir = 4},/turf/simulated/floor/atoll,/area/gateway/atoll/falls) +"oX" = (/obj/structure/waterfall,/obj/structure/waterfall/mist,/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 1},/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 8},/obj/effect/decal/shadow/silhouette/pillar{dir = 1},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "pb" = (/obj/effect/floor_decal/atoll/bronze{dir = 1},/obj/effect/floor_decal/atoll/bronze{dir = 8},/obj/structure/bed/chair/sofa/bench/marble{dir = 8},/turf/simulated/floor/atoll,/area/gateway/atoll/falls) "pj" = (/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 8},/obj/effect/decal/shadow,/turf/simulated/floor/atoll/vertical,/area/gateway/atoll/falls) "pl" = (/obj/effect/decal/shadow/silhouette{icon_state = "silhouette"; dir = 1},/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 4},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) @@ -260,7 +264,7 @@ "ug" = (/obj/effect/floor_decal/atoll/bronze{dir = 8},/obj/effect/floor_decal/atoll/bronze{dir = 1},/obj/structure/bed/chair/sofa/bench/marble{dir = 4},/turf/simulated/floor/atoll,/area/gateway/atoll/falls) "ui" = (/obj/effect/floor_decal/atoll/bronze{dir = 4},/obj/effect/floor_decal/atoll/bronze{dir = 1},/obj/effect/floor_decal/atoll/border{dir = 1},/obj/effect/landmark,/turf/simulated/floor/atoll,/area/gateway/atoll/falls) "uj" = (/obj/effect/blocker,/obj/effect/decal/shadow{icon_state = "wall_shadow"; dir = 1},/turf/simulated/floor/atoll/vertical,/area/gateway/atoll/falls) -"uo" = (/obj/structure/waterfall,/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 8},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) +"uo" = (/obj/structure/waterfall,/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 8},/obj/effect/decal/shadow/silhouette,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "uv" = (/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 1},/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 4},/obj/effect/decal/shadow/silhouette/pillar{dir = 1},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "uA" = (/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 4},/turf/simulated/floor/water/atoll/sunk,/area/gateway/atoll/falls) "uD" = (/obj/structure/waterfall,/obj/effect/floor_decal/atoll/bronze,/obj/effect/floor_decal/atoll/bronze{dir = 8},/turf/simulated/floor/atoll,/area/gateway/atoll/falls) @@ -306,6 +310,7 @@ "xO" = (/obj/structure/aqueduct{dir = 8},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "xR" = (/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 4},/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 8},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "yc" = (/obj/structure/canopy/edge,/obj/structure/aqueduct,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) +"ym" = (/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 1},/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 4},/obj/structure/waterfall,/obj/structure/waterfall/mist,/obj/effect/decal/shadow/silhouette/pillar{dir = 1},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "yq" = (/obj/structure/canopy,/obj/structure/temple,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "yt" = (/obj/effect/decal/shadow/floor,/obj/effect/decal/shadow/silhouette,/obj/structure/waterfall,/obj/effect/step_trigger/teleporter/atoll{teleport_x = 125; teleport_y = 17},/turf/simulated/floor/atoll,/area/gateway/atoll/falls) "yu" = (/obj/structure/canopy/edge,/obj/structure/temple,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) @@ -319,7 +324,6 @@ "yM" = (/obj/structure/canopy,/obj/effect/blocker,/obj/structure/aqueduct{dir = 4},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "yW" = (/obj/effect/step_trigger/teleporter/atoll{teleport_x = 73; teleport_y = 50},/obj/effect/floor_decal/atoll/border{dir = 8},/turf/simulated/floor/atoll,/area/gateway/atoll/falls) "zb" = (/obj/structure/waterfall/top,/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 4},/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 1},/turf/simulated/floor/atoll/vertical,/area/gateway/atoll/falls) -"zc" = (/obj/machinery/gateway{dir = 5},/obj/effect/floor_decal/atoll/border{dir = 5},/turf/simulated/floor/atoll,/area/gateway/atoll/falls) "zd" = (/obj/effect/floor_decal/atoll/bronze{dir = 10},/obj/effect/floor_decal/atoll/bronze{dir = 4},/turf/simulated/floor/atoll,/area/gateway/atoll/falls) "zh" = (/obj/structure/canopy/edge,/obj/structure/canopy/edge/right,/obj/structure/aqueduct{dir = 1},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "zk" = (/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 4},/obj/effect/decal/shadow/silhouette{icon_state = "silhouette"; dir = 1},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) @@ -368,7 +372,7 @@ "Cw" = (/obj/effect/landmark,/turf/simulated/floor/atoll,/area/gateway/atoll/falls) "Cz" = (/obj/structure/aqueduct,/obj/structure/aqueduct/pillar{dir = 1},/obj/structure/canopy,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "CH" = (/obj/effect/floor_decal/atoll/bronze{dir = 10},/turf/simulated/floor/atoll,/area/gateway/atoll/falls) -"CL" = (/obj/structure/canopy_corner,/obj/effect/decal/shadow/silhouette{icon_state = "silhouette"; dir = 1},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) +"CL" = (/obj/structure/canopy_corner,/obj/effect/decal/shadow/silhouette{icon_state = "silhouette"; dir = 1},/obj/structure/flora/tree/atoll/mangrove,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "CM" = (/obj/effect/decal/shadow{icon_state = "wall_shadow"; dir = 1},/turf/simulated/floor/atoll/vertical,/area/gateway/atoll/falls) "CP" = (/obj/structure/canopy_corner{dir = 8},/turf/simulated/floor/water/atoll/sunk,/area/gateway/atoll/falls) "CV" = (/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 1},/obj/structure/railing/overhang/waterless,/turf/simulated/floor/atoll/vertical,/area/gateway/atoll/falls) @@ -442,7 +446,6 @@ "Hn" = (/obj/structure/railing/overhang/waterless/under{dir = 4},/turf/simulated/floor/atoll/vertical,/area/gateway/atoll/falls) "Hs" = (/obj/structure/canopy,/obj/structure/railing/overhang/waterless,/obj/structure/aqueduct/pillar,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "HD" = (/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 4},/obj/effect/decal/shadow,/turf/simulated/floor/atoll/vertical,/area/gateway/atoll/falls) -"HG" = (/obj/machinery/gateway{dir = 10},/turf/simulated/floor/atoll,/area/gateway/atoll/falls) "HM" = (/obj/effect/floor_decal/atoll/border/invert{dir = 8},/obj/effect/floor_decal/atoll/bronze{dir = 4},/obj/effect/floor_decal/atoll/border/invert{dir = 4},/turf/simulated/floor/atoll,/area/gateway/atoll/falls) "HP" = (/obj/structure/canopy/edge,/obj/structure/canopy/edge/right,/obj/effect/decal/shadow/silhouette{icon_state = "silhouette"; dir = 1},/obj/effect/decal/godray{dir = 4},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "HQ" = (/obj/effect/floor_decal/atoll/bronze{dir = 1},/obj/effect/floor_decal/atoll/bronze{dir = 8},/obj/effect/floor_decal/atoll/border{dir = 8},/turf/simulated/floor/atoll,/area/gateway/atoll/falls) @@ -452,6 +455,7 @@ "Ic" = (/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 4},/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 1},/obj/structure/aqueduct{dir = 1},/obj/effect/decal/shadow/silhouette/pillar{dir = 8},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "Ie" = (/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 1},/obj/effect/blocker,/turf/simulated/floor/atoll/vertical,/area/gateway/atoll/falls) "Ik" = (/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 1},/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 4},/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 8},/obj/effect/decal/shadow/silhouette/pillar{dir = 1},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) +"Ip" = (/turf/unsimulated/beach/water,/area/gateway/atoll/falls) "Iq" = (/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 8},/obj/structure/waterfall/top,/turf/simulated/floor/atoll/vertical,/area/gateway/atoll/falls) "It" = (/obj/effect/floor_decal/atoll/border/invert{dir = 1},/obj/effect/floor_decal/atoll/bronze{dir = 1},/obj/effect/floor_decal/atoll/bronze{dir = 4},/turf/simulated/floor/atoll,/area/gateway/atoll/falls) "IC" = (/obj/structure/aqueduct/pillar,/obj/structure/canopy/edge/south,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) @@ -479,7 +483,7 @@ "KL" = (/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 1},/obj/effect/decal/shadow/silhouette/pillar{dir = 4},/obj/structure/canopy_corner{dir = 1},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "KM" = (/obj/structure/temple,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "KN" = (/obj/structure/monolith/first,/obj/effect/decal/godray,/turf/simulated/floor/atoll,/area/gateway/atoll/falls) -"KT" = (/obj/effect/blocker,/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 8},/obj/structure/waterfall,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) +"KT" = (/obj/effect/blocker,/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 8},/obj/structure/waterfall,/obj/effect/decal/shadow/silhouette,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "KY" = (/obj/structure/canopy/edge,/obj/effect/decal/shadow/silhouette{icon_state = "silhouette"; dir = 1},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "KZ" = (/obj/structure/aqueduct{dir = 8},/obj/structure/canopy/edge,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "Lb" = (/obj/effect/decal/shadow{icon_state = "wall_shadow"; dir = 1},/obj/effect/blocker,/turf/simulated/floor/atoll/vertical,/area/gateway/atoll/falls) @@ -509,6 +513,7 @@ "Mv" = (/obj/structure/aqueduct/pillar{dir = 4},/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 1},/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 8},/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 4},/obj/effect/decal/godray{dir = 8},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "My" = (/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 8},/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 1},/turf/simulated/floor/atoll/vertical,/area/gateway/atoll/falls) "MD" = (/obj/effect/decal/godray{dir = 4},/turf/simulated/floor/water/atoll/sunk,/area/gateway/atoll/falls) +"ME" = (/obj/structure/canopy_corner{dir = 1},/turf/unsimulated/beach/water,/area/gateway/atoll/falls) "MM" = (/obj/effect/floor_decal/atoll/border{dir = 5},/obj/effect/floor_decal/atoll/bronze{dir = 8},/turf/simulated/floor/atoll,/area/gateway/atoll/falls) "MR" = (/obj/effect/blocker,/obj/structure/canopy_corner,/obj/effect/decal/shadow/silhouette,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "Nf" = (/obj/effect/decal/shadow,/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 1},/obj/structure/railing/overhang/waterless,/obj/effect/decal/godray{dir = 8},/turf/simulated/floor/atoll/vertical,/area/gateway/atoll/falls) @@ -531,12 +536,14 @@ "Ox" = (/obj/structure/railing/overhang/waterless,/obj/structure/flora/tree/atoll/mangrove{dir = 8},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "OH" = (/obj/structure/canopy_corner{dir = 4},/obj/structure/aqueduct{dir = 1},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "OI" = (/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 4},/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 1},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) +"OS" = (/obj/structure/railing/overhang,/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 1},/obj/effect/decal/shadow/silhouette/pillar{dir = 1},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "Pd" = (/obj/structure/railing/overhang,/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 4},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "Pe" = (/obj/structure/canopy_corner,/obj/structure/railing/overhang/waterless,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "Pk" = (/obj/effect/step_trigger/teleporter/atoll{teleport_x = 100; teleport_y = 50},/obj/effect/floor_decal/atoll/border/invert{dir = 4},/obj/effect/floor_decal/atoll/border/invert,/obj/effect/floor_decal/atoll/border/invert{dir = 1},/obj/effect/floor_decal/atoll/border/invert{dir = 8},/turf/simulated/floor/atoll,/area/gateway/atoll/falls) "Pm" = (/obj/effect/floor_decal/atoll/bronze{dir = 6},/turf/simulated/floor/atoll,/area/gateway/atoll/falls) "Pn" = (/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 8},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "Pp" = (/obj/effect/landmark,/obj/effect/floor_decal/atoll/border/invert{dir = 1},/obj/effect/floor_decal/atoll/border/invert{dir = 8},/turf/simulated/floor/atoll,/area/gateway/atoll/falls) +"Pv" = (/obj/structure/railing/overhang,/obj/effect/decal/shadow/silhouette/pillar{dir = 1},/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 1},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "PA" = (/obj/effect/blocker,/obj/structure/canopy_corner{dir = 8},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "PB" = (/obj/effect/floor_decal/atoll/border/invert{dir = 4},/obj/effect/floor_decal/atoll/border/invert,/obj/effect/decal/godray{dir = 8},/obj/effect/floor_decal/atoll/bronze{dir = 8},/obj/effect/floor_decal/atoll/bronze{dir = 1},/turf/simulated/floor/atoll,/area/gateway/atoll/falls) "PC" = (/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 1},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) @@ -553,13 +560,13 @@ "Qq" = (/obj/effect/floor_decal/atoll/bronze{dir = 4},/obj/effect/floor_decal/atoll/bronze{dir = 1},/turf/simulated/floor/atoll,/area/gateway/atoll/falls) "Qs" = (/obj/structure/canopy_corner{dir = 8},/obj/structure/aqueduct,/obj/structure/aqueduct/pillar{dir = 1},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "Qt" = (/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 1},/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 4},/obj/effect/decal/shadow/silhouette/pillar{dir = 8},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) -"Qu" = (/obj/machinery/gateway{dir = 1},/obj/effect/floor_decal/atoll/border,/turf/simulated/floor/atoll,/area/gateway/atoll/falls) "Qz" = (/obj/effect/floor_decal/atoll/bronze,/obj/effect/floor_decal/atoll/bronze{dir = 4},/turf/simulated/floor/atoll,/area/gateway/atoll/falls) +"QD" = (/obj/effect/decal/shadow/silhouette/pillar{dir = 1},/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 1},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "QR" = (/obj/effect/decal/shadow/floor,/obj/effect/floor_decal/atoll{dir = 8},/turf/simulated/floor/atoll,/area/gateway/atoll/falls) "QS" = (/obj/effect/blocker,/obj/structure/aqueduct,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "Rc" = (/obj/effect/decal/godray,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "Rd" = (/obj/effect/decal/shadow,/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 1},/obj/structure/railing/overhang/waterless,/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 8},/obj/effect/blocker,/turf/simulated/floor/atoll/vertical,/area/gateway/atoll/falls) -"Rf" = (/obj/structure/aqueduct/pillar{dir = 1},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) +"Rf" = (/obj/effect/blocker,/obj/structure/waterfall,/obj/structure/waterfall/mist,/obj/effect/decal/shadow/silhouette{icon_state = "silhouette"; dir = 1},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "Rg" = (/obj/effect/floor_decal/atoll/border/invert{dir = 4},/obj/effect/floor_decal/atoll/border/invert,/obj/effect/landmark,/turf/simulated/floor/atoll,/area/gateway/atoll/falls) "Rl" = (/obj/structure/aqueduct{dir = 1},/obj/structure/canopy/edge/right,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "Rn" = (/obj/structure/canopy_corner{dir = 4},/obj/structure/aqueduct{dir = 8},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) @@ -587,27 +594,27 @@ "Td" = (/obj/structure/waterfall,/obj/structure/waterfall/mist,/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 8},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "Tg" = (/obj/effect/decal/shadow/silhouette{icon_state = "silhouette"; dir = 1},/obj/structure/flora/tree/atoll/mangrove{dir = 8},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "Ti" = (/obj/structure/waterfall/top,/obj/structure/canopy/edge/south,/obj/structure/aqueduct{dir = 8},/turf/simulated/floor/atoll/vertical,/area/gateway/atoll/falls) -"Tj" = (/obj/machinery/gateway/centeraway,/turf/simulated/floor/atoll,/area/gateway/atoll/falls) +"Tj" = (/obj/structure/redgate/away,/turf/simulated/floor/atoll,/area/gateway/atoll/falls) "Tv" = (/obj/structure/railing/overhang/waterless,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "Tz" = (/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 1},/obj/effect/decal/shadow/silhouette/pillar{dir = 8},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) -"TA" = (/obj/machinery/gateway{dir = 6},/turf/simulated/floor/atoll,/area/gateway/atoll/falls) "TD" = (/obj/structure/temple,/obj/structure/flora/tree/atoll/mangrove{dir = 8},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "TF" = (/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 1},/obj/structure/canopy/edge/north,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "TH" = (/obj/structure/aqueduct{dir = 1},/obj/structure/canopy,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "TI" = (/obj/effect/decal/shadow/floor,/obj/effect/floor_decal/atoll/border/invert{dir = 4},/obj/effect/floor_decal/atoll/border/invert,/turf/simulated/floor/atoll,/area/gateway/atoll/falls) "TM" = (/obj/structure/waterfall,/obj/effect/floor_decal/atoll/bronze{dir = 8},/obj/effect/floor_decal/atoll/bronze,/turf/simulated/floor/atoll,/area/gateway/atoll/falls) "TR" = (/obj/effect/step_trigger/teleporter/atoll{teleport_x = 83; teleport_y = 50},/turf/simulated/floor/atoll,/area/gateway/atoll/falls) +"TT" = (/obj/structure/waterfall,/obj/effect/decal/shadow/silhouette,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "Uc" = (/obj/structure/canopy,/obj/effect/decal/shadow/silhouette{icon_state = "silhouette"; dir = 1},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "Ui" = (/obj/structure/canopy/edge/right,/obj/effect/decal/shadow/silhouette{icon_state = "silhouette"; dir = 1},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "Uj" = (/obj/structure/canopy_corner{dir = 4},/obj/structure/aqueduct{dir = 4},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "Uk" = (/obj/effect/decal/shadow{icon_state = "wall_shadow"; dir = 1},/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 8},/turf/simulated/floor/atoll/vertical,/area/gateway/atoll/falls) +"Ul" = (/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 1},/obj/effect/decal/shadow/silhouette/pillar{dir = 1},/obj/structure/railing/overhang,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "Ur" = (/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 1},/turf/simulated/floor/atoll/vertical,/area/gateway/atoll/falls) "Us" = (/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 1},/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 4},/obj/structure/waterfall,/obj/structure/waterfall/mist,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "UJ" = (/obj/structure/canopy/edge/right,/obj/effect/decal/godray{dir = 8},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "UO" = (/obj/structure/waterfall,/obj/structure/waterfall/mist,/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 4},/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 8},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "UQ" = (/obj/structure/canopy,/obj/structure/railing/overhang/waterless{icon_state = "wbronze_railing0"; dir = 8},/obj/effect/decal/shadow/silhouette{icon_state = "silhouette"; dir = 1},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "UZ" = (/obj/effect/decal/shadow,/turf/simulated/floor/atoll/vertical,/area/gateway/atoll/falls) -"Vb" = (/obj/machinery/gateway,/turf/simulated/floor/atoll,/area/gateway/atoll/falls) "Vc" = (/obj/effect/floor_decal/atoll/bronze{dir = 6},/obj/effect/floor_decal/atoll/border/invert{dir = 1},/turf/simulated/floor/atoll,/area/gateway/atoll/falls) "Vd" = (/obj/effect/floor_decal/atoll/bronze{dir = 4},/obj/effect/floor_decal/atoll/border{dir = 10},/turf/simulated/floor/atoll,/area/gateway/atoll/falls) "Ve" = (/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 8},/obj/vehicle/boat{icon_state = "boat"; dir = 4},/obj/item/weapon/oar,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) @@ -657,11 +664,10 @@ "Yv" = (/obj/effect/step_trigger/teleporter/atoll{teleport_x = 57; teleport_y = 50},/turf/simulated/floor/atoll,/area/gateway/atoll/falls) "Yw" = (/obj/structure/waterfall,/obj/structure/aqueduct{dir = 4},/turf/simulated/floor/atoll/vertical,/area/gateway/atoll/falls) "Yy" = (/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 1},/obj/effect/decal/shadow/silhouette/pillar{dir = 4},/obj/structure/canopy/edge/right,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) -"YC" = (/obj/structure/waterfall,/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 4},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) +"YC" = (/obj/structure/waterfall,/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 4},/obj/effect/decal/shadow/silhouette,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "YE" = (/obj/effect/decal/shadow/silhouette/support,/obj/structure/canopy,/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "YG" = (/obj/structure/flora/tree/atoll/mangrove{dir = 8},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "YH" = (/obj/structure/canopy/edge/north,/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 8},/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 4},/obj/effect/decal/shadow/silhouette/support,/obj/effect/decal/godray{dir = 1},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) -"YK" = (/obj/machinery/gateway{dir = 9},/obj/effect/floor_decal/atoll/border{dir = 9},/turf/simulated/floor/atoll,/area/gateway/atoll/falls) "YL" = (/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 8},/obj/structure/canopy_corner{dir = 1},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "Za" = (/obj/structure/waterfall,/obj/structure/waterfall/mist,/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 1},/obj/structure/railing/overhang{icon_state = "bronze_railing0"; dir = 8},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) "Zb" = (/obj/structure/flora/tree/atoll/mangrove{dir = 4},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) @@ -681,16 +687,16 @@ "ZX" = (/obj/structure/canopy_corner{dir = 1},/obj/effect/decal/shadow/silhouette{icon_state = "silhouette"; dir = 1},/turf/simulated/floor/water/atoll,/area/gateway/atoll/falls) (1,1,1) = {" -FrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrLjhhFrFrWQqnqnqnqnqnqnqnqnqnqnqnlaVMPnqnqnqnqnqnqnqnlaVMPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnlaVMPnqnqnqnqnqnqnqnlaVMPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnlaVMPnqnqnqnqnqnqnqnlaVMPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnlaVMPnqnqnqnqnqnqnqnlaVMPnqnqnqnqn +MEFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrLjhhFrFrWQqnqnqnqnqnqnqnqnqnqnqnlaVMPnqnqnqnqnqnqnqnlaVMPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnlaVMPnqnqnqnqnqnqnqnlaVMPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnlaVMPnqnqnqnqnqnqnqnlaVMPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnlaVMPnqnqnqnqnqnqnqnlaVMPnqnqnqnIp FrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrLjhhFrFrFrlXwMwMwMwMwMwMwMwMwMwMWkVMPnqnqnqnqnqnqnqnlaVMsYwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMWkVMPnqnqnqnqnqnqnqnlaVMsYwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMWkVMPnqnqnqnqnqnqnqnlaVMsYwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMWkVMPnqnqnqnqnqnqnqnlaVMsYwMwMwMwM -FxFxFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrLjhhFrFrFrBqHiHiHiHiHiHiHiHiHiHimYVMPnqnqnqnqnqnqnqnlaVMbwHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHimYVMPnqnqnqnqnqnqnqnlaVMbwHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHimYVMPnqnqnqnqnqnqnqnlaVMbwHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHimYVMPnqnqnqnqnqnqnqnlaVMbwHiHiHiHi -FxFxFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrLjhhFrFrFrvcHiHiHiHiHiHiHiHiHiHimYVMPnqnqnqnqnqnqnqnlaVMbwHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHimYVMPnqnqnqnqnqnqnqnlaVMbwHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHimYVMPnqnqnqnqnqnqnqnlaVMbwHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHimYVMPnqnqnqnqnqnqnqnlaVMbwHiHiHiHi -FxFxFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrLjhhFrFrFrFrBqHiHiHiHiHiHiHiHiHimYVMsYwMwMwMwMwMwMwMWkVMbwHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHimYVMsYwMwMwMwMwMwMwMWkVMbwHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHimYVMsYwMwMwMwMwMwMwMWkVMbwHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHimYVMsYwMwMwMwMwMwMwMWkVMbwHiHiHiHi -FxFxFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrLjhhFrFrFrFrBqHiHiHiHiHiHiHiHiHimYVMbwHiHiHiHiHiHiHimYVMbwHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHimYVMbwHiHiHiHiHiHiHimYVMbwHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHimYVMbwHiHiHiHiHiHiHimYVMbwHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHimYVMbwHiHiHiHiHiHiHimYVMbwHiHiHiHi -FxFxFrFrFrFrgvgvgvgvgvgvgvgvgvgvgvgkyMgvgvgvgvkaPNPNPNPNPNPNPNPNPNPNIePNPNPNPNPNPNPNPNPNIePNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNwBKcKcKcbnbnbnKcKcKcwBPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNIePNPNPNPNPNPNPNPNPNIePNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNIePNPNPNPNPNPNPNPNPNUrHiHiHiHiHi -FrFrFrFrFrFrlPFrFrFrFrFrFrFrFrFrFrLjhhFrFrFrFrFrBqHiHiHiHiHiHiHiHiHiGoHiHiHiHiHiHiHiHiHiGoHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiGoHiHiZoYKQuzcsNHiHiGoHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiGoHiHiHiHiHiHiHiHiHiGoHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiGoHiHiHiHiHiHiHiHiKcGoHiHiHiHiHi -FrFrFrFrFrFrlPFrFrFrFrFrFrFrFrFrFrLjhhFrFrFrFrFrBqHiHiHiHiHiHiHiHiHiGoHiHiHiHiHiHiHiHiHiGoHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiGoHimYqyevTjnhhpbwHiGoHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiGoHiHiHiHiHiHiHiHiHiGoHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiGoHiHiHiHiHiHiHiHiKcGoHiHiHiHiHi -FrFrFrFrFrFrlPFrFrFrFrFrFrFrFrFrFrLjhhFrFrFrFrFrBqHiHiHiHiHiHiHiHiHiGoHiHiHiHiHiHiHiHiHiGoHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiGoHiZoaWHGVbTAaJsNHiGoHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiGoHiHiHiHiHiHiHiHiHiGoHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiGoHiHiHiHiHiHiHiHiKcGoHiHiHiHiHi +FrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrLjhhFrFrFrBqHiHiHiHiHiHiHiHiHiHimYVMPnqnqnqnqnqnqnqnlaVMbwHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHimYVMPnqnqnqnqnqnqnqnlaVMbwHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHimYVMPnqnqnqnqnqnqnqnlaVMbwHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHimYVMPnqnqnqnqnqnqnqnlaVMbwHiHiHiHi +FrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrLjhhFrFrFrvcHiHiHiHiHiHiHiHiHiHimYVMPnqnqnqnqnqnqnqnlaVMbwHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHimYVMPnqnqnqnqnqnqnqnlaVMbwHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHimYVMPnqnqnqnqnqnqnqnlaVMbwHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHimYVMPnqnqnqnqnqnqnqnlaVMbwHiHiHiHi +FrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrLjhhFrFrFrFrBqHiHiHiHiHiHiHiHiHimYVMsYwMwMwMwMwMwMwMWkVMbwHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHimYVMsYwMwMwMwMwMwMwMWkVMbwHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHimYVMsYwMwMwMwMwMwMwMWkVMbwHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHimYVMsYwMwMwMwMwMwMwMWkVMbwHiHiHiHi +FrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrLjhhFrFrFrFrBqHiHiHiHiHiHiHiHiHimYVMbwHiHiHiHiHiHiHimYVMbwHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHimYVMbwHiHiHiHiHiHiHimYVMbwHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHimYVMbwHiHiHiHiHiHiHimYVMbwHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHimYVMbwHiHiHiHiHiHiHimYVMbwHiHiHiHi +FrFrFrFrFrFrlPgvgvgvgvgvgvgvgvgvgvgkyMgvgvgvgvkaPNPNPNPNPNPNPNPNPNPNIePNPNPNPNPNPNPNPNPNIePNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNwBKcKcKcbnbnbnKcKcKcwBPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNIePNPNPNPNPNPNPNPNPNIePNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNPNIePNPNPNPNPNPNPNPNPNUrHiHiHiHiHi +FrFrFrFrFrFrlPFrFrFrFrFrFrFrFrFrFrLjhhFrFrFrFrFrBqHiHiHiHiHiHiHiHiHiGoHiHiHiHiHiHiHiHiHiGoHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiGoHiHiZoqyDuhpsNHiHiGoHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiGoHiHiHiHiHiHiHiHiHiGoHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiGoHiHiHiHiHiHiHiHiKcGoHiHiHiHiHi +FrFrFrFrFrFrlPFrFrFrFrFrFrFrFrFrFrLjhhFrFrFrFrFrBqHiHiHiHiHiHiHiHiHiGoHiHiHiHiHiHiHiHiHiGoHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiGoHimYqyhjTjGhhpbwHiGoHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiGoHiHiHiHiHiHiHiHiHiGoHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiGoHiHiHiHiHiHiHiHiKcGoHiHiHiHiHi +FrFrFrFrFrFrlPFrFrFrFrFrFrFrFrFrFrLjhhFrFrFrFrFrBqHiHiHiHiHiHiHiHiHiGoHiHiHiHiHiHiHiHiHiGoHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiGoHiZoaWVMVMVMaJsNHiGoHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiGoHiHiHiHiHiHiHiHiHiGoHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiGoHiHiHiHiHiHiHiHiKcGoHiHiHiHiHi FrFrFrFrFrFrlPFrFrFrFrFrFrFrFrFrFrLjhhFrFrFrFrFrvcHiHiHiHiHiHiHiHiHiGoHiHiHiHiHiHiHiHiHiGoHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiGoZoqyhjVMVMVMGhhpsNGoHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiGoHiHiHiHiHiHiHiHiHiGoHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiGoHiHiHiHiHiHiHiHiKcGoHiHiHiHiHi WjWjWjWjWjWjNuWjWjWjWjWjWjWjWjWjWjFrFrFrFrFrFrFrFrcEjKjKjKjKjKjKjKjKGoHiHiHiHiHiHiHiHiHiGojKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKGOqyFgciGqGqGqFgcihpxsjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKGoHiHiHiHiHiHiHiHiHiGojKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKjKGoHiHiHiHiHiHiHiHiKcGojKjKjKjKjK nXnXnXnXnXnXEYnXGvnXnXnXGvnXnXnXGvczFrFrFrFrFrFrFrAhwrwrwrwrwrwrwrwrGoHiHiHiHiHiHiHiHiHiGowrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrGOaWGLxogditgdgSrKaJxstrtrtrtrtrtrtrtrtrtrtrtrtrtrtrtrtrtrtrGoHiHiHiHiHiHiHiHiHiGowrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrwrGoHiHiHiHiHiHiHiHiKcGowrwrwrwrwr @@ -698,24 +704,24 @@ FrFrFrFrFrFrlPFriJFrFrFriJFrFrFriJFrFrFrFrFrFrFrFrzCqnqnqnqnqnqnqnqnGoHiHiHiHiHi FrFrFrFrFrFrlPFriJFrLTaEiJFrFrFrHshIhIFrFrFrFrFrFrzCtXtXqnqnqnqnqnqnGoHiHiHiHiHiHiHiHiHiGoqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnGOaWFgaDgIsUgIPHciaJxsqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnGoHiHiHiHiHiHiHiHiHiGoqnqnqnqnqnqnqnqnqnqnqnqnqnZbqnqnqnqnqnGoHiHiHiHiHiHiHiHiKcGoqnqnqnhuFr FrFrFrFrFrFrlPLTQoLrWQqntoaEFrBHXRWwkOaRFrFrFrFrFrzCjxjxqnqnqnqnqnqnUZHiHiHiHiHiHiHiHiHiUZqnqnqnqnqnqnqnZbqnqnqnqnqnqnqnqnqnqnqnHDaWGLrKGqGqGqGLrKaJpjqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnUZHiHiHiHiHiHiHiHiHiUZqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnUZHiHiHiHiHiHiHiHiKcUZqnqnhuFrFr FrFrFrFrFrFrlPzCmhFrFrWQFVhuFrBHSKLMHQaRFrFrFrFrLTqnqnqnqnqnqnqnqnqnCMjKjKjKjKjKjKjKjKjKCMqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnubaWiNjDjDjDjDjDvmaJnDqnZbqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnCMjKjKjKjKjKjKjKjKjKCMqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnCMjKjKjKjKjKjKjKjKicCMqndsFrFrFr -FrFrFrFrFrFrlPWQhuFrFrFrFrFrFrBHHMAuvWaRFrLyaEFrzCqnqntXtXqnqnqnqnqnVswrwrwrwrwrwrwrwrwrVsqnqnqnqnqnqnqnFfqnqnqnqnqnqnZbqnqnqnqnpXGfDbaAdGVMaAdGGfDbovqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnVswrwrwrwrwrwrwrwrwrVsqnqnqnqnqnqnhXqnqnqnqnqnqnqnqnqnqnqnqnVswrwrwrwrwrwrwrwrGEVsqndsFrFrFr -FrFrFrFrFrFrlPFrFrFrFrFrFrFrFrLTUrUrUraEBHpmtfFrzCqnqnjxsoqnqnqnqnqnjxqnqnqnqnqnqnqnqnqnjxqnqnqnaNqngIgIgIgIgIqnqnqnqnqnqnqnqnqnjxREREWKiSREiSWKREREjxqnqnhXqnqnqnqnqnqngIgIgIgIgIqnqnqnqnqnjxqnqnqnqnqnqnqnqnqnjxqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnjxqwqwqwqnqnqnqnqnozSiqwhuFrFrFr -FrFrFrFrFrFrlPFrFrhIhIFrFrFrFrzCGoGoGohuFrQmFrFrzCqnqngActMtqnqnqnqnqnqnTvqntXqnqnqnqnqnqnqnqnqnqnladjDuDuDuoFmvgIgIgIgIgIgIgIgIgICMCMBBxHCMxHBBCMCMgIgIgIgIgIgIgIgIgIPddjDuDuDuoFPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnhuFrFrFrWQqnqnqnqwiiFrFrFrFrFrFr +FrFrFrFrFrFrlPWQhuFrFrFrFrFrFrBHHMAuvWaRFrLyaEFrzCqnqntXtXqnqnqnqnqnVswrwrwrwrwrwrwrwrwrVsqnqnqnqnqnqnqnFfqnqnqnqnqnqnZbqngIqnqnpXGfDbaAdGVMaAdGGfDbovqnqngIqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnVswrwrwrwrwrwrwrwrwrVsqnqnqnqnqnqnhXqnqnqnqnqnqnqnqnqnqnqnqnVswrwrwrwrwrwrwrwrGEVsqndsFrFrFr +FrFrFrFrFrFrlPFrFrFrFrFrFrFrFrLTUrUrUraEBHpmtfFrzCqnqnjxsoqnqnqnqnqnjxqnqnqnqnqnqnqnqnqnjxqnqnqnaNqngIgIgIgIgIqnqnqnqnqnlaDMPnqnjxREREWKiSREiSWKREREjxqnlaDMPnqnqnqnqnqngIgIgIgIgIqnqnqnqnqnjxqnqnqnqnqnqnqnqnqnjxqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnjxqwqwqwqnqnqnqnqnozSiqwhuFrFrFr +FrFrFrFrFrFrlPFrFrhIhIFrFrFrFrzCGoGoGohuFrQmFrFrzCqnqngActMtqnqnqnqnqnqnTvqntXqnqnqnqnqnqnqnqnqnqnladjDuDuDuoFmvgIgIgIgIgIlxgIgIgICMCMBBxHCMxHBBCMCMgIgIgIlxgIgIgIgIgIPddjDuDuDuoFPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnhuFrFrFrWQqnqnqnqwiiFrFrFrFrFrFr FrFrFrFrFrFrlPFrBHFgciaRFrFrFrzCUZUZUZFrFrCMaEFrzCqnYGqnREqnqnZbqnqnqnlRfHEjjxqnqnqnqnqnqnqnqnqnqnlaaWZEQqIJGhDuhjRRvlvlvlvlErLDVMhchctBWMXqkhCbhchcVMRRErvlvlvlvlLDGhDuhjZEQqIJaJPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnhuFrFrFrFrFrPeqwhuFrlPFrFrFrFrFrFr FrFrFrFrFrFrlPFrBHGLrKaRFrFrFrWQCMCMCMaEFrbJhuFrzCqnTvTvVsqnTvTvTvTvhuFrUrFrzCqnqnqnqnqnqnqnqnqnqnlaaWCexIWpVMVMVMVMVMVMVMVMVMVMVMVMVMVMaJxzaWVMVMVMVMVMVMVMVMVMVMVMVMVMVMCeQeWpaJPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqntXqnqnqndsFrLTaEFrFrBHLgaRFrFrkmhIhIFrFrFrFr FrFrFrFrFrFrlPFrFrREREFrhIhIhIhINTNTbJhuFrUcFrLTqngAFgcismgAdRgsxvMjaRFrUZFrWQqnqnqntXqnqnqnqnqnqnlaaWCHJkPmiNjDvmtTJkJkJkJkJkaPVMVMVMVMGhDuhjVMVMVMVMtTeNeNeNeNeNaPiNjDvmCHJkPmaJPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnKMqnqnYGqnqnaNqnqnqnjxqnqnqndsFrWQqnjPaELTQmhIhIBHmsrBXuaRFrFrFr -FrFrFrFrFrFrlPFrLTCMCMBHyIESGDMMUQUcUcFrFrFrFrzCqngAGLrKMtgApARgyEgUaRFrCMFrFrzCqnqnjxhXqnqnqnqnqnlaGfvmVMiNDbZfPCTzgdgdgdgdgdzYPCwFCHVMVMVMVMVMPmnAPCTzgdgdgdgdgdzYPCOIGfvmVMiNDbPnqnqnqnqnqnqnqnqnqnqnqnqnhXqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqndsFrFrWQqndsWQgwDqzRGPNhaMVcaRFrFrFr -FrFrFrFrFrFrlPFrWQOuagBHVdBauiqKaRhIFrFrFrFrFrzCqnqnREREqngAXadwvnWSxFFrNohIFrzCqnqnqnqnqnqnqnqnqngIVTaWVMaJztqnqnqnqnqnqnqnqnqnqnqnPCwFVMVMVMnAPCqnqnqnqnqnqnqnqnqnqnqnSJaWVMaJqYgIqnqnqnqnZbqnqnqnqnKMqnqnqnqnqnqnqnqnqntXtXqnqnqnqnqntXqnqnqnqnqnqnaEFrFrWQqnaEUcQmQmFrwBUrUrFrFrFrFr -FrFrFrFrFrFrlPFrFrUcUcFrREREREREBHfHaRFrFrFrLTqnqnqnVsFUllqnUrUrUrUrrbHbNCXuaRzCqnqnqnqnqnqnqnqntXVMGhhjVMGhPnqnqnqnqnqnqnRfqnqnqnqnqnlaVMVMVMPnqnqnqnqnqnRfqnqnqnqnqnqnlahjVMGhhjVMtXqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnjxjxqnqnqnqnqnjxqnqnKMqnqnqnqnaEFrFrWQhuFrCMCMFreCGoGoFrFrFrFr +FrFrFrFrFrFrlPFrLTCMCMBHyIESGDMMUQUcUcFrFrFrFrzCqngAGLrKMtgApARgyEgUaRFrCMFrFrzCqnqnjxhXqnqnqnqnqnlaGfvmVMiNDbZfPCTzgdgdgdOSgdzYPCwFCHVMVMVMVMVMPmnAPCTzQDPvQDgdgdzYPCOIGfvmVMiNDbPnqnqnqnqnqnqnqnqnqnqnqnqnhXqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqndsFrFrWQqndsWQgwDqzRGPNhaMVcaRFrFrFr +FrFrFrFrFrFrlPFrWQOuagBHVdBauiqKaRhIFrFrFrFrFrzCqnqnREREqngAXadwvnWSxFFrNohIFrzCqnqnqnqnqnqnqnqnqngIVTaWVMaJztqnqnqnqnqnlaDMPnqnqnqnPCwFVMVMVMnAPCqnqnqnlaDMPnqnqnqnqnqnSJaWVMaJqYgIqnqnqnqnZbqnqnqnqnKMqnqnqnqnqnqnqnqnqntXtXqnqnqnqnqntXqnqnqnqnqnqnaEFrFrWQqnaEUcQmQmFrwBUrUrFrFrFrFr +FrFrFrFrFrFrlPFrFrUcUcFrREREREREBHfHaRFrFrFrLTqnqnqnVsFUllqnUrUrUrUrrbHbNCXuaRzCqnqnqnqnqnqnqnqntXVMGhhjVMGhPnqnqnqnqnqnqnirqnqnqnqnqnlaVMVMVMPnqnqnqnqnqnirqnqnqnqnqnqnlahjVMGhhjVMtXqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnjxjxqnqnqnqnqnjxqnqnKMqnqnqnqnaEFrFrWQhuFrCMCMFreCGoGoFrFrFrFr FrFrFrFrFrFrlPFrFrFrFrFrNTNTniagFrQmaEFrFxFrzCqnqnqnzkDIEWMtUZUZUZUZFrDwZIVcaRzCqnqnqnqnqntXtXtXEyCwVMVMVMVMPnqnqnqnqnqnqnzNqnqnqnqnqnqnsEVMVMPnqnqnqnqnqnzNqnqnqnqnqnqnlaVMVMVMVMVMVMtXtXtXtXtXtXtXtXtXtXtXqntXqnqntXqntXqnqnqnqnqnqnhXqnqnqntXqnqnqnqnTvYbFrFrFrLTVstSFriFUZUZFrFrFrFr FrFrFrFrFrFrlPFrFrFrFrFrUcUcUcUcFrwfhuFxFxFrzCqnqnqnqnUrUrqwCMCMCMCMFrFrREREFrzCKMqnqnqnqntXtXtXsEVMVMVMVMVMPnqnqnqnqnqnqnzNqnqnqnqnqnqntXsEVMPnqnqnqnqnqnzNqnqnqnqnqnqnlaVMVMVMVMVMsEtXjxtXtXtXtXtXtXsHtXjxqnjxtXqnjxqnjxtXqnqnqnqnqnqnqnqnqnjxqnqntXgAzdLgWOFrFrWQaOZXFrujCMCMFrFrFrFr FrFrFrFrFrFrlPFrFrFrFrFrFrFrFrFrLTjxFrFxFxLTqnqnaNqnqnUZUZFrnbniWcagFrFrCMCMFrzCqnqnqntXqnjxjxjxjxPCOIvmVMiNPnqnqnqnqnqnqnKuqnqnqnqnqnlaVMtXsEqnqnqnqnqnqnKuqnqnqnqnqnqnlavmVMiNZfPCjxjxhXjxjxjxjxjxjxjxjxqnqnqnjxqnqnqnZbjxqnqnqnqnqnqnqnqnqnqnqnqnjxqnQmQmqnjPaEFrFrFrFrMRVstSFrFrFrFr FrFrFrFrFrFrlPFrFrFrFrFrFrFrFrFrWQhuFrFrLTqnqnqnqnqnqnCMCMFrDpDpDpDpFrFrniagFrzCYGqnqnjxqnqnqnqnqngIPHaWVMaJmvgIqnqnqnqnqnmhqnqnqnqnqnqnsETgtXhXqnqnqnqnqnmhqnqnqnqnqngIPHaWVMaJmvgIqnqnqnqnqnqnqnqnqnqnqnqnqnqnqntXqnqnqnqnaNKMqnqnqnqnqnXFXFXFXFXFXFXFjFjFXFXFRlTHOHIRWjWmtzqaTHTHTHTH FrFrFrFrFrFrlPFrFrFrFrFrFrFrFrFrFrFrFrLTqnqnqnqnqnqnqnVsvTFrFrFrFrFrFrFrDpDpFrzCqntXtXqnqnqnqnqnladRDuhjVMGhDumNPnqnqnqnqnqnqnKMqnZbqnqntXtXtXqnKMqnqnqnqnqnqnqnqnqnladRDuhjVMGhDumNPnqnqnqnqnqnqnqnqnqnqnqnqnqnqntXqnqnqnqnqnqnqnqnYGMrqnsXJSsXsXsXsXsXtVrcsXsXiyBAycsXRWvpBABABABABACz FrFrFrFrFrFrlPFrFrFrFrFrFrFrFrFrFrFxLTqnqnqnqnqnqntXqnjxjxjPaEFrFrFrFrFrFrFrLTqnqntXtXqnqnqnqnqnlaaWtTeNeNeNaPaJPnqnqnqnqnqnqnqnqnqnqnlajaVMjxqnqnqnqnqnqnqnqnqnqnqnlaaWtTeNeNeNaPaJPnqnqnqnZbqnqnqnqnqnqnqnqnqnqnjxtXqnqnqnqntXqnqntXxOeeKMKuqnqnqnqnqnjxVnqndsFrFrzCqnKuPAFrFrFrFrFrvM -FrFrFrFrFrFrlPFrFrFrFrFrFrFrFrFrLTjPqnqnqnqnqnqnqnjxqntXqnqnqnjPjPjPjPjPjPjPqnqnqnjxjxqnqnqnqnqnlaaWQzxogdgSbVaJPnqnqnqnqnqnqnqntXtXtXtXsEVMtXqnqntXtXtXqnqnqnqnqnqnlaaWQzxogdgSbVaJPnqnqnqnqnqnqnqnqnqnKMqnqnqnaNqntXqnqnqnqnjxqntXjxxOeeqnmhqnqnqnqnqnqnmhqndsFrFrWQqnmhiiFrFrFrFrFrYE -FrFrFrFrFrFrlPFrFrFrFrFrFrFrFrFrzCqnqnqnqnqnqnqnqnqnqnjxqnqnqnqnqnqnqnqnqntXqnqnqntXqnqnqnqnqnqnlaaWQzPnhXlabVaJPnqnqnqnqnqnqnqnjxtXtXtXjxsEVMtXtXVMtXjxqnYGqnqnqnqnlaaWQzPnZblabVaJPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnjxqnqnqnqnqntXjxqnxOeeqnqnqnqnqnqnqnqnqnqndsFrFrFrWQhulPFrFrFrFrFrFr -FrFrFrFrFrFrlPFrFrFrFrFrFrFrFrFruKqnqnqnqnqnqnqnqnqnqnqnqnaNqngIqnqntXqnqnjxqnqnqnjxqnqnqnqnqnqnlaaWQzmvgIPHbVaJPnqnqnqnqngIqnqnqnjxjxgPqnZHgdjxjxgdjxqnqngIqnqnqnqnlaaWQzmvgIPHbVaJPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqngIqnqnqnqnqnjxqnqnxOeeqnqnqnqngIqnqnqnqnqnqnaEFrFrFrFrlPFrFrFrFrFrFr +FrFrFrFrFrFrlPFrFrFrFrFrFrFrFrFrLTjPqnqnqnqnqnqnqnjxqntXqnqnqnjPjPjPjPjPjPjPqnqnqnjxjxqnqnqnqnqnlaaWQzxogdgSbVaJPnqngIqnqnqnqnqntXtXtXtXsEVMtXqnqntXtXtXqnqnqnqngIqnlaaWQzxogdgSbVaJPnqnqnqnqnqnqnqnqnqnKMqnqnqnaNqntXqnqnqnqnjxqntXjxxOeeqnmhqnqnqnqnqnqnmhqndsFrFrWQqnmhiiFrFrFrFrFrYE +FrFrFrFrFrFrlPFrFrFrFrFrFrFrFrFrzCqnqnqnqnqnqnqnqnqnqnjxqnqnqnqnqnqnqnqnqntXqnqnqntXqnqnqnqnqnqnlaaWQzPnhXlabVaJPnlaDMPnqnqnqnqnjxtXtXtXjxsEVMtXtXVMtXjxqnYGqnlaDMPnlaaWQzPnZblabVaJPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnjxqnqnqnqnqntXjxqnxOeeqnqnqnqnqnqnqnqnqnqndsFrFrFrWQhulPFrFrFrFrFrFr +FrFrFrFrFrFrlPFrFrFrFrFrFrFrFrFruKqnqnqnqnqnqnqnqnqnqnqnqnaNqngIqnqntXqnqnjxqnqnqnjxqnqnqnqnqnqnlaaWQzmvgIPHbVaJPnqnirqnqngIqnqnqnjxjxgPqnZHgdjxjxgdjxqnqngIqnqnirqnlaaWQzmvgIPHbVaJPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqngIqnqnqnqnqnjxqnqnxOeeqnqnqnqngIqnqnqnqnqnqnaEFrFrFrFrlPFrFrFrFrFrFr FrFrFrFrFrFrlPFrFrFrFrFrFrFrFrpVVMPnqnqnqnqnqnqnqnqnqnqnqnqnlaVMPnqnjxqnqnqnqnqnqnqntXqnqnqnqnqnlaaWRRvlvlvlLDaJPnqnqnqnlaVMPnqnqnqnqnqnlaVMPnqnqnqnqnqnlaVMPnqnqnqnlaaWRRvlvlvlLDaJPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnlaVMPnqnqnqnqnqnqnqnxOeeqnqnqnlaVMPnqnqnqnqnqndsFrFrFrFrlPFrFrFrFrFrFr FrFrFrFrFrFrlPFrFrFrFrFrFrFrLTlaVMPnqnqnqnqnqnqnqnqnqnqnqnqnlaVMPnqnqnqnqnqnaNqnqnqnjxqnqnqnqnqnlaXajDvmVMiNjDWSPnqnqnqnlaVMPnqnqnqnqnqnlaVMPnqnqnqnqnqnlaVMPnqnqnqnlaXajDvmVMiNjDWSvYqnqnqnqnqnqnqnqnqnqnqnqnqnqnlaVMPnqnqnqnqnqnqnqnxOeeqnqnqnlaVMPnqnqnqnqnqnqnaEFrFrFrlPFrFrFrFrFrFr FrFrFrFrFrFrlPFrFrFrFrFrFrFrWQlaVMsYwMwMwMwMwMwMwMwMwMwMwMwMWkVMPnqnqnqnqnqnqnqnqnqnqnqnZbqnqnqnqnTzJOaWVMaJvywuwMwMwMwMWkVMPnqnqnqnqnqnlaVMPnqnqnqnqnqnlaVMsYwMwMwMwMwuzbaWVMaJaUzYqnqnqnqnqnqnqnqnqnqnZbqnqnqnqnlaVMsYwMwMwMwMwMwMwMyzRwwMwMwMWkVMPnqnqnqnqnqnqnqnjPjPaElPFrFrFrFrFrFr @@ -731,16 +737,16 @@ FrFrFrFrFrFrlPFrFrFrFrFrFrzCqndsFrFrWQqwjPaEFrFrFrzCqnqnqnqnqnqnqntXqnqnqnqnqnqn FrFrFrFrFrFrgvFrFrFrFrFrLTqnqndsFrFrFrFrWQhuFrFrFrzCqnqnqnqnqnqntXjxtXqnYGqnqnqnqnqnqnqnqnqnqnqnqnqnlaVMVMVMPnqnqnqnqnqnqnqnqnqnqnYGPdTbVcxaoWtlieqnqnqnqnqnqnqnqnqnqnqnlaVMVMVMPnqnqnZbqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnxOeeqnqnqnqnqnqnqnqnqnqnqnqnqnqnhuFrlPFrFrFrFrFrFr FrFrFrFrFrFrgvFrFrFrFrLTqnqnqnqnaEFrFrFrFrFrFrFrLTqnqnKMqnqnqnqwaOqwaOqwqnqnqnqnqnqnqnqnqnqnqnqnqnqnlaVMVMVMPnqnqnqnqnqnqnqnhXqnqnlaqyDOwPqnQtofhpPnqnqnqnqnqnqnqnqnqnqnlaVMVMVMPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnKMqnqnxOeeqnqnqnqnqnqnqnqnqnqnqnqnqndsFrFrlPFrFrFrFrFrFr FrFrFrFrFrFrgvFrFrFrFrzCqnqnqnqnqnaEFrFrFrLTjPjPqnqnqnqnqnqnhuFrFxFrFrFrWQqnqnqnqnqnhXqnqnqnqnqnqnqnlaVMVMtTPnqnYGqnqnqnqnqnqnqnqnlaaWWpPnqnlaCeaJPnqnZbqnqnqnqnqnqnqnqnlaaPVMVMPnqnaNqnqnqnqnqnqnqnhXqnqnqnqnqwqwqwqnqnqnqnqnaNqnqnqnxOeeqnhXqnqnqnqnqnqnqnqnqnqnqnhuFrFrlPFrFrFrFrFrFr -FrFrFrFrFrFrgvFrFrFrFrzCqnqnqnqnqnqnjPjPjPqnqnqnqnYGqnqnqnhuFrFxFxFrFrFrFrWQqnqnqnqnqnqnqnqnqnqnqnqnlaVMVMWpieqnqnqnqnqnqnqnqnqnqnlaaWWpPnyvlaCeaJPnqnqnqnqnqnqnqnqnqnqnPdCeVMVMPnqnqnqnqnqnqnqnqnqnqnqnqnqnhuFrFrFrWQqnqnqnqnqnqnqnqnxOeeqnqnqnqnqntXtXqnqnqnqnqndsFrFrFrlPFrFrFrFrFrFr -FrFrFrFrFrFrgvFrFrFrFrzCqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqndsFrFrFrFrFrFrFrFrFrzCqnqnqnqnqnqnqnqnqnqnqnlaaPVMRRfqiegIgIgIgIgIgIgIgIEtPdyFWpmvqnPHCecGiegIgIgIgIgIgIgIAKgIPdlqLDVMtTPnqnWVqnqnqnqnqnqnqwqwqwqwhuFrFrFrFrFrWQqwqwqnqnqnqnqnxOeeqnqnqnqnqntXtXqnqnqnqnqnhuFrFrFrlPFrFrFrFrFrFr -FrFrFrFrFrFrgvFrFrFrLTqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqndsFrFrFrFrFrFrFrFrFrzCqnqnqnqnqnqnqnqnqngIqnlabVVMVMRRvlLDVMVMVpdyYmVMVMVMGhhjRRIJfjZELDGhhjVMVMVMVpdyYmVMVMRRvlLDVMVMWpPnqngIqnqnqnqnqndsFrFrFrFrFrFrFrFrFrFrFrFrFrzCqnqnqnqnxOeeqnqnqnqnqntXjxqnhXqnqndsFrFrFrFrlPFrFrLTaEFrFr +FrFrFrFrFrFrgvFrFrFrFrzCqnqnqnqnqnqnjPjPjPqnqnqnqnYGqnqnqnhuFrFrLTaEFrFrFrWQqnqnqnqnqnqnqnqnqnqnqnqnlaVMVMWpieqnqnqnqnqnqnqnqnqnqnlaaWWpPnyvlaCeaJPnqnqnqnqnqnqnqnqnqnqnPdCeVMVMPnqnqnqnqnqnqnqnqnqnqnqnqnqnhuFrFrFrWQqnqnqnqnqnqnqnqnxOeeqnqnqnqnqntXtXqnqnqnqnqndsFrFrFrlPFrFrFrFrFrFr +FrFrFrFrFrFrgvFrFrFrFrzCqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqndsFrFrLTqnqwjPaEFrFrzCqnqnqnqnqnqnqnqnqnqnqnlaaPVMRRfqiegIgIgIgIgIgIgIgIEtPdyFWpmvqnPHCecGiegIgIgIgIgIgIgIAKgIPdlqLDVMtTPnqnWVqnqnqnqnqnqnqwqwqwqwhuFrFrFrFrFrWQqwqwqnqnqnqnqnxOeeqnqnqnqnqntXtXqnqnqnqnqnhuFrFrFrlPFrFrFrFrFrFr +FrFrFrFrFrFrgvFrFrFrLTqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqndsFrFrWQhuFrWQhuFrFrzCqnqnqnqnqnqnqnqnqngIqnlabVVMVMRRvlLDVMVMVpdyYmVMVMVMGhhjRRIJfjZELDGhhjVMVMVMVpdyYmVMVMRRvlLDVMVMWpPnqngIqnqnqnqnqndsFrFrFrFrFrFrFrFrFrFrFrFrFrzCqnqnqnqnxOeeqnqnqnqnqntXjxqnhXqnqndsFrFrFrFrlPFrFrLTaEFrFr FrFrFrFrFrFrgvFrFrFrzCqnqnqnqnqnqnqnqnaNqnqnqwqwqnqnqwqwqnaEFrFrFrFrFrFrFrLTqnqnqnqnqnqnqnqnqnlaDMPnlaWXaPVMVMVMVMVMVMWWfHXmVMVMVMVMVMVMRRQqLDVMVMVMVMVMVMWWfHXmVMVMVMVMVMVMVMdKPnlaDMPnqnhXqnqnhuFrFrFrFrFrFrLTaEFrFrFrFrFrWQqnqnqnqnxOeeqnZbqnqnqntXqnqnqnqnqndsFrFrFrFrlPFrLTqndsFrFr FrFrFrFrFrFrgvFrFrLTqnqnqnqnqnqnqnqnqnqwqwhuFrFrWQhuFrFrWQqnjPaEFrFrFrLTjPqnqnqnqnqnqnqnqnqnqnqnirqnqnQtNxeNaPVMVMVMVMJiGqDoVMVMVMVMVMVMVMVMVMVMVMVMVMVMVMJiGqDoVMVMVMVMtTJkdKztqnqnirqnqnqnqndsFrFrFrFrLTjPjPqnqnaEFrFrFrFrFrzCqnqnqnxOeeqnqnqnqnqnjxqnqnqnqnqndsFrFrLTaElPFrzCqnhuFrFr -FrFrFrFrFrFrgvFrFrzCqnqnqnhXqnqnqnqnhuFrFrFrFrFrFrFrFrFrFrWQqnqnjPjPjPqnqnqnqnqnqnqnqntXqnqnqnqnqnqnqnqnPCPCPCPCPCTzgdgdgdgdgdzYPCPCPCwFVMVMVMnAPCPCPCTzgdgdgdgdgdzYPCPCPCPCPCqnqnqnqnqnqnqnqnhuFrFrFrFrWQqnqnYGqndsFrFrFrFrFrzCYGqnqnxOeeqnqnqnqnqntXtXqnqnqnqndsFrFrWQdslPLTqndsFrFrFr -FrFrFrFrFrFrgvFrFrzCqnqnqnqnqnqnqndsFrFrFrFrFrFrFrFrFrFrFrFrzCqnqnqnqnqnqnqnqnqnqnqntXjxqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnPHVMVMVMmvqnqnqnqnqnqnZbqnqnqnqnqnqnqnqnqnqnqnqnqnqnqndsFrFrFrFrFrFrWQaNqnqndsFrFrFrFrFrzCqnqnqnxOeeqnqnaNqnqntXtXqnqnqnqndsFrFrFrzCVgqnqndsFrFrFr -FrFrFrFrFrFrgvFrFrzCqnqnqnqnqnqnqndsFrFrFrFrFrFrFrFrFrFrFrFrzCqnqnqnqnqnqnqnqnqnqnqntXtXqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnYGqnqnqnqnqnqnPHVMVMVMVMVMmvqnqnqnqnqnqnqnqnqnqnqnqnqnhXqnqnqnZbqnqnqndsFrFrFrFrFrFrFrmMqwqwhuFrFrFrFrFrzCqnqnqnxOeeqnqnqnqnqntXjxqnqnqnqndsFrFrFrWQzUqwqwhuFrFrFr -FrFrFrFrFrFrgvFrFrzCqnqnqnqnqnqnqndsFrFrFrFrFrFrFrFrFrFrFrFrzCqnqnqnqnqnqnqnaNqnqnqnjxjxFfKMqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnlaVMVMMhEmCwVMVMPnqnqnqnqnqnqnqnqnqwqwqwqnqnqnqnqnqnqnqnqnqnaEFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrzCqnqnqnxOeeqnqnqnqnqntXtXqnqnqnqnqnaEFrFrFrlPFrFrFrFrFrFr -FrFrFrFrFrFrgvFrLTqnqnqnqnqnZbqnqnqnaEFrFrFrFrFrFrFrFrFrFrLTqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqwqwqwqnqnqwqwqnqnqngIlaFgxozYgITzgSciPngIaNqnqnqnqnqndsFrFrFrWQqnqnqnqnqnqnqnZbqnqnaEFrFrFrFrFrFrFrFrFrFrFrFrFrLTqnqnqnqnxOeeqnqnqnqnqntXtXqnqnqnqnqndsFrFrFrlPFrFrFrFrFrFr +FrFrFrFrFrFrgvFrFrzCqnqnqnhXqnqnqnqnhuFrFrFrFrFrFrFrFrFrFrWQqnqnjPjPjPqnqnqnqnqnqnqnqntXqnqnqnqnqnqnqnqnPCPCPCPCPCTzgdgdgdgdgdzYPCPCPCuvVMVMVMMuPCPCPCTzgdgdgdgdgdzYPCPCPCPCPCqnqnqnqnqnqnqnqnhuFrFrFrFrWQqnqnYGqndsFrFrFrFrFrzCYGqnqnxOeeqnqnqnqnqntXtXqnqnqnqndsFrFrWQdslPLTqndsFrFrFr +FrFrFrFrFrFrgvFrFrzCqnqnqnqnqnqnqndsFrFrFrFrFrFrLTaEFrFrFrFrzCqnqnqnqnqnqnqnqnqnqnqntXjxqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnPHVMVMVMmvqnqnqnqnqnqnZbqnqnqnqnqnqnqnqnqnqnqnqnqnqnqndsFrFrFrFrFrFrWQaNqnqndsFrFrFrFrFrzCqnqnqnxOeeqnqnaNqnqntXtXqnqnqnqndsFrFrFrzCVgqnqndsFrFrFr +FrFrFrFrFrFrgvFrFrzCqnqnqnqnqnqnqndsFrFrFrFrLTjPqnqnaEFrFrFrzCqnqnqnqnqnqnqnqnqnqnqntXtXqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnYGqnqnqnqnqnqnPHVMVMVMVMVMmvqnqnqnqnqnqnqnqnqnqnqnqnqnhXqnqnqnZbqnqnqndsFrFrFrFrFrFrFrmMqwqwhuFrFrFrFrFrzCqnqnqnxOeeqnqnqnqnqntXjxqnqnqnqndsFrFrFrWQzUbGqwhuFrFrFr +FrFrFrFrFrFrgvFrFrzCqnqnqnqnqnqnqndsFrFrFrFrWQqwhXqnhuFrFrFrzCqnqnqnqnqnqnqnaNqnqnqnjxjxFfKMqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnlaVMVMMhEmCwVMVMPnqnqnqnqnqnqnqnqnqwqwqwqnqnqnqnqnqnqnqnqnqnaEFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrzCqnqnqnxOeeqnqnqnqnqntXtXqnqnqnqnqnaEFrFrFrlPFrFrFrFrFrFr +FrFrFrFrFrFrgvFrLTqnqnqnqnqnZbqnqnqnaEFrFrFrFrFrWQhuFrFrFrLTqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqwqwqwqnqnqwqwqnqnqngIlaFgxozYgITzgSciPngIaNqnqnqnqnqndsFrFrFrWQqnqnqnqnqnqnqnZbqnqnaEFrFrFrFrFrFrFrFrFrFrFrFrFrLTqnqnqnqnxOeeqnqnqnqnqntXtXqnqnqnqnqndsFrFrFrlPFrFrFrFrFrFr FrFrFrFrFrFrgvFrzCqnqnqnqnqnqnqnqnqnqnjPaEFrFrFrFrFrFrLTjPqnqntXqnqnqntXtXqnqnqnqnqnqnqnqnqnqnZbqnqnqnqnqnhuFrFrFrWQhuFrFrWQqnlaDMPndWqnlafHPnqndWlaDMPnqnqnqnqnqwhuFrFrFrFrzCqnqnqnqnqnqnqnqnqndsFrFrFrFrFrFrFrFrFrFrFrFrFrzCqnZbqnqnxOeeqnqnqnqnqnjxtXqnqnZbqnqnqnaEFrFrlPFrFrFrFrFrFr FrFxFrFrFrFrlPLTqnqnqnqnYGqnqnqnqnqnqnqnqnaEFrFrFrFrLTqnqnqntXjxtXtXtXtXtXtXqnqnqnqnqnqnqnqnqnqnqnqnqnqndsFrFrFrFrFrFrFrFrFrzCqnirlaGLmvgIirgIPHrKPnirqnqnqnighuFrFrFrFrFrFrzCYGqnqnqnqnqnqnqnqnqnjPjPjPaEFrFrFrFrFrFrLTjPjPqnqnqnqnqnxOeeqnqnqnqnqnqnjxqnqnqnqnqnqndsFrFrlPFrFrFrFrFrFr FrFxFrFrFxFrkoqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnaEFrFrLTqnqnqnqnjxqnjxjxjxjxjxjxqnqnqnhXqnqnqnqnqnqnqnqnqnqnqnaEFrFrFrFrFrFrFrFrzCqnqnlaGfvmCwfjKDiNDbPnqnqnWVdsFrFrFrFrFrFrLTjPqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnjPaEFrFrLTjPqnqnqnqnqnqnqnqnxOeeqnqnqnqnqnqnqnqnqnqnqnqnqnqnaEFrlPFrFrFrFrFrFr @@ -756,30 +762,30 @@ HiHiHiHiHiHiPNHiGoUrUrUrGoHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHi HiHiHiHiHiHiPNHiGoGoGoGoGoHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiUZUZUZGoGoHiHiHiHiHiHiHiHiuWuWdGXmaAuWuWHiHiHiHiHiHiHiHiGoGoUZUZUZHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiGoGoGoGoGoHiPNHiHiHiHiHiHi HiHiHiHiHiHiPNHiGoGoGoGoGoHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiCMCMCMUZUZHiHiHiHiHiHiHiHiWKWKNnXmGlWKWKHiHiHiHiHiHiHiHiUZUZCMCMCMHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiGoGoGoGoGoHiPNHiHiHiHiHiHi HiHiHiHiHiHiPNHiGoUZUZUZGoHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiZqQRfNdtCMCMHiHiHiHiHiHiHiHiBBBBBBUrBBBBBBHiHiHiHiHiHiHiHiCMCMfNdtpuXbHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiGoUZUZUZGoHiPNHiHiHiHiHiHi -HiHiHiHiHiHiPNHiGoCMCMCMGoHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiZqdRhjGhDldtZCZCZCZCZCZCZCZChkhcDJGohkhchctutututututututufNDlhjGhmNXbHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiGoCMCMCMGoHiPNHiHiHiHiHiHi -HiHiHiHiHiHiPNHiHnQRlQpuxdHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiZqXavmVMVMaJuDuDuDuDuDuDuDuDaWVMaJGoaWVMVMTMTMTMTMTMTMTMTMaWVMVMiNWSXbHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHnQRlQpuxdHiPNHiHiHiHiHiHi +HiHiHiHiHiHiPNHiGoCMCMCMGoHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiZqdRhjGhDldtZCZCZCZCZCZCZCZChkhcDJGohkhcDJtutututututututufNDlhjGhmNXbHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiGoCMCMCMGoHiPNHiHiHiHiHiHi +HiHiHiHiHiHiPNHiHnQRlQpuxdHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiZqXavmVMVMaJuDuDuDuDuDuDuDuDaWVMaJGoaWVMaJTMTMTMTMTMTMTMTMaWVMVMiNWSXbHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHnQRlQpuxdHiPNHiHiHiHiHiHi HiHiHiHiHiHiPNHiHnXmfHXmxdHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiZqGLGfjDjDDbDVCsCsCsCsCsCsCsuWuWuWGouWuWuWCsCsCsCsCsCsCsCrGfjDjDDbrKXbHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHnXmfHXmxdHiPNHiHiHiHiHiHi HiHiHiHiHiHiPNHiHnGLdyrKxdHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHioioioioioiHiHiHiHiHiHiHiHiuWuWuWGouWuWuWHiHiHiHiHiHiHiHioioioioioiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHnGLdyrKxdHiPNHiHiHiHiHiHi HiHiHiHiHiHiPNHiGooioioiGoHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiGoGoGoGoGoHiHiHiHiHiHiHiHiuWuWuWGouWuWuWHiHiHiHiHiHiHiHiGoGoGoGoGoHiHiHiHiHiHiHiHiHiHiHiHirgytrgHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiGooioioiGoHiPNHiHiHiHiHiHi HiHiHiHiHiHiPNHiUZGoGoGoUZHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiUZUZUZUZUZHiHiHiHiHiHiHiHiWKWKWKGoWKWKWKHiHiHiHiHiHiHiHiUZUZUZUZUZHiHiHiHiHiHiHiHiHiHiHiHikTxAkTHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiUZGoGoGoUZHiPNHiHiHiHiHiHi HiHiHiHiHiHiPNHiCMUZUZUZCMHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiCMCMCMCMCMHiHiHiHiHiHiHiHiBBBBBBGoBBBBBBHiHiHiHiHiHiHiHiCMCMCMCMCMHiHiHiHiHiHiHiHiHiHiHiHimWmWmWHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiCMUZUZUZCMHiPNHiHiHiHiHiHi -mWmWmWuojKjKdkjMhcCMCMCMhcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLchchchchchcLcLcLcLcLcLcLcLcFBhcXMUZlHhcSLLcLcjMjMjMjMLcLchchchchchcLcLcLcLcLcLcLcLcLcLcLcLcmWmWmWLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcjMhcCMCMCMhcLcKTjKjKYCmWmWmW -fufufuwrwrwrGEUsVMhchchcVMZaSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMPCPCPCPCPCSMSMSMSMSMSMSMADARVMAyCMgyVMeJZaSMSMSMSMSMSMSMPCPCPCPCPCSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMUsVMhchchcVMZaGEwrwrwrSMSMSM -qwqwqnqnqwqwozqnPCPCPCPCPCqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnlaARVMAyFQgyVMeJPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnPCPCPCPCPCqnozqwqwqwqwqwqw -FrFrWQhuFrFrihqngIgIqnqnqnqnqnqnqngIqnqnqnqnqnqngIqnqnqnqnqnqngIqnqnqnqnqnqngIqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnFflaARVMAyNzgyVMeJPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqngIqnqnqnqnqnqngIqnqnqnqnqnqngIqnqnqnqnqnqngIqnqnqnqnqnqnqngIgIqnqwiiFrFrFrFrFrFr -FrFrFrFrFrFrlPPUFgciPnqnqnqnqnqnlaDMPnqnqnqnqnlaDMPnqnqnqnqnlaDMPnqnqnqnqnlaDMPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnlaARVMAyLsgyVMeJPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnhXqnqnqnqnYGqnlaDMPnqnqnqnqnlaDMPnqnqnqnqnlaDMPnqnqnqnqnlaDMPnqnqnqnZbqnlaFgciNUFrlPFrFrLTaEFrFr -FrFrFrFrFrFrlPPUGLrKPnqnqnaNqnqnqnirqnqnqnqnqnqnirqnqnqnqnqnqnirqnqnqnqnqnqnirqngIEtgIqnqnqnqnqnqnqnqnqnqngIgIgIgIqnqnqnqnqnqnqnqnlaARVMMgAebqVMeJPnqnqnqnqnqnqnqnqngIgIgIgIYGqnqnqnqnqnqnqnqnqngIgIgIqnirqnqnqnaNqnqnirqnqnqnqnqnqnirqnqnqnqnqnqnirqnqnqnqnqnqnlaGLrKYLFrlPLTjPqndsFrFr +mWmWmWuoTTTTdkjMhcCMCMCMhcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLchchchchchcLcLcLcLcLcLcLcLcFBhcXMUZlHhcSLLcLcjMjMjMjMLcLchchchchchcLcLcLcLcLcLcLcLcLcLcLcLcmWmWmWLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcLcjMhcCMCMCMhcLcKTTTTTYCmWmWmW +fufufufcfcfcRfymVMhchchcVMoXSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMTzgdgdgdzYSMSMSMSMSMSMSMADARVMAyCMgyVMeJZaSMSMSMSMSMSMSMTzgdgdgdzYSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMSMUsVMhchchcVMZaRffcfcfcSMSMSM +qwqwqnqnqwqwozqnTzgdgdgdzYqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnlaARVMAyFQgyVMeJPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnTzgdgdgdzYqnozqwqwqwqwqwqw +FrFrWQhuFrFrihqngIgIqnqnqnqnqnqnqngIqnqnqnqnqnqngIqnqnqnqnqnqngIqnqnqnqnqnqngIqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqngIqnqnqnqnqnqnqngIFflaARVMAyNzgyVMeJPnqngIqnqnqnqnqnqnqngIqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqngIqnqnqnqnqnqngIqnqnqnqnqnqngIqnqnqnqnqnqngIqnqnqnqnqnqnqngIgIqnqwiiFrFrFrFrFrFr +FrFrFrFrFrFrlPPUFgciPnqnqnqnqnqnlaDMPnqnqnqnqnlaDMPnqnqnqnqnlaDMPnqnqnqnqnlaDMPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnlaDMPnqnqnqnqnqnlaDMPnlaARVMAyLsgyVMeJPnlaDMPnqnqnqnqnqnlaDMPnqnqnqnqnqnqnqnhXqnqnqnqnYGqnlaDMPnqnqnqnqnlaDMPnqnqnqnqnlaDMPnqnqnqnqnlaDMPnqnqnqnZbqnlaFgciNUFrlPFrFrLTaEFrFr +FrFrFrFrFrFrlPPUGLrKPnqnqnaNqnqnqnirqnqnqnqnqnqnirqnqnqnqnqnqnirqnqnqnqnqnqnirqngIEtgIqnqnqnqnqnqnqnqnqnqngIgIlxgIqnqnqnqnqnqnirqnlaARVMMgAebqVMeJPnqnirqnqnqnqnqnqngIlxgIgIYGqnqnqnqnqnqnqnqnqngIgIgIqnirqnqnqnaNqnqnirqnqnqnqnqnqnirqnqnqnqnqnqnirqnqnqnqnqnqnlaGLrKYLFrlPLTjPqndsFrFr FrFrFrFrFrFrlPWQTzzYgIgIqnqnqnqnqnqnqnKMqnqnqnqnqnqnKMqnqnqnaNqnqnKMqnqnqnqngIPdcUvlnQiegIqnqnqnqnqnqnqnlaFgqyDuhpieqnqnqnqnqnqnqnPHVdApcfdTApdThwmvqnqnqnqnqnqnqnPHqyDuhpciPnqnqnqnqnqnqnqngIPHcUvlnQmvgIqnKMqnqnqnqnqnqnKMqnqnqnYGqnqnKMqnqnqnqnqnqnqnqnqnqngIgITzYyFrFrlPzCqnqnhuFrFr FrFrFrLTaEFrlPFrzCPdvlvlieqnqnqnqnqnqntXqnqnqnqnqnqntXqnqnqnqnqnqnqnqnqnqnlaqyDuDuDuDuDuhpPnqnqnqnqnqnqnqnQtaWVMGhhpPnqnqngIFfqnlaZEVMiNDbIkGfvmVMIJPnqnqngIqnqnlaqyhjVMaJwPqnqnqnqnqnqntXlaqyDuDuDuDuDuhpPnqnZbqnqnhXqnqnqntXtXtXqnqnqnqnqnZbqnqnhXqnqnaNqnPHqyhpmvdsFrFrkoqnqndsFrFrFr FrFrFrzCqnaElPFrPUVMQzwLgzPnqnqnqnqnqntXtXqnqnqntXqnjxqnqnqnqnqntXqnqnqnqnlaDyCwVMVMVMCwQpPntXqnqnqnqnqnqnHaorCwCweaPnqnlafHPnqnlaYvCwaJwPqnQtaWCwTRPnqnlafHPnqnlayWCwCwajPnqnqnqnqnqnZbjxlahdCwVMVMVMCwboPnqntXqntXqnqnqnqnjxtXjxaNqnqntXqnqntXqnqnqnqnqnlaPkPpSNDzNUFrFrihqnqndsFrFrFr FrFrFrzCqnhulPFrzCrjeNeNFwqnqnqnqnqnqnjxjxqnqnqntXqnYGqnqnqnqnqnjxqntXqnqnlaGfjDjDjDjDjDDbPnjxqnqnqnqnqnqnPHaWVMiNDbPnqnqnirqnqnlaZQvmaJmvqnPHaWiNoVPnqnqnirqnqnlaGfvmVMaJmvqnqnqnqnqnqnqnlaGfjDjDjDjDjDDbPnqntXtXjxqnqntXqnhXjxqntXqntXjxtXqnjxqnqnqnqnqnqncHGfDbCnqnaEFrlPWQqnqnaEFrFr -FrFrFrWQhuFrlPLTgIgIIFPCqnqnKMqnqnqnqnqnqnZbqnqnjxqnqnqnqnqnqnqnqnqnjxqnqnqnTzuveAJkduMuzYqnqnqnKMqnqnqnlaGLGfjDDbnAqnqnqnqnqnqnqnSJaWGhoFfjdjhjaJztqnqnqnqnqnqnqnOIGfjDDbrKPnKMqnqnqnqnqnqnTzJOeAJkduaUzYqnqngPjxqnqnqnjxqnqnqnqnjxqnjxqnjxqnqnqnKMqnqnqnhXqnPCPCgIgIgIaEruFrzCqnqnaEFr -FrFrFrFrFrFrlPPUVpdyYmPnqnqnqnqnqngIqnqnqnqnqnqngIqnqnqnqnqnqngIZbqnqnqnqnqngIqnPCPCPCqnqnqnqnqnqnqnqnqnqnTzgdgdzYqnqnqnqnqnqnqnqnlaaWVMGhDuhjVMaJPnqnqnqnqnqnqnqnqnTzgdgdzYqnqnqnqnqnqnqnqnqnZbPCPCPCqngIWVqnqnqnqnqngIqnqnqnqnZbqngIqnqnqnqnqnqngIqnqnqnqnqnqnlatTJkaPNUlPFrzCqnqnhuFr -FrFrFrFrFrFrkolaWWXKXmPnqnqnqnqnlaDMPnqnqnqnqnlaDMPnqnqnqnqnlaDMPnqnqnqnqnlaDMPnqnqnYGqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnlaaWtTJkVMJkaPaJPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnhXqnqnqnqnqnqnqnqnqnqnlaDMPnqnqnqnqnlaDMPnqnqnqnqnlaDMPnqnqnqnqnlaDMPnqnqnqnqnqnlaWpDMCeNUlPFrWQqwhuFrFr -FrFrFrFrFrFrihlaJiGqDoPnqnqnqnqnqnirqnqnqnqnqnqnirqnqnqnqnqnqnirqnqnqnqnqnqnirqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnlaaWWpoKQqoKCeaJPnqnWVqnqnqnqnqnqnqnqnqnqnqnqnqnYGqnqnqnqnqnqnqnqnqnqnirqnqnaNqnqnqnirqnqnqnqnqnqnirqnqnYGqnqnqnirqnqnqnqnqnqnlaRRQqLDYLlPFrFrFrFrFrFr -FrFrLTaEFrFrlPzCTzgdzYqnqnqnqnqnqnqnqnKMqnqnqnqnqnqnKMqnqnqnqnqnqnKMqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnlaaWWpmvirPHCeaJPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnaNqnqnqnTDqnqnqnqnqnqnKMqnaNqnqnqnqnKMqnqnqnqnqnqnqnqnqnhXqnqnTzgdKLFrlPFrFrFrFrFrFr -FrFrWQqnaEFrlPzCqnqnqnqnqnhXqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnlaaWVMpbDFEWVMaJPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnZbqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnaNqnqnqnqnqnqnqnqnhuFrFrlPFrFrFrFrFrFr -FrFrFrWQhuFrlPzCqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnPdaWWpztgISJCeaJieqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnhXqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnhuFrFrFrlPFrFrFrFrFrFr +FrFrFrWQhuFrlPLTgIgIIFPCqnqnKMqnqnqnqnqnqnZbqnqnjxqnqnqnqnqnqnqnqnqnjxqnqnqnTzuveAJkduMuzYqnqnqnKMqnqnqnlaGLGfjDDbnAqnqnqnqnqnqnqnSJaWGhoFfjdjhjaJztqnqnqnqnqnqnqnOIGfjDDbrKPnKMqnqnqnqnqnqnTzJOeAJkduaUzYqnqngPjxqnqnqnjxqnqnqnqnjxqnjxqnjxqnqnqnKMqnqnqnhXqnPCPCgIgIgIaEruFrzCZbqnaEFr +FrFrFrFrFrFrlPPUVpdyYmPnqnqnqnqnqngIqnqnqnqnqnqngIqnqnqnqnqnqngIZbqnqnqnqnqngIqnPCPCPCqnqnqnqnqnqnqnqnqnqnTzgdUlzYqnqnqnqnqnqnqnqnlaaWVMGhDuhjVMaJPnqnqnqnqnqnqnqnqnTzUlgdzYqnqnqnqnqnqnqnqnqnZbPCPCPCqngIWVqnqnqnqnqngIqnqnqnqnZbqngIqnqnqnqnqnqngIqnqnqnqnqnqnlatTJkaPNUlPFrzCqnqnhuFr +FrFrFrFrFrFrkolaWWXKXmPnqnqnqnqnlaDMPnqnqnqnqnlaDMPnqnqnqnqnlaDMPnqnqnqnqnlaDMPnqnqnYGqnqnqnqnqnqnqnqnqnqnqnlaDMPnqnqnqnqnqnqnqnqnlaaWtTJkVMJkaPaJPnqnqnqnqnqnqnqnqnlaDMPnqnqnqnhXqnqnqnqnqnqnqnqnqnqnlaDMPnqnqnqnqnlaDMPnqnqnqnqnlaDMPnqnqnqnqnlaDMPnqnqnqnqnqnlaWpDMCeNUlPFrWQqwhuFrFr +FrFrFrFrFrFrihlaJiGqDoPnqnqnqnqnqnirqnqnqnqnqnqnirqnqnqnqnqnqnirqnqnqnqnqnqnirqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnirqnqnqnqnqnqnqnqnqnlaaWWpoKQqoKCeaJPnqnWVqnqnqnqnqnqnqnirqnqnqnqnqnYGqnqnqnqnqnqnqnqnqnqnirqnqnaNqnqnqnirqnqnqnqnqnqnirqnqnYGqnqnqnirqnqnqnqnqnqnlaRRQqLDYLlPFrFrFrFrFrFr +FrFrLTaEFrFrlPzCTzgdzYqnqnqnqnqnqnqnqnKMqnqnqnqnqnqnKMqnqnqnqnqnqnKMqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqngIqnlaaWWpmvirPHCeaJPnqngIqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnaNqnqnqnTDqnqnqnqnqnqnKMqnaNqnqnqnqnKMqnqnqnqnqnqnqnqnqnhXqnqnTzgdKLFrlPFrFrFrFrFrFr +FrFrWQqnaEFrlPzCqnqnqnqnqnhXqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnlaDMPnlaaWVMpbDFEWVMaJPnlaDMPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnZbqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnaNqnqnqnqnqnqnqnqnhuFrFrlPFrFrFrFrFrFr +FrFrFrWQhuFrlPzCqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnirqnPdaWWpztgISJCeaJieqnirqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnhXqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnhuFrFrFrlPFrFrFrFrFrFr FrFrFrFrFrFrkoqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnPdMghjWpeyeNeyCeGhItieqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqndsFrFrFrFrlPFrFrFrFrFrFr jPjPjPjPjPjPozqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnlabVVMVMRRQqVMQqLDVMVMWpPnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnYGqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnqnjPjPjPjPVgjPjPjPjPjPjP wMwMwMwMwMwMGawMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwEJkGlNneNeNeNGlNnJkvKwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMGawMwMwMwMwMwM @@ -801,24 +807,24 @@ FrFrFrFrFrLTPAFrLTaEFrFrFrFrFrzCdsFrFrFrFrFrFrEKFrFrFrFrFrzCqnjxqnqndsFrFrzCqnaE FrFrFrFrFrWQozryqndsFrFrFrFrFrWQdsFrFrFrFrFrFrEKFrFrFrFrFrzCqnqntXqndsFrFrzCqndsFrFrFrFrWQqnqndsFrFrFrLTjPjPqnsrqnqnqnEqCeaJfHaWVMaJPnqnlaDMPnqnlaaWVMaJfHaWQzWPsrqnqnqnqnjxtXqnUiFrFrFruUeoFrFrFrFrzCtXaEFrFrFrFrFrFrFrFrFrFrFrFrLTgAVxVMMtqnVsqngAWWgWrHjXWWMtqnVsqngAVMVxMtjPqndsFrFx FrFrFrFrFrhzEbqbPnqnhWaEFrFrriFrEKFrFrFrLTNsNshuFrFrFrLTjPgIPdbVjxqndsFrFrWQqndsFrFrFrFrFrWQjphuFrFrFrWQqnqnqnqnqnqwqwEqCeGhDuoRvmaJPnqnqntDqnqnlaaWiNwxDuhjQzVeJqqwqwRcqntXtXqndsFrFrFrRSeoFrFrFrFrWQjxtXjPjPjPjPaEFrFrFrFrFrFrLTqnqnAGVMMtaNjxqngAGLGqGqGqrKMtqnjxqngAVMRdqnqnqwqnaEFr FrFrFrFrFrLTozOiqndsFrzCjPaEFrLTdsFrFrFrVQFrFrFrFrFrFrWQlaZEQqsEjEqnqnaEFrFrzCdsFrFrFrFrFrFrFrFrFrFrFrFrzCqnqnqndsFrFrWQFbgCJuuvaWaJPnqnqnqnqnqnlaaWaJaUgdYaTFhuFrFrFrzCqnjxtXqndsFrFrFrUcMkFrFrFrFrFrzCtXtXtXtXqndsFrFrFrFrFrFrWQqngAVxVMMtqnqnqnqnREuWuWuWREqnqnqnqngAVMVxMtdsFrzCdsFr -FrFrFrFrFrWQiiFrWQhuFrWQqwqwdaqwhuFrFrFrEKFrFrFrFrFrFrFrOatteNtXMDsrtXqnrRrRqndsFrFrFrFrFrFrFrFrFrFrFrFrWQjZqnqndsFrFrFrFrFrFrOaaWaJPnqnqnqnqnqnlaaWaJPndsFrFrFrFrFrFrWQqnqwaOqndsFrFrFrFrzCjPjPaEFrFrWQaOaOaOlWqndsFrFrFrFrFrFrFrFrXXVxMbqnqnqnqnqnVsuWuWuWVsqnqnqnqnqnAAVxMtqnjPqndsFr +FrFrFrFrFrWQiiFrWQhuFrWQqwqwdaqwhuFrFrFrEKFrFrFrFrFrFrFrOatteNtXMDsrtXqnrRrRqndsFrFrFrFrFrFrFrFrFrFrFrFrWQjZqnqndsFrFrFrFrFrFrOaaWaJPnqnqnqnqnqnlaaWaJPndsFrFrFrFrFrFrWQqnigaOqndsFrFrFrFrzCjPjPaEFrFrWQaOaOaOlWqndsFrFrFrFrFrFrFrFrXXVxMbqnqnqnqnqnVsuWuWuWVsqnqnqnqnqnAAVxMtqnjPqndsFr FrFrFrFrFrFrlPFrFrFrFrFrFrFrFrFrFrFrFrrbEKFrFrFrFrFrFrFrWQgCgdtXtXtXjxdsUcUczCdsFrFrFrFrFrFrFrFrFrFrFrFrFrFrzCqndsFrFrLTaEFrFrOaaWaJPnqnqngIqnqnlaaWaJPnhuFrFrFrFrFrFrFrEKFrFrzCqnNsrRrRrRqnqnqnqnaEFrFrFrFrFrUcWQqnjPjPjPjPjPjPjPjPgAVxDeqnqnqnqnqnplhVApRFjOqnqnqnqnqnNLVxMtqnqnqnhuFr -FrFrFrFrFrFrlPFrFrFrFrFrFrFrFrFrFrFrFrrbWQhWaEFrFrFrFrFrFrFrqWjxjxtXqnqnaEFrzCdsFrFrFrFrFrFrFrFrFrFrFrFrFrFrzCqnqnjPjPqndsFrFrOaaWaJPnqnlaDMPnqnlaaWaJNUFrFrFrFrFrFrFrFrEKFrFrzCdsFrUcUcUczCqnRcqnqnaEFrFrFrFrFrFrzCqnqnqntXtXqnqntXgAVxVMMtKMqnqnqnlaeJfHgyPnKMqnqnqngAVMVxMtqnqnhuFrFr -FrFrFrFrFrFrlPFrFrFrFrFrFrFrFrFrFrFrFrhzFrriEKFrFrFrFrFrFrFrFrWQqnjxqwqwhuFrzCdsFrFrLTaEFrFrFrFrFrFrFrFrFrFrzCqnqnqnqnjphuFrLTlaaWaJmvqnqntDqnqnPHaWaJNUFrFrFrFrFrFrFrFrEKFrFrWQdsFrFrFrFrWQqnjEqnqndsFrFrFrFrFrLTqnqnqnqnjxlWlWlWaOqnAGVMMtqnqnqnqnRGPBBFHmPnqnqnqnqngAVMRdqnqnhuFrFrFx -FrFrFrFrFrFrlPFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrEKFrFrFrFrFrFrFrFrFrzCdsFrFrFrFrzCdsFrLTqndsFrFrFrFrFrFrFrFrFrFrWQqwtXqndsFrFrFrWQlayJaJcimvgIgIgIPHFgaWJgNUFrFrFrFrFrFrLTjPdsFrFrFrzCaEFrFrFrFryuqnqnqwhuFrFrFrFrFrzCsrqnqwqwhuUcUcUcFrXXVxVMMtqngIqnqnlaGBsaNDPnqnqngIqngAVMVxMthuFrFrFrFr -FrFrFrFrFrFrlPFrFrFrFrFrFrFrFrFrFrFrFrFrLTNshuFrFrFrFrFrFrFrFrFrzCdsFrFrLTjPqnqnJztXqnqnjPjPjPjPjPJzaEFrFrFrFrFrKYtXeoFrFrFrFrOaaWGhDuDuhpfHqyDuDuhjaJPnaEFrFrFrFrFrzCqnhuFrFrFrzCqnaEFrFrFrWQlWhuFrFrFrFrFrLTjPqnRcUJFrFrFrFrFrFrLTgAVxMbqnlaDMPnqnlanWSRLzPnqnlaDMPnqnAAVxmCFrFrFrFrFr +FrFrFrFrFrFrlPFrFrFrFrFrLTjPaEFrFrFrFrrbWQhWaEFrFrFrFrFrFrFrqWjxjxtXqnqnaEFrzCdsFrFrFrFrFrFrFrFrFrFrFrFrFrFrzCqnqnjPjPqndsFrFrOaaWaJPnqnlaDMPnqnlaaWaJNUFrFrFrFrFrFrFrFrEKFrFrzCdsFrUcUcUczCqnRcqnqnaEFrFrFrFrFrFrzCqnqnqntXtXqnqntXgAVxVMMtKMqnqnqnlaeJfHgyPnKMqnqnqngAVMVxMtqnqnhuFrFr +FrFrFrFrFrFrlPFrFrLTaEFrzCqnqwjPjPaEFrhzFrriEKFrFrFrFrFrFrFrFrWQqnjxqwqwhuFrzCdsFrFrLTaEFrFrFrFrFrFrFrFrFrFrzCqnqnqnqnjphuFrLTlaaWaJmvqnqntDqnqnPHaWaJNUFrFrFrFrFrFrFrFrEKFrFrWQdsFrFrFrFrWQqnjEqnqndsFrFrFrFrFrLTqnqnqnqnjxlWlWlWaOqnAGVMMtqnqnqnqnRGPBBFHmPnqnqnqnqngAVMRdqnqnhuFrFrFx +FrFrFrFrFrFrlPFrFrWQhuFrWQhuFrWQqndsFrFrFrFrEKFrFrFrFrFrFrFrFrFrzCdsFrFrFrFrzCdsFrLTqndsFrFrFrFrFrFrFrFrFrFrWQqwtXqndsFrFrFrWQlayJaJcimvgIgIgIPHFgaWJgNUFrFrFrFrFrFrLTjPdsFrFrFrzCaEFrFrFrFryuqnqnqwhuFrFrFrFrFrzCsrqnqwqwhuUcUcUcFrXXVxVMMtqngIqnqnlaGBsaNDPnqnqngIqngAVMVxMthuFrFrFrFr +FrFrFrFrFrFrlPFrFrFrFrFrFrFrFrFrWQhuFrFrLTNshuFrFrFrFrFrFrFrFrFrzCdsFrFrLTjPqnqnJztXqnqnjPjPjPjPjPJzaEFrFrFrFrFrKYtXeoFrFrFrFrOaaWGhDuDuhpfHqyDuDuhjaJPnaEFrFrFrFrFrzCqnhuFrFrFrzCqnaEFrFrFrWQlWhuFrFrFrFrFrLTjPqnRcUJFrFrFrFrFrFrLTgAVxMbqnlaDMPnqnlanWSRLzPnqnlaDMPnqnAAVxmCFrFrFrFrFr WjWjWjWjWjWjNuWjOHeXeXIRWjWjWjWjWjWjWjWjzhWjWjWjWjWjWjWjWjWjFrFrgxqnhWhWqwqwqwqwldtXqnqwqwlWchqwqwjxdsFrFrFrFrFrzCjxUiFrFrFrLTlaGfjDjDjDdwGqvnjDjDjDDbPndsFrFrFrFrFrzCdsFrFrFrFrWQqnqnaEFrFrFrUcFrFrFrFrFrFrzCqnqnqwhuFrFrFrFrFrLTqngAVxDeTvTvtDTvTvTvAWKGbKTvOxTvtDTvTvNLVxmCFrFrFrFrFr nXnXGvnXnXnXEYnXMisXsXVZnXnXnXGvnXnXnXnXzuGvnXnXnXnXnXnXGvnXEzFrmodsFrFrFrFrFrFrUcKYdsFrFrUcFrFrFrzCdsFrFrFrFrFrzCqndsFrFrFrWQqnPCPCPCPCPCPCPCPCPCPCPCqnhuFrFrFrFrFresdsFrFrFrFrFrzCqnqnjPjPjPaEFrFrFrLTjPjPqnqndsFrFrFrFrFrFrFrqnqnuAVxVxVxVxxRVxVxVxVxxRVxVxVxVxxRVxVxVxVxmCFrFrFrFrFr FrFrcSFrFrFrlPFrFKaNdsFrLTClClxKClClaEFrEKiJFrFrFrLTClaEiJFrRnKxjEdsFrFrFrFrFrFrFrzCdsFrFrFrFrFrFrzCqnaEFrFrLTjPqnqndsFrFrFrFrzCqnqwqwqnqnWVqnqwqwqwqwhuFrFrFrFrFrFrXzdsFrFrFrFrFrWQqntXtXtXjEqnJzJzJzqngIgIqwqwhuFrFrFrFrFrFrLTqnqwtXUrUrUrPJTvPJUrUrPJTvPJUrUrPJTvPJUrUrIeqnaEFrFrFrFr FrLTICaEFrFrlPLTzNqnhuFrOaugVMzOVMAPbbFrzCDfFrFrFrOafHNUiJFrKZeeqnqnaEFrFrLTjPjPjPqnhuFrFrLTjPjPjPqnqntXjPjPqnqnqnqndsFrFrLTjPqnhuFrFrWQqnqndsFrFrFrFrFrFrFrFrFrFrFrFrEKFrLTjPaEFrFrWQaOaOlWHXlWlWlWaOlujTtJsVFrFrFrFrLTaEFrLTqnhuFrqlUZUZfTVxVxVxCjfTVxVxVxCjfTVxVxVxCjUZHUqnqnaEFrFrFr FrzCKuhuFrFrlPWQKudsFrFrOabVVMMvVMWpPnNsqnKujPNsNschSnqnZNFrmSeeqnqnqnjPjPqnqnqnqndsFrFrLTqnqwqwqwqwqwaOlWqwqwqwqwqwhuFrFrzCqnhuFrFrFrOfzCqnqnjPjPjPjPjPjPjPJzCPFrFrFrEKFrgxqndsFrFrFrFrFrUcUcUcUcUcFrFrgovQFrLTaEFrFrWQqnjPtXdsFrFrqlCMCMCMUrUrUrCMCMUrUrUrCMCMUrUrUrCMCMLbqnqnqnaEFrFr FrWQlKFrFrFrlPFrwidsFrFrWQartPYHnYilhuFrWQFVhuFrFrFrFrbBlKyqLjzDqwqwlWlWlIqwjpqwqwhuFrFrWQEpFrFrFrFrFrFrUcFrFrFrFrFrFrFrFrzChuFrFryqFrFrWQqwKMqnqwqnqnqnqnqwaOlWrRrRrRlWrRkQqwhuFrFrFrFrFrFrFrLTjPaEFrFrFrFrLTqnqnaEFrFrWQqnjxdsFrFrKYVsVsVsGoGoGoVsVsGoGoGoVsVsGoGoGoVsVsnsqnqnqnqnaEFr -FrFrFrFrFrFrlPLTqnqnaEFrFrFrgoFOvQFrFrLTaEFrFrFrFrFrFrFrFrFrLjhhFrFrUcUcFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrLTdsFrFrFrFrFrFrFrFrWQhuFrWQlIqwhuFrFrUcUcUcUcUcUcFrFrFrFrFrFrFrFrFrFrWQqwqwjPaEFrFrWQlIqwqnaEFrFrWQqwhuFrFrWQSiSiSijujujuSiSijujujuSiSijujujuSiSiqCqwqwqwqwhuFr -FrFrFrFrFrFrlPihmLzUiilPlPlPlPlPlPkoVgoziilPlPlPlPlPlPlPlPlPAilvlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPihiilPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPihozlPlPrulPlPihJalPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPFrFrFrFrFrFr -FrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrWQqwhuFrFrFrFrFrFrFrFrFrFrLjhhFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrLTjPaEFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrtMFrFrFrFrFrFrzCjPjPjPaEFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFr +FrFrFrFrFrFrlPLTqnqnaEFrFrFrgoFOvQFrFrLTaEFrFrFrFrFrFrFrFrFrLjhhFrFrUcUcFrFrFrFrFrFrFrFrFrFrFrFrFrLTaEFrFrFrFrFrFrFrFrFrLTdsFrFrFrFrFrFrFrFrWQhuFrWQgFqwhuFrFrUcUcUcUcUcUcFrFrFrFrFrFrFrFrFrFrWQqwqwjPaEFrFrWQlIqwqnaEFrFrWQqwhuFrFrWQSiSiSijujujuSiSijujujuSiSijujujuSiSiqCqwqwqwqwhuFr +FrFrFrFrFrFrlPihmLzUiilPlPlPlPlPlPkoVgoziilPlPlPlPlPlPlPlPlPAilvlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPihozPAlPlPlPlPlPlPlPlPihiilPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPihozlPlPrulPlPihJalPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPlPFrFrFrFrFrFr +FrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrWQqwhuFrFrFrFrFrFrFrFrFrFrLjhhFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrWQhuFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrLTjPaEFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrtMFrFrFrFrFrFrzCjPjPjPaEFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFrFr FrFrFrFrFrFrLTjPaEFrFrLTjPjPaEFrFrFrFrFrFrLTjPjPjPjPjPaEFrFrLjUjjPjPjPaEFrFrFrFrLTjPjPjPjPjPjPjPjPjPjPaEFrFrFrFrFrFrFrFrLTaEFrFrFrLTjPaEFrFrFrFrLTqnqnqnjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPqnjPjPjPjPjPjPqnqnqnqnqnjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjPjP EQEQEQEQEQEQwMwMwMEQEQwMwMwMwMEQEQEQEQEQEQwMwMwMwMwMwMwMEQEQTiRwwMwMwMwMEQEQEQEQwMwMwMwMwMwMwMwMwMwMwMwMEQEQEQEQEQEQEQEQwMwMEQEQEQwMwMwMEQEQEQEQwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwMwM HiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHixpYwHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHi HiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHixpYwHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHi -HiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHixpYwHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHi +ddHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHixpYwHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHiHidd "} diff --git a/maps/atoll/icons/decals/godrays.dmi b/maps/redgate/falls/icons/decals/godrays.dmi similarity index 100% rename from maps/atoll/icons/decals/godrays.dmi rename to maps/redgate/falls/icons/decals/godrays.dmi diff --git a/maps/atoll/icons/decals/marble_decals.dmi b/maps/redgate/falls/icons/decals/marble_decals.dmi similarity index 100% rename from maps/atoll/icons/decals/marble_decals.dmi rename to maps/redgate/falls/icons/decals/marble_decals.dmi diff --git a/maps/atoll/icons/decals/wall_decals.dmi b/maps/redgate/falls/icons/decals/wall_decals.dmi similarity index 100% rename from maps/atoll/icons/decals/wall_decals.dmi rename to maps/redgate/falls/icons/decals/wall_decals.dmi diff --git a/maps/atoll/icons/objs/aqueducts.dmi b/maps/redgate/falls/icons/objs/aqueducts.dmi similarity index 100% rename from maps/atoll/icons/objs/aqueducts.dmi rename to maps/redgate/falls/icons/objs/aqueducts.dmi diff --git a/maps/atoll/icons/objs/aqueducts_64.dmi b/maps/redgate/falls/icons/objs/aqueducts_64.dmi similarity index 100% rename from maps/atoll/icons/objs/aqueducts_64.dmi rename to maps/redgate/falls/icons/objs/aqueducts_64.dmi diff --git a/maps/atoll/icons/objs/benches.dmi b/maps/redgate/falls/icons/objs/benches.dmi similarity index 100% rename from maps/atoll/icons/objs/benches.dmi rename to maps/redgate/falls/icons/objs/benches.dmi diff --git a/maps/atoll/icons/objs/bronze_overhang.dmi b/maps/redgate/falls/icons/objs/bronze_overhang.dmi similarity index 100% rename from maps/atoll/icons/objs/bronze_overhang.dmi rename to maps/redgate/falls/icons/objs/bronze_overhang.dmi diff --git a/maps/atoll/icons/objs/canopies.dmi b/maps/redgate/falls/icons/objs/canopies.dmi similarity index 100% rename from maps/atoll/icons/objs/canopies.dmi rename to maps/redgate/falls/icons/objs/canopies.dmi diff --git a/maps/atoll/icons/objs/lamp.dmi b/maps/redgate/falls/icons/objs/lamp.dmi similarity index 100% rename from maps/atoll/icons/objs/lamp.dmi rename to maps/redgate/falls/icons/objs/lamp.dmi diff --git a/maps/atoll/icons/objs/monolith.dmi b/maps/redgate/falls/icons/objs/monolith.dmi similarity index 100% rename from maps/atoll/icons/objs/monolith.dmi rename to maps/redgate/falls/icons/objs/monolith.dmi diff --git a/maps/atoll/icons/objs/temple.dmi b/maps/redgate/falls/icons/objs/temple.dmi similarity index 100% rename from maps/atoll/icons/objs/temple.dmi rename to maps/redgate/falls/icons/objs/temple.dmi diff --git a/maps/atoll/icons/objs/trees.dmi b/maps/redgate/falls/icons/objs/trees.dmi similarity index 100% rename from maps/atoll/icons/objs/trees.dmi rename to maps/redgate/falls/icons/objs/trees.dmi diff --git a/maps/atoll/icons/objs/waterfall.dmi b/maps/redgate/falls/icons/objs/waterfall.dmi similarity index 100% rename from maps/atoll/icons/objs/waterfall.dmi rename to maps/redgate/falls/icons/objs/waterfall.dmi diff --git a/maps/atoll/icons/turfs/marble.dmi b/maps/redgate/falls/icons/turfs/marble.dmi similarity index 100% rename from maps/atoll/icons/turfs/marble.dmi rename to maps/redgate/falls/icons/turfs/marble.dmi diff --git a/maps/atoll/icons/turfs/water.dmi b/maps/redgate/falls/icons/turfs/water.dmi similarity index 100% rename from maps/atoll/icons/turfs/water.dmi rename to maps/redgate/falls/icons/turfs/water.dmi diff --git a/maps/atoll/sounds/lakeamb.ogg b/maps/redgate/falls/sounds/lakeamb.ogg similarity index 100% rename from maps/atoll/sounds/lakeamb.ogg rename to maps/redgate/falls/sounds/lakeamb.ogg diff --git a/maps/atoll/sounds/monolith.ogg b/maps/redgate/falls/sounds/monolith.ogg similarity index 100% rename from maps/atoll/sounds/monolith.ogg rename to maps/redgate/falls/sounds/monolith.ogg diff --git a/maps/stellar_delight/stellar_delight_defines.dm b/maps/stellar_delight/stellar_delight_defines.dm index d4d1197547..d9ffd5b20f 100644 --- a/maps/stellar_delight/stellar_delight_defines.dm +++ b/maps/stellar_delight/stellar_delight_defines.dm @@ -179,7 +179,8 @@ list("Redgate - Islands Underwater","Redgate - Islands"), list("Redgate - Moving Train", "Redgate - Moving Train Upper Level"), list("Redgate - Fantasy Dungeon", "Redgate - Fantasy Town"), - list("Redgate - Laserdome") + list("Redgate - Laserdome"), + list("Redgate - Cascading Falls") ) ai_shell_restricted = TRUE diff --git a/maps/tether/tether_defines.dm b/maps/tether/tether_defines.dm index a672877d45..ad78a2bd44 100644 --- a/maps/tether/tether_defines.dm +++ b/maps/tether/tether_defines.dm @@ -209,7 +209,8 @@ list("Redgate - Islands Underwater","Redgate - Islands"), list("Redgate - Moving Train", "Redgate - Moving Train Upper Level"), list("Redgate - Fantasy Dungeon", "Redgate - Fantasy Town"), - list("Redgate - Laserdome") + list("Redgate - Laserdome"), + list("Redgate - Cascading Falls") ) ai_shell_restricted = TRUE diff --git a/vorestation.dme b/vorestation.dme index 80ffdf3f20..8655861a8c 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -4275,13 +4275,13 @@ #include "interface\interface.dm" #include "interface\stylesheet.dm" #include "interface\skin.dmf" -#include "maps\atoll\atoll_decals.dm" -#include "maps\atoll\atoll_objs.dm" -#include "maps\atoll\atoll_turfs.dm" #include "maps\expedition_vr\beach\submaps\mountains.dm" #include "maps\expedition_vr\beach\submaps\mountains_areas.dm" #include "maps\gateway_archive_vr\blackmarketpackers.dm" #include "maps\redgate\fantasy_items.dm" +#include "maps\redgate\falls\atoll_decals.dm" +#include "maps\redgate\falls\atoll_objs.dm" +#include "maps\redgate\falls\atoll_turfs.dm" #include "maps\southern_cross\items\clothing\sc_accessory.dm" #include "maps\southern_cross\items\clothing\sc_suit.dm" #include "maps\southern_cross\items\clothing\sc_under.dm" From 94ade300d3360f9edc7802eb1c32a238a483f810 Mon Sep 17 00:00:00 2001 From: Kashargul <144968721+Kashargul@users.noreply.github.com> Date: Thu, 18 Jan 2024 23:53:03 +0100 Subject: [PATCH 25/39] TG-Chat visual limits and fixes (#15659) * tg-chat visual limits and export verb * typo * fix emotesubtle colour for vchat themes * optimized archiving, cleanup * allows to reoder tabs * export respects filter * fixes the examine filtering issue * italic * dismiss connection warning * style fix --- code/modules/tgchat/chat_verbs.dm | 6 + code/modules/vore/eating/belly_obj_vr.dm | 8 +- tgui/packages/tgui-panel/Panel.tsx | 14 +- .../tgui-panel/chat/ChatPageSettings.jsx | 66 ++++-- tgui/packages/tgui-panel/chat/actions.js | 2 + tgui/packages/tgui-panel/chat/constants.ts | 8 +- tgui/packages/tgui-panel/chat/middleware.js | 28 ++- tgui/packages/tgui-panel/chat/model.js | 2 + tgui/packages/tgui-panel/chat/reducer.js | 49 +++- tgui/packages/tgui-panel/chat/renderer.jsx | 62 ++++-- tgui/packages/tgui-panel/game/actions.ts | 1 + tgui/packages/tgui-panel/game/reducer.ts | 10 +- tgui/packages/tgui-panel/reconnect.tsx | 12 +- .../tgui-panel/settings/SettingsPanel.jsx | 108 ++++++++- .../packages/tgui-panel/settings/constants.ts | 4 + tgui/packages/tgui-panel/settings/reducer.js | 5 + .../tgui-panel/styles/tgchat/chat-dark.scss | 1 + .../tgui-panel/styles/tgchat/chat-light.scss | 1 + .../styles/tgchat/chat-vchatdark.scss | 1 + .../styles/tgchat/chat-vchatlight.scss | 1 + tgui/public/tgui-panel.bundle.css | 2 +- tgui/public/tgui-panel.bundle.js | 210 +++++++++--------- vorestation.dme | 1 + 23 files changed, 435 insertions(+), 167 deletions(-) create mode 100644 code/modules/tgchat/chat_verbs.dm diff --git a/code/modules/tgchat/chat_verbs.dm b/code/modules/tgchat/chat_verbs.dm new file mode 100644 index 0000000000..52d423c3d2 --- /dev/null +++ b/code/modules/tgchat/chat_verbs.dm @@ -0,0 +1,6 @@ +/client/verb/export_chat() + set category = "OOC" + set name = "Export Chatlog" + set desc = "Allows to trigger the chat export" + + to_chat(usr, "") diff --git a/code/modules/vore/eating/belly_obj_vr.dm b/code/modules/vore/eating/belly_obj_vr.dm index d79852fd66..960c406c03 100644 --- a/code/modules/vore/eating/belly_obj_vr.dm +++ b/code/modules/vore/eating/belly_obj_vr.dm @@ -551,7 +551,7 @@ //Print notifications/sound if necessary if(!silent && count) - owner.visible_message("[owner] [release_verb] everything from their [lowertext(name)]!", range = privacy_range) + owner.visible_message("[owner] [release_verb] everything from their [lowertext(name)]!", range = privacy_range) var/soundfile if(!fancy_vore) soundfile = classic_release_sounds[release_sound] @@ -631,7 +631,7 @@ //Print notifications/sound if necessary if(!silent) - owner.visible_message("[owner] [release_verb] [M] from their [lowertext(name)]!",range = privacy_range) + owner.visible_message("[owner] [release_verb] [M] from their [lowertext(name)]!",range = privacy_range) var/soundfile if(!fancy_vore) soundfile = classic_release_sounds[release_sound] @@ -703,7 +703,7 @@ formatted_message = replacetext(formatted_message, "%countprey", living_count) formatted_message = replacetext(formatted_message, "%count", contents.len) - return("[formatted_message]") + return("[formatted_message]") /obj/belly/proc/get_examine_msg_absorbed() if(!(contents.len) || !(examine_messages_absorbed.len) || !display_absorbed_examine) @@ -727,7 +727,7 @@ formatted_message = replacetext(formatted_message, "%prey", english_list(absorbed_victims)) formatted_message = replacetext(formatted_message, "%countprey", absorbed_count) - return("[formatted_message]") + return("[formatted_message]") // The next function gets the messages set on the belly, in human-readable format. // This is useful in customization boxes and such. The delimiter right now is \n\n so diff --git a/tgui/packages/tgui-panel/Panel.tsx b/tgui/packages/tgui-panel/Panel.tsx index c7a3d51e82..8171333866 100644 --- a/tgui/packages/tgui-panel/Panel.tsx +++ b/tgui/packages/tgui-panel/Panel.tsx @@ -80,12 +80,14 @@ export const Panel = (props, context) => { - {settings.showReconnectWarning && game.connectionLostAt && ( - }> - You are either AFK, experiencing lag or the connection has - closed. - - )} + {settings.showReconnectWarning && + game.connectionLostAt && + !game.dismissedConnectionWarning && ( + }> + You are either AFK, experiencing lag or the connection has + closed. + + )} {settings.showReconnectWarning && game.roundRestartedAt && ( The connection has been closed because the server is diff --git a/tgui/packages/tgui-panel/chat/ChatPageSettings.jsx b/tgui/packages/tgui-panel/chat/ChatPageSettings.jsx index c0d9962d25..2ccc491d95 100644 --- a/tgui/packages/tgui-panel/chat/ChatPageSettings.jsx +++ b/tgui/packages/tgui-panel/chat/ChatPageSettings.jsx @@ -6,7 +6,7 @@ import { useDispatch, useSelector } from 'common/redux'; import { Button, Collapsible, Divider, Input, Section, Stack } from 'tgui/components'; -import { removeChatPage, toggleAcceptedType, updateChatPage } from './actions'; +import { moveChatPageLeft, moveChatPageRight, removeChatPage, toggleAcceptedType, updateChatPage } from './actions'; import { MESSAGE_TYPES } from './constants'; import { selectCurrentChatPage } from './selectors'; @@ -30,20 +30,56 @@ export const ChatPageSettings = (props, context) => { } /> - - - + {!page.isMain ? ( + + + + ) : ( + '' + )} + + + + {!page.isMain ? ( + + Reorder Chat:  + + + + ) : ( + '' + )}
diff --git a/tgui/packages/tgui-panel/chat/actions.js b/tgui/packages/tgui-panel/chat/actions.js index c6f9cbd6eb..37fb48cc81 100644 --- a/tgui/packages/tgui-panel/chat/actions.js +++ b/tgui/packages/tgui-panel/chat/actions.js @@ -20,3 +20,5 @@ export const removeChatPage = createAction('chat/removePage'); export const changeScrollTracking = createAction('chat/changeScrollTracking'); export const saveChatToDisk = createAction('chat/saveToDisk'); export const purgeChatMessageArchive = createAction('chat/purgeMessageArchive'); +export const moveChatPageLeft = createAction('chat/movePageLeft'); +export const moveChatPageRight = createAction('chat/movePageRight'); diff --git a/tgui/packages/tgui-panel/chat/constants.ts b/tgui/packages/tgui-panel/chat/constants.ts index bfb3c61cb2..365bbb1ac9 100644 --- a/tgui/packages/tgui-panel/chat/constants.ts +++ b/tgui/packages/tgui-panel/chat/constants.ts @@ -4,12 +4,12 @@ * @license MIT */ -export const MAX_VISIBLE_MESSAGES = 2500; -export const MAX_PERSISTED_MESSAGES = 1000; +// export const MAX_VISIBLE_MESSAGES = 2500; No longer a constant +// export const MAX_PERSISTED_MESSAGES = 1000; No longer a constant export const MESSAGE_SAVE_INTERVAL = 10000; export const MESSAGE_PRUNE_INTERVAL = 60000; -export const COMBINE_MAX_MESSAGES = 5; -export const COMBINE_MAX_TIME_WINDOW = 5000; +// export const COMBINE_MAX_MESSAGES = 5; No longer a constant +// export const COMBINE_MAX_TIME_WINDOW = 5000; No longer a constant export const IMAGE_RETRY_DELAY = 250; export const IMAGE_RETRY_LIMIT = 10; export const IMAGE_RETRY_MESSAGE_AGE = 60000; diff --git a/tgui/packages/tgui-panel/chat/middleware.js b/tgui/packages/tgui-panel/chat/middleware.js index 9d54c9d802..7c90df4410 100644 --- a/tgui/packages/tgui-panel/chat/middleware.js +++ b/tgui/packages/tgui-panel/chat/middleware.js @@ -8,8 +8,8 @@ import DOMPurify from 'dompurify'; import { storage } from 'common/storage'; import { loadSettings, updateSettings, addHighlightSetting, removeHighlightSetting, updateHighlightSetting } from '../settings/actions'; import { selectSettings } from '../settings/selectors'; -import { addChatPage, changeChatPage, changeScrollTracking, loadChat, rebuildChat, removeChatPage, saveChatToDisk, purgeChatMessageArchive, toggleAcceptedType, updateMessageCount } from './actions'; -import { MAX_PERSISTED_MESSAGES, MESSAGE_SAVE_INTERVAL } from './constants'; +import { addChatPage, changeChatPage, changeScrollTracking, loadChat, rebuildChat, moveChatPageLeft, moveChatPageRight, removeChatPage, saveChatToDisk, purgeChatMessageArchive, toggleAcceptedType, updateMessageCount } from './actions'; +import { MESSAGE_SAVE_INTERVAL } from './constants'; import { createMessage, serializeMessage } from './model'; import { chatRenderer } from './renderer'; import { selectChat, selectCurrentChatPage } from './selectors'; @@ -19,9 +19,10 @@ const FORBID_TAGS = ['a', 'iframe', 'link', 'video']; const saveChatToStorage = async (store) => { const state = selectChat(store.getState()); + const settings = selectSettings(store.getState()); const fromIndex = Math.max( 0, - chatRenderer.messages.length - MAX_PERSISTED_MESSAGES + chatRenderer.messages.length - settings.persistentMessageLimit ); const messages = chatRenderer.messages .slice(fromIndex) @@ -61,7 +62,6 @@ const loadChatFromStorage = async (store) => { ]; chatRenderer.processBatch(batch, { prepend: true, - noarchive: true, }); } if (archivedMessages) { @@ -116,6 +116,14 @@ export const chatMiddleware = (store) => { }, MESSAGE_SAVE_INTERVAL); return (next) => (action) => { const { type, payload } = action; + const settings = selectSettings(store.getState()); + settings.totalStoredMessages = chatRenderer.getStoredMessages(); + chatRenderer.setVisualChatLimits( + settings.visibleMessageLimit, + settings.combineMessageLimit, + settings.combineIntervalLimit, + settings.logLineCount + ); if (!initialized) { initialized = true; loadChatFromStorage(store); @@ -155,7 +163,9 @@ export const chatMiddleware = (store) => { } } - chatRenderer.processBatch([payload_obj.content]); + chatRenderer.processBatch([payload_obj.content], { + doArchive: true, + }); return; } if (type === loadChat.type) { @@ -170,7 +180,9 @@ export const chatMiddleware = (store) => { type === changeChatPage.type || type === addChatPage.type || type === removeChatPage.type || - type === toggleAcceptedType.type + type === toggleAcceptedType.type || + type === moveChatPageLeft.type || + type === moveChatPageRight.type ) { next(action); const page = selectCurrentChatPage(store.getState()); @@ -178,7 +190,7 @@ export const chatMiddleware = (store) => { return; } if (type === rebuildChat.type) { - chatRenderer.rebuildChat(); + chatRenderer.rebuildChat(settings.visibleMessages); return next(action); } @@ -190,7 +202,6 @@ export const chatMiddleware = (store) => { type === updateHighlightSetting.type ) { next(action); - const settings = selectSettings(store.getState()); chatRenderer.setHighlight( settings.highlightSettings, settings.highlightSettingById @@ -204,7 +215,6 @@ export const chatMiddleware = (store) => { return next(action); } if (type === saveChatToDisk.type) { - const settings = selectSettings(store.getState()); chatRenderer.saveToDisk(settings.logLineCount); return; } diff --git a/tgui/packages/tgui-panel/chat/model.js b/tgui/packages/tgui-panel/chat/model.js index bb3bc3bdf8..e544ebfddd 100644 --- a/tgui/packages/tgui-panel/chat/model.js +++ b/tgui/packages/tgui-panel/chat/model.js @@ -18,6 +18,7 @@ export const createPage = (obj) => { } return { + isMain: false, id: createUuid(), name: 'New Tab', acceptedTypes: acceptedTypes, @@ -33,6 +34,7 @@ export const createMainPage = () => { acceptedTypes[typeDef.type] = true; } return createPage({ + isMain: true, name: 'Main', acceptedTypes, }); diff --git a/tgui/packages/tgui-panel/chat/reducer.js b/tgui/packages/tgui-panel/chat/reducer.js index b727a7c1ba..488bd99320 100644 --- a/tgui/packages/tgui-panel/chat/reducer.js +++ b/tgui/packages/tgui-panel/chat/reducer.js @@ -4,7 +4,7 @@ * @license MIT */ -import { addChatPage, changeChatPage, loadChat, removeChatPage, toggleAcceptedType, updateChatPage, updateMessageCount, changeScrollTracking } from './actions'; +import { addChatPage, changeChatPage, loadChat, removeChatPage, moveChatPageLeft, moveChatPageRight, toggleAcceptedType, updateChatPage, updateMessageCount, changeScrollTracking } from './actions'; import { canPageAcceptType, createMainPage } from './model'; const mainPage = createMainPage(); @@ -179,5 +179,52 @@ export const chatReducer = (state = initialState, action) => { } return nextState; } + if (type === moveChatPageLeft.type) { + const { pageId } = payload; + const nextState = { + ...state, + pages: [...state.pages], + pageById: { + ...state.pageById, + }, + }; + const tmpPage = nextState.pageById[pageId]; + const fromIndex = nextState.pages.indexOf(tmpPage.id); + const toIndex = fromIndex - 1; + // don't ever move leftmost page + if (fromIndex > 0) { + // don't ever move anything to the leftmost page + if (toIndex > 0) { + const tmp = nextState.pages[fromIndex]; + nextState.pages[fromIndex] = nextState.pages[toIndex]; + nextState.pages[toIndex] = tmp; + } + } + return nextState; + } + + if (type === moveChatPageRight.type) { + const { pageId } = payload; + const nextState = { + ...state, + pages: [...state.pages], + pageById: { + ...state.pageById, + }, + }; + const tmpPage = nextState.pageById[pageId]; + const fromIndex = nextState.pages.indexOf(tmpPage.id); + const toIndex = fromIndex + 1; + // don't ever move leftmost page + if (fromIndex > 0) { + // don't ever move anything out of the array + if (toIndex < nextState.pages.length) { + const tmp = nextState.pages[fromIndex]; + nextState.pages[fromIndex] = nextState.pages[toIndex]; + nextState.pages[toIndex] = tmp; + } + } + return nextState; + } return state; }; diff --git a/tgui/packages/tgui-panel/chat/renderer.jsx b/tgui/packages/tgui-panel/chat/renderer.jsx index 212f1baf53..3b060548bb 100644 --- a/tgui/packages/tgui-panel/chat/renderer.jsx +++ b/tgui/packages/tgui-panel/chat/renderer.jsx @@ -7,7 +7,7 @@ import { EventEmitter } from 'common/events'; import { classes } from 'common/react'; import { createLogger } from 'tgui/logging'; -import { COMBINE_MAX_MESSAGES, COMBINE_MAX_TIME_WINDOW, IMAGE_RETRY_DELAY, IMAGE_RETRY_LIMIT, IMAGE_RETRY_MESSAGE_AGE, MAX_PERSISTED_MESSAGES, MAX_VISIBLE_MESSAGES, MESSAGE_PRUNE_INTERVAL, MESSAGE_TYPES, MESSAGE_TYPE_INTERNAL, MESSAGE_TYPE_UNKNOWN } from './constants'; +import { IMAGE_RETRY_DELAY, IMAGE_RETRY_LIMIT, IMAGE_RETRY_MESSAGE_AGE, MESSAGE_PRUNE_INTERVAL, MESSAGE_TYPES, MESSAGE_TYPE_INTERNAL, MESSAGE_TYPE_UNKNOWN } from './constants'; import { render } from 'inferno'; import { canPageAcceptType, createMessage, isSameMessage, serializeMessage } from './model'; import { highlightNode, linkifyNode } from './replaceInTextNode'; @@ -115,6 +115,11 @@ class ChatRenderer { this.visibleMessages = []; this.page = null; this.events = new EventEmitter(); + // Adjustables + this.visibleMessageLimit = 2500; + this.combineMessageLimit = 5; + this.combineIntervalLimit = 5; + this.exportLimit = -1; // Scroll handler /** @type {HTMLElement} */ this.scrollNode = null; @@ -160,7 +165,7 @@ class ChatRenderer { this.scrollToBottom(); }); // Flush the queue - this.tryFlushQueue(); + this.tryFlushQueue(true); } onStateLoaded() { @@ -168,9 +173,9 @@ class ChatRenderer { this.tryFlushQueue(); } - tryFlushQueue() { + tryFlushQueue(doArchive = false) { if (this.isReady() && this.queue.length > 0) { - this.processBatch(this.queue); + this.processBatch(this.queue, { doArchive: doArchive }); this.queue = []; } } @@ -352,11 +357,23 @@ class ChatRenderer { } } + setVisualChatLimits( + visibleMessageLimit, + combineMessageLimit, + combineIntervalLimit, + exportLimit + ) { + this.visibleMessageLimit = visibleMessageLimit; + this.combineMessageLimit = combineMessageLimit; + this.combineIntervalLimit = combineIntervalLimit; + this.exportLimit = exportLimit; + } + getCombinableMessage(predicate) { const now = Date.now(); const len = this.visibleMessages.length; const from = len - 1; - const to = Math.max(0, len - COMBINE_MAX_MESSAGES); + const to = Math.max(0, len - this.combineMessageLimit); for (let i = from; i >= to; i--) { const message = this.visibleMessages[i]; @@ -366,7 +383,7 @@ class ChatRenderer { // Text payload must fully match isSameMessage(message, predicate) && // Must land within the specified time window - now < message.createdAt + COMBINE_MAX_TIME_WINDOW; + now < message.createdAt + this.combineIntervalLimit * 1000; if (matches) { return message; } @@ -375,7 +392,7 @@ class ChatRenderer { } processBatch(batch, options = {}) { - const { prepend, notifyListeners = true, noArchive = false } = options; + const { prepend, notifyListeners = true, doArchive = false } = options; const now = Date.now(); // Queue up messages until chat is ready if (!this.isReady()) { @@ -420,6 +437,15 @@ class ChatRenderer { } else { logger.error('Error: message is missing text payload', message); } + // Get our commands we might want to send to chat + const commands = node.querySelectorAll('[data-command]'); + if (commands.length) { + const command = commands[0].getAttribute('data-command'); + if (command === '$do_export') { + this.saveToDisk(this.exportLimit); + } + return; // We do not want those logged or shown! + } // Get all nodes in this message that want to be rendered like jsx const nodes = node.querySelectorAll('[data-component]'); for (let i = 0; i < nodes.length; i++) { @@ -522,7 +548,7 @@ class ChatRenderer { countByType[message.type] += 1; // TODO: Detect duplicates this.messages.push(message); - if (!noArchive) { + if (doArchive) { this.archivedMessages.push(serializeMessage(message, true)); // TODO: Actually having a better message archiving maybe for exports? } if (canPageAcceptType(this.page, message.type)) { @@ -560,7 +586,7 @@ class ChatRenderer { // Visible messages { const messages = this.visibleMessages; - const fromIndex = Math.max(0, messages.length - MAX_VISIBLE_MESSAGES); + const fromIndex = Math.max(0, messages.length - this.visibleMessageLimit); if (fromIndex > 0) { this.visibleMessages = messages.slice(fromIndex); for (let i = 0; i < fromIndex; i++) { @@ -581,7 +607,7 @@ class ChatRenderer { { const fromIndex = Math.max( 0, - this.messages.length - MAX_PERSISTED_MESSAGES + this.messages.length - this.persistentMessageLimit ); if (fromIndex > 0) { this.messages = this.messages.slice(fromIndex); @@ -590,15 +616,12 @@ class ChatRenderer { } } - rebuildChat() { + rebuildChat(rebuildLimit) { if (!this.isReady()) { return; } // Make a copy of messages - const fromIndex = Math.max( - 0, - this.messages.length - MAX_PERSISTED_MESSAGES - ); + const fromIndex = Math.max(0, this.messages.length - rebuildLimit); const messages = this.messages.slice(fromIndex); // Remove existing nodes for (let message of messages) { @@ -644,10 +667,13 @@ class ChatRenderer { // for (let message of this.visibleMessages) { // TODO: Actually having a better message archiving maybe for exports? for (let message of tmpMsgArray) { + // Filter messages according to active tab for export + if (canPageAcceptType(this.page, message.type)) { + messagesHtml += message.html + '\n'; + } // if (message.node) { // messagesHtml += message.node.outerHTML + '\n'; // } - messagesHtml += message.html + '\n'; } // Create a page @@ -679,6 +705,10 @@ class ChatRenderer { purgeMessageArchive() { this.archivedMessages = []; } + + getStoredMessages() { + return this.archivedMessages.length; + } } // Make chat renderer global so that we can continue using the same diff --git a/tgui/packages/tgui-panel/game/actions.ts b/tgui/packages/tgui-panel/game/actions.ts index e40014c44b..0604f18272 100644 --- a/tgui/packages/tgui-panel/game/actions.ts +++ b/tgui/packages/tgui-panel/game/actions.ts @@ -9,3 +9,4 @@ import { createAction } from 'common/redux'; export const roundRestarted = createAction('roundrestart'); export const connectionLost = createAction('game/connectionLost'); export const connectionRestored = createAction('game/connectionRestored'); +export const dismissWarning = createAction('game/dismissWarning'); diff --git a/tgui/packages/tgui-panel/game/reducer.ts b/tgui/packages/tgui-panel/game/reducer.ts index c446db8f02..965bfa0cb7 100644 --- a/tgui/packages/tgui-panel/game/reducer.ts +++ b/tgui/packages/tgui-panel/game/reducer.ts @@ -5,7 +5,7 @@ */ import { connectionLost } from './actions'; -import { connectionRestored } from './actions'; +import { connectionRestored, dismissWarning } from './actions'; const initialState = { // TODO: This is where round info should be. @@ -13,6 +13,7 @@ const initialState = { roundTime: null, roundRestartedAt: null, connectionLostAt: null, + dismissedConnectionWarning: false, }; export const gameReducer = (state = initialState, action) => { @@ -33,6 +34,13 @@ export const gameReducer = (state = initialState, action) => { return { ...state, connectionLostAt: null, + dismissedConnectionWarning: false, + }; + } + if (type === dismissWarning.type) { + return { + ...state, + dismissedConnectionWarning: true, }; } return state; diff --git a/tgui/packages/tgui-panel/reconnect.tsx b/tgui/packages/tgui-panel/reconnect.tsx index ecfd767169..589bc7f110 100644 --- a/tgui/packages/tgui-panel/reconnect.tsx +++ b/tgui/packages/tgui-panel/reconnect.tsx @@ -1,4 +1,6 @@ import { Button } from 'tgui/components'; +import { useDispatch } from 'common/redux'; +import { dismissWarning } from './game/actions'; let url: string | null = null; @@ -11,10 +13,11 @@ setInterval(() => { }); }, 5000); -export const ReconnectButton = () => { +export const ReconnectButton = (props, context) => { if (!url) { return null; } + const dispatch = useDispatch(context); return ( <> + ); }; diff --git a/tgui/packages/tgui-panel/settings/SettingsPanel.jsx b/tgui/packages/tgui-panel/settings/SettingsPanel.jsx index 25b1b963f6..7dd1478ed1 100644 --- a/tgui/packages/tgui-panel/settings/SettingsPanel.jsx +++ b/tgui/packages/tgui-panel/settings/SettingsPanel.jsx @@ -42,6 +42,7 @@ export const SettingsPanel = (props, context) => { {activeTab === 'general' && } + {activeTab === 'limits' && } {activeTab === 'export' && } {activeTab === 'chatPage' && } {activeTab === 'textHighlight' && } @@ -169,9 +170,101 @@ export const SettingsGeneral = (props, context) => { ); }; +export const MessageLimits = (props, context) => { + const dispatch = useDispatch(context); + const { + visibleMessageLimit, + persistentMessageLimit, + combineMessageLimit, + combineIntervalLimit, + } = useSelector(context, selectSettings); + return ( +
+ + + toFixed(value)} + onDrag={(e, value) => + dispatch( + updateSettings({ + visibleMessageLimit: value, + }) + ) + } + /> + + + toFixed(value)} + onDrag={(e, value) => + dispatch( + updateSettings({ + persistentMessageLimit: value, + }) + ) + } + /> + + + toFixed(value)} + onDrag={(e, value) => + dispatch( + updateSettings({ + combineMessageLimit: value, + }) + ) + } + /> + + + toFixed(value)} + onDrag={(e, value) => + dispatch( + updateSettings({ + combineIntervalLimit: value, + }) + ) + } + /> + + +
+ ); +}; + export const ExportTab = (props, context) => { const dispatch = useDispatch(context); - const { logRetainDays, logLineCount } = useSelector(context, selectSettings); + const { logRetainDays, logLineCount, totalStoredMessages } = useSelector( + context, + selectSettings + ); const [purgeConfirm, setPurgeConfirm] = useLocalState( context, 'purgeConfirm', @@ -197,11 +290,15 @@ export const ExportTab = (props, context) => { */} - + format={(value) => toFixed(value)} + onDrag={(e, value) => dispatch( updateSettings({ logLineCount: value, @@ -210,6 +307,9 @@ export const ExportTab = (props, context) => { } /> + + {totalStoredMessages} +