Adds a new redgate map: The Casino Canal (#18587)

* starts da map

* starting to shape up I think?

* moar edits

* we got lots more stuff now

* we got dorms now :)

* moar doarm and PRIVATE GAME ROOMS WOAG

* adds chip machine

* tidy dis up

* oops

* pretties up private game rooms a bit

* ok now the chip dispenser works

* Adds resleeving stuff

* Adds pixel-displaced children of punlic paintings

* mmmmmm maint stuff

* adds VIP rooms and more maint stuff

* that's a lotta shit made woooo

* its almost... done... (the main building is anyway)

* Let's get this bih to actually load

* And let's get some proper areas separating indoor and outdoor

* Makes casino hall turfs actually render as intended

* WE HAVE AREAS NOW

* don't need this big ol file any more

* MOSTLY finishes the mai nbuilding

* finally finishes the main building (for now)

* does some exterior stuff but now it's crashing WHY

* oops

* adds subvariant of floodlight that starts turned on

* adds areas for well, secret areas

* TOO MUCH new shit

* Does a silly thing to make properly underwater cave turfs

* adds "open" underwater turfs that are functionally transparent divable turfs

* more funny secrets

* Makes open water turfs show a darker view underneath for visual clarity

* okay I think it might be done now

* makes indoor water effect look a bit nicer

* I ALMOST FORGOT

* engoodens code surrounding multiple auto-resleevers existing

* FUCK

* DOUBLE FUCK

* Lets things with GLASSPASS move through TGMC widnows

* actually it makes more sense for the TF gun to be here

* Makes 🏴‍☠️ secret a bit nicer

---------

Co-authored-by: Cameron Lennox <killer65311@gmail.com>
This commit is contained in:
Ryumi
2025-10-25 00:30:41 +02:00
committed by GitHub
co-authored by Cameron Lennox
parent 5335ee9729
commit d395f4ab65
30 changed files with 53711 additions and 16 deletions
@@ -240,3 +240,10 @@ var/static/list/fake_sunlight_zs = list()
"color" = "#1c49ff"
)
)
/obj/effect/fake_sun/underwater/lighter
possible_light_setups = list(
list(
"brightness" = 1,
"color" = "#4bd1f3"
)
)
+18 -6
View File
@@ -68,19 +68,31 @@
if(!isobserver(src)) //Make sure they're an observer!
return
var/list/ar = list()
for(var/obj/machinery/transhuman/autoresleever/A in world)
// Set up an assorted list of auto-resleevers using their area name as the key, (as there should only ever be one per area)
var/list/autoresleevers = list()
for(var/obj/machinery/transhuman/autoresleever/A in GLOB.active_autoresleevers)
if(A.spawntype)
continue
else
ar |= A
var/area/resleever_area = get_area(A)
autoresleevers[resleever_area.name] = A
var/obj/machinery/transhuman/autoresleever/thisone = pick(ar)
var/obj/machinery/transhuman/autoresleever/chosen_resleever = null
if(length(autoresleevers) > 1)
// Prompt user to choose which one they wanna go to
var/choice = tgui_input_list(src, "There are multiple auto-resleevers available! Choose one.", "Choose Auto-Resleever", autoresleevers)
if(!choice)
// well okay then :L
return
chosen_resleever = autoresleevers[choice]
else
// If there's less than one, just choose whatever one is available (if any)
chosen_resleever = autoresleevers[pick(autoresleevers)]
if(!thisone)
if(!chosen_resleever)
to_chat(src, span_warning("There appears to be no auto-resleevers available."))
return
var/L = get_turf(thisone)
var/L = get_turf(chosen_resleever)
if(!L)
to_chat(src, span_warning("There appears to be something wrong with this auto-resleever, try again."))
return
@@ -178,10 +178,9 @@
ai_log("handle_wander_movement() : Entered.", AI_LOG_TRACE)
if(isturf(holder.loc) && can_act())
wander_delay--
var/turf/simulated/floor/water/deep/ocean/diving/sink = holder.loc
var/turf/simulated/floor/water/underwater/surface = holder.loc
var/mob/living/simple_mob/H = holder
if(istype(sink) && H.vore_fullness)
if(isdiveablewater(holder.loc) && H.vore_fullness)
holder.zMove(DOWN)
wander_delay = base_wander_delay
else if(istype(surface) && !H.vore_fullness)
+2 -3
View File
@@ -54,8 +54,7 @@
return 0
if(direction == DOWN)
var/turf/simulated/floor/water/deep/ocean/diving/sink = start
if(istype(sink) && !destination.density)
if(isdiveablewater(start) && !destination.density)
var/pull_up_time = max((3 SECONDS + (src.movement_delay() * 10) * swim_modifier), 1)
to_chat(src, span_notice("You start diving underwater..."))
src.audible_message(span_notice("[src] begins to dive under the water."), runemessage = "splish splosh")
@@ -90,7 +89,7 @@
to_chat(src, span_warning("You gave up on pulling yourself up."))
return 0
else if(istype(destination, /turf/simulated/floor/water/deep/ocean/diving))
else if(isdiveablewater(destination))
var/pull_up_time = max((5 SECONDS + (src.movement_delay() * 10) * swim_modifier), 1)
to_chat(src, span_notice("You start swimming upwards..."))
src.audible_message(span_notice("[src] begins to swim towards the surface."), runemessage = "splish splosh")
+10
View File
@@ -1,3 +1,5 @@
GLOBAL_LIST_EMPTY(active_autoresleevers)
/obj/machinery/transhuman/autoresleever
name = "automatic resleever"
desc = "Uses advanced technology to detect when someone needs to be resleeved, and automatically prints and sleeves them into a new body. It even generates its own biomass!"
@@ -13,6 +15,14 @@
var/spawn_slots = -1 //How many people can be spawned from this? If -1 it's unlimited
var/spawntype //The kind of mob that will be spawned, if set.
/obj/machinery/transhuman/autoresleever/Initialize(mapload)
. = ..()
GLOB.active_autoresleevers += src
/obj/machinery/transhuman/autoresleever/Destroy()
. = ..()
GLOB.active_autoresleevers -= src
/obj/machinery/transhuman/autoresleever/update_icon()
. = ..()
if(stat & (BROKEN | MAINT | EMPED))