Merge branch 'bleeding-edge-freeze' of https://github.com/Baystation12/Baystation12 into bs12_with_tgport
Conflicts: baystation12.dme code/defines/procs/global_lists.dm code/game/gamemodes/events.dm code/game/gamemodes/events/space_ninja.dm code/game/mecha/working/ripley.dm code/modules/mob/living/carbon/human/human_attackalien.dm code/modules/mob/living/carbon/human/life.dm code/modules/mob/new_player/preferences.dm icons/mob/items_lefthand.dmi icons/mob/items_righthand.dmi icons/mob/mask.dmi Signed-off-by: Cael_Aislinn <cael_aislinn@yahoo.com.au>
@@ -38,6 +38,7 @@
|
||||
#define FILE_DIR "sound/AI"
|
||||
#define FILE_DIR "sound/ambience"
|
||||
#define FILE_DIR "sound/effects"
|
||||
#define FILE_DIR "sound/effects/wind"
|
||||
#define FILE_DIR "sound/hallucinations"
|
||||
#define FILE_DIR "sound/items"
|
||||
#define FILE_DIR "sound/machines"
|
||||
@@ -188,7 +189,7 @@
|
||||
#include "code\defines\procs\captain_announce.dm"
|
||||
#include "code\defines\procs\command_alert.dm"
|
||||
#include "code\defines\procs\dbcore.dm"
|
||||
#include "code\defines\procs\statistics.dm"
|
||||
#include "code\defines\procs\sd_Alert.dm"
|
||||
#include "code\game\asteroid.dm"
|
||||
#include "code\game\atoms.dm"
|
||||
#include "code\game\atoms_movable.dm"
|
||||
@@ -428,6 +429,7 @@
|
||||
#include "code\game\objects\weapons.dm"
|
||||
#include "code\game\objects\closets\walllocker.dm"
|
||||
#include "code\game\objects\effects\aliens.dm"
|
||||
#include "code\game\objects\effects\barsign.dm"
|
||||
#include "code\game\objects\effects\biomass_rift.dm"
|
||||
#include "code\game\objects\effects\bump_teleporter.dm"
|
||||
#include "code\game\objects\effects\effect_system.dm"
|
||||
|
||||
@@ -88,6 +88,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
|
||||
|
||||
/datum/surgery_step/generic/cut_open
|
||||
required_tool = /obj/item/weapon/scalpel
|
||||
allowed_tools = list(/obj/item/weapon/shard, /obj/item/weapon/kitchenknife)
|
||||
|
||||
min_duration = 90
|
||||
max_duration = 110
|
||||
@@ -116,9 +117,12 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
|
||||
user.visible_message("\red [user]'s hand slips, slicing open [target]'s [affected.display_name] in a wrong spot with \the [tool]!", \
|
||||
"\red Your hand slips, slicing open [target]'s [affected.display_name] in a wrong spot with \the [tool]!")
|
||||
affected.createwound(CUT, 10)
|
||||
if (ishuman(user))
|
||||
user:bloody_hands(target, 0)
|
||||
|
||||
/datum/surgery_step/generic/clamp_bleeders
|
||||
required_tool = /obj/item/weapon/hemostat
|
||||
allowed_tools = list(/obj/item/weapon/cable_coil, /obj/item/weapon/mousetrap)
|
||||
|
||||
min_duration = 40
|
||||
max_duration = 60
|
||||
@@ -145,9 +149,12 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
|
||||
user.visible_message("\red [user]'s hand slips, tearing blood vessals and causing massive bleeding in [target]'s [affected.display_name] with the \[tool]!", \
|
||||
"\red Your hand slips, tearing blood vessels and causing massive bleeding in [target]'s [affected.display_name] with \the [tool]!",)
|
||||
affected.createwound(CUT, 10)
|
||||
if (ishuman(user))
|
||||
user:bloody_hands(target, 0)
|
||||
|
||||
/datum/surgery_step/generic/retract_skin
|
||||
required_tool = /obj/item/weapon/retractor
|
||||
allowed_tools = list(/obj/item/weapon/kitchen/utensil/fork)
|
||||
|
||||
min_duration = 30
|
||||
max_duration = 40
|
||||
@@ -181,6 +188,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
|
||||
user.visible_message(msg, self_msg)
|
||||
affected.open = 2
|
||||
spread_germs_to_organ(affected, user)
|
||||
if (prob(40)) user:bloody_hands(target, 0)
|
||||
|
||||
fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
var/datum/organ/external/affected = target.get_organ(target_zone)
|
||||
@@ -197,6 +205,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
|
||||
|
||||
/datum/surgery_step/generic/cauterize
|
||||
required_tool = /obj/item/weapon/cautery
|
||||
allowed_tools = list(/obj/item/weapon/weldingtool, /obj/item/clothing/mask/cigarette, /obj/item/weapon/lighter)
|
||||
|
||||
min_duration = 70
|
||||
max_duration = 100
|
||||
@@ -242,6 +251,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
|
||||
|
||||
/datum/surgery_step/appendectomy/cut_appendix
|
||||
required_tool = /obj/item/weapon/scalpel
|
||||
allowed_tools = list(/obj/item/weapon/shard, /obj/item/weapon/kitchenknife)
|
||||
|
||||
min_duration = 70
|
||||
max_duration = 90
|
||||
@@ -258,15 +268,19 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
|
||||
user.visible_message("\blue [user] has separated [target]'s appendix with \the [tool]." , \
|
||||
"\blue You have separated [target]'s appendix with \the [tool].")
|
||||
target.op_stage.appendix = 1
|
||||
if (ishuman(user) && prob(40)) user:bloody_hands(target, 0)
|
||||
|
||||
fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
var/datum/organ/external/groin = target.get_organ("groin")
|
||||
user.visible_message("\red [user]'s hand slips, slicing an artery inside [target]'s abdomen with \the [tool]!", \
|
||||
"\red Your hand slips, slicing an artery inside [target]'s abdomen with \the [tool]!")
|
||||
groin.createwound(CUT, 50)
|
||||
groin.createwound(CUT, 50, 1)
|
||||
if (ishuman(user))
|
||||
user:bloody_body(target)
|
||||
|
||||
/datum/surgery_step/appendectomy/remove_appendix
|
||||
required_tool = /obj/item/weapon/hemostat
|
||||
allowed_tools = list(/obj/item/weapon/wirecutters)
|
||||
|
||||
min_duration = 60
|
||||
max_duration = 80
|
||||
@@ -292,6 +306,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
|
||||
else
|
||||
new /obj/item/weapon/reagent_containers/food/snacks/appendix(get_turf(target))
|
||||
target.op_stage.appendix = 2
|
||||
if (ishuman(user) && prob(40)) user:bloody_hands(target, 0)
|
||||
|
||||
fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
var/datum/organ/external/affected = target.get_organ(target_zone)
|
||||
@@ -307,6 +322,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
|
||||
|
||||
/datum/surgery_step/fix_vein
|
||||
required_tool = /obj/item/weapon/FixOVein
|
||||
allowed_tools = list(/obj/item/weapon/cable_coil)
|
||||
|
||||
min_duration = 70
|
||||
max_duration = 90
|
||||
@@ -335,6 +351,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
|
||||
for(var/datum/wound/W in affected.wounds) if(W.internal)
|
||||
affected.wounds -= W
|
||||
affected.update_damages()
|
||||
if (ishuman(user) && prob(40)) user:bloody_hands(target, 0)
|
||||
|
||||
fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
var/datum/organ/external/affected = target.get_organ(target_zone)
|
||||
@@ -349,6 +366,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
|
||||
|
||||
/datum/surgery_step/glue_bone
|
||||
required_tool = /obj/item/weapon/bonegel
|
||||
allowed_tools = list(/obj/item/weapon/screwdriver)
|
||||
|
||||
min_duration = 50
|
||||
max_duration = 60
|
||||
@@ -370,6 +388,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
|
||||
"\blue You apply some [tool] to [target]'s bone in [affected.display_name] with \the [tool].")
|
||||
affected.stage = 1
|
||||
spread_germs_to_organ(affected, user)
|
||||
if (ishuman(user) && prob(80)) user:bloody_hands(target, 0)
|
||||
|
||||
fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
var/datum/organ/external/affected = target.get_organ(target_zone)
|
||||
@@ -378,6 +397,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
|
||||
|
||||
/datum/surgery_step/set_bone
|
||||
required_tool = /obj/item/weapon/bonesetter
|
||||
allowed_tools = list(/obj/item/weapon/wrench)
|
||||
|
||||
min_duration = 60
|
||||
max_duration = 70
|
||||
@@ -413,6 +433,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
|
||||
|
||||
/datum/surgery_step/mend_skull
|
||||
required_tool = /obj/item/weapon/bonesetter
|
||||
allowed_tools = list(/obj/item/weapon/wrench)
|
||||
|
||||
min_duration = 60
|
||||
max_duration = 70
|
||||
@@ -442,6 +463,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
|
||||
|
||||
/datum/surgery_step/finish_bone
|
||||
required_tool = /obj/item/weapon/bonegel
|
||||
allowed_tools = list(/obj/item/weapon/screwdriver)
|
||||
|
||||
min_duration = 50
|
||||
max_duration = 60
|
||||
@@ -464,6 +486,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
|
||||
affected.stage = 0
|
||||
affected.perma_injury = 0
|
||||
spread_germs_to_organ(affected, user)
|
||||
if (ishuman(user) && prob(80)) user:bloody_hands(target, 0)
|
||||
|
||||
fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
var/datum/organ/external/affected = target.get_organ(target_zone)
|
||||
@@ -485,6 +508,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
|
||||
|
||||
/datum/surgery_step/eye/cut_open
|
||||
required_tool = /obj/item/weapon/scalpel
|
||||
allowed_tools = list(/obj/item/weapon/shard, /obj/item/weapon/kitchenknife)
|
||||
|
||||
min_duration = 90
|
||||
max_duration = 110
|
||||
@@ -509,6 +533,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
|
||||
|
||||
/datum/surgery_step/eye/lift_eyes
|
||||
required_tool = /obj/item/weapon/retractor
|
||||
allowed_tools = list(/obj/item/weapon/kitchen/utensil/fork)
|
||||
|
||||
min_duration = 30
|
||||
max_duration = 40
|
||||
@@ -533,6 +558,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
|
||||
|
||||
/datum/surgery_step/eye/mend_eyes
|
||||
required_tool = /obj/item/weapon/hemostat
|
||||
allowed_tools = list(/obj/item/weapon/cable_coil, /obj/item/weapon/mousetrap)
|
||||
|
||||
min_duration = 80
|
||||
max_duration = 100
|
||||
@@ -557,6 +583,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
|
||||
|
||||
/datum/surgery_step/eye/cauterize
|
||||
required_tool = /obj/item/weapon/cautery
|
||||
allowed_tools = list(/obj/item/weapon/weldingtool, /obj/item/clothing/mask/cigarette, /obj/item/weapon/lighter)
|
||||
|
||||
min_duration = 70
|
||||
max_duration = 100
|
||||
@@ -598,6 +625,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
|
||||
|
||||
/datum/surgery_step/generic/cut_face
|
||||
required_tool = /obj/item/weapon/scalpel
|
||||
allowed_tools = list(/obj/item/weapon/shard, /obj/item/weapon/kitchenknife)
|
||||
|
||||
min_duration = 90
|
||||
max_duration = 110
|
||||
@@ -623,6 +651,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
|
||||
|
||||
/datum/surgery_step/face/mend_vocal
|
||||
required_tool = /obj/item/weapon/hemostat
|
||||
allowed_tools = list(/obj/item/weapon/cable_coil, /obj/item/weapon/mousetrap)
|
||||
|
||||
min_duration = 70
|
||||
max_duration = 90
|
||||
@@ -643,9 +672,13 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
|
||||
user.visible_message("\red [user]'s hand slips, clamping [target]'s trachea shut for a moment with \the [tool]!", \
|
||||
"\red Your hand slips, clamping [user]'s trachea shut for a moment with \the [tool]!")
|
||||
target.losebreath += 10
|
||||
if (ishuman(user))
|
||||
user:bloody_body(target)
|
||||
user:bloody_hands(target, 0)
|
||||
|
||||
/datum/surgery_step/face/fix_face
|
||||
required_tool = /obj/item/weapon/retractor
|
||||
allowed_tools = list(/obj/item/weapon/kitchen/utensil/fork)
|
||||
|
||||
min_duration = 80
|
||||
max_duration = 100
|
||||
@@ -670,6 +703,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
|
||||
|
||||
/datum/surgery_step/face/cauterize
|
||||
required_tool = /obj/item/weapon/cautery
|
||||
allowed_tools = list(/obj/item/weapon/weldingtool, /obj/item/clothing/mask/cigarette, /obj/item/weapon/lighter)
|
||||
|
||||
min_duration = 70
|
||||
max_duration = 100
|
||||
@@ -731,6 +765,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
|
||||
|
||||
/datum/surgery_step/brain/cut_brain
|
||||
required_tool = /obj/item/weapon/scalpel
|
||||
allowed_tools = list(/obj/item/weapon/shard, /obj/item/weapon/kitchenknife)
|
||||
|
||||
min_duration = 80
|
||||
max_duration = 100
|
||||
@@ -750,7 +785,10 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
|
||||
fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
user.visible_message("\red [user]'s hand slips, cutting a vein in [target]'s brain with \the [tool]!", \
|
||||
"\red Your hand slips, cutting a vein in [target]'s brain with \the [tool]!")
|
||||
target.apply_damage(50, BRUTE, "head")
|
||||
target.apply_damage(50, BRUTE, "head", 1)
|
||||
if (ishuman(user))
|
||||
user:bloody_body(target)
|
||||
user:bloody_hands(target, 0)
|
||||
|
||||
/datum/surgery_step/brain/saw_spine
|
||||
required_tool = /obj/item/weapon/circular_saw
|
||||
@@ -785,7 +823,10 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
|
||||
fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
user.visible_message("\red [user]'s hand slips, cutting a vein in [target]'s brain with \the [tool]!", \
|
||||
"\red Your hand slips, cutting a vein in [target]'s brain with \the [tool]!")
|
||||
target.apply_damage(30, BRUTE, "head")
|
||||
target.apply_damage(30, BRUTE, "head", 1)
|
||||
if (ishuman(user))
|
||||
user:bloody_body(target)
|
||||
user:bloody_hands(target, 0)
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////
|
||||
@@ -798,6 +839,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
|
||||
|
||||
/datum/surgery_step/metroid/cut_flesh
|
||||
required_tool = /obj/item/weapon/scalpel
|
||||
allowed_tools = list(/obj/item/weapon/shard, /obj/item/weapon/kitchenknife)
|
||||
|
||||
min_duration = 30
|
||||
max_duration = 50
|
||||
@@ -820,6 +862,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
|
||||
|
||||
/datum/surgery_step/metroid/cut_innards
|
||||
required_tool = /obj/item/weapon/scalpel
|
||||
allowed_tools = list(/obj/item/weapon/shard, /obj/item/weapon/kitchenknife)
|
||||
|
||||
min_duration = 30
|
||||
max_duration = 50
|
||||
@@ -887,6 +930,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
|
||||
|
||||
/datum/surgery_step/limb/cut
|
||||
required_tool = /obj/item/weapon/scalpel
|
||||
allowed_tools = list(/obj/item/weapon/shard, /obj/item/weapon/kitchenknife)
|
||||
|
||||
min_duration = 80
|
||||
max_duration = 100
|
||||
@@ -913,6 +957,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
|
||||
|
||||
/datum/surgery_step/limb/mend
|
||||
required_tool = /obj/item/weapon/retractor
|
||||
allowed_tools = list(/obj/item/weapon/kitchen/utensil/fork)
|
||||
|
||||
min_duration = 80
|
||||
max_duration = 100
|
||||
@@ -943,6 +988,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
|
||||
|
||||
/datum/surgery_step/limb/prepare
|
||||
required_tool = /obj/item/weapon/cautery
|
||||
allowed_tools = list(/obj/item/weapon/weldingtool, /obj/item/clothing/mask/cigarette, /obj/item/weapon/lighter)
|
||||
|
||||
min_duration = 60
|
||||
max_duration = 70
|
||||
@@ -1045,6 +1091,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
|
||||
|
||||
/datum/surgery_step/ribcage/retract_ribcage
|
||||
required_tool = /obj/item/weapon/retractor
|
||||
allowed_tools = list(/obj/item/weapon/crowbar)
|
||||
|
||||
min_duration = 30
|
||||
max_duration = 40
|
||||
@@ -1069,6 +1116,9 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
|
||||
var/datum/organ/external/affected = target.get_organ(target_zone)
|
||||
affected.fracture()
|
||||
|
||||
if (ishuman(user))
|
||||
user:bloody_hands(target, 0)
|
||||
|
||||
fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
var/msg = "\red [user]'s hand slips, breaking [target]'s ribcage!"
|
||||
var/self_msg = "\red Your hand slips, breaking [target]'s ribcage!"
|
||||
@@ -1078,6 +1128,7 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
|
||||
|
||||
/datum/surgery_step/ribcage/close_ribcage
|
||||
required_tool = /obj/item/weapon/retractor
|
||||
allowed_tools = list(/obj/item/weapon/crowbar)
|
||||
|
||||
min_duration = 20
|
||||
max_duration = 40
|
||||
@@ -1151,8 +1202,11 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
|
||||
for(var/datum/disease/alien_embryo in target.viruses)
|
||||
alien_embryo.cure()
|
||||
|
||||
if (ishuman(user)) user:bloody_hands(target, 0)
|
||||
|
||||
/datum/surgery_step/ribcage/fix_lungs
|
||||
required_tool = /obj/item/weapon/scalpel
|
||||
allowed_tools = list(/obj/item/weapon/shard, /obj/item/weapon/kitchenknife)
|
||||
|
||||
min_duration = 70
|
||||
max_duration = 90
|
||||
@@ -1170,10 +1224,14 @@ proc/spread_germs_to_organ(datum/organ/external/E, mob/living/carbon/human/user)
|
||||
user.visible_message("\blue [user] mends the rupture in [target]'s lungs with \the [tool].", \
|
||||
"\blue You mend the rupture in [target]'s lungs with \the [tool]." )
|
||||
affected.ruptured_lungs = 0
|
||||
if (ishuman(user) && prob(80)) user:bloody_hands(target, 0)
|
||||
|
||||
fail_step(mob/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
|
||||
var/datum/organ/external/chest/affected = target.get_organ("chest")
|
||||
user.visible_message("\red [user]'s hand slips, slicing an artery inside [target]'s chest with \the [tool]!", \
|
||||
"\red Your hand slips, slicing an artery inside [target]'s chest with \the [tool]!")
|
||||
affected.createwound(CUT, 20)
|
||||
if (ishuman(user))
|
||||
user:bloody_hands(target, 0)
|
||||
user:bloody_body(target)
|
||||
|
||||
|
||||
@@ -235,7 +235,6 @@ proc/airborne_can_reach(turf/source, turf/target)
|
||||
if(prob(1))
|
||||
majormutate()
|
||||
if(mob.reagents.has_reagent("spaceacillin"))
|
||||
mob.reagents.remove_reagent("spaceacillin",0.3)
|
||||
return
|
||||
if(mob.reagents.has_reagent("virusfood"))
|
||||
mob.reagents.remove_reagent("virusfood",0.1)
|
||||
|
||||
@@ -133,15 +133,16 @@ proc/Airflow(zone/A, zone/B)
|
||||
else
|
||||
connected_turfs |= C.B
|
||||
|
||||
//Get lists of things that can be thrown across the room for each zone.
|
||||
var/list/pplz = B.movables()
|
||||
var/list/otherpplz = A.movables()
|
||||
//Get lists of things that can be thrown across the room for each zone (assumes air is moving from zone B to zone A)
|
||||
var/list/air_sucked = B.movables()
|
||||
var/list/air_repelled = A.movables()
|
||||
if(n < 0)
|
||||
var/list/temporary_pplz = pplz
|
||||
pplz = otherpplz
|
||||
otherpplz = temporary_pplz
|
||||
//air is moving from zone A to zone B
|
||||
var/list/temporary_pplz = air_sucked
|
||||
air_sucked = air_repelled
|
||||
air_repelled = temporary_pplz
|
||||
|
||||
for(var/atom/movable/M in pplz)
|
||||
for(var/atom/movable/M in air_sucked)
|
||||
|
||||
if(M.last_airflow > world.time - vsc.airflow_delay) continue
|
||||
|
||||
@@ -166,7 +167,7 @@ proc/Airflow(zone/A, zone/B)
|
||||
spawn M.GotoAirflowDest(abs(n)/5)
|
||||
|
||||
//Do it again for the stuff in the other zone, making it fly away.
|
||||
for(var/atom/movable/M in otherpplz)
|
||||
for(var/atom/movable/M in air_repelled)
|
||||
|
||||
if(M.last_airflow > world.time - vsc.airflow_delay) continue
|
||||
|
||||
@@ -240,12 +241,15 @@ atom/movable
|
||||
if(airflow_dest == loc)
|
||||
step_away(src,loc)
|
||||
if(ismob(src))
|
||||
if(src:nodamage) return
|
||||
if(src:nodamage)
|
||||
return
|
||||
if(istype(src, /mob/living/carbon/human))
|
||||
if(istype(src, /mob/living/carbon/human))
|
||||
if(src:buckled) return
|
||||
if(src:buckled)
|
||||
return
|
||||
if(src:shoes)
|
||||
if(src:shoes.type == /obj/item/clothing/shoes/magboots && src:shoes.flags & NOSLIP) return
|
||||
if(src:shoes.type == /obj/item/clothing/shoes/magboots)
|
||||
if(src:shoes.flags & NOSLIP)
|
||||
return
|
||||
src << "\red You are sucked away by airflow!"
|
||||
var/airflow_falloff = 9 - ul_FalloffAmount(airflow_dest) //It's a fast falloff calc. Very useful.
|
||||
if(airflow_falloff < 1)
|
||||
@@ -266,9 +270,15 @@ atom/movable
|
||||
airflow_speed -= vsc.airflow_speed_decay
|
||||
if(airflow_speed > 7)
|
||||
if(airflow_time++ >= airflow_speed - 7)
|
||||
if(od)
|
||||
density = 0
|
||||
sleep(1 * tick_multiplier)
|
||||
else
|
||||
if(od)
|
||||
density = 0
|
||||
sleep(max(1,10-(airflow_speed+3)) * tick_multiplier)
|
||||
if(od)
|
||||
density = 1
|
||||
if ((!( src.airflow_dest ) || src.loc == src.airflow_dest))
|
||||
src.airflow_dest = locate(min(max(src.x + xo, 1), world.maxx), min(max(src.y + yo, 1), world.maxy), src.z)
|
||||
if ((src.x == 1 || src.x == world.maxx || src.y == 1 || src.y == world.maxy))
|
||||
@@ -276,7 +286,8 @@ atom/movable
|
||||
if(!istype(loc, /turf))
|
||||
return
|
||||
step_towards(src, src.airflow_dest)
|
||||
if(ismob(src) && src:client) src:client:move_delay = world.time + vsc.airflow_mob_slowdown
|
||||
if(ismob(src) && src:client)
|
||||
src:client:move_delay = world.time + vsc.airflow_mob_slowdown
|
||||
airflow_dest = null
|
||||
airflow_speed = 0
|
||||
airflow_time = 0
|
||||
@@ -295,12 +306,15 @@ atom/movable
|
||||
if(airflow_dest == loc)
|
||||
step_away(src,loc)
|
||||
if(ismob(src))
|
||||
if(src:nodamage) return
|
||||
if(src:nodamage)
|
||||
return
|
||||
if(istype(src, /mob/living/carbon/human))
|
||||
if(istype(src, /mob/living/carbon/human))
|
||||
if(src:buckled) return
|
||||
if(src:buckled)
|
||||
return
|
||||
if(src:shoes)
|
||||
if(src:shoes.type == /obj/item/clothing/shoes/magboots && src:shoes.flags & NOSLIP) return
|
||||
if(src:shoes.type == /obj/item/clothing/shoes/magboots)
|
||||
if(src:shoes.flags & NOSLIP)
|
||||
return
|
||||
src << "\red You are pushed away by airflow!"
|
||||
var/airflow_falloff = 9 - ul_FalloffAmount(airflow_dest) //It's a fast falloff calc. Very useful.
|
||||
if(airflow_falloff < 1)
|
||||
@@ -331,7 +345,8 @@ atom/movable
|
||||
if(!istype(loc, /turf))
|
||||
return
|
||||
step_towards(src, src.airflow_dest)
|
||||
if(ismob(src) && src:client) src:client:move_delay = world.time + vsc.airflow_mob_slowdown
|
||||
if(ismob(src) && src:client)
|
||||
src:client:move_delay = world.time + vsc.airflow_mob_slowdown
|
||||
airflow_dest = null
|
||||
airflow_speed = 0
|
||||
airflow_time = 0
|
||||
|
||||
@@ -16,6 +16,9 @@ zone
|
||||
last_update = 0
|
||||
progress = "nothing"
|
||||
|
||||
// To make sure you're not spammed to death by airflow sound effects
|
||||
tmp/playsound_cooldown = 0
|
||||
|
||||
//CREATION AND DELETION
|
||||
New(turf/start)
|
||||
. = ..()
|
||||
@@ -33,7 +36,7 @@ zone
|
||||
if(!istype(T,/turf/simulated))
|
||||
AddTurf(T)
|
||||
|
||||
//Generate the gas_mixture for use in this zone by using the average of the gases
|
||||
//Generate the gas_mixture for use in txhis zone by using the average of the gases
|
||||
//defined at startup.
|
||||
air = new
|
||||
var/members = contents.len
|
||||
@@ -161,6 +164,16 @@ zone/proc/process()
|
||||
RemoveTurf(T)
|
||||
if(unsimulated_tiles)
|
||||
var/moved_air = ShareSpace(air,unsimulated_tiles)
|
||||
|
||||
// Only play a sound effect every once in a while
|
||||
if(playsound_cooldown <= world.time)
|
||||
// Play a nice sound effect at one of the bordering turfs
|
||||
|
||||
playsound_cooldown = world.time + rand(30, 70)
|
||||
|
||||
var/turf/random_border = pick(contents)
|
||||
play_wind_sound(random_border, abs(moved_air))
|
||||
|
||||
if(moved_air > vsc.airflow_lightest_pressure)
|
||||
AirflowSpace(src)
|
||||
|
||||
@@ -239,7 +252,17 @@ zone/proc/process()
|
||||
for(var/zone/Z in connected_zones)
|
||||
if(air && Z.air)
|
||||
//Ensure we're not doing pointless calculations on equilibrium zones.
|
||||
if(abs(air.total_moles() - Z.air.total_moles()) > 0.1 || abs(air.temperature - Z.air.temperature) > 0.1)
|
||||
var/moles_delta = abs(air.total_moles() - Z.air.total_moles())
|
||||
if(moles_delta > 0.1)
|
||||
// Only play a sound effect every once in a while
|
||||
if(playsound_cooldown <= world.time)
|
||||
// Play a nice sound effect at one of the bordering turfs
|
||||
|
||||
playsound_cooldown = world.time + rand(30, 70)
|
||||
|
||||
var/turf/random_border = pick(contents)
|
||||
play_wind_sound(random_border, abs(moles_delta))
|
||||
if(moles_delta > 0.1 || abs(air.temperature - Z.air.temperature) > 0.1)
|
||||
if(abs(Z.air.return_pressure() - air.return_pressure()) > vsc.airflow_lightest_pressure)
|
||||
Airflow(src,Z)
|
||||
ShareRatio( air , Z.air , connected_zones[Z] )
|
||||
@@ -255,7 +278,7 @@ var/list/sharing_lookup_table = list(0.06, 0.11, 0.15, 0.18, 0.20, 0.21)
|
||||
proc/ShareRatio(datum/gas_mixture/A, datum/gas_mixture/B, connecting_tiles)
|
||||
//Shares a specific ratio of gas between mixtures using simple weighted averages.
|
||||
var
|
||||
ratio = 0.21
|
||||
ratio = 0.50
|
||||
|
||||
size = max(1,A.group_multiplier)
|
||||
share_size = max(1,B.group_multiplier)
|
||||
@@ -281,9 +304,6 @@ proc/ShareRatio(datum/gas_mixture/A, datum/gas_mixture/B, connecting_tiles)
|
||||
|
||||
temp_avg = (A.temperature * full_heat_capacity + B.temperature * s_full_heat_capacity) / (full_heat_capacity + s_full_heat_capacity)
|
||||
|
||||
if(sharing_lookup_table.len >= connecting_tiles) //6 or more interconnecting tiles will max at 42% of air moved per tick.
|
||||
ratio = sharing_lookup_table[connecting_tiles]
|
||||
|
||||
A.oxygen = max(0, (A.oxygen - oxy_avg) * (1-ratio) + oxy_avg )
|
||||
A.nitrogen = max(0, (A.nitrogen - nit_avg) * (1-ratio) + nit_avg )
|
||||
A.carbon_dioxide = max(0, (A.carbon_dioxide - co2_avg) * (1-ratio) + co2_avg )
|
||||
@@ -338,37 +358,34 @@ proc/ShareSpace(datum/gas_mixture/A, list/unsimulated_tiles)
|
||||
unsim_temperature += T.temperature/unsimulated_tiles.len
|
||||
|
||||
var
|
||||
ratio = 0.21
|
||||
// Depressurize very, very fast(it's fine since many rooms are internally multiple zones)
|
||||
ratio = 0.50
|
||||
|
||||
old_pressure = A.return_pressure()
|
||||
|
||||
size = max(1,A.group_multiplier)
|
||||
share_size = max(1,unsimulated_tiles.len)
|
||||
|
||||
full_oxy = A.oxygen * size
|
||||
full_nitro = A.nitrogen * size
|
||||
full_co2 = A.carbon_dioxide * size
|
||||
full_plasma = A.toxins * size
|
||||
//full_oxy = A.oxygen * size
|
||||
//full_nitro = A.nitrogen * size
|
||||
//full_co2 = A.carbon_dioxide * size
|
||||
//full_plasma = A.toxins * size
|
||||
|
||||
full_heat_capacity = A.heat_capacity() * size
|
||||
//full_heat_capacity = A.heat_capacity() * size
|
||||
|
||||
oxy_avg = (full_oxy + unsim_oxygen) / (size + share_size)
|
||||
nit_avg = (full_nitro + unsim_nitrogen) / (size + share_size)
|
||||
co2_avg = (full_co2 + unsim_co2) / (size + share_size)
|
||||
plasma_avg = (full_plasma + unsim_plasma) / (size + share_size)
|
||||
oxy_avg = unsim_oxygen//(full_oxy + unsim_oxygen) / (size + share_size)
|
||||
nit_avg = unsim_nitrogen//(full_nitro + unsim_nitrogen) / (size + share_size)
|
||||
co2_avg = unsim_co2//(full_co2 + unsim_co2) / (size + share_size)
|
||||
plasma_avg = unsim_plasma//(full_plasma + unsim_plasma) / (size + share_size)
|
||||
|
||||
temp_avg = (A.temperature * full_heat_capacity + unsim_temperature * unsim_heat_capacity) / (full_heat_capacity + unsim_heat_capacity)
|
||||
|
||||
if(sharing_lookup_table.len >= unsimulated_tiles.len) //6 or more interconnecting tiles will max at 42% of air moved per tick.
|
||||
ratio = sharing_lookup_table[unsimulated_tiles.len]
|
||||
ratio *= 2
|
||||
|
||||
A.oxygen = max(0, (A.oxygen - oxy_avg) * (1-ratio) + oxy_avg )
|
||||
A.nitrogen = max(0, (A.nitrogen - nit_avg) * (1-ratio) + nit_avg )
|
||||
A.carbon_dioxide = max(0, (A.carbon_dioxide - co2_avg) * (1-ratio) + co2_avg )
|
||||
A.toxins = max(0, (A.toxins - plasma_avg) * (1-ratio) + plasma_avg )
|
||||
|
||||
A.temperature = max(TCMB, (A.temperature - temp_avg) * (1-ratio) + temp_avg )
|
||||
// EXPERIMENTAL: Disable space being cold
|
||||
//A.temperature = max(TCMB, (A.temperature - temp_avg) * (1-ratio) + temp_avg )
|
||||
|
||||
for(var/datum/gas/G in A.trace_gases)
|
||||
var/G_avg = (G.moles*size + 0) / (size+share_size)
|
||||
@@ -458,6 +475,21 @@ zone/proc/Rebuild()
|
||||
if(istype(T) && T.zone && S.CanPass(null, T, 0, 0))
|
||||
T.zone.AddTurf(S)
|
||||
|
||||
proc/play_wind_sound(var/turf/random_border, var/n)
|
||||
if(random_border)
|
||||
var/windsound = 'sound/effects/wind/wind_2_1.ogg'
|
||||
switch(n)
|
||||
if(0 to 30)
|
||||
windsound = pick('sound/effects/wind/wind_2_1.ogg', 'sound/effects/wind/wind_2_2.ogg')
|
||||
if(31 to 40)
|
||||
windsound = pick('sound/effects/wind/wind_3_1.ogg')
|
||||
if(41 to 60)
|
||||
windsound = pick('sound/effects/wind/wind_4_1.ogg', 'sound/effects/wind/wind_4_2.ogg')
|
||||
if(61 to 1000000)
|
||||
windsound = pick('sound/effects/wind/wind_5_1.ogg')
|
||||
|
||||
playsound(random_border, windsound, 50, 1, 1)
|
||||
|
||||
//UNUSED
|
||||
/*
|
||||
zone/proc/connected_zones()
|
||||
|
||||
@@ -288,6 +288,13 @@ datum/shuttle_controller
|
||||
|
||||
if(1)
|
||||
|
||||
// Just before it leaves, close the damn doors!
|
||||
if(timeleft == 2 || timeleft == 1)
|
||||
var/area/start_location = locate(/area/shuttle/escape/station)
|
||||
for(var/obj/machinery/door/D in start_location)
|
||||
spawn(0)
|
||||
D.close()
|
||||
|
||||
if(timeleft>0)
|
||||
return 0
|
||||
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
var/access = null
|
||||
var/hidden = 0
|
||||
var/contraband = 0
|
||||
var/group
|
||||
|
||||
/datum/supply_packs/New()
|
||||
manifest += "<ul>"
|
||||
@@ -100,7 +101,9 @@
|
||||
/obj/item/weapon/reagent_containers/food/drinks/beer,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/beer,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/beer,
|
||||
/obj/item/weapon/reagent_containers/food/drinks/beer)
|
||||
/obj/item/weapon/reagent_containers/food/drinks/beer,
|
||||
/obj/item/weapon/cigpacket/dromedaryco,
|
||||
/obj/item/weapon/lipstick/random)
|
||||
cost = 20
|
||||
containertype = /obj/structure/closet/crate
|
||||
containername = "Party equipment"
|
||||
@@ -604,14 +607,85 @@
|
||||
manifest += "Contains any [num_contained] of:"
|
||||
..()
|
||||
|
||||
/datum/supply_packs/artscrafts
|
||||
name = "Arts and Crafts supplies"
|
||||
contains = list("/obj/item/weapon/storage/crayonbox",
|
||||
"/obj/item/weapon/camera_test",
|
||||
"/obj/item/weapon/camera_film",
|
||||
"/obj/item/weapon/camera_film",
|
||||
"/obj/item/weapon/storage/photo_album",
|
||||
"/obj/item/weapon/packageWrap",
|
||||
"/obj/item/weapon/reagent_containers/glass/paint/red",
|
||||
"/obj/item/weapon/reagent_containers/glass/paint/green",
|
||||
"/obj/item/weapon/reagent_containers/glass/paint/blue",
|
||||
"/obj/item/weapon/reagent_containers/glass/paint/yellow",
|
||||
"/obj/item/weapon/reagent_containers/glass/paint/violet",
|
||||
"/obj/item/weapon/reagent_containers/glass/paint/black",
|
||||
"/obj/item/weapon/reagent_containers/glass/paint/white",
|
||||
"/obj/item/weapon/reagent_containers/glass/paint/remover",
|
||||
"/obj/item/weapon/wrapping_paper",
|
||||
"/obj/item/weapon/wrapping_paper",
|
||||
"/obj/item/weapon/wrapping_paper",
|
||||
"/obj/item/weapon/contraband/poster")
|
||||
cost = 5
|
||||
containertype = "/obj/structure/closet/crate"
|
||||
containername = "Arts and Crafts crate"
|
||||
|
||||
|
||||
/datum/supply_packs/randomised/contraband
|
||||
num_contained = 5
|
||||
contains = list(/obj/item/weapon/contraband/poster,
|
||||
/obj/item/weapon/cigpacket/dromedaryco,
|
||||
/obj/item/weapon/lipstick/random)
|
||||
contains = list("/obj/item/seeds/bloodtomatoseed",
|
||||
"/obj/item/weapon/storage/pill_bottle/zoom",
|
||||
"/obj/item/weapon/storage/pill_bottle/happy",
|
||||
"/obj/item/weapon/reagent_containers/food/drinks/bottle/absinthe")
|
||||
name = "Contraband crate"
|
||||
cost = 30
|
||||
containertype = /obj/structure/closet/crate
|
||||
containername = "Contraband crate"
|
||||
containername = "Unlabeled crate"
|
||||
contraband = 1
|
||||
|
||||
/datum/supply_packs/boxes
|
||||
name = "Empty Box supplies"
|
||||
contains = list("/obj/item/weapon/storage/box",
|
||||
"/obj/item/weapon/storage/box",
|
||||
"/obj/item/weapon/storage/box",
|
||||
"/obj/item/weapon/storage/box",
|
||||
"/obj/item/weapon/storage/box",
|
||||
"/obj/item/weapon/storage/box",
|
||||
"/obj/item/weapon/storage/box",
|
||||
"/obj/item/weapon/storage/box",
|
||||
"/obj/item/weapon/storage/box",
|
||||
"/obj/item/weapon/storage/box",)
|
||||
cost = 5
|
||||
containertype = "/obj/structure/closet/crate"
|
||||
containername = "Empty Box crate"
|
||||
|
||||
/datum/supply_packs/surgery
|
||||
name = "Surgery crate"
|
||||
contains = list("/obj/item/weapon/cautery",
|
||||
"/obj/item/weapon/surgicaldrill",
|
||||
"/obj/item/clothing/mask/breath/medical",
|
||||
"/obj/item/weapon/tank/anesthetic",
|
||||
"/obj/item/weapon/FixOVein",
|
||||
"/obj/item/weapon/hemostat",
|
||||
"/obj/item/weapon/scalpel",
|
||||
"/obj/item/weapon/surgical_tool/bonegel",
|
||||
"/obj/item/weapon/retractor",
|
||||
"/obj/item/weapon/surgical_tool/bonesetter",
|
||||
"/obj/item/weapon/circular_saw")
|
||||
cost = 25
|
||||
containertype = "/obj/structure/closet/crate/secure"
|
||||
containername = "Surgery crate"
|
||||
access = access_medical
|
||||
group = "Medical / Science"
|
||||
|
||||
/datum/supply_packs/sterile
|
||||
name = "Sterile equipment crate"
|
||||
contains = list("/obj/item/clothing/under/rank/medical/green",
|
||||
"/obj/item/clothing/under/rank/medical/green",
|
||||
"/obj/item/weapon/storage/stma_kit",
|
||||
"/obj/item/weapon/storage/lglo_kit")
|
||||
cost = 10
|
||||
containertype = "/obj/structure/closet/crate"
|
||||
containername = "Sterile equipment crate"
|
||||
group = "Medical / Science"
|
||||
|
||||
@@ -60,6 +60,7 @@
|
||||
var/list/civ = new()
|
||||
var/list/bot = new()
|
||||
var/list/misc = new()
|
||||
var/list/isactive = new()
|
||||
|
||||
var/dat = {"
|
||||
<head><style>
|
||||
@@ -71,7 +72,7 @@
|
||||
.manifest tr.alt td {[monochrome?"border-top-width: 2px":"background-color: #DEF"]}
|
||||
</style></head>
|
||||
<table class="manifest">
|
||||
<tr class='head'><th>Name</th><th>Rank</th></tr>
|
||||
<tr class='head'><th>Name</th><th>Rank</th><th>Activity</th></tr>
|
||||
"}
|
||||
var/even = 0
|
||||
|
||||
@@ -81,6 +82,17 @@
|
||||
var/rank = t.fields["rank"]
|
||||
var/real_rank = t.fields["real_rank"]
|
||||
|
||||
var/active = 0
|
||||
for(var/mob/M in player_list) if(M.name == name)
|
||||
// For dead ones, have a chance to get their status wrong
|
||||
if(M.stat == 2)
|
||||
active = M.x % 2 // Should be good enough, avoids their status flipping constantly
|
||||
break
|
||||
else if(M.client && M.client.inactivity <= 10 * 60 * 10)
|
||||
active = 1
|
||||
break
|
||||
isactive[name] = active ? "Active" : "SSD"
|
||||
|
||||
//world << "[name]: [rank]"
|
||||
|
||||
if(real_rank in command_positions)
|
||||
@@ -108,46 +120,46 @@
|
||||
misc[name] = rank
|
||||
|
||||
if(heads.len > 0)
|
||||
dat += "<tr><th colspan=2>Heads</th></tr>"
|
||||
dat += "<tr><th colspan=3>Heads</th></tr>"
|
||||
for(name in heads)
|
||||
dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[heads[name]]</td></tr>"
|
||||
dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[heads[name]]</td><td>[isactive[name]]</td></tr>"
|
||||
even = !even
|
||||
if(sec.len > 0)
|
||||
dat += "<tr><th colspan=2>Security</th></tr>"
|
||||
dat += "<tr><th colspan=3>Security</th></tr>"
|
||||
for(name in sec)
|
||||
dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[sec[name]]</td></tr>"
|
||||
dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[sec[name]]</td><td>[isactive[name]]</td></tr>"
|
||||
even = !even
|
||||
if(eng.len > 0)
|
||||
dat += "<tr><th colspan=2>Engineering</th></tr>"
|
||||
dat += "<tr><th colspan=3>Engineering</th></tr>"
|
||||
for(name in eng)
|
||||
dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[eng[name]]</td></tr>"
|
||||
dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[eng[name]]</td><td>[isactive[name]]</td></tr>"
|
||||
even = !even
|
||||
if(med.len > 0)
|
||||
dat += "<tr><th colspan=2>Medical</th></tr>"
|
||||
dat += "<tr><th colspan=3>Medical</th></tr>"
|
||||
for(name in med)
|
||||
dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[med[name]]</td></tr>"
|
||||
dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[med[name]]</td><td>[isactive[name]]</td></tr>"
|
||||
even = !even
|
||||
if(sci.len > 0)
|
||||
dat += "<tr><th colspan=2>Science</th></tr>"
|
||||
dat += "<tr><th colspan=3>Science</th></tr>"
|
||||
for(name in sci)
|
||||
dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[sci[name]]</td></tr>"
|
||||
dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[sci[name]]</td><td>[isactive[name]]</td></tr>"
|
||||
even = !even
|
||||
if(civ.len > 0)
|
||||
dat += "<tr><th colspan=2>Civilian</th></tr>"
|
||||
dat += "<tr><th colspan=3>Civilian</th></tr>"
|
||||
for(name in civ)
|
||||
dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[civ[name]]</td></tr>"
|
||||
dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[civ[name]]</td><td>[isactive[name]]</td></tr>"
|
||||
even = !even
|
||||
// in case somebody is insane and added them to the manifest, why not
|
||||
if(bot.len > 0)
|
||||
dat += "<tr><th colspan=2>Silicon</th></tr>"
|
||||
dat += "<tr><th colspan=3>Silicon</th></tr>"
|
||||
for(name in bot)
|
||||
dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[bot[name]]</td></tr>"
|
||||
dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[bot[name]]</td><td>[isactive[name]]</td></tr>"
|
||||
even = !even
|
||||
// misc guys
|
||||
if(misc.len > 0)
|
||||
dat += "<tr><th colspan=2>Miscellaneous</th></tr>"
|
||||
dat += "<tr><th colspan=3>Miscellaneous</th></tr>"
|
||||
for(name in misc)
|
||||
dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[misc[name]]</td></tr>"
|
||||
dat += "<tr[even ? " class='alt'" : ""]><td>[name]</td><td>[misc[name]]</td><td>[isactive[name]]</td></tr>"
|
||||
even = !even
|
||||
|
||||
|
||||
|
||||
@@ -1488,6 +1488,7 @@
|
||||
m_amt = 12000
|
||||
origin_tech = "materials=1"
|
||||
attack_verb = list("cleaved", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
|
||||
sharp = 1
|
||||
|
||||
/obj/item/weapon/butch/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
|
||||
playsound(loc, 'sound/weapons/bladeslice.ogg', 50, 1, -1)
|
||||
|
||||
168
code/defines/procs/sd_Alert.dm
Normal file
@@ -0,0 +1,168 @@
|
||||
/* sd_Alert library
|
||||
by Shadowdarke (shadowdarke@byond.com)
|
||||
|
||||
sd_Alert() is a powerful and flexible alternative to the built in BYOND
|
||||
alert() proc. sd_Alert offers timed popups, unlimited buttons, custom
|
||||
appearance, and even the option to popup without stealing keyboard focus
|
||||
from the map or command line.
|
||||
|
||||
Please see demo.dm for detailed examples.
|
||||
|
||||
FORMAT
|
||||
sd_Alert(who, message, title, buttons, default, duration, unfocus, \
|
||||
size, table, style, tag, select, flags)
|
||||
|
||||
ARGUMENTS
|
||||
who - the client or mob to display the alert to.
|
||||
message - text message to display
|
||||
title - title of the alert box
|
||||
buttons - list of buttons
|
||||
Default Value: list("Ok")
|
||||
default - default button selestion
|
||||
Default Value: the first button in the list
|
||||
duration - the number of ticks before this alert expires. If not
|
||||
set, the alert lasts until a button is clicked.
|
||||
Default Value: 0 (unlimited)
|
||||
unfocus - if this value is set, the popup will not steal keyboard
|
||||
focus from the map or command line.
|
||||
Default Value: 1 (do not take focus)
|
||||
size - size of the popup window in px
|
||||
Default Value: "300x200"
|
||||
table - optional parameters for the HTML table in the alert
|
||||
Default Value: "width=100% height=100%" (fill the window)
|
||||
style - optional style sheet information
|
||||
tag - lets you specify a certain tag for this sd_Alert so you may manipulate it
|
||||
externally. (i.e. force the alert to close, change options and redisplay,
|
||||
reuse the same window, etc.)
|
||||
select - if set, the buttons will be replaced with a selection box with a number of
|
||||
lines displayed equal to this value.
|
||||
Default value: 0 (use buttons)
|
||||
flags - optional flags effecting the alert display. These flags may be ORed (|)
|
||||
together for multiple effects.
|
||||
SD_ALERT_SCROLL = display a scrollbar
|
||||
SD_ALERT_SELECT_MULTI = forces selection box display (instead of
|
||||
buttons) allows the user to select multiple
|
||||
choices.
|
||||
SD_ALERT_LINKS = display each choice as a plain text link.
|
||||
Any selection box style overrides this flag.
|
||||
SD_ALERT_NOVALIDATE = don't validate responses
|
||||
Default value: SD_ALERT_SCROLL
|
||||
(button display with scroll bar, validate responses)
|
||||
RETURNS
|
||||
The text of the selected button, or null if the alert duration expired
|
||||
without a button click.
|
||||
|
||||
Version 1 changes (from version 0):
|
||||
* Added the tag, select, and flags arguments, thanks to several suggestions from Foomer.
|
||||
* Split the sd_Alert/Alert() proc into New(), Display(), and Response() to allow more
|
||||
customization by developers. Primarily developers would want to use Display() to change
|
||||
the display of active tagged windows
|
||||
|
||||
*/
|
||||
|
||||
|
||||
#define SD_ALERT_SCROLL 1
|
||||
#define SD_ALERT_SELECT_MULTI 2
|
||||
#define SD_ALERT_LINKS 4
|
||||
#define SD_ALERT_NOVALIDATE 8
|
||||
|
||||
proc/sd_Alert(client/who, message, title, buttons = list("Ok"),\
|
||||
default, duration = 0, unfocus = 1, size = "300x200", \
|
||||
table = "width=100% height=100%", style, tag, select, flags = SD_ALERT_SCROLL)
|
||||
|
||||
if(ismob(who))
|
||||
var/mob/M = who
|
||||
who = M.client
|
||||
if(!istype(who)) CRASH("sd_Alert: Invalid target:[who] (\ref[who])")
|
||||
|
||||
var/sd_alert/T = locate(tag)
|
||||
if(T)
|
||||
if(istype(T)) del(T)
|
||||
else CRASH("sd_Alert: tag \"[tag]\" is already in use by datum '[T]' (type: [T.type])")
|
||||
T = new(who, tag)
|
||||
if(duration)
|
||||
spawn(duration)
|
||||
if(T) del(T)
|
||||
return
|
||||
T.Display(message,title,buttons,default,unfocus,size,table,style,select,flags)
|
||||
. = T.Response()
|
||||
|
||||
sd_alert
|
||||
var
|
||||
client/target
|
||||
response
|
||||
list/validation
|
||||
|
||||
Del()
|
||||
target << browse(null,"window=\ref[src]")
|
||||
..()
|
||||
|
||||
New(who, tag)
|
||||
..()
|
||||
target = who
|
||||
src.tag = tag
|
||||
|
||||
Topic(href,params[])
|
||||
if(usr.client != target) return
|
||||
response = params["clk"]
|
||||
|
||||
proc/Display(message,title,list/buttons,default,unfocus,size,table,style,select,flags)
|
||||
if(unfocus) spawn() target << browse(null,null)
|
||||
if(istext(buttons)) buttons = list(buttons)
|
||||
if(!default) default = buttons[1]
|
||||
if(!(flags & SD_ALERT_NOVALIDATE)) validation = buttons.Copy()
|
||||
|
||||
var/html = {"<head><title>[title]</title>[style]<script>\
|
||||
function c(x) {document.location.href='BYOND://?src=\ref[src];'+x;}\
|
||||
</script></head><body onLoad="fcs.focus();"\
|
||||
[(flags&SD_ALERT_SCROLL)?"":" scroll=no"]><table [table]><tr>\
|
||||
<td>[message]</td></tr><tr><th>"}
|
||||
|
||||
if(select || (flags & SD_ALERT_SELECT_MULTI)) // select style choices
|
||||
html += {"<FORM ID=fcs ACTION='BYOND://?' METHOD=GET>\
|
||||
<INPUT TYPE=HIDDEN NAME=src VALUE='\ref[src]'>
|
||||
<SELECT NAME=clk SIZE=[select]\
|
||||
[(flags & SD_ALERT_SELECT_MULTI)?" MULTIPLE":""]>"}
|
||||
for(var/b in buttons)
|
||||
html += "<OPTION[(b == default)?" SELECTED":""]>\
|
||||
[html_encode(b)]</OPTION>"
|
||||
html += "</SELECT><BR><INPUT TYPE=SUBMIT VALUE=Submit></FORM>"
|
||||
else if(flags & SD_ALERT_LINKS) // text link style
|
||||
for(var/b in buttons)
|
||||
var/list/L = list()
|
||||
L["clk"] = b
|
||||
var/html_string=list2params(L)
|
||||
var/focus
|
||||
if(b == default) focus = " ID=fcs"
|
||||
html += "<A[focus] href=# onClick=\"c('[html_string]')\">[html_encode(b)]</A>\
|
||||
<BR>"
|
||||
else // button style choices
|
||||
for(var/b in buttons)
|
||||
var/list/L = list()
|
||||
L["clk"] = b
|
||||
var/html_string=list2params(L)
|
||||
var/focus
|
||||
if(b == default) focus = " ID=fcs"
|
||||
html += "<INPUT[focus] TYPE=button VALUE='[html_encode(b)]' \
|
||||
onClick=\"c('[html_string]')\"> "
|
||||
|
||||
html += "</th></tr></table></body>"
|
||||
|
||||
target << browse(html,"window=\ref[src];size=[size];can_close=0")
|
||||
|
||||
proc/Response()
|
||||
var/validated
|
||||
while(!validated)
|
||||
while(target && !response) // wait for a response
|
||||
sleep(2)
|
||||
|
||||
if(response && validation)
|
||||
if(istype(response, /list))
|
||||
var/list/L = response - validation
|
||||
if(L.len) response = null
|
||||
else validated = 1
|
||||
else if(response in validation) validated = 1
|
||||
else response=null
|
||||
else validated = 1
|
||||
spawn(2) del(src)
|
||||
return response
|
||||
@@ -10,24 +10,75 @@
|
||||
dust_swarm("weak")*/
|
||||
if (!event)
|
||||
//CARN: checks to see if random events are enabled.
|
||||
if(config.allow_random_events && prob(eventchance))
|
||||
event()
|
||||
hadevent = 1
|
||||
if(config.allow_random_events)
|
||||
hadevent = event()
|
||||
else
|
||||
Holiday_Random_Event()
|
||||
else
|
||||
event = 0
|
||||
sleep(2400)
|
||||
|
||||
// Doesn't necessarily trigger an event, but might. Returns 1 if it did.
|
||||
/proc/event()
|
||||
event = 1
|
||||
if(!sent_ninja_to_station)
|
||||
choose_space_ninja()
|
||||
return
|
||||
|
||||
var/eventNumbersToPickFrom = list(1,2,4,5,6,7,8,9,10,11,12,13,14, 15) //so ninjas don't cause "empty" events.
|
||||
var/minutes_passed = world.time/600
|
||||
|
||||
if((world.time/10)>=3600 && toggle_space_ninja && !sent_ninja_to_station)//If an hour has passed, relatively speaking. Also, if ninjas are allowed to spawn and if there is not already a ninja for the round.
|
||||
eventNumbersToPickFrom += 3
|
||||
switch(pick(eventNumbersToPickFrom))
|
||||
if(1)
|
||||
var/engineer_count = number_active_with_role("Engineer")
|
||||
var/security_count = number_active_with_role("Security")
|
||||
var/medical_count = number_active_with_role("Medical")
|
||||
var/AI_count = number_active_with_role("AI")
|
||||
|
||||
// Maps event names to event chances
|
||||
// For each chance, 100 represents "normal likelihood", anything below 100 is "reduced likelihood", anything above 100 is "increased likelihood"
|
||||
var/list/possibleEvents = list()
|
||||
|
||||
// Check for additional possible events
|
||||
possibleEvents["Carp"] = 50 + 50 * engineer_count
|
||||
possibleEvents["Lights"] = 100
|
||||
possibleEvents["Communications"] = 50 + 50 * AI_count
|
||||
possibleEvents["Alien"] = 10
|
||||
if(AI_count >= 1)
|
||||
possibleEvents["Ion Storm"] = AI_count * 50 + engineer_count * 10
|
||||
if(engineer_count >= 1 && minutes_passed >= 30) // Give engineers time to set up engine
|
||||
possibleEvents["Meteor"] = 80 * engineer_count
|
||||
possibleEvents["Blob"] = 30 * engineer_count
|
||||
possibleEvents["Spacevine"] = 30 * engineer_count
|
||||
if(medical_count >= 1)
|
||||
possibleEvents["Radiation"] = medical_count * 100
|
||||
possibleEvents["Virus"] = medical_count * 50
|
||||
possibleEvents["Appendicitis"] = medical_count * 50
|
||||
if(security_count >= 1)
|
||||
possibleEvents["Prison Break"] = security_count * 50
|
||||
possibleEvents["Space Ninja"] = security_count * 10 // very low chance for space ninja event
|
||||
|
||||
var/picked_event = pick(possibleEvents)
|
||||
var/chance = possibleEvents[picked_event]
|
||||
|
||||
var/base_chance = 0.4
|
||||
switch(player_list.len)
|
||||
if(5 to 10)
|
||||
base_chance = 0.6
|
||||
if(11 to 15)
|
||||
base_chance = 0.7
|
||||
if(16 to 20)
|
||||
base_chance = 0.8
|
||||
if(21 to 25)
|
||||
base_chance = 0.9
|
||||
if(26 to 30)
|
||||
base_chance = 1.0
|
||||
if(30 to 100000)
|
||||
base_chance = 1.1
|
||||
|
||||
// Trigger the event based on how likely it currently is.
|
||||
if(!prob(chance * eventchance * base_chance / 100)) // "normal" event chance at 20 players
|
||||
return 0
|
||||
|
||||
switch(picked_event)
|
||||
if("Meteor")
|
||||
command_alert("Meteors have been detected on collision course with the station.", "Meteor Alert")
|
||||
world << sound('sound/AI/meteors.ogg')
|
||||
spawn(100)
|
||||
@@ -36,33 +87,34 @@
|
||||
spawn(700)
|
||||
meteor_wave()
|
||||
spawn_meteors()
|
||||
if(4)
|
||||
if("Blob")
|
||||
mini_blob_event()
|
||||
|
||||
if(5)
|
||||
if("Space Ninja")
|
||||
//Handled in space_ninja.dm. Doesn't announce arrival, all sneaky-like.
|
||||
choose_space_ninja()
|
||||
if("Radiation")
|
||||
high_radiation_event()
|
||||
if(6)
|
||||
if("Virus")
|
||||
viral_outbreak()
|
||||
if(7)
|
||||
if(prob(10))
|
||||
if("Alien")
|
||||
alien_infestation()
|
||||
if(8)
|
||||
if("Prison Break")
|
||||
prison_break()
|
||||
if(9)
|
||||
if("Carp")
|
||||
carp_migration()
|
||||
/*if(10)
|
||||
immovablerod()*/
|
||||
if(11)
|
||||
if("Lights")
|
||||
lightsout(1,2)
|
||||
if(12)
|
||||
if("Appendicitis")
|
||||
appendicitis()
|
||||
if(13)
|
||||
if("Ion Storm")
|
||||
IonStorm()
|
||||
if(14)
|
||||
if("Spacevine")
|
||||
spacevine_infestation()
|
||||
if(15)
|
||||
if("Communications")
|
||||
communications_blackout()
|
||||
|
||||
return 1
|
||||
|
||||
/proc/communications_blackout(var/silent = 1)
|
||||
|
||||
if(!silent)
|
||||
@@ -170,61 +222,16 @@
|
||||
break
|
||||
|
||||
/proc/viral_outbreak(var/virus = null)
|
||||
// command_alert("Confirmed outbreak of level 7 viral biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert")
|
||||
// world << sound('sound/AI/outbreak7.ogg')
|
||||
var/virus_type
|
||||
if(!virus)
|
||||
virus_type = pick(/datum/disease/dnaspread,/datum/disease/flu,/datum/disease/cold,/datum/disease/brainrot,/datum/disease/magnitis,/datum/disease/pierrot_throat)
|
||||
else
|
||||
switch(virus)
|
||||
if("fake gbs")
|
||||
virus_type = /datum/disease/fake_gbs
|
||||
if("gbs")
|
||||
virus_type = /datum/disease/gbs
|
||||
if("magnitis")
|
||||
virus_type = /datum/disease/magnitis
|
||||
if("rhumba beat")
|
||||
virus_type = /datum/disease/rhumba_beat
|
||||
if("brain rot")
|
||||
virus_type = /datum/disease/brainrot
|
||||
if("cold")
|
||||
virus_type = /datum/disease/cold
|
||||
if("retrovirus")
|
||||
virus_type = /datum/disease/dnaspread
|
||||
if("flu")
|
||||
virus_type = /datum/disease/flu
|
||||
// if("t-virus")
|
||||
// virus_type = /datum/disease/t_virus
|
||||
if("pierrot's throat")
|
||||
virus_type = /datum/disease/pierrot_throat
|
||||
for(var/mob/living/carbon/human/H in living_mob_list)
|
||||
|
||||
var/foundAlready = 0 // don't infect someone that already has the virus
|
||||
for(var/datum/disease/D in H.viruses)
|
||||
foundAlready = 1
|
||||
if(H.stat == 2 || foundAlready)
|
||||
for(var/mob/living/carbon/human/H in world)
|
||||
if((H.virus2) || (H.stat == 2) || prob(30))
|
||||
continue
|
||||
|
||||
if(virus_type == /datum/disease/dnaspread) //Dnaspread needs strain_data set to work.
|
||||
if((!H.dna) || (H.sdisabilities & BLIND)) //A blindness disease would be the worst.
|
||||
continue
|
||||
var/datum/disease/dnaspread/D = new
|
||||
D.strain_data["name"] = H.real_name
|
||||
D.strain_data["UI"] = H.dna.uni_identity
|
||||
D.strain_data["SE"] = H.dna.struc_enzymes
|
||||
D.carrier = 1
|
||||
D.holder = H
|
||||
D.affected_mob = H
|
||||
H.viruses += D
|
||||
infect_mob_random_lesser(H)
|
||||
break
|
||||
else
|
||||
var/datum/disease/D = new virus_type
|
||||
D.carrier = 1
|
||||
D.holder = H
|
||||
D.affected_mob = H
|
||||
H.viruses += D
|
||||
break
|
||||
spawn(rand(1500, 3000)) //Delayed announcements to keep the crew on their toes.
|
||||
|
||||
command_alert("An unknown virus has been detected onboard the ship.", "Virus Alert")
|
||||
|
||||
spawn(rand(0, 3000)) //Delayed announcements to keep the crew on their toes.
|
||||
command_alert("Confirmed outbreak of level 7 viral biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert")
|
||||
world << sound('sound/AI/outbreak7.ogg')
|
||||
|
||||
@@ -483,3 +490,38 @@ Would like to add a law like "Law x is _______" where x = a number, and _____ is
|
||||
|
||||
world << "Ion Storm Main Done"
|
||||
*/
|
||||
|
||||
// Returns how many characters are currently active(not logged out, not AFK for more than 10 minutes)
|
||||
// with a specific role.
|
||||
// Note that this isn't sorted by department, because e.g. having a roboticist shouldn't make meteors spawn.
|
||||
proc/number_active_with_role(role)
|
||||
var/count = 0
|
||||
for(var/mob/M in player_list)
|
||||
if(!M.client || M.client.inactivity > 10 * 10 * 60) // longer than 10 minutes AFK counts them as inactive
|
||||
continue
|
||||
switch(role)
|
||||
if("Engineer")
|
||||
if(istype(M, /mob/living/silicon/robot) && M:module && M:module.name == "engineering robot module")
|
||||
count++
|
||||
if(M.mind.assigned_role in list("Chief Engineer", "Station Engineer"))
|
||||
count++
|
||||
if("Medical")
|
||||
if(istype(M, /mob/living/silicon/robot) && M:module && M:module.name == "medical robot module")
|
||||
count++
|
||||
if(M.mind.assigned_role in list("Chief Medical Officer", "Medical Doctor"))
|
||||
count++
|
||||
if("Security")
|
||||
if(istype(M, /mob/living/silicon/robot) && M:module && M:module.name == "security robot module")
|
||||
count++
|
||||
if(M.mind.assigned_role in security_positions)
|
||||
count++
|
||||
if("Scientist")
|
||||
if(M.mind.assigned_role in list("Research Director", "Scientist"))
|
||||
count++
|
||||
if("AI")
|
||||
if(M.mind.assigned_role == "AI")
|
||||
count++
|
||||
if("Cyborg")
|
||||
if(M.mind.assigned_role == "Cyborg")
|
||||
count++
|
||||
return count
|
||||
@@ -93,15 +93,34 @@ When I already created about 4 new objectives, this doesn't seem terribly import
|
||||
/var/global/toggle_space_ninja = 1//If ninjas can spawn or not.
|
||||
/var/global/sent_ninja_to_station = 0//If a ninja is already on the station.
|
||||
|
||||
var/ninja_selection_id = 1
|
||||
var/ninja_selection_active = 0
|
||||
var/ninja_confirmed_selection = 0
|
||||
/proc/choose_space_ninja()
|
||||
var/list/candidates = list() //list of candidate keys
|
||||
for(var/mob/dead/observer/G in player_list)
|
||||
if(G.client && ((G.client.inactivity/10)/60) <= 5 && G.client.be_spaceninja)
|
||||
if(!(G.mind && G.mind.current && G.mind.current.stat != DEAD))
|
||||
candidates += G
|
||||
if(!candidates.len) return
|
||||
candidates = shuffle(candidates)//Incorporating Donkie's list shuffle
|
||||
|
||||
/proc/space_ninja_arrival(var/assign_key = null, var/assign_mission = null)
|
||||
|
||||
if(ninja_selection_active)
|
||||
usr << "\red Ninja selection already in progress. Please wait until it ends."
|
||||
return
|
||||
//loop over all viable candidates, giving them a popup asking if they want to be space ninja
|
||||
var/mob/dead/observer/accepted_ghost
|
||||
while(candidates.len && !accepted_ghost)
|
||||
//ask a different random candidate
|
||||
var/mob/dead/observer/G = pick(candidates)
|
||||
//give the popup a 30 second timeout in case the player is AFK
|
||||
if(sd_Alert(G, "A space ninja is about to spawn. Would you like to play as the ninja?", "Space Ninja", list("Yes","No"), "Yes", 300, 1, "350x125") == "Yes")
|
||||
accepted_ghost = G
|
||||
else
|
||||
candidates -= G
|
||||
|
||||
if(accepted_ghost)
|
||||
//someone accepted
|
||||
space_ninja_arrival(accepted_ghost)
|
||||
|
||||
/proc/space_ninja_arrival(var/mob/dead/observer/G)
|
||||
if(!G)
|
||||
return choose_space_ninja()
|
||||
|
||||
var/datum/game_mode/current_mode = ticker.mode
|
||||
var/datum/mind/current_mind
|
||||
@@ -146,24 +165,12 @@ Malf AIs/silicons aren't added. Monkeys aren't added. Messes with objective comp
|
||||
if(L.name == "ninjaspawn")
|
||||
spawn_list.Add(L)
|
||||
|
||||
if(!spawn_list.len)
|
||||
for(var/obj/effect/landmark/L in landmarks_list)
|
||||
if(L.name == "carpspawn")
|
||||
spawn_list.Add(L)
|
||||
|
||||
var/ninja_key = null
|
||||
|
||||
if(assign_key)
|
||||
ninja_key = assign_key
|
||||
else
|
||||
|
||||
var/list/candidates = list() //list of candidate keys
|
||||
for(var/mob/dead/observer/G in player_list)
|
||||
if(G.client && !G.client.holder && ((G.client.inactivity/10)/60) <= 5)
|
||||
if(!(G.mind && G.mind.current && G.mind.current.stat != DEAD))
|
||||
candidates += G.key
|
||||
if(!candidates.len) return
|
||||
candidates = shuffle(candidates)//Incorporating Donkie's list shuffle
|
||||
//The ninja will be created on the right spawn point or at late join.
|
||||
var/mob/living/carbon/human/new_ninja = create_space_ninja(pick(spawn_list.len ? spawn_list : latejoin ))
|
||||
new_ninja.key = G.ckey
|
||||
new_ninja.wear_suit:randomize_param()//Give them a random set of suit parameters.
|
||||
new_ninja.internal = new_ninja.s_store //So the poor ninja has something to breath when they spawn in spess.
|
||||
new_ninja.internals.icon_state = "internal1"
|
||||
|
||||
ninja_key = pick(candidates)
|
||||
|
||||
|
||||
@@ -318,6 +318,8 @@ Whitespace:Seperator;
|
||||
if(applicant)
|
||||
candidates += applicant
|
||||
drafted.Remove(applicant)
|
||||
log_admin("[applicant.key] drafted into antagonist role against their preferences.")
|
||||
message_admins("[applicant.key] drafted into antagonist role against their preferences.")
|
||||
|
||||
else // Not enough scrubs, ABORT ABORT ABORT
|
||||
break
|
||||
|
||||
@@ -148,18 +148,6 @@ var/global/datum/controller/gameticker/ticker
|
||||
spawn(3000)
|
||||
statistic_cycle() // Polls population totals regularly and stores them in an SQL DB -- TLE
|
||||
|
||||
//setup vermin spawn areas
|
||||
var/list/vermin_spawn_areas = list("/area/maintenance","/area/mine/maintenance","/area/crew_quarters/locker/locker_toilet","/area/crew_quarters/toilet")
|
||||
vermin_spawn_turfs = new/list()
|
||||
for(var/area_text in vermin_spawn_areas)
|
||||
var/area_base_type = text2path(area_text)
|
||||
for(var/area in typesof(area_base_type))
|
||||
var/list/area_turfs = get_area_turfs(area)
|
||||
for(var/turf/T in area_turfs)
|
||||
if(T.density)
|
||||
area_turfs -= T
|
||||
vermin_spawn_turfs.Add(area_turfs)
|
||||
|
||||
return 1
|
||||
|
||||
/datum/controller/gameticker
|
||||
|
||||
@@ -379,6 +379,84 @@ datum/objective/survive
|
||||
return 0
|
||||
return 1
|
||||
|
||||
// Similar to the anti-rev objective, but for traitors
|
||||
datum/objective/brig
|
||||
var/already_completed = 0
|
||||
|
||||
find_target()
|
||||
..()
|
||||
if(target && target.current)
|
||||
explanation_text = "Have [target.current.real_name], the [target.assigned_role] brigged for 10 minutes."
|
||||
else
|
||||
explanation_text = "Free Objective"
|
||||
return target
|
||||
|
||||
|
||||
find_target_by_role(role, role_type=0)
|
||||
..(role, role_type)
|
||||
if(target && target.current)
|
||||
explanation_text = "Have [target.current.real_name], the [!role_type ? target.assigned_role : target.special_role] brigged for 10 minutes."
|
||||
else
|
||||
explanation_text = "Free Objective"
|
||||
return target
|
||||
|
||||
check_completion()
|
||||
if(already_completed)
|
||||
return 1
|
||||
|
||||
if(target && target.current)
|
||||
if(target.current.stat == DEAD)
|
||||
return 0
|
||||
// Make the actual required time a bit shorter than the official time
|
||||
if(target.is_brigged(10 * 60 * 5))
|
||||
already_completed = 1
|
||||
return 1
|
||||
return 0
|
||||
return 0
|
||||
|
||||
// Harm a crew member, making an example of them
|
||||
datum/objective/harm
|
||||
var/already_completed = 0
|
||||
|
||||
find_target()
|
||||
..()
|
||||
if(target && target.current)
|
||||
explanation_text = "Make an example of [target.current.real_name], the [target.assigned_role]. Break one of their bones, detach one of their limbs or disfigure their face. Make sure they're alive when you do it."
|
||||
else
|
||||
explanation_text = "Free Objective"
|
||||
return target
|
||||
|
||||
|
||||
find_target_by_role(role, role_type=0)
|
||||
..(role, role_type)
|
||||
if(target && target.current)
|
||||
explanation_text = "Make an example of [target.current.real_name], the [!role_type ? target.assigned_role : target.special_role]. Break one of their bones, detach one of their limbs or disfigure their face. Make sure they're alive when you do it."
|
||||
else
|
||||
explanation_text = "Free Objective"
|
||||
return target
|
||||
|
||||
check_completion()
|
||||
if(already_completed)
|
||||
return 1
|
||||
|
||||
if(target && target.current && istype(target.current, /mob/living/carbon/human))
|
||||
if(target.current.stat == DEAD)
|
||||
return 0
|
||||
|
||||
var/mob/living/carbon/human/H = target.current
|
||||
for(var/datum/organ/external/E in H.organs)
|
||||
if(E.status & ORGAN_BROKEN)
|
||||
already_completed = 1
|
||||
return 1
|
||||
if(E.status & ORGAN_DESTROYED && !E.amputated)
|
||||
already_completed = 1
|
||||
return 1
|
||||
|
||||
var/datum/organ/external/head/head = H.get_organ("head")
|
||||
if(head.disfigured)
|
||||
return 1
|
||||
return 0
|
||||
|
||||
|
||||
datum/objective/nuclear
|
||||
explanation_text = "Destroy the station with a nuclear device."
|
||||
|
||||
@@ -94,11 +94,21 @@
|
||||
|
||||
else
|
||||
switch(rand(1,100))
|
||||
if(1 to 50)
|
||||
if(1 to 33)
|
||||
var/datum/objective/assassinate/kill_objective = new
|
||||
kill_objective.owner = traitor
|
||||
kill_objective.find_target()
|
||||
traitor.objectives += kill_objective
|
||||
if(34 to 50)
|
||||
var/datum/objective/brig/brig_objective = new
|
||||
brig_objective.owner = traitor
|
||||
brig_objective.find_target()
|
||||
traitor.objectives += brig_objective
|
||||
if(51 to 66)
|
||||
var/datum/objective/harm/harm_objective = new
|
||||
harm_objective.owner = traitor
|
||||
harm_objective.find_target()
|
||||
traitor.objectives += harm_objective
|
||||
else
|
||||
var/datum/objective/steal/steal_objective = new
|
||||
steal_objective.owner = traitor
|
||||
@@ -140,6 +150,13 @@
|
||||
..()
|
||||
return//Traitors will be checked as part of check_extra_completion. Leaving this here as a reminder.
|
||||
|
||||
/datum/game_mode/traitor/process()
|
||||
// Make sure all objectives are processed regularly, so that objectives
|
||||
// which can be checked mid-round are checked mid-round.
|
||||
for(var/datum/mind/traitor_mind in traitors)
|
||||
for(var/datum/objective/objective in traitor_mind.objectives)
|
||||
objective.check_completion()
|
||||
return 0
|
||||
|
||||
/datum/game_mode/proc/add_law_zero(mob/living/silicon/ai/killer)
|
||||
var/law = "Accomplish your objectives at all costs."
|
||||
|
||||
@@ -69,9 +69,6 @@
|
||||
else
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack)
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/handcuffs(H), slot_in_backpack)
|
||||
var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H)
|
||||
L.imp_in = H
|
||||
L.implanted = 1
|
||||
return 1
|
||||
|
||||
|
||||
@@ -121,9 +118,6 @@
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/evidence(H), slot_in_backpack)
|
||||
H.equip_to_slot_or_del(new /obj/item/device/detective_scanner(H), slot_in_backpack)
|
||||
|
||||
var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H)
|
||||
L.imp_in = H
|
||||
L.implanted = 1
|
||||
return 1
|
||||
|
||||
|
||||
@@ -157,7 +151,4 @@
|
||||
else
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/storage/box/survival(H.back), slot_in_backpack)
|
||||
H.equip_to_slot_or_del(new /obj/item/weapon/handcuffs(H), slot_in_backpack)
|
||||
var/obj/item/weapon/implant/loyalty/L = new/obj/item/weapon/implant/loyalty(H)
|
||||
L.imp_in = H
|
||||
L.implanted = 1
|
||||
return 1
|
||||
|
||||
@@ -4,7 +4,9 @@
|
||||
anchored = 0
|
||||
density = 1
|
||||
|
||||
|
||||
/obj/machinery/iv_drip/var/mob/living/carbon/human/attached = null
|
||||
/obj/machinery/iv_drip/var/mode = "give" // mode can be "give" or "take"
|
||||
/obj/machinery/iv_drip/var/obj/item/weapon/reagent_containers/beaker = null
|
||||
|
||||
/obj/machinery/iv_drip/update_icon()
|
||||
@@ -68,7 +70,8 @@
|
||||
set background = 1
|
||||
|
||||
..()
|
||||
if(src.attached && src.beaker && src.beaker.volume > 0)
|
||||
|
||||
if(src.attached)
|
||||
if(!(get_dist(src, src.attached) <= 1))
|
||||
visible_message("The needle is ripped out of [src.attached], doesn't that hurt?")
|
||||
src.attached:apply_damage(3, BRUTE, pick("r_arm", "l_arm"))
|
||||
@@ -76,6 +79,9 @@
|
||||
src.update_icon()
|
||||
return
|
||||
|
||||
if(src.attached && src.beaker)
|
||||
// Give blood
|
||||
if(mode == "give" && src.beaker.volume > 0)
|
||||
var/transfer_amount = REAGENTS_METABOLISM
|
||||
if(istype(src.beaker, /obj/item/weapon/reagent_containers/blood))
|
||||
// speed up transfer on blood packs
|
||||
@@ -83,6 +89,56 @@
|
||||
src.beaker.reagents.trans_to(src.attached, transfer_amount)
|
||||
update_icon()
|
||||
|
||||
// Take blood
|
||||
else if(mode == "take")
|
||||
var/amount = beaker.reagents.maximum_volume - beaker.reagents.total_volume
|
||||
amount = min(amount, 4)
|
||||
// If the beaker is full, ping
|
||||
if(amount == 0)
|
||||
if(prob(5)) visible_message("\The [src] pings.")
|
||||
return
|
||||
|
||||
var/mob/living/carbon/human/T = attached
|
||||
|
||||
if(!istype(T)) return
|
||||
var/datum/reagent/B = new /datum/reagent/blood
|
||||
if(!T.dna)
|
||||
return
|
||||
if(NOCLONE in T.mutations)
|
||||
return
|
||||
// If the human is losing too much blood, beep.
|
||||
if(T.vessel.get_reagent_amount("blood") < BLOOD_VOLUME_SAFE) if(prob(5))
|
||||
visible_message("\The [src] beeps loudly.")
|
||||
if(T.vessel.get_reagent_amount("blood") < amount)
|
||||
return
|
||||
B.holder = beaker
|
||||
B.volume = amount
|
||||
//set reagent data
|
||||
B.data["donor"] = T
|
||||
|
||||
if(T.virus2)
|
||||
B.data["virus2"] = T.virus2.getcopy()
|
||||
|
||||
B.data["blood_DNA"] = copytext(T.dna.unique_enzymes,1,0)
|
||||
if(T.resistances && T.resistances.len)
|
||||
B.data["resistances"] = T.resistances.Copy()
|
||||
|
||||
B.data["blood_type"] = copytext(T.dna.b_type,1,0)
|
||||
|
||||
var/list/temp_chem = list()
|
||||
for(var/datum/reagent/R in T.reagents.reagent_list)
|
||||
temp_chem += R.name
|
||||
temp_chem[R.name] = R.volume
|
||||
B.data["trace_chem"] = list2params(temp_chem)
|
||||
B.data["antibodies"] = T.antibodies
|
||||
|
||||
T.vessel.remove_reagent("blood",amount) // Removes blood if human
|
||||
|
||||
beaker.reagents.reagent_list += B
|
||||
beaker.reagents.update_total()
|
||||
beaker.on_reagent_change()
|
||||
beaker.reagents.handle_reactions()
|
||||
|
||||
/obj/machinery/iv_drip/attack_hand(mob/user as mob)
|
||||
if(src.beaker)
|
||||
src.beaker.loc = get_turf(src)
|
||||
@@ -91,6 +147,22 @@
|
||||
else
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/machinery/iv_drip/verb/toggle_mode()
|
||||
set name = "Toggle Mode"
|
||||
set src in view(1)
|
||||
|
||||
if(!istype(usr, /mob/living))
|
||||
usr << "\red You can't do that."
|
||||
return
|
||||
|
||||
if(mode == "give")
|
||||
mode = "take"
|
||||
usr << "The IV drip is now taking blood."
|
||||
else if(mode == "take")
|
||||
mode = "give"
|
||||
usr << "The IV drip is now giving blood."
|
||||
|
||||
/obj/machinery/iv_drip/examine()
|
||||
set src in view()
|
||||
..()
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
desc = "An aging combat exosuit utilized by the Nanotrasen corporation. Originally developed to combat hostile alien lifeforms."
|
||||
name = "Durand"
|
||||
icon_state = "durand"
|
||||
initial_icon = "durand"
|
||||
step_in = 4
|
||||
dir_in = 1 //Facing North.
|
||||
health = 400
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
desc = "A lightweight, security exosuit. Popular among private and corporate security."
|
||||
name = "Gygax"
|
||||
icon_state = "gygax"
|
||||
initial_icon = "gygax"
|
||||
step_in = 3
|
||||
dir_in = 1 //Facing North.
|
||||
health = 300
|
||||
@@ -19,6 +20,7 @@
|
||||
desc = "A lightweight exosuit used by Nanotrasen Death Squads. A significantly upgraded Gygax security mech."
|
||||
name = "Dark Gygax"
|
||||
icon_state = "darkgygax"
|
||||
initial_icon = "darkgygax"
|
||||
health = 400
|
||||
deflect_chance = 25
|
||||
damage_absorption = list("brute"=0.6,"fire"=0.8,"bullet"=0.6,"laser"=0.5,"energy"=0.65,"bomb"=0.8)
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
desc = "Produced by \"Tyranny of Honk, INC\", this exosuit is designed as heavy clown-support. Used to spread the fun and joy of life. HONK!"
|
||||
name = "H.O.N.K"
|
||||
icon_state = "honker"
|
||||
initial_icon = "honker"
|
||||
step_in = 2
|
||||
health = 140
|
||||
deflect_chance = 60
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
desc = "Heavy-duty, combat exosuit, developed after the Durand model. Rarely found among civilian populations."
|
||||
name = "Marauder"
|
||||
icon_state = "marauder"
|
||||
initial_icon = "marauder"
|
||||
step_in = 5
|
||||
health = 500
|
||||
deflect_chance = 25
|
||||
@@ -25,6 +26,7 @@
|
||||
desc = "Heavy-duty, command-type exosuit. This is a custom model, utilized only by high-ranking military personnel."
|
||||
name = "Seraph"
|
||||
icon_state = "seraph"
|
||||
initial_icon = "seraph"
|
||||
operation_req_access = list(access_cent_creed)
|
||||
step_in = 3
|
||||
health = 550
|
||||
@@ -37,6 +39,7 @@
|
||||
desc = "Heavy-duty, combat exosuit, developed off of the existing Marauder model."
|
||||
name = "Mauler"
|
||||
icon_state = "mauler"
|
||||
initial_icon = "mauler"
|
||||
operation_req_access = list(access_syndicate)
|
||||
wreckage = /obj/effect/decal/mecha_wreckage/mauler
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
desc = "An exosuit which can only be described as 'WTF?'."
|
||||
name = "Phazon"
|
||||
icon_state = "phazon"
|
||||
initial_icon = "phazon"
|
||||
step_in = 1
|
||||
dir_in = 1 //Facing North.
|
||||
step_energy_drain = 3
|
||||
|
||||
@@ -18,6 +18,7 @@
|
||||
unacidable = 1 //and no deleting hoomans inside
|
||||
layer = MOB_LAYER //icon draw layer
|
||||
infra_luminosity = 15 //byond implementation is bugged.
|
||||
var/initial_icon = "" //Mech type for resetting icon.
|
||||
var/can_move = 1
|
||||
var/mob/living/carbon/occupant = null
|
||||
var/step_in = 10 //make a step in step_in/10 sec.
|
||||
@@ -666,6 +667,7 @@
|
||||
|
||||
/obj/mecha/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
|
||||
|
||||
if(istype(W, /obj/item/device/mmi))
|
||||
if(mmi_move_inside(W,user))
|
||||
user << "[src]-MMI interface initialized successfuly"
|
||||
@@ -1011,7 +1013,7 @@
|
||||
src.add_fingerprint(H)
|
||||
src.forceMove(src.loc)
|
||||
src.log_append_to_last("[H] moved in as pilot.")
|
||||
src.icon_state = initial(icon_state)
|
||||
src.icon_state = src.reset_icon()
|
||||
dir = dir_in
|
||||
playsound(src, 'sound/machines/windowdoor.ogg', 50, 1)
|
||||
if(!hasInternalDamage())
|
||||
@@ -1070,7 +1072,7 @@
|
||||
src.verbs -= /obj/mecha/verb/eject
|
||||
src.Entered(mmi_as_oc)
|
||||
src.Move(src.loc)
|
||||
src.icon_state = initial(icon_state)
|
||||
src.icon_state = src.reset_icon()
|
||||
dir = dir_in
|
||||
src.log_message("[mmi_as_oc] moved in as pilot.")
|
||||
if(!hasInternalDamage())
|
||||
@@ -1159,7 +1161,7 @@
|
||||
src.occupant.canmove = 0
|
||||
src.verbs += /obj/mecha/verb/eject
|
||||
src.occupant = null
|
||||
src.icon_state = initial(icon_state)+"-open"
|
||||
src.icon_state = src.reset_icon()+"-open"
|
||||
src.dir = dir_in
|
||||
return
|
||||
|
||||
@@ -1669,6 +1671,9 @@
|
||||
return 1
|
||||
return 0
|
||||
|
||||
/obj/mecha/proc/reset_icon()
|
||||
icon_state = initial_icon
|
||||
return icon_state
|
||||
|
||||
//////////////////////////////////////////
|
||||
//////// Mecha global iterators ////////
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
desc = "These exosuits are developed and produced by Vey-Med. (© All rights reserved)."
|
||||
name = "Odysseus"
|
||||
icon_state = "odysseus"
|
||||
initial_icon = "odysseus"
|
||||
step_in = 2
|
||||
max_temperature = 1500
|
||||
health = 120
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
desc = "Autonomous Power Loader Unit. The workhorse of the exosuit world."
|
||||
name = "APLU \"Ripley\""
|
||||
icon_state = "ripley"
|
||||
initial_icon = "ripley"
|
||||
step_in = 6
|
||||
max_temperature = 1000
|
||||
health = 200
|
||||
@@ -19,7 +20,7 @@
|
||||
desc = "Standart APLU chassis was refitted with additional thermal protection and cistern."
|
||||
name = "APLU \"Firefighter\""
|
||||
icon_state = "firefighter"
|
||||
max_temperature = 4500
|
||||
initial_icon = "firefighter" max_temperature = 4500
|
||||
health = 250
|
||||
lights_power = 8
|
||||
damage_absorption = list("fire"=0.5,"bullet"=0.8,"bomb"=0.5)
|
||||
@@ -29,6 +30,7 @@
|
||||
desc = "OH SHIT IT'S THE DEATHSQUAD WE'RE ALL GONNA DIE"
|
||||
name = "DEATH-RIPLEY"
|
||||
icon_state = "deathripley"
|
||||
initial_icon = "deathripley"
|
||||
step_in = 2
|
||||
opacity=0
|
||||
lights_power = 60
|
||||
@@ -44,6 +46,7 @@
|
||||
/obj/mecha/working/ripley/mining
|
||||
desc = "An old, dusty mining ripley."
|
||||
name = "APLU \"Miner\""
|
||||
initial_icon = "ripley"
|
||||
|
||||
/obj/mecha/working/ripley/mining/New()
|
||||
..()
|
||||
@@ -110,4 +113,16 @@
|
||||
return
|
||||
|
||||
|
||||
/obj/mecha/working/ripley/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
|
||||
if(istype(W, /obj/item/weapon/fluff/butcher_royce_1))
|
||||
src.icon_state = "titan"
|
||||
src.initial_icon = "titan"
|
||||
src.name = "APLU \"Titan's Fist\""
|
||||
src.desc = "This ordinary mining Ripley has been customized to look like a unit of the Titans Fist."
|
||||
user << "You spend some quality time with the Ripley, customising it to look like a \"Titan's Fist\" APLU."
|
||||
user.drop_item()
|
||||
del(W)
|
||||
return
|
||||
else
|
||||
..()
|
||||
@@ -12,7 +12,7 @@
|
||||
|
||||
/obj/item/weapon/contraband/poster
|
||||
name = "rolled-up poster"
|
||||
desc = "The poster comes with its own automatic adhesive mechanism, for easy pinning to any vertical surface. Its vulgar themes have marked it as Contraband aboard Nanotrasen<65> Space Facilities."
|
||||
desc = "The poster comes with its own automatic adhesive mechanism, for easy pinning to any vertical surface."
|
||||
icon_state = "rolled_poster"
|
||||
var/serial_number = 0
|
||||
var/obj/effect/decal/poster/resulting_poster = null //The poster that will be created is initialised and stored through contraband/poster's constructor
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
..()
|
||||
|
||||
human
|
||||
gibtypes = list(/obj/effect/decal/cleanable/blood/gibs/up,/obj/effect/decal/cleanable/blood/gibs/down,/obj/effect/decal/cleanable/blood/gibs,/obj/effect/decal/cleanable/blood/gibs,/obj/effect/decal/cleanable/blood/gibs/body,/obj/effect/decal/cleanable/blood/gibs/limb,/obj/effect/decal/cleanable/blood/gibs/core)
|
||||
gibtypes = list(/obj/effect/decal/cleanable/blood/gibs,/obj/effect/decal/cleanable/blood/gibs/down,/obj/effect/decal/cleanable/blood/gibs,/obj/effect/decal/cleanable/blood/gibs,/obj/effect/decal/cleanable/blood/gibs,/obj/effect/decal/cleanable/blood/gibs,/obj/effect/decal/cleanable/blood/gibs/core)
|
||||
gibamounts = list(1,1,1,1,1,1,1)
|
||||
|
||||
New()
|
||||
|
||||
@@ -14,13 +14,19 @@ proc/explosion(turf/epicenter, devastation_range, heavy_impact_range, light_impa
|
||||
epicenter = get_turf(epicenter)
|
||||
if(!epicenter) return
|
||||
|
||||
if(adminlog)
|
||||
message_admins("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range]) in area [epicenter.loc.name] ([epicenter.x],[epicenter.y],[epicenter.z])")
|
||||
log_game("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range]) in area [epicenter.loc.name] ")
|
||||
|
||||
playsound(epicenter, 'sound/effects/explosionfar.ogg', 100, 1, round(devastation_range*2,1) )
|
||||
playsound(epicenter, "explosion", 100, 1, round(devastation_range,1) )
|
||||
|
||||
var/close = range(world.view+round(devastation_range,1), epicenter)
|
||||
// to all distanced mobs play a different sound
|
||||
for(var/mob/M in world) if(M.z == epicenter.z) if(!(M in close))
|
||||
// check if the mob can hear
|
||||
if(M.ear_deaf <= 0 || !M.ear_deaf) if(!istype(M.loc,/turf/space))
|
||||
M << 'explosionfar.ogg'
|
||||
if(adminlog)
|
||||
message_admins("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range]) in area [epicenter.loc.name] ([epicenter.x],[epicenter.y],[epicenter.z])")
|
||||
log_game("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range]) in area [epicenter.loc.name] ")
|
||||
|
||||
var/lighting_controller_was_processing = lighting_controller.processing //Pause the lighting updates for a bit
|
||||
lighting_controller.processing = 0
|
||||
|
||||
@@ -192,7 +192,7 @@
|
||||
if(surgery_steps == null) build_surgery_steps_list()
|
||||
for(var/datum/surgery_step/S in surgery_steps)
|
||||
//check if tool is right or close enough
|
||||
if(istype(src, S.required_tool) || (S.allowed_tools && src.type in S.allowed_tools ))
|
||||
if(istype(src, S.required_tool) || (S.allowed_tools && (src.type in S.allowed_tools) ))
|
||||
if(S.can_use(user, M, user.zone_sel.selecting, src)) //is this step possible?
|
||||
S.begin_step(user, M, user.zone_sel.selecting, src)
|
||||
if(do_mob(user, M, rand(S.min_duration, S.max_duration)))
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
var/access_security = 0
|
||||
var/access_engine = 0
|
||||
var/access_medical = 0
|
||||
var/access_manifest = 0
|
||||
var/access_manifest = 1 // Make all jobs able to access the manifest
|
||||
var/access_clown = 0
|
||||
var/access_mime = 0
|
||||
var/access_janitor = 0
|
||||
@@ -268,9 +268,8 @@ Code:
|
||||
|
||||
menu = "<h4><img src=pda_notes.png> Crew Manifest</h4>"
|
||||
menu += "Entries cannot be modified from this terminal.<br><br>"
|
||||
if(!isnull(data_core.general))
|
||||
for (var/datum/data/record/t in sortRecord(data_core.general))
|
||||
menu += "[t.fields["name"]] - [t.fields["rank"]]<br>"
|
||||
if(data_core)
|
||||
menu += data_core.get_manifest(1) // make it monochrome
|
||||
menu += "<br>"
|
||||
|
||||
|
||||
|
||||
@@ -322,6 +322,7 @@ var/list/mechtoys = list(
|
||||
//manifest finalisation
|
||||
slip.info += "</ul><br>"
|
||||
slip.info += "CHECK CONTENTS AND STAMP BELOW THE LINE TO CONFIRM RECEIPT OF GOODS<hr>"
|
||||
if (SP.contraband) slip.loc = null //we are out of blanks for Form #44-D Ordering Illicit Drugs.
|
||||
|
||||
while(0<mech_redeem)
|
||||
if(!clear_turfs.len) break
|
||||
|
||||
@@ -60,7 +60,7 @@ var/SMALLSIZEBLOCK = 0
|
||||
|
||||
var/skipupdate = 0
|
||||
///////////////
|
||||
var/eventchance = 3 //% per 5 mins
|
||||
var/eventchance = 10 //% per 5 mins
|
||||
var/event = 0
|
||||
var/hadevent = 0
|
||||
var/blobevent = 0
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
var/be_alien = 0 //Check if that guy wants to be an alien
|
||||
var/be_pai = 1 //Consider client when searching for players to recruit as a pAI
|
||||
var/be_syndicate = 1 //Consider client for late-game autotraitor
|
||||
var/be_spaceninja = 0
|
||||
var/activeslot = 1 //Default active slot!
|
||||
var/STFU_ghosts //80+ people rounds are fun to admin when text flies faster than airport security
|
||||
var/STFU_radio //80+ people rounds are fun to admin when text flies faster than airport security
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
icon_state = "capspace"
|
||||
item_state = "capspacehelmet"
|
||||
desc = "A special helmet designed for work in a hazardous, low-pressure environment. Only for the most fashionable of military figureheads."
|
||||
flags = FPRINT | TABLEPASS | HEADCOVERSEYES | BLOCKHAIR
|
||||
flags = FPRINT | TABLEPASS | HEADCOVERSEYES | BLOCKHAIR | STOPSPRESSUREDMAGE
|
||||
flags_inv = HIDEFACE
|
||||
permeability_coefficient = 0.01
|
||||
armor = list(melee = 65, bullet = 50, laser = 50,energy = 25, bomb = 50, bio = 100, rad = 50)
|
||||
@@ -18,7 +18,7 @@
|
||||
w_class = 4
|
||||
gas_transfer_coefficient = 0.01
|
||||
permeability_coefficient = 0.02
|
||||
flags = FPRINT | TABLEPASS
|
||||
flags = FPRINT | TABLEPASS | STOPSPRESSUREDMAGE
|
||||
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS
|
||||
allowed = list(/obj/item/weapon/tank/emergency_oxygen, /obj/item/device/flashlight,/obj/item/weapon/gun/energy, /obj/item/weapon/gun/projectile, /obj/item/ammo_magazine, /obj/item/ammo_casing, /obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs)
|
||||
slowdown = 1.5
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
hi
|
||||
// Add custom items you give to people here, and put their icons in custom_items.dmi
|
||||
// Remember to change 'icon = 'custom_items.dmi'' for items not using /obj/item/fluff as a base
|
||||
// Clothing item_state doesn't use custom_items.dmi. Just add them to the normal clothing files.
|
||||
@@ -66,10 +67,20 @@
|
||||
desc = "A neatly folded handkerchief embroidered with a 'M'."
|
||||
icon_state = "maurice_bedford_1"
|
||||
|
||||
/obj/item/weapon/book/fluff/johnathan_falcian_1
|
||||
name = "sketchbook"
|
||||
desc = "A small, well-used sketchbook."
|
||||
icon = 'custom_items.dmi'
|
||||
icon_state = "johnathan_notebook"
|
||||
dat = "In the notebook there are numerous drawings of various crew-mates, locations, and scenes on the ship. They are of fairly good quality."
|
||||
author = "Johnathan Falcian"
|
||||
title = "Falcian's sketchbook"
|
||||
|
||||
//////////////////////////////////
|
||||
////////// Usable Items //////////
|
||||
//////////////////////////////////
|
||||
|
||||
|
||||
/obj/item/weapon/pen/fluff/multi //spaceman96: Trenna Seber
|
||||
name = "multicolor pen"
|
||||
desc = "It's a cool looking pen. Lots of colors!"
|
||||
@@ -330,10 +341,17 @@
|
||||
/obj/item/weapon/crowbar/fluff/zelda_creedy_1 //daaneesh: Zelda Creedy
|
||||
name = "Zelda's Crowbar"
|
||||
desc = "A pink crow bar that has an engraving that reads, 'To Zelda. Love always, Dawn'"
|
||||
icon = 'icons/obj/custom_items.dmi'
|
||||
icon = 'custom_items.dmi'
|
||||
icon_state = "zeldacrowbar"
|
||||
item_state = "crowbar"
|
||||
|
||||
////// Ripley customisation kit - Butchery Royce - MayeDay
|
||||
|
||||
/obj/item/weapon/fluff/butcher_royce_1
|
||||
name = "Ripley customisation kit"
|
||||
desc = "A kit containing all the needed tools and parts to turn an APLU Ripley into a Titan's Fist worker mech."
|
||||
icon = 'custom_items.dmi'
|
||||
icon_state = "royce_kit"
|
||||
|
||||
//////////////////////////////////
|
||||
//////////// Clothing ////////////
|
||||
@@ -384,6 +402,19 @@
|
||||
icon = 'custom_items.dmi'
|
||||
icon_state = "ian_colm_1"
|
||||
|
||||
////// Medical eyepatch - Thysse Ezinwa - Jadepython
|
||||
/obj/item/clothing/glasses/eyepatch/fluff/thysse_1
|
||||
name = "medical eyepatch"
|
||||
desc = "On the strap, EZINWA is written in white block letters."
|
||||
|
||||
////// Safety Goggles - Arjun Chopra - MindPhyre - APPROVED
|
||||
/obj/item/clothing/glasses/fluff/arjun_chopra_1
|
||||
name = "safety goggles"
|
||||
desc = "A used pair of leather safety goggles."
|
||||
icon = 'custom_items.dmi'
|
||||
icon_state = "arjun_chopra"
|
||||
item_state = "arjun_chopra"
|
||||
|
||||
//////////// Hats ////////////
|
||||
|
||||
/obj/item/clothing/head/secsoft/fluff/swatcap //deusdactyl: James Girard
|
||||
@@ -500,6 +531,50 @@
|
||||
item_state = "ara_bar_uniform"
|
||||
color = "ara_bar_uniform"
|
||||
|
||||
/////// NT-SID Suit //Zuhayr: Jane Doe
|
||||
|
||||
/obj/item/clothing/under/fluff/jane_sidsuit
|
||||
name = "NT-SID jumpsuit"
|
||||
desc = "A NanoTrasen Synthetic Intelligence Division jumpsuit, issued to 'volunteers'. On other people it looks fine, but right here a scientist has noted: on you it looks stupid."
|
||||
|
||||
icon = 'icons/obj/custom_items.dmi'
|
||||
icon_state = "jane_sid_suit"
|
||||
item_state = "jane_sid_suit"
|
||||
color = "jane_sid_suit"
|
||||
has_sensor = 2
|
||||
sensor_mode = 3
|
||||
flags = FPRINT | TABLEPASS
|
||||
|
||||
//Suit roll-down toggle.
|
||||
/obj/item/clothing/under/fluff/jane_sidsuit/verb/toggle_zipper()
|
||||
set name = "Toggle Jumpsuit Zipper"
|
||||
set category = "Object"
|
||||
set src in usr
|
||||
|
||||
if(!usr.canmove || usr.stat || usr.restrained())
|
||||
return 0
|
||||
|
||||
if(src.icon_state == "jane_sid_suit_down")
|
||||
src.color = "jane_sid_suit"
|
||||
usr << "You zip up the [src]."
|
||||
else
|
||||
src.color = "jane_sid_suit_down"
|
||||
usr << "You unzip and roll down the [src]."
|
||||
|
||||
src.icon_state = "[color]"
|
||||
src.item_state = "[color]"
|
||||
usr.update_inv_w_uniform()
|
||||
|
||||
////// Wyatt's Ex-Commander Jumpsuit - RawrTaicho
|
||||
/obj/item/clothing/under/fluff/wyatt_1
|
||||
|
||||
name = "ex-commander jumpsuit"
|
||||
desc = "A standard Central Command Engineering Commander jumpsuit tailored to fight the wearer tightly. It has a Medal of Service pinned onto the left side of it."
|
||||
icon = 'custom_items.dmi'
|
||||
icon_state = "wyatt_uniform"
|
||||
item_state = "wyatt_uniform"
|
||||
color = "wyatt_uniform"
|
||||
|
||||
//////////// Masks ////////////
|
||||
|
||||
/*
|
||||
@@ -522,6 +597,41 @@
|
||||
flags = FPRINT|TABLEPASS
|
||||
w_class = 1
|
||||
|
||||
////// Small locket - Altair An-Nasaqan - Serithi
|
||||
|
||||
/obj/item/clothing/tie/fluff/altair_locket
|
||||
name = "small locket"
|
||||
desc = "A small golden locket attached to an Ii'rka-reed string. Inside the locket is a holo-picture of a female Tajaran, and an inscription writtin in Siik'mas."
|
||||
icon = 'custom_items.dmi'
|
||||
icon_state = "altair_locket"
|
||||
item_state = "altair_locket"
|
||||
color = "altair_locket"
|
||||
slot_flags = 0
|
||||
flags = FPRINT|TABLEPASS
|
||||
w_class = 1
|
||||
slot_flags = SLOT_MASK
|
||||
|
||||
////// Medallion - Nasir Khayyam - Jamini
|
||||
|
||||
/obj/item/clothing/tie/fluff/nasir_khayyam_1
|
||||
name = "medallion"
|
||||
desc = "This silvered medallion bears the symbol of the Hadii Clan of the Tajaran."
|
||||
icon = 'custom_items.dmi'
|
||||
icon_state = "nasir_khayyam_1"
|
||||
flags = FPRINT|TABLEPASS
|
||||
w_class = 1
|
||||
slot_flags = SLOT_MASK
|
||||
|
||||
////// Emerald necklace - Ty Foster - Nega
|
||||
|
||||
/obj/item/clothing/mask/mara_kilpatrick_1
|
||||
name = "emerald necklace"
|
||||
desc = "A brass necklace with a green emerald placed at the end. It has a small inscription on the top of the chain, saying \'Foster\'"
|
||||
icon = 'custom_items.dmi'
|
||||
icon_state = "ty_foster"
|
||||
flags = FPRINT|TABLEPASS
|
||||
w_class = 1
|
||||
|
||||
//////////// Shoes ////////////
|
||||
|
||||
/obj/item/clothing/shoes/magboots/fluff/susan_harris_1 //sniperyeti: Susan Harris
|
||||
@@ -529,22 +639,6 @@
|
||||
desc = "A colorful pair of magboots with the name Susan Harris clearly written on the back."
|
||||
icon = 'custom_items.dmi'
|
||||
icon_state = "atmosmagboots0"
|
||||
toggle()
|
||||
set name = "Toggle Magboots"
|
||||
set category = "Object"
|
||||
set src in usr
|
||||
if(src.magpulse)
|
||||
src.flags &= ~NOSLIP
|
||||
src.slowdown = SHOES_SLOWDOWN
|
||||
src.magpulse = 0
|
||||
icon_state = "atmosmagboots0"
|
||||
usr << "You disable the mag-pulse traction system."
|
||||
else
|
||||
src.flags |= NOSLIP
|
||||
src.slowdown = 2
|
||||
src.magpulse = 1
|
||||
icon_state = "atmosmagboots1"
|
||||
usr << "You enable the mag-pulse traction system."
|
||||
|
||||
//////////// Sets ////////////
|
||||
|
||||
@@ -593,3 +687,19 @@
|
||||
icon_state = "retpoluniform"
|
||||
color = "retpoluniform"
|
||||
|
||||
//////////// Weapons ////////////
|
||||
|
||||
///// Colt Peacemaker - Ana Ka'Rimah - SueTheCake
|
||||
|
||||
/obj/item/weapon/gun/energy/stunrevolver/fluff/ana_peacemaker
|
||||
|
||||
name = "Peacemaker"
|
||||
desc = "A nickel-plated revolver with pearl grips. It has a certain Old West flair!"
|
||||
icon = 'custom_items.dmi'
|
||||
icon_state = "peacemaker"
|
||||
|
||||
///// Well-used baton - Oen'g Issek - Donofnyc3
|
||||
|
||||
/obj/item/weapon/melee/baton/fluff/oeng_baton
|
||||
name = "well-used stun baton"
|
||||
desc = "A stun baton used for incapacitating targets; there seems to be a bunch of tally marks set into the handle."
|
||||
|
||||
@@ -254,6 +254,17 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
client.be_pai = 1
|
||||
src << "You will now be considered a viable candidate when a pAI device requests a new personality, effective until the end of this round."
|
||||
|
||||
/mob/dead/observer/verb/toggle_spaceninja_candidate()
|
||||
set name = "Toggle Be Space Ninja Candidate"
|
||||
set category = "Ghost"
|
||||
set desc = "Determines whether you will be a candidate for when a new space ninja spawns. (toggle)"
|
||||
if(client.be_spaceninja)
|
||||
client.be_spaceninja = 0
|
||||
src << "You are now excluded from space ninja candidate lists until end of round."
|
||||
else
|
||||
client.be_spaceninja = 1
|
||||
src << "You are now included in space ninja candidate lists until end of round."
|
||||
|
||||
/mob/dead/observer/memory()
|
||||
set hidden = 1
|
||||
src << "\red You are dead! You have no mind to store memory!"
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
var/move_delay_add = 0 // movement delay to add
|
||||
|
||||
status_flags = CANPARALYSE
|
||||
var/heal_rate = 5
|
||||
var/heal_rate = 1
|
||||
var/plasma_rate = 5
|
||||
|
||||
var/oxygen_alert = 0
|
||||
|
||||
@@ -114,7 +114,7 @@ Doesn't work on other aliens/AI.*/
|
||||
|
||||
/mob/living/carbon/alien/humanoid/proc/neurotoxin(mob/target as mob in oview())
|
||||
set name = "Spit Neurotoxin (50)"
|
||||
set desc = "Spits neurotoxin at someone, paralyzing them for a short time."
|
||||
set desc = "Spits neurotoxin at someone, paralyzing them for a short time if they are not wearing protective gear."
|
||||
set category = "Alien"
|
||||
|
||||
if(powerc(50))
|
||||
@@ -137,12 +137,12 @@ Doesn't work on other aliens/AI.*/
|
||||
if(!istype(T, /turf))
|
||||
return
|
||||
if (U == T)
|
||||
usr.bullet_act(src, get_organ_target())
|
||||
usr.bullet_act(new /obj/item/projectile/neurotoxin(usr.loc), get_organ_target())
|
||||
return
|
||||
if(!istype(U, /turf))
|
||||
return
|
||||
|
||||
var/obj/item/projectile/energy/dart/A = new /obj/item/projectile/energy/dart(usr.loc)
|
||||
var/obj/item/projectile/neurotoxin/A = new /obj/item/projectile/neurotoxin(usr.loc)
|
||||
|
||||
A.current = U
|
||||
A.yo = U.y - T.y
|
||||
|
||||
@@ -94,6 +94,7 @@ var/const/MAX_ACTIVE_TIME = 400
|
||||
return
|
||||
|
||||
/obj/item/clothing/mask/facehugger/throw_impact(atom/hit_atom)
|
||||
if(prob(25))
|
||||
Attach(hit_atom)
|
||||
return
|
||||
|
||||
@@ -134,6 +135,7 @@ var/const/MAX_ACTIVE_TIME = 400
|
||||
for(var/mob/O in viewers(target, null))
|
||||
O.show_message("\red \b [src] tears [W] off of [target]'s face!", 1)
|
||||
|
||||
if(prob(75))
|
||||
loc = target
|
||||
layer = 20
|
||||
target.wear_mask = src
|
||||
@@ -145,6 +147,9 @@ var/const/MAX_ACTIVE_TIME = 400
|
||||
|
||||
spawn(rand(MIN_IMPREGNATION_TIME,MAX_IMPREGNATION_TIME))
|
||||
Impregnate(target)
|
||||
else
|
||||
for(var/mob/O in viewers(target, null))
|
||||
O.show_message("\red \b [src] misses [target]'s face!", 1)
|
||||
|
||||
return
|
||||
|
||||
|
||||
@@ -192,7 +192,7 @@
|
||||
swap_hand()
|
||||
|
||||
/mob/living/carbon/proc/help_shake_act(mob/living/carbon/M)
|
||||
if (src.health > 0)
|
||||
if (src.health > config.health_threshold_crit)
|
||||
if(src == M && istype(src, /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = src
|
||||
src.visible_message( \
|
||||
|
||||
@@ -11,6 +11,14 @@
|
||||
animation.icon = 'icons/mob/mob.dmi'
|
||||
animation.master = src
|
||||
|
||||
for(var/datum/organ/external/E in src.organs)
|
||||
if(istype(E, /datum/organ/external/chest))
|
||||
continue
|
||||
// Only make the limb drop if it's not too damaged
|
||||
if(prob(100 - E.get_damage()))
|
||||
// Override the current limb status and don't cause an explosion
|
||||
E.droplimb(1,1)
|
||||
|
||||
flick("gibbed-h", animation)
|
||||
hgibs(loc, viruses, dna)
|
||||
|
||||
|
||||
@@ -38,17 +38,19 @@
|
||||
apply_damage(damage, BRUTE, affecting, armor_block)
|
||||
if (damage >= 25)
|
||||
visible_message("\red <B>[M] has wounded [src]!</B>")
|
||||
apply_effect(4, WEAKEN, armor_block)
|
||||
apply_effect(rand(0.5,3), WEAKEN, armor_block)
|
||||
updatehealth()
|
||||
|
||||
if("disarm")
|
||||
var/randn = rand(1, 100)
|
||||
if (randn <= 80)
|
||||
playsound(loc, 'sound/weapons/pierce.ogg', 25, 1, -1)
|
||||
Weaken(10)
|
||||
visible_message(text("\red <B>[] has tackled down []!</B>", M, src))
|
||||
if (prob(80)) playsound(loc, 'sound/weapons/pierce.ogg', 25, 1, -1)
|
||||
Weaken(rand(0.5,3))
|
||||
for(var/mob/O in viewers(src, null))
|
||||
if ((O.client && !( O.blinded )))
|
||||
O.show_message(text("\red <B>[] has tackled down []!</B>", M, src), 1)
|
||||
if (prob(25))
|
||||
M.Weaken(rand(2,4))
|
||||
else
|
||||
if (randn <= 99)
|
||||
if (prob(80))
|
||||
playsound(loc, 'sound/weapons/slash.ogg', 25, 1, -1)
|
||||
drop_item()
|
||||
visible_message(text("\red <B>[] disarmed []!</B>", M, src))
|
||||
|
||||
@@ -113,7 +113,12 @@ emp_act
|
||||
/mob/living/carbon/human/proc/attacked_by(var/obj/item/I, var/mob/living/user, var/def_zone)
|
||||
if(!I || !user) return 0
|
||||
|
||||
var/datum/organ/external/affecting = get_organ(ran_zone(user.zone_sel.selecting))
|
||||
var/target_zone = get_zone_with_miss_chance(user.zone_sel.selecting, src)
|
||||
if(!target_zone)
|
||||
visible_message("\red <B>[user] misses [src] with \the [I]!")
|
||||
return
|
||||
|
||||
var/datum/organ/external/affecting = get_organ(target_zone)
|
||||
if (!affecting)
|
||||
return
|
||||
if(affecting.status & ORGAN_DESTROYED)
|
||||
@@ -148,21 +153,8 @@ emp_act
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
if(get_dist(H, src) > 1) //people with TK won't get smeared with blood
|
||||
if(H.wear_suit)
|
||||
H.wear_suit.add_blood(src)
|
||||
H.update_inv_wear_suit(0) //updates mob overlays to show the new blood (no refresh)
|
||||
else if(H.w_uniform)
|
||||
H.w_uniform.add_blood(src)
|
||||
H.update_inv_w_uniform(0) //updates mob overlays to show the new blood (no refresh)
|
||||
if (H.gloves)
|
||||
H.gloves.add_blood(H)
|
||||
H.gloves:transfer_blood = 2
|
||||
H.gloves:bloody_hands_mob = H
|
||||
else
|
||||
H.add_blood(H)
|
||||
H.bloody_hands = 2
|
||||
H.bloody_hands_mob = H
|
||||
H.update_inv_gloves() //updates on-mob overlays for bloody hands and/or bloody gloves
|
||||
H.bloody_body(src)
|
||||
H.bloody_hands(src)
|
||||
|
||||
switch(hit_area)
|
||||
if("head")//Harder to score a stun but if you do it lasts a bit longer
|
||||
@@ -189,10 +181,23 @@ emp_act
|
||||
visible_message("\red <B>[src] has been knocked down!</B>")
|
||||
|
||||
if(bloody)
|
||||
bloody_body(src)
|
||||
|
||||
/mob/living/carbon/human/proc/bloody_hands(var/mob/living/source, var/amount = 2)
|
||||
if (gloves)
|
||||
gloves.add_blood(source)
|
||||
gloves:transfer_blood = amount
|
||||
gloves:bloody_hands_mob = source
|
||||
else
|
||||
add_blood(source)
|
||||
bloody_hands = amount
|
||||
bloody_hands_mob = source
|
||||
update_inv_gloves() //updates on-mob overlays for bloody hands and/or bloody gloves
|
||||
|
||||
/mob/living/carbon/human/proc/bloody_body(var/mob/living/source)
|
||||
if(wear_suit)
|
||||
wear_suit.add_blood(src)
|
||||
wear_suit.add_blood(source)
|
||||
update_inv_wear_suit(0)
|
||||
if(w_uniform)
|
||||
w_uniform.add_blood(src)
|
||||
w_uniform.add_blood(source)
|
||||
update_inv_w_uniform(0)
|
||||
|
||||
@@ -304,7 +304,7 @@
|
||||
/obj/effect/equip_e/human/process()
|
||||
if (item)
|
||||
item.add_fingerprint(source)
|
||||
if (!item)
|
||||
else
|
||||
switch(place)
|
||||
if("mask")
|
||||
if (!( target.wear_mask ))
|
||||
@@ -533,7 +533,7 @@ It can still be worn/put on as normal.
|
||||
if (target.legcuffed)
|
||||
strip_item = target.legcuffed
|
||||
if("CPR")
|
||||
if ((target.health >= -99.0 && target.health <= 0))
|
||||
if ((target.health > config.health_threshold_dead && target.health < config.health_threshold_crit))
|
||||
var/suff = min(target.getOxyLoss(), 7)
|
||||
target.adjustOxyLoss(-suff)
|
||||
target.updatehealth()
|
||||
|
||||
@@ -21,6 +21,11 @@
|
||||
#define COLD_GAS_DAMAGE_LEVEL_2 1.5 //Amount of damage applied when the current breath's temperature passes the 200K point
|
||||
#define COLD_GAS_DAMAGE_LEVEL_3 3 //Amount of damage applied when the current breath's temperature passes the 120K point
|
||||
|
||||
var/const/BLOOD_VOLUME_SAFE = 501
|
||||
var/const/BLOOD_VOLUME_OKAY = 336
|
||||
var/const/BLOOD_VOLUME_BAD = 224
|
||||
var/const/BLOOD_VOLUME_SURVIVE = 122
|
||||
|
||||
/mob/living/carbon/human
|
||||
var/oxygen_alert = 0
|
||||
var/toxins_alert = 0
|
||||
@@ -153,11 +158,11 @@
|
||||
|
||||
|
||||
switch(blood_volume)
|
||||
if(501 to 10000)
|
||||
if(BLOOD_VOLUME_SAFE to 10000)
|
||||
if(pale)
|
||||
pale = 0
|
||||
update_body()
|
||||
if(336 to 500)
|
||||
if(BLOOD_VOLUME_OKAY to BLOOD_VOLUME_SAFE)
|
||||
if(!pale)
|
||||
pale = 1
|
||||
update_body()
|
||||
@@ -169,7 +174,7 @@
|
||||
if(oxyloss < 20)
|
||||
// hint that they're getting close to suffocation
|
||||
oxyloss += 3
|
||||
if(224 to 335)
|
||||
if(BLOOD_VOLUME_BAD to BLOOD_VOLUME_OKAY)
|
||||
if(!pale)
|
||||
pale = 1
|
||||
update_body()
|
||||
@@ -181,19 +186,25 @@
|
||||
Paralyse(rand(1,3))
|
||||
var/word = pick("dizzy","woosey","faint")
|
||||
src << "\red You feel extremely [word]"
|
||||
if(122 to 244)
|
||||
if(BLOOD_VOLUME_SURVIVE to BLOOD_VOLUME_BAD)
|
||||
oxyloss += 5
|
||||
toxloss += 5
|
||||
if(prob(15))
|
||||
var/word = pick("dizzy","woosey","faint")
|
||||
src << "\red You feel extremely [word]"
|
||||
if(0 to 122)
|
||||
if(0 to BLOOD_VOLUME_SURVIVE)
|
||||
// There currently is a strange bug here. If the mob is not below -100 health
|
||||
// when death() is called, apparently they will be just fine, and this way it'll
|
||||
// spam deathgasp. Adjusting toxloss ensures the mob will stay dead.
|
||||
toxloss += 300 // just to be safe!
|
||||
death()
|
||||
|
||||
// Without enough blood you slowly go hungry.
|
||||
if(blood_volume < BLOOD_VOLUME_SAFE)
|
||||
if(nutrition >= 300)
|
||||
nutrition -= 10
|
||||
else if(nutrition >= 200)
|
||||
nutrition -= 3
|
||||
|
||||
var/blood_max = 0
|
||||
for(var/datum/organ/external/temp in organs)
|
||||
@@ -814,6 +825,10 @@
|
||||
else
|
||||
pressure_alert = -1
|
||||
|
||||
else if(pressure <= 50)
|
||||
var/adjusted_pressure = calculate_affecting_pressure(pressure) //Returns how much pressure actually affects the mob.
|
||||
if(adjusted_pressure < 50)
|
||||
adjustBruteLoss( (50 - adjusted_pressure) / 50 )
|
||||
return
|
||||
|
||||
/*
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
|
||||
#define SAY_MINIMUM_PRESSURE 10
|
||||
var/list/department_radio_keys = list(
|
||||
":r" = "right hand",
|
||||
":l" = "left hand",
|
||||
@@ -295,6 +295,13 @@ var/list/department_radio_keys = list(
|
||||
italics = 1
|
||||
/////SPECIAL HEADSETS END
|
||||
|
||||
var/datum/gas_mixture/environment = loc.return_air()
|
||||
if(environment)
|
||||
var/pressure = environment.return_pressure()
|
||||
if (pressure < SAY_MINIMUM_PRESSURE) //in space no one can hear you scream
|
||||
italics = 1
|
||||
message_range = 1
|
||||
|
||||
var/list/listening
|
||||
|
||||
listening = get_mobs_in_view(message_range, src)
|
||||
|
||||
@@ -128,20 +128,15 @@ var/list/ai_list = list()
|
||||
|
||||
//if(icon_state == initial(icon_state))
|
||||
var/icontype = ""
|
||||
var/list/icons = list("Monochrome", "Blue", "Inverted", "Firewall", "Green", "Red", "Static")
|
||||
if (src.name == "B.A.N.N.E.D." && src.ckey == "spaceman96")
|
||||
icons += "B.A.N.N.E.D."
|
||||
var/list/icons = list("Monochrome", "Blue", "Inverted", "Text", "Smiley", "Angry", "Dorf", "Matrix", "Bliss", "Firewall", "Green", "Red", "Static", "Triumvirate", "Triumvirate Static")
|
||||
if (src.name == "M00X-BC" && src.ckey == "searif")
|
||||
icons += "M00X-BC"
|
||||
if (src.name == "TRIBUNAL" && src.ckey == "serithi")
|
||||
icons += "Tribunal"
|
||||
icons += "Tribunal Malfunctioning"
|
||||
if (src.name == "Skuld" && src.ckey == "ravensdale")
|
||||
icons += "Skuld"
|
||||
/* if(icontype == "Clown")
|
||||
icon_state = "ai-clown2"*/
|
||||
icontype = input("Please, select a display!", "AI", null/*, null*/) in icons
|
||||
if(icontype == "Monochrome")
|
||||
if(icontype == "Clown")
|
||||
icon_state = "ai-clown2"
|
||||
else if(icontype == "Monochrome")
|
||||
icon_state = "ai-mono"
|
||||
else if(icontype == "Blue")
|
||||
icon_state = "ai"
|
||||
@@ -155,12 +150,24 @@ var/list/ai_list = list()
|
||||
icon_state = "ai-malf"
|
||||
else if(icontype == "Static")
|
||||
icon_state = "ai-static"
|
||||
else if(icontype == "Text")
|
||||
icon_state = "ai-text"
|
||||
else if(icontype == "Smiley")
|
||||
icon_state = "ai-smiley"
|
||||
else if(icontype == "Matrix")
|
||||
icon_state = "ai-matrix"
|
||||
else if(icontype == "Angry")
|
||||
icon_state = "ai-angryface"
|
||||
else if(icontype == "Dorf")
|
||||
icon_state = "ai-dorf"
|
||||
else if(icontype == "Bliss")
|
||||
icon_state = "ai-bliss"
|
||||
else if(icontype == "M00X-BC")
|
||||
icon_state = "ai-searif"
|
||||
else if(icontype == "Tribunal")
|
||||
icon_state = "ai-tribunal"
|
||||
else if(icontype == "Tribunal Malfunctioning")
|
||||
icon_state = "ai-tribunal-malf"
|
||||
else if(icontype == "Triumvirate")
|
||||
icon_state = "ai-triumvirate"
|
||||
else if(icontype == "Triumvirate Static")
|
||||
icon_state = "ai-triumvirate-malf"
|
||||
else if(icontype == "Skuld")
|
||||
icon_state = "ai-ravensdale"
|
||||
//else
|
||||
|
||||
@@ -163,6 +163,53 @@ proc/hasorgans(A)
|
||||
if(prob(probability * 0.75)) return zone
|
||||
return "chest"
|
||||
|
||||
// Emulates targetting a specific body part, and miss chances
|
||||
// May return null if missed
|
||||
// miss_chance_mod may be negative.
|
||||
/proc/get_zone_with_miss_chance(zone, var/mob/target, var/miss_chance_mod = 0)
|
||||
zone = check_zone(zone)
|
||||
|
||||
// you can only miss if your target is standing and not restrained
|
||||
if(!target.buckled && !target.lying)
|
||||
var/miss_chance = max(10 + miss_chance_mod, 0)
|
||||
switch(zone)
|
||||
if("head")
|
||||
miss_chance = 40
|
||||
if("l_leg")
|
||||
miss_chance = 20
|
||||
if("r_leg")
|
||||
miss_chance = 20
|
||||
if("l_arm")
|
||||
miss_chance = 20
|
||||
if("r_arm")
|
||||
miss_chance = 20
|
||||
if("l_hand")
|
||||
miss_chance = 50
|
||||
if("r_hand")
|
||||
miss_chance = 50
|
||||
if("l_foot")
|
||||
miss_chance = 50
|
||||
if("r_foot")
|
||||
miss_chance = 50
|
||||
if(prob(miss_chance))
|
||||
if(prob(70))
|
||||
return null
|
||||
else
|
||||
var/t = rand(1, 10)
|
||||
switch(t)
|
||||
if(1) return "head"
|
||||
if(2) return "l_arm"
|
||||
if(3) return "r_arm"
|
||||
if(4) return "chest"
|
||||
if(5) return "l_foot"
|
||||
if(6) return "r_foot"
|
||||
if(7) return "l_hand"
|
||||
if(8) return "r_hand"
|
||||
if(9) return "l_leg"
|
||||
if(10) return "r_leg"
|
||||
|
||||
return zone
|
||||
|
||||
|
||||
/proc/stars(n, pr)
|
||||
if (pr == null)
|
||||
|
||||
@@ -374,7 +374,11 @@
|
||||
dat += "Choose from the following open positions:<br>"
|
||||
for(var/datum/job/job in job_master.occupations)
|
||||
if(job && IsJobAvailable(job.title))
|
||||
dat += "<a href='byond://?src=\ref[src];SelectedJob=[job.title]'>[job.title] ([job.current_positions])</a><br>"
|
||||
var/active = 0
|
||||
// Only players with the job assigned and AFK for less than 10 minutes count as active
|
||||
for(var/mob/M in player_list) if(M.mind && M.client && M.mind.assigned_job == job && M.client.inactivity <= 10 * 60 * 10)
|
||||
active++
|
||||
dat += "<a href='byond://?src=\ref[src];SelectedJob=[job.title]'>[job.title] ([job.current_positions]) (Active: [active])</a><br>"
|
||||
|
||||
dat += "</center>"
|
||||
src << browse(dat, "window=latechoices;size=300x640;can_close=1")
|
||||
|
||||
@@ -12,6 +12,7 @@ var/global/list/special_roles = list( //keep synced with the defines BE_* in set
|
||||
"pAI candidate" = 1, // -- TLE // 7
|
||||
"cultist" = IS_MODE_COMPILED("cult"), // 8
|
||||
"infested monkey" = IS_MODE_COMPILED("monkey"), // 9
|
||||
"space ninja" = "true", // 10
|
||||
)
|
||||
|
||||
var/global/list/underwear_m = list("White", "Grey", "Green", "Blue", "Black", "Mankini", "Love-Hearts", "Black2", "Grey2", "Stripey", "Kinky", "None") //Curse whoever made male/female underwear diffrent colours
|
||||
@@ -28,6 +29,7 @@ var/const/BE_ALIEN =(1<<6)
|
||||
var/const/BE_PAI =(1<<7)
|
||||
var/const/BE_CULTIST =(1<<8)
|
||||
var/const/BE_MONKEY =(1<<9)
|
||||
var/const/BE_SPACENINJA=(1<<10)
|
||||
|
||||
|
||||
var/const/MAX_SAVE_SLOTS = 10
|
||||
@@ -236,8 +238,8 @@ datum/preferences
|
||||
dat += "<a href=\"byond://?src=\ref[user];preference=slotname;task=input\">Rename slot</a> - "
|
||||
dat += "<a href=\"byond://?src=\ref[user];preference=reload\">Reload slot</a>"
|
||||
|
||||
//column 1
|
||||
dat += "</center><hr><table><tr><td width='310px'>"
|
||||
//COLUMN 1
|
||||
dat += "</center><hr><table><tr><td width='285px'>"
|
||||
|
||||
dat += "<b>Name:</b> "
|
||||
dat += "<a href=\"byond://?src=\ref[user];preference=name;task=input\"><b>[real_name]</b></a> "
|
||||
@@ -263,41 +265,68 @@ datum/preferences
|
||||
dat += "[(sound_adminhelp)?"On":"Off"] <a href='byond://?src=\ref[user];preference=hear_adminhelps'>toggle</a><br>"
|
||||
|
||||
if(config.allow_admin_ooccolor && check_rights(R_FUN,0))
|
||||
dat += "<br><b>OOC</b><br>"
|
||||
dat += "<a href='byond://?src=\ref[user];preference=ooccolor;task=input'>Change color</a> <font face=\"fixedsys\" size=\"3\" color=\"[ooccolor]\"><table style='display:inline;' bgcolor=\"[ooccolor]\"><tr><td>__</td></tr></table></font><br>"
|
||||
dat += "<br><a href='byond://?src=\ref[user];preference=ooccolor;task=input'><b>OOC color</b></a> <font face=\"fixedsys\" size=\"3\" color=\"[ooccolor]\"><table style='display:inline;' bgcolor=\"[ooccolor]\"><tr><td>__</td></tr></table></font><br>"
|
||||
|
||||
dat += "<br><b>Occupation Choices</b><br>"
|
||||
dat += "\t<a href=\"byond://?src=\ref[user];preference=job;task=menu\"><b>Set Preferences</b></a><br><br>"
|
||||
dat += "\t<a href=\"byond://?src=\ref[user];preference=job;task=menu\"><b>Occupation Preferences</b></a><br>"
|
||||
|
||||
if(jobban_isbanned(user, "Records"))
|
||||
dat += "<b>You are banned from using character records.</b><br>"
|
||||
else
|
||||
dat += "<b><a href=\"byond://?src=\ref[user];preference=records;record=1\">Character Records</a></b><br><br>"
|
||||
dat += "<b><a href=\"byond://?src=\ref[user];preference=records;record=1\">Character Records</a></b><br>"
|
||||
|
||||
dat += "<b>Flavor Text</b><br>"
|
||||
dat += "<a href='byond://?src=\ref[user];preference=flavor_text;task=input'>Change</a><br>"
|
||||
dat += "\t<a href=\"byond://?src=\ref[user];preference=skills\"><b>Set Skills</b> (<i>[GetSkillClass(used_skillpoints)][used_skillpoints > 0 ? " [used_skillpoints]" : "0"])</i></a><br>"
|
||||
|
||||
dat += "<a href='byond://?src=\ref[user];preference=flavor_text;task=input'><b>Set Flavor Text</b></a><br>"
|
||||
if(lentext(flavor_text) <= 40)
|
||||
if(!lentext(flavor_text))
|
||||
dat += "\[...\]"
|
||||
else
|
||||
dat += "[flavor_text]"
|
||||
else
|
||||
dat += "[copytext(flavor_text, 1, 37)]...<br>"
|
||||
dat += "<br>"
|
||||
|
||||
dat += "<b>Skill Choices</b><br>"
|
||||
dat += "\t<i>[GetSkillClass(used_skillpoints)]</i> ([used_skillpoints])<br>"
|
||||
dat += "\t<a href=\"byond://?src=\ref[user];preference=skills\"><b>Set Skills</b></a><br><br>"
|
||||
|
||||
//column 2
|
||||
dat += "</td><td width='310px'>" //height='300px'
|
||||
|
||||
dat += "<table><tr><td width=100><b>Body</b> "
|
||||
dat += "(<a href=\"byond://?src=\ref[user];preference=all;task=random\">®</A>)"
|
||||
//antag
|
||||
dat += "<br>"
|
||||
if(jobban_isbanned(user, "Syndicate"))
|
||||
dat += "<b>You are banned from antagonist roles.</b>"
|
||||
src.be_special = 0
|
||||
else
|
||||
var/n = 0
|
||||
for (var/i in special_roles)
|
||||
if(special_roles[i]) //if mode is available on the server
|
||||
if(jobban_isbanned(user, i))
|
||||
dat += "<b>Be [i]:</b> <font color=red><b> \[BANNED]</b></font><br>"
|
||||
else if(i == "pai candidate")
|
||||
if(jobban_isbanned(user, "pAI"))
|
||||
dat += "<b>Be [i]:</b> <font color=red><b> \[BANNED]</b></font><br>"
|
||||
else
|
||||
dat += "<b>Be [i]:</b> <a href=\"byond://?src=\ref[user];preference=be_special;num=[n]\"><b>[src.be_special&(1<<n) ? "Yes" : "No"]</b></a><br>"
|
||||
n++
|
||||
dat += "</td>"
|
||||
|
||||
//COLUMN 2
|
||||
dat += "<td>"
|
||||
dat += "<table><tr>"
|
||||
|
||||
dat += "<td width='142px'>"
|
||||
dat += "<b>Body</b> (<a href=\"byond://?src=\ref[user];preference=all;task=random\">®</A>)<br>"
|
||||
dat += "Species: <a href='byond://?src=\ref[user];preference=species;task=input'>[species]</a><br>"
|
||||
dat += "Blood Type: <a href='byond://?src=\ref[user];preference=b_type;task=input'>[b_type]</a><br>"
|
||||
dat += "Skin Tone: <a href='byond://?src=\ref[user];preference=s_tone;task=input'>[-s_tone + 35]/220<br></a>"
|
||||
dat += "Skin Tone: <a href='byond://?src=\ref[user];preference=s_tone;task=input'>[-s_tone + 35]/220</a><br>"
|
||||
dat += "<a href='byond://?src=\ref[user];preference=skin_style;task=input'>Adjust Skin</a><br>"
|
||||
dat += "<a href='byond://?src=\ref[user];preference=limbs;task=input'>Adjust Limbs</a><br>"
|
||||
dat += "</td>"
|
||||
|
||||
dat += "Limbs: <a href='byond://?src=\ref[user];preference=limbs;task=input'>Adjust Limbs</a><br>"
|
||||
dat += "<td><b>Preview</b></br>"
|
||||
dat += "<img src=previewicon.png height=64 width=64><img src=previewicon2.png height=64 width=64></br></td>"
|
||||
|
||||
dat += "</tr></table>"
|
||||
|
||||
//display limbs below
|
||||
var/ind = 0
|
||||
for(var/name in organ_data)
|
||||
//world << "[ind] \ [organ_data.len]"
|
||||
var/status = organ_data[name]
|
||||
var/organ_name = null
|
||||
switch(name)
|
||||
@@ -319,11 +348,18 @@ datum/preferences
|
||||
organ_name = "right hand"
|
||||
|
||||
if(status == "cyborg")
|
||||
dat += "\tRobotical [organ_name] prothesis<br>"
|
||||
if(status == "amputated")
|
||||
dat += "\tAmputated [organ_name]<br>"
|
||||
dat+="<br>"
|
||||
|
||||
++ind
|
||||
if(ind > 1)
|
||||
dat += ", "
|
||||
dat += "\tMechanical [organ_name] prothesis"
|
||||
else if(status == "amputated")
|
||||
++ind
|
||||
if(ind > 1)
|
||||
dat += ", "
|
||||
dat += "\tAmputated [organ_name]"
|
||||
if(ind)
|
||||
dat += "\[...\]"
|
||||
dat += "<br><br>"
|
||||
|
||||
if(gender == MALE)
|
||||
dat += "Underwear: <a href =\"byond://?src=\ref[user];preference=underwear;task=input\"><b>[underwear_m[underwear]]</b></a><br>"
|
||||
@@ -332,8 +368,6 @@ datum/preferences
|
||||
|
||||
dat += "Backpack Type:<br><a href =\"byond://?src=\ref[user];preference=bag;task=input\"><b>[backbaglist[backbag]]</b></a><br>"
|
||||
|
||||
dat += "</td><td><b>Preview</b><br><img src=previewicon.png height=64 width=64><img src=previewicon2.png height=64 width=64></td></tr></table>"
|
||||
|
||||
dat += "<br><b>Hair</b><br>"
|
||||
dat += "<a href='byond://?src=\ref[user];preference=hair;task=input'>Change Color</a> <font face=\"fixedsys\" size=\"3\" color=\"#[num2hex(r_hair, 2)][num2hex(g_hair, 2)][num2hex(b_hair, 2)]\"><table style='display:inline;' bgcolor=\"#[num2hex(r_hair, 2)][num2hex(g_hair, 2)][num2hex(b_hair)]\"><tr><td>__</td></tr></table></font><br>"
|
||||
dat += "Style: <a href='byond://?src=\ref[user];preference=h_style;task=input'>[h_style]</a><br>"
|
||||
@@ -345,22 +379,7 @@ datum/preferences
|
||||
dat += "<br><b>Eyes</b><br>"
|
||||
dat += "<a href='byond://?src=\ref[user];preference=eyes;task=input'>Change Color</a> <font face=\"fixedsys\" size=\"3\" color=\"#[num2hex(r_eyes, 2)][num2hex(g_eyes, 2)][num2hex(b_eyes, 2)]\"><table style='display:inline;' bgcolor=\"#[num2hex(r_eyes, 2)][num2hex(g_eyes, 2)][num2hex(b_eyes)]\"><tr><td>__</td></tr></table></font>"
|
||||
|
||||
dat += "<br><br>"
|
||||
if(jobban_isbanned(user, "Syndicate"))
|
||||
dat += "<b>You are banned from antagonist roles.</b>"
|
||||
src.be_special = 0
|
||||
else
|
||||
var/n = 0
|
||||
for (var/i in special_roles)
|
||||
if(special_roles[i]) //if mode is available on the server
|
||||
if(jobban_isbanned(user, i))
|
||||
dat += "<b>Be [i]:</b> <font color=red><b> \[BANNED]</b></font><br>"
|
||||
else if(i == "pai candidate")
|
||||
if(jobban_isbanned(user, "pAI"))
|
||||
dat += "<b>Be [i]:</b> <font color=red><b> \[BANNED]</b></font><br>"
|
||||
else
|
||||
dat += "<b>Be [i]:</b> <a href=\"byond://?src=\ref[user];preference=be_special;num=[n]\"><b>[src.be_special&(1<<n) ? "Yes" : "No"]</b></a><br>"
|
||||
n++
|
||||
dat += "<br>"
|
||||
dat += "</td></tr></table><center>"
|
||||
|
||||
dat += "<hr>"
|
||||
@@ -1021,6 +1040,10 @@ datum/preferences
|
||||
if(second_limb)
|
||||
organ_data[second_limb] = "cyborg"
|
||||
|
||||
if("skin_style")
|
||||
var/skin_style_name = input(user, "Select a new skin style") as null|anything in list("default1", "default2", "default3")
|
||||
if(!skin_style_name) return
|
||||
|
||||
|
||||
else
|
||||
switch(href_list["preference"])
|
||||
@@ -1231,6 +1254,7 @@ datum/preferences
|
||||
C.be_alien = be_special & BE_ALIEN
|
||||
C.be_pai = be_special & BE_PAI
|
||||
C.be_syndicate = be_special & BE_TRAITOR
|
||||
C.be_spaceninja = be_special & BE_SPACENINJA
|
||||
if(isnull(src.ghost_ears)) src.ghost_ears = 1 //There were problems where the default was null before someone saved their profile.
|
||||
C.ghost_ears = src.ghost_ears
|
||||
C.ghost_sight = src.ghost_sight
|
||||
|
||||
@@ -416,3 +416,29 @@
|
||||
name = "Tajaran Ears"
|
||||
icon_state = "tajears"
|
||||
species_allowed = list("Tajaran")
|
||||
|
||||
//skin styles - WIP
|
||||
|
||||
/datum/sprite_accessory/skin
|
||||
human
|
||||
name = "Default human skin"
|
||||
icon = "human"
|
||||
|
||||
human_tatt01
|
||||
name = "Tatt01 human skin"
|
||||
icon = "human_tattoo1"
|
||||
|
||||
tajaran
|
||||
name = "Default tajaran skin"
|
||||
icon = "tajaran"
|
||||
species_allowed = list("Tajaran")
|
||||
|
||||
soghun
|
||||
name = "Default soghun skin"
|
||||
icon = "soghun"
|
||||
species_allowed = list("Soghun")
|
||||
|
||||
skrell
|
||||
name = "Default skrell skin"
|
||||
icon = "skrell"
|
||||
species_allowed = list("Skrell")
|
||||
|
||||
@@ -518,6 +518,7 @@
|
||||
if ((!( L.stat ) && L.canmove && !( L.restrained() )))
|
||||
var/resisting = 0
|
||||
for(var/obj/O in L.requests)
|
||||
L.requests.Remove(O)
|
||||
del(O)
|
||||
resisting++
|
||||
for(var/obj/item/weapon/grab/G in usr.grabbed_by)
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
var/damage = 10
|
||||
var/damage_type = BRUTE //BRUTE, BURN, TOX, OXY, CLONE are the only things that should be in here
|
||||
var/nodamage = 0 //Determines if the projectile will skip any damage inflictions
|
||||
var/flag = "bullet" //Defines what armor to use when it hits things. Must be set to bullet, laser, energy,or bomb
|
||||
var/flag = "bullet" //Defines what armor to use when it hits things. Must be set to bullet, laser, energy,or bomb //Cael - bio and rad are also valid
|
||||
var/projectile_type = "/obj/item/projectile"
|
||||
var/kill_count = 50 //This will de-increment every process(). When 0, it will delete the projectile.
|
||||
//Effects
|
||||
@@ -80,7 +80,14 @@
|
||||
forcedodge = 1
|
||||
else
|
||||
var/distance = get_dist(original,loc)
|
||||
def_zone = ran_zone(def_zone, 100-(5*distance)) //Lower accurancy/longer range tradeoff.
|
||||
//Lower accurancy/longer range tradeoff. Distance matters a lot here, so at
|
||||
// close distance, actually RAISE the chance to hit.
|
||||
def_zone = get_zone_with_miss_chance(def_zone, M, -30 + 8*distance)
|
||||
|
||||
if(!def_zone)
|
||||
visible_message("\The [src] misses [M] narrowly.")
|
||||
del(src)
|
||||
return
|
||||
if(silenced)
|
||||
M << "\red You've been shot in the [parse_zone(def_zone)] by the [src.name]!"
|
||||
else
|
||||
|
||||
@@ -125,3 +125,11 @@
|
||||
M.show_message("\blue The radiation beam dissipates harmlessly through your body.")
|
||||
else
|
||||
return 1
|
||||
|
||||
/obj/item/projectile/neurotoxin
|
||||
name = "neurotoxin"
|
||||
icon_state = "toxin"
|
||||
damage = 5
|
||||
damage_type = TOX
|
||||
weaken = 5
|
||||
flag = "bio"
|
||||
|
||||
@@ -83,9 +83,9 @@ datum
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(prob(10))
|
||||
M << "\red Your insides are burning!"
|
||||
M.adjustToxLoss(rand(20,60))
|
||||
M.adjustToxLoss(rand(20,60)*REAGENTS_EFFECT_MULTIPLIER)
|
||||
else if(prob(40))
|
||||
M.heal_organ_damage(5,0)
|
||||
M.heal_organ_damage(5*REAGENTS_EFFECT_MULTIPLIER,0)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -305,29 +305,29 @@ datum
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
M.drowsyness = max(M.drowsyness-2, 0)
|
||||
M.drowsyness = max(M.drowsyness-2*REAGENTS_EFFECT_MULTIPLIER, 0)
|
||||
if(holder.has_reagent("toxin"))
|
||||
holder.remove_reagent("toxin", 2)
|
||||
holder.remove_reagent("toxin", 2*REAGENTS_EFFECT_MULTIPLIER)
|
||||
if(holder.has_reagent("stoxin"))
|
||||
holder.remove_reagent("stoxin", 2)
|
||||
holder.remove_reagent("stoxin", 2*REAGENTS_EFFECT_MULTIPLIER)
|
||||
if(holder.has_reagent("plasma"))
|
||||
holder.remove_reagent("plasma", 1)
|
||||
holder.remove_reagent("plasma", 1*REAGENTS_EFFECT_MULTIPLIER)
|
||||
if(holder.has_reagent("sacid"))
|
||||
holder.remove_reagent("sacid", 1)
|
||||
holder.remove_reagent("sacid", 1*REAGENTS_EFFECT_MULTIPLIER)
|
||||
if(holder.has_reagent("cyanide"))
|
||||
holder.remove_reagent("cyanide", 1)
|
||||
holder.remove_reagent("cyanide", 1*REAGENTS_EFFECT_MULTIPLIER)
|
||||
if(holder.has_reagent("amatoxin"))
|
||||
holder.remove_reagent("amatoxin", 2)
|
||||
holder.remove_reagent("amatoxin", 2*REAGENTS_EFFECT_MULTIPLIER)
|
||||
if(holder.has_reagent("chloralhydrate"))
|
||||
holder.remove_reagent("chloralhydrate", 5)
|
||||
holder.remove_reagent("chloralhydrate", 5*REAGENTS_EFFECT_MULTIPLIER)
|
||||
if(holder.has_reagent("carpotoxin"))
|
||||
holder.remove_reagent("carpotoxin", 1)
|
||||
holder.remove_reagent("carpotoxin", 1*REAGENTS_EFFECT_MULTIPLIER)
|
||||
if(holder.has_reagent("zombiepowder"))
|
||||
holder.remove_reagent("zombiepowder", 0.5)
|
||||
holder.remove_reagent("zombiepowder", 0.5*REAGENTS_EFFECT_MULTIPLIER)
|
||||
if(holder.has_reagent("mindbreaker"))
|
||||
holder.remove_reagent("mindbreaker", 2)
|
||||
M.hallucination = max(0, M.hallucination - 5)
|
||||
M.adjustToxLoss(-2)
|
||||
holder.remove_reagent("mindbreaker", 2*REAGENTS_EFFECT_MULTIPLIER)
|
||||
M.hallucination = max(0, M.hallucination - 5*REAGENTS_EFFECT_MULTIPLIER)
|
||||
M.adjustToxLoss(-2*REAGENTS_EFFECT_MULTIPLIER)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -340,7 +340,7 @@ datum
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
M.adjustToxLoss(1.5)
|
||||
M.adjustToxLoss(1.5*REAGENTS_EFFECT_MULTIPLIER)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -353,8 +353,8 @@ datum
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
M.adjustToxLoss(3)
|
||||
M.adjustOxyLoss(3)
|
||||
M.adjustToxLoss(3*REAGENTS_EFFECT_MULTIPLIER)
|
||||
M.adjustOxyLoss(3*REAGENTS_EFFECT_MULTIPLIER)
|
||||
M.sleeping += 1
|
||||
..()
|
||||
return
|
||||
@@ -439,7 +439,7 @@ datum
|
||||
if(!M) M = holder.my_atom
|
||||
if(M.losebreath >= 10)
|
||||
M.losebreath = max(10, M.losebreath-5)
|
||||
holder.remove_reagent(src.id, 0.2)
|
||||
holder.remove_reagent(src.id, 0.5 * REAGENTS_METABOLISM)
|
||||
return
|
||||
|
||||
space_drugs
|
||||
@@ -456,7 +456,7 @@ datum
|
||||
if(M.canmove)
|
||||
if(prob(10)) step(M, pick(cardinal))
|
||||
if(prob(7)) M.emote(pick("twitch","drool","moan","giggle"))
|
||||
holder.remove_reagent(src.id, 0.2)
|
||||
holder.remove_reagent(src.id, 0.5 * REAGENTS_METABOLISM)
|
||||
return
|
||||
|
||||
serotrotium
|
||||
@@ -469,7 +469,7 @@ datum
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(ishuman(M))
|
||||
if(prob(7)) M.emote(pick("twitch","drool","moan","gasp"))
|
||||
holder.remove_reagent(src.id, 0.1)
|
||||
holder.remove_reagent(src.id, 0.25 * REAGENTS_METABOLISM)
|
||||
return
|
||||
|
||||
/* silicate
|
||||
@@ -585,7 +585,7 @@ datum
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
M.take_organ_damage(1, 0)
|
||||
M.take_organ_damage(1*REAGENTS_EFFECT_MULTIPLIER, 0)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -598,7 +598,7 @@ datum
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
M.adjustToxLoss(1)
|
||||
M.adjustToxLoss(1*REAGENTS_EFFECT_MULTIPLIER)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -639,7 +639,7 @@ datum
|
||||
color = "#808080" // rgb: 128, 128, 128
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
M.nutrition += 1
|
||||
M.nutrition += 1*REAGENTS_EFFECT_MULTIPLIER
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -652,8 +652,8 @@ datum
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
M.adjustToxLoss(1)
|
||||
M.take_organ_damage(0, 1)
|
||||
M.adjustToxLoss(1*REAGENTS_EFFECT_MULTIPLIER)
|
||||
M.take_organ_damage(0, 1*REAGENTS_EFFECT_MULTIPLIER)
|
||||
..()
|
||||
return
|
||||
reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume)
|
||||
@@ -725,7 +725,7 @@ datum
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
M.adjustToxLoss(1)
|
||||
M.adjustToxLoss(1*REAGENTS_EFFECT_MULTIPLIER)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -907,7 +907,7 @@ datum
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!M.dna) return //No robots, AIs, aliens, Ians or other mobs should be affected by this.
|
||||
if(!M) M = holder.my_atom
|
||||
M.apply_effect(10,IRRADIATE,0)
|
||||
M.apply_effect(10*REAGENTS_EFFECT_MULTIPLIER,IRRADIATE,0)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -935,7 +935,7 @@ datum
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
M.nutrition += nutriment_factor
|
||||
M.nutrition += nutriment_factor*REAGENTS_EFFECT_MULTIPLIER
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -1004,7 +1004,7 @@ datum
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
M.apply_effect(1,IRRADIATE,0)
|
||||
M.apply_effect(1*REAGENTS_EFFECT_MULTIPLIER,IRRADIATE,0)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -1055,7 +1055,7 @@ datum
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
M.adjustToxLoss(1)
|
||||
M.adjustToxLoss(1*REAGENTS_EFFECT_MULTIPLIER)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -1157,8 +1157,8 @@ datum
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
if(holder.has_reagent("inaprovaline"))
|
||||
holder.remove_reagent("inaprovaline", 2)
|
||||
M.adjustToxLoss(1)
|
||||
holder.remove_reagent("inaprovaline", 2*REAGENTS_EFFECT_MULTIPLIER)
|
||||
M.adjustToxLoss(1*REAGENTS_EFFECT_MULTIPLIER)
|
||||
..()
|
||||
return
|
||||
reaction_obj(var/obj/O, var/volume)
|
||||
@@ -1211,7 +1211,7 @@ datum
|
||||
M.make_dizzy(1)
|
||||
if(!M.confused) M.confused = 1
|
||||
M.confused = max(M.confused, 20)
|
||||
holder.remove_reagent(src.id, 0.2)
|
||||
holder.remove_reagent(src.id, 0.5 * REAGENTS_METABOLISM)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -1227,7 +1227,7 @@ datum
|
||||
return
|
||||
if(!M) M = holder.my_atom
|
||||
if(prob(33))
|
||||
M.take_organ_damage(1, 0)
|
||||
M.take_organ_damage(1*REAGENTS_EFFECT_MULTIPLIER, 0)
|
||||
M.adjustOxyLoss(3)
|
||||
if(prob(20)) M.emote("gasp")
|
||||
..()
|
||||
@@ -1244,7 +1244,7 @@ datum
|
||||
if(M.stat == 2.0)
|
||||
return
|
||||
if(!M) M = holder.my_atom
|
||||
M.heal_organ_damage(0,2)
|
||||
M.heal_organ_damage(0,2*REAGENTS_EFFECT_MULTIPLIER)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -1259,7 +1259,7 @@ datum
|
||||
if(M.stat == 2.0) //THE GUY IS **DEAD**! BEREFT OF ALL LIFE HE RESTS IN PEACE etc etc. He does NOT metabolise shit anymore, god DAMN
|
||||
return
|
||||
if(!M) M = holder.my_atom
|
||||
M.heal_organ_damage(0,3)
|
||||
M.heal_organ_damage(0,3*REAGENTS_EFFECT_MULTIPLIER)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -1274,9 +1274,9 @@ datum
|
||||
if(M.stat == 2.0)
|
||||
return //See above, down and around. --Agouri
|
||||
if(!M) M = holder.my_atom
|
||||
M.adjustOxyLoss(-2)
|
||||
M.adjustOxyLoss(-2*REAGENTS_EFFECT_MULTIPLIER)
|
||||
if(holder.has_reagent("lexorin"))
|
||||
holder.remove_reagent("lexorin", 2)
|
||||
holder.remove_reagent("lexorin", 2*REAGENTS_EFFECT_MULTIPLIER)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -1293,7 +1293,7 @@ datum
|
||||
if(!M) M = holder.my_atom
|
||||
M.adjustOxyLoss(-M.getOxyLoss())
|
||||
if(holder.has_reagent("lexorin"))
|
||||
holder.remove_reagent("lexorin", 2)
|
||||
holder.remove_reagent("lexorin", 2*REAGENTS_EFFECT_MULTIPLIER)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -1308,10 +1308,10 @@ datum
|
||||
if(M.stat == 2.0)
|
||||
return
|
||||
if(!M) M = holder.my_atom
|
||||
if(M.getOxyLoss() && prob(40)) M.adjustOxyLoss(-1)
|
||||
if(M.getBruteLoss() && prob(40)) M.heal_organ_damage(1,0)
|
||||
if(M.getFireLoss() && prob(40)) M.heal_organ_damage(0,1)
|
||||
if(M.getToxLoss() && prob(40)) M.adjustToxLoss(-1)
|
||||
if(M.getOxyLoss() && prob(40)) M.adjustOxyLoss(-1*REAGENTS_EFFECT_MULTIPLIER)
|
||||
if(M.getBruteLoss() && prob(40)) M.heal_organ_damage(1*REAGENTS_EFFECT_MULTIPLIER,0)
|
||||
if(M.getFireLoss() && prob(40)) M.heal_organ_damage(0,1*REAGENTS_EFFECT_MULTIPLIER)
|
||||
if(M.getToxLoss() && prob(40)) M.adjustToxLoss(-1*REAGENTS_EFFECT_MULTIPLIER)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -1394,7 +1394,7 @@ datum
|
||||
M.AdjustWeakened(-1)
|
||||
if(holder.has_reagent("mindbreaker"))
|
||||
holder.remove_reagent("mindbreaker", 5)
|
||||
M.hallucination = max(0, M.hallucination - 10)
|
||||
M.hallucination = max(0, M.hallucination - 10*REAGENTS_EFFECT_MULTIPLIER)
|
||||
if(prob(60)) M.adjustToxLoss(1)
|
||||
..()
|
||||
return
|
||||
@@ -1410,7 +1410,7 @@ datum
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
M.jitteriness = max(M.jitteriness-5,0)
|
||||
if(prob(80)) M.adjustBrainLoss(1)
|
||||
if(prob(80)) M.adjustBrainLoss(1*REAGENTS_EFFECT_MULTIPLIER)
|
||||
if(prob(50)) M.drowsyness = max(M.drowsyness, 3)
|
||||
if(prob(10)) M.emote("drool")
|
||||
..()
|
||||
@@ -1425,7 +1425,7 @@ datum
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
M.radiation = max(M.radiation-3,0)
|
||||
M.radiation = max(M.radiation-3*REAGENTS_EFFECT_MULTIPLIER,0)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -1440,10 +1440,10 @@ datum
|
||||
if(M.stat == 2.0)
|
||||
return //See above, down and around. --Agouri
|
||||
if(!M) M = holder.my_atom
|
||||
M.radiation = max(M.radiation-7,0)
|
||||
M.adjustToxLoss(-1)
|
||||
M.radiation = max(M.radiation-7*REAGENTS_EFFECT_MULTIPLIER,0)
|
||||
M.adjustToxLoss(-1*REAGENTS_EFFECT_MULTIPLIER)
|
||||
if(prob(15))
|
||||
M.take_organ_damage(1, 0)
|
||||
M.take_organ_damage(1*REAGENTS_EFFECT_MULTIPLIER, 0)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -1456,7 +1456,7 @@ datum
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
M.adjustBrainLoss(-3)
|
||||
M.adjustBrainLoss(-3*REAGENTS_EFFECT_MULTIPLIER)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -1488,7 +1488,7 @@ datum
|
||||
if(M.stat == 2.0)
|
||||
return
|
||||
if(!M) M = holder.my_atom
|
||||
M.heal_organ_damage(2,0)
|
||||
M.heal_organ_damage(2*REAGENTS_EFFECT_MULTIPLIER,0)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -1502,7 +1502,7 @@ datum
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
if(prob(5)) M.emote(pick("twitch","blink_r","shiver"))
|
||||
holder.remove_reagent(src.id, 0.2)
|
||||
holder.remove_reagent(src.id, 0.5 * REAGENTS_METABOLISM)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -1549,7 +1549,6 @@ datum
|
||||
color = "#C8A5DC" // rgb: 200, 165, 220
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)//no more mr. panacea
|
||||
holder.remove_reagent(src.id, 0.2)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -1562,7 +1561,7 @@ datum
|
||||
|
||||
on_mob_life(var/mob/living/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
M.adjustToxLoss(2)
|
||||
M.adjustToxLoss(2*REAGENTS_EFFECT_MULTIPLIER)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -1575,8 +1574,8 @@ datum
|
||||
on_mob_life(var/mob/living/carbon/M as mob)
|
||||
if(!M) M = holder.my_atom
|
||||
M.status_flags |= FAKEDEATH
|
||||
M.adjustOxyLoss(0.5)
|
||||
M.adjustToxLoss(0.5)
|
||||
M.adjustOxyLoss(0.5*REAGENTS_EFFECT_MULTIPLIER)
|
||||
M.adjustToxLoss(0.5*REAGENTS_EFFECT_MULTIPLIER)
|
||||
M.Weaken(10)
|
||||
M.silent = max(M.silent, 10)
|
||||
M.tod = worldtime2text()
|
||||
@@ -1710,7 +1709,7 @@ datum
|
||||
M.sleeping += 1
|
||||
if(61 to INFINITY)
|
||||
M.sleeping += 1
|
||||
M.adjustToxLoss(data - 50)
|
||||
M.adjustToxLoss((data - 50) * REAGENTS_EFFECT_MULTIPLIER)
|
||||
..()
|
||||
return
|
||||
|
||||
@@ -2144,6 +2143,7 @@ datum
|
||||
if(!M) M = holder.my_atom
|
||||
M.druggy = max(M.druggy, 30)
|
||||
if(!data) data = 1
|
||||
|
||||
switch(data)
|
||||
if(1 to 5)
|
||||
if (!M.stuttering) M.stuttering = 1
|
||||
|
||||
@@ -237,6 +237,14 @@
|
||||
..()
|
||||
reagents.add_reagent("wine", 100)
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/bottle/absinthe
|
||||
name = "Jailbreaker Verte"
|
||||
desc = "Twenty-fourth century Green Fairy, one sip of this and you just know you're gonna have a good time."
|
||||
icon_state = "absinthebottle"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("absinthe", 100)
|
||||
|
||||
//////////////////////////JUICES AND STUFF ///////////////////////
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/drinks/bottle/orangejuice
|
||||
|
||||
@@ -259,6 +259,16 @@
|
||||
reagents.add_reagent("sugar", 3)
|
||||
bitesize = 2
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy/donor
|
||||
name = "Donor Candy"
|
||||
desc = "A little treat for blood donors."
|
||||
trash = /obj/item/trash/candy
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("nutriment", 10)
|
||||
reagents.add_reagent("sugar", 3)
|
||||
bitesize = 5
|
||||
|
||||
/obj/item/weapon/reagent_containers/food/snacks/candy_corn
|
||||
name = "candy corn"
|
||||
desc = "It's a handful of candy corn. Can be stored in a detective's hat."
|
||||
|
||||
@@ -6,8 +6,9 @@
|
||||
name = "hypospray"
|
||||
desc = "The DeForest Medical Corporation hypospray is a sterile, air-needle autoinjector for rapid administration of drugs to patients."
|
||||
icon = 'icons/obj/syringe.dmi'
|
||||
item_state = "hypo"
|
||||
item_state = "hypo1"
|
||||
icon_state = "hypo"
|
||||
var/original_icon_state = "hypo"
|
||||
amount_per_transfer_from_this = 5
|
||||
volume = 30
|
||||
possible_transfer_amounts = null
|
||||
@@ -54,6 +55,7 @@
|
||||
name = "autoinjector"
|
||||
desc = "A rapid and safe way to administer small amounts of drugs by untrained or trained personnel."
|
||||
icon_state = "autoinjector"
|
||||
original_icon_state = "autoinjector"
|
||||
item_state = "autoinjector"
|
||||
amount_per_transfer_from_this = 5
|
||||
volume = 5
|
||||
@@ -72,9 +74,9 @@
|
||||
|
||||
/obj/item/weapon/reagent_containers/hypospray/autoinjector/update_icon()
|
||||
if(reagents.total_volume > 0)
|
||||
icon_state = "[initial(icon_state)]1"
|
||||
icon_state = "[original_icon_state]1"
|
||||
else
|
||||
icon_state = "[initial(icon_state)]0"
|
||||
icon_state = "[original_icon_state]0"
|
||||
|
||||
/obj/item/weapon/reagent_containers/hypospray/autoinjector/examine()
|
||||
..()
|
||||
|
||||
@@ -176,3 +176,22 @@
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("bicaridine", 30)
|
||||
|
||||
/obj/item/weapon/reagent_containers/pill/happy
|
||||
name = "Happy pill"
|
||||
desc = "Happy happy joy joy!"
|
||||
icon_state = "pill18"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("space_drugs", 15)
|
||||
reagents.add_reagent("sugar", 15)
|
||||
|
||||
/obj/item/weapon/reagent_containers/pill/zoom
|
||||
name = "Zoom pill"
|
||||
desc = "Zoooom!"
|
||||
icon_state = "pill18"
|
||||
New()
|
||||
..()
|
||||
reagents.add_reagent("impedrezene", 10)
|
||||
reagents.add_reagent("synaptizine", 5)
|
||||
reagents.add_reagent("hyperzine", 5)
|
||||
|
||||
@@ -69,7 +69,10 @@
|
||||
|
||||
// Factor of how fast mob nutrition decreases
|
||||
#define HUNGER_FACTOR 0.05
|
||||
#define REAGENTS_METABOLISM 0.4
|
||||
#define REAGENTS_METABOLISM 0.02
|
||||
// By defining the effect multiplier this way, it'll exactly adjust
|
||||
// all effects according to how they originally were with the 0.4 metabolism
|
||||
#define REAGENTS_EFFECT_MULTIPLIER REAGENTS_METABOLISM / 0.4
|
||||
|
||||
#define MINIMUM_AIR_RATIO_TO_SUSPEND 0.05
|
||||
//Minimum ratio of air that must move to/from a tile to suspend group processing
|
||||
|
||||
@@ -11,6 +11,7 @@ daaneesh: Zelda Creedy: /obj/item/weapon/crowbar/fluff/zelda_creedy_1
|
||||
desiderium: Momiji Inubashiri: /obj/item/clothing/under/fluff/olddressuniform
|
||||
desiderium: Rook Maudlin: /obj/item/clothing/suit/det_suit/fluff/retpolcoat, /obj/item/clothing/head/det_hat/fluff/retpolcap, /obj/item/clothing/under/det/fluff/retpoluniform
|
||||
deusdactyl: James Girard: /obj/item/clothing/head/secsoft/fluff/swatcap, /obj/item/clothing/suit/armor/vest/fluff/deus_blueshield
|
||||
donofnyc3: Oen'g Issek: /obj/item/weapon/melee/baton/fluff/oeng_baton
|
||||
eternal248: Maximilian Haynes: /obj/item/weapon/paper/certificate
|
||||
executivekill: Hunter Duke: /obj/item/weapon/lighter/zippo/fluff/executivekill_1
|
||||
fastler: Fastler Greay: /obj/item/weapon/card/id/fluff/lifetime
|
||||
@@ -21,7 +22,10 @@ furohman: Fay Sullivan: /obj/item/weapon/lighter/zippo/fluff/fay_sullivan_1
|
||||
furlucis: Chal Appara: /obj/item/clothing/gloves/fluff/chal_appara_1
|
||||
gvazdas: Sarah Carbrokes: /obj/item/fluff/sarah_carbrokes_1
|
||||
jamini: Edwin Atweeke: /obj/item/clothing/suit/labcoat/fluff/burnt
|
||||
jamini: Nasir Khayyam: /obj/item/clothing/tie/fluff/nasir_khayyam_1
|
||||
jadepython: Thysse Ezinwa: /obj/item/clothing/glasses/eyepatch/fluff/thysse_1
|
||||
kirbyelder: John McKeever: /obj/item/paper/fluff/john_mckeever_1
|
||||
leon_the_killer: johnathan Falcian: /obj/item/weapon/clipboard/notebook/fluff/johnathan_falcian_1
|
||||
leonheart11: Johann Erzatz: /obj/item/weapon/reagent_containers/food/drinks/flask/fluff/johann_erzatz_1
|
||||
lexusjjss: Lexus Langg: /obj/item/weapon/clipboard/fluff/smallnote, /obj/item/weapon/reagent_containers/food/drinks/flask/fluff/shinyflask
|
||||
lexusjjss: Zachary Tomlinson: /obj/item/weapon/clipboard/fluff/smallnote, /obj/item/weapon/reagent_containers/food/drinks/flask/fluff/shinyflask
|
||||
@@ -29,10 +33,12 @@ madmalicemccrea: Alice McCrea: /obj/item/clothing/head/welding/fluff/alice_mccre
|
||||
mangled: Li Matsuda: /obj/item/weapon/lighter/zippo/fluff/li_matsuda_1
|
||||
maximumbob: Maurice Bedford: /obj/item/fluff/maurice_bedford_1
|
||||
mcgulliver: Wox Derax: /obj/item/weapon/reagent_containers/food/drinks/flask/fluff/lithiumflask
|
||||
mindphyre: Arjun Chopra: /obj/item/clothing/glasses/fluff/arjun_chopra_1
|
||||
misterbook: Smoke Perkins: /obj/item/clothing/mask/cigarette/pipe
|
||||
misterfox: Rashid Siraj: /obj/item/weapon/storage/bible/tajaran
|
||||
morrinn: Maye Day: /obj/item/weapon/storage/fluff/maye_daye_1
|
||||
naples: Russell Vierson: /obj/item/weapon/lighter/zippo/fluff/naples_1
|
||||
nega10: Ty Foster: /obj/item/clothing/mask/mara_kilpatrick_1
|
||||
nerezza: Asher Spock: /obj/item/weapon/reagent_containers/hypospray/fluff/asher_spock_1
|
||||
nerezza: Asher Spock: /obj/item/weapon/card/id/fluff/asher_spock_2
|
||||
orangebottle: Lillian Levett: /obj/item/weapon/pen/fluff/fancypen
|
||||
@@ -40,11 +46,13 @@ orangebottle: Lilliana Reade: /obj/item/weapon/pen/fluff/fancypen
|
||||
paththegreat: Eli Stevens: /obj/item/weapon/pen/fluff/fountainpen
|
||||
phaux: Tian Krieger: /obj/item/clothing/under/fluff/tian_dress
|
||||
rawrtaicho: Riley Rohtin: /obj/item/weapon/lighter/zippo/fluff/riley_rohtin_1
|
||||
rawrtaicho: Wyatt Engstrom: /obj/item/clothing/under/fluff/wyatt_1
|
||||
roaper: Ian Colm: /obj/item/weapon/card/id/fluff/ian_colm_1
|
||||
roaper: Ian Colm: /obj/item/clothing/glasses/welding/fluff/ian_colm_2
|
||||
rukral: Nashida Bisha'ra: /obj/item/weapon/reagent_containers/glass/beaker/large/fluff/nashida_bishara_1
|
||||
searif: Yuki Matsuda: /obj/item/clothing/under/fluff/jumpsuitdown, /obj/item/clothing/head/welding/fluff/yuki_matsuda_1
|
||||
searif: Ara Al-Jazari: /obj/item/clothing/under/rank/bartender/fluff/classy
|
||||
serithi: Altair An-Nasaqan: /obj/item/clothing/tie/fluff/altair_locket
|
||||
sirribbit: /obj/item/weapon/clipboard/fluff/mcreary_journal
|
||||
sicktrigger: David Fanning: /obj/item/fluff/david_fanning_1
|
||||
silentthunder: Val McNeil: /obj/item/fluff/val_mcneil_1
|
||||
@@ -52,6 +60,7 @@ sniperyeti: Susan Harris: /obj/item/clothing/shoes/magboots/fluff/susan_harris_1
|
||||
spaceman96: Trenna Seber: /obj/item/weapon/pen/fluff/multi, /obj/item/clothing/suit/labcoat/fluff/pink
|
||||
sparklysheep: Cado Keppel: /obj/item/weapon/fluff/cado_keppel_1
|
||||
sparklysheep: Uzenwa Sissra: /obj/item/clothing/glasses/fluff/uzenwa_sissra_1
|
||||
suethecake: Ana Ka'Rimah: /obj/item/weapon/gun/energy/stunrevolver/fluff/ana_peacemaker
|
||||
staghorn: Mara Kilpatrick: /obj/item/clothing/mask/mara_kilpatrick_1
|
||||
tastyfish: Cindy Robertson: /obj/item/weapon/wrapping_paper
|
||||
thatoneguy: Hugo Cinderbatch: /obj/item/weapon/fluff/hugo_cinderbacth_1
|
||||
@@ -62,3 +71,4 @@ tzefa: Wes Solari: /obj/item/fluff/wes_solari_1
|
||||
vinceluk: Seth Sealis: /obj/item/clothing/suit/det_suit/fluff/graycoat
|
||||
whitellama: Ethan Way: /obj/item/fluff/ethan_way_1
|
||||
whitewolf41: Jeremy Wolf: /obj/item/clothing/under/rank/security/fluff/jeremy_wolf_1
|
||||
zuhayr: Jane Doe: /obj/item/clothing/under/fluff/jane_sidsuit
|
||||
@@ -65,6 +65,14 @@ should be listed in the changelog upon commit though. Thanks. -->
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="commit sansserif">
|
||||
<h2 class="date">December 3rd</h2>
|
||||
<h3 class="author">Cael_Aislinn updated:</h3>
|
||||
<ul class="changes bgimages16">
|
||||
<li class="tweak">Aliens have been significantly nerfed: neurotoxin is affected by bio protection suits, tackle stuns for much shorter time and facehuggers have a chance to fail when leaping.</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="commit sansserif">
|
||||
<h2 class="date">23.11.12</h2>
|
||||
<h3 class="author">CIB updated:</h3>
|
||||
|
||||
|
Before Width: | Height: | Size: 134 KiB After Width: | Height: | Size: 137 KiB |
BIN
icons/mob/AI.dmi
|
Before Width: | Height: | Size: 177 KiB After Width: | Height: | Size: 207 KiB |
|
Before Width: | Height: | Size: 7.9 KiB After Width: | Height: | Size: 8.3 KiB |
|
Before Width: | Height: | Size: 122 KiB After Width: | Height: | Size: 122 KiB |
|
Before Width: | Height: | Size: 124 KiB After Width: | Height: | Size: 124 KiB |
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 119 KiB After Width: | Height: | Size: 132 KiB |
|
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 3.0 KiB |
|
Before Width: | Height: | Size: 198 KiB After Width: | Height: | Size: 203 KiB |
|
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 39 KiB |
6693
maps/RowtreeStation.dmm
Normal file
@@ -157,7 +157,7 @@
|
||||
"ada" = (/turf/simulated/floor{icon_state = "red"; dir = 9},/area/security/range)
|
||||
"adb" = (/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/range)
|
||||
"adc" = (/turf/simulated/floor{icon_state = "dark"},/area/security/range)
|
||||
"add" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/security/range)
|
||||
"add" = (/obj/structure/table,/obj/item/device/assembly/timer,/obj/structure/disposalpipe/segment,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/folder/red,/turf/simulated/floor,/area/security/main)
|
||||
"ade" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/security/prison)
|
||||
"adf" = (/obj/structure/closet/secure_closet/injection,/turf/simulated/floor{icon_state = "dark"},/area/security/prison)
|
||||
"adg" = (/obj/machinery/alarm{pixel_y = 23},/turf/simulated/floor{icon_state = "dark"},/area/security/prison)
|
||||
@@ -345,8 +345,8 @@
|
||||
"agG" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/obj/machinery/requests_console{department = "Security"; departmentType = 5; pixel_x = 0; pixel_y = 30},/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden)
|
||||
"agH" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/turf/simulated/floor/plating,/area/security/warden)
|
||||
"agI" = (/obj/structure/table,/obj/machinery/recharger{pixel_y = 4},/turf/simulated/floor{icon_state = "redcorner"; dir = 1},/area/security/main)
|
||||
"agJ" = (/obj/structure/table,/obj/item/device/assembly/timer,/obj/item/weapon/folder/red,/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/security/main)
|
||||
"agK" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/turf/simulated/floor,/area/security/main)
|
||||
"agJ" = (/obj/structure/table,/obj/item/ashtray/glass,/turf/simulated/floor,/area/security/main)
|
||||
"agK" = (/obj/machinery/light/small{dir = 4},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor{icon_state = "dark"},/area/security/range)
|
||||
"agL" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor,/area/security/main)
|
||||
"agM" = (/obj/machinery/power/apc{dir = 4; name = "Security Office APC"; pixel_x = 24; pixel_y = 0},/obj/structure/cable,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/main)
|
||||
"agN" = (/obj/machinery/door/window/eastright{dir = 1; name = "Security Delivery"; req_access_txt = "1"},/obj/structure/disposalpipe/segment,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = ""},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "delivery"},/area/security/main)
|
||||
@@ -2552,8 +2552,8 @@
|
||||
"aXd" = (/obj/machinery/keycard_auth{pixel_x = 24; pixel_y = 0},/obj/structure/filingcabinet/chestdrawer,/turf/simulated/floor{dir = 5; icon_state = "blue"},/area/crew_quarters/heads)
|
||||
"aXe" = (/turf/simulated/floor{icon_state = "bot"},/area/hallway/primary/central)
|
||||
"aXf" = (/obj/machinery/door/firedoor/border_only{dir = 4},/obj/machinery/door/airlock/glass{name = "Diner"},/turf/simulated/floor,/area/crew_quarters/bar)
|
||||
"aXg" = (/obj/effect/sign/maltesefalcon1{pixel_y = 0},/turf/simulated/wall,/area/crew_quarters/bar)
|
||||
"aXh" = (/obj/effect/sign/maltesefalcon2{pixel_y = 0},/turf/simulated/wall,/area/crew_quarters/bar)
|
||||
"aXg" = (/obj/effect/sign/barsign,/turf/simulated/wall,/area/crew_quarters/bar)
|
||||
"aXh" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/weapon/folder/white,/obj/item/weapon/hand_labeler,/obj/item/weapon/gun/syringe,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/item/clothing/glasses/hud/health,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
|
||||
"aXi" = (/turf/simulated/wall,/area/hallway/primary/starboard)
|
||||
"aXj" = (/turf/simulated/floor{dir = 1; icon_state = "whitecorner"},/area/hallway/primary/starboard)
|
||||
"aXk" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor{dir = 1; icon_state = "whitecorner"},/area/hallway/primary/starboard)
|
||||
@@ -3026,7 +3026,7 @@
|
||||
"bgj" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
|
||||
"bgk" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
|
||||
"bgl" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall/r_wall,/area/medical/chemistry)
|
||||
"bgm" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/atmospherics/pipe/manifold{color = "red"; dir = 1; icon_state = "manifold-r-f"; level = 1; name = "pipe manifold"},/obj/structure/closet/secure_closet/chemical,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
|
||||
"bgm" = (/obj/structure/table,/obj/item/weapon/pen,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/item/clothing/tie/stethoscope,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo)
|
||||
"bgn" = (/obj/machinery/atmospherics/pipe/manifold{color = "red"; icon_state = "manifold-r-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
|
||||
"bgo" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
|
||||
"bgp" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
|
||||
@@ -3192,7 +3192,7 @@
|
||||
"bjt" = (/obj/structure/stool/bed/chair/office/light{dir = 1},/obj/effect/landmark/start{name = "Medical Doctor"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
|
||||
"bju" = (/obj/machinery/door_control{desc = "A remote control switch for the medbay foyer."; id = "MedbayFoyer"; name = "Medbay Doors Control"; normaldoorcontrol = 1; pixel_x = 26; range = 6},/obj/structure/stool/bed/chair/office/light{dir = 4},/obj/effect/landmark/start{name = "Medical Doctor"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
|
||||
"bjv" = (/obj/structure/table/reinforced,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
|
||||
"bjw" = (/obj/structure/closet/wardrobe/chemistry_white,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
|
||||
"bjw" = (/obj/structure/table,/obj/item/ashtray/glass,/turf/simulated/floor,/area/bridge/meeting_room)
|
||||
"bjx" = (/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
|
||||
"bjy" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/machinery/light_switch{pixel_y = -23},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
|
||||
"bjz" = (/obj/structure/table,/obj/item/weapon/storage/beakerbox{pixel_x = 2; pixel_y = 2},/obj/item/weapon/reagent_containers/glass/beaker/large,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/storage/pill_bottle/inaprovaline{pixel_x = 5; pixel_y = -2},/obj/machinery/requests_console{department = "Chemistry"; departmentType = 2; pixel_x = 30; pixel_y = 0},/obj/machinery/camera{c_tag = "Chemistry"; dir = 8; network = "SS13"; pixel_y = -10},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
|
||||
@@ -3528,7 +3528,7 @@
|
||||
"bpR" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/medical/chemistry)
|
||||
"bpS" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/device/radio/headset/headset_med,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
|
||||
"bpT" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/stool,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
|
||||
"bpU" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
|
||||
"bpU" = (/obj/structure/table,/obj/item/weapon/folder/blue,/obj/item/weapon/pen/red,/turf/simulated/floor,/area/bridge/meeting_room)
|
||||
"bpV" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/toxins/lab)
|
||||
"bpW" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "white"},/area/toxins/lab)
|
||||
"bpX" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/light_switch{pixel_x = 27},/obj/structure/table,/obj/item/weapon/folder/white,/turf/simulated/floor{icon_state = "white"},/area/toxins/lab)
|
||||
@@ -3581,8 +3581,8 @@
|
||||
"bqS" = (/obj/machinery/power/apc{dir = 1; name = "Cyborg Station APC"; pixel_y = 24},/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/structure/table,/obj/item/weapon/phone{pixel_x = -3; pixel_y = 3},/turf/simulated/floor/bluegrid,/area/comms{name = "\improper Cyborg Station"})
|
||||
"bqT" = (/obj/machinery/computer/aifixer,/turf/simulated/floor/bluegrid,/area/comms{name = "\improper Cyborg Station"})
|
||||
"bqU" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor,/area/bridge/meeting_room)
|
||||
"bqV" = (/obj/structure/table,/obj/item/weapon/pen/red,/turf/simulated/floor,/area/bridge/meeting_room)
|
||||
"bqW" = (/obj/structure/table,/obj/item/weapon/folder/blue,/turf/simulated/floor,/area/bridge/meeting_room)
|
||||
"bqV" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/closet/wardrobe/chemistry_white,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
|
||||
"bqW" = (/obj/structure/closet/wardrobe/chemistry_white,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/closet/secure_closet/chemical,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
|
||||
"bqX" = (/obj/structure/table,/obj/item/weapon/hand_labeler,/obj/item/device/assembly/timer,/turf/simulated/floor,/area/bridge/meeting_room)
|
||||
"bqY" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "heads_meeting"; name = "Meeting Room Window Shields"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/bridge/meeting_room)
|
||||
"bqZ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall,/area/library)
|
||||
@@ -3933,7 +3933,7 @@
|
||||
"bxG" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = ""},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
|
||||
"bxH" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -2; pixel_y = 5},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo)
|
||||
"bxI" = (/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/weapon/stamp/cmo,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo)
|
||||
"bxJ" = (/obj/structure/table,/obj/item/weapon/pen,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/item/clothing/tie/stethoscope,/obj/item/clothing/glasses/hud/health,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo)
|
||||
"bxJ" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/atmospherics/pipe/manifold{color = "red"; dir = 1; icon_state = "manifold-r-f"; level = 1; name = "pipe manifold"},/obj/structure/table,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
|
||||
"bxK" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/medical/cmo)
|
||||
"bxL" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/machinery/light,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
|
||||
"bxM" = (/obj/machinery/atmospherics/pipe/manifold{color = "blue"; dir = 4; icon_state = "manifold-b-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
|
||||
@@ -4514,7 +4514,7 @@
|
||||
"bIP" = (/obj/structure/closet/secure_closet/medical3,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/turf/simulated/floor{icon_state = "whitehall"; dir = 4},/area/medical/medbay)
|
||||
"bIQ" = (/obj/machinery/atmospherics/pipe/manifold{color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
|
||||
"bIR" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
|
||||
"bIS" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/weapon/folder/white,/obj/item/weapon/hand_labeler,/obj/item/weapon/gun/syringe,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
|
||||
"bIS" = (/obj/structure/table,/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/item/ashtray/glass,/turf/simulated/floor,/area/engine/break_room)
|
||||
"bIT" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/medical/medbay)
|
||||
"bIU" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
|
||||
"bIV" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
|
||||
@@ -5223,7 +5223,7 @@
|
||||
"bWw" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
|
||||
"bWx" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/medical,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery)
|
||||
"bWy" = (/obj/item/device/radio/intercom{pixel_y = -25},/obj/structure/stool/bed,/obj/item/weapon/bedsheet/medical,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery)
|
||||
"bWz" = (/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/weapon/gun/syringe,/obj/item/weapon/reagent_containers/dropper,/obj/machinery/light/small,/turf/simulated/floor{icon_state = "whitehall"; dir = 1},/area/medical/surgery)
|
||||
"bWz" = (/obj/structure/table,/obj/item/weapon/folder/white,/obj/item/weapon/gun/syringe,/obj/item/weapon/reagent_containers/dropper,/obj/machinery/light/small,/obj/item/weapon/reagent_containers/food/snacks/candy/donor,/obj/item/weapon/reagent_containers/food/snacks/candy/donor,/obj/item/weapon/reagent_containers/food/snacks/candy/donor,/obj/item/weapon/reagent_containers/food/snacks/candy/donor,/obj/item/weapon/reagent_containers/food/snacks/candy/donor,/turf/simulated/floor{icon_state = "whitehall"; dir = 1},/area/medical/surgery)
|
||||
"bWA" = (/obj/structure/table,/obj/structure/bedsheetbin{pixel_x = 2},/obj/item/clothing/suit/straight_jacket,/obj/item/clothing/mask/muzzle,/turf/simulated/floor{dir = 1; icon_state = "whitecorner"},/area/medical/surgery)
|
||||
"bWB" = (/obj/structure/table,/obj/machinery/cell_charger{pixel_y = 5},/obj/item/weapon/cable_coil,/obj/item/device/multitool,/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/turf/simulated/floor{icon_state = "floorgrime"},/area/toxins/misc_lab)
|
||||
"bWC" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "misclab"; name = "Test Chamber Blast Doors"; opacity = 0},/obj/machinery/door/firedoor/border_only{dir = 4; name = "hazard door east"},/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/toxins/misc_lab)
|
||||
@@ -5466,7 +5466,7 @@
|
||||
"cbf" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor,/area/engine/break_room)
|
||||
"cbg" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/snacks/cheesiehonkers,/obj/item/weapon/reagent_containers/food/drinks/cola{pixel_x = -3},/turf/simulated/floor,/area/engine/break_room)
|
||||
"cbh" = (/obj/structure/table,/obj/item/weapon/folder/yellow,/obj/item/device/flashlight/lamp,/turf/simulated/floor,/area/engine/break_room)
|
||||
"cbi" = (/obj/structure/table,/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor,/area/engine/break_room)
|
||||
"cbi" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion_l (WEST)"; icon_state = "propulsion_l"; dir = 8},/turf/simulated/shuttle/wall{tag = "icon-swall3"; icon_state = "swall3"; dir = 2},/area/shuttle/transport1/centcom)
|
||||
"cbj" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor,/area/engine/break_room)
|
||||
"cbk" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "yellowcorner"},/area/engine/break_room)
|
||||
"cbl" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/atmos)
|
||||
@@ -6993,7 +6993,7 @@
|
||||
"cEy" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s10"; icon_state = "swall_s10"; dir = 2},/area/shuttle/transport1/centcom)
|
||||
"cEz" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/shuttle/plating,/area/shuttle/transport1/centcom)
|
||||
"cEA" = (/turf/simulated/shuttle/wall{tag = "icon-swall14"; icon_state = "swall14"; dir = 2},/area/shuttle/transport1/centcom)
|
||||
"cEB" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion_l (WEST)"; icon_state = "propulsion_l"; dir = 8},/turf/space,/area/shuttle/transport1/centcom)
|
||||
"cEB" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion_l (WEST)"; icon_state = "propulsion_l"; dir = 8},/turf/simulated/shuttle/wall{tag = "icon-swall_s9"; icon_state = "swall_s9"; dir = 2},/area/shuttle/transport1/centcom)
|
||||
"cEC" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 3},/obj/item/weapon/crowbar,/obj/item/weapon/extinguisher,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom)
|
||||
"cED" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom)
|
||||
"cEE" = (/turf/simulated/shuttle/floor,/turf/simulated/shuttle/wall{tag = "icon-swall_f9"; icon_state = "swall_f9"; dir = 2},/area/shuttle/transport1/centcom)
|
||||
@@ -8988,6 +8988,7 @@
|
||||
"dqR" = (/obj/machinery/disposal/deliveryChute{dir = 1},/obj/structure/disposalpipe/trunk{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/disposal)
|
||||
"dqS" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/disposal)
|
||||
"dqT" = (/obj/machinery/conveyor{dir = 1; id = "garbage"},/obj/effect/sign/vacuum{pixel_x = -32},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"; tag = "icon-warnplate (NORTH)"},/area/maintenance/disposal)
|
||||
"dqU" = (/turf/space,/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion_l (WEST)"; icon_state = "propulsion_l"; dir = 8},/turf/simulated/shuttle/wall{dir = 3; icon_state = "swall_f10"; layer = 2; tag = "icon-swall_f10"},/area/shuttle/transport1/centcom)
|
||||
|
||||
(1,1,1) = {"
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
@@ -9062,13 +9063,13 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagaahabxaaSabyabzabAabBabCabDabEaaSaaSabFabtabGabGabGabHabIabJabKabtabLabMabNabOabPabPabPabPaaxaaPaaPaaRaaxaafaafaafaaaaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaagaahabQaaSabRabSaaSabTaaaabUaaaaaaaaSabVabtabWabWabWabXabYabZacaabtacbaccacdaceacfacgachabPaaxaciaaPacjaaxaaxaaxaaxaaxaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaahackaaSabRaclaaSabTaaaabUaaaaaaaaSacmabtacnacoacoacpacqacracsabtactacuacvacwacxacyaczabPacAacBacCacDacEacFacGacGaaxaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahacHaaSacIacJaaSacKacLacMacNaaSaaSaaSabtacOabWabWacpacPacQacRabtacSacuacvacTacUacVacWabPacXacYacZadaadbadcadcaddaaxaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaahacHaaSacIacJaaSacKacLacMacNaaSaaSaaSabtacOabWabWacpacPacQacRabtacSacuacvacTacUacVacWabPacXacYacZadaadbadcadcagKaaxaafaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadeadfadgadhadiadjadkadladmadnadoadpadqadradsadtaaoaduadvabtadwadwadwacpadxadyadzabtadAadBadCadDadEadFadGabPadHadIadJadKadLadMadNadOaaxaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadPadQadRadSadTadUadVadWadXaazaazaazadYadZaeaaebaecaedaeeabtaefaegaehacpacqaeiaejabtabPaekaelaemaenaeoabPabPaaxaepaeqaeraaxaaxaaxaesaaxaaxaaxaesaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaetaeuaevaewaexaeyaezaeAaeBaeCaeCaeCaeDaeEaeFaeGaaKaeHaeIabtaeJaeKaeLaeMaeNaeOaePaeQaeRaeSaeTaeUaeVaeWaeXaeYaeZafaafbafcafdafeaffafgafhafiafjafjafkaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahaahaahaahaahaahaflafmaaSafnafoafnaahafpafqafraahaahaahabtafsaftafuafvafwafxafyabtafzafAafBafCafDafEafFafEafEafEafEafGafHafIafJafKafLafMafNafOafPaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaahafQafRafSafSafSafSafSafTafUafVafSaaaaaaabtabtabtabtafWafXafYabtabtafZafHagaagbagcagdageagfaggaghagiagjagkaglagmafgafLagnafjafjagoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaahagpagqafSagragsagtaguagvagwagxagyagzagAagyagyagBagCagDagEagFagGagHagIafHagaagJagKagLagMafgafgafgafgagNafgafgafgagOagPafgafgagOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaahagpagqafSagragsagtaguagvagwagxagyagzagAagyagyagBagCagDagEagFagGagHagIafHagaaddagJagLagMafgafgafgafgagNafgafgafgagOagPafgafgagOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafagQaahaahaahafSagRagSagTaguagvagwagUagyagVagWagWagXagBagYagZahaahbahcahdafHaheahfahgahhagdahiahjahkahlafgahmafgahnahoafgafLahpafLahqaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaagaagahraagaagaagagyagTahsagTaguagvagwahtagyahuagvagvahvagBahwahxahyahzahAahBahCahDahEahFafBahGahHafBahIahJahKahLahMahNahOafgafgafgafgafgaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafahPaagahQagyagyagyagyagyagyahRagwahSahTahUagvagvagwahVahWahXahYahZaiaaibaicaidaieaifaigaihaihaiiaiiaijaikailaimainaioaipaipaipaiqairaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
@@ -9114,26 +9115,26 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQXaQXaQXaQXaQXaQXaQXaQXaQXaQXaQXaQXaQXaSiaSjaSkavTaSlaSmaSnaSoaSpaSqaSraSsaStaSoaSuaSvaSwaSxaSyaLUaSzaNmaSAaSBaSCaSCaSDaSCaSCaSCaSEaSFaSGaNdaSHaSIaRsaSJaSKaNdaSLaLRaSMaMfaSNaSOaSPaSQaSQaSRaGdaGdaGdaGdaGdaSSaSTaSUaSVaSWaSXaQmaSYaSZaTaaTbaTcaTdaTeaTfaTgaThaTiaSWaTjaRGaSVaSUaTkaTlaTmaGdaGdaGdaTnaGqaNTaPgaPkaPiaKqaPjaPhaPiaNVaJnaQxaQxaToaTpaGwaPoaRPaPoaTqaPoaTraQFaTsaGwaMHaQIaOiaOiaOiaOiaQLaMLaGAaTtaTuaTvaTwaFhaOmaPEaPEaPEaPEaPEaOnaDtaTxaTyaPGaOsaOsaOsaTzaOwaaaaafaafaGLaGLaGLaGLaGLaGLaGLaGLaGLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQXaQXaQXaQXaQXaQXaQXaQXaQXaQXaQXaQXaQXavSarVavSatPaTAaPQaTBaTCaTDaTDaTDaTCaTEaTFaPOaTGaTHaTIaTJaTKaTKaTKaTLaTKaTMaTNaTOaTPaTQaTQaTRaNsaTSaTTaTUaTVaTWaTXaTYaTZaUaaUbaUcaUdaUeaUfaUfaUfaUgaMfaGdaGdaUhaUiaUjaUkaUlaUmaUnaUoaUpaUqaUraMkaMkaMkaMkaMkaMkaUsaUtaUuaUvaSZaUwaUxaMkaUmaUlaUyaUzaUiaLkaGdaGdaPfaKqaUAaQwaKqaKqaKqaQwaKqaNVaKqaJnaJnaKqaKqaUBaUCaUDaPoaPoaPoaUEaUFaUGaGwaUHaUIaOiaUJaUJaUKaUIaULaGAaUMaUNaTvaTwaFhaMQaPEaPEaPEaPEaPEaMRaUOaUPaUQaURaUSaUTaUSaUUaOwaafaafaaaaGLaGLaGLaGLaGLaGLaGLaGLaGLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQXaQXaQXaQXaQXaQXaQXaQXaQXaQXaQXaQXaQXaUVaUWaSkavTaUXaUYaUZaVaaUZaVbaTCaTCaVcaTDaPOaVdaVeaTIaTJaVfaVgaVhaViaTKaVjaVkaVlaLUaVmaVnaVoaVpaLUaVqaVraVsaVsaVsaVsaVtaVsaVuaVvaVwaVvaVvaVxaVvaVyaVuaGdaGdaVzaVAaVBaVBaVBaVBaVCaVDaVEaVDaVDaVFaVFaVFaVFaVFaVGaVHaVHaVIaVJaVKaVLaVKaVKaVKaVKaVKaQhaQhaLkaGdaVMaGqaVNaVOaVPaVQaKqaKqaKqaVRaVSaVTaKqaVUaVVaVWaGwaGwaGwaVXaVYaVYaVYaGwaGwaGwaVZaOiaOiaWaaWbaWcaWdaKzaGAaWeaUNaTvaLLaWfaOmaOnaPDaPEaPDaOmaOnaWgaFjaWhaOsaOsaOsaOsaWiaOwaaaaafaafaGLaGLaGLaGLaGLaGLaGLaGLaGLaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQXaQXaQXaQXaQXaQXaQXaQXaQXaQXaQXaQXaafauIaWjatMatOaPQaWkaWkaWlaWmaWnaWlaWoaWkaPOaWpaWqaWraWsaWtaWtaWuaWvaWtaWwaVkaWxaLUaVmaVnaWyaWzaLUaVqaVraVsaWAaWBaWBaWBaWCaVuaWDaWEaWFaWGaVuaVuaVuaVuaGdaGdaUhaWHaWIaWJaWKaWLaWMaWNaWOaWPaVDaVFaWQaWRaWSaWTaWUaWVaWWaWXaVKaWYaWZaXaaXbaXcaXdaVKaXeaXeaHraGdaGdaGqaGqaGqaGqaGqaXfaPfaXfaXgaXhaGqaNSaGqaGqaGqaXiaXjaXkaXjaXjaXjaXjaXlaXjaXiaKzaXmaXmaXnaXoaXoaXoaXoaXiaXpaXqaXraXsaXtaXuaXuaXvaXuaXuaXuaXuaXwaXxaXyaOsaOsaOsaOsaXzaPIaMWaMWaShaGLaGLaGLaGLaGLaGLaGLaGLaGLaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaQXaQXaQXaQXaQXaQXaQXaQXaQXaQXaQXaQXaafauIaWjatMatOaPQaWkaWkaWlaWmaWnaWlaWoaWkaPOaWpaWqaWraWsaWtaWtaWuaWvaWtaWwaVkaWxaLUaVmaVnaWyaWzaLUaVqaVraVsaWAaWBaWBaWBaWCaVuaWDaWEaWFaWGaVuaVuaVuaVuaGdaGdaUhaWHaWIaWJaWKaWLaWMaWNaWOaWPaVDaVFaWQaWRaWSaWTaWUaWVaWWaWXaVKaWYaWZaXaaXbaXcaXdaVKaXeaXeaHraGdaGdaGqaGqaGqaGqaGqaXfaPfaXfaXgaGqaGqaNSaGqaGqaGqaXiaXjaXkaXjaXjaXjaXjaXlaXjaXiaKzaXmaXmaXnaXoaXoaXoaXoaXiaXpaXqaXraXsaXtaXuaXuaXvaXuaXuaXuaXuaXwaXxaXyaOsaOsaOsaOsaXzaPIaMWaMWaShaGLaGLaGLaGLaGLaGLaGLaGLaGLaafaafaafaafaafaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaawVaqmaXAaxTaSkaraaraaraaraaraaraaXBaXCaPQaPOaPOaPOaPOaPOaPOaPOaPOaPOaXDaNdaTIaTJaVfaXEaXFaXGaTKaXHaXIaXJaLUaVmaVnaXKaXLaLUaVqaVraVsaWBaXMaXMaWBaXMaVuaWDaXNaXOaXOaXPaXQaXRaVuaXSaGdaUhaXTaXUaXVaXWaXWaXWaXWaXXaXYaVDaVFaXZaYaaYbaYcaWQaYdaYeaYfaYgaYhaWZaYiaYjaYkaYlaVKaYmaYnaGcaYoaGdaYpaYqaTvaTvaYraTvaTvaTvaYraTvaYsaTvaTvaYtaTvaYuaTvaYvaTvaTvaTvaTvaTvaTvaYqaTvaTvaTvaTvaTvaTvaTvaTvaYwaYxaYyaYzaYAaYyaYyaYyaYBaYyaYyaYCaTvaYqaYDaOsaOsaOsaOsaOsaYEaQWaYFaQVaQWaGLaGLaGLaGLaGLaGLaGLaGLaGLaafdqBdqDdqEdqDdqEdqDdqCaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaYHaYHaYHaYHaYHaYHaYHaYHaYHaYHaaaaafaYIawYauLaYJaYKaYLaYLaYLaYLaYLaYLaYMaYNaLRaSLaNdaTIaTJaTKaTKaYOaYPaTKaLUaLUaYQaLUaVmaYRaXKaYSaLUaVqaVraVsaYTaYUaWBaXMaYVaVuaYWaVubdUbcCaYXaYYaYZaVuaGdaGdaZaaWHaZbaZcaXWaXWaZdaXWaXXaZeaVDaVFaZfaZgaZhaZhaZhaYdaZiaVFaZjaZkaWZaYiaZlaYhaZmaVKaXeaNQaZnaGdaGdaYpaYqaTvaTvaTvaTvaTvaTvaTvaTvaTvaTvaTvaZoaZpaZpaZqaZraTvaTvaTvaTvaTvaTvaYqaTvaTvaTvaTvaTvaTvaTvaTvaTvaZsaTvaYvaTvaTvaTvaTvaTvaTvaTvaZtaTvaYqaYDaOsaOsaOsaOsaOsaZuaSgaMWaMWaPJaGLaGLaGLaGLaGLaGLaGLaGLaGLaafatYdqAdqzaYGdqzaYGatYaafaZvagQagQaZvaafaZvagQagQaZvaafaZvagQagQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaYHaYHaYHaYHaYHaYHaYHaYHaYHaYHaYHaSiaSjaSkavTaZwaZxaZyaZyaZzaZyaZyaZyaZAaLRaLRaLRaLRaZBaTJaVfaZCaZDaZEaTKaZFaZGaZHaLUaLUaLUaLUaZIaLUaVqaVraVsaZJaWBaXMaZKaZLaVuaWDaVuaZMaXObfIaZNaZOaVuaZPaGdaZQaWHaZRaZSaZTaZUaZcaZcaZVaZWaVDaZXaZYaZZaZhbaaaZhaYababbacaZjbadbaeaYhaYhaYhbafbagaXebahbaibajaGdaYpaYqaTvaTvaTvaTvaTvaTvaTvaTvaTvaTvbakbalaTvaTvbambanaTvbakbaobapaTvaTvaYqbaqbarbarbarbarbarbarbasaTvaZsaTvaYvaTvbataTvbakaTvbauaTvbavaTvaYqaYDaOsaOsaOsaOsbawaXzbaxaafaaaaafaGLaGLaGLaGLaGLaGLaGLaGLaGLaafdqKdqMdqzaYGdqzdqLdqEaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaagQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaYHaYHaYHaYHaYHaYHaYHaYHaYHaYHaYHavSarVavSatPbayaZybazbaAbaBbaBbaCbaDbaEbaFbaFbaFbaFbaGbaHbaIbaIbaJbaKbaIbaLbaLbaMbaLbaNbaOaRkbaPbaObaQbaRbaSbaTbaUbaUbaVbaWbaXbaYbaZbbaaXObfIaZNbbbbbcaZPaGdbbdaWHaZcbbebbfbbgbbhaZcbbiaVDaVDaVFbbjbbkbblbbmbbnbbkbboaVFaZjbbpbbqbbrbbsbbtbbubbvbbwbbxbbyaGdbbzbbAbbBbbCbbCbbCbbCbbCbbDbbAbbEbbEbbAbbFbbGbbFbbFbbHbbIbbJbbJbbJbbJbbKbbJbbJbbLbbMbbNbbObbObbMbbNbbPbarbbQbarbbRbarbbSbbTbbUbbUbbUbarbbVbarbbWbbXbbYbbZbbZbcaaLNbcbbccaafaafaafaGLaGLaGLaGLaGLaGLaGLaGLaGLaafatYdqJdqzaYGaYGaYGatYaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaZvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaYHaYHaYHaYHaYHaYHaYHaYHaYHaYHaYHaUVaUWaSkavTbcdaZybceaZybcfbcgaZyaZyaZyaNdbchaSKaSKbciaTKaVfbcjaXFbckaTKbclbcmaRsaRsbcnbcobcpbcqbcrbcsbctbcubcvbcwbcvbcxbcybczbcAbcBbfJaXObfIbcDbcEbcFaZPaGdbcGaWHbcHaZcbcIbcJaZcaZcbcKaVDaVDaVFbcLbcMbcNbcObcPbcQbcRaVFaZjbcSbcTbcUbcUbcVbcWaVKbcXbcXbcYaGdaGdbcZbdabdabdbbdbbdbbdbbdbbbAbdabdabbAbdcbddbdebbFbdfbdgbdhbdibdjbdkbdkbdlbdmbdnbdobdpbdpbdpbdpbdqbbTbdrbdsbdrbdtbdrbbTbbTbdubdvbbUbdwbdxbdybbUbbUbdzbdAbdBbdzbdzbdCbccaafaaaaafaGLaGLaGLaGLaGLaGLaGLaGLaGLaafdqGdqDdqEdqHdqEdqDdqIaafaafbdDbdDbdDbdDbdDbdDbdDbdDaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaYHaYHaYHaYHaYHaYHaYHaYHaYHaYHaaaaaaawXaWjatMbdEaZybceaZybdFbdGbdHbdIaZybdJaNdbdKaNdbdLaTKaTKaTKaTKaTKaTKbdMbdNbdOaNdbdPaVsbdQaVsbdRaVsaVsaVsaVsaVsbdSbdRaVsbfGbfHbdVbdWaXObfIaZNbdXbbcaZPaGdaUhaWHbdYbdZbeabebbbhbecaZVaVDbedbeebefbegaWQbehaWQbeibejbekbelbembenbeobepbeqberaVKbesbcXbetbeubeubevbewbewbdbbexbdbbeybeybbAbdabezbbAbeAbeBbeCbbFbeDbeEbbJbeFbdkbeFbdkbeFbeGbdnbeHbdpbeIbdpbdpbeJbbTbeKbeLbeMbeNbeKbeObbTbePbeQbeRbeSbeTbeSbeUbbUbeVbeWbeXbeYbdzbdCbccaafaaaaafaGLaGLaGLaGLaGLaGLaGLaGLaGLaafbeZbfabfbbfcbfdbfebdDbdDbdDbdDbffbfgbfhbfibfjbfhbdDaafaaaaaaaZvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaawVaqmaXAaxTaUWaPLaPLaPLaPLbfkavTatPatPaZydqTbfmbfnbdHbfobfpbfqbfrbfrbfrbfrbfsbftbftbftbcsbcsbcsbfubfvbfvbfvbfwaVsbfxbfybfzbfAbfBbfCbfDbfCbfCbfEbfFbdTbfLdqNdqOdqPbfKbfMbaXbaXbfNbfObfPbfQbfRbfRbfRbfRbfRbfSbfTbfUbfQbekbekbekbekbfVbekbekbekbekbfWaYgbfXaVKaZjbfYaVKaVKbcXbcXbfZaGdaGdbgabgbbgbbgcbdbbdbbdbbgdbbAbdabdabbAbgebeBbgfbbFbggbeEbbJbeFbdkbeFbdkbeFbghbdnbgibgjbgkbgkbgkbgkbglbgmbgnbgobgpbgqbgrbglbgsbgtbgubgvbgwbeSbgxbbUbgybeWbgzbgAbdzbdCbccbccaafaafajmaGLaGLaGLaGLaGLaGLaGLajmaafbgBbgCbgCbgDbgCbfebgEbgFbgEbdDbgGbgHbgIbgIbgIbgIbdDaafaaaaaaagQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaawVaqmaXAaxTaUWaPLaPLaPLaPLbfkavTatPatPaZydqTbfmbfnbdHbfobfpbfqbfrbfrbfrbfrbfsbftbftbftbcsbcsbcsbfubfvbfvbfvbfwaVsbfxbfybfzbfAbfBbfCbfDbfCbfCbfEbfFbdTbfLdqNdqOdqPbfKbfMbaXbaXbfNbfObfPbfQbfRbfRbfRbfRbfRbfSbfTbfUbfQbekbekbekbekbfVbekbekbekbekbfWaYgbfXaVKaZjbfYaVKaVKbcXbcXbfZaGdaGdbgabgbbgbbgcbdbbdbbdbbgdbbAbdabdabbAbgebeBbgfbbFbggbeEbbJbeFbdkbeFbdkbeFbghbdnbgibgjbgkbgkbgkbgkbglbxJbgnbgobgpbgqbgrbglbgsbgtbgubgvbgwbeSbgxbbUbgybeWbgzbgAbdzbdCbccbccaafaafajmaGLaGLaGLaGLaGLaGLaGLajmaafbgBbgCbgCbgDbgCbfebgEbgFbgEbdDbgGbgHbgIbgIbgIbgIbdDaafaaaaaaagQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabgJbgKarVavSatJatJatMatPatPaZybiybgMbdHbgNaZyaZyaZyaLRbgObgPbgQbgRbgQbgQbgQbgRbgQaLRaLRaVsaVsaVsbgSaVsbgTbfCbgUbfCbfCbfCbgVbgWbgXbgXbgYbgZbhabhbbhbbhbbhcbhdbhebhfbhgbhhbhibhjbhkbhkbhlbhmbhnbhobhpbhobhqbhrbhsbhtbhubhvbhwbhtbhxbhrbhybhzbhAbhBbhCbhDbhEbhFbhFbhGbfZaGdaGdbhHbhIbhIbdbbhJbdabhKbdbbhLbdbbhMbbAbhNbhObhPbbFbhQbeEbbJbeFbdkbeFbdkbeFbeGbdnbhRbhSbhTbhUbdpbhVbhWbhXbhYbhYbhZbiabibbicbidbiebifbigbihbeSbiibbUbijbikbgzbilbimbdCbinbccaaaaafajmajmajmajmajmajmajmajmajmaafbiobgCbipbiqbgCbfebirbgEbisbdDbitbgHbiubivbgIbiwbdDaafaaaaaaagQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaabgJarVarVavSauJauJbixauJauJaZydqRdqSdqQbdHaZyaaaaaaaaaaafaafbizbizbizbizbizbizbizaaaaaabiAbiBbiCbiDbiEbiEbiEbiEbiFbfCbiGaVsbiHbfCbfCbfCbiIbiJbiKbiLbiMbiNbfHaVuaVubiObiPbiQbiRbiSbiSbiTbiSbiUbiVbiWbiXabTbiYbiZbhtbjabhvbjabhtbjbbiYbhybjcbjdbjebjfbjgbjhbiSbiSbjibjjaGdbjkbjlbdabdabdbbjmbdabjnbdbbdabdabjobbAbbAbbAbbAbbAbjpbjqbbJbeFbjrbdkbdkbdkbjsbdnbjtbdpbjubjvbdpbdpbbTbjwbjxbjybhZbiabjzbbTbjAbiebjBbjCbeSbeSbjDbbUbjEbjFbjGbjEbdzbdCbjHbjIaaaaafaafaafaafaafaafaafaafaafaafaafbjJbfdbfcbjJbjJbfebjKbjLbjMbjNbgIbgHbjObjPbgIbjQbdDbdDaaaaaaaZvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaabgJarVarVavSauJauJbixauJauJaZydqRdqSdqQbdHaZyaaaaaaaaaaafaafbizbizbizbizbizbizbizaaaaaabiAbiBbiCbiDbiEbiEbiEbiEbiFbfCbiGaVsbiHbfCbfCbfCbiIbiJbiKbiLbiMbiNbfHaVuaVubiObiPbiQbiRbiSbiSbiTbiSbiUbiVbiWbiXabTbiYbiZbhtbjabhvbjabhtbjbbiYbhybjcbjdbjebjfbjgbjhbiSbiSbjibjjaGdbjkbjlbdabdabdbbjmbdabjnbdbbdabdabjobbAbbAbbAbbAbbAbjpbjqbbJbeFbjrbdkbdkbdkbjsbdnbjtbdpbjubjvbdpbdpbbTbqWbjxbjybhZbiabjzbbTbjAbiebjBbjCbeSbeSbjDbbUbjEbjFbjGbjEbdzbdCbjHbjIaaaaafaafaafaafaafaafaafaafaafaafaafbjJbfdbfcbjJbjJbfebjKbjLbjMbjNbgIbgHbjObjPbgIbjQbdDbdDaaaaaaaZvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaauIavSavSbjRbjSawVaqmbjTbjSaZybKUbVcbjVbcgaZyaaaaaaaaaaaaaaabizbizbizbizbizbizbizaaaaaabjXbjYbfCbfCbfCbfCbfCbfCbjZbkabkbbkcbkdbfCbfCbfCbkebkfbjXbkgbfCbkhbkibkjbkkaZPbiPaGdbklbklbklbklbklbkmbknbkobklbkpbkqbkrbksbktbkubktbkvbkwbkxbkybkzbkAbkBbkBbkBbkCbkBbkBbkCbkDaGdaGdbhHbkEbkEbdbbkFbkGbkFbdbbkHbkIbkJbbAbkKbkKbkKbbAbkLbkMbbJbbJbbJbbJbbJbbJbkNbdnbkObkPbkQbkRbkSbkSbbTbkTbkUbbTbkVbkWbkXbbTbkYbkZblablbblcblcbldbleblfblgblhblfbdzblibljblkaafaafaafaaaaaaaaaaaaaaaaaaaaaaaeaafbfdbllblmblnblobfeblpbdDblqbdDblrbgHblsbltbgIbgIblubdDaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablvblvblvblvblvblvblvblvblvblvblvblvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabizbizbizbizbizbizbizblwblxblyblzbfCbfCbfCbfCbfCbfCbjZbkablAbjXblBbfCbfCbfCbfCbfCblCblDbfCbkhbfCblEblFaZPbiPaTnbklblGblHblGblIblJblKblLbklabTblMblNbhtbktblObktbhtblPblQbhybkzblRblSblTblUblVblWblXblYblZbmabmabmbbmcbmcbmdbmebdabmfbdbbmgbmhbmibbAbmjbmjbmkbmlbmmbkMbdnbmnbmobmpbmqbdnbmrbdnbmsbmtbmubmvbdpbdpbmwbmxbdpbmybmzbmAbmBbmCbmDbmEbmFblebmGbmHbmIbmIbmJbmKbmLbmMbmNbmObmPbmQbmRbmRbmRbmRbmSbmTbmUbmVbmWbmXbmXbmXbmXbmYbmZbmZbnabnbbncbndbnebnfbngbgHbgIbgIbnhbgIbnibdDaaaaaaaZvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablvblvblvblvblvblvblvblvblvblvblvblvblvblvblvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabizbizbizbizbizbizbizbnjbnkbnjbnlbnmbfCbfCbfCbfCbfCbjZbkabnnbjXbnobfCbfCbfCbfCbnpbnqbnrbfCbkhbfCbfCbgVaGdbiPaHsbknbnsbntbnsbnsbnsbnsbnubklabTblQblQbnvbnwbnxbhtbnybnzbnAbnBbkzbnCbnDbnEbnEbnDbnDbnFbkCbnGaGdaGdbhHbnHbnHbdbbhJbdabjnbdbbnIbdbbdbbnJbmjbnKbnLbnMbnNbnObdnbnPbnQbnRbnSbnTbnUbnVbnWbnXbdpbnYbdpbdpbdpbmxbnZboabobbocbodboebofbogbohboibojbokbolbombeWbeWbgzbeWbonboobopboqborboqboqbosbotboubovbovbovbowboxbovboybozboAboAboBbovbovbovboCboDboEboFboEboGboHboEboIbdDaaaaaaagQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvaaaaaaaaaaaaaaaaaeaaaaaaaaabizbizbizbizbizbizbizboJboKboJboLboMbfCbfCbfCbfCbfCbjZbkaboNblFboObfCbfCbfCbfCboPbkcboQbfCboRboSboTboUboVboWboXboYboZboZboZbpabpbboZbpcbpdbpebpfbpgbphbpiblObpibnzbpjbpkbpkbkzbplbpmbpnbpobppbnDbpqbprbpsaGdaGdbptbdabdabpubdbbpvbpwbpxbpybpzbpAbbAbpBbpCbpDbbAbpEbpFbpGbpHbnQbpIbpJbpKbpLbgkbpMbpNbgkbpObgkbgkbgkbpPbpQbpRbpSbpTbpUbpRbpVbpWbpXbpYbpZbqabqbbqcbqcbqdbqebqcbqfbqgbqhbqibqjbqkbqhbqlbqmbqnbqobqpbqobqqbqobqpbqobqrbqobqpbqobqsbqobqpbqtbqubqvbqwbqxbqybqzbqAbdDbdDaaaaaaagQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvaaaaaaaaaaaaaaaaaaaaaaaaaaabizbizbizbizbizbizbizbqBblxbqCbqDbfCbfCbfCbfCbfCbfCbjZbfCbfCaVsbqEbfCbfCbfCbfCbqFblFbfCbfCbkhbfCblEbkcaZPaGdbqGbklbqHbnsbnsbnsbnsbnsbqIbqJbqKbqLbqMbqNbnAbqObqPbqQbqRbqSbqTbkzbqUbpmbqVbqWbppbnDbqXbqYbpsaGdaGdbqZbbAbbAbbAbrabrbbrabbAbbAbbAbbAbbAbbAbbAbbAbbAbrcbrdbrebrfbrgbrgbrhbribrjbrkbrlbrmbrnbrobrpbrpbrqbrrbrsbbTbrtbrubrvbbTbrwbrxbryblebrzbrAbrBbrCbrCbrDbrDbrDbrEbrEbrEbrEbrEbrBbrBbrBbrFbrGbrHbfabfbbjJbrHbfabfbbjJbrHbfabfbbjJbrHbfabfbbdDbdDbdDbdDbdDbdDbdDbdDaafaaaaaaaZvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvaaaaaaaaaaaaaaaaaeaaaaaaaaabizbizbizbizbizbizbizboJboKboJboLboMbfCbfCbfCbfCbfCbjZbkaboNblFboObfCbfCbfCbfCboPbkcboQbfCboRboSboTboUboVboWboXboYboZboZboZbpabpbboZbpcbpdbpebpfbpgbphbpiblObpibnzbpjbpkbpkbkzbplbpmbpnbpobppbnDbpqbprbpsaGdaGdbptbdabdabpubdbbpvbpwbpxbpybpzbpAbbAbpBbpCbpDbbAbpEbpFbpGbpHbnQbpIbpJbpKbpLbgkbpMbpNbgkbpObgkbgkbgkbpPbpQbpRbpSbpTbqVbpRbpVbpWbpXbpYbpZbqabqbbqcbqcbqdbqebqcbqfbqgbqhbqibqjbqkbqhbqlbqmbqnbqobqpbqobqqbqobqpbqobqrbqobqpbqobqsbqobqpbqtbqubqvbqwbqxbqybqzbqAbdDbdDaaaaaaagQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvaaaaaaaaaaaaaaaaaaaaaaaaaaabizbizbizbizbizbizbizbqBblxbqCbqDbfCbfCbfCbfCbfCbfCbjZbfCbfCaVsbqEbfCbfCbfCbfCbqFblFbfCbfCbkhbfCblEbkcaZPaGdbqGbklbqHbnsbnsbnsbnsbnsbqIbqJbqKbqLbqMbqNbnAbqObqPbqQbqRbqSbqTbkzbqUbpmbjwbpUbppbnDbqXbqYbpsaGdaGdbqZbbAbbAbbAbrabrbbrabbAbbAbbAbbAbbAbbAbbAbbAbbAbrcbrdbrebrfbrgbrgbrhbribrjbrkbrlbrmbrnbrobrpbrpbrqbrrbrsbbTbrtbrubrvbbTbrwbrxbryblebrzbrAbrBbrCbrCbrDbrDbrDbrEbrEbrEbrEbrEbrBbrBbrBbrFbrGbrHbfabfbbjJbrHbfabfbbjJbrHbfabfbbjJbrHbfabfbbdDbdDbdDbdDbdDbdDbdDbdDaafaaaaaaaZvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvaaaaaaaaaaaaaaaaaaaaaaaaaaabizbizbizbizbizbizbizboJboKboJbnmbrIbfCbfCbfCbfCbrIbjZbfCbfCbrJbrKbfCbfCbfCbfCbfCbrLbfCbfCbkhbfCblEbjXaZPaGdaNRbklbrMbrNbrObrPbrQbrQbrRbqJbrSbrTbrUbrVbrWbrXbrYbrZbsabsbbscbsdbsebnDbsfbsfbnDbnDbsgbshbpsaGdaGdbqZbsibsjbskbskbslbdbbsmbbAbsnbsnbsobspbsqbsqbsrbssbkMbdnbstbsubsvbswbsxbsybnXbszbdnbsAbsBbsCbsDbsEbsFbsGbbTbbTbbTbbTbbTbleblebleblebsHbsIbrDbrDbrDbrDbsJbsKbsKbsLbsMbsNbrEaafaafbjIbsObjIaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaaaaaaaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvaaaaaaaaaaaaaaaaaaaaaaaaaaabizbizbizbizbizbizbizbsPbsQbsPbsRbsRbsRbsRbsRbsSbsRbsTbsUbsVbsWbsXbsYbsZbtabtbbfCbtcbtdboTbtebtfblEblFbtgbeubeubklbrMbrNbthbtibtjbtkbtlbqJbtmbtnbtobtpbtqbtrbtsbttbtubtvbtwbkzbtxbtybtzbtAbtBbtCbtDbtEbtFbtGbtHbtIbtJbtKbdbbtLbtLbdbbdbbbAbtMbtMbtMbsqbtNbsqbsrbtObkMbtPbtPbtPbtPbtQbtPbtRbtSbtRbtTbtTbtUbtVbtTbtTbtWbtXbtYbtZbuabubbucbudbuebufbugbuhbuibrDbujbukbulbsJbsKbsKbsLbsMbsNbrEaafaafblkbsOblkaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaZvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablvblvblvblvblvblvblvblvblvblvblvblvblvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabizbizbizbizbizbizbizbumbunbuobupbuqblxblxblxblxburaVsaVsaVsaVsbusaVsbutbuubuvbuwbuxbuybuzbuAbuBbuvbuvbuCbuDbuDbklbklbklbuEbuFbuGbuGbuGbuHbuIbuJbuKbuIbuLbuMbuNbuObuPbuPbuPbuQbuRbkBbkBbuSbuTbuUbkBbkCbuVbuDbuDbqZbuWbuXbuYbuZbvabvbbdbbbAbvcbtMbsnbtMbsqbsqbvdbvebvfbvgbvhbvibvjbvkbvlbsybnXbsybvmbvnbvobvpbvqbtTbvrbvsbtYbtZbvtbvubvvbvwbvxbvybvzbvAbvBbvCbvDbvEbvFbvFbvGbvFbvHbvIbvJbrEaafaafblkbsOblkaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaagQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablvblvblvblvblvblvblvblvblvblvblvblvaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabizbizbizbizbizbizbizaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvKbvLbvMbvNbvObvPbvQbvRbvSbvTbvUbvVbvWbvXbuvbvYbvZbvZbvZbwabwbbvZbwcbvZbvZbvZbvZbwdbwebwbbwfbwgbwhbwibwjbwkbvZbwlbwmbvZbvZbvZbwnbvZbvZbvZbwobwpbvZbvZbwqbwrbwsbuYbuZbuZbvbbwtbbAbtMbtMbtMbtMbtMbwubsrbwvbkMbwwbwxbwybwzbwAbwBbsybnXbsybwCbwDbwEbwFbwGbvmbwHbwIbwJbwKbwLbwMbwMbwMbwNbwObugbsHbwPbrDbrDbwQbwRbwSbwSbwSbwTbwSbwUbrEaafaafblkbsOblkaafaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaagQaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDxaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablvblvblvblvblvblvblvblvblvblvblvblvblvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabizbizbizbizbizbizbizaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvKbwVbwWbwWbwXbwYbwZbvRbvRbxabxbbxcbxdbxebuvbxfbxgbvZbvZbvZbwbbvZbvZbvZbvZbvZbvZbvZbwebwbbvZbxhbxibxjbvZbvZbvZbvZbwmbvZbvZbvZbwnbvZbvZbxkbxlbwpbxmbxnbxobxpbxqbdbbxrbxsbdbbdbbbAbxtbxubxvbxwbxxbxybsrbwvbxzbtQbxAbxBbxCbxDbxEbxFbxGbsybwCbwDbxHbxIbxJbxKbxLbxMbxNbxObxPbxQbxRbxSbxTbxUbugbxVbxWbxXbxYbxZbyabybbycbydbyebyfbygbrEaafaafblkbsOblkaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaZvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablvblvblvblvblvblvblvblvblvblvblvblvblvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabizbizbizbizbizbizbizaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvKbwVbwWbwWbwXbwYbwZbvRbvRbxabxbbxcbxdbxebuvbxfbxgbvZbvZbvZbwbbvZbvZbvZbvZbvZbvZbvZbwebwbbvZbxhbxibxjbvZbvZbvZbvZbwmbvZbvZbvZbwnbvZbvZbxkbxlbwpbxmbxnbxobxpbxqbdbbxrbxsbdbbdbbbAbxtbxubxvbxwbxxbxybsrbwvbxzbtQbxAbxBbxCbxDbxEbxFbxGbsybwCbwDbxHbxIbgmbxKbxLbxMbxNbxObxPbxQbxRbxSbxTbxUbugbxVbxWbxXbxYbxZbyabybbycbydbyebyfbygbrEaafaafblkbsOblkaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaZvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabizbizbizbizbizaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabvKbvKbvKbvKbwXbwYbyhbyibvRbyjbykbylbymbynbuvbvYbvYbvYbvYbvYbyobypbypbypbypbypbypbyqbyrbysbytbyubyubyubyubyubyvbyubywbyxbyubyubyybvZbyzbyAbyBbyCbvZbvZbqZbbAbyDbbAbbAbbAbbAbbAbbAbsrbyEbsrbsrbsrbsrbsrbyFbyGbtQbyHbyIbyJbyKbyLbsybnXbsybyMbwDbyNbyNbyObtZbugbyPbyQbtZbyRbySbyTbudbuebufbugbyUbyVbyWbrDbyXbyYbyZbzabzbbzcbyfbygbrEaafaafbzdbsObzdaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaaaZvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaabvKbzebwXbwYbuvbuvbzfbzgbzhbzhbzibuvbuvbzjbzkbzlbzmbzmbznbzobzpbzpbzqbzrbzsbzpbzpbztbzubuDbuDbuDbzvbzwbzwbzwbzxbzybzwbzwbzwbzwbzzbzAbyGbzBbzCbzDbbHbzEbzFbzGbzHbzHbzGbzIbzJbzKbzLbzMbzzbzNbzObzPbwvbzQbtQbzRbzSbyKbzTbvlbsybzUbzVbzWbzXbzYbzZbAabtZbAbbAcbAdbAebAfbAdbAgbAhbAhbAhbAibAjbAkbAlbAlbAlbAlbAlbAlbAmbAnbAmbAmbAmbAmaafbccbAobccaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaafaafaaaaaaaaaaaaaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvblvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaabvKbwWbwXbAubAvbAwbAxbAybAzbAAbABbuvaaaaaaaaabACbADbAEbAFaaaaafaaabAGbAHbAIaaaaafaaabAJbAKbvZbvZbzCbzwbALbAMbANbAObAPbAQbARbASbATbAUbAVbAWbAWbAWbAXbAYbAZbBabBbbBcbBdbBebBfbBgbBbbBbbBbbBhbBibBjbwvbkMbtQbtPbBkbyKbBlbBmbsybdpbdpbBnbBobBpbBqbBrbtZbBsbBtbBubBubBvbBwbwMbBxbwMbwMbBybsHbBzbAlbBAbBBbBCbBDbBEbBFbBGbBFbBHbBIbBJaafbccbsObjIaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafbApbAqbAqbArbAsbAsbAtbAtbAtbAtbAtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
@@ -9142,7 +9143,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaablvblvblvblvblvblvblvblvblvblvblvblvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabEgbEhbEibEibEgbEjbDibEkbvKbvKbElbEmbEmbEnbEobEpbEqbErbEsbEtbEubEvbEwbExbEybEzbEAbEBbECaafbBZbEDbEEbDnbDobEFbBZaafbCbbAKbvZbEGbzvbzwbzwbEHbzwbzwbEIbzwbzwbzNbEJbEKbELbEMbzzbzzbENbEObEPbEQbzzaafaafbERaafaafbESbETbESbzNbzNbEUbEVbEWbEXbEYbEZbFabFbbdnbFcbdpbdpbDObFdbFebFebFfbugbFgbFhbyTbFibtZbFjbFkbFlbFmbFnbFobFpbFqbFrbFsbFtbFubFvbFwbFxbFybAmbAmbAmbAmbAmbccbFzbccbAmbAmbAmbAmbAmaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabEfbAtbCSbAtbAtbBNbBNbBNbBNbBNbBNbBNbAtbAtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabCXbFCbFCbEibCXbFDbFEbFFbvKbFGbADbADbADbADbADbFHbADbFIbFJbFKbFLbFMbFNbFObFPbFQbFRbDkbFSaaabBZbFTbEEbFUbDobFVbBZaaabCbbFWbFXbFYbFZbGabGbbGcbzHbzHbzHbzHbzHbzHbGdbzHbGebGfbzzaaaaaabhybGgaaaaaaaaaaaabERaaaaaabzzbzzbzzbzzbzzbzzbzzbEWbGhbGibgkbGjbGkbGlbGmbGnbdpbGobGpbGqbGrbGsbugbGtbGubGtbtZbtZbGvbGwbGxbGybGybGzbGAbgzbGBbGCbGDbGEbGFbGFbGGbGGbGHbGIbGGbGJbGKbGLbGMbGNbGObGQbGPbJsbGSaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbAsbAtbFAbFBbFBbBNbBNbBNbBNbBNbBNbBNbBNbAtbAtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabEgbEibEibEibGUbGVbADbADbGWbADbADbADbADbFHbADbADbADbGXbvKbvKbvKbvKbvKbGYbGZbHabHbbHcbHdbHebHfbHgbHhbHibHjbHkbHfbHebHlbHmbHnbHobHpbHqbHpbHpbHrbHsbHtbHubzMbzNbzNbHvbHwbHxbAWbHybHybHzbHAbHBbHBbHBbHBbHCbHBbHBbHBbHBbHBbHBbHBbHBbHDbHEbHFbHGbdpbdpbHHbnTbdpbHIbHJbxEbHKbHLbHKbHMbHNbGpbGpbHObDVbHPbHQbHRbHSbHTbHUbHVbHWbgzbHXbHYbHYbHYbHYbHYbCLbCLbCLbCLbCLbHZbIabIbbIcbIdbGObCLbIebGRbIfaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabAtbAtbGTbBNbBNbBNbBNbBNbBNbBNbBNbBNbBNbBNbAtbAtaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabCXbFCbFCbFCbCXbIibIjbIkbvKbIlbADbImbADbADbADbADbADbInbvKbIobIpbIpbIqbIrbIsbItbIubIvbBZaaabBZbIwbBZbBZbBZbBZbBZaaabIxbIybIzbIAbHsbIBbICbIDbIEbIFbIFbIFbIFbIFbIFbIGbIHbIFbIFbIIbIJbIKbILbILbILbILbIMbERaaaaaaaaaaaaaaaaafaafaafbjIbINbIObIPbIQbIRbISbITbIRbIUbIQbIVbIWbIXbIYbIZbJabGpbJbbJcbDVbJdbGybGybJebJfbJgbJhbJibJjbAlbJkbJkbJkbJlbJmbJnbJobJpbJqbJrbAmbAmbccbFzbccbAmbjUbIebGRbIfaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbAtbBNbBNbBNbBNbBNbBNbIgbBNbIhbBNbBNbBNbBNbBNbAtbAtaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabCXbFCbFCbFCbCXbIibIjbIkbvKbIlbADbImbADbADbADbADbADbInbvKbIobIpbIpbIqbIrbIsbItbIubIvbBZaaabBZbIwbBZbBZbBZbBZbBZaaabIxbIybIzbIAbHsbIBbICbIDbIEbIFbIFbIFbIFbIFbIFbIGbIHbIFbIFbIIbIJbIKbILbILbILbILbIMbERaaaaaaaaaaaaaaaaafaafaafbjIbINbIObIPbIQbIRaXhbITbIRbIUbIQbIVbIWbIXbIYbIZbJabGpbJbbJcbDVbJdbGybGybJebJfbJgbJhbJibJjbAlbJkbJkbJkbJlbJmbJnbJobJpbJqbJrbAmbAmbccbFzbccbAmbjUbIebGRbIfaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafaafbAtbBNbBNbBNbBNbBNbBNbIgbBNbIhbBNbBNbBNbBNbBNbAtbAtaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabEgbJybJzbJAbEgbJBbDibEkbvKbvKbJCbJDbJEbJFbJGbJHbJHbJHbvKbJIbJJbJKbJLbJMbJNbJObJPbJLbBZaaaaafbJQbJRbJSbJTbJUbJVbJVbJWbJXbJYbJZbHsbIBbICbKabKbbKcbKdbKebKfbKgbKhbKibKjbKkbKlbKmbKnbKobKpbKqbKrbKsbKtbKuaaaaaaaaaaaeaaaaafaaaaaablkbKvbEXbKwbKxbdpbKybKzbdpbKAbKxbGobGpbKBbKCbKDbKEbKFbGpbHObDVbKGbKHbGybKIbKJbKKbDVbGAbKLbKMbKMbKMbKMbKMbKMbKMbKMbKMbKMbKNbKObKPbKQbKRbKSbAmbflbJtbJubAmaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaafaaaaaabAtbJvbJvbJvbJvbJvbJvbJwbBNbJxbJvbIhbBNbBNbBNbBNbAtaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabLabCWbLbbCWbLcaaaaafaaaaafbvKbvKbLdbLebLebLebLebLfbvKbvKbLgbLhbLibJLbLjbLkbLlbLmbLnbLobLpbLpbLqbLrbLsbLpbLtbLubLubLvbLwbLxbLybLzbLAbLBbLCbLDbKcbLEbLFbLGbLGbLFbLHbKjbLIbLJbLKbLHbLGbLLbLGbLMbLNbLOaafbLPbLPbLPbLPbLPaafaaaaaablkbKvbEXbLQbLRbdpbdpbLSbdpbKAbLTbDObLUbLVbLVbLWbKEbGpbLXbHObDVbLYbLZbMabMbbMcbMdbLYbMebMfbMgbMhbMibMjbMkbMlbMmbMnbMobMpbMqbKObjHbsObccbccbAmbKTbgLbKVbKWaagaagaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabKXbBLbBLbBLbBLbBLbBLbBLbKYbBObBNbBNbBNbBNbKZbBObAtaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaafaafaaaaaaaaaaafaafaaaaafaaaaaaaaaaafbJLbLjbMtbJLbJPbJLbBZbBZbBZbJTbMubMvbJTbJTbMwbMxbMybMzbMAbMBbMCbMDbMEbLGbMFbMGbLGbLGbLGbLGbMHbMIbMJbMKbLJbMLbLGbMMbMNbMObMPbMQbMRbMSbMTbMUbMVbMWbLPaafaafaafblkbKvbEXbMXbMYbMZbNabdnbdpbKAbKxbNbbNbbNbbNbbNbbNcbNdbNbbNbbNbbLYbNebNfbNgbNhbNibLYbGAbNjbNkbNlbNmbNnbNmbNmbNobNpbMpbNpbMpbKObNqbsObccaaabAmbAmbjWbAmbAmaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaaaaabAtbFBbFBbFBbFBbFBbFBbMrbBNbFAbFBbMsbBNbBNbBNbBNbAtaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
@@ -9160,7 +9161,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajmaaaaaaaafaafaaaaafaafaaaaaaaafaafaafaaaajmaaaaafaafaaaaaaaaaaaaaaaaaaaaabXrbIpbXZbYabYbbXubXubXubXubXubXubYcbXubYdbYebYfbYebYebYgbXubYhbvZbYibYjbMAbYkbYlbYmbYnbYmbYmbYobYpbYqbKcbYrbYsbPMbYtbYubYvbKmbYwbYxbYybVrbYzbYAbRcbMSbMTbYBbYCbYCbLPaafaaaaaaaaaaaaaaaaaaaafbccbccbccbYDbYEbYDbccbYFbYGbjHbYHbjHbjHbYIbXUbXUbVabVabVabVabVabVabXqbYJbYKbYLbXqbVabYMbYNbXYbYObYPbYQbYRbYSbYTbYUbYUbYUbYUbYUaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajmaaabYVbYWbYXaaabYVbYWbYXaaabYVbYWbYXaafbYYaafaafaaaaaaaaaaaaaaaaaaaaaaaabXrbIpbWJbYZbZabXubXubXubXubXubXubXubZbbXubXubXubXubXubZcbZdbZebvZbSebvZbZfbXGbZgbZhbZibZjbZkbZlbZlbZmbZnbZobZpbZqbZrbOKbOKbOMbQUbZsbQZbONbSubZtbNRaafbNSbZubZvbZwbLPaafaaaaaaaaaaaaaaaaaaaaaaafaaabZxbZybZzbZAbZxbZxbZxbZxbZxbZxbZxbZBbZCbjHbjHbjHbZDbZEbZFbZFbccbZGbjHbsObjHbjHblibZHbZIbZJbZKbZLbZMbZNbZObZPbZQbZPbZRbZSaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDxaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajmaaabYVbZTbYXaaabYVbZTbYXaaabYVbZTbYXaafaafaafaafaaaaaaaaaaaaaaaaaaaaaaaabZUbIpbWJbVWbZVbXubXubXubZWbZXbZXbZYbXubZZbXubXubXubXubZccaacabbWdcacbvZbMAcadcaecafcagcahcahcahcaicajcakbLGbNGbLGbPMbLGbQUcalcamcancaobKrcapcaqbTMbOTbMTcarbYCbYCbLPaafaaaaaaaaaaaaaaaaafaafaafaaabZxcascatcaubZxcavcawcaxcaycavbZxbWrbWsbWsbVQbccbWrbWsbWsbVQbcccazcazcaAcaBcazcaCcaDbXYcaEcaFcaGcaHcaIcaJcaKcaJcaLcaMbZSaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaajlaafbYVbZTbYXaaabYVbZTbYXaafbYVbZTbYXaafaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaabJLbIpbWJbVWcaNbXubXubXucaOcaPcaQcaRcaScaPcaTcaUcaVcaWcaXcaYcaZcbacbbcbcbJYcbdcaecbecbfcbgcbhcbicbjcbkcblbMDcbmbNNcbnbQUbSobLGbLGbLMbSocbobSubUCbNRaafbLPbLPbLPbLPbLPaafaaaaaaaaaaaabZAbZxbZxbZxbZxbZxcbpcbqcbrbZxcavcbscavcbtcavbZxaaaaafaafaaaaaaaaaaaaaaaaafaaacazcbucbvcbwcazbccbccbXYcbxcbycbzcbAcbBcbCbZPcbDbZPcbEbZSaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeaaaaaaaaaaaaaaaaaaajlaafbYVbZTbYXaaabYVbZTbYXaafbYVbZTbYXaafaaaaaaaafaafaaaaaaaaaaaaaaaaaaaaabJLbIpbWJbVWcaNbXubXubXucaOcaPcaQcaRcaScaPcaTcaUcaVcaWcaXcaYcaZcbacbbcbcbJYcbdcaecbecbfcbgcbhbIScbjcbkcblbMDcbmbNNcbnbQUbSobLGbLGbLMbSocbobSubUCbNRaafbLPbLPbLPbLPbLPaafaaaaaaaaaaaabZAbZxbZxbZxbZxbZxcbpcbqcbrbZxcavcbscavcbtcavbZxaaaaafaafaaaaaaaaaaaaaaaaafaaacazcbucbvcbwcazbccbccbXYcbxcbycbzcbAcbBcbCbZPcbDbZPcbEbZSaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafaaabYVbZTbYXaafbYVbZTbYXaaabYVbZTbYXaaaaaaaaaaaaaaaaafaaaaafaaaaaaaaaaaabJLbIpbWJbVWcbFcbGcbGcbHbVWbVWbVWbVWbVWbVWbVWbVWbVWbVWcbIbVWbVWcbJcbKcbLbODcbMcaecbNcbOcbPcbPcbQcbRcbSbIFcbTcbUbSubOPcbVcbWcbXcbWcbVcbYcbVcbZbQUccaaafaafaafaafaafaafaafaaaaaaaaaaaaccbcccccdcceccfccgcchcciccjbZxcckcclcavccmcckbZxaaaaaaaafaafaaaaaaaaaaaaaafaaacazccnccoccpcazaafaafbXYccqccrccscctccubXYbYUbYUbYUccvbYUaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajmajmajlaafaaabYVbZTbYXaafbYVbZTbYXaaabYVbZTbYXaafaaaaaaaaaaaaaafaafccwccxccxccxccxbJLbIpbWJbVWccycczcczccAbVWccBccCccCccCccCccCccCccCccCccDbTrbTrccEccFccGccHccGccIccJccKccLccMccNccOccPbKcbKcccQccRccSccTccUccVccWccXbLGccYccZcdabLJaafaafaaaaaaaaaaaaaafaaaaaaaaaaaacdbcawcdccddbZxcdebZxcdfbZAbZxcdgcdhcdicdjcdkbZxaafaafaafaafaafaafaafaafaafaafcazcdlcdmcdncazaaaaaabXYbXYbXYcdocdpcdqbXYaagaagbYUbYUbYUaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajmaaaaafaaaaafaafcdraafaafaafcdraafaaaaafcdraafaaaaaaaaaaaaaaacdscdtcducdvcdwcdxcdybIpbIpbWJbVWbVWcdzcdAbVWbVWcdBcdCcdCcdCcdCcdCcdCcdCcdCcdDcdEcdEcdEcdFcdGcdHcdIcdJcdKcdLcdMcdNcdOcdPcdQcdRcdQcdScdTcdUcdVcdUcdTcdUcdVcdUcdWcdUcdWcdXaafaafaaaaaaaaaaaaaafaaaaaaaaaaaacdbcdYcdZceacebceccedceecefcegcehceicejcekcelbZxaaaaaaaaaaaaaafaaaaaaaaaaaaaaacemcenceocepceqaaaaaaaaaaafaafceraafcesaaaaafaaaaaaaaaaafaafaafaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
@@ -9401,10 +9402,10 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDGcDVcDWcDXcDWcDYcCyaaaaaaaaaaaaaaaaaaaaaaaaaaacDZcEacEbcEccEccEccEdcEecDZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacDGcDGcDGcDGcDGcDGcDGcDGcDGcDGcDGcDGcDGcDGcDGcDGcDGcDGcDGcDGcDGczuczvcEfczvcAEcCycCycCyaaaaaaaaaaaaaaaaaaaaacDZcEgcEbcEccEccEhcEdcEicDZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEjcEkcElcElcElcElcElcElcElcElcElcElcElcElcEmcEkcElcElcDGcEncBQcEoczvcEpczvcEqcBQcEncCyaaaaaaaaaaaaaaaaaaaaacErcEscEtcEscEucEscEtcEscEvaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEjcEkcElcEwcExcEycEwcExcExcExcEzcExcExcEAcEBcEkcElcElcDGcEncBacEoczvczvczvcEqcBacEncCycCycCycCycCycCyaaaaaacDZcECcEDcEDcEccEDcEDcECcDZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEjcEkcEwcEEcEFcEGcEHcEIcEIcEIcEIcEIcEIcEJcEBcEkcElcElcDGcEncBacEKczvczvczvcELcBacEncCycEMcEMcEMcEMcCyaaaaaacDZcENcEccEccEccEccEccEOcDZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEjcEkcElcEwcExcEycEwcExcExcExcEzcExcExcEAdqUcEkcElcElcDGcEncBacEoczvczvczvcEqcBacEncCycCycCycCycCycCyaaaaaacDZcECcEDcEDcEccEDcEDcECcDZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEjcEkcEwcEEcEFcEGcEHcEIcEIcEIcEIcEIcEIcEJcbicEkcElcElcDGcEncBacEKczvczvczvcELcBacEncCycEMcEMcEMcEMcCyaaaaaacDZcENcEccEccEccEccEccEOcDZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEjcEkcEzcEFcEPcEFcEQcEFcEFcEFcEFcEFcEFcEFcEQcElcElcElcDGcEncDWcEoczvczvczvcEqcDWcEncCycERcEScEScEScEScEScETcDZcENcEccEOcEUcENcEccEOcEVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEjcEkcEWcEXcEFcEYcEHcEZcEZcEZcEZcEZcEZcFacEBcEkcElcFbcDGcFccFdcFeczvczvczvcFfcFgcFhcCycFicFicFicFicFjcFkcFjcFlcEccEccEOcFmcENcEccEOcDZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEjcEkcEWcEXcEFcEYcEHcEZcEZcEZcEZcEZcEZcFacbicEkcElcFbcDGcFccFdcFeczvczvczvcFfcFgcFhcCycFicFicFicFicFjcFkcFjcFlcEccEccEOcFmcENcEccEOcDZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEjcEkcElcEWcExcFncEWcExcExcExcEzcExcExcFocEBcEkcElcFbcFpcElcFpcFqczvczvczvcFrcFjcFkcFjcFicFicFicFicFscEScETcDZcFtcEccEOcFucENcEccFvcDZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacEjcEkcElcElcElcElcElcElcElcElcElcElcElcElcEmcEkcElcFbcDGcFwcFdcFeczvczvczvcFfcFgcFhcCycFxcFxcFxcFxcCyaaaaaacFmcENcEccEOcFycENcEccEOcDZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacFzcFzcFzcFzcFzcFzcFzcFzcFzcFzcFzcFzcFzcFzcFzcFzcFAcFzcFzcEncFBcEoczvczvczvcEqcDDcEncCycCycFkcFkcCycCyaaaaaacFCcENcEccEOcFmcENcEccEOcEVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
|
||||