Skip to content

Commit

Permalink
tweak(stairs and Example): stair logic tweaks plus Example maptweaks
Browse files Browse the repository at this point in the history
  • Loading branch information
kreeperHLC authored Feb 2, 2024
1 parent 2d3ac4d commit e11164d
Show file tree
Hide file tree
Showing 14 changed files with 355 additions and 286 deletions.
1 change: 0 additions & 1 deletion baystation12.dme
Original file line number Diff line number Diff line change
Expand Up @@ -3072,7 +3072,6 @@
#include "maps\eclipse\eclipse_shuttles.dm"
#include "maps\example\example_areas.dm"
#include "maps\example\example_define.dm"
#include "maps\example\example_jobs.dm"
#include "maps\example\example_levels.dm"
#include "maps\example\example_shuttles.dm"
#include "maps\exodus\exodus.dm"
Expand Down
1 change: 1 addition & 0 deletions code/__defines/sound.dm
Original file line number Diff line number Diff line change
Expand Up @@ -355,6 +355,7 @@
#define SFX_FOOTSTEP_BLANK "footstep_blank"
#define SFX_FOOTSTEP_ROBOT_LEGS "footstep_robot_legs"
#define SFX_FOOTSTEP_ROBOT_SPIDER "footstep_robot_spider"
#define SFX_FOOTSTEP_STAIRS "footstep_stairs"

// VENDING
#define SFX_VENDING_CANS "vending_cans"
Expand Down
3 changes: 3 additions & 0 deletions code/_global_vars/sfx.dm
Original file line number Diff line number Diff line change
Expand Up @@ -1808,6 +1808,9 @@ GLOBAL_LIST_INIT(sfx_list, list(
'sound/effects/robot_footstep/spider02.ogg',
'sound/effects/robot_footstep/spider03.ogg'
),
SFX_FOOTSTEP_STAIRS = list(
'sound/effects/stairs_step.ogg'
),
SFX_KEYBOARD = list(
'sound/machines/keyboard/keystroke1.ogg',
'sound/machines/keyboard/keystroke2.ogg',
Expand Down
2 changes: 1 addition & 1 deletion code/game/atoms.dm
Original file line number Diff line number Diff line change
Expand Up @@ -171,7 +171,7 @@
return FALSE

/atom/proc/CheckExit()
return 1
return TRUE

// If you want to use this, the atom must have the PROXMOVE flag, and the moving
// atom must also have the PROXMOVE flag currently to help with lag. ~ ComicIronic
Expand Down
8 changes: 4 additions & 4 deletions code/modules/multiz/_stubs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@
// FOR THE LOVE OF GOD USE THESE. DO NOT FUCKING SPAGHETTIFY THIS.
// Use the Has*() functions if you ONLY need to check.
// If you need to do something, use Get*().
HasAbove(z)
HasBelow(z)
//HasAbove(z)
//HasBelow(z)
// These give either the turf or null.
GetAbove(atom/atom)
GetBelow(atom/atom)
//GetAbove(atom/atom)
//GetBelow(atom/atom)
13 changes: 5 additions & 8 deletions code/modules/multiz/movement.dm
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@

//Override will make checks from different location used for prediction
if(location_override)
if(locate(/obj/structure/lattice, location_override) || locate(/obj/structure/catwalk, location_override))
if(locate(/obj/structure/lattice, location_override) || locate(/obj/structure/catwalk, location_override) || locate(/obj/structure/up, location_override))
return FALSE

var/turf/below = GetBelow(location_override)
Expand Down Expand Up @@ -171,10 +171,7 @@

/atom/movable/proc/handle_fall(turf/landing)
forceMove(landing)
if(locate(/obj/structure/stairs) in landing)
return 1
else
handle_fall_effect(landing)
handle_fall_effect(landing)

/atom/movable/proc/handle_fall_effect(turf/landing)
if(istype(landing, /turf/simulated/open))
Expand All @@ -187,7 +184,7 @@
M.take_overall_damage(fall_damage())

/atom/movable/proc/fall_damage()
return 0
return FALSE

/obj/fall_damage()
if(w_class == ITEM_SIZE_TINY)
Expand All @@ -203,14 +200,14 @@
var/old_stat = stat

..()
var/damage = 10
var/damage = 25
apply_damage(rand(0, damage), BRUTE, BP_HEAD)
apply_damage(rand(0, damage), BRUTE, BP_CHEST)
apply_damage(rand(0, damage), BRUTE, BP_L_LEG)
apply_damage(rand(0, damage), BRUTE, BP_R_LEG)
apply_damage(rand(0, damage), BRUTE, BP_L_ARM)
apply_damage(rand(0, damage), BRUTE, BP_R_ARM)
weakened = max(weakened,2)
weakened = max(weakened, 10)
updatehealth()

if (old_stat != CONSCIOUS)
Expand Down
67 changes: 53 additions & 14 deletions code/modules/multiz/structures.dm
Original file line number Diff line number Diff line change
Expand Up @@ -172,12 +172,47 @@
/obj/structure/stairs
name = "stairs"
desc = "Stairs leading to another deck. Not too useful if the gravity goes out."
icon = 'icons/obj/stairs.dmi'
icon = 'icons/obj/stairs_long.dmi'
icon_state = "stairs"
density = 0
opacity = 0
anchored = 1
layer = RUNE_LAYER
appearance_flags = DEFAULT_APPEARANCE_FLAGS

/obj/structure/up
name = "stairs"
desc = "Stairs leading to another deck. Not too useful if the gravity goes out."
icon = 'icons/obj/stairs.dmi'
icon_state = "stairs"

/obj/structure/up/forceMove()
return FALSE

/obj/structure/up/Bumped(atom/movable/A)
var/turf/below = GetBelow(A)
if(below)
var/turf/target = get_turf(below)
var/turf/source = get_turf(A)
if(!(locate(/obj/structure/stairs) in below))
show_splash_text(A, "the stairs cut off")
return

A.forceMove(target)
if(isliving(A))
var/mob/living/L = A
if(L.pulling)
L.pulling.forceMove(target)
if(ishuman(A))
playsound(source, SFX_FOOTSTEP_STAIRS, 50)
playsound(target, SFX_FOOTSTEP_STAIRS, 50)
else
show_splash_text(A, "nothing of interest in this direction")

/obj/structure/up/CheckExit(atom/movable/mover as mob|obj, turf/target as turf)
if(get_dir(loc, target) == turn(dir, 180) && (get_turf(mover) == loc))
return FALSE
return ..()

/obj/structure/stairs/Initialize()
for(var/turf/turf in locs)
Expand All @@ -187,41 +222,42 @@
return INITIALIZE_HINT_QDEL
if(!istype(above))
above.ChangeTurf(/turf/simulated/open)
var/obj/structure/up/Up = new /obj/structure/up(get_turf(GetAbove(loc)))
Up.dir = dir
. = ..()

/obj/structure/stairs/Destroy()
loc = null // Since it's easier than allowing it to get forceMoved and facing even more trouble
return ..()

/obj/structure/stairs/CheckExit(atom/movable/mover as mob|obj, turf/target as turf)
if(get_dir(loc, target) == dir && upperStep(mover.loc))
if(get_dir(loc, target) == dir && (get_turf(mover) == loc))
return FALSE
return ..()

/obj/structure/stairs/forceMove()
return 0
return FALSE

/obj/structure/stairs/Bumped(atom/movable/A)
var/turf/above = GetAbove(A)
if(above)
var/turf/target = get_step(above, dir)
var/turf/source = A.loc
var/turf/target = get_turf(above)
var/turf/source = get_turf(A)
if(!(locate(/obj/structure/up) in above))
show_splash_text(A, "the stairs cut off")
if(above.CanZPass(source, UP) && target.Enter(A, src))
A.forceMove(target)
if(isliving(A))
var/mob/living/L = A
if(L.pulling)
L.pulling.forceMove(target)
if(ishuman(A))
playsound(source, 'sound/effects/stairs_step.ogg', 50)
playsound(target, 'sound/effects/stairs_step.ogg', 50)
playsound(source, SFX_FOOTSTEP_STAIRS, 50)
playsound(target, SFX_FOOTSTEP_STAIRS, 50)
else
to_chat(A, SPAN("warning", "Something blocks the path."))
show_splash_text(A, "something blocks the path")
else
to_chat(A, SPAN("notice", "There is nothing of interest in this direction."))

/obj/structure/stairs/proc/upperStep(turf/T)
return (T == loc)
show_splash_text(A, "nothing of interest in this direction")

// type paths to make mapping easier.
/obj/structure/stairs/north
Expand All @@ -245,7 +281,9 @@
bound_width = 64

/obj/structure/stairs/short
icon_state = "stairs_short"
icon = 'icons/obj/stairs.dmi'
icon_state = "stairs"
appearance_flags = DEFAULT_APPEARANCE_FLAGS | TILE_BOUND

/obj/structure/stairs/short/north
dir = NORTH
Expand Down Expand Up @@ -329,7 +367,8 @@
bound_width = 64

/obj/structure/stairs/mining/short
icon_state = "stairs_short_mine"
icon = 'icons/obj/stairs.dmi'
icon_state = "stairs_mine"

/obj/structure/stairs/mining/short/north
dir = NORTH
Expand Down
Binary file modified icons/obj/stairs.dmi
Binary file not shown.
Binary file added icons/obj/stairs_long.dmi
Binary file not shown.
103 changes: 54 additions & 49 deletions maps/example/example-1.dmm
Original file line number Diff line number Diff line change
@@ -1,41 +1,46 @@
"a" = (/turf/simulated/wall/r_wall,/area/engineering/toilet)
"b" = (/turf/simulated/floor/tiled,/area/engineering/toilet)
"c" = (/turf/simulated/wall/r_wall,/area/space)
"d" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled,/area/engineering/toilet)
"f" = (/obj/effect/floor_decal/industrial/hatch/yellow,/turf/simulated/floor/tiled,/area/engineering/toilet)
"g" = (/turf/simulated/wall,/area/engineering/toilet)
"h" = (/obj/machinery/light_switch{on = 1; pixel_x = 25},/turf/simulated/floor/tiled,/area/engineering/toilet)
"i" = (/obj/machinery/light{dir = 8},/turf/simulated/floor/tiled,/area/engineering/toilet)
"j" = (/obj/structure/ladder/up,/turf/simulated/floor/tiled,/area/engineering/toilet)
"k" = (/obj/machinery/light{dir = 4},/turf/simulated/floor/tiled,/area/engineering/toilet)
"l" = (/obj/effect/landmark/start/crew,/turf/simulated/floor/tiled,/area/engineering/toilet)
"m" = (/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/tiled,/area/engineering/toilet)
"n" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 5},/turf/simulated/floor/tiled,/area/engineering/toilet)
"o" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/turf/simulated/floor/tiled,/area/engineering/toilet)
"p" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/tiled,/area/engineering/toilet)
"q" = (/obj/machinery/light_switch{on = 1; pixel_x = -25},/turf/simulated/floor/tiled,/area/engineering/toilet)
"r" = (/obj/effect/landmark/start,/turf/simulated/floor/tiled,/area/engineering/toilet)
"s" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 6},/turf/simulated/floor/tiled,/area/engineering/toilet)
"t" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/machinery/portable_atmospherics/canister/empty,/turf/simulated/floor/tiled,/area/engineering/toilet)
"u" = (/obj/machinery/door/airlock/external/bolted{frequency = 1379; id_tag = "lower_level_dock_hatch"},/turf/simulated/floor,/area/engineering/toilet)
"v" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{id_tag = "lower_level_dock"; pixel_x = -8; pixel_y = -25},/turf/simulated/floor,/area/engineering/toilet)
"w" = (/turf/simulated/floor,/area/engineering/toilet)
"x" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor/tiled,/area/engineering/toilet)
"y" = (/turf/simulated/wall/iron,/area/shuttle/escape)
"a" = (/turf/simulated/wall/r_wall,/area/engineering)
"b" = (/obj/effect/landmark/start/crew/ai,/obj/machinery/camera,/turf/simulated/floor/tiled/rough,/area/engineering)
"c" = (/turf/simulated/floor/tiled/rough,/area/engineering)
"d" = (/obj/machinery/light/spot{dir = 1},/turf/simulated/floor/tiled/rough,/area/engineering)
"e" = (/obj/machinery/camera{dir = 1},/turf/simulated/floor/tiled/rough,/area/engineering)
"f" = (/obj/effect/floor_decal/industrial/hatch/yellow,/turf/simulated/floor/tiled/rough,/area/engineering)
"g" = (/turf/simulated/wall,/area/engineering)
"h" = (/obj/machinery/light_switch{on = 1; pixel_x = 25},/turf/simulated/floor/tiled/rough,/area/engineering)
"i" = (/obj/machinery/light/spot{dir = 8},/turf/simulated/floor/tiled/rough,/area/engineering)
"j" = (/obj/structure/ladder/up,/turf/simulated/floor/tiled/rough,/area/engineering)
"k" = (/obj/machinery/light/spot{dir = 4},/turf/simulated/floor/tiled/rough,/area/engineering)
"l" = (/obj/effect/landmark/start/crew,/turf/simulated/floor/tiled/rough,/area/engineering)
"m" = (/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/tiled/rough,/area/engineering)
"n" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 5},/turf/simulated/floor/tiled/rough,/area/engineering)
"o" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/turf/simulated/floor/tiled/rough,/area/engineering)
"p" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/machinery/portable_atmospherics/canister/air,/turf/simulated/floor/tiled/rough,/area/engineering)
"q" = (/obj/machinery/light_switch{on = 1; pixel_x = -25},/obj/machinery/camera{dir = 4},/turf/simulated/floor/tiled/rough,/area/engineering)
"r" = (/obj/effect/landmark/start/crew/captain,/turf/simulated/floor/tiled/rough,/area/engineering)
"s" = (/obj/machinery/atmospherics/pipe/simple/visible{dir = 6},/turf/simulated/floor/tiled/rough,/area/engineering)
"t" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/machinery/portable_atmospherics/canister/empty,/turf/simulated/floor/tiled/rough,/area/engineering)
"u" = (/obj/machinery/door/airlock/external/bolted{frequency = 1379; id_tag = "lower_level_dock_hatch"},/turf/simulated/floor,/area/engineering)
"v" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{id_tag = "lower_level_dock"; pixel_x = -8; pixel_y = -25},/obj/machinery/camera{dir = 1},/turf/simulated/floor,/area/engineering)
"w" = (/turf/simulated/floor,/area/engineering)
"x" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor/tiled/rough,/area/engineering)
"y" = (/turf/simulated/wall,/area/shuttle/escape)
"z" = (/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/shuttle/escape)
"A" = (/obj/machinery/computer/shuttle_control{shuttle_tag = "Example"},/turf/simulated/floor/plating,/area/shuttle/escape)
"B" = (/obj/structure/bed/chair{dir = 1},/obj/machinery/embedded_controller/radio/simple_docking_controller{id_tag = "example_shuttle_starboard"; pixel_x = 28},/obj/machinery/embedded_controller/radio/simple_docking_controller{id_tag = "example_shuttle_port"; pixel_x = -28},/turf/simulated/floor/plating,/area/shuttle/escape)
"C" = (/obj/machinery/light,/turf/simulated/floor/plating,/area/shuttle/escape)
"C" = (/obj/machinery/camera{dir = 1},/obj/machinery/light/spot,/turf/simulated/floor/plating,/area/shuttle/escape)
"D" = (/obj/machinery/door/airlock/external/bolted{frequency = 1379; id_tag = "example_shuttle_port_hatch"},/turf/simulated/floor/plating,/area/shuttle/escape)
"E" = (/obj/machinery/door/airlock/external/bolted{frequency = 1379; id_tag = "example_shuttle_starboard_hatch"},/turf/simulated/floor/plating,/area/shuttle/escape)
"F" = (/obj/structure/cable{d2 = 2; icon_state = "0-2"},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/turf/simulated/floor/tiled,/area/engineering/toilet)
"G" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/engineering/toilet)
"H" = (/obj/structure/cable,/obj/machinery/power/debug_items/infinite_generator,/turf/simulated/floor/tiled,/area/engineering/toilet)
"I" = (/obj/machinery/light,/turf/simulated/floor/tiled,/area/engineering/toilet)
"F" = (/obj/structure/cable{d2 = 2; icon_state = "0-2"},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/turf/simulated/floor/tiled/rough,/area/engineering)
"G" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled/rough,/area/engineering)
"H" = (/obj/structure/cable,/obj/machinery/power/debug_items/infinite_generator,/turf/simulated/floor/tiled/rough,/area/engineering)
"I" = (/obj/machinery/light/spot,/turf/simulated/floor/tiled/rough,/area/engineering)
"J" = (/turf/space,/area/space)
"K" = (/obj/effect/floor_decal/industrial/hatch/yellow,/obj/map_ent/trigger_mob{pixel_x = -7; ev_tag = "ent_tp_wv"; tag = "ent_tp_trigger"},/obj/map_ent/func_teleport{pixel_x = 14; ev_dest_tag = "ent_showcase_tp_dest"; tag = "ent_tp_src"},/obj/map_ent/func_write_var{pixel_y = 9; ev_activate_writer = 1; ev_read_tag = "ent_tp_trigger"; ev_table = list("ev_tag"="ev_triggered"); ev_write_tag = "ent_tp_src"; tag = "ent_tp_wv"},/turf/simulated/floor/tiled,/area/engineering/toilet)
"P" = (/obj/map_ent/info_maptext{ev_text = "Map entities showcase"},/turf/simulated/floor/tiled,/area/engineering/toilet)
"X" = (/obj/effect/landmark/joinlate,/turf/simulated/floor/tiled,/area/engineering/toilet)
"K" = (/obj/effect/floor_decal/industrial/hatch/yellow,/obj/map_ent/trigger_mob{pixel_x = -7; ev_tag = "ent_tp_wv"; tag = "ent_tp_trigger"},/obj/map_ent/func_teleport{pixel_x = 14; ev_dest_tag = "ent_showcase_tp_dest"; tag = "ent_tp_src"},/obj/map_ent/func_write_var{pixel_y = 9; ev_activate_writer = 1; ev_read_tag = "ent_tp_trigger"; ev_table = list("ev_tag"="ev_triggered"); ev_write_tag = "ent_tp_src"; tag = "ent_tp_wv"},/turf/simulated/floor/tiled/rough,/area/engineering)
"L" = (/obj/machinery/camera{dir = 8},/turf/simulated/floor/tiled/rough,/area/engineering)
"P" = (/obj/map_ent/info_maptext{ev_text = "Map entities showcase"},/turf/simulated/floor/tiled/rough,/area/engineering)
"R" = (/obj/structure/stairs/south,/turf/simulated/floor/tiled/rough,/area/engineering)
"U" = (/obj/effect/floor_decal/industrial/hatch/yellow,/obj/machinery/camera,/obj/machinery/light/spot{dir = 1},/turf/simulated/floor/tiled/rough,/area/engineering)
"X" = (/obj/effect/landmark/joinlate,/turf/simulated/floor/tiled/rough,/area/engineering)
"Z" = (/obj/effect/landmark/start,/turf/simulated/floor/tiled/rough,/area/engineering)

(1,1,1) = {"
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
Expand All @@ -46,23 +51,23 @@ JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJcccccccccccccccccJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJcaaaaaaaaaaaaaaacJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJcabbbdbbbbbdbbbacJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJcabbbbbfgfbbbbbacJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJcabbbbbfffbbbbhacJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJcaibbbjfffbbbbkacJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJcabbbbbbbbbbmbbacJJJJJJJJJJJJJJJ
JJJJJJJJJJJJyyyJcabbbbbbXbbbnopacJJJJJJJJJJJJJJJ
JJJJJJJJJJJJzAzccaqbbbbbrlbbbbbacJJJJJJJJJJJJJJJ
JJJJJJJJJJJJzBzaaabbbbbbbbbbsotacJJJJJJJJJJJJJJJ
JJJJJJJJJJJJDCEuvwbbbbbbbbbbxbbacJJJJJJJJJJJJJJJ
JJJJJJJJJJJJyyyaaaibbbbbbbbbbbkacJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJccaFbbbbbbbbbbbbacJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJcaGbbbbbPbbbbbbacJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJcaHbbIbbKbbIbbbacJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJcaaaaaaaaaaaaaaacJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJcccccccccccccccccJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJaaaaaaaaaaaaaaaaaJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJaaaaaaaaaaaaaaaaaJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJaacccdccbccdcccaaJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJaacccccfgfcccccaaJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJaacccccfUfcccchaaJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJaaicccjfffcccckaaJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJaaccccccccccmccaaJJJJJJJJJJJJJJJ
JJJJJJJJJJJJyyyJaaccccccXcccnopaaJJJJJJJJJJJJJJJ
JJJJJJJJJJJJzAzaaaqccccZrlccccLaaJJJJJJJJJJJJJJJ
JJJJJJJJJJJJzBzaaaccccccccccsotaaJJJJJJJJJJJJJJJ
JJJJJJJJJJJJDCEuvwccccccccccxccaaJJJJJJJJJJJJJJJ
JJJJJJJJJJJJyyyaaaiccccccccccckaaJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJaaaFccccccccccccaaJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJaaGcccccPccccccaaJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJaaHccIceKccIccRaaJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJaaaaaaaaaaaaaaaaaJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJaaaaaaaaaaaaaaaaaJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ
Expand Down
Loading

0 comments on commit e11164d

Please sign in to comment.