* altar stuff

* bloodstone

* dance

* objectives

* Early fixes

* some fixes

* conflicts etc
This commit is contained in:
DeityLink
2018-11-11 23:51:37 +01:00
committed by jknpj
parent 95829bf3f9
commit e35719ecea
47 changed files with 2299 additions and 158 deletions

View File

@@ -63,6 +63,7 @@
#define GREET_CONVERTED "converted"
#define GREET_PAMPHLET "pamphlet"
#define GREET_SOULSTONE "soulstone"
#define GREET_SOULBLADE "soulblade"
#define GREET_RESURRECT "resurrect"
@@ -131,6 +132,8 @@
#define MAX_TALISMAN_PER_TOME 5
#define SACRIFICE_CHANGE_COOLDOWN 30 MINUTES
////////////////////////////////////////////////////////////////////////////////
// -- Objectives flags

View File

@@ -1491,6 +1491,7 @@ var/proccalls = 1
#define HOLOMAP_FILTER_VOX 16
#define HOLOMAP_FILTER_STATIONMAP 32
#define HOLOMAP_FILTER_STATIONMAP_STRATEGIC 64//features markers over the captain's office, the armory, the SMES
#define HOLOMAP_FILTER_CULT 128//bloodstone locators
#define HOLOMAP_AREACOLOR_COMMAND "#447FC299"
#define HOLOMAP_AREACOLOR_SECURITY "#AE121299"
@@ -1509,11 +1510,16 @@ var/proccalls = 1
#define HOLOMAP_EXTRA_STATIONMAPSMALL_SOUTH "stationmapsmallsouth"
#define HOLOMAP_EXTRA_STATIONMAPSMALL_EAST "stationmapsmalleast"
#define HOLOMAP_EXTRA_STATIONMAPSMALL_WEST "stationmapsmallwest"
#define HOLOMAP_EXTRA_CULTMAP "cultmap"
#define HOLOMAP_MARKER_SMES "smes"
#define HOLOMAP_MARKER_DISK "diskspawn"
#define HOLOMAP_MARKER_SKIPJACK "skipjack"
#define HOLOMAP_MARKER_SYNDISHUTTLE "syndishuttle"
#define HOLOMAP_MARKER_BLOODSTONE "bloodstone"
#define HOLOMAP_MARKER_BLOODSTONE_BROKEN "bloodstone-broken"
#define HOLOMAP_MARKER_BLOODSTONE_ANCHOR "bloodstone-narsie"
#define DEFAULT_BLOOD "#A10808"

View File

@@ -96,6 +96,9 @@
blade.forceMove(A.loc)
A.blade = null
playsound(A.loc, 'sound/weapons/blade1.ogg', 50, 1)
if (A.is_locking(A.lock_type))
var/mob/M = A.get_locked(A.lock_type)[1]
A.unlock_atom(M)
A.update_icon()
else
return 0

View File

@@ -142,10 +142,51 @@
//////////////////////////////////////////////
// //
// CULT (LEGACY) ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// BLOOD CULT ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// //
//////////////////////////////////////////////
/datum/dynamic_ruleset/roundstart/bloodcult
name = "Blood Cult"
role_category = ROLE_CULTIST
protected_from_jobs = list("Merchant")
restricted_from_jobs = list("AI", "Cyborg", "Mobile MMI", "Security Officer", "Warden", "Detective", "Head of Security", "Captain", "Chaplain", "Head of Personnel", "Internal Affairs Agent", "Chaplain")
enemy_jobs = list("AI", "Cyborg", "Security Officer","Detective","Head of Security", "Captain", "Chaplain")
required_enemies = list(2,2,1,1,1,1,1,0,0,0)
required_candidates = 4
weight = 4
cost = 25
requirements = list(90,80,60,30,20,10,10,10,10,10)
var/cultist_cap = list(2,2,3,4,4,4,4,4,4,4)
/datum/dynamic_ruleset/roundstart/bloodcult/execute()
//if ready() did its job, candidates should have 4 or more members in it
var/datum/faction/bloodcult/cult = find_active_faction_by_type(/datum/faction/bloodcult)
if (!cult)
cult = ticker.mode.CreateFaction(/datum/faction/bloodcult, null, 1)
var/indice_pop = min(10,round(mode.roundstart_pop_ready/5)+1)
var/cultists = cultist_cap[indice_pop]
for(var/cultists_number = 1 to cultists)
if(candidates.len <= 0)
break
var/mob/M = pick(candidates)
assigned += M
candidates -= M
var/datum/role/cultist/newCultist = new
newCultist.AssignToRole(M.mind,1)
cult.HandleRecruitedRole(newCultist)
newCultist.Greet(GREET_ROUNDSTART)
return 1
//////////////////////////////////////////////
// //
// CULT (LEGACY) ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// //
//////////////////////////////////////////////
/*
/datum/dynamic_ruleset/roundstart/cult_legacy
name = "Cult (Legacy)"
role_category = ROLE_LEGACY_CULTIST
@@ -176,7 +217,7 @@
legacy.HandleRecruitedRole(newCultist)
newCultist.Greet(GREET_ROUNDSTART)
return 1
*/
//////////////////////////////////////////////
// //
@@ -197,7 +238,7 @@
var/operative_cap = list(2,2,3,3,4,5,5,5,5,5)
/datum/dynamic_ruleset/roundstart/nuclear/execute()
//if ready() did its job, candidates should have 4 or more members in it
//if ready() did its job, candidates should have 5 or more members in it
var/datum/faction/syndicate/nuke_op/nuclear = find_active_faction_by_type(/datum/faction/syndicate/nuke_op)
if (!nuclear)
nuclear = ticker.mode.CreateFaction(/datum/faction/syndicate/nuke_op, null, 1)

View File

@@ -1,7 +1,7 @@
//CULT 3.0 BY DEITY LINK (2018)
//BASED ON THE ORIGINAL GAME MODE BY URIST MCDORF
var/veil_thickness = CULT_EPILOGUE//REMEMBER TO SET IT BACK TO CULT_PROLOGUE WHEN DONE TESTING
var/veil_thickness = CULT_PROLOGUE
/client/proc/set_veil_thickness()
set category = "Special Verbs"
@@ -13,6 +13,9 @@ var/veil_thickness = CULT_EPILOGUE//REMEMBER TO SET IT BACK TO CULT_PROLOGUE WHE
veil_thickness = input(usr, "Enter a value (default = [CULT_PROLOGUE])", "Debug Veil Thickness", veil_thickness) as num
if (veil_thickness == CULT_ACT_III)
spawn_bloodstones()
var/datum/faction/bloodcult/cult = find_active_faction_by_type(/datum/faction/bloodcult)
if (cult)
for (var/datum/role/cultist/C in cult.members)
@@ -21,6 +24,54 @@ var/veil_thickness = CULT_EPILOGUE//REMEMBER TO SET IT BACK TO CULT_PROLOGUE WHE
for (var/obj/structure/cult/spire/S in cult_spires)
S.upgrade()
/proc/spawn_bloodstones(var/turf/source = null)
//Called at the beginning of ACT III, this is basically the cult's declaration of war on the crew
//Spawns 4 structures, one in each quarters of the station
//When spawning, those structures break and convert stuff around them, and add a wall layer in case of space exposure.
var/list/places_to_spawn = list()
for (var/i = 1 to 4)
for (var/j = 10; j > 0; j--)
var/turf/T = get_turf(pick(range(j*3,locate(map.center_x+j*4*(((round(i/2) % 2) == 0) ? -1 : 1 ),map.center_y+j*4*(((i % 2) == 0) ? -1 : 1 ),map.zMainStation))))
if(!is_type_in_list(T,list(/turf/space,/turf/unsimulated,/turf/simulated/shuttle)))
places_to_spawn += T
break
//A 5th bloodstone will spawn if a proper turf was given as arg (up to 100 tiles from the station center, and not in space
if (source && !isspace(source.loc) && get_dist(locate(map.center_x,map.center_y,map.zMainStation),source)<100)
places_to_spawn.Add(source)
for (var/T in places_to_spawn)
new /obj/structure/cult/bloodstone(T)
//Cultists can use those bloodstones to locate the rest of them, they work just like station holomaps
var/i = 1
for(var/obj/structure/cult/bloodstone/B in bloodstone_list)
var/datum/holomap_marker/newMarker = new()
newMarker.id = HOLOMAP_MARKER_BLOODSTONE
newMarker.filter = HOLOMAP_FILTER_CULT
newMarker.x = B.x
newMarker.y = B.y
newMarker.z = B.z
holomap_markers[HOLOMAP_MARKER_BLOODSTONE+"_[i]"] = newMarker
i++
var/icon/canvas = icon('icons/480x480.dmi', "cultmap")
var/icon/map_base = icon(holoMiniMaps[map.zMainStation])
map_base.Blend("#E30000",ICON_MULTIPLY)
canvas.Blend(map_base,ICON_OVERLAY)
for(var/marker in holomap_markers)
var/datum/holomap_marker/holomarker = holomap_markers[marker]
if(holomarker.z == map.zMainStation && holomarker.filter & HOLOMAP_FILTER_CULT)
if(map.holomap_offset_x.len >= map.zMainStation)
canvas.Blend(icon(holomarker.icon,holomarker.id), ICON_OVERLAY, holomarker.x-8+map.holomap_offset_x[map.zMainStation] , holomarker.y-8+map.holomap_offset_y[map.zMainStation])
else
canvas.Blend(icon(holomarker.icon,holomarker.id), ICON_OVERLAY, holomarker.x-8, holomarker.y-8)
extraMiniMaps |= HOLOMAP_EXTRA_CULTMAP
extraMiniMaps[HOLOMAP_EXTRA_CULTMAP] = canvas
for(var/obj/structure/cult/bloodstone/B in bloodstone_list)
B.holomap_datum = new /datum/station_holomap/cult()
B.holomap_datum.initialize_holomap(B.loc)
//CULT_PROLOGUE Default thickness, only communication and raise structure runes enabled
//CULT_ACT_I Altar raised. cultists can now convert.
//CULT_ACT_II Cultist amount reached. cultists are now looking for the sacrifice
@@ -39,8 +90,19 @@ var/veil_thickness = CULT_EPILOGUE//REMEMBER TO SET IT BACK TO CULT_PROLOGUE WHE
Nar-Sie's goal is to tear open a breach through reality so he can pull the station into his realm and feast on the crew's blood and souls."
roletype = /datum/role/cultist
logo_state = "cult-logo"
var/list/bloody_floors = list()//to replace later on
hud_icons = list("cult-logo")
var/list/bloody_floors = list()
var/target_change = FALSE
var/change_cooldown = 0
var/cult_win = FALSE
/datum/faction/bloodcult/check_win()
return cult_win
/datum/faction/bloodcult/proc/fail()
if (cult_win || veil_thickness == CULT_MENDED)
return
progress(CULT_MENDED)
/datum/faction/bloodcult/AdminPanelEntry(var/datum/admins/A)
var/list/dat = ..()
@@ -53,15 +115,132 @@ var/veil_thickness = CULT_EPILOGUE//REMEMBER TO SET IT BACK TO CULT_PROLOGUE WHE
/datum/faction/bloodcult/OnPostSetup()
initialize_cultwords()
AppendObjective(/datum/objective/bloodcult_reunion)
//to recode later on
/datum/faction/bloodcult/proc/is_sacrifice_target(var/datum/mind/M)
/*
for(var/datum/objective/target/sacrifice/S in GetObjectives())
if(S.target == M)
return TRUE
*/
return FALSE
/datum/faction/bloodcult/process()
..()
if (change_cooldown)
change_cooldown--
if (change_cooldown <= 0)
var/datum/objective/bloodcult_sacrifice/O = locate() in objective_holder.objectives
if (!O.IsFulfilled())
O.failed_targets += O.sacrifice_target
spawn()
if (O.replace_target())
for(var/datum/role/cultist/C in members)
var/mob/M = C.antag.current
if (M)
to_chat(M,"<span class='danger'>The sacrifice wasn't performed in time.</span><b> A new target has been assigned. [O.explanation_text]</b>")
if (M == O.sacrifice_target)
to_chat(M,"<b>There is no greater honor than purposefuly relinquishing your body for the coming of Nar-Sie, but you may wait for another target to be selected should you be afraid of death.</b>")
else if (iscultist(O.sacrifice_target))
to_chat(M,"<b>Chance has rolled its dice, and one of ours was selected. If for whatever reasons you do not want to take their life, you will have to wait for a new selection.</b>")
if (target_change)
change_cooldown = SACRIFICE_CHANGE_COOLDOWN
/datum/faction/bloodcult/proc/progress(var/new_act,var/A)
//This proc is called to update the faction's current objectives, and veil thickness
if (veil_thickness == CULT_MENDED)
return//it's over, you lost
if (new_act == CULT_MENDED)
veil_thickness = CULT_MENDED
emergency_shuttle.shutdown = 0//The shuttle can be called once again.
ticker.StopThematic()
for (var/obj/structure/cult/bloodstone/B in bloodstone_list)
B.takeDamage(1500)
for (var/datum/role/cultist/C in members)
//TODO: blood curse
C.update_cult_hud()
return
if (new_act <= veil_thickness)
return
var/datum/objective/new_obj = null
switch(new_act)
if (CULT_ACT_I)
var/datum/objective/bloodcult_reunion/O = locate() in objective_holder.objectives
if (O)
O.altar_built = TRUE
veil_thickness = CULT_ACT_I
new_obj = new /datum/objective/bloodcult_followers
if (CULT_ACT_II)
var/datum/objective/bloodcult_followers/O = locate() in objective_holder.objectives
if (O)
O.conversions++
if (O.conversions >= O.convert_target)
veil_thickness = CULT_ACT_II
new_obj = new /datum/objective/bloodcult_sacrifice
if (CULT_ACT_III)
var/datum/objective/bloodcult_sacrifice/O = locate() in objective_holder.objectives
if (O)
O.target_sacrificed = TRUE
veil_thickness = CULT_ACT_III
emergency_shuttle.force_shutdown()//No shuttle calls until the cult either wins or fails.
ticker.StartThematic("endgame")
spawn_bloodstones(A)
new_obj = new /datum/objective/bloodcult_bloodbath
if (CULT_ACT_IV)
var/datum/objective/bloodcult_bloodbath/O = locate() in objective_holder.objectives
if (O)
veil_thickness = CULT_ACT_IV
new_obj = new /datum/objective/bloodcult_tearinreality
if (CULT_EPILOGUE)
var/datum/objective/bloodcult_tearinreality/O = locate() in objective_holder.objectives
if (O)
O.NARSIE_HAS_RISEN = TRUE
veil_thickness = CULT_EPILOGUE
new_obj = new /datum/objective/bloodcult_feast
if (new_obj)
AppendObjective(new_obj)
for(var/datum/role/cultist/C in members)
var/mob/M = C.antag.current
if (M)
to_chat(M,"<span class='danger'>[new_obj.name]</span><b>: [new_obj.explanation_text]</b>")
if (istype(new_obj,/datum/objective/bloodcult_sacrifice))
var/datum/objective/bloodcult_sacrifice/O = new_obj
if (M == O.sacrifice_target)
to_chat(M,"<b>There is no greater honor than purposefuly relinquishing your body for the coming of Nar-Sie, but you may wait for another target to be selected should you be afraid of death.</b>")
else if (iscultist(O.sacrifice_target))
to_chat(M,"<b>Chance has rolled its dice, and one of ours was selected. If for whatever reasons you do not want to take their life, you will have to wait for a new selection.</b>")
for (var/datum/role/cultist/C in members)
C.update_cult_hud()
for (var/obj/structure/cult/spire/S in cult_spires)
S.upgrade()
if (istype(new_obj,/datum/objective/bloodcult_bloodbath))
var/datum/objective/bloodcult_bloodbath/O = new_obj
O.max_bloodspill = max(O.max_bloodspill,bloody_floors.len)
if (O.IsFulfilled())
progress(CULT_ACT_IV)
/datum/faction/bloodcult/proc/add_bloody_floor(var/turf/T)
if (!istype(T))
return
if(T && (T.z == map.zMainStation))//F I V E T I L E S
if(!(locate("\ref[T]") in bloody_floors))
bloody_floors += T
bloody_floors[T] = T
for (var/obj/structure/cult/bloodstone/B in bloodstone_list)
B.update_icon()
var/datum/objective/bloodcult_bloodbath/O = locate() in objective_holder.objectives
if (O && !O.IsFulfilled())
O.max_bloodspill = max(O.max_bloodspill,bloody_floors.len)
if (O.IsFulfilled())
progress(CULT_ACT_IV)
/datum/faction/bloodcult/proc/remove_bloody_floor(var/turf/T)
if (!istype(T))
return
for (var/obj/structure/cult/bloodstone/B in bloodstone_list)
B.update_icon()
bloody_floors -= T
/proc/is_convertable_to_cult(datum/mind/mind)
if(!istype(mind))

View File

@@ -1,6 +1,4 @@
/datum/cult_ritual//placeholder, this will serve with cult building rituals, and stuff like the new Nar-Sie summoning
/obj/structure/cult
density = 1
anchored = 1
@@ -10,6 +8,11 @@
var/sound_damaged = null
var/sound_destroyed = null
var/conceal_cooldown = 0
var/timeleft = 0
var/timetotal = 0
var/list/contributors = list()//list of cultists currently participating in the ritual
var/image/progbar = null//progress bar
var/cancelling = 3//check to abort the ritual if interrupted
/obj/structure/cult/proc/conceal()
var/obj/structure/cult/concealed/C = new(loc)
@@ -141,7 +144,9 @@
// CULT ALTAR //Allows communication with Nar-Sie for advice and info on the Cult's current objective.
// //ACT II : Allows Soulstone crafting, Used to sacrifice the target on the Station
///////////////////////////ACT III : Can plant an empty Soul Blade in it to prompt observers to become the blade's shade
#define ALTARTASK_NONE 0
#define ALTARTASK_GEM 1
#define ALTARTASK_SACRIFICE 2
/obj/structure/cult/altar
name = "altar"
@@ -153,6 +158,9 @@
sound_destroyed = 'sound/effects/stone_crumble.ogg'
layer = TABLE_LAYER
var/obj/item/weapon/melee/soulblade/blade = null
var/lock_type = /datum/locking_category/buckle/bed
var/altar_task = ALTARTASK_NONE
var/gem_delay = 300
/obj/structure/cult/altar/New()
@@ -176,7 +184,9 @@
..()
/obj/structure/cult/altar/attackby(var/obj/item/I, var/mob/user)
if(istype(I,/obj/item/weapon/melee/soulblade))
if (altar_task)
return ..()
if(istype(I,/obj/item/weapon/melee/soulblade) || (istype(I,/obj/item/weapon/melee/cultblade) && !istype(I,/obj/item/weapon/melee/cultblade/nocult)))
if (blade)
to_chat(user,"<span class='warning'>You must remove the blade planted on \the [src] first.</span>")
return 1
@@ -186,19 +196,58 @@
I.forceMove(src)
blade = I
update_icon()
to_chat(user, "You plant \the [blade] on top of \the [src]</span>")
var/mob/living/carbon/human/C = locate() in loc
if (C && C.resting)
C.unlock_from()
C.update_canmove()
lock_atom(C, lock_type)
C.apply_damage(blade.force, BRUTE, LIMB_CHEST)
if (C == user)
user.visible_message("<span class='danger'>\The [user] holds \the [I] above their stomach and impale themselves on \the [src]! That's fucking brutal!</span>","<span class='danger'>You hold \the [I] above your stomach and impale yourself on \the [src]! That's fucking brutal!</span>")
else
user.visible_message("<span class='danger'>\The [user] holds \the [I] above \the [C]'s stomach and impale them on \the [src]!</span>","<span class='danger'>You hold \the [I] above \the [C]'s stomach and impale them on \the [src]!</span>")
else
to_chat(user, "You plant \the [blade] on top of \the [src]</span>")
if (istype(blade))
var/icon/logo_icon = icon('icons/logos.dmi', "shade-blade")
for(var/mob/M in observers)
if(!M.client || jobban_isbanned(M, ROLE_CULTIST) || M.client.is_afk())
continue
to_chat(M, "[bicon(logo_icon)]<span class='recruit'>\The [user] has planted a Soul Blade on an altar, opening a small crack in the veil that allows you to become the blade's resident shade. (<a href='?src=\ref[src];signup=\ref[M]'>Possess now!</a>)</span>[bicon(logo_icon)]")
return 1
if (istype(I, /obj/item/weapon/grab))
if (blade)
to_chat(user,"<span class='warning'>You must remove the blade planted on \the [src] first.</span>")
return 1
var/obj/item/weapon/grab/G = I
if(iscarbon(G.affecting))
var/mob/living/carbon/C = G.affecting
C.unlock_from()
if (!do_after(user,C,15))
return
if (ishuman(C))
C.resting = 1
C.update_canmove()
C.forceMove(loc)
returnToPool(G)
to_chat(user, "<span class='warning'>You move \the [C] on top of \the [src]</span>")
return 1
..()
/obj/structure/cult/altar/update_icon()
if (blade)
if (blade.shade)
icon_state = "altar-soulblade-full"
else
icon_state = "altar-soulblade"
else
icon_state = "altar"
icon_state = "altar"
overlays.len = 0
if (blade)
var/image/I
if (!istype(blade))
I = image(icon, "altar-cultblade")
else if (blade.shade)
I = image(icon, "altar-soulblade-full")
else
I = image(icon, "altar-soulblade")
I.plane = ABOVE_HUMAN_PLANE
I.pixel_y = 3
overlays.Add(I)
var/image/I = image(icon, "altar_overlay")
I.plane = ABOVE_HUMAN_PLANE
overlays.Add(I)
@@ -232,6 +281,8 @@
return 0
/obj/structure/cult/altar/MouseDropTo(var/atom/movable/O, var/mob/user)
if (altar_task)
return
if (!O.anchored && (istype(O, /obj/item) || user.get_active_hand() == O))
if(!user.drop_item(O))
return
@@ -251,8 +302,13 @@
var/mob/living/L = O
if(!istype(L) || L.locked_to || L == user)
return
if (blade)
to_chat(user,"<span class='warning'>You must remove the blade planted on \the [src] first.</span>")
return 1
var/mob/living/carbon/C = O
if (!do_after(user,C,15))
return
C.unlock_from()
if (ishuman(C))
@@ -265,6 +321,8 @@
to_chat(user, "<span class='warning'>You move \the [O] on top of \the [src]</span>")
/obj/structure/cult/altar/conceal()
if (blade || altar_task)
return
anim(location = loc,target = loc,a_icon = icon, flick_anim = "[icon_state]-conceal")
for (var/mob/living/carbon/C in loc)
Uncrossed(C)
@@ -280,7 +338,81 @@
.=..()
if (!.)
return
if (blade)
if (altar_task)
if (altar_task == ALTARTASK_SACRIFICE)
if (user in contributors)
return
if (!user.checkTattoo(TATTOO_SILENT))
if (prob(5))
user.say("Let me show you the dance of my people!","C")
else
user.say("Barhah hra zar'garis!","C")
contributors.Add(user)
if (user.client)
user.client.images |= progbar
return
if(is_locking(lock_type))
var/choices = list(
list("Remove Blade", "radial_altar_remove", "Transfer some of your blood to the blade to repair it and refuel its blood level, or you could just slash someone."),
list("Sacrifice", "radial_altar_sacrifice", "Initiate the sacrifice ritual. The ritual can only proceed if the proper victim has been nailed to the altar."),
)
var/task = show_radial_menu(user,loc,choices,'icons/obj/cult_radial3.dmi',"radial-cult2")
if (!is_locking(lock_type) || !Adjacent(user) || !task)
return
switch (task)
if ("Remove Blade")
var/mob/M = get_locked(lock_type)[1]
if(M != user)
if (do_after(user,src,20))
M.visible_message("<span class='notice'>\The [M] was freed from \the [src] by \the [user]!</span>","You were freed from \the [src] by \the [user].")
unlock_atom(M)
if (blade)
blade.forceMove(loc)
blade.attack_hand(user)
to_chat(user, "<span class='warning'>You remove \the [blade] from \the [src]</span>")
blade = null
playsound(loc, 'sound/weapons/blade1.ogg', 50, 1)
update_icon()
if ("Sacrifice")
var/datum/faction/bloodcult/cult = find_active_faction_by_type(/datum/faction/bloodcult)
if (cult)
var/datum/objective/bloodcult_sacrifice/O = locate() in cult.objective_holder.objectives
if (O && is_locking(lock_type))
var/mob/victim = get_locked(lock_type)[1]
if (victim == O.sacrifice_target)
altar_task = ALTARTASK_SACRIFICE
timeleft = 30
timetotal = timeleft
update_icon()
contributors.Add(user)
update_progbar()
if (user.client)
user.client.images |= progbar
var/image/I = image('icons/obj/cult.dmi',"build")
I.pixel_y = 8
src.overlays += I
if (!user.checkTattoo(TATTOO_SILENT))
if (prob(5))
user.say("Let me show you the dance of my people!","C")
else
user.say("Barhah hra zar'garis!","C")
if (user.client)
user.client.images |= progbar
safe_space()
for(var/mob/M in range(src,40))
if (M.z == z && M.client)
if (get_dist(M,src)<=20)
M.playsound_local(src, get_sfx("explosion"), 50, 1)
shake_camera(M, 2, 1)
else
M.playsound_local(src, 'sound/effects/explosionfar.ogg', 50, 1)
shake_camera(M, 1, 1)
spawn()
dance_start()
else
to_chat(user, "<span class='sinister'>This isn't the One.</span>")
else if (blade)
blade.forceMove(loc)
blade.attack_hand(user)
to_chat(user, "You remove \the [blade] from \the [src]</span>")
@@ -288,53 +420,195 @@
playsound(loc, 'sound/weapons/blade1.ogg', 50, 1)
update_icon()
return
var/dat = ""
switch (menu)
if ("default")
dat = {"<body style="color:#FF0000" bgcolor="#110000"><dl>
<dt><a href='?src=\ref[src];altar=commune' style="color:#FFFFFF"><b>Commune with Nar-Sie</b></a></dt>
<dd>Should you need guidance, Nar-Sie can offer you some tips.</br>
The tips can vary depending on the veil's thickness.</dd>"}
if (veil_thickness >= CULT_ACT_II)
dat += {"<dt><a href='?src=\ref[src];altar=soulstone' style="color:#FFFFFF"><b>Conjure Soulstone</b></a></dt>
<dd>For a tribute of 60u of blood, this altar will conjure a soulstone over 30s.</br>
Use them to capture the soul of a dead or critically injured enemy.</dd>"}
else
dat += {"<dt><b style="color:#666666">Conjure Soulstone - LOCKED (ACT II)</b></dt>
</br>"}
if (veil_thickness == CULT_ACT_II)
dat += {"<dt><a href='?src=\ref[src];altar=sacrifice' style="color:#FFFFFF"><b>Offer in Sacrifice</b></a></dt>
<dd>The body of the individual designated by Nar-Sie is the key to tear down the veil.</br>
Place them on \the [name] first, but be prepared to oppose the crew openly.</dd>"}
else
dat += {"<dt><b style="color:#666666">Offer in Sacrifice - LOCKED (ACT II only)</b></dt>
</br>"}
if (veil_thickness >= CULT_ACT_III)
dat += {"<dt><a href='?src=\ref[src];altar=soulblade' style="color:#FFFFFF"><b>Conjure Soul into Blade</b></a></dt>
<dd>Leave a soul blade on \the [name] to imbue it with the souls of the dead from hell.</br>
It takes a while, but can be an alternative to capturing a soul by yourself.</dd>"}
else
dat += {"<dt><b style="color:#666666">Conjure Soul into Blade - LOCKED (ACT III)</b></dt>
</br>"}
dat += {"</dl></body>"}
if ("commune")
dat = {"<body style="color:#FF0000" bgcolor="#110000"><dl><dt>TODO ADD NARSIE TIPS FOR EACH ACTS</dt></dl></body>"}
else
var/choices = list(
list("Consult Roster", "radial_altar_roster", "Check the names and status of all of the cult's members."),
list("Commune with Nar-Sie", "radial_altar_commune", "Obtain guidance from Nar-Sie to help you complete your objectives."),
list("Conjure Soul Gem", "radial_altar_gem", "Order the altar to sculpt you a Soul Gem, to capture the soul of your enemies."),
)
var/task = show_radial_menu(user,loc,choices,'icons/obj/cult_radial3.dmi',"radial-cult2")
if (is_locking(lock_type) || !Adjacent(user) || !task)
return
switch (task)
if ("Consult Roster")
var/datum/faction/bloodcult/cult = find_active_faction_by_type(/datum/faction/bloodcult)
if (!cult)
return
var/dat = {"<body style="color:#FFFFFF" bgcolor="#110000"><ul>"}
for (var/datum/role/cultist/C in cult.members)
var/datum/mind/M = C.antag
var/conversion = ""
if (C.conversion.len > 0)
conversion = pick(C.conversion)
var/origin_text = ""
switch (conversion)
if ("converted")
origin_text = "Converted by [C.conversion[conversion]]"
if ("resurrected")
origin_text = "Resurrected by [C.conversion[conversion]]"
if ("soulstone")
origin_text = "Soul captured by [C.conversion[conversion]]"
if ("altar")
origin_text = "Volunteer shade"
else
origin_text = "Founder"
var/mob/living/carbon/H = C.antag.current
var/extra = ""
if (H && istype(H))
if (H.isInCrit())
extra = " - <span style='color:#FF0000'>CRITICAL</span>"
else if (H.isDead())
extra = " - <span style='color:#FF0000'>DEAD</span>"
dat += "<li><b>[M.name]</b></li> - [origin_text][extra]"
dat += {"</ul></body>"}
user << browse("<TITLE>Cult Roster</TITLE>[dat]", "window=cultroster;size=500x300")
onclose(user, "cultroster")
if ("Commune with Nar-Sie")
switch(veil_thickness)
if (CULT_MENDED)
to_chat(user, "...nothing but silence...")
if (CULT_PROLOGUE)
to_chat(user, "<span class='game say'><span class='danger'>Nar-Sie</span> murmurs, <span class='sinister'>How interesting...</span></span>")
if (CULT_ACT_I)
to_chat(user, "<span class='game say'><span class='danger'>Nar-Sie</span> murmurs, <span class='sinister'>The conversion rune is <span class='danger'>Join Blood Self</span>, but you now have many new runes at your disposal to help you in your task, therefore I recommend you first summon an Arcane Tome to easily scribe them. The rune that conjures a tome is <span class='danger'>See Blood Hell</span>.</span></span>")
if (CULT_ACT_II)
to_chat(user, "<span class='game say'><span class='danger'>Nar-Sie</span> murmurs, <span class='sinister'>To perform the sacrifice, you'll have to forge a cult blade first. It doesn't matter if the target is alive of not, lay their body down on the altar and plant the blade on their stomach. Next, touch the altar to perform the next step of the ritual. The more of you, the quicker it will be done.</span></span>")
if (CULT_ACT_III)
to_chat(user, "<span class='game say'><span class='danger'>Nar-Sie</span> murmurs, <span class='sinister'>The crew is now aware of our presence, prepare to draw blood. Your priority is to spill as much blood as you can all over the station, bloody trails left by foot steps count toward this goal. How you obtain the blood, I leave to your ambition, but remember that if the crew destroys every blood stones, you will be doomed.</span></span>")
if (CULT_ACT_IV)
to_chat(user, "<span class='game say'><span class='danger'>Nar-Sie</span> murmurs, <span class='sinister'>One of the blood stones has become my anchor in this plane, you can touch any other stone to locate it. Touch the anchor to perform the Tear Reality ritual before the crew breaks it.</span></span>")
if (CULT_EPILOGUE)
to_chat(user, "<span class='game say'><span class='danger'>Nar-Sie</span> murmurs, <span class='sinister'>Remarkable work, [user.real_name], I greatly enjoyed observing this game. Your work is over now, but I may have more in store for you in the future. In the meanwhile, bask in your victory.</span></span>")
/* TODO: I'll finish that up someday
var/dat = {"<body style="color:#FFFFFF" bgcolor="#110000"><ul>"}
dat += {"</ul></body>"}
user << browse("<TITLE>Nar-Sie's Tips</TITLE>[dat]", "window=narsietips;size=500x300")
onclose(user, "narsietips")
*/
if ("Conjure Soul Gem")
altar_task = ALTARTASK_GEM
update_icon()
overlays += "altar-soulstone1"
spawn (gem_delay/3)
update_icon()
overlays += "altar-soulstone2"
sleep (gem_delay/3)
update_icon()
overlays += "altar-soulstone3"
sleep (gem_delay/3)
altar_task = ALTARTASK_NONE
update_icon()
var/obj/item/device/soulstone/gem/gem = new (loc)
gem.pixel_y = 4
/obj/structure/cult/altar/noncultist_act(var/mob/user)//Non-cultists can still remove blades planted on altars.
if(iscultist(user))
return 0
if(is_locking(lock_type))
var/mob/M = get_locked(lock_type)[1]
if(M != user)
if (do_after(user,src,20))
M.visible_message("<span class='notice'>\The [M] was freed from \the [src] by \the [user]!</span>","You were freed from \the [src] by \the [user].")
unlock_atom(M)
if (blade)
blade.forceMove(loc)
blade.attack_hand(user)
to_chat(user, "You remove \the [blade] from \the [src]</span>")
blade = null
playsound(loc, 'sound/weapons/blade1.ogg', 50, 1)
update_icon()
else if (blade)
blade.forceMove(loc)
blade.attack_hand(user)
to_chat(user, "You remove \the [blade] from \the [src]</span>")
blade = null
playsound(loc, 'sound/weapons/blade1.ogg', 50, 1)
update_icon()
return
else
to_chat(user,"<span class='sinister'>You feel madness taking its toll, trying to figure out \the [name]'s purpose</span>")
return 1
user << browse("<TITLE>Cult Altar</TITLE>[dat]", "window=cultaltar;size=565x280")
onclose(user, "cultaltar")
/obj/structure/cult/altar/Topic(href, href_list)
switch (href_list["altar"])
if ("commune")
cultist_act(usr,"commune")
if ("soulstone")
to_chat(usr,"TODO: SPAWN A SOULSTONE")
if ("sacrifice")
to_chat(usr,"TODO: SACRIFICE")
if ("soulblade")
to_chat(usr,"TODO: IMBUE SOULBLADE")
if(href_list["signup"])
var/mob/M = usr
if(!M || !isobserver(M))
return
var/obj/item/weapon/melee/soulblade/blade = locate() in src
if (!blade || !istype(blade))
to_chat(usr, "<span class='warning'>The Soul Blade was pulled off from \the [src]</span>")
return
if (blade.shade)
to_chat(usr, "<span class='warning'>Another shade was faster, and is currently possessing the blade.</span>")
return
var/mob/living/simple_animal/shade/shadeMob = new(blade)
shadeMob.status_flags |= GODMODE
shadeMob.canmove = 0
shadeMob.ckey = usr.ckey
spawn()
var/list/shade_names = list("Orenmir","Felthorn","Sparda","Vengeance","Klinge")
shadeMob.real_name = pick(shade_names)
shadeMob.real_name = copytext(sanitize(input(shadeMob, "You have no memories of your previous life, if you even had one. What name will you give yourself?", "Give yourself a new name", "[shadeMob.real_name]") as null|text),1,MAX_NAME_LEN)
shadeMob.name = "[shadeMob.real_name] the Shade"
if (shadeMob.mind)
shadeMob.mind.name = shadeMob.real_name
shadeMob.cancel_camera()
shadeMob.give_blade_powers()
blade.dir = NORTH
blade.update_icon()
update_icon()
//Automatically makes them cultists
var/datum/role/cultist/newCultist = new
newCultist.AssignToRole(shadeMob.mind,1)
var/datum/faction/bloodcult/cult = find_active_faction_by_type(/datum/faction/bloodcult)
if (!cult)
cult = ticker.mode.CreateFaction(/datum/faction/bloodcult, null, 1)
cult.HandleRecruitedRole(newCultist)
newCultist.OnPostSetup()
newCultist.Greet(GREET_SOULBLADE)
newCultist.conversion.Add("altar")
/obj/structure/cult/altar/dance_start()//This is executed at the end of the sacrifice ritual
var/datum/faction/bloodcult/cult = find_active_faction_by_type(/datum/faction/bloodcult)
if (cult)
cult.change_cooldown = max(cult.change_cooldown,60 SECONDS)
. = ..()//true if the ritual was successful
altar_task = ALTARTASK_NONE
update_icon()
if (. && is_locking(lock_type))
var/mob/M = get_locked(lock_type)[1]
if (istype(blade) && !blade.shade)//If an empty soul blade was the tool used for the ritual, let's make them its shade.
var/mob/living/simple_animal/shade/new_shade = M.change_mob_type( /mob/living/simple_animal/shade , null, null, 1 )
blade.forceMove(loc)
blade.blood = blade.maxblood
new_shade.forceMove(blade)
blade.update_icon()
blade = null
new_shade.status_flags |= GODMODE
new_shade.canmove = 0
new_shade.name = "[M.real_name] the Shade"
new_shade.real_name = "[M.real_name]"
new_shade.give_blade_powers()
playsound(get_turf(src), get_sfx("soulstone"), 50,1)
else
M.gib()
var/turf/T = loc
cult = find_active_faction_by_type(/datum/faction/bloodcult)
if (cult)
cult.progress(CULT_ACT_III,T)
else
message_admins("Blood Cult: A sacrifice was completed...but we cannot find the cult faction...")//failsafe in case of admin varedit fuckery
qdel(src)
#undef ALTARTASK_NONE
#undef ALTARTASK_GEM
#undef ALTARTASK_SACRIFICE
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// //Spawned from the Raise Structure rune. Available from Act II, upgrades at each subsequent Act
// CULT SPIRE //Can be used by cultists to acquire arcane tattoos. One of each tier.
@@ -529,10 +803,7 @@ var/list/cult_spires = list()
var/set_temperature = 50
var/mob/forger = null
var/template = null
var/timeleft = 0
var/timetotal = 0
var/obj/effect/cult_ritual/forge/forging = null
var/image/progbar = null//progress bar
/obj/structure/cult/forge/New()
@@ -687,7 +958,7 @@ var/list/cult_spires = list()
return 1
..()
/obj/structure/cult/forge/proc/update_progbar()
/obj/structure/cult/proc/update_progbar()
if (!progbar)
progbar = image("icon" = 'icons/effects/doafter_icon.dmi', "loc" = src, "icon_state" = "prog_bar_0")
progbar.pixel_z = WORLD_ICON_SIZE
@@ -698,6 +969,14 @@ var/list/cult_spires = list()
progbar.layer = HUD_ABOVE_ITEM_LAYER
progbar.icon_state = "prog_bar_[round((100 - min(1, timeleft / timetotal) * 100), 10)]"
/obj/structure/cult/altar/update_progbar()
if (!progbar)
progbar = image("icon" = 'icons/effects/doafter_icon.dmi', "loc" = src, "icon_state" = "prog_bar_0")
progbar.pixel_z = WORLD_ICON_SIZE
progbar.plane = HUD_PLANE
progbar.layer = HUD_ABOVE_ITEM_LAYER
progbar.icon_state = "prog_bar_[round((100 - min(1, timeleft / timetotal) * 100), 10)]"
/obj/structure/cult/forge/cultist_act(var/mob/user,var/menu="default")
.=..()
if (!.)
@@ -768,3 +1047,420 @@ var/list/cult_spires = list()
I.layer = NARSIE_GLOW
I.blend_mode = BLEND_ADD
overlays += I
/obj/structure/cult/pillar
name = "obsidian pillar"
icon_state = "pillar-enter"
icon = 'icons/obj/cult_64x64.dmi'
pixel_x = -16 * PIXEL_MULTIPLIER
health = 300
maxHealth = 300
sound_damaged = 'sound/effects/stone_hit.ogg'
sound_destroyed = 'sound/effects/stone_crumble.ogg'
plane = EFFECTS_PLANE
layer = BELOW_PROJECTILE_LAYER
var/alt = 0
/obj/structure/cult/pillar/New()
..()
var/turf/T = loc
for (var/obj/O in loc)
if (O != src)
O.ex_act(2)
T.ChangeTurf(/turf/simulated/floor/engine/cult)
T.turf_animation('icons/effects/effects.dmi',"cultfloor", 0, 0, MOB_LAYER-1, anim_plane = TURF_PLANE)
for (var/obj/structure/S in T)
if (S != src)
qdel(S)
for (var/obj/machinery/M in T)
qdel(M)
/obj/structure/cult/pillar/Destroy()
new /obj/effect/decal/cleanable/ash(loc)
..()
/obj/structure/cult/pillar/alt
icon_state = "pillaralt-enter"
alt = 1
/obj/structure/cult/pillar/update_icon()
icon_state = "pillar[alt ? "alt": ""]2"
overlays.len = 0
if (health < maxHealth/3)
icon_state = "pillar[alt ? "alt": ""]0"
else if (health < 2*maxHealth/3)
icon_state = "pillar[alt ? "alt": ""]1"
/obj/structure/cult/pillar/conceal()
return
/obj/structure/cult/pillar/ex_act(var/severity)
switch(severity)
if (1)
takeDamage(300)
if (2)
takeDamage(100)
if (3)
takeDamage(20)
var/list/bloodstone_list = list()
/obj/structure/cult/bloodstone
name = "blood stone"
icon_state = "bloodstone-enter1"
icon = 'icons/obj/cult_64x64.dmi'
pixel_x = -16 * PIXEL_MULTIPLIER
health = 900
maxHealth = 900
sound_damaged = 'sound/effects/stone_hit.ogg'
sound_destroyed = 'sound/effects/stone_crumble.ogg'
plane = EFFECTS_PLANE
layer = BELOW_PROJECTILE_LAYER
light_color = "#FF0000"
var/list/watching_mobs = list()
var/list/watcher_maps = list()
var/datum/station_holomap/holomap_datum
var/anchor = FALSE
/obj/structure/cult/bloodstone/New()
..()
bloodstone_list.Add(src)
for (var/obj/O in loc)
if (O != src)
O.ex_act(2)
safe_space()
set_light(3)
for(var/mob/M in player_list)
if (M.z == z && M.client)
if (get_dist(M,src)<=20)
M.playsound_local(src, get_sfx("explosion"), 50, 1)
shake_camera(M, 4, 1)
else
M.playsound_local(src, 'sound/effects/explosionfar.ogg', 50, 1)
shake_camera(M, 1, 1)
spawn(10)
var/list/pillars = list()
icon_state = "bloodstone-enter2"
for(var/mob/M in player_list)
if (M.z == z && M.client)
if (get_dist(M,src)<=20)
M.playsound_local(src, get_sfx("explosion"), 50, 1)
shake_camera(M, 4, 1)
else
M.playsound_local(src, 'sound/effects/explosionfar.ogg', 50, 1)
shake_camera(M, 1, 1)
var/turf/T1 = locate(x-2,y-2,z)
pillars += new /obj/structure/cult/pillar(T1)
var/turf/T2 = locate(x+2,y-2,z)
pillars += new /obj/structure/cult/pillar/alt(T2)
var/turf/T3 = locate(x-2,y+2,z)
pillars += new /obj/structure/cult/pillar(T3)
var/turf/T4 = locate(x+2,y+2,z)
pillars += new /obj/structure/cult/pillar/alt(T4)
sleep(10)
icon_state = "bloodstone-enter3"
for(var/mob/M in player_list)
if (M.z == z && M.client)
if (get_dist(M,src)<=20)
M.playsound_local(src, get_sfx("explosion"), 50, 1)
shake_camera(M, 4, 1)
else
M.playsound_local(src, 'sound/effects/explosionfar.ogg', 50, 1)
shake_camera(M, 1, 1)
for (var/obj/structure/cult/pillar/P in pillars)
P.update_icon()
/obj/structure/cult/bloodstone/Destroy()
bloodstone_list.Remove(src)
new /obj/effect/decal/cleanable/ash(loc)
new /obj/item/weapon/ectoplasm(loc)
var/icon/updated_map = icon(extraMiniMaps[HOLOMAP_EXTRA_CULTMAP])
var/datum/holomap_marker/holomarker = new()
holomarker.id = HOLOMAP_MARKER_BLOODSTONE_BROKEN
holomarker.filter = HOLOMAP_FILTER_CULT
holomarker.x = src.x
holomarker.y = src.y
holomarker.z = src.z
holomap_markers[HOLOMAP_MARKER_BLOODSTONE+"_\ref[src]"] = holomarker
if(holomarker.z == map.zMainStation && holomarker.filter & HOLOMAP_FILTER_CULT)
if(map.holomap_offset_x.len >= map.zMainStation)
updated_map.Blend(icon(holomarker.icon,holomarker.id), ICON_OVERLAY, holomarker.x-8+map.holomap_offset_x[map.zMainStation] , holomarker.y-8+map.holomap_offset_y[map.zMainStation])
else
updated_map.Blend(icon(holomarker.icon,holomarker.id), ICON_OVERLAY, holomarker.x-8, holomarker.y-8)
extraMiniMaps[HOLOMAP_EXTRA_CULTMAP] = updated_map
for(var/obj/structure/cult/bloodstone/B in bloodstone_list)
B.holomap_datum.initialize_holomap(B.loc)
if (bloodstone_list.len <= 0 || anchor)
var/datum/faction/bloodcult/cult = find_active_faction_by_type(/datum/faction/bloodcult)
if (cult)
cult.fail()
..()
/obj/structure/cult/bloodstone/cultist_act(var/mob/user)
.=..()
if (!.)
return
if(isliving(user))
if(user in watching_mobs)
stopWatching(user)
else
if (anchor)
if (user in contributors)
return
if (!user.checkTattoo(TATTOO_SILENT))
if (prob(5))
user.say("Let me show you the dance of my people!","C")
else
user.say("Tok-lyr rqa'nap g'lt-ulotf!","C")
contributors.Add(user)
if (user.client)
user.client.images |= progbar
else if(user.hud_used && user.hud_used.holomap_obj)
if(!("\ref[user]" in watcher_maps))
watcher_maps["\ref[user]"] = image(holomap_datum.station_map)
var/image/I = watcher_maps["\ref[user]"]
I.loc = user.hud_used.holomap_obj
I.alpha = 0
animate(watcher_maps["\ref[user]"], alpha = 255, time = 5, easing = LINEAR_EASING)
watching_mobs |= user
user.client.images |= watcher_maps["\ref[user]"]
user.callOnFace["\ref[src]"] = "checkPosition"
/obj/structure/cult/bloodstone/proc/checkPosition()
for(var/mob/M in watching_mobs)
if(get_dist(src,M) > 1)
stopWatching(M)
/obj/structure/cult/bloodstone/proc/stopWatching(var/mob/user)
if(!user)
for(var/mob/M in watching_mobs)
if(M.client)
spawn(5)//we give it time to fade out
M.client.images -= watcher_maps["\ref[M]"]
M.callOnFace -= "\ref[src]"
animate(watcher_maps["\ref[M]"], alpha = 0, time = 5, easing = LINEAR_EASING)
watching_mobs = list()
else
if(user.client)
spawn(5)//we give it time to fade out
if(!(user in watching_mobs))
user.client.images -= watcher_maps["\ref[user]"]
watcher_maps -= "\ref[user]"
user.callOnFace -= "\ref[src]"
animate(watcher_maps["\ref[user]"], alpha = 0, time = 5, easing = LINEAR_EASING)
watching_mobs -= user
/datum/station_holomap/cult/initialize_holomap(var/turf/T, var/isAI=null, var/mob/user=null)
station_map = image(extraMiniMaps[HOLOMAP_EXTRA_CULTMAP])
cursor = image('icons/holomap_markers.dmi', "bloodstone-here")
if(map.holomap_offset_x.len >= T.z)
cursor.pixel_x = (T.x-9+map.holomap_offset_x[T.z])*PIXEL_MULTIPLIER
cursor.pixel_y = (T.y-9+map.holomap_offset_y[T.z])*PIXEL_MULTIPLIER
else
cursor.pixel_x = (T.x-9)*PIXEL_MULTIPLIER
cursor.pixel_y = (T.y-9)*PIXEL_MULTIPLIER
station_map.overlays |= cursor
/obj/structure/cult/bloodstone/update_icon()
icon_state = "bloodstone-0"
var/datum/faction/bloodcult/cult = find_active_faction_by_type(/datum/faction/bloodcult)
if (cult)
var/datum/objective/bloodcult_bloodbath/O = locate() in cult.objective_holder.objectives
if (O)
icon_state = "bloodstone-[max(0,min(9,round(cult.bloody_floors.len*100/O.target_bloodspill/10)))]"
overlays.len = 0
var/image/I_base = image('icons/obj/cult_64x64.dmi',"bloodstone-base")
I_base.appearance_flags |= RESET_COLOR//we don't want the stone to pulse
overlays += I_base
if (health < maxHealth/3)
overlays.Add("bloodstone_damage2")
else if (health < 2*maxHealth/3)
overlays.Add("bloodstone_damage1")
/obj/structure/cult/bloodstone/proc/set_animate()
animate(src, color = list(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,0,0,0), time = 10, loop = -1)
animate(color = list(1.125,0.06,0,0,0,1.125,0.06,0,0.06,0,1.125,0,0,0,0,1,0,0,0,0), time = 2)
animate(color = list(1.25,0.12,0,0,0,1.25,0.12,0,0.12,0,1.25,0,0,0,0,1,0,0,0,0), time = 2)
animate(color = list(1.375,0.19,0,0,0,1.375,0.19,0,0.19,0,1.375,0,0,0,0,1,0,0,0,0), time = 1.5)
animate(color = list(1.5,0.27,0,0,0,1.5,0.27,0,0.27,0,1.5,0,0,0,0,1,0,0,0,0), time = 1.5)
animate(color = list(1.625,0.35,0.06,0,0.06,1.625,0.35,0,0.35,0.06,1.625,0,0,0,0,1,0,0,0,0), time = 1)
animate(color = list(1.75,0.45,0.12,0,0.12,1.75,0.45,0,0.45,0.12,1.75,0,0,0,0,1,0,0,0,0), time = 1)
animate(color = list(1.875,0.56,0.19,0,0.19,1.875,0.56,0,0.56,0.19,1.875,0,0,0,0,1,0,0,0,0), time = 1)
animate(color = list(2,0.67,0.27,0,0.27,2,0.67,0,0.67,0.27,2,0,0,0,0,1,0,0,0,0), time = 5)
animate(color = list(1.875,0.56,0.19,0,0.19,1.875,0.56,0,0.56,0.19,1.875,0,0,0,0,1,0,0,0,0), time = 1)
animate(color = list(1.75,0.45,0.12,0,0.12,1.75,0.45,0,0.45,0.12,1.75,0,0,0,0,1,0,0,0,0), time = 1)
animate(color = list(1.625,0.35,0.06,0,0.06,1.625,0.35,0,0.35,0.06,1.625,0,0,0,0,1,0,0,0,0), time = 1)
animate(color = list(1.5,0.27,0,0,0,1.5,0.27,0,0.27,0,1.5,0,0,0,0,1,0,0,0,0), time = 1)
animate(color = list(1.375,0.19,0,0,0,1.375,0.19,0,0.19,0,1.375,0,0,0,0,1,0,0,0,0), time = 1)
animate(color = list(1.25,0.12,0,0,0,1.25,0.12,0,0.12,0,1.25,0,0,0,0,1,0,0,0,0), time = 1)
animate(color = list(1.125,0.06,0,0,0,1.125,0.06,0,0.06,0,1.125,0,0,0,0,1,0,0,0,0), time = 1)
update_icon()
/obj/structure/cult/bloodstone/conceal()
return
/obj/structure/cult/bloodstone/takeDamage(var/damage)
var/backup = (health > 666) + (health > 333)
health -= damage
if (health <= 0)
if (sound_destroyed)
playsound(get_turf(src), sound_destroyed, 100, 1)
qdel(src)
else
if (backup > (health > 666) + (health > 333))
summon_backup()
update_icon()
/obj/structure/cult/bloodstone/proc/summon_backup()
var/list/possible_floors = list()
for (var/turf/simulated/floor/F in orange(1,src))
possible_floors.Add(F)
for (var/i = 1 to 2)
var/turf/T = pick(possible_floors)
if (T)
possible_floors.Remove(T)
new /obj/effect/cult_ritual/backup_spawn(T)
/obj/structure/cult/bloodstone/dance_start()
while(src && loc && anchor)
for (var/mob/M in contributors)
if (!iscultist(M) || get_dist(src,M) > 1 || (M.stat != CONSCIOUS))
if (M.client)
M.client.images -= progbar
contributors.Remove(M)
continue
if (contributors.len > 0)
timeleft -= 1 + round(contributors.len/3)//Additional dancers will complete the ritual faster
if (timeleft <= 0)
break
update_progbar()
dance_step()
sleep(3)
dance_step()
sleep(3)
dance_step()
sleep(6)
else
timeleft = min(timeleft+1,60)
sleep(10)
for (var/mob/M in contributors)
if (M.client)
M.client.images -= progbar
contributors.Remove(M)
anchor = FALSE
for (var/obj/structure/teleportwarp/TW in src.loc)
qdel(TW)
new /obj/machinery/singularity/narsie/large(src.loc)
stat_collection.cult_narsie_summoned = TRUE
return 1
/obj/structure/cult/bloodstone/ex_act(var/severity)
switch(severity)
if (1)
takeDamage(250)
if (2)
takeDamage(50)
if (3)
takeDamage(10)
/obj/structure/cult/proc/safe_space()
for(var/turf/T in range(5,src))
var/dist = cheap_pythag(T.x - src.x, T.y - src.y)
if (dist <= 2.5)
T.ChangeTurf(/turf/simulated/floor/engine/cult)
T.turf_animation('icons/effects/effects.dmi',"cultfloor", 0, 0, MOB_LAYER-1, anim_plane = TURF_PLANE)
for (var/obj/structure/S in T)
if (!istype(S,/obj/structure/cult))
qdel(S)
for (var/obj/machinery/M in T)
qdel(M)
else if (dist <= 4.5)
if (istype(T,/turf/space))
T.ChangeTurf(/turf/simulated/floor/engine/cult)
T.turf_animation('icons/effects/effects.dmi',"cultfloor", 0, 0, MOB_LAYER-1, anim_plane = TURF_PLANE)
else
T.cultify()
else if (dist <= 5.5)
if (istype(T,/turf/space))
T.ChangeTurf(/turf/simulated/wall/cult)
T.turf_animation('icons/effects/effects.dmi',"cultwall", 0, 0, MOB_LAYER-1, anim_plane = TURF_PLANE)
else
T.cultify()
//inspired from LoZ:Oracle of Seasons
/obj/structure/cult/proc/dance_start()
while(timeleft > 0)
for (var/mob/M in contributors)
if (!iscultist(M) || get_dist(src,M) > 1 || (M.stat != CONSCIOUS))
if (M.client)
M.client.images -= progbar
contributors.Remove(M)
continue
if (contributors.len <= 0)
return 0
timeleft -= 1 + round(contributors.len/2)//Additional dancers will complete the ritual faster
update_progbar()
dance_step()
sleep(3)
dance_step()
sleep(3)
dance_step()
sleep(6)
for (var/mob/M in contributors)
if (M.client)
M.client.images -= progbar
contributors.Remove(M)
return 1
/obj/structure/cult/proc/dance_step()
var/dance_move = pick("clock","counter","spin")
switch(dance_move)
if ("clock")
for (var/mob/M in contributors)
switch (get_dir(src,M))
if (NORTHWEST,NORTH)
M.forceMove(get_step(M,EAST))
M.dir = EAST
if (NORTHEAST,EAST)
M.forceMove(get_step(M,SOUTH))
M.dir = SOUTH
if (SOUTHEAST,SOUTH)
M.forceMove(get_step(M,WEST))
M.dir = WEST
if (SOUTHWEST,WEST)
M.forceMove(get_step(M,NORTH))
M.dir = NORTH
if ("counter")
for (var/mob/M in contributors)
switch (get_dir(src,M))
if (NORTHEAST,NORTH)
M.forceMove(get_step(M,WEST))
M.dir = WEST
if (SOUTHEAST,EAST)
M.forceMove(get_step(M,NORTH))
M.dir = NORTH
if (SOUTHWEST,SOUTH)
M.forceMove(get_step(M,EAST))
M.dir = EAST
if (NORTHWEST,WEST)
M.forceMove(get_step(M,SOUTH))
M.dir = SOUTH
if ("spin")
for (var/mob/M in contributors)
spawn()
M.dir = SOUTH
sleep(0.75)
M.dir = EAST
sleep(0.75)
M.dir = NORTH
sleep(0.75)
M.dir = WEST
sleep(0.75)
M.dir = SOUTH

View File

@@ -377,3 +377,24 @@
if (landing_animation)
flick("cult_jaunt_land",landing_animation)
qdel(src)
///////////////////////////////////////BLOODSTONE DEFENSES////////////////////////////////////////////////
/obj/effect/cult_ritual/backup_spawn
name = "gateway"
desc = "Something is coming through!"
icon = 'icons/obj/cult.dmi'
icon_state = "runetrigger-build"
anchored = 1
mouse_opacity = 1
/obj/effect/cult_ritual/backup_spawn/New()
..()
spawn (30)
var/mobtype = pick(
1;/mob/living/simple_animal/hostile/creature/cult,
2;/mob/living/simple_animal/hostile/faithless/cult,
3;/mob/living/simple_animal/hostile/scarybat/cult,
)
new mobtype(get_turf(src))
qdel(src)

View File

@@ -464,8 +464,18 @@ var/list/arcane_tomes = list()
return
/obj/item/weapon/melee/cultblade/attack(var/mob/living/target, var/mob/living/carbon/human/user)
if(!checkcult || iscultist(user))
if(!checkcult)
return ..()
if (iscultist(user))
if (ishuman(target) && target.resting)
var/obj/structure/cult/altar/altar = locate() in target.loc
if (altar)
altar.attackby(src,user)
return
else
return ..()
else
return ..()
else
user.Paralyse(5)
to_chat(user, "<span class='warning'>An unexplicable force powerfully repels the sword from [target]!</span>")
@@ -588,15 +598,16 @@ var/list/arcane_tomes = list()
/obj/item/weapon/melee/soulblade/attack_self(var/mob/user)
if (!iscultist(user))
to_chat(user,"<span class='warning'>There is a crimson gem encrusted into the blade, but you're not exactly sure how you could remove it.</span>")
return
var/choices = list(
list("Give Blood", "radial_giveblood", "Deity please add details"),
list("Remove Gem", "radial_removegem", "Deity please add details"),
list("Give Blood", "radial_giveblood", "Transfer some of your blood to the blade to repair it and refuel its blood level, or you could just slash someone."),
list("Remove Gem", "radial_removegem", "Remove the soul gem from the blade."),
)
if (!iscultist(user))
choices = list(
list("Remove Gem", "radial_removegem", "Remove the soul gem from the blade."),
)
var/task = show_radial_menu(user,user,choices,'icons/obj/cult_radial.dmi',"radial-cult")//spawning on loc so we aren't offset by pixel_x/pixel_y, or affected by animate()
if (user.get_active_hand() != src)
to_chat(user,"<span class='warning'>You must hold the blade in your active hand.</span>")
@@ -636,6 +647,11 @@ var/list/arcane_tomes = list()
if(affecting && affecting.take_damage(rand(force/2, force))) //random amount of damage between half of the blade's force and the full force of the blade.
user.UpdateDamageIcon()
return
if (ishuman(target) && target.resting)
var/obj/structure/cult/altar/altar = locate() in target.loc
if (altar)
altar.attackby(src,user)
return
..()
if (!shade && istype(target, /mob/living/carbon))
transfer_soul("VICTIM", target, user,1)
@@ -1123,6 +1139,7 @@ var/list/arcane_tomes = list()
var/datum/faction/bloodcult/cult = find_active_faction_by_type(/datum/faction/bloodcult)
if (!cult)
cult = ticker.mode.CreateFaction(/datum/faction/bloodcult, null, 1)
cult.OnPostSetup()
cult.HandleRecruitedRole(newCultist)
newCultist.OnPostSetup()
newCultist.Greet(GREET_PAMPHLET)

View File

@@ -239,7 +239,10 @@
/spell/aoe_turf/conjure/struct,
/spell/aoe_turf/conjure/wall,
/spell/aoe_turf/conjure/floor,
/spell/aoe_turf/conjure/door,
/spell/aoe_turf/conjure/pylon,
/spell/aoe_turf/conjure/construct/lesser/alt,
/spell/aoe_turf/conjure/soulstone,
/spell/aoe_turf/conjure/hex,
)
var/mob/living/simple_animal/construct/heal_target = null

View File

@@ -88,11 +88,11 @@ var/list/uristrune_cache = list()//icon cache, so the whole blending process is
//cultists can read the words, and be informed if it calls a spell
if (iscultist(user))
to_chat(user, "<span class='info'>It reads: <i>[word1 ? "[word1.rune]" : ""] [word2 ? "[word2.rune]" : ""] [word3 ? "[word3.rune]" : ""]</i>.[rune_name ? " That's a <b>[initial(rune_name.name)]</b> rune." : "It doesn't match any rune spells."]</span>")
if (rune_name)
if (initial(rune_name.Act_restriction) <= veil_thickness)
to_chat(user, initial(rune_name.desc))
else
to_chat(user, "<span class='danger'>The veil is still too thick for you to draw power from this rune.</span>")
if (rune_name)
if (initial(rune_name.Act_restriction) <= veil_thickness)
to_chat(user, initial(rune_name.desc))
else
to_chat(user, "<span class='danger'>The veil is still too thick for you to draw power from this rune.</span>")
//so do observers
else if (isobserver(user))

View File

@@ -280,7 +280,7 @@
/datum/rune_spell/raisestructure/midcast(var/mob/add_cultist)
if (add_cultist in contributors)
return
add_cultist.say(invocation,"C")
invoke(add_cultist, invocation)
contributors.Add(add_cultist)
if (add_cultist.client)
add_cultist.client.images |= progbar
@@ -351,6 +351,12 @@
/datum/rune_spell/raisestructure/proc/success()
new spawntype(spell_holder.loc)
if (spawntype == /obj/structure/cult/altar)
var/datum/faction/bloodcult/cult = find_active_faction_by_type(/datum/faction/bloodcult)
if (cult)
cult.progress(CULT_ACT_I)
else
message_admins("Blood Cult: An altar was raised...but we cannot find the cult faction...")//failsafe in case of admin varedit fuckery
qdel(spell_holder)//this will cause this datum to del as well
//RUNE II
@@ -710,7 +716,6 @@
//first lets check for a victim above
for (var/mob/living/carbon/C in T)//all carbons can be converted...but only carbons. no cult silicons.
if (!iscultist(C))
//TODO: MOB NEEDS A MIND, leaving as is for now, so I can convert dummies to test stuff
targets.Add(C)
if (targets.len > 0)
victim = pick(targets)
@@ -885,6 +890,14 @@
abort(RITUALABORT_REMOVED)
return
//No matter the end result, counts as progress toward the cult's goals, as long as the victim was an actual player
if (victim.mind)
var/datum/faction/bloodcult/cult = find_active_faction_by_type(/datum/faction/bloodcult)
if (cult)
cult.progress(CULT_ACT_II)
else
message_admins("Blood Cult: A conversion ritual occured...but we cannot find the cult faction...")//failsafe in case of admin varedit fuckery
switch (success)
if (1)
conversion.layer = BELOW_OBJ_LAYER
@@ -950,6 +963,7 @@
cult.HandleRecruitedRole(newCultist)
newCultist.OnPostSetup()
newCultist.Greet(GREET_CONVERTED)
newCultist.conversion["converted"] = activator
/datum/rune_spell/conversion/Removed(var/mob/M)
if (victim==M)
@@ -1023,7 +1037,7 @@
playsound(spell_holder, 'sound/effects/stun_talisman.ogg', 25, 0, -5)
if (prob(15))//for old times' sake
invoke(activator,"Dream sign ''Evil sealing talisman'[pick("'","`")]!",1)
invoke(activator,"Dream sign ''Evil sealing talisman''!",1)
else
invoke(activator,invocation,1)
@@ -1783,7 +1797,7 @@ var/list/blind_victims = list()
/datum/rune_spell/summoncultist/midcast(var/mob/add_cultist)
if (add_cultist in contributors)
return
add_cultist.say(invocation,"C")
invoke(add_cultist, invocation)
contributors.Add(add_cultist)
if (add_cultist.client)
add_cultist.client.images |= progbar
@@ -1954,7 +1968,7 @@ var/list/blind_victims = list()
var/datum/cultword/W = cultwords[network]
activator.say("[W.rune]","C")
invoke(activator, "[W.rune]")
var/image/I_crystals = image('icons/obj/cult.dmi',"path_pad")
I_crystals.plane = OBJ_PLANE
I_crystals.layer = BELOW_TABLE_LAYER
@@ -2060,7 +2074,7 @@ var/list/bloodcult_exitportals = list()
var/datum/cultword/W = cultwords[network]
activator.say("[W.rune]","C")
invoke(activator, "[W.rune]")
var/image/I_crystals = image('icons/obj/cult.dmi',"path_crystals")
I_crystals.plane = OBJ_PLANE
I_crystals.layer = BELOW_TABLE_LAYER
@@ -2150,7 +2164,8 @@ var/list/bloodcult_exitportals = list()
//RUNE XIX
/datum/rune_spell/astraljourney
name = "Astral Journey"
desc = "Leave your body so you can converse with the dead and observe your targets."
desc = "Leave your body so you can go spy on your enemies."
desc_talisman = "Leave your body so you can go spy on your enemies."
Act_restriction = CULT_ACT_II
invocation = "Fwe'sh mah erl nyag r'ya!"
word1 = /datum/cultword/hell
@@ -2243,6 +2258,7 @@ var/list/bloodcult_exitportals = list()
/datum/rune_spell/resurrect
name = "Resurrect"
desc = "Create a strong body for your fallen allies to inhabit."
desc_talisman = "Create a strong body for your fallen allies to inhabit."
Act_restriction = CULT_ACT_III
invocation = "Pasnar val'keriam usinar. Savrae ines amutan. Yam'toth remium il'tarat!"
word1 = /datum/cultword/blood
@@ -2306,7 +2322,7 @@ var/list/bloodcult_exitportals = list()
/datum/rune_spell/resurrect/midcast(var/mob/add_cultist)
if (add_cultist in contributors)
return
add_cultist.say(invocation,"C")
invoke(add_cultist, invocation)
contributors.Add(add_cultist)
if (add_cultist.client)
add_cultist.client.images |= progbar
@@ -2393,6 +2409,7 @@ var/list/bloodcult_exitportals = list()
cult.HandleRecruitedRole(newCultist)
newCultist.OnPostSetup()
newCultist.Greet(GREET_RESURRECT)
newCultist.conversion["resurrected"] = activator
else
for(var/mob/living/L in contributors)
to_chat(activator, "<span class='warning'>Something went wrong with the ritual, the soul of the ghost appears to have vanished.</span>")

View File

@@ -137,7 +137,7 @@ var/list/factions_with_hud_icons = list()
if(!successful) //If one objective fails, then you did not win.
win = 0
count++
if (count < objective_holder.objectives.len)
if (count <= objective_holder.objectives.len)
score_results += "<br>"
if (count>1)
if (win)

View File

@@ -23,6 +23,7 @@
light_color = LIGHT_COLOR_RED
var/last_check = 0
/*
/obj/structure/cult_legacy/pylon/New()
..()
processing_objects.Add(src)
@@ -31,7 +32,6 @@
processing_objects.Remove(src)
..()
/obj/structure/cult_legacy/pylon/process()
if(!isbroken && world.time > last_check + 3 SECONDS)
last_check = world.time
@@ -41,7 +41,7 @@
src.visible_message("<span class='sinister'>\the [src] mends some of \the <EM>[C]'s</EM> wounds.</span>")
make_tracker_effects(get_turf(src), C)
C.health = min(C.maxHealth, C.health + 3) //Not quite as good as artificers
*/
/obj/structure/cult_legacy/pylon/attack_hand(mob/M as mob)
attackpylon(M, 5)

View File

@@ -52,14 +52,12 @@ var/global/list/narsie_list = list()
world << sound('sound/effects/wind/wind_5_1.ogg')
if(narnar)
narsie_spawn_animation()
var/datum/faction/bloodcult/cult = find_active_faction_by_type(/datum/faction/bloodcult)
if (cult)
cult.progress(CULT_EPILOGUE)
if(!narsie_cometh)//so we don't initiate Hell more than one time.
/* Checks if the gamemode was cult
if(istype(ticker.mode, /datum/game_mode/cult))
var/datum/game_mode/cult/mode_ticker = ticker.mode
if (mode_ticker.objectives[mode_ticker.current_objective] == "eldergod")
mode_ticker.third_phase()*/
if (emergency_shuttle)
if (emergency_shuttle && !cult)//in case of Cult 3.0, the round will end after about 5 minutes
emergency_shuttle.incall()
emergency_shuttle.can_recall = 0
if(emergency_shuttle.endtime > world.timeofday + 1800 && emergency_shuttle.location != 1 && !emergency_shuttle.departed)

View File

@@ -337,6 +337,7 @@
cult.HandleRecruitedRole(newCultist)
newCultist.OnPostSetup()
newCultist.Greet(GREET_SOULSTONE)
newCultist.conversion["soulstone"] = user
//Pretty particles
var/turf/T1 = get_turf(target)
@@ -405,6 +406,7 @@
cult.HandleRecruitedRole(newCultist)
newCultist.OnPostSetup()
newCultist.Greet(GREET_SOULSTONE)
newCultist.conversion["soulstone"] = U
if("CONSTRUCT")
var/obj/structure/constructshell/T = target
var/obj/item/device/soulstone/C = src

View File

@@ -0,0 +1,192 @@
/datum/objective/bloodcult_reunion
explanation_text = "The Reunion: Meet up with your fellow cultists, and erect an altar."
name = "Blood Cult: Prologue"
var/altar_built = FALSE
/datum/objective/bloodcult_reunion/PostAppend()
message_admins("Blood Cult: A cult dedicated to Nar-Sie has formed aboard the station.")
return TRUE
/datum/objective/bloodcult_reunion/IsFulfilled()
if (..())
return TRUE
return altar_built
//////////////////////
/datum/objective/bloodcult_followers
explanation_text = "The Followers: Perform the conversion ritual on X crew members."
name = "Blood Cult: ACT I"
var/convert_target = 4
var/conversions = 0
/datum/objective/bloodcult_followers/PostAppend()
explanation_text = "The Followers: Perform the conversion ritual on [convert_target] crew members."
message_admins("Blood Cult: ACT I has begun.")
return TRUE
/datum/objective/bloodcult_followers/IsFulfilled()
if (..())
return TRUE
return (conversions >= convert_target)
//////////////////////
/datum/objective/bloodcult_sacrifice
explanation_text = "The Sacrifice: Nar-Sie requires the flesh of X to breach reality. Sacrifice them at an altar using a cult blade."
name = "Blood Cult: ACT II"
var/mob/living/sacrifice_target = null
var/target_sacrificed = FALSE
var/list/failed_targets = list()
/datum/objective/bloodcult_sacrifice/PostAppend()
sacrifice_target = find_target()
if (sacrifice_target)
var/target_role = ""
if (sacrifice_target.mind)
target_role = (sacrifice_target.mind.assigned_role=="MODE") ? "" : ", the ([sacrifice_target.mind.assigned_role]),"
if (iscultist(sacrifice_target))
target_role = ", the cultist,"
explanation_text = "The Sacrifice: Nar-Sie requires the flesh of [sacrifice_target.real_name][target_role] to breach reality. Sacrifice them at an altar using a cult blade."
message_admins("Blood Cult: ACT II has begun, the sacrifice target is [sacrifice_target.real_name][target_role].")
var/datum/faction/bloodcult/cult = faction
cult.target_change = TRUE
return TRUE
else
sleep(60 SECONDS)//kind of a failsafe should the entire server cooperate to cause this to occur, but that shouldn't logically ever happen anyway.
return PostAppend()
/datum/objective/bloodcult_sacrifice/proc/replace_target()
find_target()
if (sacrifice_target)
var/target_role = ""
if (sacrifice_target.mind)
target_role = (sacrifice_target.mind.assigned_role=="MODE") ? "" : ", the ([sacrifice_target.mind.assigned_role]),"
if (iscultist(sacrifice_target))
target_role = ", the cultist,"
explanation_text = "The Sacrifice: Nar-Sie requires the flesh of [sacrifice_target.real_name][target_role] to breach reality. Sacrifice them at an altar using a cult blade."
message_admins("Blood Cult: The cult didn't sacrifice their target in time, a new target has been assigned, the new sacrifice target is [sacrifice_target.real_name][target_role].")
var/datum/faction/bloodcult/cult = faction
cult.target_change = TRUE
return TRUE
else
sleep(60 SECONDS)//kind of a failsafe should the entire server cooperate to cause this to occur, but that shouldn't logically ever happen anyway.
return replace_target()
/datum/objective/bloodcult_sacrifice/proc/find_target()
var/list/possible_targets = list()
for(var/mob/living/carbon/human/player in player_list)
if(player.z != map.zMainStation)//We only look for people currently aboard the station
continue
//They may be dead, but we only need their flesh
possible_targets += player
if(!possible_targets.len)
message_admins("Blood Cult: Could not find a suitable sacrifice target. Trying again in a minute.")
return null
return pick(possible_targets - failed_targets)
/datum/objective/bloodcult_sacrifice/IsFulfilled()
if (..())
return TRUE
return target_sacrificed
//////////////////////
/datum/objective/bloodcult_bloodbath
explanation_text = "The Blood Bath: The blood stones have risen. Spill blood accross the station's floors to fill them up before the crew destroys them all."
name = "Blood Cult: ACT III"
var/percent_bloodspill = 4//percent of all the station's simulated floors, you should keep it under 5.
var/target_bloodspill = 0//actual amount of bloodied floors to reach
var/max_bloodspill = 0//max amount of bloodied floors simultanously reached
/datum/objective/bloodcult_bloodbath/PostAppend()
var/floor_count = 0
for(var/i = 1 to ((2 * world.view + 1)*WORLD_ICON_SIZE))
for(var/r = 1 to ((2 * world.view + 1)*WORLD_ICON_SIZE))
var/turf/tile = locate(i, r, map.zMainStation)
if(tile && istype(tile, /turf/simulated/floor) && !isspace(tile.loc) && !istype(tile.loc, /area/asteroid) && !istype(tile.loc, /area/mine) && !istype(tile.loc, /area/vault) && !istype(tile.loc, /area/prison) && !istype(tile.loc, /area/vox_trading_post))
floor_count++
target_bloodspill = round(floor_count * percent_bloodspill / 100)
target_bloodspill += rand(-20,20)
explanation_text = "The Blood Bath: The blood stones have risen. Spill blood accross [target_bloodspill] of the station's floors to fill them up before the crew destroys them all."
message_admins("Blood Cult: ACT III has begun. The cult has to spill blood over [target_bloodspill] floor tiles, out of the station's [floor_count] floor tiles.")
return TRUE
/datum/objective/bloodcult_bloodbath/IsFulfilled()
if (..())
return TRUE
return (max_bloodspill >= target_bloodspill)
//////////////////////
/datum/objective/bloodcult_tearinreality
explanation_text = "The Tear in Reality: Chant around the anchor blood stone to stretch the breach enough so Nar-Sie may come through."
name = "Blood Cult: ACT IV"
var/obj/structure/cult/bloodstone/anchor = null
var/NARSIE_HAS_RISEN = FALSE
/datum/objective/bloodcult_tearinreality/PostAppend()
for (var/obj/structure/cult/bloodstone/B in bloodstone_list)//One of healthiest blood stones will become the anchor.
if (!anchor || B.health > anchor.health)
anchor = B
else if (anchor && B.health == anchor.health)
anchor = pick(list(B,anchor))
anchor.health = 1200
anchor.maxHealth = 1200
anchor.set_animate()
var/turf/T = get_turf(anchor)
var/obj/structure/teleportwarp/TW = new (T)
TW.icon_state = "rune_seer"
TW.pixel_y = -60
anchor.anchor = TRUE
anchor.timeleft = 60
anchor.timetotal = anchor.timeleft
//Adding the anchor to the bloodstones holomap, so cultists can quickly go there to perform the final summoning
var/icon/updated_map = icon(extraMiniMaps[HOLOMAP_EXTRA_CULTMAP])
var/datum/holomap_marker/holomarker = new()
holomarker.id = HOLOMAP_MARKER_BLOODSTONE_ANCHOR
holomarker.filter = HOLOMAP_FILTER_CULT
holomarker.x = anchor.x
holomarker.y = anchor.y
holomarker.z = anchor.z
holomap_markers[HOLOMAP_MARKER_BLOODSTONE+"_\ref[anchor]"] = holomarker
if(holomarker.z == map.zMainStation && holomarker.filter & HOLOMAP_FILTER_CULT)
if(map.holomap_offset_x.len >= map.zMainStation)
updated_map.Blend(icon(holomarker.icon,holomarker.id), ICON_OVERLAY, holomarker.x-8+map.holomap_offset_x[map.zMainStation] , holomarker.y-8+map.holomap_offset_y[map.zMainStation])
else
updated_map.Blend(icon(holomarker.icon,holomarker.id), ICON_OVERLAY, holomarker.x-8, holomarker.y-8)
extraMiniMaps[HOLOMAP_EXTRA_CULTMAP] = updated_map
for(var/obj/structure/cult/bloodstone/B in bloodstone_list)
B.holomap_datum.initialize_holomap(B.loc)
spawn()
anchor.dance_start()
message_admins("Blood Cult: ACT IV has begun.")
return TRUE
/datum/objective/bloodcult_tearinreality/IsFulfilled()
if (..())
return TRUE
return NARSIE_HAS_RISEN
//////////////////////
/datum/objective/bloodcult_feast
explanation_text = "The Feast: This is your victory, you may take part in the celebrations of a work well done."
name = "Blood Cult: Epilogue"
var/timer = 300 SECONDS
/datum/objective/bloodcult_feast/PostAppend()
message_admins("Blood Cult: The cult has won.")
spawn (timer)
var/datum/faction/bloodcult/cult = faction
cult.cult_win = TRUE
return TRUE
/datum/objective/bloodcult_feast/IsFulfilled()
return TRUE//might expand on that later after release, if I ever get to implement my rework of post-NarSie.

View File

@@ -6,6 +6,7 @@
greets = list(GREET_DEFAULT,GREET_CUSTOM,GREET_ROUNDSTART,GREET_ADMINTOGGLE)
var/list/tattoos = list()
var/holywarning_cooldown = 0
var/list/conversion = list()
/datum/role/cultist/New(var/datum/mind/M, var/datum/faction/fac=null, var/new_id)
..()
@@ -31,6 +32,14 @@
blood_communion.Remove(src)
..()
/datum/role/cultist/PostMindTransfer(var/mob/living/new_character)
. = ..()
update_cult_hud()
antag.current.add_language(LANGUAGE_CULT)
if(ishuman(antag.current) && !(locate(/spell/cult) in antag.current.spell_list))
antag.current.add_spell(new /spell/cult/trace_rune, "cult_spell_ready", /obj/abstract/screen/movable/spell_master/bloodcult)
antag.current.add_spell(new /spell/cult/erase_rune, "cult_spell_ready", /obj/abstract/screen/movable/spell_master/bloodcult)
/datum/role/cultist/process()
if (holywarning_cooldown > 0)
holywarning_cooldown--
@@ -62,6 +71,8 @@
to_chat(antag.current, "<span class='sinister'>Wow, that pamphlet was very convincing, in fact you're like totally a cultist now, hail Nar-Sie!</span>")//remember, debug item
if (GREET_SOULSTONE)
to_chat(antag.current, "<span class='sinister'>Dark energies corrupt your soul, as the blood stone grants you a window to peer through the veil, you have become a cultist!</span>")
if (GREET_SOULBLADE)
to_chat(antag.current, "<span class='sinister'>Your soul has made its way into the blade's soul gem! The dark energies of the altar forge your mind into an instrument of the cult of Nar-Sie, be of assistance to your fellow cultists.</span>")
if (GREET_RESURRECT)
to_chat(antag.current, "<span class='sinister'>You were resurrected from beyond the veil by the followers of Nar-Sie, and are already familiar with their rituals! You have now joined their ranks as a cultist.</span>")
else
@@ -73,6 +84,13 @@
to_chat(antag.current, "<span class='info'><a HREF='?src=\ref[antag.current];getwiki=[wikiroute]'>(Wiki Guide)</a></span>")
to_chat(antag.current, "<span class='sinister'>You find yourself to be well-versed in the runic alphabet of the cult.</span>")
spawn(1)
if (faction)
var/datum/objective_holder/OH = faction.objective_holder
var/datum/objective/O = null
for (var/datum/objective/OB in OH.objectives)
O = OB//Gives us the most recent objective
to_chat(antag.current,"<span class='danger'>[O.name]</span><b>: [O.explanation_text]</b>")
/datum/role/cultist/update_antag_hud()
update_cult_hud()

View File

@@ -35,11 +35,14 @@
D.holder = null
if(counts_as_blood)
var/datum/faction/cult/narsie/blood_cult = find_active_faction_by_type(/datum/faction/cult/narsie)
if(blood_cult)
var/datum/faction/bloodcult/cult = find_active_faction_by_type(/datum/faction/bloodcult)
if (cult)
cult.remove_bloody_floor(get_turf(src))
var/datum/faction/cult/narsie/legacy_cult = find_active_faction_by_type(/datum/faction/cult/narsie)
if(legacy_cult)
var/turf/T = get_turf(src)
if(T && (T.z == map.zMainStation))
blood_cult.bloody_floors -= T
legacy_cult.bloody_floors -= T
..()
/obj/effect/decal/cleanable/proc/dry()
@@ -92,15 +95,18 @@
update_icon()
if(counts_as_blood)
var/datum/faction/cult/narsie/blood_cult = find_active_faction_by_type(/datum/faction/cult/narsie)
if(blood_cult)
var/datum/faction/bloodcult/cult = find_active_faction_by_type(/datum/faction/bloodcult)
if (cult)
cult.add_bloody_floor(get_turf(src))
var/datum/faction/cult/narsie/legacy_cult = find_active_faction_by_type(/datum/faction/cult/narsie)
if(legacy_cult)
var/turf/T = get_turf(src)
if(T && (T.z == map.zMainStation))//F I V E T I L E S
if(!(locate("\ref[T]") in blood_cult.bloody_floors))
blood_cult.bloody_floors += T
blood_cult.bloody_floors[T] = T
if (blood_cult.has_enough_bloody_floors())
blood_cult.getNewObjective()
if(!(locate("\ref[T]") in legacy_cult.bloody_floors))
legacy_cult.bloody_floors += T
legacy_cult.bloody_floors[T] = T
if (legacy_cult.has_enough_bloody_floors())
legacy_cult.getNewObjective()
if(src.loc && isturf(src.loc))
for(var/obj/effect/decal/cleanable/C in src.loc)
if(C.type in absorbs_types && C != src)

View File

@@ -551,8 +551,8 @@
blade.update_icon()
new_shade.status_flags |= GODMODE
new_shade.canmove = 0
new_shade.name = "Shade of [M.real_name]"
new_shade.real_name = "Shade of [M.real_name]"
new_shade.name = "[M.real_name] the Shade"
new_shade.real_name = "[M.real_name]"
new_shade.give_blade_powers()
if("blob")
var/obj/effect/blob/core/core = new(loc = get_turf(M), new_overmind = M.client)

View File

@@ -70,8 +70,8 @@ var/list/has_been_shade = list()
has_been_shade.Add(M.mind)
var/mob/dead/observer/G = M.ghostize(1)
var/mob/living/simple_animal/shade/happiest/S = G.transmogrify(/mob/living/simple_animal/shade/happiest, TRUE)
S.name = "Shade of [M.real_name]"
S.real_name = "Shade of [M.real_name]"
S.name = "[M.real_name] the Shade"
S.real_name = "[M.real_name]"
S.cancel_camera()
flick("happiest_flash", src)
to_chat(H, "<span class='sinister'>Oh joy! [M.real_name]'s decided to join the party!</span>")

View File

@@ -1,5 +1,5 @@
#define HOLOMAP_OBSTACLE "#FFFFFFDD"
#define HOLOMAP_PATH "#66666699"
#define HOLOMAP_PATH "# "
/datum/holomap_marker
var/x

View File

@@ -811,6 +811,9 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
if(C && C.members.len > config.cult_ghostwriter_req_cultists)
ghosts_can_write = 1
if (veil_thickness >= CULT_ACT_III)
ghosts_can_write = 1
if(!ghosts_can_write)
to_chat(src, "<span class='warning'>The veil is not thin enough for you to do that.</span>")
return

View File

@@ -50,6 +50,7 @@
shade.name = "[real_name] the Shade"
shade.real_name = "[real_name]"
mind.transfer_to(shade)
update_faction_icons()
to_chat(shade, "<span class='sinister'>Dark energies rip your dying body appart, anchoring your soul inside the form of a Shade. You retain your memories, and devotion to the cult.</span>")
if(species)

View File

@@ -304,6 +304,7 @@ var/global/list/whitelisted_species = list("Human")
deform = 'icons/mob/human_races/r_def_manifested.dmi'
known_languages = list(LANGUAGE_HUMAN)
primitive = /mob/living/carbon/monkey
darksight = 3
has_organ = list(
"heart" = /datum/organ/internal/heart,
"lungs" = /datum/organ/internal/lungs,

View File

@@ -138,30 +138,30 @@
mind.transfer_to(C)
to_chat(C, "<span class='sinister'>The Geometer of Blood is overjoyed to be reunited with its followers, and accepts your body in sacrifice. As reward, you have been gifted with the shell of an Harvester.<br>Your tendrils can use and draw runes without need for a tome, your eyes can see beings through walls, and your mind can open any door. Use these assets to serve Nar-Sie and bring him any remaining living human in the world.<br>You can teleport yourself back to Nar-Sie along with any being under yourself at any time using your \"Harvest\" spell.</span>")
dust()
else if(client)
var/datum/faction/cult/narsie/cult_fact = find_active_faction_by_type(/datum/faction/cult/narsie)
if (cult_fact)
cult_fact.harvested++
var/mob/dead/G = (ghostize())
G.icon = 'icons/mob/mob.dmi'
G.icon_state = "ghost-narsie"
G.overlays = 0
if(istype(G.mind.current, /mob/living/carbon/human/))
var/mob/living/carbon/human/H = G.mind.current
G.overlays += H.obj_overlays[ID_LAYER]
G.overlays += H.obj_overlays[EARS_LAYER]
G.overlays += H.obj_overlays[SUIT_LAYER]
G.overlays += H.obj_overlays[GLASSES_LAYER]
G.overlays += H.obj_overlays[GLASSES_OVER_HAIR_LAYER]
G.overlays += H.obj_overlays[BELT_LAYER]
G.overlays += H.obj_overlays[BACK_LAYER]
G.overlays += H.obj_overlays[HEAD_LAYER]
G.overlays += H.obj_overlays[HANDCUFF_LAYER]
G.invisibility = 0
to_chat(G, "<span class='sinister'>You feel relieved as what's left of your soul finally escapes its prison of flesh.</span>")
else
dust()
else if(!iscultist(src))
if(client)
var/datum/faction/cult/narsie/cult_fact = find_active_faction_by_type(/datum/faction/cult/narsie)
if (cult_fact)
cult_fact.harvested++
var/mob/dead/G = (ghostize())
G.icon = 'icons/mob/mob.dmi'
G.icon_state = "ghost-narsie"
G.overlays = 0
if(istype(G.mind.current, /mob/living/carbon/human/))
var/mob/living/carbon/human/H = G.mind.current
G.overlays += H.obj_overlays[ID_LAYER]
G.overlays += H.obj_overlays[EARS_LAYER]
G.overlays += H.obj_overlays[SUIT_LAYER]
G.overlays += H.obj_overlays[GLASSES_LAYER]
G.overlays += H.obj_overlays[GLASSES_OVER_HAIR_LAYER]
G.overlays += H.obj_overlays[BELT_LAYER]
G.overlays += H.obj_overlays[BACK_LAYER]
G.overlays += H.obj_overlays[HEAD_LAYER]
G.overlays += H.obj_overlays[HANDCUFF_LAYER]
G.invisibility = 0
to_chat(G, "<span class='sinister'>You feel relieved as what's left of your soul finally escapes its prison of flesh.</span>")
spawn(1)
dust()
/mob/living/apply_beam_damage(var/obj/effect/beam/B)
var/lastcheck=last_beamchecks["\ref[B]"]

View File

@@ -105,12 +105,10 @@
var/turf/T = get_turf(src)
if (T)
var/mob/living/simple_animal/shade/shade = new (T)
var/true_name = "a nobody"
if (real_name && real_name != "unknown")
true_name = real_name
shade.name = "Shade of [true_name]"
shade.real_name = "Shade of [true_name]"
shade.name = "[real_name] the Shade"
shade.real_name = "[real_name]"
mind.transfer_to(shade)
update_faction_icons()
to_chat(shade, "<span class='sinister'>Dark energies rip your dying body appart, anchoring your soul inside the form of a Shade. You retain your memories, and devotion to the cult.</span>")
else
ghostize()

View File

@@ -31,6 +31,10 @@
meat_type = /obj/item/weapon/ectoplasm
mob_property_flags = MOB_SUPERNATURAL
/mob/living/simple_animal/construct/New()
..()
add_language(LANGUAGE_CULT)
/mob/living/simple_animal/shade/Login()
..()
hud_used.shade_hud()

View File

@@ -23,13 +23,23 @@
summon_type = list(/obj/structure/constructshell/cult)
hud_state = "const_shell"
override_base = "cult"
cast_delay = 40
/spell/aoe_turf/conjure/construct/lesser/alt
summon_type = list(/obj/structure/constructshell/cult/alt)
hud_state = "const_shell_alt"
/spell/aoe_turf/conjure/construct/lesser/spell_do_after(var/mob/user as mob, delay as num, var/numticks = 5)
delay_animation = new /obj/effect/artificer_underlay(get_turf(user))
playsound(user, 'sound/items/welder.ogg', 100, 1)
. = ..()
/spell/aoe_turf/conjure/floor
name = "Floor Construction"
desc = "This spell constructs a cult floor"
user_type = USER_TYPE_CULT
charge_max = 20
charge_max = 50
spell_flags = Z2NOCAST | CONSTRUCT_CHECK
invocation = "none"
invocation_type = SpI_NONE
@@ -43,6 +53,18 @@
/spell/aoe_turf/conjure/floor/choose_targets(mob/user = usr)
return list(get_turf(user))
/spell/aoe_turf/conjure/floor/cast(list/targets, mob/user)//if we convert a floor instead of building one from scratch, the charge time for the next cast is lowered.
var/turf/spawn_place = pick(targets)
var/convert_floor = 0
if (istype(spawn_place,/turf/simulated/floor))
convert_floor = 1
. = ..()
if (!.)
if (convert_floor)
charge_max = 10
else
charge_max = 50
/spell/aoe_turf/conjure/floor/conjure_animation(var/atom/movable/overlay/animation, var/turf/target)
animation.icon_state = "cultfloor"
flick("cultfloor",animation)
@@ -70,6 +92,18 @@
/spell/aoe_turf/conjure/wall/choose_targets(mob/user = usr)
return list(get_turf(user))
/spell/aoe_turf/conjure/wall/cast(list/targets, mob/user)//if we convert a wall instead of building one from scratch, the charge time for the next cast is lowered.
var/turf/spawn_place = pick(targets)
var/convert_wall = 0
if (istype(spawn_place,/turf/simulated/wall))
convert_wall = 1
. = ..()
if (!.)
if (convert_wall)
charge_max = 20
else
charge_max = 100
/spell/aoe_turf/conjure/wall/conjure_animation(var/atom/movable/overlay/animation, var/turf/target)
animation.icon_state = "cultwall"
flick("cultwall",animation)
@@ -78,6 +112,33 @@
qdel(animation)
animation = null
/spell/aoe_turf/conjure/door
name = "Cult Door"
desc = "This spell constructs a cult wall"
user_type = USER_TYPE_CULT
charge_max = 100
spell_flags = Z2NOCAST | CONSTRUCT_CHECK
invocation = "none"
invocation_type = SpI_NONE
range = 3
summon_type = list(/obj/machinery/door/mineral/cult)
override_base = "cult"
hud_state = "const_door"
cast_sound = 'sound/items/welder.ogg'
/spell/aoe_turf/conjure/door/choose_targets(mob/user = usr)
return list(get_turf(user))
/spell/aoe_turf/conjure/door/conjure_animation(var/atom/movable/overlay/animation, var/turf/target)
animation.icon_state = ""
flick("",animation)
shadow(target,holder.loc,"artificer_convert")
spawn(10)
qdel(animation)
animation = null
/spell/aoe_turf/conjure/wall/reinforced
name = "Greater Construction"
desc = "This spell constructs a reinforced metal wall"
@@ -93,6 +154,9 @@
summon_type = list(/turf/simulated/wall/r_wall)
/spell/aoe_turf/conjure/wall/reinforced/spell_do_after(var/mob/user as mob, delay as num, var/numticks = 5)
. = ..()
/spell/aoe_turf/conjure/soulstone
name = "Summon Soulstone"
desc = "This spell reaches into Nar-Sie's realm, summoning one of the legendary fragments across time and space"
@@ -103,12 +167,18 @@
invocation = "none"
invocation_type = SpI_NONE
range = 0
cast_delay = 30
summon_type = list(/obj/item/device/soulstone)
hud_state = "const_stone"
override_base = "cult"
/spell/aoe_turf/conjure/soulstone/spell_do_after(var/mob/user as mob, delay as num, var/numticks = 5)
delay_animation = new /obj/effect/artificer_underlay(get_turf(user))
playsound(user, 'sound/items/welder.ogg', 100, 1)
. = ..()
/spell/aoe_turf/conjure/pylon
name = "Red Pylon"
desc = "This spell conjures a fragile crystal from Nar-Sie's realm. Makes for a convenient light source."
@@ -119,6 +189,7 @@
invocation = "none"
invocation_type = SpI_NONE
range = 0
cast_delay = 20
summon_type = list(/obj/structure/cult_legacy/pylon)
@@ -126,6 +197,11 @@
hud_state = "const_pylon"
override_base = "cult"
/spell/aoe_turf/conjure/pylon/spell_do_after(var/mob/user as mob, delay as num, var/numticks = 5)
delay_animation = new /obj/effect/artificer_underlay(get_turf(user))
playsound(user, 'sound/items/welder.ogg', 100, 1)
. = ..()
/spell/aoe_turf/conjure/pylon/cast(list/targets)
..()
var/turf/spawn_place = pick(targets)
@@ -296,6 +372,7 @@
invocation = "none"
invocation_type = SpI_NONE
range = 0
cast_delay = 60
summon_type = list(/mob/living/simple_animal/hostile/hex)
override_base = "cult"
@@ -305,6 +382,11 @@
/spell/aoe_turf/conjure/hex/choose_targets(mob/user = usr)
return list(get_turf(user))
/spell/aoe_turf/conjure/hex/spell_do_after(var/mob/user as mob, delay as num, var/numticks = 5)
delay_animation = new /obj/effect/artificer_underlay(get_turf(user))
playsound(user, 'sound/items/welder.ogg', 100, 1)
. = ..()
/spell/aoe_turf/conjure/hex/before_channel(var/mob/user)
var/mob/living/simple_animal/construct/builder/perfect/artificer = user
if (artificer.minions.len >= 3)
@@ -326,6 +408,7 @@
invocation = "none"
invocation_type = SpI_NONE
range = 0
cast_delay = 60
summon_type = list(/obj/structure/cult/altar)
override_base = "cult"
@@ -335,6 +418,12 @@
/spell/aoe_turf/conjure/struct/choose_targets(mob/user = usr)
return list(get_turf(user))
/spell/aoe_turf/conjure/struct/spell_do_after(var/mob/user as mob, delay as num, var/numticks = 5)
delay_animation = new /obj/effect/artificer_underlay(get_turf(user))
playsound(user, 'sound/items/welder.ogg', 100, 1)
. = ..()
/spell/aoe_turf/conjure/struct/before_channel(var/mob/user)
if (locate(/obj/structure/cult) in range(user,1))
to_chat(user, "<span class='warning'>You cannot perform this ritual that close from another similar structure.</span>")
@@ -358,3 +447,26 @@
if("Forge")
summon_type = list(/obj/structure/cult/forge)
return 0
/obj/effect/artificer_underlay
icon = 'icons/obj/cult.dmi'
icon_state = "build"
mouse_opacity = 0
density = 0
anchored = 1
mouse_opacity = 0
/obj/effect/artificer_underlay/cultify()
return
/obj/effect/artificer_underlay/ex_act()
return
/obj/effect/artificer_underlay/emp_act()
return
/obj/effect/artificer_underlay/blob_act()
return
/obj/effect/artificer_underlay/singularity_act()
return

View File

@@ -97,6 +97,7 @@ var/list/spells = typesof(/spell) //needed for the badmin verb for now
var/list/holiday_required = list() // The holiday this spell is restricted to ! Leave empty if none.
var/block = 0//prevents some spells from being spamed
var/obj/delay_animation = null
///////////////////////
///SETUP AND PROCESS///
@@ -158,8 +159,14 @@ var/list/spells = typesof(/spell) //needed for the badmin verb for now
return
if(cast_delay && !spell_do_after(user, cast_delay))
block = 0
if (delay_animation)
qdel(delay_animation)
delay_animation = null
return
block = 0
if (delay_animation)
qdel(delay_animation)
delay_animation = null
if(before_target(user))
return

Binary file not shown.

Before

Width:  |  Height:  |  Size: 81 KiB

After

Width:  |  Height:  |  Size: 209 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 513 KiB

After

Width:  |  Height:  |  Size: 513 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.4 KiB

After

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 95 KiB

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 66 KiB

After

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 308 KiB

After

Width:  |  Height:  |  Size: 323 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.1 KiB

After

Width:  |  Height:  |  Size: 11 KiB

View File

@@ -38,7 +38,7 @@
"aL" = (/turf/simulated/floor/wood,/area/awaymission/academy/headmaster)
"aM" = (/obj/abstract/map/spawner/mobs/humanoid/wiz,/turf/simulated/floor/wood,/area/awaymission/academy/headmaster)
"aN" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/carpet,/area/awaymission/academy/headmaster)
"aO" = (/obj/structure/cult/tome,/obj/item/weapon/staff,/turf/simulated/floor/wood,/area/awaymission/academy/headmaster)
"aO" = (/obj/structure/cult_legacy/tome,/obj/item/weapon/staff,/turf/simulated/floor/wood,/area/awaymission/academy/headmaster)
"aP" = (/obj/structure/bed/chair/wood/wings{dir = 8},/turf/simulated/floor/wood,/area/awaymission/academy/headmaster)
"aQ" = (/obj/item/clothing/suit/space/rig/wizard,/obj/item/clothing/head/helmet/space/rig/wizard,/obj/structure/table/woodentable,/turf/simulated/floor/wood,/area/awaymission/academy/headmaster)
"aR" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/briefcase,/turf/simulated/floor/carpet,/area/awaymission/academy/headmaster)
@@ -256,7 +256,7 @@
"eV" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/awaymission/academy/classrooms)
"eW" = (/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/awaymission/academy)
"eX" = (/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/awaymission/academy/classrooms)
"eY" = (/obj/structure/cult/pylon,/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/awaymission/academy/classrooms)
"eY" = (/obj/structure/cult_legacy/pylon,/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/awaymission/academy/classrooms)
"eZ" = (/turf/simulated/floor{dir = 5; icon_state = "yellow"},/area/awaymission/academy/classrooms)
"fa" = (/turf/simulated/floor{dir = 1; icon_state = "chapel"},/area/awaymission/academy/classrooms)
"fb" = (/turf/simulated/floor{dir = 4; icon_state = "chapel"},/area/awaymission/academy/classrooms)
@@ -264,7 +264,7 @@
"fd" = (/obj/structure/table,/turf/simulated/floor{icon_state = "escape"; dir = 6},/area/awaymission/academy/classrooms)
"fe" = (/obj/machinery/processor,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/awaymission/academy/classrooms)
"ff" = (/turf/simulated/floor{icon_state = "yellow"},/area/awaymission/academy/classrooms)
"fg" = (/obj/structure/cult/pylon,/turf/simulated/floor{icon_state = "yellow"},/area/awaymission/academy/classrooms)
"fg" = (/obj/structure/cult_legacy/pylon,/turf/simulated/floor{icon_state = "yellow"},/area/awaymission/academy/classrooms)
"fh" = (/turf/simulated/floor{dir = 6; icon_state = "yellow"},/area/awaymission/academy/classrooms)
"fi" = (/turf/simulated/floor{dir = 8; icon_state = "chapel"},/area/awaymission/academy/classrooms)
"fj" = (/turf/simulated/floor{icon_state = "chapel"},/area/awaymission/academy/classrooms)
@@ -505,9 +505,9 @@
"jK" = (/obj/structure/grille,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/item/weapon/shard,/obj/item/weapon/shard/plasma,/turf/simulated/floor/plating/airless,/area/awaymission/academy/academyaft)
"jL" = (/obj/structure/window/reinforced,/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/golden_cup,/turf/simulated/floor{icon_state = "red"},/area/awaymission/academy/academyaft)
"jM" = (/obj/structure/window/reinforced,/turf/simulated/floor{icon_state = "red"; dir = 6},/area/awaymission/academy/academyaft)
"jN" = (/obj/structure/cult/pylon,/turf/simulated/floor{icon_state = "yellow"; dir = 10},/area/awaymission/academy/academyaft)
"jN" = (/obj/structure/cult_legacy/pylon,/turf/simulated/floor{icon_state = "yellow"; dir = 10},/area/awaymission/academy/academyaft)
"jO" = (/turf/simulated/floor{icon_state = "yellow"},/area/awaymission/academy/academyaft)
"jP" = (/obj/structure/cult/pylon,/turf/simulated/floor{dir = 6; icon_state = "yellow"},/area/awaymission/academy/academyaft)
"jP" = (/obj/structure/cult_legacy/pylon,/turf/simulated/floor{dir = 6; icon_state = "yellow"},/area/awaymission/academy/academyaft)
"jQ" = (/obj/structure/window/reinforced,/turf/simulated/floor/airless{tag = "icon-white (EAST)"; icon_state = "white"; dir = 4},/area/awaymission/academy/academyaft)
"jR" = (/obj/structure/table,/obj/structure/window/reinforced,/obj/item/device/batterer,/turf/simulated/floor/airless{tag = "icon-whitered (EAST)"; icon_state = "whitered"; dir = 4},/area/awaymission/academy/academyaft)
"jS" = (/obj/item/weapon/shard{icon_state = "medium"},/obj/item/weapon/shard/plasma,/turf/space,/area)

View File

@@ -0,0 +1,694 @@
"aa" = (/turf/space,/area)
"ab" = (/turf/simulated/wall/r_wall,/area/awaymission/academy/headmaster)
"ac" = (/obj/structure/grille,/obj/structure/window/reinforced/plasma,/obj/structure/window/reinforced/plasma{dir = 1},/obj/structure/window/reinforced/plasma{dir = 8},/obj/structure/window/full/reinforced/tinted,/turf/simulated/floor/plating,/area/awaymission/academy/headmaster)
"ad" = (/obj/structure/grille,/obj/structure/window/reinforced/plasma,/obj/structure/window/reinforced/plasma{dir = 1},/obj/structure/window/full/reinforced/tinted,/turf/simulated/floor/plating,/area/awaymission/academy/headmaster)
"ae" = (/obj/structure/grille,/obj/structure/window/reinforced/plasma,/obj/structure/window/reinforced/plasma{dir = 1},/obj/structure/window/reinforced/plasma{dir = 4},/obj/structure/window/full/reinforced/tinted,/turf/simulated/floor/plating,/area/awaymission/academy/headmaster)
"af" = (/obj/structure/filingcabinet/filingcabinet,/turf/simulated/floor/carpet,/area/awaymission/academy/headmaster)
"ag" = (/obj/structure/computerframe{anchored = 1},/turf/simulated/floor/carpet,/area/awaymission/academy/headmaster)
"ah" = (/obj/structure/table/reinforced,/obj/item/weapon/pen/red,/turf/simulated/floor/carpet,/area/awaymission/academy/headmaster)
"ai" = (/obj/structure/table/reinforced,/obj/item/weapon/folder/blue,/turf/simulated/floor/carpet,/area/awaymission/academy/headmaster)
"aj" = (/turf/simulated/floor/carpet,/area/awaymission/academy/headmaster)
"ak" = (/obj/machinery/light{dir = 8},/turf/simulated/floor/carpet,/area/awaymission/academy/headmaster)
"al" = (/obj/structure/bed/chair/office/light{dir = 1},/turf/simulated/floor/carpet,/area/awaymission/academy/headmaster)
"am" = (/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/machinery/power/apc{dir = 1; environ = 0; equipment = 3; locked = 0; req_access = ""},/obj/machinery/light{dir = 4},/turf/simulated/floor/carpet,/area/awaymission/academy/headmaster)
"an" = (/obj/structure/grille,/obj/structure/window/reinforced/plasma{dir = 1},/obj/structure/window/reinforced/plasma{dir = 8},/obj/structure/window/reinforced/plasma{dir = 4},/obj/structure/window/full/reinforced/tinted,/turf/simulated/floor/plating,/area/awaymission/academy/headmaster)
"ao" = (/obj/structure/table/reinforced,/turf/simulated/floor/carpet,/area/awaymission/academy/headmaster)
"ap" = (/obj/abstract/map/spawner/mobs/humanoid/wiz,/turf/simulated/floor/carpet,/area/awaymission/academy/headmaster)
"aq" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/carpet,/area/awaymission/academy/headmaster)
"ar" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/light/small,/turf/simulated/floor/carpet,/area/awaymission/academy/headmaster)
"as" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor/carpet,/area/awaymission/academy/headmaster)
"at" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/carpet,/area/awaymission/academy/headmaster)
"au" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/carpet,/area/awaymission/academy/headmaster)
"av" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/food/drinks/coffee,/turf/simulated/floor/carpet,/area/awaymission/academy/headmaster)
"aw" = (/obj/structure/grille,/obj/structure/window/reinforced/plasma{dir = 8},/obj/structure/window/reinforced/plasma{dir = 4},/obj/structure/window/full/reinforced/tinted,/turf/simulated/floor/plating,/area/awaymission/academy/headmaster)
"ax" = (/obj/structure/table/reinforced,/obj/item/weapon/paper{info = "We're upgrading to the latest mainframes for our consoles, the shipment should be in before spring break is over!"; name = "Console Maintenance"},/turf/simulated/floor/carpet,/area/awaymission/academy/headmaster)
"ay" = (/turf/simulated/wall,/area/awaymission/academy/headmaster)
"az" = (/obj/machinery/door/mineral/wood,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/carpet,/area/awaymission/academy/headmaster)
"aA" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/carpet,/area/awaymission/academy/headmaster)
"aB" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/carpet,/area/awaymission/academy/headmaster)
"aC" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin,/turf/simulated/floor/carpet,/area/awaymission/academy/headmaster)
"aD" = (/obj/item/weapon/stool,/turf/simulated/floor/carpet,/area/awaymission/academy/headmaster)
"aE" = (/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/wood,/area/awaymission/academy/headmaster)
"aF" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/item/stack/sheet/animalhide/monkey,/turf/simulated/floor/wood,/area/awaymission/academy/headmaster)
"aG" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/wood,/area/awaymission/academy/headmaster)
"aH" = (/obj/structure/bed,/obj/item/weapon/bedsheet/purple,/turf/simulated/floor/wood,/area/awaymission/academy/headmaster)
"aI" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/food/drinks/tea,/turf/simulated/floor/carpet,/area/awaymission/academy/headmaster)
"aJ" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/carpet,/area/awaymission/academy/headmaster)
"aK" = (/obj/structure/filingcabinet,/turf/simulated/floor/wood,/area/awaymission/academy/headmaster)
"aL" = (/turf/simulated/floor/wood,/area/awaymission/academy/headmaster)
"aM" = (/obj/abstract/map/spawner/mobs/humanoid/wiz,/turf/simulated/floor/wood,/area/awaymission/academy/headmaster)
"aN" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/carpet,/area/awaymission/academy/headmaster)
"aO" = (/obj/structure/cult/tome,/obj/item/weapon/staff,/turf/simulated/floor/wood,/area/awaymission/academy/headmaster)
"aP" = (/obj/structure/bed/chair/wood/wings{dir = 8},/turf/simulated/floor/wood,/area/awaymission/academy/headmaster)
"aQ" = (/obj/item/clothing/suit/space/rig/wizard,/obj/item/clothing/head/helmet/space/rig/wizard,/obj/structure/table/woodentable,/turf/simulated/floor/wood,/area/awaymission/academy/headmaster)
"aR" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/briefcase,/turf/simulated/floor/carpet,/area/awaymission/academy/headmaster)
"aS" = (/obj/structure/grille,/obj/structure/window/reinforced/plasma,/obj/structure/window/reinforced/plasma{dir = 8},/obj/structure/window/reinforced/plasma{dir = 4},/obj/structure/window/full/reinforced/tinted,/turf/simulated/floor/plating,/area/awaymission/academy/headmaster)
"aT" = (/obj/structure/table/reinforced,/obj/item/weapon/coin/plasma,/turf/simulated/floor/carpet,/area/awaymission/academy/headmaster)
"aU" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/carpet,/area/awaymission/academy/headmaster)
"aV" = (/obj/machinery/light{dir = 4},/turf/simulated/floor/carpet,/area/awaymission/academy/headmaster)
"aW" = (/obj/structure/lattice,/turf/space,/area)
"aX" = (/obj/machinery/door/airlock/gold{locked = 1},/turf/simulated/floor/carpet,/area/awaymission/academy/headmaster)
"aY" = (/obj/machinery/door/airlock/gold{locked = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/carpet,/area/awaymission/academy/headmaster)
"aZ" = (/turf/unsimulated/mineral/random/high_chance,/area/awaymission/academy)
"ba" = (/obj/structure/noticeboard,/turf/simulated/wall,/area/awaymission/academy/headmaster)
"bb" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/wood,/area/awaymission/academy/headmaster)
"bc" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/wood,/area/awaymission/academy/headmaster)
"bd" = (/obj/structure/grille,/obj/structure/window/reinforced/plasma,/obj/structure/window/reinforced/plasma{dir = 1},/obj/structure/window/reinforced/plasma{dir = 8},/obj/structure/window/reinforced/plasma{dir = 4},/obj/structure/window/full/reinforced/tinted,/turf/simulated/floor/plating,/area/awaymission/academy/headmaster)
"be" = (/obj/structure/bed/chair/office/dark,/turf/simulated/floor/carpet,/area/awaymission/academy/headmaster)
"bf" = (/obj/structure/reagent_dispensers/water_cooler,/turf/simulated/floor/wood,/area/awaymission/academy/headmaster)
"bg" = (/obj/machinery/photocopier,/turf/simulated/floor/wood,/area/awaymission/academy/headmaster)
"bh" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin,/turf/simulated/floor/carpet,/area/awaymission/academy/headmaster)
"bi" = (/obj/structure/table/woodentable,/obj/item/weapon/folder/blue,/turf/simulated/floor/carpet,/area/awaymission/academy/headmaster)
"bj" = (/obj/structure/table/woodentable,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/item/weapon/pen/red,/turf/simulated/floor/carpet,/area/awaymission/academy/headmaster)
"bk" = (/obj/structure/table/woodentable,/obj/item/weapon/staff,/turf/simulated/floor/carpet,/area/awaymission/academy/headmaster)
"bl" = (/obj/structure/table/woodentable,/obj/item/weapon/hand_labeler,/turf/simulated/floor/wood,/area/awaymission/academy/headmaster)
"bm" = (/obj/structure/table/woodentable,/obj/item/weapon/pen/invisible,/turf/simulated/floor/wood,/area/awaymission/academy/headmaster)
"bn" = (/obj/structure/bed/chair/office/dark{dir = 4},/turf/simulated/floor/carpet,/area/awaymission/academy/headmaster)
"bo" = (/obj/structure/table/woodentable,/obj/item/weapon/pen/red,/turf/simulated/floor/carpet,/area/awaymission/academy/headmaster)
"bp" = (/obj/structure/table/woodentable,/turf/simulated/floor/carpet,/area/awaymission/academy/headmaster)
"bq" = (/obj/structure/table/woodentable,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/item/weapon/dice/d20,/turf/simulated/floor/carpet,/area/awaymission/academy/headmaster)
"br" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/drinks/tea,/turf/simulated/floor/carpet,/area/awaymission/academy/headmaster)
"bs" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin,/turf/simulated/floor/wood,/area/awaymission/academy/headmaster)
"bt" = (/obj/structure/bed/chair/office/dark{dir = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/carpet,/area/awaymission/academy/headmaster)
"bu" = (/obj/structure/bed/chair/office/dark{dir = 1},/turf/simulated/floor/carpet,/area/awaymission/academy/headmaster)
"bv" = (/obj/structure/table/woodentable,/obj/item/weapon/folder/blue,/turf/simulated/floor/wood,/area/awaymission/academy/headmaster)
"bw" = (/obj/machinery/light,/turf/simulated/floor/wood,/area/awaymission/academy/headmaster)
"bx" = (/obj/structure/filingcabinet/chestdrawer,/turf/simulated/floor/wood,/area/awaymission/academy/headmaster)
"by" = (/obj/machinery/door/airlock/gold,/turf/simulated/floor/carpet,/area/awaymission/academy/headmaster)
"bz" = (/obj/machinery/door/airlock/gold,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/carpet,/area/awaymission/academy/headmaster)
"bA" = (/turf/simulated/floor,/area/awaymission/academy/headmaster)
"bB" = (/turf/simulated/wall/r_wall,/area/awaymission/academy/classrooms)
"bC" = (/obj/machinery/door/poddoor/shutters{id_tag = "AcademyAuto"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/awaymission/academy/classrooms)
"bD" = (/obj/machinery/door/poddoor/shutters{id_tag = "AcademyAuto"},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/awaymission/academy/classrooms)
"bE" = (/obj/machinery/door/poddoor/shutters{id_tag = "AcademyAuto"},/turf/simulated/floor/plating,/area/awaymission/academy/classrooms)
"bF" = (/obj/machinery/door/poddoor/shutters{id_tag = "AcademyAuto"},/turf/simulated/floor/plating{tag = "icon-warnplate (EAST)"; icon_state = "warnplate"; dir = 4},/area/awaymission/academy/classrooms)
"bG" = (/turf/simulated/floor{dir = 1; icon_state = "chapel"},/area/awaymission/academy/headmaster)
"bH" = (/turf/simulated/floor{dir = 4; icon_state = "chapel"},/area/awaymission/academy/headmaster)
"bI" = (/turf/simulated/floor,/area/awaymission/academy/classrooms)
"bJ" = (/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/awaymission/academy/classrooms)
"bK" = (/turf/simulated/floor/plating,/area/awaymission/academy/classrooms)
"bL" = (/turf/simulated/floor/plating{tag = "icon-warnplate (EAST)"; icon_state = "warnplate"; dir = 4},/area/awaymission/academy/classrooms)
"bM" = (/obj/machinery/door_control{id_tag = "AcademyAuto"; pixel_y = 24},/turf/simulated/floor,/area/awaymission/academy/classrooms)
"bN" = (/turf/simulated/wall,/area/awaymission/academy/classrooms)
"bO" = (/turf/simulated/shuttle/wall{tag = "icon-swallc2"; icon_state = "swallc2"},/area/awaymission/academy/classrooms)
"bP" = (/turf/simulated/shuttle/wall{tag = "icon-swall12"; icon_state = "swall12"; dir = 2},/area/awaymission/academy/classrooms)
"bQ" = (/turf/simulated/shuttle/wall{tag = "icon-swallc1"; icon_state = "swallc1"},/area/awaymission/academy/classrooms)
"bR" = (/obj/machinery/light{dir = 8},/turf/simulated/floor,/area/awaymission/academy/headmaster)
"bS" = (/turf/simulated/floor{dir = 8; icon_state = "chapel"},/area/awaymission/academy/headmaster)
"bT" = (/turf/simulated/floor{icon_state = "chapel"},/area/awaymission/academy/headmaster)
"bU" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor,/area/awaymission/academy/headmaster)
"bV" = (/obj/machinery/light{dir = 8},/turf/simulated/floor{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/academy/headmaster)
"bW" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{icon_state = "dark"},/area/awaymission/academy/headmaster)
"bX" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/academy/headmaster)
"bY" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor{icon_state = "dark"},/area/awaymission/academy/headmaster)
"bZ" = (/obj/effect/decal/cleanable/cobweb2,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/academy/headmaster)
"ca" = (/obj/effect/landmark{name = "awaystart"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/awaymission/academy/headmaster)
"cb" = (/obj/abstract/map/spawner/mobs/spider,/turf/simulated/floor{icon_state = "showroomfloor"},/area/awaymission/academy/headmaster)
"cc" = (/obj/machinery/r_n_d/fabricator/mechanic_fab/autolathe,/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor,/area/awaymission/academy/classrooms)
"cd" = (/turf/simulated/floor{icon_state = "floorgrime"},/area/awaymission/academy/classrooms)
"ce" = (/turf/simulated/shuttle/wall{tag = "icon-swall3"; icon_state = "swall3"; dir = 2},/area/awaymission/academy/classrooms)
"cf" = (/obj/effect/decal/cleanable/ash,/turf/simulated/floor/engine,/area/awaymission/academy/classrooms)
"cg" = (/obj/structure/target_stake,/turf/simulated/floor/engine,/area/awaymission/academy/classrooms)
"ch" = (/turf/simulated/floor/engine,/area/awaymission/academy/classrooms)
"ci" = (/obj/structure/target_stake,/obj/item/target/alien,/turf/simulated/floor/engine,/area/awaymission/academy/classrooms)
"cj" = (/obj/machinery/vending/cigarette,/turf/simulated/floor,/area/awaymission/academy/headmaster)
"ck" = (/obj/structure/table,/obj/item/weapon/lighter/random,/turf/simulated/floor,/area/awaymission/academy/headmaster)
"cl" = (/turf/simulated/floor{icon_state = "dark"},/area/awaymission/academy/headmaster)
"cm" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/academy/headmaster)
"cn" = (/turf/simulated/floor{icon_state = "showroomfloor"},/area/awaymission/academy/headmaster)
"co" = (/obj/machinery/portable_atmospherics/canister/plasma,/turf/simulated/floor{icon_state = "showroomfloor"},/area/awaymission/academy/headmaster)
"cp" = (/obj/item/weapon/stool,/obj/machinery/light/small{dir = 4},/turf/simulated/floor{icon_state = "showroomfloor"},/area/awaymission/academy/headmaster)
"cq" = (/obj/structure/table,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor{icon_state = "floorgrime"},/area/awaymission/academy/classrooms)
"cr" = (/obj/effect/decal/cleanable/blood/oil,/turf/simulated/floor/plating,/area/awaymission/academy/classrooms)
"cs" = (/obj/machinery/door/airlock/plasma,/turf/simulated/floor/carpet,/area/awaymission/academy/headmaster)
"ct" = (/turf/simulated/floor{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/academy/headmaster)
"cu" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor{icon_state = "dark"},/area/awaymission/academy/headmaster)
"cv" = (/obj/machinery/computer/area_atmos/area,/turf/simulated/floor{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/academy/headmaster)
"cw" = (/obj/machinery/portable_atmospherics/scrubber/huge/stationary,/turf/simulated/floor/plating,/area/awaymission/academy/headmaster)
"cx" = (/obj/item/weapon/stool,/turf/simulated/floor{icon_state = "showroomfloor"},/area/awaymission/academy/headmaster)
"cy" = (/obj/structure/table,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/item/weapon/pen/red,/obj/machinery/light{dir = 8},/turf/simulated/floor,/area/awaymission/academy/classrooms)
"cz" = (/obj/machinery/light{dir = 4},/turf/simulated/floor,/area/awaymission/academy/classrooms)
"cA" = (/turf/simulated/shuttle/wall{tag = "icon-swall1"; icon_state = "swall1"},/area/awaymission/academy/classrooms)
"cB" = (/obj/structure/bed/chair,/turf/simulated/floor,/area/awaymission/academy/headmaster)
"cC" = (/turf/simulated/floor/carpet{icon_state = "carpetsymbol"},/area/awaymission/academy/headmaster)
"cD" = (/obj/machinery/door/window{dir = 8},/turf/simulated/floor/plating,/area/awaymission/academy/headmaster)
"cE" = (/turf/simulated/floor/plating,/area/awaymission/academy/headmaster)
"cF" = (/obj/machinery/door/window{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plating,/area/awaymission/academy/headmaster)
"cG" = (/obj/structure/table,/turf/simulated/floor{icon_state = "showroomfloor"},/area/awaymission/academy/headmaster)
"cH" = (/obj/structure/table,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/item/stack/cable_coil/random,/turf/simulated/floor,/area/awaymission/academy/classrooms)
"cI" = (/obj/abstract/map/spawner/mobs/humanoid/wiz,/turf/simulated/floor/plating,/area/awaymission/academy/classrooms)
"cJ" = (/obj/machinery/light{dir = 8},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/awaymission/academy/classrooms)
"cK" = (/obj/item/target,/turf/simulated/floor/engine,/area/awaymission/academy/classrooms)
"cL" = (/obj/machinery/light{dir = 4},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/awaymission/academy/classrooms)
"cM" = (/obj/structure/table,/turf/simulated/floor,/area/awaymission/academy/headmaster)
"cN" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/carpet,/area/awaymission/academy/headmaster)
"cO" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "dark"},/area/awaymission/academy/headmaster)
"cP" = (/obj/structure/sign/nosmoking_1,/turf/simulated/wall,/area/awaymission/academy/headmaster)
"cQ" = (/obj/structure/table,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor,/area/awaymission/academy/classrooms)
"cR" = (/obj/item/stack/sheet/metal,/turf/simulated/floor/plating,/area/awaymission/academy/classrooms)
"cS" = (/turf/simulated/floor{icon_state = "red"; dir = 8},/area/awaymission/academy/classrooms)
"cT" = (/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/awaymission/academy/classrooms)
"cU" = (/turf/simulated/floor{icon_state = "red"; dir = 4},/area/awaymission/academy/classrooms)
"cV" = (/obj/structure/bed/chair{dir = 1},/turf/simulated/floor,/area/awaymission/academy/headmaster)
"cW" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor,/area/awaymission/academy/classrooms)
"cX" = (/turf/simulated/floor/plating{tag = "icon-warnplate (SOUTHWEST)"; icon_state = "warnplate"; dir = 10},/area/awaymission/academy/classrooms)
"cY" = (/turf/simulated/floor/plating{tag = "icon-warnplate (SOUTHEAST)"; icon_state = "warnplate"; dir = 6},/area/awaymission/academy/classrooms)
"cZ" = (/turf/simulated/floor{icon_state = "red"; dir = 10},/area/awaymission/academy/classrooms)
"da" = (/turf/simulated/floor{icon_state = "red"},/area/awaymission/academy/classrooms)
"db" = (/turf/simulated/floor{icon_state = "red"; dir = 6},/area/awaymission/academy/classrooms)
"dc" = (/obj/machinery/light{dir = 8},/obj/machinery/portable_atmospherics/pump,/turf/simulated/floor{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/academy/headmaster)
"dd" = (/obj/structure/closet/crate/internals,/obj/item/weapon/tank/oxygen,/obj/item/weapon/tank/oxygen/red,/turf/simulated/floor{icon_state = "dark"},/area/awaymission/academy/headmaster)
"de" = (/obj/structure/closet/crate,/obj/item/weapon/crowbar/red,/turf/simulated/floor{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/academy/headmaster)
"df" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor,/area/awaymission/academy/classrooms)
"dg" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor,/area/awaymission/academy/classrooms)
"dh" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor{icon_state = "floorgrime"},/area/awaymission/academy/classrooms)
"di" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor,/area/awaymission/academy/classrooms)
"dj" = (/turf/simulated/floor/wood,/area/awaymission/academy/classrooms)
"dk" = (/turf/simulated/floor/greengrid,/area/awaymission/academy/classrooms)
"dl" = (/obj/structure/table/woodentable,/turf/simulated/floor/wood,/area/awaymission/academy/classrooms)
"dm" = (/obj/structure/table/woodentable,/obj/item/weapon/staff,/turf/simulated/floor/wood,/area/awaymission/academy/classrooms)
"dn" = (/obj/machinery/light{dir = 4},/turf/simulated/floor,/area/awaymission/academy/headmaster)
"do" = (/turf/simulated/floor{dir = 9; icon_state = "green"},/area/awaymission/academy/classrooms)
"dp" = (/turf/simulated/floor{dir = 1; icon_state = "green"},/area/awaymission/academy/classrooms)
"dq" = (/obj/machinery/light{dir = 1},/turf/simulated/floor{dir = 1; icon_state = "green"},/area/awaymission/academy/classrooms)
"dr" = (/obj/structure/sink/kitchen{pixel_y = 28},/turf/simulated/floor{dir = 1; icon_state = "green"},/area/awaymission/academy/classrooms)
"ds" = (/turf/simulated/floor{dir = 5; icon_state = "green"},/area/awaymission/academy/classrooms)
"dt" = (/turf/simulated/floor{icon_state = "white"},/area/awaymission/academy/classrooms)
"du" = (/obj/machinery/gibber,/turf/simulated/floor{icon_state = "white"},/area/awaymission/academy/classrooms)
"dv" = (/obj/machinery/mech_bay_recharge_port,/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor/plating,/area/awaymission/academy/classrooms)
"dw" = (/obj/machinery/computer/mech_bay_power_console,/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor/greengrid,/area/awaymission/academy/classrooms)
"dx" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/awaymission/academy/classrooms)
"dy" = (/obj/structure/bed/chair/wood{dir = 1},/turf/simulated/floor/wood,/area/awaymission/academy/classrooms)
"dz" = (/obj/abstract/map/spawner/mobs/humanoid/wiz,/turf/simulated/floor/wood,/area/awaymission/academy/classrooms)
"dA" = (/turf/simulated/floor{icon_state = "green"; dir = 8},/area/awaymission/academy/classrooms)
"dB" = (/obj/item/weapon/stool,/turf/simulated/floor,/area/awaymission/academy/classrooms)
"dC" = (/obj/machinery/portable_atmospherics/hydroponics,/obj/item/seeds/eggyseed,/turf/simulated/floor,/area/awaymission/academy/classrooms)
"dD" = (/obj/machinery/portable_atmospherics/hydroponics,/turf/simulated/floor,/area/awaymission/academy/classrooms)
"dE" = (/turf/simulated/floor{icon_state = "green"; dir = 4},/area/awaymission/academy/classrooms)
"dF" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/effect/landmark{name = "awaystart"},/obj/item/weapon/weldingtool,/obj/machinery/light{dir = 8},/turf/simulated/floor/greengrid,/area/awaymission/academy/classrooms)
"dG" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/greengrid,/area/awaymission/academy/classrooms)
"dH" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/greengrid,/area/awaymission/academy/classrooms)
"dI" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor,/area/awaymission/academy/classrooms)
"dJ" = (/turf/simulated/floor/grass,/area/awaymission/academy/headmaster)
"dK" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/glass/bucket,/turf/simulated/floor,/area/awaymission/academy/classrooms)
"dL" = (/obj/structure/closet/crate/hydroponics/prespawned,/turf/simulated/floor,/area/awaymission/academy/classrooms)
"dM" = (/obj/machinery/door/airlock/freezer,/turf/simulated/floor{icon_state = "white"},/area/awaymission/academy/classrooms)
"dN" = (/obj/machinery/light/small{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/awaymission/academy/classrooms)
"dO" = (/obj/machinery/mech_bay_recharge_port,/obj/structure/cable,/turf/simulated/floor/plating,/area/awaymission/academy/classrooms)
"dP" = (/obj/machinery/computer/mech_bay_power_console,/obj/structure/cable,/turf/simulated/floor/greengrid,/area/awaymission/academy/classrooms)
"dQ" = (/obj/machinery/portable_atmospherics/hydroponics,/obj/item/seeds/dionanode,/turf/simulated/floor,/area/awaymission/academy/classrooms)
"dR" = (/obj/structure/table/woodentable,/turf/simulated/floor,/area/awaymission/academy/classrooms)
"dS" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/floor,/area/awaymission/academy/classrooms)
"dT" = (/obj/machinery/light{dir = 8},/turf/simulated/floor{icon_state = "white"},/area/awaymission/academy/classrooms)
"dU" = (/obj/machinery/light{dir = 8},/turf/simulated/floor/wood,/area/awaymission/academy/classrooms)
"dV" = (/obj/machinery/light{dir = 4},/turf/simulated/floor/wood,/area/awaymission/academy/classrooms)
"dW" = (/obj/machinery/portable_atmospherics/hydroponics,/obj/item/seeds/bluespacetomatoseed,/turf/simulated/floor,/area/awaymission/academy/classrooms)
"dX" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/awaymission/academy/classrooms)
"dY" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor{icon_state = "green"; dir = 4},/area/awaymission/academy/classrooms)
"dZ" = (/obj/machinery/door/airlock/freezer,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/awaymission/academy/classrooms)
"ea" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/awaymission/academy/classrooms)
"eb" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "white"},/area/awaymission/academy/classrooms)
"ec" = (/obj/structure/kitchenspike,/turf/simulated/floor{icon_state = "white"},/area/awaymission/academy/classrooms)
"ed" = (/obj/machinery/door/mineral/iron,/turf/simulated/floor,/area/awaymission/academy/classrooms)
"ee" = (/obj/machinery/door/mineral/iron,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor,/area/awaymission/academy/classrooms)
"ef" = (/obj/machinery/door/mineral/wood,/turf/simulated/floor/carpet,/area/awaymission/academy/classrooms)
"eg" = (/obj/machinery/seed_extractor,/turf/simulated/floor,/area/awaymission/academy/classrooms)
"eh" = (/obj/structure/cable,/turf/simulated/floor,/area/awaymission/academy/classrooms)
"ei" = (/obj/structure/closet/crate/freezer,/turf/simulated/floor{icon_state = "white"},/area/awaymission/academy/classrooms)
"ej" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/awaymission/academy/classrooms)
"ek" = (/obj/machinery/igniter,/obj/machinery/light{dir = 1},/turf/simulated/floor/plating,/area/awaymission/academy/classrooms)
"el" = (/obj/machinery/igniter,/turf/simulated/floor/plating,/area/awaymission/academy/classrooms)
"em" = (/turf/simulated/floor{icon_state = "yellowcorner"},/area/awaymission/academy/classrooms)
"en" = (/obj/structure/window/reinforced,/turf/simulated/floor{icon_state = "yellow"},/area/awaymission/academy/classrooms)
"eo" = (/turf/simulated/floor{dir = 8; icon_state = "yellowcorner"},/area/awaymission/academy/classrooms)
"ep" = (/turf/simulated/floor{dir = 8; icon_state = "yellow"},/area/awaymission/academy/classrooms)
"eq" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor{dir = 4; icon_state = "yellow"},/area/awaymission/academy/classrooms)
"er" = (/obj/structure/noticeboard{pixel_y = 32},/obj/item/weapon/paper{name = "Automotive Repair 101"},/turf/simulated/floor{icon_state = "grimy"},/area/awaymission/academy/classrooms)
"es" = (/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "grimy"},/area/awaymission/academy/classrooms)
"et" = (/obj/structure/noticeboard{pixel_y = 32},/obj/item/weapon/paper{name = "Pyromancy 250"},/turf/simulated/floor{icon_state = "grimy"},/area/awaymission/academy/classrooms)
"eu" = (/turf/simulated/floor{icon_state = "grimy"},/area/awaymission/academy/classrooms)
"ev" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/apc{dir = 1; environ = 3; equipment = 3; locked = 0; req_access = ""},/turf/simulated/floor{icon_state = "grimy"},/area/awaymission/academy/classrooms)
"ew" = (/turf/simulated/floor/carpet,/area/awaymission/academy/classrooms)
"ex" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/carpet,/area/awaymission/academy/classrooms)
"ey" = (/obj/machinery/light{dir = 4},/turf/simulated/floor{icon_state = "grimy"},/area/awaymission/academy/classrooms)
"ez" = (/turf/simulated/floor{tag = "icon-green (SOUTHWEST)"; icon_state = "green"; dir = 10},/area/awaymission/academy/classrooms)
"eA" = (/turf/simulated/floor{tag = "icon-green"; icon_state = "green"},/area/awaymission/academy/classrooms)
"eB" = (/obj/machinery/light,/turf/simulated/floor{tag = "icon-green"; icon_state = "green"},/area/awaymission/academy/classrooms)
"eC" = (/obj/machinery/vending/hydroseeds{slogan_delay = 700},/obj/machinery/light,/turf/simulated/floor,/area/awaymission/academy/classrooms)
"eD" = (/obj/machinery/vending/hydronutrients,/turf/simulated/floor{icon_state = "green"; dir = 6},/area/awaymission/academy/classrooms)
"eE" = (/obj/structure/closet/secure_closet/freezer/fridge,/turf/simulated/floor{icon_state = "white"},/area/awaymission/academy/classrooms)
"eF" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/simulated/floor/plating,/area/awaymission/academy/classrooms)
"eG" = (/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor{dir = 6; icon_state = "yellow"},/area/awaymission/academy/classrooms)
"eH" = (/obj/machinery/singularity/academy,/turf/space,/area)
"eI" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor{icon_state = "yellow"; dir = 10},/area/awaymission/academy/classrooms)
"eJ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor{icon_state = "grimy"},/area/awaymission/academy/classrooms)
"eK" = (/obj/machinery/door/mineral/wood,/turf/simulated/floor,/area/awaymission/academy/classrooms)
"eL" = (/obj/machinery/door/airlock/freezer,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/awaymission/academy/classrooms)
"eM" = (/turf/simulated/floor/plating{tag = "icon-warnplate (NORTHWEST)"; icon_state = "warnplate"; dir = 9},/area/awaymission/academy)
"eN" = (/obj/machinery/door/airlock/glass,/obj/machinery/door/airlock/external,/turf/simulated/floor/plating,/area/awaymission/academy/classrooms)
"eO" = (/obj/machinery/door/airlock/glass,/turf/simulated/floor/plating,/area/awaymission/academy/classrooms)
"eP" = (/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor,/area/awaymission/academy/classrooms)
"eQ" = (/turf/simulated/floor{icon_state = "escape"; dir = 6},/area/awaymission/academy/classrooms)
"eR" = (/obj/structure/bed/chair,/turf/simulated/floor{icon_state = "escape"; dir = 6},/area/awaymission/academy/classrooms)
"eS" = (/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "escape"; dir = 6},/area/awaymission/academy/classrooms)
"eT" = (/obj/structure/table/reinforced,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/awaymission/academy/classrooms)
"eU" = (/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/awaymission/academy/classrooms)
"eV" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/awaymission/academy/classrooms)
"eW" = (/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/awaymission/academy)
"eX" = (/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/awaymission/academy/classrooms)
"eY" = (/obj/structure/cult/pylon,/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/awaymission/academy/classrooms)
"eZ" = (/turf/simulated/floor{dir = 5; icon_state = "yellow"},/area/awaymission/academy/classrooms)
"fa" = (/turf/simulated/floor{dir = 1; icon_state = "chapel"},/area/awaymission/academy/classrooms)
"fb" = (/turf/simulated/floor{dir = 4; icon_state = "chapel"},/area/awaymission/academy/classrooms)
"fc" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor{dir = 1; icon_state = "chapel"},/area/awaymission/academy/classrooms)
"fd" = (/obj/structure/table,/turf/simulated/floor{icon_state = "escape"; dir = 6},/area/awaymission/academy/classrooms)
"fe" = (/obj/machinery/processor,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/awaymission/academy/classrooms)
"ff" = (/turf/simulated/floor{icon_state = "yellow"},/area/awaymission/academy/classrooms)
"fg" = (/obj/structure/cult/pylon,/turf/simulated/floor{icon_state = "yellow"},/area/awaymission/academy/classrooms)
"fh" = (/turf/simulated/floor{dir = 6; icon_state = "yellow"},/area/awaymission/academy/classrooms)
"fi" = (/turf/simulated/floor{dir = 8; icon_state = "chapel"},/area/awaymission/academy/classrooms)
"fj" = (/turf/simulated/floor{icon_state = "chapel"},/area/awaymission/academy/classrooms)
"fk" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor{dir = 8; icon_state = "chapel"},/area/awaymission/academy/classrooms)
"fl" = (/obj/machinery/door/mineral/wood,/turf/simulated/floor{icon_state = "bar"},/area/awaymission/academy/classrooms)
"fm" = (/obj/structure/bed/chair{dir = 1},/turf/simulated/floor{icon_state = "escape"; dir = 6},/area/awaymission/academy/classrooms)
"fn" = (/obj/structure/bed/chair,/obj/abstract/map/spawner/mobs/humanoid/wiz,/turf/simulated/floor{icon_state = "escape"; dir = 6},/area/awaymission/academy/classrooms)
"fo" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/snacks/spellburger,/obj/machinery/light{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/awaymission/academy/classrooms)
"fp" = (/turf/simulated/floor/plating{tag = "icon-warnplate (SOUTHWEST)"; icon_state = "warnplate"; dir = 10},/area/awaymission/academy)
"fq" = (/obj/structure/window/reinforced,/turf/simulated/floor,/area/awaymission/academy/classrooms)
"fr" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/carpet,/area/awaymission/academy/classrooms)
"fs" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor/carpet,/area/awaymission/academy/classrooms)
"ft" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/carpet,/area/awaymission/academy/classrooms)
"fu" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor{icon_state = "grimy"},/area/awaymission/academy/classrooms)
"fv" = (/obj/machinery/door/mineral/wood,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor{icon_state = "bar"},/area/awaymission/academy/classrooms)
"fw" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor{icon_state = "escape"; dir = 6},/area/awaymission/academy/classrooms)
"fx" = (/obj/structure/table,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor{icon_state = "escape"; dir = 6},/area/awaymission/academy/classrooms)
"fy" = (/obj/structure/table/reinforced,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/awaymission/academy/classrooms)
"fz" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/awaymission/academy/classrooms)
"fA" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/awaymission/academy/classrooms)
"fB" = (/obj/structure/table,/obj/machinery/microwave,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/awaymission/academy/classrooms)
"fC" = (/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor{dir = 5; icon_state = "yellow"},/area/awaymission/academy/classrooms)
"fD" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor{dir = 9; icon_state = "yellow"},/area/awaymission/academy/classrooms)
"fE" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/floor{icon_state = "escape"; dir = 6},/area/awaymission/academy/classrooms)
"fF" = (/obj/structure/table,/obj/item/trash/semki,/turf/simulated/floor{icon_state = "escape"; dir = 6},/area/awaymission/academy/classrooms)
"fG" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/floor{icon_state = "escape"; dir = 6},/area/awaymission/academy/classrooms)
"fH" = (/obj/structure/table,/obj/machinery/reagentgrinder,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/awaymission/academy/classrooms)
"fI" = (/obj/machinery/igniter,/obj/machinery/light,/turf/simulated/floor/plating,/area/awaymission/academy/classrooms)
"fJ" = (/turf/simulated/floor{icon_state = "cautioncorner"; dir = 4},/area/awaymission/academy/classrooms)
"fK" = (/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/awaymission/academy/classrooms)
"fL" = (/turf/simulated/floor{dir = 1; icon_state = "yellowcorner"},/area/awaymission/academy/classrooms)
"fM" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{dir = 4; icon_state = "yellow"},/area/awaymission/academy/classrooms)
"fN" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/structure/noticeboard{pixel_y = -32},/obj/item/weapon/paper{name = "Biology Lab"},/turf/simulated/floor{icon_state = "grimy"},/area/awaymission/academy/classrooms)
"fO" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "grimy"},/area/awaymission/academy/classrooms)
"fP" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{icon_state = "grimy"},/area/awaymission/academy/classrooms)
"fQ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/light,/turf/simulated/floor{icon_state = "grimy"},/area/awaymission/academy/classrooms)
"fR" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/carpet,/area/awaymission/academy/classrooms)
"fS" = (/obj/machinery/light,/turf/simulated/floor{icon_state = "escape"; dir = 6},/area/awaymission/academy/classrooms)
"fT" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; health = 1e+007},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/awaymission/academy/classrooms)
"fU" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; health = 1e+007},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor/plating,/area/awaymission/academy/classrooms)
"fV" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; health = 1e+007},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/awaymission/academy/classrooms)
"fW" = (/turf/simulated/wall,/area/awaymission/academy/academyaft)
"fX" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/carpet,/area/awaymission/academy/academyaft)
"fY" = (/turf/simulated/floor/carpet,/area/awaymission/academy/academyaft)
"fZ" = (/obj/abstract/map/spawner/mobs/bear,/turf/simulated/floor/plating,/area/awaymission/academy/classrooms)
"ga" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; health = 1e+007},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating,/area/awaymission/academy/classrooms)
"gb" = (/obj/machinery/shieldwallgen,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/light{dir = 1},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/awaymission/academy/classrooms)
"gc" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor{icon_state = "whitehall"; dir = 1},/area/awaymission/academy/classrooms)
"gd" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "whitehall"; dir = 1},/area/awaymission/academy/classrooms)
"ge" = (/turf/simulated/floor{icon_state = "whitehall"; dir = 1},/area/awaymission/academy/classrooms)
"gf" = (/obj/structure/bed/chair,/turf/simulated/floor{icon_state = "white"},/area/awaymission/academy/classrooms)
"gg" = (/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/wood,/area/awaymission/academy/classrooms)
"gh" = (/turf/simulated/floor{icon_state = "grimy"},/area/awaymission/academy/academyaft)
"gi" = (/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/awaymission/academy/classrooms)
"gj" = (/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/awaymission/academy/classrooms)
"gk" = (/obj/structure/bed/chair,/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/awaymission/academy/classrooms)
"gl" = (/obj/structure/window/reinforced,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/awaymission/academy/classrooms)
"gm" = (/obj/structure/table/reinforced,/obj/machinery/light{dir = 1},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/awaymission/academy/classrooms)
"gn" = (/obj/item/target,/turf/simulated/floor,/area/awaymission/academy/classrooms)
"go" = (/obj/structure/target_stake,/turf/simulated/floor,/area/awaymission/academy/classrooms)
"gp" = (/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating,/area/awaymission/academy/classrooms)
"gq" = (/obj/effect/landmark{name = "awaystart"},/turf/simulated/floor/plating,/area/awaymission/academy/classrooms)
"gr" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; health = 1e+007},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plating,/area/awaymission/academy/classrooms)
"gs" = (/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/awaymission/academy/classrooms)
"gt" = (/obj/structure/table,/obj/item/weapon/pen/red,/turf/simulated/floor,/area/awaymission/academy/classrooms)
"gu" = (/obj/structure/table,/obj/item/weapon/scalpel,/turf/simulated/floor{icon_state = "whitehall"; dir = 4},/area/awaymission/academy/classrooms)
"gv" = (/obj/structure/bed/chair/wood,/turf/simulated/floor/wood,/area/awaymission/academy/classrooms)
"gw" = (/obj/structure/bookcase,/obj/item/weapon/book/manual/engineering_hacking,/turf/simulated/floor/wood,/area/awaymission/academy/classrooms)
"gx" = (/obj/structure/bookcase,/turf/simulated/floor/wood,/area/awaymission/academy/classrooms)
"gy" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor{icon_state = "grimy"},/area/awaymission/academy/academyaft)
"gz" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/carpet,/area/awaymission/academy/academyaft)
"gA" = (/turf/simulated/floor{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/academy/classrooms)
"gB" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/recharger,/obj/structure/table/reinforced,/turf/simulated/floor{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/academy/classrooms)
"gC" = (/obj/structure/table/reinforced,/obj/item/weapon/pen/red,/turf/simulated/floor{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/academy/classrooms)
"gD" = (/obj/structure/filingcabinet/filingcabinet,/turf/simulated/floor{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/academy/classrooms)
"gE" = (/obj/machinery/door/window{dir = 4},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/awaymission/academy/classrooms)
"gF" = (/obj/item/weapon/storage/box/monkeycubes,/turf/simulated/floor/plating,/area/awaymission/academy/classrooms)
"gG" = (/obj/machinery/door/window{dir = 4},/obj/machinery/door/window{dir = 8},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plating,/area/awaymission/academy/classrooms)
"gH" = (/obj/structure/table,/turf/simulated/floor,/area/awaymission/academy/classrooms)
"gI" = (/turf/simulated/floor{icon_state = "whitehall"; dir = 4},/area/awaymission/academy/classrooms)
"gJ" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/academy/classrooms)
"gK" = (/obj/abstract/map/spawner/mobs/humanoid/wiz,/turf/simulated/floor{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/academy/classrooms)
"gL" = (/obj/structure/table/reinforced,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/awaymission/academy/classrooms)
"gM" = (/obj/structure/target_stake,/obj/machinery/light,/turf/simulated/floor,/area/awaymission/academy/classrooms)
"gN" = (/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/awaymission/academy/classrooms)
"gO" = (/obj/machinery/light{dir = 4},/turf/simulated/floor{icon_state = "whitehall"; dir = 4},/area/awaymission/academy/classrooms)
"gP" = (/obj/structure/bookcase,/obj/item/weapon/book/manual/medical_cloning,/turf/simulated/floor/wood,/area/awaymission/academy/classrooms)
"gQ" = (/obj/machinery/light{dir = 4},/turf/simulated/floor{icon_state = "grimy"},/area/awaymission/academy/academyaft)
"gR" = (/obj/machinery/light{dir = 8},/turf/simulated/floor{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/academy/classrooms)
"gS" = (/obj/machinery/door/window{dir = 4},/obj/item/ammo_casing,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/awaymission/academy/classrooms)
"gT" = (/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/awaymission/academy/classrooms)
"gU" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor/carpet,/area/awaymission/academy/academyaft)
"gV" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/carpet,/area/awaymission/academy/academyaft)
"gW" = (/obj/structure/table,/obj/item/weapon/gun/projectile/shotgun/pump/sc_pump,/obj/item/weapon/paper{info = "Grade: A+ Educator's Notes: Excellent form."; name = "Summoning Midterm Exam"},/turf/simulated/floor{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/academy/classrooms)
"gX" = (/obj/structure/table,/obj/item/weapon/gun/projectile/russian,/obj/item/weapon/paper{info = "Grade: B- Educator's Notes: Keep applying yourself, you're showing improvement."; name = "Summoning Midterm Exam"},/turf/simulated/floor{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/academy/classrooms)
"gY" = (/obj/structure/table,/turf/simulated/floor{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/academy/classrooms)
"gZ" = (/obj/structure/window/reinforced,/obj/item/ammo_casing,/turf/simulated/floor{icon_state = "delivery"; name = "floor"},/area/awaymission/academy/classrooms)
"ha" = (/mob/living/simple_animal/hostile/bear,/turf/simulated/floor/plating,/area/awaymission/academy/classrooms)
"hb" = (/obj/structure/bookcase,/obj/item/weapon/book/manual/hydroponics_pod_people,/turf/simulated/floor/wood,/area/awaymission/academy/classrooms)
"hc" = (/obj/structure/bookcase,/obj/item/weapon/book/manual/barman_recipes,/obj/item/weapon/book/manual/security_space_law,/obj/item/weapon/book/manual/security_space_law,/turf/simulated/floor/wood,/area/awaymission/academy/classrooms)
"hd" = (/obj/machinery/light{dir = 8},/turf/simulated/floor{icon_state = "grimy"},/area/awaymission/academy/academyaft)
"he" = (/obj/item/weapon/stool,/turf/simulated/floor{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/academy/classrooms)
"hf" = (/obj/machinery/light,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/awaymission/academy/classrooms)
"hg" = (/obj/machinery/light/small{dir = 8},/mob/living/simple_animal/hostile/bear,/turf/simulated/floor/plating,/area/awaymission/academy/classrooms)
"hh" = (/obj/machinery/door/mineral/iron,/turf/simulated/floor/carpet,/area/awaymission/academy/classrooms)
"hi" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/carpet,/area/awaymission/academy/academyaft)
"hj" = (/obj/machinery/door/airlock/gold{locked = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/carpet,/area/awaymission/academy/classrooms)
"hk" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/academy/classrooms)
"hl" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/academy/classrooms)
"hm" = (/obj/structure/table,/obj/item/weapon/gun/energy/floragun,/obj/item/weapon/paper{info = "Grade: D- Educator's Notes: SEE ME AFTER CLASS."; name = "Summoning Midterm Exam"},/turf/simulated/floor{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/academy/classrooms)
"hn" = (/obj/structure/closet/crate,/obj/item/stack/sheet/glass,/obj/item/target,/obj/item/target,/turf/simulated/floor,/area/awaymission/academy/classrooms)
"ho" = (/obj/machinery/shieldwallgen,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/awaymission/academy/classrooms)
"hp" = (/turf/simulated/floor{icon_state = "whitehall"; dir = 2},/area/awaymission/academy/classrooms)
"hq" = (/obj/item/weapon/stool,/turf/simulated/floor{icon_state = "whitehall"; dir = 2},/area/awaymission/academy/classrooms)
"hr" = (/obj/machinery/light,/turf/simulated/floor{icon_state = "whitehall"; dir = 2},/area/awaymission/academy/classrooms)
"hs" = (/obj/machinery/light,/turf/simulated/floor/wood,/area/awaymission/academy/classrooms)
"ht" = (/turf/simulated/wall/r_wall,/area/awaymission/academy/academyaft)
"hu" = (/obj/machinery/door/mineral/wood,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/carpet,/area/awaymission/academy/academyaft)
"hv" = (/obj/machinery/door/mineral/wood,/turf/simulated/floor/carpet,/area/awaymission/academy/academyaft)
"hw" = (/turf/simulated/floor/plating,/area/awaymission/academy/academyaft)
"hx" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating,/area/awaymission/academy/academyaft)
"hy" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor/plating,/area/awaymission/academy/academyaft)
"hz" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor{icon_state = "hydrofloor"},/area/awaymission/academy/academyaft)
"hA" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor{icon_state = "hydrofloor"},/area/awaymission/academy/academyaft)
"hB" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor{icon_state = "hydrofloor"},/area/awaymission/academy/academyaft)
"hC" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/apc{dir = 1; environ = 3; equipment = 3; locked = 0; req_access = ""},/turf/simulated/floor,/area/awaymission/academy/academyaft)
"hD" = (/obj/structure/grille,/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor/plating,/area/awaymission/academy/academyaft)
"hE" = (/turf/simulated/floor{icon_state = "green"; dir = 8},/area/awaymission/academy/academyaft)
"hF" = (/turf/simulated/floor,/area/awaymission/academy/academyaft)
"hG" = (/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/awaymission/academy/academyaft)
"hH" = (/turf/simulated/floor{tag = "icon-green (EAST)"; icon_state = "green"; dir = 4},/area/awaymission/academy/academyaft)
"hI" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/carpet,/area/awaymission/academy/academyaft)
"hJ" = (/obj/item/weapon/crowbar/red,/turf/simulated/floor{tag = "icon-green (EAST)"; icon_state = "green"; dir = 4},/area/awaymission/academy/academyaft)
"hK" = (/turf/simulated/floor{icon_state = "hydrofloor"},/area/awaymission/academy/academyaft)
"hL" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/awaymission/academy/academyaft)
"hM" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor{icon_state = "hydrofloor"},/area/awaymission/academy/academyaft)
"hN" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor,/area/awaymission/academy/academyaft)
"hO" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/plating,/area/awaymission/academy/academyaft)
"hP" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/awaymission/academy/academyaft)
"hQ" = (/obj/machinery/light{dir = 8},/turf/simulated/floor/plating,/area/awaymission/academy/academyaft)
"hR" = (/obj/machinery/power/battery/smes/infinite,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plating,/area/awaymission/academy/academyaft)
"hS" = (/obj/machinery/power/terminal{dir = 8},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor/plating,/area/awaymission/academy/academyaft)
"hT" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor{icon_state = "hydrofloor"},/area/awaymission/academy/academyaft)
"hU" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{icon_state = "hydrofloor"},/area/awaymission/academy/academyaft)
"hV" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor{icon_state = "hydrofloor"},/area/awaymission/academy/academyaft)
"hW" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/door/airlock/maintenance_hatch,/turf/simulated/floor/plating,/area/awaymission/academy/academyaft)
"hX" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating,/area/awaymission/academy/academyaft)
"hY" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor{icon_state = "green"; dir = 8},/area/awaymission/academy/academyaft)
"hZ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor,/area/awaymission/academy/academyaft)
"ia" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor{tag = "icon-green (EAST)"; icon_state = "green"; dir = 4},/area/awaymission/academy/academyaft)
"ib" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/carpet,/area/awaymission/academy/academyaft)
"ic" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/carpet,/area/awaymission/academy/academyaft)
"id" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/item/weapon/caution,/turf/simulated/floor{tag = "icon-green (EAST)"; icon_state = "green"; dir = 4},/area/awaymission/academy/academyaft)
"ie" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating,/area/awaymission/academy/academyaft)
"if" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor{icon_state = "hydrofloor"},/area/awaymission/academy/academyaft)
"ig" = (/obj/machinery/constructable_frame/machine_frame,/turf/simulated/floor/plating,/area/awaymission/academy/academyaft)
"ih" = (/obj/machinery/light{dir = 4},/turf/simulated/floor/plating,/area/awaymission/academy/academyaft)
"ii" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/plating,/area/awaymission/academy/academyaft)
"ij" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor{icon_state = "hydrofloor"},/area/awaymission/academy/academyaft)
"ik" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor{icon_state = "hydrofloor"},/area/awaymission/academy/academyaft)
"il" = (/obj/structure/grille,/obj/structure/cable,/turf/simulated/floor/plating,/area/awaymission/academy/academyaft)
"im" = (/obj/structure/closet,/obj/item/candle,/obj/item/candle,/obj/item/weapon/storage/fancy/matchbox,/turf/simulated/floor,/area/awaymission/academy/academyaft)
"in" = (/obj/structure/closet,/obj/item/weapon/storage/belt/soulstone,/obj/item/clothing/under/schoolgirl,/turf/simulated/floor,/area/awaymission/academy/academyaft)
"io" = (/obj/structure/closet,/obj/item/clothing/under/blackskirt,/obj/item/clothing/glasses/regular,/turf/simulated/floor,/area/awaymission/academy/academyaft)
"ip" = (/obj/structure/closet,/obj/item/clothing/under/lightpurple,/obj/item/clothing/shoes/sandal,/turf/simulated/floor,/area/awaymission/academy/academyaft)
"iq" = (/obj/structure/closet,/obj/item/weapon/lipstick/random,/obj/item/clothing/under/schoolgirl,/turf/simulated/floor,/area/awaymission/academy/academyaft)
"ir" = (/turf/simulated/floor/wood,/area/awaymission/academy/academyaft)
"is" = (/obj/structure/closet,/obj/item/clothing/under/lightpurple,/obj/item/weapon/staff,/turf/simulated/floor,/area/awaymission/academy/academyaft)
"it" = (/obj/structure/closet,/obj/item/weapon/storage/wallet/random,/obj/item/clothing/glasses/regular/hipster,/turf/simulated/floor,/area/awaymission/academy/academyaft)
"iu" = (/obj/structure/closet,/obj/item/clothing/head/wizard/fake,/obj/item/clothing/suit/wizrobe/fake,/turf/simulated/floor,/area/awaymission/academy/academyaft)
"iv" = (/obj/structure/closet,/obj/item/weapon/reagent_containers/food/drinks/beer,/obj/item/clothing/under/purple,/obj/item/mounted/poster,/turf/simulated/floor,/area/awaymission/academy/academyaft)
"iw" = (/obj/structure/closet,/obj/item/weapon/storage/box/snappops,/obj/item/weapon/storage/backpack,/obj/item/weapon/paper{info = "Current Grade: F. Educator's Notes: No improvement shown despite multiple private lessons. Suggest additional tutilage."; name = "Pyromancy Evaluation"},/turf/simulated/floor,/area/awaymission/academy/academyaft)
"ix" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor{icon_state = "hydrofloor"},/area/awaymission/academy/academyaft)
"iy" = (/obj/effect/decal/cleanable/blood/oil,/turf/simulated/floor,/area/awaymission/academy/academyaft)
"iz" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/power/battery/smes/infinite,/turf/simulated/floor/plating,/area/awaymission/academy/academyaft)
"iA" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor,/area/awaymission/academy/academyaft)
"iB" = (/obj/structure/rack,/turf/simulated/floor{icon_state = "hydrofloor"},/area/awaymission/academy/academyaft)
"iC" = (/turf/simulated/floor/grass,/area/awaymission/academy/academyaft)
"iD" = (/obj/structure/rack,/obj/item/weapon/circuitboard/telecomms/broadcaster,/obj/item/weapon/circuitboard/telecomms/receiver,/obj/item/weapon/circuitboard/telecomms/relay,/turf/simulated/floor{icon_state = "hydrofloor"},/area/awaymission/academy/academyaft)
"iE" = (/obj/abstract/map/spawner/mobs/humanoid/wiz,/turf/simulated/floor{icon_state = "hydrofloor"},/area/awaymission/academy/academyaft)
"iF" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor,/area/awaymission/academy/academyaft)
"iG" = (/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/awaymission/academy/academyaft)
"iH" = (/obj/structure/mirror{pixel_y = 28},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/awaymission/academy/academyaft)
"iI" = (/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/awaymission/academy/academyaft)
"iJ" = (/obj/structure/rack,/obj/item/weapon/stock_parts/manipulator,/obj/item/weapon/stock_parts/manipulator,/obj/item/weapon/stock_parts/subspace/crystal,/obj/item/weapon/stock_parts/subspace/filter,/obj/item/weapon/stock_parts/micro_laser/high,/obj/item/weapon/stock_parts/micro_laser/high,/turf/simulated/floor,/area/awaymission/academy/academyaft)
"iK" = (/obj/machinery/power/battery/smes/infinite,/obj/structure/cable,/turf/simulated/floor/plating,/area/awaymission/academy/academyaft)
"iL" = (/obj/structure/rack,/obj/item/clothing/glasses/welding,/turf/simulated/floor,/area/awaymission/academy/academyaft)
"iM" = (/obj/machinery/door/mineral/iron,/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/awaymission/academy/academyaft)
"iN" = (/obj/structure/rack,/obj/item/weapon/stock_parts/scanning_module,/obj/item/weapon/stock_parts/micro_laser,/obj/item/weapon/stock_parts/subspace/filter,/obj/item/weapon/stock_parts/subspace/ansible,/turf/simulated/floor,/area/awaymission/academy/academyaft)
"iO" = (/obj/item/weapon/stock_parts/manipulator,/turf/simulated/floor{icon_state = "hydrofloor"},/area/awaymission/academy/academyaft)
"iP" = (/obj/structure/rack,/obj/item/weapon/storage/toolbox/mechanical,/turf/simulated/floor,/area/awaymission/academy/academyaft)
"iQ" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/awaymission/academy/academyaft)
"iR" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/awaymission/academy/academyaft)
"iS" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/wood,/area/awaymission/academy/academyaft)
"iT" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/wood,/area/awaymission/academy/academyaft)
"iU" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/awaymission/academy/academyaft)
"iV" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/awaymission/academy/academyaft)
"iW" = (/obj/structure/rack,/obj/item/weapon/stock_parts/manipulator,/obj/item/weapon/stock_parts/subspace/filter,/turf/simulated/floor{icon_state = "hydrofloor"},/area/awaymission/academy/academyaft)
"iX" = (/obj/structure/toilet{dir = 8},/obj/machinery/light/small{dir = 1},/obj/effect/landmark{name = "awaystart"},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/awaymission/academy/academyaft)
"iY" = (/obj/structure/toilet{dir = 4},/obj/machinery/light/small{dir = 1},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/awaymission/academy/academyaft)
"iZ" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/structure/rack,/obj/item/stack/sheet/metal,/turf/simulated/floor{icon_state = "hydrofloor"},/area/awaymission/academy/academyaft)
"ja" = (/obj/machinery/light{dir = 8},/turf/simulated/floor{icon_state = "hydrofloor"},/area/awaymission/academy/academyaft)
"jb" = (/obj/machinery/light{dir = 4},/turf/simulated/floor{icon_state = "hydrofloor"},/area/awaymission/academy/academyaft)
"jc" = (/obj/structure/toilet{dir = 8},/obj/machinery/light/small{dir = 1},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/awaymission/academy/academyaft)
"jd" = (/obj/item/weapon/paper,/turf/simulated/floor/wood,/area/awaymission/academy/academyaft)
"je" = (/obj/item/stack/cable_coil/random,/turf/simulated/floor,/area/awaymission/academy/academyaft)
"jf" = (/obj/machinery/door/airlock/maintenance_hatch,/turf/simulated/floor/plating,/area/awaymission/academy/academyaft)
"jg" = (/obj/item/device/multitool,/turf/simulated/floor/engine,/area/awaymission/academy/academyaft)
"jh" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/engine,/area/awaymission/academy/academyaft)
"ji" = (/turf/simulated/floor/engine,/area/awaymission/academy/academyaft)
"jj" = (/obj/structure/toilet{dir = 8},/obj/machinery/light/small{dir = 1},/obj/effect/decal/cleanable/vomit,/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/awaymission/academy/academyaft)
"jk" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/wood,/area/awaymission/academy/academyaft)
"jl" = (/obj/structure/toilet{dir = 4},/obj/machinery/light/small{dir = 1},/obj/effect/landmark{name = "awaystart"},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/awaymission/academy/academyaft)
"jm" = (/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor/engine,/area/awaymission/academy/academyaft)
"jn" = (/obj/structure/shuttle/engine/heater,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/awaymission/academy/academyaft)
"jo" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/table,/obj/item/weapon/beach_ball/holoball,/turf/simulated/floor{icon_state = "red"; dir = 1},/area/awaymission/academy/academyaft)
"jp" = (/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor{icon_state = "red"; dir = 5},/area/awaymission/academy/academyaft)
"jq" = (/obj/structure/grille,/obj/structure/window/reinforced/plasma{dir = 1},/obj/structure/window/reinforced/plasma{dir = 8},/obj/structure/window/reinforced/plasma{dir = 4},/obj/structure/window/full/reinforced/tinted,/turf/simulated/floor/plating,/area/awaymission/academy/academyaft)
"jr" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor/carpet,/area/awaymission/academy/academyaft)
"js" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/airless{tag = "icon-white (EAST)"; icon_state = "white"; dir = 4},/area/awaymission/academy/academyaft)
"jt" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/table,/obj/item/device/soulstone,/turf/simulated/floor/airless{tag = "icon-whitered (EAST)"; icon_state = "whitered"; dir = 4},/area/awaymission/academy/academyaft)
"ju" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion_l"; icon_state = "propulsion_l"},/turf/space,/area/awaymission/academy/academyaft)
"jv" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion_r"; icon_state = "propulsion_r"},/turf/space,/area/awaymission/academy/academyaft)
"jw" = (/obj/structure/grille,/obj/structure/window/reinforced/plasma,/obj/structure/window/reinforced/plasma{dir = 1},/obj/structure/window/reinforced/plasma{dir = 8},/obj/structure/window/reinforced/plasma{dir = 4},/obj/structure/window/full/reinforced/tinted,/turf/simulated/floor/plating,/area/awaymission/academy/academyaft)
"jx" = (/turf/simulated/floor{icon_state = "red"; dir = 4},/area/awaymission/academy/academyaft)
"jy" = (/obj/structure/grille,/obj/structure/window/reinforced/plasma{dir = 8},/obj/structure/window/reinforced/plasma{dir = 4},/obj/structure/window/full/reinforced/tinted,/turf/simulated/floor/plating,/area/awaymission/academy/academyaft)
"jz" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/airless{tag = "icon-white (EAST)"; icon_state = "white"; dir = 4},/area/awaymission/academy/academyaft)
"jA" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/turf/simulated/floor/airless{tag = "icon-whitered (EAST)"; icon_state = "whitered"; dir = 4},/area/awaymission/academy/academyaft)
"jB" = (/obj/structure/table,/obj/item/clothing/glasses/scanner/meson/truesight,/obj/machinery/light/small{dir = 8},/turf/simulated/floor,/area/awaymission/academy/academyaft)
"jC" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/carpet,/area/awaymission/academy/academyaft)
"jD" = (/obj/structure/noticeboard,/turf/simulated/wall,/area/awaymission/academy/academyaft)
"jE" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/carpet,/area/awaymission/academy/academyaft)
"jF" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/airless{tag = "icon-white (EAST)"; icon_state = "white"; dir = 4},/area/awaymission/academy/academyaft)
"jG" = (/obj/structure/table,/obj/item/organ/internal/brain{name = "The preserved brain of Harry Houdini"},/obj/machinery/light/small{dir = 4},/turf/simulated/floor/airless{tag = "icon-whitered (EAST)"; icon_state = "whitered"; dir = 4},/area/awaymission/academy/academyaft)
"jH" = (/turf/simulated/floor{dir = 8; icon_state = "yellow"},/area/awaymission/academy/academyaft)
"jI" = (/turf/simulated/floor{dir = 4; icon_state = "yellow"},/area/awaymission/academy/academyaft)
"jJ" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/airless{tag = "icon-white (EAST)"; icon_state = "white"; dir = 4},/area/awaymission/academy/academyaft)
"jK" = (/obj/structure/grille,/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/item/weapon/shard,/obj/item/weapon/shard/plasma,/turf/simulated/floor/plating/airless,/area/awaymission/academy/academyaft)
"jL" = (/obj/structure/window/reinforced,/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/golden_cup,/turf/simulated/floor{icon_state = "red"},/area/awaymission/academy/academyaft)
"jM" = (/obj/structure/window/reinforced,/turf/simulated/floor{icon_state = "red"; dir = 6},/area/awaymission/academy/academyaft)
"jN" = (/obj/structure/cult/pylon,/turf/simulated/floor{icon_state = "yellow"; dir = 10},/area/awaymission/academy/academyaft)
"jO" = (/turf/simulated/floor{icon_state = "yellow"},/area/awaymission/academy/academyaft)
"jP" = (/obj/structure/cult/pylon,/turf/simulated/floor{dir = 6; icon_state = "yellow"},/area/awaymission/academy/academyaft)
"jQ" = (/obj/structure/window/reinforced,/turf/simulated/floor/airless{tag = "icon-white (EAST)"; icon_state = "white"; dir = 4},/area/awaymission/academy/academyaft)
"jR" = (/obj/structure/table,/obj/structure/window/reinforced,/obj/item/device/batterer,/turf/simulated/floor/airless{tag = "icon-whitered (EAST)"; icon_state = "whitered"; dir = 4},/area/awaymission/academy/academyaft)
"jS" = (/obj/item/weapon/shard{icon_state = "medium"},/obj/item/weapon/shard/plasma,/turf/space,/area)
"jT" = (/obj/machinery/igniter,/turf/simulated/floor/plating,/area/awaymission/academy/academyaft)
"jU" = (/obj/structure/window/reinforced,/turf/simulated/floor/carpet,/area/awaymission/academy/academyaft)
"jV" = (/obj/structure/grille,/obj/structure/window/reinforced/plasma,/obj/structure/window/reinforced/plasma{dir = 8},/obj/structure/window/reinforced/plasma{dir = 4},/obj/structure/window/full/reinforced/tinted,/turf/simulated/floor/plating,/area/awaymission/academy/academyaft)
"jW" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/carpet,/area/awaymission/academy/academyaft)
"jX" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/carpet,/area/awaymission/academy/academyaft)
"jY" = (/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/carpet,/area/awaymission/academy/academyaft)
"jZ" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/carpet,/area/awaymission/academy/academyaft)
"ka" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/carpet,/area/awaymission/academy/academyaft)
"kb" = (/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/carpet,/area/awaymission/academy/academyaft)
"kc" = (/turf/simulated/floor{dir = 9; icon_state = "yellow"},/area/awaymission/academy/academyaft)
"kd" = (/obj/machinery/light,/turf/simulated/floor{dir = 5; icon_state = "yellow"},/area/awaymission/academy/academyaft)
"ke" = (/obj/machinery/light,/turf/simulated/floor{dir = 9; icon_state = "yellow"},/area/awaymission/academy/academyaft)
"kf" = (/turf/simulated/floor{dir = 5; icon_state = "yellow"},/area/awaymission/academy/academyaft)
"kg" = (/obj/machinery/door/airlock/hatch,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/carpet,/area/awaymission/academy/academyaft)
"kh" = (/obj/machinery/door/airlock/hatch,/turf/simulated/floor/carpet,/area/awaymission/academy/academyaft)
"ki" = (/turf/simulated/wall/r_wall,/area/awaymission/academy/academygate)
"kj" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/grass,/area/awaymission/academy/academygate)
"kk" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/carpet,/area/awaymission/academy/academygate)
"kl" = (/turf/simulated/floor/grass,/area/awaymission/academy/academygate)
"km" = (/turf/simulated/floor/carpet,/area/awaymission/academy/academygate)
"kn" = (/obj/structure/grille,/obj/structure/window/reinforced/plasma{dir = 1},/obj/structure/window/reinforced/plasma{dir = 8},/obj/structure/window/reinforced/plasma{dir = 4},/obj/structure/window/full/reinforced/tinted,/turf/simulated/floor/plating,/area/awaymission/academy/academygate)
"ko" = (/obj/structure/grille,/obj/structure/window/reinforced/plasma{dir = 8},/obj/structure/window/reinforced/plasma{dir = 4},/obj/structure/window/full/reinforced/tinted,/turf/simulated/floor/plating,/area/awaymission/academy/academygate)
"kp" = (/obj/structure/grille,/obj/structure/window/reinforced/plasma,/obj/structure/window/reinforced/plasma{dir = 8},/obj/structure/window/reinforced/plasma{dir = 4},/obj/structure/window/full/reinforced/tinted,/turf/simulated/floor/plating,/area/awaymission/academy/academygate)
"kq" = (/obj/structure/window/reinforced,/turf/simulated/floor/grass,/area/awaymission/academy/academygate)
"kr" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/window{dir = 2},/turf/simulated/floor/carpet,/area/awaymission/academy/academygate)
"ks" = (/obj/machinery/door/window{dir = 2},/turf/simulated/floor/carpet,/area/awaymission/academy/academygate)
"kt" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/carpet,/area/awaymission/academy/academygate)
"ku" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/carpet,/area/awaymission/academy/academygate)
"kv" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/carpet,/area/awaymission/academy/academygate)
"kw" = (/obj/structure/cable,/turf/simulated/floor/plating,/area/awaymission/academy/academygate)
"kx" = (/turf/simulated/floor/plating,/area/awaymission/academy/academygate)
"ky" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/carpet,/area/awaymission/academy/academygate)
"kz" = (/obj/machinery/power/apc{dir = 1; environ = 3; equipment = 3; locked = 0; req_access = ""},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/carpet,/area/awaymission/academy/academygate)
"kA" = (/obj/item/stack/cable_coil/random,/turf/simulated/floor/plating,/area/awaymission/academy/academygate)
"kB" = (/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor/plating,/area/awaymission/academy/academygate)
"kC" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/awaymission/academy/academygate)
"kD" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/carpet,/area/awaymission/academy/academygate)
"kE" = (/obj/machinery/gateway{dir = 9},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/plating,/area/awaymission/academy/academygate)
"kF" = (/obj/machinery/gateway{dir = 1},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/plating,/area/awaymission/academy/academygate)
"kG" = (/obj/machinery/gateway{dir = 5},/turf/simulated/floor/plating,/area/awaymission/academy/academygate)
"kH" = (/obj/machinery/gateway{dir = 8},/turf/simulated/floor/plating,/area/awaymission/academy/academygate)
"kI" = (/obj/structure/cable,/obj/machinery/gateway/centeraway{calibrated = 0},/turf/simulated/floor/plating,/area/awaymission/academy/academygate)
"kJ" = (/obj/machinery/gateway{dir = 4},/turf/simulated/floor/plating,/area/awaymission/academy/academygate)
"kK" = (/obj/machinery/gateway{dir = 10},/turf/simulated/floor/plating,/area/awaymission/academy/academygate)
"kL" = (/obj/machinery/gateway,/turf/simulated/floor/plating,/area/awaymission/academy/academygate)
"kM" = (/obj/machinery/gateway{dir = 6},/turf/simulated/floor/plating,/area/awaymission/academy/academygate)
"kN" = (/obj/machinery/light,/turf/simulated/floor/carpet,/area/awaymission/academy/academygate)
"kO" = (/obj/machinery/door_control{id_tag = "AcademyGate"; pixel_y = -24},/turf/simulated/floor/carpet{icon_state = "carpetsymbol"},/area/awaymission/academy/academygate)
"kP" = (/turf/simulated/floor/carpet{icon_state = "carpetsymbol"},/area/awaymission/academy/academygate)
"kQ" = (/obj/machinery/door/poddoor/shutters{id_tag = "AcademyGate"},/turf/simulated/floor/plating{dir = 2; icon_state = "warnplate"},/area/awaymission/academy/academygate)
(1,1,1) = {"
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabacadadadadadadaeabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababafagahagagaiagajababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababakajalajajajalajajamababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanaoajapajajaqarasasatauavanaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaawaxajajayayazayayayaAaBaCawaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaawagaDajayaEaFaGaHayauaDagawaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaawaIajaJayaKaLaMaLayaNajaoawaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaawagaDajayaOaPaLaQayauaDagawaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaawaRajajayayayayayayauajaoawaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaSaTajajajajaUajaqasaBajahaSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababakajajajajajauajajaVababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWababababaXababaYababababaWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZaZaZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWabbabbaLajaLaLauaLbbayabaWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZaZaZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWabaLaLaLajaLbcaBaLaLaLabaWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWbdaLajajajbeauajajajbfbdaWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWabbgajajbhbibjbkajajblabaWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZaZaZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWaWabbmajbnbobpbqbrajajbsabaWaWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZaZaZaZaaaaaaaaaaaZaZaZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWaWaabdaLajajajajbtbuajajbvbdaaaWaWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZaZaZaZaaaaaaaaaZaZaZaZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWabaWaWabaLbwaLaLajauaLaLbwbxabaWaWabaWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZaZaZaZaZaaaaaZaZaZaZaZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWaWaWaaaaabayayayaybybzayayayayabaaaaaWaWaWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZaZaZaaaaaaaZaZaZaZaZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaWaWaaaWaaaaabbAbAbAbAajaubAbAbAbAabaaaaaWaaaWaWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZaZaZaZaZaaaaaaaaaaaaaaaaaabBbCbDbEbEbFbCbBbBbBbBbBbBbBbBbBbBabbAbGbHbAajaubAbGbHbAababababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZaZaZaZaaaaaaaaaaaaaaaaaabBbBbIbJbKbKbLbIbMbNbObPbPbPbPbPbPbQaybRbSbTbAajaubAbSbTbUaybVbWbXbYbZancacbababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZaZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabBccbIbKbKbKbKcdbIbNcecfcgchchcichceaybAcjckbAajaubAbAbAbAabclcmclayayawcncocpabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZaZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabBcqbIbKcrbKbKbIbIbNcechchchcfchchceaybAbAbAbAajauajajajajcsctcucvaycwaScncacxabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabBcycdbKbKbKbKbIczbNcAchchchchchchcAaybAcBcBbAajaucCajcCajabclcmclcDcEcFcncbcGabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabBcHbIbKbKbKcIbIbIbNcJcKchchchchchcLaybAcMcMbAajcNasasasascsbXcOctcPayancncacxabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabBcQbIbKbKcRbKbIcdbNcScTcTcTcTcTcTcUaybAcVbAbAajaubAbAbAbAabclctclctclawcocncpabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabBcWbIcXbKbKcYbIcdbNcZdadadadadadadbaybAbGbHbAajaubAbGbHbAaydcclctdddeaScncbababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabBdfdgdhdhdhdhdibIbNdjdjdjdjdjdjdjdjaybAbSbTbAajaubAbSbTbAayayayayayayayayayabbBbBbBbBbBbBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabBdkdkdkcdcdbIcWbIbNdjdjdldjdldjdmdjaybRbAbAbAajaubAbAbAdnaydodpdqdrdpdpdpdqdpdsbNdtdtdubBbBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabBdvbIdwcdbIbIcWdxbNdjdjdydzdydjdydjayaLaLaLaLajauaLaLaLaLaydAdBdCbIdBdDbIbIbIdEbNdtdtdtdtbBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabBdFdGdHdgdgdgdIczbNdjdjdjdjdldjdldjayaLdJdJaLajauaLdJdJaLaydAbIbIbIbIbIbIdKdLdEdMdtdtdtdNbBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabBdObIdPcdbIbIcWbIbNdjdjdjdjdydjdydjayaLdJdJaLajauaLdJdJaLaydAdBdDbIdBdQbIdRdSdEbNdTdtdtdtbBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabBdkdkdkbIcdbIcWbIbNdUdjdjdjdjdjdjdVayaLdJdJaLajauaLdJdJaLaydAbIbIbIbIbIbIdWdXdYdZeaebdtecbBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabBbBbBbBbNbNbNedeebNbNbNefefbNbNbNbNbNayayayayayajauayayayayaydAdBdDbIbIegbIbIehdEbNeiejdtecbBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabBekelbBemeneoepeqereseteueueueueueveueseueueueuewexeueueueybNezeAeBeAeAeAbIbIeCeDbNeiejdteEbBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabBeFeFbBeGeHeIepeqeueueueueueueueueJeueueueueueueueJeueueueubNbNbNbNbNbNbNeKeKbNbNbNbNeLbNbBbBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeMeNbKbKeObIePbIbIeqeuewewewewewewewexewewewewewewewexeweweweubNeQeQeQeReSeQeQeQeQeTeUeUeVeUbBbBaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeWbBbKbKeFeXeYeXeZeqeuewfafbewfafbewfcfbewfafbewfafbexfafbeweubNeQeQeQfdeQeQeQeQeQeTeUeUeVfebBaWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeWbBbKbKeFfffgfffheqeuewfifjewfifjewfkfjewfifjewfifjexfifjeweufleQeQeQfmeQfneQeQeQeTeUeUeVfobBaWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaafpeNbKbKeObIfqbIbIeqeuewewewewewewewexewewewfrfsfsfsftfsfsfsfufvfwfwfwfwfwfxfwfwfwfyfzfzfAfBbBaWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabBeFeFbBfCeHfDepeqeueueueueueueueueJeueueueJeueueueueueueueubNeQfEfFfGeQfmeQeQeQeTeUeUeUfHbBaWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabBfIelbBfJfKfLepfMfNfufufufufOeueufPfufQfufReweueueweweueueybNeQeQeQeQfSeQeQeQeQeTeUeUeUbBbBaWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabBbBbBbBbBbBbNedeebNbNbNbNbNfTfUfUfVbNbNfWfXfYfWfWfYfYfWbNbNbNbNbNbNbNbNbNbNbNbNbNbNbNbBbBaWaWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabBfZbKbKgagbgcgdgegegfbNggdjdjdjdjdjbNghfXfYghghfYfYghbNgigjgkgigicSglgmgnbIbIbIgobBbBaWaaaWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabBgpgqbKgrgsbIbIbIgtgubNdjgvdjgwgxdjgagygzfYghghfYfYghbNgAgBgCgDgAcSbIgEbIbIbIbIbBbBaWaWaaaWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZaZaaaaaaaaaaaaaaaaaaaaaabBgFbKbKgGgsbIgHbIbIgIbNdjdldzdjdjdjgrghfYfYghghfYfYghbNgAgJgAgAgKcSglgLbIbIgMbBbBaWaaaWaaaWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZaZaZaZaZaaaaaaaaaaaaaaaaaabBgNgNgNgrgsbIdBbIbIgObNdUdydjgxgPdjgrghfYfYghghfYfYgQbNgRgJgAgAgAcSbIgSbIbIbBbBaWaaaaaWaaaWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZaZaZaZaZaaaaaaaaaaaaaaaaaabBgTgTgTgrgsbIgHbIgHgIbNdjgvdjdjdjdjfTgygUgVghghfYfYghbNgAgJgWgXgYcSgZgLgobBbBaWaaaaaaaWaaaWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZaZaZaZaaaaaaaaaaaaaaaaaaaabBbKhabKgGgsbIdBbIdBgIbNdjdldjhbhcdjbNhdfYfXghghfYfYghbNgAgJhehehecSbIhfbBbBaWaaaaaaaaaWaaaWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZaZaaaaaaaaaaaaaaaaaaaaaabBhgbKbKgrgsbIgHbIgHgIbNdjdydjdjdjdjhhfYfYhigygygUgUgUhjhkhlgYgYhmcShnbBbBaWaaaaaaaaaaaWaaaWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabBbKbKhafThohphqhrhqdtbNdjdjdjhsdjdjbNghfYfXghghfYfYghbNgAgAhehehecSbBbBaWaaaaaaaaaaaaaWaaaWaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahthththththththththththtfWfWfWfWfWfWfWfWfWhufWfWhvfWfWfWfWfWfWfWfWfWhthththththththththththtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahthwhxhyhyhzhAhBhChthDhthEhFhFhGhFhFhHfYhIfXfYfYfYhIfYhEhFhFhGhFhFhJhthDhthKhLhMhNhOhPhwhwhtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZaZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahthQhRhShyhThFhUhVhWhXhWhYhZhZhZhZhZiagUgUibicgUgUgUgUhYhZhZhZhZhZidhWiehWhAifhKhFhwhwigihhtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZaZaZaZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahthwiihwhwijhKhKikhtilhthEiminioipiqfWiririrfXfYiririrfWisitiuiviwhHhtilhtixiyhKhKhwhwhwhwhtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZaZaZaZaZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahthwizhShOiAhKhFiBhththtfWfWfWfWfWfWfWiriCirfXfYiriCirfWfWfWfWfWfWfWhththtiDhKiEhKhwhwighwhtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZaZaZaZaZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahthwiihwhwiFhKhKiBhtaahtiGiGiGiHiGiIfWiriCirfXfYiriCirfWiGiGiHiGiGiGhtaahtiJhKhFhKhwhwhwhwhtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZaZaZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahthwiKhShyifhKhKiLhtaahtiGiGiGiGiGiGiMiriCirfXfYiriCiriMiGiGiGiGiGiGhtaahtiNiOhKhKhwhwighwhtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahthwhwhwhwhKhFhKiPhtaahtiQiGiGiRfWfWfWiSiCirfXfYiriCiTfWfWfWiUiGiGiVhtaahtiWhKhKhKhwhwhwhwhtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahththKhFhKhKhKhFikhtaahtiGiGiGiGiMiXfWiriCirfXfYiriCirfWiYiMiGiGiGiGhtaahtiZhFhKhKhKhFhKhthtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahthtjahKhFhFhKhKhtaahtiQiGiGiGfWfWfWiriCirfXfYiriCirfWfWfWiGiGiGiVhtaahthFhFhKhKhFjbhthtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahththKhFhKhKhFhtaWhtiGiGiGiGiMjcfWjdiCirfXfYiriCirfWiYiMiGiGiGiGhtaWhthFhKhKhKjehthtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahthththtjfhthtaahtiQiGiGiRfWfWfWiriCirfXfYiriCirfWfWfWiUiGiGiVhtaahthtjfhthththtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahtjgjhjijihtaWhtiGiGiGiGiMjjfWirirjkgzfYiririrfWjliMiGiGiGiGhtaWhtjijijhjmhtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZaZaaaaaaaaaaaaaaaaaaaaaaaahtjijijijihtaWhththtfWfWfWfWfWfWfWhufWfWhvfWfWfWfWfWfWfWhththtaWhtjijijijihtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZaZaZaaaaaaaaaaaaaaaaaaaaaaaahtjnjnjnjnhtaaaaaahtjojpjqgyjrgUgUibgUgUgUgUgUgUgyjqjsjthtaaaaaahtjnjnjnjnhtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZaaaaaaaZaZaaaaaaaaaaaaaaaaaahtjujujujvhtaaaaaajwhFjxjyghfXfYfYfYfYfYfYfYfYfYghjyjzjAjwaaaaaahtjujujujvhtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZaZaZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahtjBjxjyghjCfWfWjDfWfWjDfWfWjEghjyjFjGhtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZaZaZaZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaajwhFjxjyghfXfYjHhFhFhFhFjIfYfYghjyjJjAjKaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZaZaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahtjLjMjyghfXfYjNjOjOjOjOjPfYfYghjyjQjRhtjSaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahthtjTjyghfXjUfYfYfYfYfYfYjUfYghjyjThthtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahthtjVghjWeHjXfYfYfYfYjYeHjXghjVhthtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahthtghjZkagUgVfYfYfYfYkbfYghhthtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahtghghghghfXfYfYfYghghghghhtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahtghkckdghfXfYfYfYghkekfghhtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahtjwhththtkghthtkhhththtjwhtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakikikjkkklklkmkjkikiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaknklkkklklkmklknaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakoklkkklklkmklkoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakpkqkrkqkqkskqkpaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakikikmktkukukukvkikiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakikikmkmkwkmkmkxkykzkikiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakikmkmkAkBkxkxkxkCkDkmkiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakikmkxkxkEkFkGkxkxkxkmkiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakikmkxkxkHkIkJkxkxkxkmkiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakikmkmkxkKkLkMkxkxkmkmkiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakikikNkmkxkxkxkxkmkNkikiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakikikOkxkxkxkxkPkikiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaakikikQkQkQkQkikiaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
"}

View File

@@ -89,6 +89,8 @@
//Map elements that should be loaded together with this map. Stuff like the holodeck areas, etc.
var/list/load_map_elements = list()
var/snow_theme = 0
var/center_x = 226
var/center_y = 254
/datum/map/New()
. = ..()

View File

@@ -31,6 +31,9 @@
/datum/map_element/dungeon/holodeck
)
center_x = 260
center_y = 236
//All security airlocks have randomized wires
/obj/machinery/door/airlock/glass_security/New()

View File

@@ -59,6 +59,9 @@
/datum/map_element/dungeon/holodeck
)
center_x = 231
center_y = 249
//The central shuttle leads to both outposts
/datum/map/active/New()
. = ..()

View File

@@ -33,6 +33,9 @@
holomap_offset_x = list(0,0,0,86,4,0,0,)
holomap_offset_y = list(0,0,0,94,10,0,0,)
center_x = 221
center_y = 241
/datum/map/active/New()
.=..()

View File

@@ -21,7 +21,7 @@
"au" = (/turf/simulated/floor/wood,/area/vault/asteroid)
"av" = (/obj/structure/bookcase,/turf/simulated/floor/wood,/area/vault/asteroid)
"aw" = (/obj/structure/bookcase,/mob/living/simple_animal/hostile/scarybat/book/woody,/turf/simulated/floor/wood,/area/vault/asteroid)
"ax" = (/obj/effect/decal/cleanable/cockroach_remains,/obj/structure/cult/pylon,/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/plating,/area/vault/asteroid)
"ax" = (/obj/effect/decal/cleanable/cockroach_remains,/obj/structure/cult_legacy/pylon,/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/plating,/area/vault/asteroid)
"ay" = (/obj/item/weapon/cigbutt,/obj/effect/decal/cleanable/blood/drip,/turf/simulated/floor/plating,/area/vault/asteroid)
"az" = (/obj/structure/window/reinforced{dir = 8},/obj/effect/decal/cleanable/cockroach_remains,/turf/simulated/floor/plating,/area/vault/asteroid)
"aA" = (/obj/structure/window/reinforced/plasma{dir = 4},/turf/simulated/floor/plating,/area/vault/asteroid)
@@ -42,8 +42,8 @@
"aP" = (/turf/simulated/floor/plating,/area/vault/asteroid)
"aQ" = (/obj/effect/decal/cleanable/spiderling_remains,/obj/item/weapon/storage/fancy/matchbox/empty,/obj/effect/decal/cleanable/blood/drip,/turf/simulated/floor/plating,/area/vault/asteroid)
"aR" = (/obj/effect/decal/cleanable/blood/drip,/obj/effect/decal/cleanable/vomit,/turf/simulated/floor/wood,/area/vault/asteroid)
"aS" = (/obj/structure/cult/pylon,/turf/simulated/floor/wood{broken = 1; icon_state = "wood-broken"},/area/vault/asteroid)
"aT" = (/obj/structure/cult/pylon,/turf/simulated/floor/wood,/area/vault/asteroid)
"aS" = (/obj/structure/cult_legacy/pylon,/turf/simulated/floor/wood{broken = 1; icon_state = "wood-broken"},/area/vault/asteroid)
"aT" = (/obj/structure/cult_legacy/pylon,/turf/simulated/floor/wood,/area/vault/asteroid)
"aU" = (/obj/effect/decal/cleanable/spiderling_remains,/obj/effect/decal/cleanable/blood/drip,/turf/simulated/floor/plating,/area/vault/asteroid)
"aV" = (/obj/structure/window/reinforced{dir = 8},/obj/effect/decal/remains/human,/obj/item/weapon/handcuffs,/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/plating,/area/vault/asteroid)
"aW" = (/obj/structure/window/reinforced/plasma{dir = 4},/obj/effect/decal/cleanable/blood/writing{desc = "It looks like a writing in blood. The blood seems to have dried a long time ago."; message = "veniam petimus"; pixel_y = 32},/obj/effect/spider/stickyweb,/turf/simulated/floor/plating,/area/vault/asteroid)
@@ -64,10 +64,10 @@
"bl" = (/obj/structure/window/reinforced/plasma,/obj/structure/cage,/turf/simulated/floor/plating,/area/vault/asteroid)
"bm" = (/obj/structure/window/reinforced/plasma{dir = 4},/turf/simulated/wall/r_wall,/area/vault/asteroid)
"bn" = (/obj/structure/window/reinforced/plasma{dir = 8},/turf/simulated/wall/r_wall,/area/vault/asteroid)
"bo" = (/obj/structure/cult/pylon,/obj/structure/window/reinforced/plasma,/turf/simulated/floor/plating,/area/vault/asteroid)
"bo" = (/obj/structure/cult_legacy/pylon,/obj/structure/window/reinforced/plasma,/turf/simulated/floor/plating,/area/vault/asteroid)
"bp" = (/obj/structure/window/reinforced/plasma,/obj/item/weapon/paper/crumpled/bloody{info = "Only one artifact is real, all the others are fake. Don't make the same mistake that I did..."},/obj/effect/decal/remains/human,/turf/simulated/floor/plating,/area/vault/asteroid)
"bq" = (/turf/simulated/floor{icon_state = "dark"},/area/vault/asteroid)
"br" = (/obj/structure/cult/talisman,/obj/effect/landmark/catechizer_spawn,/turf/simulated/floor{icon_state = "dark"},/area/vault/asteroid)
"br" = (/obj/structure/cult_legacy/talisman,/obj/effect/landmark/catechizer_spawn,/turf/simulated/floor{icon_state = "dark"},/area/vault/asteroid)
"bs" = (/obj/effect/decal/remains/human,/turf/simulated/floor/carpet,/area/vault/asteroid)
"bt" = (/obj/structure/constructshell/cult,/turf/simulated/floor/carpet,/area/vault/asteroid)
"bu" = (/mob/living/simple_animal/hostile/faithless{faction = "mimic"; name = "The Guardian"},/turf/simulated/floor/carpet,/area/vault/asteroid)

View File

@@ -0,0 +1,100 @@
"aa" = (/turf/space,/area)
"ab" = (/obj/item/stack/sheet/metal,/turf/space,/area)
"ac" = (/turf/simulated/wall,/area/vault/asteroid)
"ad" = (/turf/space,/area/vault/asteroid)
"ae" = (/obj/item/stack/sheet/metal,/turf/space,/area/vault/asteroid)
"af" = (/obj/item/stack/tile/plasteel,/turf/simulated/floor/plating/airless,/area/vault/asteroid)
"ag" = (/turf/simulated/floor/plating/airless{broken = 1; icon_state = "platingdmg1"},/area/vault/asteroid)
"ah" = (/turf/simulated/floor/plating/airless,/area/vault/asteroid)
"ai" = (/obj/structure/lattice,/turf/space,/area/vault/asteroid)
"aj" = (/obj/structure/cult/forge,/turf/simulated/floor/plating/airless{broken = 1; icon_state = "panelscorched"},/area/vault/asteroid)
"ak" = (/turf/simulated/floor/plating/airless{broken = 1; icon_state = "panelscorched"},/area/vault/asteroid)
"al" = (/obj/structure/catwalk,/turf/space,/area/vault/asteroid)
"am" = (/obj/item/stack/tile/plasteel,/turf/simulated/floor/plating/airless{broken = 1; icon_state = "platingdmg1"},/area/vault/asteroid)
"an" = (/obj/machinery/door/mineral/wood,/turf/simulated/floor/plating,/area/vault/asteroid)
"ao" = (/obj/structure/lattice,/turf/space,/area)
"ap" = (/turf/simulated/wall/r_wall,/area/vault/asteroid)
"aq" = (/obj/structure/reagent_dispensers/bloodkeg,/obj/structure/table/woodentable,/turf/simulated/floor/wood,/area/vault/asteroid)
"ar" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/drinks/drinkingglass,/obj/item/weapon/reagent_containers/food/drinks/drinkingglass,/obj/item/weapon/reagent_containers/food/drinks/drinkingglass,/obj/item/weapon/reagent_containers/food/drinks/ice{pixel_x = 12; pixel_y = 2},/turf/simulated/floor/wood,/area/vault/asteroid)
"as" = (/obj/structure/table/woodentable,/turf/simulated/floor/wood,/area/vault/asteroid)
"at" = (/obj/item/weapon/stool,/turf/simulated/floor/wood,/area/vault/asteroid)
"au" = (/turf/simulated/floor/wood,/area/vault/asteroid)
"av" = (/obj/structure/bookcase,/turf/simulated/floor/wood,/area/vault/asteroid)
"aw" = (/obj/structure/bookcase,/mob/living/simple_animal/hostile/scarybat/book/woody,/turf/simulated/floor/wood,/area/vault/asteroid)
"ax" = (/obj/effect/decal/cleanable/cockroach_remains,/obj/structure/cult/pylon,/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/plating,/area/vault/asteroid)
"ay" = (/obj/item/weapon/cigbutt,/obj/effect/decal/cleanable/blood/drip,/turf/simulated/floor/plating,/area/vault/asteroid)
"az" = (/obj/structure/window/reinforced{dir = 8},/obj/effect/decal/cleanable/cockroach_remains,/turf/simulated/floor/plating,/area/vault/asteroid)
"aA" = (/obj/structure/window/reinforced/plasma{dir = 4},/turf/simulated/floor/plating,/area/vault/asteroid)
"aB" = (/obj/item/weapon/shard{icon_state = "small"},/obj/effect/decal/cleanable/blood/drip,/obj/effect/decal/cleanable/blood,/turf/simulated/floor/wood,/area/vault/asteroid)
"aC" = (/obj/item/weapon/stool,/turf/simulated/floor/carpet,/area/vault/asteroid)
"aD" = (/turf/simulated/floor/carpet,/area/vault/asteroid)
"aE" = (/turf/simulated/floor/wood{broken = 1; icon_state = "wood-broken6"},/area/vault/asteroid)
"aF" = (/obj/effect/decal/cleanable/spiderling_remains,/obj/structure/table/woodentable,/obj/item/candle,/turf/simulated/floor/plating,/area/vault/asteroid)
"aG" = (/obj/effect/decal/cleanable/blood,/turf/simulated/floor/plating,/area/vault/asteroid)
"aH" = (/obj/machinery/door/window/brigdoor{dir = 8; id_tag = ""; name = "Cell 1"; req_access_txt = "2"},/turf/simulated/floor/plating,/area/vault/asteroid)
"aI" = (/obj/structure/window/reinforced/plasma{dir = 4},/obj/item/weapon/reagent_containers/food/snacks/meat/spiderleg,/turf/simulated/floor/plating,/area/vault/asteroid)
"aJ" = (/obj/effect/decal/cleanable/blood/drip,/turf/simulated/floor/wood,/area/vault/asteroid)
"aK" = (/obj/item/weapon/reagent_containers/food/snacks/meat/roach,/obj/item/weapon/stool,/obj/effect/decal/remains/xeno{desc = "They look like the remains of something... unholy. They have a strange aura about them."},/turf/simulated/floor/plating,/area/vault/asteroid)
"aL" = (/obj/item/weapon/storage/fancy/cigarettes,/turf/simulated/floor/plating,/area/vault/asteroid)
"aM" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/vault/asteroid)
"aN" = (/obj/item/weapon/shard/plasma,/turf/simulated/floor/plating,/area/vault/asteroid)
"aO" = (/obj/item/stack/rods,/turf/space,/area)
"aP" = (/turf/simulated/floor/plating,/area/vault/asteroid)
"aQ" = (/obj/effect/decal/cleanable/spiderling_remains,/obj/item/weapon/storage/fancy/matchbox/empty,/obj/effect/decal/cleanable/blood/drip,/turf/simulated/floor/plating,/area/vault/asteroid)
"aR" = (/obj/effect/decal/cleanable/blood/drip,/obj/effect/decal/cleanable/vomit,/turf/simulated/floor/wood,/area/vault/asteroid)
"aS" = (/obj/structure/cult/pylon,/turf/simulated/floor/wood{broken = 1; icon_state = "wood-broken"},/area/vault/asteroid)
"aT" = (/obj/structure/cult/pylon,/turf/simulated/floor/wood,/area/vault/asteroid)
"aU" = (/obj/effect/decal/cleanable/spiderling_remains,/obj/effect/decal/cleanable/blood/drip,/turf/simulated/floor/plating,/area/vault/asteroid)
"aV" = (/obj/structure/window/reinforced{dir = 8},/obj/effect/decal/remains/human,/obj/item/weapon/handcuffs,/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/plating,/area/vault/asteroid)
"aW" = (/obj/structure/window/reinforced/plasma{dir = 4},/obj/effect/decal/cleanable/blood/writing{desc = "It looks like a writing in blood. The blood seems to have dried a long time ago."; message = "veniam petimus"; pixel_y = 32},/obj/effect/spider/stickyweb,/turf/simulated/floor/plating,/area/vault/asteroid)
"aX" = (/obj/item/stack/medical/bruise_pack/tajaran,/obj/item/stack/medical/ointment/tajaran,/turf/simulated/floor/wood,/area/vault/asteroid)
"aY" = (/obj/structure/cage/autoclose,/obj/item/weapon/cigbutt,/mob/living/simple_animal/hostile/giant_spider/hunter,/turf/simulated/floor/plating,/area/vault/asteroid)
"aZ" = (/obj/machinery/door/window/brigdoor{dir = 8; id_tag = ""; name = "Cell 2"; req_access_txt = "2"},/obj/effect/spider/stickyweb,/turf/simulated/floor/plating,/area/vault/asteroid)
"ba" = (/obj/structure/window/reinforced/plasma{dir = 4},/obj/effect/decal/cleanable/spiderling_remains,/obj/effect/spider/stickyweb,/turf/simulated/floor/plating,/area/vault/asteroid)
"bb" = (/obj/structure/window/reinforced/plasma{dir = 4},/turf/simulated/wall,/area/vault/asteroid)
"bc" = (/obj/structure/window/reinforced/plasma{dir = 8},/turf/simulated/wall,/area/vault/asteroid)
"bd" = (/obj/effect/decal/cleanable/cockroach_remains,/obj/effect/landmark/corpse/civilian,/mob/living/simple_animal/cockroach,/mob/living/simple_animal/cockroach,/mob/living/simple_animal/cockroach,/mob/living/simple_animal/cockroach,/turf/simulated/floor/plating,/area/vault/asteroid)
"be" = (/obj/structure/window/barricade{dir = 8},/turf/simulated/floor/plating,/area/vault/asteroid)
"bf" = (/obj/effect/decal/cleanable/spiderling_remains,/obj/item/weapon/cigbutt,/turf/simulated/floor/plating,/area/vault/asteroid)
"bg" = (/obj/structure/window/reinforced{dir = 8},/obj/effect/decal/cleanable/spiderling_remains,/obj/effect/spider/stickyweb,/turf/simulated/floor/plating,/area/vault/asteroid)
"bh" = (/obj/structure/window/reinforced/plasma{dir = 4},/obj/effect/spider/stickyweb,/obj/item/weapon/reagent_containers/food/snacks/meat/spiderleg,/obj/effect/decal/cleanable/cockroach_remains,/turf/simulated/floor/plating,/area/vault/asteroid)
"bi" = (/obj/structure/lattice,/obj/structure/window/reinforced/plasma{dir = 4},/turf/space,/area)
"bj" = (/turf/simulated/floor{dir = 5; icon_state = "stage_stairs"},/area/vault/asteroid)
"bk" = (/obj/structure/lattice,/obj/structure/window/reinforced/plasma{dir = 8},/turf/space,/area)
"bl" = (/obj/structure/window/reinforced/plasma,/obj/structure/cage,/turf/simulated/floor/plating,/area/vault/asteroid)
"bm" = (/obj/structure/window/reinforced/plasma{dir = 4},/turf/simulated/wall/r_wall,/area/vault/asteroid)
"bn" = (/obj/structure/window/reinforced/plasma{dir = 8},/turf/simulated/wall/r_wall,/area/vault/asteroid)
"bo" = (/obj/structure/cult/pylon,/obj/structure/window/reinforced/plasma,/turf/simulated/floor/plating,/area/vault/asteroid)
"bp" = (/obj/structure/window/reinforced/plasma,/obj/item/weapon/paper/crumpled/bloody{info = "Only one artifact is real, all the others are fake. Don't make the same mistake that I did..."},/obj/effect/decal/remains/human,/turf/simulated/floor/plating,/area/vault/asteroid)
"bq" = (/turf/simulated/floor{icon_state = "dark"},/area/vault/asteroid)
"br" = (/obj/structure/cult/talisman,/obj/effect/landmark/catechizer_spawn,/turf/simulated/floor{icon_state = "dark"},/area/vault/asteroid)
"bs" = (/obj/effect/decal/remains/human,/turf/simulated/floor/carpet,/area/vault/asteroid)
"bt" = (/obj/structure/constructshell/cult,/turf/simulated/floor/carpet,/area/vault/asteroid)
"bu" = (/mob/living/simple_animal/hostile/faithless{faction = "mimic"; name = "The Guardian"},/turf/simulated/floor/carpet,/area/vault/asteroid)
(1,1,1) = {"
aaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaacacacacacadadaeadacacacacacacaa
aaaaaaacafagahahaiaeadaiahafajafagacaa
aaaaaaacahakahahalaiaialamahagakahacaa
aaaaaaacacanacacadadadadacacacanacacaa
aaaaaaaaaoalaoaaaaaaaaaaaaaaaoalaoaaaa
acacacacacanacacacacacaaaaapapanapapaa
acaqarasatauauavawavacaaaaapaxayazaAaa
acauaBaCaDaDaDaDaEauacaaaaapaFaGaHaIaa
acaJauaDaDaDaDaDauauacaaaoapaKaLaMaNaO
acaJauaDaDaDaDaDauaJanalalanaPaQapapaa
acaRaSaDaDaDaDaDaTauacaaaoapaUaPaVaWaa
acaXauauauauauauauauacapapapaYaPaZbaaa
acacacacbbanbcacacacacapbdanbebfbgbhaa
aaaaaaaabibjbkaaaaaaaaapapapblblapapaa
aaaaaaaabibjbkaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaabibjbkaaaaaaaaaaaaaaaaaaaaaaaa
apapapapbmbjbnapapapapaaaaaaaaaaaaaaaa
apboapboapanapboapbpapaaaaaaaaaaaaaaaa
apbqbqbqbqbqbqbqbqbqapaaaaaaaaaaaaaaaa
apbrbqaDaDbsaDaDbqbrapaaaaaaaaaaaaaaaa
apbqbqbtbsbubsbtbqbqapaaaaaaaaaaaaaaaa
apbrbqaDaDbsaDaDbqbrapaaaaaaaaaaaaaaaa
apapapapapapapapapapapaaaaaaaaaaaaaaaa
"}

View File

@@ -33,6 +33,10 @@
holomap_offset_x = list(0,0,0,86,4,0,0,)
holomap_offset_y = list(0,0,0,94,10,0,0,)
center_x = 177
center_y = 193
////////////////////////////////////////////////////////////////
#include "roidstation/areas.dm"
#include "roidstation/pipes.dm" // More atmos layered pipes

View File

@@ -33,6 +33,9 @@
holomap_offset_x = list(0,0,0,86,4,0,0,)
holomap_offset_y = list(0,0,0,94,10,0,0,)
center_x = 226
center_y = 254
////////////////////////////////////////////////////////////////
#include "tgstation.dmm"
#endif

View File

@@ -71,7 +71,6 @@
#include "code\hub.dm"
#include "code\names.dm"
#include "code\world.dm"
#include "code\modules\organs\internal\heart\heart.dm"
#include "code\__HELPERS\angles_dirs.dm"
#include "code\__HELPERS\clockwork.dm"
#include "code\__HELPERS\cmp.dm"
@@ -337,6 +336,7 @@
#include "code\datums\gamemode\objectives\absorb.dm"
#include "code\datums\gamemode\objectives\acquire_blood.dm"
#include "code\datums\gamemode\objectives\block.dm"
#include "code\datums\gamemode\objectives\bloodcult.dm"
#include "code\datums\gamemode\objectives\convert_people.dm"
#include "code\datums\gamemode\objectives\custom.dm"
#include "code\datums\gamemode\objectives\die.dm"
@@ -1864,6 +1864,7 @@
#include "code\modules\organs\pain.dm"
#include "code\modules\organs\wound.dm"
#include "code\modules\organs\internal\eyes\eyes.dm"
#include "code\modules\organs\internal\heart\heart.dm"
#include "code\modules\organs\internal\kidney\filter.dm"
#include "code\modules\organs\internal\liver\liver.dm"
#include "code\modules\organs\internal\lungs\filter.dm"