diff --git a/code/datums/tutorial/_tutorial.dm b/code/datums/tutorial/_tutorial.dm
index d68ae551b6d5..be85d0ce346d 100644
--- a/code/datums/tutorial/_tutorial.dm
+++ b/code/datums/tutorial/_tutorial.dm
@@ -28,10 +28,6 @@ GLOBAL_LIST_EMPTY(ongoing_tutorials)
var/parent_path = /datum/tutorial
/datum/tutorial/Destroy(force, ...)
- if(bottom_left_corner)
- var/obj/landmark = locate(/obj/effect/landmark/tutorial_bottom_left) in bottom_left_corner.contents
- qdel(landmark)
-
GLOB.ongoing_tutorials -= src
QDEL_NULL(reservation) // Its Destroy() handles releasing reserved turfs
@@ -65,7 +61,9 @@ GLOBAL_LIST_EMPTY(ongoing_tutorials)
template.load(bottom_left_corner_reservation, FALSE, TRUE)
GLOB.ongoing_tutorials |= src
- bottom_left_corner = get_turf(locate(/obj/effect/landmark/tutorial_bottom_left) in GLOB.landmarks_list)
+ var/obj/landmark = locate(/obj/effect/landmark/tutorial_bottom_left) in GLOB.landmarks_list
+ bottom_left_corner = get_turf(landmark)
+ qdel(landmark)
var/area/tutorial_area = get_area(bottom_left_corner)
tutorial_area.update_base_lighting() // this will be entirely dark otherwise
init_map()
@@ -171,6 +169,10 @@ GLOBAL_LIST_EMPTY(ongoing_tutorials)
width = 8
height = 9
+/datum/map_template/tutorial/s8x9/no_baselight
+ name = "Tutorial Zone (8x9) (No Baselight)"
+ mappath = "maps/tutorial/tutorial_8x9_nb.dmm"
+
/datum/map_template/tutorial/s7x7
name = "Tutorial Zone (7x7)"
mappath = "maps/tutorial/tutorial_7x7.dmm"
diff --git a/code/datums/tutorial/marine/basic_marine.dm b/code/datums/tutorial/marine/basic_marine.dm
index db30653454c5..b94e4da8cf08 100644
--- a/code/datums/tutorial/marine/basic_marine.dm
+++ b/code/datums/tutorial/marine/basic_marine.dm
@@ -2,7 +2,7 @@
name = "Marine - Basic"
desc = "A tutorial to get you acquainted with the very basics of how to play a groundside marine role."
tutorial_id = "marine_basic_1"
- tutorial_template = /datum/map_template/tutorial/s8x9
+ tutorial_template = /datum/map_template/tutorial/s8x9/no_baselight
/// How many items need to be vended from the clothing vendor for the script to continue, if something vends 2 items (for example), increase this number by 2.
var/clothing_items_to_vend = 9
/// How many items need to be vended from the gun vendor to continue
@@ -15,6 +15,14 @@
if(!.)
return
+ var/obj/item/device/flashlight/flashlight = new(loc_from_corner(2, 3))
+ flashlight.anchored = TRUE
+ flashlight.set_light_power(4)
+ flashlight.set_light_range(12)
+ flashlight.icon = null
+ flashlight.set_light_on(TRUE)
+ add_to_tracking_atoms(flashlight)
+
init_mob()
message_to_player("This is the tutorial for marine rifleman. Leave the cryopod by pressing W or D to continue.")
update_objective("Exit the cryopod by pressing W or D.")
@@ -65,7 +73,7 @@
UnregisterSignal(clothing_vendor, COMSIG_VENDOR_SUCCESSFUL_VEND)
clothing_vendor.req_access = list(ACCESS_TUTORIAL_LOCKED)
remove_highlight(clothing_vendor)
- message_to_player("Now, the room will be dimmed. Take a flare out of your flare pouch by clicking on it with an empty hand, and then light it by using it in-hand with Z.")
+ message_to_player("Now, the room will darken. Take a flare out of your flare pouch by clicking on it with an empty hand, and then light it by using it in-hand with Z.")
update_objective("Click on your flare pouch to remove a flare before using it in-hand.")
var/obj/item/storage/pouch/flare/flare_pouch = locate(/obj/item/storage/pouch/flare) in tutorial_mob.contents
if(flare_pouch)
@@ -166,20 +174,12 @@
// START OF SCRIPT HELPERS
/datum/tutorial/marine/basic/proc/dim_room()
- var/area/tutorial_area = get_area(tutorial_mob)
- tutorial_area.set_base_lighting(new_alpha = 200)
- sleep(0.5 SECONDS)
- tutorial_area.set_base_lighting(new_alpha = 160)
- sleep(0.5 SECONDS)
- tutorial_area.set_base_lighting(new_alpha = 140)
+ TUTORIAL_ATOM_FROM_TRACKING(/obj/item/device/flashlight, flashlight)
+ flashlight.set_light_on(FALSE)
/datum/tutorial/marine/basic/proc/brighten_room()
- var/area/tutorial_area = get_area(tutorial_mob)
- tutorial_area.set_base_lighting(new_alpha = 160)
- sleep(0.5 SECONDS)
- tutorial_area.set_base_lighting(new_alpha = 200)
- sleep(0.5 SECONDS)
- tutorial_area.set_base_lighting(new_alpha = 255)
+ TUTORIAL_ATOM_FROM_TRACKING(/obj/item/device/flashlight, flashlight)
+ flashlight.set_light_on(TRUE)
/datum/tutorial/marine/basic/proc/disappear_xeno()
TUTORIAL_ATOM_FROM_TRACKING(/mob/living/carbon/xenomorph/drone/tutorial, xeno_dummy)
diff --git a/code/game/area/admin_level.dm b/code/game/area/admin_level.dm
index 30c7acb3d71f..a47bb65d38c7 100644
--- a/code/game/area/admin_level.dm
+++ b/code/game/area/admin_level.dm
@@ -158,3 +158,6 @@
/area/misc/tutorial/Initialize(mapload, ...)
. = ..()
update_base_lighting()
+
+/area/misc/tutorial/no_baselight
+ base_lighting_alpha = 0
diff --git a/maps/tutorial/tutorial_8x9_nb.dmm b/maps/tutorial/tutorial_8x9_nb.dmm
new file mode 100644
index 000000000000..2e03d5162f65
--- /dev/null
+++ b/maps/tutorial/tutorial_8x9_nb.dmm
@@ -0,0 +1,100 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"a" = (
+/turf/closed/wall/almayer/outer,
+/area/misc/tutorial/no_baselight)
+"z" = (
+/turf/open/floor/almayer,
+/area/misc/tutorial/no_baselight)
+"R" = (
+/obj/effect/landmark/tutorial_bottom_left,
+/turf/open/floor/almayer,
+/area/misc/tutorial/no_baselight)
+
+(1,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(2,1,1) = {"
+a
+z
+z
+z
+z
+z
+z
+R
+a
+"}
+(3,1,1) = {"
+a
+z
+z
+z
+z
+z
+z
+z
+a
+"}
+(4,1,1) = {"
+a
+z
+z
+z
+z
+z
+z
+z
+a
+"}
+(5,1,1) = {"
+a
+z
+z
+z
+z
+z
+z
+z
+a
+"}
+(6,1,1) = {"
+a
+z
+z
+z
+z
+z
+z
+z
+a
+"}
+(7,1,1) = {"
+a
+z
+z
+z
+z
+z
+z
+z
+a
+"}
+(8,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}