diff --git a/code/__defines/chemistry.dm b/code/__defines/chemistry.dm index 2fd9719eb4..3b4815b353 100644 --- a/code/__defines/chemistry.dm +++ b/code/__defines/chemistry.dm @@ -49,7 +49,7 @@ // Chemistry lists. var/list/tachycardics = list("coffee", "inaprovaline", "hyperzine", "nitroglycerin", "thirteenloko", "nicotine") // Increase heart rate. var/list/bradycardics = list("neurotoxin", "cryoxadone", "clonexadone", "bliss", "stoxin", "ambrosia_extract") // Decrease heart rate. -var/list/heartstopper = list("potassium_chlorophoride", "zombie_powder") // This stops the heart. +var/list/heartstopper = list("potassium_chlorophoride", "zombiepowder") // This stops the heart. var/list/cheartstopper = list("potassium_chloride") // This stops the heart when overdose is met. -- c = conditional #define MAX_PILL_SPRITE 24 //max icon state of the pill sprites diff --git a/code/_helpers/global_lists_vr.dm b/code/_helpers/global_lists_vr.dm index 366cdcfdc9..103862bfb1 100644 --- a/code/_helpers/global_lists_vr.dm +++ b/code/_helpers/global_lists_vr.dm @@ -665,9 +665,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/_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/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/game/antagonist/station/highlander.dm b/code/game/antagonist/station/highlander.dm index 9b54383278..2e4885fd76 100644 --- a/code/game/antagonist/station/highlander.dm +++ b/code/game/antagonist/station/highlander.dm @@ -12,6 +12,8 @@ var/datum/antagonist/highlander/highlanders initial_spawn_req = 3 initial_spawn_target = 5 + id_type = /obj/item/weapon/card/id/centcom/ERT + /datum/antagonist/highlander/New() ..() highlanders = src @@ -32,26 +34,28 @@ var/datum/antagonist/highlander/highlanders if(!..()) return - for (var/obj/item/I in player) - if (istype(I, /obj/item/weapon/implant)) - continue - qdel(I) - + // drop original items! It used to be a loop that just Qdeled everything including your organs! + // Dropping because of non-oxy breathers... That would suck wouldn't it? + player.drop_from_inventory(player.get_equipped_item(slot_wear_id)) + player.drop_from_inventory(player.get_equipped_item(slot_wear_suit)) + player.drop_from_inventory(player.get_equipped_item(slot_w_uniform)) + player.drop_from_inventory(player.get_equipped_item(slot_l_ear)) + player.drop_from_inventory(player.get_equipped_item(slot_head)) + player.drop_from_inventory(player.get_equipped_item(slot_l_hand)) + player.drop_from_inventory(player.get_equipped_item(slot_shoes)) + player.drop_from_inventory(player.get_equipped_item(slot_l_store)) + // highlanders! player.equip_to_slot_or_del(new /obj/item/clothing/under/kilt(player), slot_w_uniform) - player.equip_to_slot_or_del(new /obj/item/device/radio/headset/heads/captain(player), slot_l_ear) player.equip_to_slot_or_del(new /obj/item/clothing/head/beret(player), slot_head) player.equip_to_slot_or_del(new /obj/item/weapon/material/sword(player), slot_l_hand) player.equip_to_slot_or_del(new /obj/item/clothing/shoes/boots/combat(player), slot_shoes) player.equip_to_slot_or_del(new /obj/item/weapon/pinpointer(get_turf(player)), slot_l_store) - var/obj/item/weapon/card/id/W = new(player) - W.name = "[player.real_name]'s ID Card" - W.icon_state = "centcom" - W.access = get_all_station_access().Copy() - W.access |= get_all_centcom_access() - W.assignment = "Highlander" - W.registered_name = player.real_name - player.equip_to_slot_or_del(W, slot_wear_id) + var/obj/item/weapon/card/id/id = create_id("Highlander", player) + if(id) + id.access |= get_all_station_access() + id.icon_state = "centcom" + create_radio(DTH_FREQ, player) /proc/only_one() 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..0923f4341e 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 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 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/items/weapons/material/material_weapons.dm b/code/game/objects/items/weapons/material/material_weapons.dm index f300cb068e..b441c7f95e 100644 --- a/code/game/objects/items/weapons/material/material_weapons.dm +++ b/code/game/objects/items/weapons/material/material_weapons.dm @@ -1,184 +1,184 @@ -// SEE code/modules/materials/materials.dm FOR DETAILS ON INHERITED DATUM. -// This class of weapons takes force and appearance data from a material datum. -// They are also fragile based on material data and many can break/smash apart. -/obj/item/weapon/material - health = 10 - hitsound = 'sound/weapons/bladeslice.ogg' - gender = NEUTER - throw_speed = 3 - throw_range = 7 - w_class = ITEMSIZE_NORMAL - sharp = FALSE - edge = FALSE - item_icons = list( - slot_l_hand_str = 'icons/mob/items/lefthand_material.dmi', - slot_r_hand_str = 'icons/mob/items/righthand_material.dmi', - ) - - var/applies_material_colour = 1 - var/unbreakable = 0 //Doesn't lose health - var/fragile = 0 //Shatters when it dies - var/dulled = 0 //Has gone dull - var/can_dull = 1 //Can it go dull? - var/force_divisor = 0.5 - var/thrown_force_divisor = 0.5 - var/dulled_divisor = 0.5 //Just drops the damage by half - var/default_material = MAT_STEEL - var/datum/material/material - var/drops_debris = 1 - var/named_from_material = 1 //YW EDIT, Does it prepend the material's name to it's name? - -/obj/item/weapon/material/New(var/newloc, var/material_key) - ..(newloc) - if(!material_key) - material_key = default_material - set_material(material_key) - if(!material) - qdel(src) - return - - matter = material.get_matter() - if(matter.len) - for(var/material_type in matter) - if(!isnull(matter[material_type])) - matter[material_type] *= force_divisor // May require a new var instead. - - if(!(material.conductive)) - src.flags |= NOCONDUCT - -/obj/item/weapon/material/get_material() - return material - -/obj/item/weapon/material/proc/update_force() - if(edge || sharp) - force = material.get_edge_damage() - else - force = material.get_blunt_damage() - force = round(force*force_divisor) - if(dulled) - force = round(force*dulled_divisor) - throwforce = round(material.get_blunt_damage()*thrown_force_divisor) - //spawn(1) - // to_world("[src] has force [force] and throwforce [throwforce] when made from default material [material.name]") - -/obj/item/weapon/material/proc/set_material(var/new_material) - material = get_material_by_name(new_material) - if(!material) - qdel(src) - else - if(named_from_material) //YW EDIT - name = "[material.display_name] [initial(name)]" - health = round(material.integrity/10) - if(applies_material_colour) - color = material.icon_colour - if(material.products_need_process()) - START_PROCESSING(SSobj, src) - update_force() - -/obj/item/weapon/material/Destroy() - STOP_PROCESSING(SSobj, src) - . = ..() - -/obj/item/weapon/material/apply_hit_effect() - ..() - if(!unbreakable) - if(material.is_brittle()) - health = 0 - else if(!prob(material.hardness)) - health-- - check_health() - -/obj/item/weapon/material/attackby(obj/item/weapon/W, mob/user) - if(istype(W, /obj/item/weapon/whetstone)) - var/obj/item/weapon/whetstone/whet = W - repair(whet.repair_amount, whet.repair_time, user) - if(istype(W, /obj/item/weapon/material/sharpeningkit)) - var/obj/item/weapon/material/sharpeningkit/SK = W - repair(SK.repair_amount, SK.repair_time, user) - ..() - -/obj/item/weapon/material/proc/check_health(var/consumed) - if(health<=0) - health = 0 - - if(fragile) - shatter(consumed) - else if(!dulled && can_dull) - dull() - -/obj/item/weapon/material/proc/shatter(var/consumed) - var/turf/T = get_turf(src) - T.visible_message("\The [src] [material.destruction_desc]!") - if(istype(loc, /mob/living)) - var/mob/living/M = loc - M.drop_from_inventory(src) - playsound(src, "shatter", 70, 1) - if(!consumed && drops_debris) material.place_shard(T) - qdel(src) - -/obj/item/weapon/material/proc/dull() - var/turf/T = get_turf(src) - T.visible_message("\The [src] goes dull!") - playsound(src, "shatter", 70, 1) - dulled = 1 - if(is_sharp() || has_edge()) - sharp = FALSE - edge = FALSE - -/obj/item/weapon/material/proc/repair(var/repair_amount, var/repair_time, mob/living/user) - if(!fragile) - if(health < initial(health)) - user.visible_message("[user] begins repairing \the [src].", "You begin repairing \the [src].") - if(do_after(user, repair_time)) - user.visible_message("[user] has finished repairing \the [src]", "You finish repairing \the [src].") - health = min(health + repair_amount, initial(health)) - dulled = 0 - sharp = initial(sharp) - edge = initial(edge) - else - to_chat(user, "[src] doesn't need repairs.") - else - to_chat(user, "You can't repair \the [src].") - return - -/obj/item/weapon/material/proc/sharpen(var/material, var/sharpen_time, var/kit, mob/living/M) - if(!fragile) - if(health < initial(health)) - to_chat(M, "You should repair [src] first. Try using [kit] on it.") - return FALSE - M.visible_message("[M] begins to replace parts of [src] with [kit].", "You begin to replace parts of [src] with [kit].") - if(do_after(usr, sharpen_time)) - M.visible_message("[M] has finished replacing parts of [src].", "You finish replacing parts of [src].") - src.set_material(material) - return TRUE - else - to_chat(M, "You can't sharpen and re-edge [src].") - return FALSE - -/* -Commenting this out pending rebalancing of radiation based on small objects. -/obj/item/weapon/material/process() - if(!material.radioactivity) - return - for(var/mob/living/L in range(1,src)) - L.apply_effect(round(material.radioactivity/30),IRRADIATE,0) -*/ - -/* -// Commenting this out while fires are so spectacularly lethal, as I can't seem to get this balanced appropriately. -/obj/item/weapon/material/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) - TemperatureAct(exposed_temperature) - -// This might need adjustment. Will work that out later. -/obj/item/weapon/material/proc/TemperatureAct(temperature) - health -= material.combustion_effect(get_turf(src), temperature, 0.1) - check_health(1) - -/obj/item/weapon/material/attackby(obj/item/weapon/W as obj, mob/user as mob) - if(istype(W,/obj/item/weapon/weldingtool)) - var/obj/item/weapon/weldingtool/WT = W - if(material.ignition_point && WT.remove_fuel(0, user)) - TemperatureAct(150) - else - return ..() -*/ +// SEE code/modules/materials/materials.dm FOR DETAILS ON INHERITED DATUM. +// This class of weapons takes force and appearance data from a material datum. +// They are also fragile based on material data and many can break/smash apart. +/obj/item/weapon/material + health = 10 + hitsound = 'sound/weapons/bladeslice.ogg' + gender = NEUTER + throw_speed = 3 + throw_range = 7 + w_class = ITEMSIZE_NORMAL + sharp = FALSE + edge = FALSE + item_icons = list( + slot_l_hand_str = 'icons/mob/items/lefthand_material.dmi', + slot_r_hand_str = 'icons/mob/items/righthand_material.dmi', + ) + + var/applies_material_colour = 1 + var/unbreakable = 0 //Doesn't lose health + var/fragile = 0 //Shatters when it dies + var/dulled = 0 //Has gone dull + var/can_dull = 1 //Can it go dull? + var/force_divisor = 0.5 + var/thrown_force_divisor = 0.5 + var/dulled_divisor = 0.5 //Just drops the damage by half + var/default_material = MAT_STEEL + var/datum/material/material + var/drops_debris = 1 + var/named_from_material = 1 //YW EDIT, Does it prepend the material's name to it's name? + +/obj/item/weapon/material/New(var/newloc, var/material_key) + ..(newloc) + if(!material_key) + material_key = default_material + set_material(material_key) + if(!material) + qdel(src) + return + + matter = material.get_matter() + if(matter.len) + for(var/material_type in matter) + if(!isnull(matter[material_type])) + matter[material_type] *= force_divisor // May require a new var instead. + + if(!(material.conductive)) + src.flags |= NOCONDUCT + +/obj/item/weapon/material/get_material() + return material + +/obj/item/weapon/material/proc/update_force() + if(edge || sharp) + force = material.get_edge_damage() + else + force = material.get_blunt_damage() + force = round(force*force_divisor) + if(dulled) + force = round(force*dulled_divisor) + throwforce = round(material.get_blunt_damage()*thrown_force_divisor) + //spawn(1) + // to_world("[src] has force [force] and throwforce [throwforce] when made from default material [material.name]") + +/obj/item/weapon/material/proc/set_material(var/new_material) + material = get_material_by_name(new_material) + if(!material) + qdel(src) + else + if(named_from_material) //YW EDIT + name = "[material.display_name] [initial(name)]" + health = round(material.integrity/10) + if(applies_material_colour) + color = material.icon_colour + if(material.products_need_process()) + START_PROCESSING(SSobj, src) + update_force() + +/obj/item/weapon/material/Destroy() + STOP_PROCESSING(SSobj, src) + . = ..() + +/obj/item/weapon/material/apply_hit_effect() + ..() + if(!unbreakable) + if(material.is_brittle()) + health = 0 + else if(!prob(material.hardness)) + health-- + check_health() + +/obj/item/weapon/material/attackby(obj/item/weapon/W, mob/user) + if(istype(W, /obj/item/weapon/whetstone)) + var/obj/item/weapon/whetstone/whet = W + repair(whet.repair_amount, whet.repair_time, user) + if(istype(W, /obj/item/weapon/material/sharpeningkit)) + var/obj/item/weapon/material/sharpeningkit/SK = W + repair(SK.repair_amount, SK.repair_time, user) + ..() + +/obj/item/weapon/material/proc/check_health(var/consumed) + if(health<=0) + health = 0 + + if(fragile) + shatter(consumed) + else if(!dulled && can_dull) + dull() + +/obj/item/weapon/material/proc/shatter(var/consumed) + var/turf/T = get_turf(src) + T.visible_message("\The [src] [material.destruction_desc]!") + if(istype(loc, /mob/living)) + var/mob/living/M = loc + M.drop_from_inventory(src) + playsound(src, "shatter", 70, 1) + if(!consumed && drops_debris) material.place_shard(T) + qdel(src) + +/obj/item/weapon/material/proc/dull() + var/turf/T = get_turf(src) + T.visible_message("\The [src] goes dull!") + playsound(src, "shatter", 70, 1) + dulled = 1 + if(is_sharp() || has_edge()) + sharp = FALSE + edge = FALSE + +/obj/item/weapon/material/proc/repair(var/repair_amount, var/repair_time, mob/living/user) + if(!fragile) + if(health < initial(health)) + user.visible_message("[user] begins repairing \the [src].", "You begin repairing \the [src].") + if(do_after(user, repair_time)) + user.visible_message("[user] has finished repairing \the [src]", "You finish repairing \the [src].") + health = min(health + repair_amount, initial(health)) + dulled = 0 + sharp = initial(sharp) + edge = initial(edge) + else + to_chat(user, "[src] doesn't need repairs.") + else + to_chat(user, "You can't repair \the [src].") + return + +/obj/item/weapon/material/proc/sharpen(var/material, var/sharpen_time, var/kit, mob/living/M) + if(!fragile && src.material.can_sharpen) + if(health < initial(health)) + to_chat(M, "You should repair [src] first. Try using [kit] on it.") + return FALSE + M.visible_message("[M] begins to replace parts of [src] with [kit].", "You begin to replace parts of [src] with [kit].") + if(do_after(usr, sharpen_time)) + M.visible_message("[M] has finished replacing parts of [src].", "You finish replacing parts of [src].") + src.set_material(material) + return TRUE + else + to_chat(M, "You can't sharpen and re-edge [src].") + return FALSE + +/* +Commenting this out pending rebalancing of radiation based on small objects. +/obj/item/weapon/material/process() + if(!material.radioactivity) + return + for(var/mob/living/L in range(1,src)) + L.apply_effect(round(material.radioactivity/30),IRRADIATE,0) +*/ + +/* +// Commenting this out while fires are so spectacularly lethal, as I can't seem to get this balanced appropriately. +/obj/item/weapon/material/fire_act(datum/gas_mixture/air, exposed_temperature, exposed_volume) + TemperatureAct(exposed_temperature) + +// This might need adjustment. Will work that out later. +/obj/item/weapon/material/proc/TemperatureAct(temperature) + health -= material.combustion_effect(get_turf(src), temperature, 0.1) + check_health(1) + +/obj/item/weapon/material/attackby(obj/item/weapon/W as obj, mob/user as mob) + if(istype(W,/obj/item/weapon/weldingtool)) + var/obj/item/weapon/weldingtool/WT = W + if(material.ignition_point && WT.remove_fuel(0, user)) + TemperatureAct(150) + else + return ..() +*/ diff --git a/code/game/objects/items/weapons/storage/laundry_basket.dm b/code/game/objects/items/weapons/storage/laundry_basket.dm index db6b304f31..ab0f529153 100644 --- a/code/game/objects/items/weapons/storage/laundry_basket.dm +++ b/code/game/objects/items/weapons/storage/laundry_basket.dm @@ -65,7 +65,8 @@ return ..() /obj/item/weapon/storage/laundry_basket/dropped(mob/user as mob) - QDEL_NULL(linked) + if(linked) + QDEL_NULL(linked) return ..() /obj/item/weapon/storage/laundry_basket/show_to(mob/user as mob) @@ -82,6 +83,6 @@ use_to_pickup = FALSE /obj/item/weapon/storage/laundry_basket/offhand/dropped(mob/user as mob) - user.drop_from_inventory(linked) + if(user.isEquipped(linked)) + user.drop_from_inventory(linked) return - 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/game/turfs/flooring/flooring.dm b/code/game/turfs/flooring/flooring.dm index 2beeef160f..3b93d5e174 100644 --- a/code/game/turfs/flooring/flooring.dm +++ b/code/game/turfs/flooring/flooring.dm @@ -198,6 +198,17 @@ var/list/flooring_types 'sound/effects/footstep/mud3.ogg', 'sound/effects/footstep/mud4.ogg')) +/decl/flooring/rock + name = "rocks" + desc = "Hard as a rock." + icon = 'icons/turf/outdoors.dmi' + icon_base = "rock" + footstep_sounds = list("human" = list( + 'sound/effects/footstep/LightStone1.ogg', + 'sound/effects/footstep/LightStone2.ogg', + 'sound/effects/footstep/LightStone3.ogg', + 'sound/effects/footstep/LightStone4.ogg')) + /decl/flooring/asteroid name = "coarse sand" desc = "You got a pebble in your shoe just looking at it." diff --git a/code/game/turfs/simulated/outdoors/outdoors.dm b/code/game/turfs/simulated/outdoors/outdoors.dm index e55196aea6..98d195001c 100644 --- a/code/game/turfs/simulated/outdoors/outdoors.dm +++ b/code/game/turfs/simulated/outdoors/outdoors.dm @@ -123,6 +123,7 @@ var/list/turf_edge_cache = list() desc = "Hard as a rock." icon_state = "rock" edge_blending_priority = 1 + initial_flooring = /decl/flooring/rock /turf/simulated/floor/outdoors/rocks/caves outdoors = OUTDOORS_NO @@ -185,4 +186,4 @@ var/list/turf_edge_cache = list() icon = 'icons/turf/concrete.dmi' icon_state = "concrete_dark" desc = "Some sort of material composite road." - edge_blending_priority = -1 \ No newline at end of file + edge_blending_priority = -1 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/code/game/turfs/simulated/water.dm b/code/game/turfs/simulated/water.dm index ed89cdba3a..a396b29d29 100644 --- a/code/game/turfs/simulated/water.dm +++ b/code/game/turfs/simulated/water.dm @@ -73,6 +73,27 @@ 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()) + if(prob(10)) + 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) @@ -132,6 +153,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/admin/verbs/modify_robot.dm b/code/modules/admin/verbs/modify_robot.dm index 83162dba3b..6a13ee9807 100644 --- a/code/modules/admin/verbs/modify_robot.dm +++ b/code/modules/admin/verbs/modify_robot.dm @@ -3,7 +3,7 @@ set name = "Modify Robot Module" set desc = "Allows to add or remove modules to/from robots." set category = "Admin" - if(!check_rights(R_ADMIN)) + if(!check_rights(R_ADMIN, R_FUN, R_VAREDIT)) return if(!istype(target) || !target.module) diff --git a/code/modules/admin/verbs/resize.dm b/code/modules/admin/verbs/resize.dm index dc34053930..bc65d31b66 100644 --- a/code/modules/admin/verbs/resize.dm +++ b/code/modules/admin/verbs/resize.dm @@ -2,9 +2,9 @@ set name = "Resize" set desc = "Resizes any living mob without any restrictions on size." set category = "Fun" - if(!check_rights(R_ADMIN, R_FUN)) + if(!check_rights(R_ADMIN, R_FUN, R_VAREDIT)) return - + var/size_multiplier = tgui_input_number(usr, "Input size multiplier.", "Resize", 1) if(!size_multiplier) return //cancelled @@ -21,4 +21,4 @@ L.resize(size_multiplier, animate = TRUE, uncapped = TRUE, ignore_prefs = TRUE) log_and_message_admins("has changed [key_name(L)]'s size multiplier to [size_multiplier].") - feedback_add_details("admin_verb","RESIZE") \ No newline at end of file + feedback_add_details("admin_verb","RESIZE") diff --git a/code/modules/admin/view_variables/view_variables.dm b/code/modules/admin/view_variables/view_variables.dm index cd05296959..0a2e303712 100644 --- a/code/modules/admin/view_variables/view_variables.dm +++ b/code/modules/admin/view_variables/view_variables.dm @@ -15,269 +15,271 @@ 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() + //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) - 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") diff --git a/code/modules/client/preference_setup/loadout/loadout_suit.dm b/code/modules/client/preference_setup/loadout/loadout_suit.dm index 6616317226..6ee1985c7f 100644 --- a/code/modules/client/preference_setup/loadout/loadout_suit.dm +++ b/code/modules/client/preference_setup/loadout/loadout_suit.dm @@ -507,6 +507,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 55d9d8bf31..34246de082 100644 --- a/code/modules/clothing/suits/miscellaneous.dm +++ b/code/modules/clothing/suits/miscellaneous.dm @@ -805,6 +805,14 @@ name = "brown varsity jacket" icon_state = "varsity_brown" +/obj/item/clothing/suit/runner + name = "runner jacket" + desc = "A yellow 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 5815cf4d2f..ddb57e8bbb 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." diff --git a/code/modules/lore_codex/codex.dm b/code/modules/lore_codex/codex.dm index d6c1eafa61..008cf429ed 100644 --- a/code/modules/lore_codex/codex.dm +++ b/code/modules/lore_codex/codex.dm @@ -9,13 +9,21 @@ var/datum/codex_tree/tree = null var/root_type = /datum/lore/codex/category/main_borealis_lore //YW EDIT + var/static/list/codex_tree_keys = list() // static list linking codexes to the correct codex_tree. + /obj/item/weapon/book/codex/Initialize() - tree = new(src, root_type) + tree = codex_tree_keys["[root_type]"] + if(!tree) + tree = new(src, root_type) + codex_tree_keys["[root_type]"] = tree . = ..() /obj/item/weapon/book/codex/attack_self(mob/user) if(!tree) - tree = new(src, root_type) + tree = codex_tree_keys["[root_type]"] + if(!tree) + tree = new(src, root_type) + codex_tree_keys["[root_type]"] = tree icon_state = "[initial(icon_state)]-open" tree.display(user) diff --git a/code/modules/lore_codex/codex_tree.dm b/code/modules/lore_codex/codex_tree.dm index 71aa80b087..200a1ec4f0 100644 --- a/code/modules/lore_codex/codex_tree.dm +++ b/code/modules/lore_codex/codex_tree.dm @@ -4,9 +4,9 @@ var/atom/movable/holder = null var/root_type = null var/datum/lore/codex/home = null // Top-most page. - var/datum/lore/codex/current_page = null // Current page or category to display to the user. + var/list/current_page = list() // Current page or category to display to the user. // converted to list to track multiple players. var/list/indexed_pages = list() // Assoc list with search terms pointing to a ref of the page. It's created on New(). - var/list/history = list() // List of pages we previously visited. + var/list/history = list() // List of pages we previously visited. // now a 2D list /datum/codex_tree/New(var/new_holder, var/new_root_type) holder = new_holder @@ -16,25 +16,31 @@ /datum/codex_tree/proc/generate_pages() home = new root_type(src) // This will also generate the others. - current_page = home - indexed_pages = current_page.index_page() + //current_page = home + indexed_pages = home.index_page() // changed from current_page to home. // Changes current_page to its parent, assuming one exists. -/datum/codex_tree/proc/go_to_parent() - if(current_page && current_page.parent) - current_page = current_page.parent +/datum/codex_tree/proc/go_to_parent(var/mob/user) + var/datum/lore/codex/D = current_page["[user]"] + if(istype(D) && D.parent) + current_page["[user]"] = D.parent // Changes current_page to a specific page or category. -/datum/codex_tree/proc/go_to_page(var/datum/lore/codex/new_page, var/dont_record_history = FALSE) - if(new_page) // Make sure we're not going to a null page for whatever reason. - current_page = new_page +/datum/codex_tree/proc/go_to_page(var/datum/lore/codex/new_page, var/dont_record_history = FALSE, var/mob/user) + var/datum/lore/codex/D = current_page["[user]"] + if(new_page && istype(D)) // Make sure we're not going to a null page for whatever reason. + current_page["[user]"] = new_page if(!dont_record_history) - history.Add(new_page) + var/list/H = history["[user]"] + if(!H) + H = list() + H.Add(new_page) + history["[user]"] = H -/datum/codex_tree/proc/quick_link(var/search_word) +/datum/codex_tree/proc/quick_link(var/search_word, var/mob/user) for(var/word in indexed_pages) if(lowertext(search_word) == lowertext(word)) // Exact matches unfortunately limit our ability to perform SEOs. - go_to_page(indexed_pages[word]) + go_to_page(indexed_pages[word], FALSE, user) return /datum/codex_tree/proc/get_page_from_type(var/desired_type) @@ -45,16 +51,26 @@ return null // Returns to the last visited page, based on the history list. -/datum/codex_tree/proc/go_back() - if((history.len - 1) > 0) - if(history[history.len] == current_page) - history.len-- // This gets rid of the current page in the history. - go_to_page(pop(history), dont_record_history = TRUE) // Where as this will get us the previous page that we want to go to. +/datum/codex_tree/proc/go_back(var/mob/user) + var/list/H = history["[user]"] + var/datum/lore/codex/D = current_page["[user]"] + if(!LAZYLEN(H) || !istype(D)) + return + if((H.len) > 1) + if(H[H.len] == D) + H.len-- // This gets rid of the current page in the history. + history["[user]"] = H + if(H.len == 1) + go_to_page(H[H.len], TRUE, user) + return + go_to_page(pop(history["[user]"]), TRUE, user) // Where as this will get us the previous page that we want to go to. + else + go_to_page(H[H.len], TRUE, user) -/datum/codex_tree/proc/get_tree_position() - if(current_page) +/datum/codex_tree/proc/get_tree_position(var/mob/user) + var/datum/lore/codex/checked = current_page["[user]"] + if(istype(checked)) var/output = "" - var/datum/lore/codex/checked = current_page output = "[checked.name]" while(checked.parent) output = "[checked.parent.name] \> [output]" @@ -75,38 +91,53 @@ /datum/codex_tree/proc/display(mob/user) // icon_state = "[initial(icon_state)]-open" - if(!current_page) + if(!home) generate_pages() + if(!user) + return + var/datum/lore/codex/D = current_page["[user]"] + if(!istype(D)) // Initialize current_page and history + current_page["[user]"] = home + D = current_page["[user]"] + if(!istype(D)) + log_debug("Codex_tree failed to failed to load for [user].") + return + var/list/H_init = list() + H_init.Add(home) + history["[user]"] = H_init + //if(!current_page) + //generate_pages() user << browse_rsc('html/browser/codex.css', "codex.css") var/dat dat = "" - dat += "[holder.name] ([current_page.name])" + dat += "[holder.name] ([D.name])" dat += "" dat += "" dat += "" - dat += "[get_tree_position()]
" + dat += "[get_tree_position(user)]
" dat += "[make_search_bar()]
" dat += "
" - dat += "

[current_page.name]

" + dat += "

[D.name]

" dat += "
" - if(current_page.data) - dat += "[current_page.data]
" + if(D.data) + dat += "[D.data]
" dat += "
" - if(istype(current_page, /datum/lore/codex/category)) + if(istype(D, /datum/lore/codex/category)) dat += "
" - var/datum/lore/codex/category/C = current_page + var/datum/lore/codex/category/C = D for(var/datum/lore/codex/child in C.children) dat += "[child.name]" dat += "
" dat += "
" - if(history.len - 1) + var/list/H = history["[user]"] + if(LAZYLEN(H)) dat += "
\[Go Back\]" - if(current_page.parent) + if(D.parent) dat += "
\[Go Up\]" - if(current_page != home) + if(D != home) dat += "
\[Go To Home\]" dat += "
" user << browse(dat, "window=the_empress_protects;size=600x550") @@ -120,21 +151,21 @@ if(href_list["target"]) // Direct link, using a ref var/datum/lore/codex/new_page = locate(href_list["target"]) - go_to_page(new_page) + go_to_page(new_page, FALSE, usr) else if(href_list["search_query"]) - quick_link(href_list["search_query"]) + quick_link(href_list["search_query"], usr) else if(href_list["go_to_parent"]) - go_to_parent() + go_to_parent(usr) else if(href_list["go_back"]) - go_back() + go_back(usr) else if(href_list["go_to_home"]) - go_to_page(home) + go_to_page(home, FALSE, usr) else if(href_list["quick_link"]) // Indirect link, using a (hopefully) indexed word. - quick_link(href_list["quick_link"]) + quick_link(href_list["quick_link"], usr) else if(href_list["close"]) // Close the book, if our holder is actually a book. - if(istype(holder, /obj/item/weapon/book/codex)) - holder.icon_state = initial(holder.icon_state) + //if(istype(holder, /obj/item/weapon/book/codex)) + //holder.icon_state = initial(holder.icon_state) usr << browse(null, "window=the_empress_protects") return - display(usr) \ No newline at end of file + display(usr) diff --git a/code/modules/maps/tg/map_template.dm b/code/modules/maps/tg/map_template.dm index 3e530206a4..17f43d1029 100644 --- a/code/modules/maps/tg/map_template.dm +++ b/code/modules/maps/tg/map_template.dm @@ -9,8 +9,8 @@ var/annihilate = FALSE // If true, all (movable) atoms at the location where the map is loaded will be deleted before the map is loaded in. var/fixed_orientation = FALSE // If true, the submap will not be rotated randomly when loaded. - var/cost = null /* The map generator has a set 'budget' it spends to place down different submaps. It will pick available submaps randomly until - it runs out. The cost of a submap should roughly corrispond with several factors such as size, loot, difficulty, desired scarcity, etc. + var/cost = null /* The map generator has a set 'budget' it spends to place down different submaps. It will pick available submaps randomly until + it runs out. The cost of a submap should roughly corrispond with several factors such as size, loot, difficulty, desired scarcity, etc. Set to -1 to force the submap to always be made. */ var/allow_duplicates = FALSE // If false, only one map template will be spawned by the game. Doesn't affect admins spawning then manually. var/discard_prob = 0 // If non-zero, there is a chance that the map seeding algorithm will skip this template when selecting potential templates to use. @@ -74,7 +74,7 @@ A.power_change() if(machinery_was_awake) - SSmachines.wake() // Wake only if it was awake before we tried to suspended it. + SSmachines.wake() // Wake only if it was awake before we tried to suspended it. SSshuttles.block_init_queue = prev_shuttle_queue_state SSshuttles.process_init_queues() // We will flush the queue unless there were other blockers, in which case they will do it. @@ -214,6 +214,12 @@ potential_submaps -= chosen_template continue + // Is single use template already placed + if(!chosen_template.allow_duplicates && chosen_template.loaded) + priority_submaps -= chosen_template + potential_submaps -= chosen_template + continue + // Did we already place down a very similar submap? if(chosen_template.template_group && (chosen_template.template_group in template_groups_used)) priority_submaps -= chosen_template @@ -253,6 +259,13 @@ admin_notice("Submap \"[chosen_template.name]\" placed at ([T.x], [T.y], [T.z])\n", R_DEBUG) + if(specific_sanity < 0) + // I have no idea how this function has a race condition for the sanity check, but forcing the inner check loop to end like this fixes it... + // If a template doesn't allow duplicates, it tries to double place a template. this fixes that. + break + if(!chosen_template.allow_duplicates) + specific_sanity = -1 // force end the placement loop + // Do loading here. chosen_template.load(T, centered = TRUE, orientation=orientation) // This is run before the main map's initialization routine, so that can initilize our submaps for us instead. diff --git a/code/modules/materials/materials/_materials.dm b/code/modules/materials/materials/_materials.dm index fba60dda05..1e1fec8a2d 100644 --- a/code/modules/materials/materials/_materials.dm +++ b/code/modules/materials/materials/_materials.dm @@ -213,6 +213,7 @@ var/list/name_to_material var/luminescence var/radiation_resistance = 0 // Radiation resistance, which is added on top of a material's weight for blocking radiation. Needed to make lead special without superrobust weapons. var/supply_conversion_value // Supply points per sheet that this material sells for. + var/can_sharpen = TRUE // Is this material compatible with a sharpening kit? // Placeholder vars for the time being, todo properly integrate windows/light tiles/rods. var/created_window diff --git a/code/modules/materials/materials/plastic.dm b/code/modules/materials/materials/plastic.dm index d10e5153f6..b31ed2cb73 100644 --- a/code/modules/materials/materials/plastic.dm +++ b/code/modules/materials/materials/plastic.dm @@ -108,4 +108,5 @@ hardness = 1 weight = 1 protectiveness = 0 // 0% - conductive = 0 \ No newline at end of file + conductive = 0 + can_sharpen = FALSE 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) diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index e7722cff39..34a0ad325b 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) @@ -407,6 +408,11 @@ O.organ_tag = organ_tag H.internal_organs_by_name[organ_tag] = O + // set butcherable meats from species + for(var/obj/item/organ/O in H.organs) + O.set_initial_meat() + for(var/obj/item/organ/O in H.internal_organs) + O.set_initial_meat() /datum/species/proc/hug(var/mob/living/carbon/human/H, var/mob/living/target) @@ -513,6 +519,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) ) ) @@ -570,4 +580,3 @@ /datum/species/proc/post_spawn_special(mob/living/carbon/human/H) return - 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 ee6db36210..9403c2f3a4 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 @@ -219,6 +219,12 @@ var_changes = list("gun_accuracy_mod" = -35) 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) //YW ADDITIONS: START /datum/trait/negative/light_sensitivity diff --git a/code/modules/mob/living/silicon/robot/dogborg/dog_sleeper_vr.dm b/code/modules/mob/living/silicon/robot/dogborg/dog_sleeper_vr.dm index f297317a27..a7a9386c39 100644 --- a/code/modules/mob/living/silicon/robot/dogborg/dog_sleeper_vr.dm +++ b/code/modules/mob/living/silicon/robot/dogborg/dog_sleeper_vr.dm @@ -331,7 +331,7 @@ var/burncolor = (patient.getFireLoss() < 60 ? "color:gray;" : "color:red;") dat += "\t-Pulse, bpm: [patient.get_pulse(GETPULSE_TOOL)]
" - dat += "\t-Overall Health %: [round(patient.health)]
" + dat += "\t-Overall Health %: [round(100 * (patient.health / patient.getMaxHealth()))]
" dat += "\t-Brute Damage %: [patient.getBruteLoss()]
" dat += "\t-Respiratory Damage %: [patient.getOxyLoss()]
" dat += "\t-Toxin Content %: [patient.getToxLoss()]
" 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/giant_spider/broodmother.dm b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/broodmother.dm index 345e315a16..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 @@ -185,4 +185,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/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 diff --git a/code/modules/organs/organ.dm b/code/modules/organs/organ.dm index ec117338fa..621e875df6 100644 --- a/code/modules/organs/organ.dm +++ b/code/modules/organs/organ.dm @@ -114,8 +114,7 @@ var/list/organ_cache = list() handle_organ_mod_special() -/obj/item/organ/Initialize() - . = ..() +/obj/item/organ/proc/set_initial_meat() if(owner) if(!meat_type) if(owner.isSynthetic()) @@ -394,7 +393,7 @@ var/list/organ_cache = list() var/obj/item/organ/external/affected = owner.get_organ(parent_organ) if(affected) affected.internal_organs -= src - forceMove(owner.drop_location()) + owner.remove_from_mob(src, owner.drop_location()) START_PROCESSING(SSobj, src) rejecting = null diff --git a/code/modules/paperwork/photography.dm b/code/modules/paperwork/photography.dm index 4a79eb64a8..94dea56777 100644 --- a/code/modules/paperwork/photography.dm +++ b/code/modules/paperwork/photography.dm @@ -234,9 +234,9 @@ var/global/photo_count = 0 holding = "They are holding \a [A.r_hand]" if(!mob_detail) - mob_detail = "You can see [A] on the photo[A:health < 75 ? " - [A] looks hurt":""].[holding ? " [holding]":"."]. " + mob_detail = "You can see [A] on the photo[(A:health / A.getMaxHealth()) < 0.75 ? " - [A] looks hurt":""].[holding ? " [holding]":"."]. " else - mob_detail += "You can also see [A] on the photo[A:health < 75 ? " - [A] looks hurt":""].[holding ? " [holding]":"."]." + mob_detail += "You can also see [A] on the photo[(A:health / A.getMaxHealth()) < 0.75 ? " - [A] looks hurt":""].[holding ? " [holding]":"."]." return mob_detail diff --git a/code/modules/pda/core_apps.dm b/code/modules/pda/core_apps.dm index f45f6d5e70..960978b94d 100644 --- a/code/modules/pda/core_apps.dm +++ b/code/modules/pda/core_apps.dm @@ -46,16 +46,26 @@ icon = "sticky-note-o" template = "pda_notekeeper" + var/greeted = FALSE var/note = null + var/notetitle = null + var/currentnote = 1 + var/list/storedtitles = list("","","","","","","","","","","","") + var/list/storednotes = list("","","","","","","","","","","","") var/notehtml = "" /datum/data/pda/app/notekeeper/start() . = ..() - if(!note) - note = "Congratulations, your station has chosen the [pda.model_name]!" + if(!note && greeted == FALSE) + + // display greeting! + greeted = TRUE + note = "Your station has chosen the [pda.model_name]!" + notetitle = "Congratulations!" /datum/data/pda/app/notekeeper/update_ui(mob/user as mob, list/data) data["note"] = note // current pda notes + data["notename"] = "Note [alphabet_uppercase[currentnote]] : [notetitle]" /datum/data/pda/app/notekeeper/tgui_act(action, list/params, datum/tgui/ui, datum/tgui_state/state) if(..()) @@ -70,6 +80,126 @@ else pda.close(usr) return TRUE + if("Titleset") + var/n = tgui_input_text(usr, "Please enter title", name, notetitle, multiline = FALSE) + if(pda.loc == usr) + notetitle = adminscrub(n) + else + pda.close(usr) + return TRUE + if("Print") + if(pda.loc == usr) + printnote() + else + pda.close(usr) + return TRUE + // dumb way to do this, but i don't know how to easily parse this without a lot of silly code outside the switch! + if("Note1") + if(pda.loc == usr) + changetonote(1) + else + pda.close(usr) + return TRUE + if("Note2") + if(pda.loc == usr) + changetonote(2) + else + pda.close(usr) + return TRUE + if("Note3") + if(pda.loc == usr) + changetonote(3) + else + pda.close(usr) + return TRUE + if("Note4") + if(pda.loc == usr) + changetonote(4) + else + pda.close(usr) + return TRUE + if("Note5") + if(pda.loc == usr) + changetonote(5) + else + pda.close(usr) + return TRUE + if("Note6") + if(pda.loc == usr) + changetonote(6) + else + pda.close(usr) + return TRUE + if("Note7") + if(pda.loc == usr) + changetonote(7) + else + pda.close(usr) + return TRUE + if("Note8") + if(pda.loc == usr) + changetonote(8) + else + pda.close(usr) + return TRUE + if("Note9") + if(pda.loc == usr) + changetonote(9) + else + pda.close(usr) + return TRUE + if("Note10") + if(pda.loc == usr) + changetonote(10) + else + pda.close(usr) + return TRUE + if("Note11") + if(pda.loc == usr) + changetonote(11) + else + pda.close(usr) + return TRUE + if("Note12") + if(pda.loc == usr) + changetonote(12) + else + pda.close(usr) + return TRUE + +/datum/data/pda/app/notekeeper/proc/printnote() + // get active hand of person holding PDA, and print the page to the paper in it + if(istype( usr, /mob/living/carbon/human )) + var/mob/living/carbon/human/H = usr + var/obj/item/I = H.get_active_hand() + if(istype(I,/obj/item/weapon/paper)) + var/obj/item/weapon/paper/P = I + if(isnull(P.info) || P.info == "" ) + var/titlenote = "Note [alphabet_uppercase[currentnote]]" + if(!isnull(notetitle) && notetitle != "") + titlenote = notetitle + to_chat(usr, "Successfully printed [titlenote]!") + P.set_content( pencode2html(note), titlenote) + else + to_chat(usr, "You can only print to empty paper!") + else + to_chat(usr, "You must be holding paper for the pda to print to!") + + +/datum/data/pda/app/notekeeper/proc/changetonote(var/noteindex) + // save note to current slot, then load another slot + storednotes[currentnote] = note + storedtitles[currentnote] = notetitle + + currentnote = noteindex + + note = storednotes[currentnote] + notetitle = storedtitles[currentnote] + + // update text on keeper, silly swapping! + note = replacetext(note, "
", "\n") + notehtml = html_decode(note) + note = replacetext(note, "\n", "
") /datum/data/pda/app/manifest name = "Crew Manifest" diff --git a/code/modules/pda/utilities.dm b/code/modules/pda/utilities.dm index 36ef40a800..65c2484378 100644 --- a/code/modules/pda/utilities.dm +++ b/code/modules/pda/utilities.dm @@ -178,11 +178,18 @@ if(length(notes.note) > 0) notes.note += "

" // Store the scanned document to the notes - notes.note += "Scanned Document. Edit to restore previous notes/delete scan.
----------
" + formatted_scan + "
" - // notehtml ISN'T set to allow user to get their old notes back. A better implementation would add a "scanned documents" - // feature to the PDA, which would better convey the availability of the feature, but this will work for now. + notes.note = formatted_scan + notes.notetitle = sanitize_simple(P.name, list("\n" = "", "\t" = "", "ÿ" = "")) + // update the saved note too incase we kept the pda open, this is really silly due to how the notehtml is actually what's passed to the editor's text. + // If I don't update it here, it loses the data when you edit it! + notes.storednotes[notes.currentnote] = notes.note + notes.storedtitles[notes.currentnote] = notes.notetitle + notes.notehtml = html_decode(replacetext(notes.note,"
", "\n")) // Inform the user - to_chat(user, "Paper scanned and OCRed to notekeeper.")//concept of scanning paper copyright brainoblivion 2009 + var/scannedtitle = "Paper" + if(!isnull(notes.notetitle) && notes.notetitle != "") + scannedtitle = "'[notes.notetitle]'" + to_chat(user, "[scannedtitle] scanned to Notekeeper in note [alphabet_uppercase[notes.currentnote]].")//concept of scanning paper copyright brainoblivion 2009 else to_chat(user, "Error scanning [A].") diff --git a/code/modules/power/singularity/particle_accelerator/particle.dm b/code/modules/power/singularity/particle_accelerator/particle.dm index 7f30e02966..ce69674522 100644 --- a/code/modules/power/singularity/particle_accelerator/particle.dm +++ b/code/modules/power/singularity/particle_accelerator/particle.dm @@ -7,6 +7,7 @@ icon_state = "particle1"//Need a new icon for this anchored = TRUE density = TRUE + movement_type = UNSTOPPABLE // for bumps to trigger var/movement_range = 10 var/energy = 10 //energy in eV var/mega_energy = 0 //energy in MeV diff --git a/code/modules/power/singularity/particle_accelerator/particle_emitter.dm b/code/modules/power/singularity/particle_accelerator/particle_emitter.dm index 0a82e480d6..292900b419 100644 --- a/code/modules/power/singularity/particle_accelerator/particle_emitter.dm +++ b/code/modules/power/singularity/particle_accelerator/particle_emitter.dm @@ -31,7 +31,7 @@ if((last_shot + fire_delay) <= world.time) last_shot = world.time var/obj/effect/accelerated_particle/A = null - var/turf/T = get_step(src,dir) + var/turf/T = src.loc // if it doesn't spawn here, it won't bump stuff directly infront of the PA switch(strength) if(0) A = new/obj/effect/accelerated_particle/weak(T, dir) 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 diff --git a/code/modules/projectiles/guns/toy.dm b/code/modules/projectiles/guns/toy.dm index 16d9526cd1..13bbffb4bf 100644 --- a/code/modules/projectiles/guns/toy.dm +++ b/code/modules/projectiles/guns/toy.dm @@ -318,4 +318,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 diff --git a/code/modules/recycling/conveyor2.dm b/code/modules/recycling/conveyor2.dm index ac02254e2c..75bb9a1d15 100644 --- a/code/modules/recycling/conveyor2.dm +++ b/code/modules/recycling/conveyor2.dm @@ -111,6 +111,8 @@ spawn(1) // slight delay to prevent infinite propagation due to map order //TODO: please no spawn() in process(). It's a very bad idea var/items_moved = 0 for(var/atom/movable/A in affecting) + if(istype(A,/obj/effect/abstract)) // Flashlight's lights are not physical objects + continue if(!A.anchored) if(A.loc == src.loc) // prevents the object from being affected if it's not currently here. step(A,movedir) diff --git a/code/modules/research/designs/locator_devices.dm b/code/modules/research/designs/locator_devices.dm index cdba0f6926..82a5c81cf3 100644 --- a/code/modules/research/designs/locator_devices.dm +++ b/code/modules/research/designs/locator_devices.dm @@ -6,7 +6,7 @@ /datum/design/item/gps/AssembleDesignName() ..() - name = "Triangulating device design ([name])" + name = "Triangulating device design (GPS - [name])" /datum/design/item/gps/generic name = "GEN" @@ -77,4 +77,4 @@ req_tech = list(TECH_BLUESPACE = 1) materials = list (MAT_STEEL = 20, MAT_GLASS = 10) build_path = /obj/item/device/radio/beacon - sort_string = "DBABA" \ No newline at end of file + sort_string = "DBABA" diff --git a/code/modules/surgery/organs_internal.dm b/code/modules/surgery/organs_internal.dm index dfbf624cf5..998301154f 100644 --- a/code/modules/surgery/organs_internal.dm +++ b/code/modules/surgery/organs_internal.dm @@ -20,6 +20,8 @@ // CHEST INTERNAL ORGAN SURGERY // ////////////////////////////////////////////////////////////////// /datum/surgery_step/internal/fix_organ + surgery_name = "Treat Organ" + allowed_tools = list( /obj/item/stack/medical/advanced/bruise_pack= 100, \ /obj/item/stack/medical/bruise_pack = 20 @@ -114,6 +116,8 @@ //Robo internal organ fix. For when an organic has robotic limbs. /datum/surgery_step/fix_organic_organ_robotic //For artificial organs + surgery_name = "Mend Organ" + allowed_tools = list( /obj/item/stack/nanopaste = 100, /obj/item/stack/cable_coil = 75, @@ -187,6 +191,7 @@ /////////////////////////////////////////////////////////////// /datum/surgery_step/internal/detatch_organ/ + surgery_name = "Detach Organ" allowed_tools = list( /obj/item/weapon/surgical/scalpel = 100, \ @@ -329,6 +334,7 @@ /////////////////////////////////////////////////////////////// /datum/surgery_step/internal/replace_organ + surgery_name = "Replace Organ" allowed_tools = list( /obj/item/organ = 100 ) @@ -408,6 +414,7 @@ /////////////////////////////////////////////////////////////// /datum/surgery_step/internal/attach_organ + surgery_name = "Attach Organ" allowed_tools = list( /obj/item/weapon/surgical/FixOVein = 100, \ /obj/item/stack/cable_coil = 75 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 76e20daf0e..960c406c03 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% @@ -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 @@ -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 diff --git a/code/modules/vore/eating/living_vr.dm b/code/modules/vore/eating/living_vr.dm index d1ebb0e4c7..b9593edb63 100644 --- a/code/modules/vore/eating/living_vr.dm +++ b/code/modules/vore/eating/living_vr.dm @@ -496,6 +496,11 @@ else if(tf_mob_holder) log_and_message_admins("[key_name(src)] used the OOC escape button to revert back to their original form from being TFed into another mob.") revert_mob_tf() + + else if(istype(loc, /obj/item/weapon/holder/micro) && (istype(loc.loc, /obj/machinery/microwave))) + forceMove(get_turf(src)) + log_and_message_admins("[key_name(src)] used the OOC escape button to get out of a microwave.") + //Don't appear to be in a vore situation else to_chat(src,"You aren't inside anyone, though, is the thing.") @@ -740,11 +745,11 @@ to_chat(src, "You are not holding anything.") return - if(is_type_in_list(I,item_vore_blacklist)) + if(is_type_in_list(I,item_vore_blacklist) && !adminbus_trash) //If someone has adminbus, they can eat whatever they want. to_chat(src, "You are not allowed to eat this.") return - if(!I.trash_eatable) + if(!I.trash_eatable) //OOC pref. This /IS/ respected, even if adminbus_trash is enabled to_chat(src, "You can't eat that so casually!") return @@ -830,16 +835,11 @@ to_chat(src, "You can taste the flavor of pain. This can't possibly be healthy for your guts.") else to_chat(src, "You can taste the flavor of really bad ideas.") - else if(istype(I,/obj/item/toy)) - visible_message("[src] demonstrates their voracious capabilities by swallowing [I] whole!") else if(istype(I,/obj/item/weapon/bikehorn/tinytether)) to_chat(src, "You feel a rush of power swallowing such a large, err, tiny structure.") - visible_message("[src] demonstrates their voracious capabilities by swallowing [I] whole!") else if(istype(I,/obj/item/device/mmi/digital/posibrain) || istype(I,/obj/item/device/aicard)) - visible_message("[src] demonstrates their voracious capabilities by swallowing [I] whole!") to_chat(src, "You can taste the sweet flavor of digital friendship. Or maybe it is something else.") else if(istype(I,/obj/item/device/paicard)) - visible_message("[src] demonstrates their voracious capabilities by swallowing [I] whole!") to_chat(src, "You can taste the sweet flavor of digital friendship.") var/obj/item/device/paicard/ourcard = I if(ourcard.pai && ourcard.pai.client && isbelly(ourcard.loc)) @@ -852,7 +852,6 @@ else to_chat(src, "You can taste the flavor of gluttonous waste of food.") else if (istype(I,/obj/item/clothing/accessory/collar)) - visible_message("[src] demonstrates their voracious capabilities by swallowing [I] whole!") to_chat(src, "You can taste the submissiveness in the wearer of [I]!") else if(iscapturecrystal(I)) var/obj/item/capture_crystal/C = I @@ -863,6 +862,7 @@ to_chat(src, "You can taste the the power of command.") else to_chat(src, "You can taste the flavor of garbage. Delicious.") + visible_message("[src] demonstrates their voracious capabilities by swallowing [I] whole!") return to_chat(src, "This item is not appropriate for ethical consumption.") return 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, diff --git a/icons/inventory/suit/item.dmi b/icons/inventory/suit/item.dmi index 7de57a99a8..3d92d18214 100644 Binary files a/icons/inventory/suit/item.dmi and b/icons/inventory/suit/item.dmi differ diff --git a/icons/inventory/suit/mob.dmi b/icons/inventory/suit/mob.dmi index c8ee40316e..9a1f2e9f4d 100644 Binary files a/icons/inventory/suit/mob.dmi and b/icons/inventory/suit/mob.dmi differ diff --git a/icons/inventory/uniform/item.dmi b/icons/inventory/uniform/item.dmi index c7d9b31167..c059c0f27d 100644 Binary files a/icons/inventory/uniform/item.dmi and b/icons/inventory/uniform/item.dmi differ diff --git a/icons/inventory/uniform/mob.dmi b/icons/inventory/uniform/mob.dmi index f7928ebaed..0b39bba6d2 100644 Binary files a/icons/inventory/uniform/mob.dmi and b/icons/inventory/uniform/mob.dmi differ diff --git a/icons/inventory/uniform/mob_digi.dmi b/icons/inventory/uniform/mob_digi.dmi index 637e63b889..7d6908ecfb 100644 Binary files a/icons/inventory/uniform/mob_digi.dmi and b/icons/inventory/uniform/mob_digi.dmi differ diff --git a/icons/mob/items/lefthand_guns.dmi b/icons/mob/items/lefthand_guns.dmi index 340a1ae908..fb65c2b71b 100644 Binary files a/icons/mob/items/lefthand_guns.dmi and b/icons/mob/items/lefthand_guns.dmi differ diff --git a/icons/mob/items/righthand_guns.dmi b/icons/mob/items/righthand_guns.dmi index a3a4f82e72..3b5e6e91bd 100644 Binary files a/icons/mob/items/righthand_guns.dmi and b/icons/mob/items/righthand_guns.dmi differ 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 4798478559..0000000000 Binary files a/maps/atoll/icons/objs/moss.dmi and /dev/null differ diff --git a/maps/atoll/icons/objs/trees_xl.dmi b/maps/atoll/icons/objs/trees_xl.dmi deleted file mode 100644 index d3f7c66e02..0000000000 Binary files a/maps/atoll/icons/objs/trees_xl.dmi and /dev/null differ 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 8b6d83f49b..62fbefd6a1 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_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/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 6141d7a4f3..85fd7a73a2 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/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} +
{/* As usual with dangerouslySetInnerHTML, this notekeeper was designed to use HTML injection. Fix when markdown is easier. */}
-