diff --git a/_maps/map_files/roguetown2/otherz/smalldecap.dmm b/_maps/map_files/roguetown2/otherz/smalldecap.dmm
index 0befdba7cb..c058f437dc 100644
--- a/_maps/map_files/roguetown2/otherz/smalldecap.dmm
+++ b/_maps/map_files/roguetown2/otherz/smalldecap.dmm
@@ -4,19 +4,26 @@
"d" = (/turf/open/water/swamp,/area/rogue/outdoors/mountains/decap)
"j" = (/obj/structure/fluff/traveltile{aportalgoesto = "decapout"; aportalid = "decapin"; aallmig = "rwfielddecap"},/turf/open/floor/rogue/dirt/road,/area/rogue/outdoors/mountains/decap)
"k" = (/turf/closed/wall/mineral/rogue/craftstone,/area/rogue/outdoors/mountains/decap)
+"o" = (/obj/effect/landmark/start/adventurerlate{icon_state = "arrow"; dir = 4},/turf/open/floor/rogue/dirt,/area/rogue/outdoors/mountains/decap)
"s" = (/obj/machinery/light/rogue/firebowl/standing,/obj/structure/bars,/turf/open/floor/rogue/dirt/road,/area/rogue/outdoors/mountains/decap)
"u" = (/turf/open/floor/rogue/hexstone,/area/rogue/outdoors/mountains/decap)
"z" = (/obj/structure/portal,/obj/structure/bars,/turf/open/floor/rogue/dirt/road,/area/rogue/outdoors/mountains/decap)
"B" = (/obj/effect/landmark/mapGenerator/rogue/decap{endTurfX = 128; endTurfY = 128},/turf/closed/mineral/rogue/bedrock,/area/rogue/outdoors/mountains/decap)
"D" = (/turf/open/lava,/area/rogue/outdoors/mountains/decap)
"E" = (/obj/structure/bars,/turf/open/floor/rogue/dirt/road,/area/rogue/outdoors/mountains/decap)
+"F" = (/obj/effect/landmark/start/adventurerlate{icon_state = "arrow"; dir = 1},/turf/open/floor/rogue/dirt,/area/rogue/outdoors/mountains/decap)
"G" = (/obj/machinery/light/rogue/campfire,/turf/open/floor/rogue/dirt/road,/area/rogue/outdoors/mountains/decap)
+"H" = (/obj/effect/landmark/start/adventurerlate{icon_state = "arrow"; dir = 8},/turf/open/floor/rogue/dirt,/area/rogue/outdoors/mountains/decap)
"I" = (/turf/closed/mineral/random/rogue/high,/area/rogue/outdoors/mountains/decap)
+"J" = (/obj/effect/landmark/start/adventurerlate,/turf/open/floor/rogue/dirt,/area/rogue/outdoors/mountains/decap)
"M" = (/turf/open/floor/rogue/volcanic,/area/rogue/outdoors/mountains/decap)
+"Q" = (/obj/effect/landmark/start/adventurerlate,/turf/open/floor/rogue/dirt/road,/area/rogue/outdoors/mountains/decap)
"S" = (/turf/open/floor/rogue/dirt/road,/area/rogue/outdoors/mountains/decap)
+"T" = (/obj/effect/landmark/start/adventurerlate{icon_state = "arrow"; dir = 8},/turf/open/floor/rogue/dirt/road,/area/rogue/outdoors/mountains/decap)
"U" = (/turf/open/floor/rogue/dirt,/area/rogue/outdoors/mountains/decap)
"V" = (/obj/machinery/light/rogue/firebowl/standing,/turf/open/floor/rogue/hexstone,/area/rogue/outdoors/mountains/decap)
"Y" = (/obj/structure/fluff/traveltile{aportalgoesto = "forestdecapin"; aportalid = "forestdecapout"},/turf/open/floor/rogue/dirt/road,/area/rogue/outdoors/mountains/decap)
+"Z" = (/obj/effect/landmark/start/adventurerlate{icon_state = "arrow"; dir = 4},/turf/open/floor/rogue/dirt/road,/area/rogue/outdoors/mountains/decap)
(1,1,1) = {"
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
@@ -32,7 +39,7 @@ aaYSSSSIISSSSSSSSSSSSUUUUUUUUUaaaaaaaaUUUUUUDUUUUIIDDIIIDDDDDDDDDDDDDDDDMMMMMMDD
aaYSSSSSSSSSSSSSSSSSSSSSSSSSSSIIIIIIIaUUUUUUDUUUUIIIDIIIIIIDDDDDDDDDDDDMMMMMMMDDDDDDDDDDDDDDDDDDDDDDDDDDIIaaaaIIIIIIIaaaaaaaaaaa
aaSSSIIIIIIIIIIIIUUUSSSSSSSSSSIIIIIIIaUIUIUUDUUUIUIIDIIIIIIDDDDDDDDDDDDMMUUUMMDDDDDDDDDDDDDDDDDDDDDDDDDDDIaaaaIIIIIIIaaaaaaaaaaa
aaaaaaaIIIIIIIIIIUUUSUUUUUUIIIIIIIIIIIUIUUUUDUUUUUIIDIIIIIIDDDDDDDDDDDDDMMUUMMDDDDDDDDDDDDDDDDDDDDDDDDDDDDaaaaIIIIIIIaaaaaaaaaaa
-aaaaaaaIIIIIIIIIIUUUSUUUUUUIIIIIIIIIIIUUUUUUDUUUUIIIDDIIIIIDDDDDDDDDDDDMMMUUMMMDDDDDDDDDDDDDDDDDDDDDDDDDIDaaaaIIIIIIIaaaaaaaaaaa
+aaaaaaaIIIIIIIIIIUUUSUUoUUUIIIIIIIIIIIUUUUUUDUUUUIIIDDIIIIIDDDDDDDDDDDDMMMUUMMMDDDDDDDDDDDDDDDDDDDDDDDDDIDaaaaIIIIIIIaaaaaaaaaaa
aaaaaaaIIIIIIIIIIUUUSUUUUUIIIIIIIIIIIIUUUUUUDDDDDDDDDDIIIIIDDDDDDDDDDDMMMUUUUUMMMDDDDDDDDDDDDDDDDDDDDDDDDDaaaaIIIIIIIaaaaaaaaaaa
aaaaaaaaIIIIIIIIIUUUSUUUUUIIIIaaaaaaIIUUUUUUIIIUUIUIDDIIIIIDDDDDDDDDDDMMUUUUUUUUMMMDDDDDDDDDDDDDDDDDDDDDDDaaaaIIIIIIIaaaaaaaaaaa
aaaaaaaaIIIIIIIIIUUUSUUUUUIIIaaaaaaaIIIIIIIIIIIIIUUIDDIIDIIDDDDDDDDDMMMUUUUUUUUUUMMMDDDDDDDDDDDDDDDDDDDDDDaaaaIIIIIIIaaaaaaaaaaa
@@ -46,7 +53,7 @@ aaIIIIIIIIIIIIIIIUUUSUUUUUUUaaaIIIIaaaMMMMMMMDDDMMIIIIIDDDDDDDDDDDDMMMUUUUUUUUMM
aaIIIIIIIIIIIIIIIIIISUUUUUUUaaaIIIIaaaIIIIIIMDDDDMIIIIIIDDDDDDDDDDDDDMMMUUUMMMMMDDDDDDDDDDDDDDDDDDDDDDDDDDaaaaIIIIIIIaaaaaaaaaaa
aaaaaaIIIIIIIIIIIIIISUUSUUUUaaaIIIIaaaIIIIIIMDDDMMIIIIIIDIDDDDDDDDDDDMDMMMMMMMMDDDDDDDDDDDDDDDDDDDDDDDDDDDaaaaIIIIIIIaaaaaaaaaaa
aaaaaaIIIIIIcIIIIIUUSSSSSSSSaaaIIIIaaSIIIIIIMMDMMMIIIIIIIDDDDDDDDDDDDDDDDMMDMDMDDDDDDDDDDDDDDDDDDDDDDDDDDDSaaaIIIIIIIaaaaaaaaaaa
-aaaaaaIIIIcccccIUUUUUUUSIIIaaaaIIIIaSSIIIIIIMDDMMMIIIIIIIIDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDSSSaIIIIIIIaaaaaaaaaaa
+aaaaaaIIIIcccccIUUUUUoUSIIIaaaaIIIIaSSIIIIIIMDDMMMIIIIIIIIDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDSSSaIIIIIIIaaaaaaaaaaa
aaaaaaIIIIIccccIUUUUUUUSUUUaaaaIIIIIIaIIIIIIMDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDSSSaIIIIIIIaaaaaaaaaaa
aaaaaaIIIIIIcccUUUUUUUUSUUUaaaaIIIIIIIIIIIIIMDDMIIIIIIIIIIDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDIIIIIaaaaIIIIIIIaaaaaaaaaaa
aaaaIIIIIIIUccUUUUUUUUUSUUUaaaaaaaaaaIIIIIIIMDMMIIIIIIIIIIDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDIIIIIIIaaaaIIIIIIIaaaaaaaaaaa
@@ -62,7 +69,7 @@ aaIIIIIIIUUDDDDDDUIIIIISIIIIDDDDDDDDDDDDDDDMMIIIIIIIIIDDDIIIIUUUUIUUIUIIIIUUIIUD
aaaaaaIIIUUUUUUUDDDDDDDDDDDDDDDDDDDDDDDDDDDDMIIIIIIIIDDDDIUUIUUUUUUUUUIIIIUUUIUUIIDDDDDDIIIIIIIUUUUUUUUUUIIIIIIIIIIIIIaaaaaaaaaa
aaaaaaIIIUUUUUUUUUUIIIUSIIIIIaaaaaaaaaMMMMDDDDDDDDDDDDDDDIUUUUIUUUUUUUUUIIUUUUUUDDDDDDDDIIIIIIIIIIUUIUUUMMIIIIIIIIIIIIaaaaaaaaaa
aaaaaaIIIUUUUUUUUUUUUUUSUIIIIaaaaaaaaaMIMMDDMMIIIIIIIDDDUIUIUUUUUUUUUUUUUUUUUUUUUIDDDDDDDIIIIIIIIIIUUIMMMMIIIIIIIIIIIIaaaaaaaaaa
-aaaaaaIIIUUUUUUUUUUUUUUSSSIIIIIIIIIIIIIIMMDMMMIIIIIDDDDDUUUUUUUUUUUUUUUUUIUUUUUUUUUIDDDDDIIIIIMMMMMMMMMIIIIIIIIIIIIIIIaaaaaaaaaa
+aaaaaaIIIUUUUUUHUUUUUUUSSSIIIIIIIIIIIIIIMMDMMMIIIIIDDDDDUUUUUUUUUUUUUUUUUIUUUUUUUUUIDDDDDIIIIIMMMMMMMMMIIIIIIIIIIIIIIIaaaaaaaaaa
aaaaaaIIIUUUUUUUUUUSSSSSSSIIIIIIIIIIIIIIMMMMMIIIIIIDDDDDUUUUUUUUUUUUUUUUUIUUUUUUUUUIDDDDDDIIIMMIIIIIIIIIIIIIIIIIIIIIIIaaaaaaaaaa
aaIIIIUUUUUUUUUUUUUUUUUSSSIIIaaaaaaaaaIIMMMMIIIIIIIDDDDDDUUUUUUUUUUUUUUIUUUUUUUUUUUUDDDDDDIIMMMMIIIIIIIIIIaaaaaaaaaaaaaaaaaaaaaa
aaIIIIUUUUUUUIIIUUUUUUUSUIIIIaaaaaaaaaDDDDDDDDDDDDDDDDDDDIUUIUUUUUUUUUUUUUUUUUUUUUUUDDDDDDDIMDIMIIIIIIIIIIaaaaaaaaaaaaaaaaaaaaaa
@@ -76,60 +83,60 @@ aaIIIIIUUIIIIIIIIUUIIIISIIIIIIIIIIIIIIIIaaaaaaDDDDDDDDDDDDaaaaaSSSSaaaaaIIIIaaaa
aaaIIIIUUIIIIUUUUUUUSSSSSSSIIIIIIIIIIIIIaaaaaaDDDDDDDDDDDDDDaaaSSSSaaaaaIIIIaaaaaaaDDaaaaaIIIaaaaaaaaaaDDaaaaaaaaaaaaaaaaaaaaaaa
aaaIIIIUUIIIIUUUUUUUSUUUUUUIIIIaaaaaaDDDDDDDDDDDDaaSIIIIaDDDaaaaSSaaaaaaIIIIaaaaaaaDDaaaaaIIIaaaaaaaaaaDDaaaaaaaaaaaaaaaaaaaaaaa
aaaIIIIUUIUUUUUUUUUUSUIIIIIIIIDDIaaaaDDDDDDDDDDDDaaIIIIIaDDDaaaaaaaaaaaIIIIIaaaaaaaDDaaaaaaIIaaaaaaaaaaDDaaaaaaaaaaaaaaaaaaaaaaa
-aaaIIIIUUUUUUUUUUUUUSSSSUUIIIDDIIaaaaDDDDDDDDDDDDaaIIIIIaDDDDDaaaaaaaaaIIIIIaaaaaaaDDaaaaaaIIaaaaaaaaaaDDaaaaaaaaaaaaaaaaaaaaaaa
+aaaIIIIUUUUUUUUUUUUUQSSSUUIIIDDIIaaaaDDDDDDDDDDDDaaIIIIIaDDDDDaaaaaaaaaIIIIIaaaaaaaDDaaaaaaIIaaaaaaaaaaDDaaaaaaaaaaaaaaaaaaaaaaa
aaaIIIIUUUUIUUIIIIUUUUUSUUUDDDIIIaaaaaaDDDDaaaaaaaaIIIIIaaDDDDaaaaaaaaaIIIIIaaaaaaaDDaaaaaIIIaaaaaaaaaaDDaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaIUUUUUUUIIIIUUUUUSUUDDIIIIIIIIaaDDDDDaaaaaaaIIIIIIaaaDDDUSIIaaaaaaIIIIaaaaaaaDDaaaaaIIIIIIaaaaaaaDDaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaIUUHUUUUIIIIUUUUUSUUDDIIIIIIIIaaDDDDDaaaaaaaIIIIIIaaaDDDUSIIaaaaaaIIIIaaaaaaaDDaaaaaIIIIIIaaaaaaaDDaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaIIUUUUUUIIIIUUUUUSDDDUIIIIIIIIaaaDDDDaaaaaaaaIIIIIaaaUUDUSIaaaaaaaIIIIaaaaaaaDDaaaaaIIIIIIaaaaIIIDDaaaIIIaaaaaaaaaaaaaaaaa
aaaaaaIIUUUUUUIIIIIIIDDDDUUUIIIIIIIIIIIDIaaaaaaaaaaaIIIIaaaUUDUSaaaaUUUUUUUUUUIaaaaaDaIIIaaIIIIIaaaaIIIIDIIIaaIIIIIIIaaaaaIIIIIa
aaaaaaUUUUUUUUUIIIIDDDUSUUUUIIIIIIIIIIDIIaaaaaaaaaIIIIIIIIIUUDDSUUUIUUUUUUUUUUIIIIIIDIIIIaaaaIIIIIIIIIIUDDUUUUUUUUUUUUIIIIIIIIIa
-aaaaaaUUUUUIIIUIIDDDIIUSUUUUUIIIIIIIIDDIIIIIIIIIIIIIIIIIIIIUUUDSUUUIUUUUUUSSSSSSSSSDDSSSSUUUUUUIIUUUUUIUUDUUUUUUUUUUUUIIIIIIIIIa
-aaaaaaUUUUUIIIIDDDIIIIUSUUUUUUIIIIIIIDIIIIIIIIIIIIIIIIIIIIIUUUDSUUUUUUUUUUSSUUUUUUUDUUUUSUUUUUUIIUUUUUUUUDUUUUUUUUUUUUIIIIIIIIIa
+aaaaaaUUUUUIIIUIIDDDIIUSUUUUUIIIIIIIIDDIIIIIIIIIIIIIIIIIIIIUUUDSUUUIUUUUUJSSSSSSSSSDDSSSSUUUUUUIIUUUUUIUUDUUUUUUUUUUUUIIIIIIIIIa
+aaaaaaUUUUUIIIIDDDIIIIUSUHUUUUIIIIIIIDIIIIIIIIIIIIIIIIIIIIIUUUDSUUUUUUUUUUSSUUUUUUUDUUUUSUUUUUUIIUUUUUUUUDUUUUUUUUUUUUIIIIIIIIIa
aaaaaaUUUUUUIDDDIIUIIIISUUUUUUUIIIIIDDIIIIIIIIIIIIIIIIIIIUIUUUDSUUUUUUUUUUSSUUUUUUUDUUUUSUUUUUUUUUUUUUUUUDUUUUUUUUUUUcUUUIIIIIIa
-aaaaaaUUUUUDDDIIIIUIIIISUUUUIIUIIIIDDIIIUUIIIIIIIIIIIIIUUUUUUUDSUUUUUUUUUUSUUUUUUUDDUUUUSUUUUUUUUUUUUUUUUDUUUUUUUUUUUcUUUUUUIIIa
-aaaaaaUUUDDDUIIIIUUIIIISUIIIIIIIIIIDIIUUIIUUSIUUIIIIIUIUUUUUUUDSUUUUUUUUUUSIUUUUUUDUUUUUSUUUUUUUUUUUUUUUUDUUUUUUUUUccccccUUUIIIa
+aaaaaaUUUUUDDDIIIIUIIIISUUUUIIUIIIIDDIIIUUIIIIIIIIIIIIIUUUUUUUDSUUUUUUUUUUSUUUUUUUDDUUUUSUUUUUUUUUUUUUUUUDUUUHUUUUUUUcUUUUUUIIIa
+aaaaaaUUUDDDUIIIIUUIIIISUIIIIIIIIIIDIIUUIIUUSIUUIIIIIUIUUUUUUUDSUUUUUUUUUUSIUUUUUUDUUUUUSUUUUUUUUoUUUUUUUDUUUUUUUUUccccccUUUIIIa
aaIIIIUUDDUUUIIIIIUUUSSSIIIIIIIIIIDDIUUUUUUISUIIIUIIUIIUUUIUUUDSSSSSSSSSSSSIUUIIIUDUUUUUSUUUUUUUUUUUUUUUUDUUUUUUUUUUUccccUUUIIIa
aaIIIIUDDUUUIIIUUIIIISUUUIIIIIIIIDDIUUIUUUUUSUUIIUIIUUUUIIIUUUDUUUSSUUUUUUUUUIIIIUDUUUUUSUUUUUUUUUUUUUUUUDUUUIUUUUUUUccUUUIIIIIa
-aaIIIDDDUUUUIIUIIIIIISUUIIIIIIIIDDIUUUUUUUUISUUIUIIIIIIIIIIUUUDUUUSSUUUUUUUUUIIIIDDIIUUUSUUUUUUUUUIIIIIUUDUUUIUUUUUUUUcUUIIIIIIa
+aaIIIDDDUUUUIIUIIIIIISUUIIIIIIIIDDIUUUUUUUUISUUIUIIIIIIIIIIUUUDUUUSTUUUUUUUUUIIIIDDIIUUUSUUUUUUUUUIIIIIUUDUUUIUUUUUUUUcUUIIIIIIa
aaIIDDIUUUUUUUUIIIIIUSUUIIIIIIIIDIIUUUUUUUIISUUUUIIIIIIIIIIUUUDUIISSUUUUUUIIIIIIIDIIIIIISIIIIIIIIIIIUUUUUDUUUIUUUUUUUUUUUIIIIIIa
aaIDDIIUUUUUUUUIIIIIISUUIIIIIIIIDIIUUUUUUUIISUUUUIIIIIIIIIIUUUDUIISSIIIUIIIIIIIIIDIIIIUUSIIIIIIIIIIIUUUUUDUUUIIUUUUUIIIIIIIIIIIa
aaDDIIIIIUUUUUUIIIIIISUIIIIIIIIDDUUUUUUUUUUUSUUUUIIIIIIIIIIUUUDUIISSIIIUUIIUUIIIIDIIIIUUSIUIIIIIIIIIUUUUUDUUUIIUUUUUUUIIIIIIIIIa
aaIIIIIIIUUUUUUUUUSSSSUIIIIIIUUDUUUIIIIUIUSSSUIIIIIIIIIIIIIIIIDIIISSIIIIUUIUIIIIIDIIIIUUSIIIIIIIIIIIUUUUUDIIIIIUUUUUIIIIIIIIIIIa
-aaIIIIIIIUUUUUUUUUSUIIUIUUUUUIIDIUIIIIIUUUSUIIIIIIIIIIIIIIIIIUDIIISSIIIIIUUUIIIIDDIIIISSSIIIIIIIIIIIUUUUUDIIIIIUUUIIIIIIIIIIIIIa
+aaIIIIIIIUUUUUUUHUSUIIUIUUUUUIIDIUIIIIIUUUSUIIIIIIIIIIIIIIIIIUDIIISSIIIIIUUUIIIIDDIIIISSSIIIIIIIIIIIUUUUUDIIIIIUUUIIIIIIIIIIIIIa
aaIIIIIIIUUddUUUUUSUIIIIIIUUIIIDUUUIIIIIUUSUIIIIIIIIIIIIIIIIIUDIIISSIIIIIIIUIIIIDIIIIISUIIIIIIIIIIIIIUIIIDDIIIIIIUIIIIIIIIIIIIIa
aaIIIIIIIIUddUdUUUSUIIIIIIIIIIDDUUIIIIIIUUSUUIIIIIIIIIIIIIIIIUDIIISSIIIIIIIIIIIIDIIUUUSSIUUUIIIIIIIIIUIIIIDIIIIIIUIIIIIIIIIIIIIa
aaIIIIIIIIUdUUdUUUSUUUUIIIIIIUDUUIIIIIIIIUSIIIUUUUUUUUUUUIIIIIDIIISSIIIIIIIIIIIIDIUUUUISUUUUUIIIIIIIIUIIIIDUUIIIIUIIIIIIIIIIIIIa
-aaIIIIIIIIUdUUUUUUSUUUUIIUUUUUDIIIIIIIIUUUSUUUUUUUUUUUUUUUUUUUDUUUSSUUUUIIIIIIIIDIUUUIUSUUUUUIIIIIIIIUIIIIDDUIIIIUIIIIIIIIIIIIIa
-aaaaIIIIUUddUUddUUSUUUUUUUIUIIDIIIIIIIIUUUSUUUUUUUUUUUUUUUSSSSDSSSSSUUUUIIIIIIIIDIIUUUUSUUUUUUIIIIIIIUIIIIUDDUUIIUIIIIIIIIIIIIIa
+aaIIIIIIIIUdUUUUUUSUUUUIIUUUUUDIIIIIIIIUUUSUUUUUHUUUUUUUUUUUUUDUUUSSUUUUIIIIIIIIDIUUUIUSUUUUUIIIIIIIIUIIIIDDUIIIIUIIIIIIIIIIIIIa
+aaaaIIIIUUddUUddUUSUUUUUUUIUIIDIIIIIIIIUUUSUUUUUUUUUUUUUUUSSSSDSSSSSHUUUIIIIIIIIDIIUUUUSUUUUUUIIIIIIIUIIIIUDDUUIIUIIIIIIIIIIIIIa
aaaaIIddddddUUddUUSUUUUIIIIIIDDIIIIIIUUUUUSUUUUUUUUUIIIUUUSUUUDUUUUUUUUUIIIIIIIIDIIIUUUSUUUUUUIIIIIIIUIIIIUUDUUIIUIIIIIIIIIIIIIa
aaaadIdddUUUUdddUUSUUUUIIIIIIDIIIIIIIUUUUUSUUIIIIIIIIIIIIISUUIDDIIIIIIIIIIIIIIIIDIIIIIISUUUUUUUUUUIIIUUUUUUUDDUUIUIIIIIIIIIIIIIa
aaaaIIdIIUUUUdddUUSUUUUUUUUUUDUUUUUSSSSSSSSUUIIIIIIIIIIIIISUUIDDIIIIIIIIIIIIIIIDDIIIIIISUUUUUUUUIIIIIUUUUUUUUDUUUUUIIIIIIIIIIIIa
aaaaIddIIIUUUUUUUUSSSSSSSSSSDDSSSSSSSSIIIIIIUIIIIIIIIIIIIISUUIDDIIIIIIIIIIIIIIIDIIIIIIUSSUUUUUIUUUUIIUUUUUUUUDDUIIIIIIIIIIIIIIIa
-aaIIIdddIIISSSSSSSSSUUIIIIIIDIUUUUUUUSUIIIIIUIIIIIIIIIIIIISUUIIDIIIIIIUIUIIIIIIDIIIIIUUISIUUUIIIIIIIIIIIUUUUUUDUIIIIIIIIIIIIIIIa
+aaIIIdddIIISSSZSSSSSUUIIIIIIDIUUUUUUUSUIIIIIUIIIIIIIIIIIIISUUIIDIIIIIIUIUIIIIIIDIIIIIUUISIUUUIIIIIIIIIIIUUUUUUDUIIIIIIIIIIIIIIIa
aaIIIIIIIIISUUUUUUUUUIUIIUUUDIIIIIIIISUIIIIIUIUUIIIIIIIIIISUUIIDIIIIIUUIIIIIIIIDIIIIUIIUSUIIUUIIIIIIIIIUUUUUUUDDIIIIIIIIIIIIIIIa
aaIIIIIIIUISUIIIIIIIUIUIUUUUDIUUIIIIISUIIIIIUIUUIIIIIIIIUUSUUIIDIIIIIUUIIIIIIIIDIIIUUUUUSUIIIIIIIIIIIIIUUUUUUUUDIIIIIIIIIIIIIIIa
aaaaaIIIIIISUIIIIIUIIUUUUIUIDUUIIIIIISUIIIIIUUUUIIIIIIIUUUSUUUUDUIIUUUUUUIUIIUIDIIUUSSSSSUIIIIIIIIIIIIIUUUUUUUUDDIIIIIIIIIIIIIIa
aaaaaIIIIUISIIIIIIUUUUUUIUUIDIIIIIIIISUIIIIUUUUUIIIIIIIUUUSUUUDDUIIUIIIIIIUUUIIDIIUUSIUIUIIIIIIIIIIIIUUUUUUUUUUUDIIIIIIIIIIIIIIa
-aaaaaIIIIIUSIUIIIIIIIIUUIIIDDIIIIIIIISUIIIIUIUUUIIIIIIIUUUSUUUDUUIIUUIIIIUIIIIIDIIIISUUUUIIIIIIUUUIIIUUUUUUUUUUUDDIIIIIIIIIIIIIa
+aaaaaIIIIIUSIUIIIIIIIIUUIIIDDIIIIIIIISUIIIIUIUUUIIIIIIIUUUSUUUDUUIIUUIIIIUIIIIIDIIIISUUUUIIIIIIUUUIIIUUUUUHUUUUUDDIIIIIIIIIIIIIa
aaaaaIIIIIUSSSSIIIIIIIUUIIIDUIIIIIIIISUIIIIUUIUUIIIIIIIUUUSUUUDUUIIIUIUUUUUIIIIDIIUUSUIUIIIIIIIIIIUUUUUUUUUUUUUIIDDIIIIIIIIIIIIa
aaaaaIIIIIUUIISIIIIIUIUIIIIDUIIIIIUIISUIIIIIUIIUUUIIIIIUUUSSSUDUUIIIUUUIUUUUIIIDIUUISUUIIIIIIIIIIIUUUUUUUUUUUUUIIIDIIIIIIIIIIIIa
aaaaaIIIIIUUIISIIIUUUIIUIIIDUIIIIIUUISUIUUUUUUUUUUIIIIIIUUUUSUDUUUUUUIIIIUUUUIIDIUUUSIIIIIIIIUIIIIUUUUUUUUUUUUUIIIDDIIIIIIIIIIIa
-aaaaaIIIIIIUIISIIIIUUIIIIIIDUIIIUIIUUSUUUIUUUUUUUUIIIIIIIUUUSUDUUUUUUUUIIUUUIIIDUUIISIIUIIIIISSSSSSSSSSSSSSSSSUUIIIDIIIIIUUIIIIa
+aaaaaIIIIIIUIISIIIIUUIIIIIIDUIIIUIIUUSUUUIUUUUUUUUIIIIIIIUUUSUDUUUHUUUUIIUUUIIIDUUIISIIUIIIIISSSSSSSSSSSSSSSSSUUIIIDIIIIIUUIIIIa
aaaaaIIIIIIUUUSIIIIIIIUIUIDDUIIIUIIIISSSUUUUUUUUcUIIIIIIIIIISUDUUUUUUIUIUIIUIIIDUIIISUIIIIIIISIIIIUUUUUUUIIIUSUUIIIDDIIIIUUIIIIa
aaaaaIIIIIIUUUSIIIIIIIIUIUDIUIIIUIIIIIUSUUUUUccccUIIIIIIIIIISIDIIIIIIIIIIIIUUIIDSSSSSUIIIIIIISIIIIUUUUUUUIIIUSUUIIIIDDUUUUUIIIIa
-aaaaaIIIIIIIUUSIIIIIIUUUUUDSSSSSSSSSSSSSUUUUUccccUIIIIIIIIIISIDIIIIIIIIIIIIUSSSDSUUIIIUIIIIIISIIIIIIIUIIIIIIUSUUIIIIIDUUUUUIIIIa
+aaaaaIIIIIIIUUSIIIIIIUUUUUDSSSSSSSSSSSSSUHUUUccccUIIIIIIIIIISIDIIIIIIIIIIIIUSSSDSUUIIIUIIIIIISIIIIIIIUIIIIIIUSUUIIIIIDUUUUUIIIIa
aaaaaIIIIIIIUUSUUUIUIUUUUDDSUUUUIIIIUUUUUUUUUccccUIIIUUIUIIISIDDIIIIIIIIIIUUSUIDIIUUUUIIIIIIISIIIIIIIUIIIIIIUSUUIIIIIDUUUUUIIIIa
aaaaaIIIIIIIIUSUUUIUIUUUUDUSUUUIIIIIIIUUUUUUUUccUUIIIUIIUUIUSUIDIIIIIIIIIUUUSUIDIIIIIIIIIIIIISIIIIIIIUUIIIIIUSUUIIIIIDUUUUUUUIIa
aaaaaIIIIIIIIUSUUUIUUUUUUDUSSSSSSIIIIIIIIIIUUUccUUIIIUIIUUSSSUUDIIIIIIIIIIUUSUUDUUUIIIIIIIIIISIIIIIIIUUIIIIIUSUUIIIIIDDUUUUUUIIa
aaaaaIIIIIIIIISIIIIUUUUUUDUUUUUUSSSSSIIIIIIIIUUUUUIIIUUIUISUUIIDIIIIIIIIIIUUSSSDUUUIIIIIIIIIISIIIIIUUUUIIIIIUSSSSSSSSSDDUUUUUIIa
aaaaaIIIIIIIIISSSIIIUUUUUDUUUUUUUUUUSIIIIIIIIUIIUUIIIIUUUUSIIIIDIIIIIIIUUUUUUUUDDUUIIIIIIIIIISIIUUUUUUUIIIIIUUUUUUUIIUUDUUUUUIIa
aaaaaIIIIIIIIIIISSSSSSSUUDUUUUUUUUUUSIIIIIIIIUIIIIIIIIIIUUSUUIIDIIIIIUUUUUUUUUUSDUUIIIIIIIIUUSUUUIIUUIIIIIIIUUUUIIIIIIUDUUUUUIIa
-aaaaaIIIIIIIIIIIUUUUUUSUUDUUUUUUUUUUSSSSSSSSSSUIIIIIIIIIUISUIIIDIIIIIUUUUUUUUUUSDUUIIIIIUUUUUSUUUIIIIIIIIIIIUUUUIIIIIUUDUUUUUIIa
-aaaaaIIIIIIIIIIUUUUUUUSUDDIUUUUUUUUUUUUUUUUUUSUUUUIIIIIIIISUUIUDUIIIIUUUUUUUUUUSDUUIIIIIUUUUUSSSSSSSSSSSSSSSSSUUIIIIIUUDUUUUUIIa
-aaaaaIIIIIIIIUUIIIIUUUSUDUUUUUUUUUUUUIIIIIIIISUUUUIIIIIIIISUUUUDUIIIIUUUUUUUUUUSDUUIIIIIIUUUUSUUUIIIIIIIIIIIUSUUIIIIIUUDUUUUUIIa
+aaaaaIIIIIIIIIIIUUUUUUSUUDUUUUUUUUUUSSSSSSSSSSUIIIIIIIIIUISUIIIDIIIIIUUUUUUUUUUSDUUIIIIIUUUUUSUUUIIIIIIIIIIIUUUUIIIIIUUDUFUUUIIa
+aaaaaIIIIIIIIIIUUUUUUUSUDDIUUUUFUUUUUUUUUUUUUSUUUUIIIIIIIISUUIUDUIIIIUUUUFUUUUUSDUUIIIIIUUUUUSSSSSSSSSSSSSSSSSUUIIIIIUUDUUUUUIIa
+aaaaaIIIIIIIIUUIIIIUUUSUDUUUUUUUUUUUUIIIIIIIISUUUUIIIIIIIISUUUUDUIIIIUUUUUUUUUUSDUUIIIIIIUUUHSUUUIIIIIIIIIIIUSUUIIIIIUUDUUUUUIIa
aaaaaIIIIIIIIUIIIIIUUUSUDUUUUUUUUUUUUIIIIIIUUSUUUUUIIIUUUUSUUUUDUUUIIUUUUUUUUUUSDUUUUUUUUUUUUSUUUIIIIIIIIIIIUSSSSSSSSSSDUUUIIIIa
aaaaaIIIIIIUUIIIIIIUUUSUDUUUUUUUUUUUUIUUIIIUUSSSSSSSSIUUUUSUUUUDDUUIIUUUUUUUUUUSDSSSSSSSSSSSSSUUUIIIIIIIIIIIUSUUUUUUUUIDIUUUIIIa
aaaaaIIIIIIUIIIIIIIUUUSUDUUUUUUUUUUUUIIUUIIIUIIUUUUUSIUUUUSUUUUUDUUIIIIIIUUUUUUUDUUUIIIIIIIUSIIIIIIIIIIIIIIIUSUUIIIIIIIDIUUUIIIa
-aaIIIIIIIIIUIIIIIIIUUUSUDUUUUUUUUUUUUIIIUUIIUUUUUUUISSSSSSSUUUUUDUUIIIIIIIIUUUUUDUUUIIIIIIUUSUUIIIIIIIIIIIIIISUIIIIIIIIDIUUUIIIa
+aaIIIIIIIIIUIIIIIIIUUUSUDUUUUUUUUUUUUIIIUUIIUUUUUUUISSSSSZSUUUUUDUUIIIIIIIIUUUUUDUUUIIIIIIUUSUUIIIIIIIIIIIIIISUIIIIIIIIDIUUUIIIa
aaIIIIIIIIIUUIIIIIIUUUSUDUUUUUUUUUUUUIIUUIUUUUIUUUUIUIUUUUUUUUUUDUUIIIIIIIIUUUUUDUUUIIIIIUUISSSUIIIIIUUUUIIIUSUIIIIIIIIDIIIIIIIa
aaIIIIIIIIUUUIIIIIIUUUSUDUUUUUUIUUUUUUUIUIUUIUIUUIIIIIUUUUUUUUUUDUUIIIIIIIIUUUUUDUIIIIIIUUIUUUSUIIIISSSSSSSSSSUUUIIIIIDDIIIIIIIa
aaIIIIIcccUIIIIIIaaUUUSUDUUUUUUIIUUUUUUUUUUIIUIUUIIIIIIUUUUUUUUUDUUUUIIIIIIUUIUUDUIIIIIIUUUUUISSSSSSSUUUUUUUIUUIIIIIIIDIIIIIIIIa
diff --git a/_maps/map_files/roguetown2/otherz/smallforest.dmm b/_maps/map_files/roguetown2/otherz/smallforest.dmm
index 07e6b93637..f74a5488d1 100644
--- a/_maps/map_files/roguetown2/otherz/smallforest.dmm
+++ b/_maps/map_files/roguetown2/otherz/smallforest.dmm
@@ -41,6 +41,7 @@
"iM" = (/obj/structure/closet/crate/roguecloset,/turf/open/floor/rogue/ruinedwood{icon_state = "horzw"},/area/rogue/indoors)
"iS" = (/turf/open/floor/rogue/dirt/road,/area/rogue/outdoors/rtfield)
"jC" = (/obj/structure/fluff/signage,/turf/open/floor/rogue/dirt/road,/area/rogue/outdoors/woods)
+"ka" = (/obj/effect/landmark/start/adventurerlate{icon_state = "arrow"; dir = 4},/turf/open/floor/rogue/dirt,/area/rogue/outdoors/woods)
"kc" = (/turf/closed/wall/mineral/rogue/wooddark/end{icon_state = "endwooddark"; dir = 8},/area/rogue/indoors)
"ke" = (/obj/structure/fluff/wallclock/r,/turf/open/floor/rogue/cobble,/area/rogue/indoors)
"kn" = (/obj/structure/flora/newtree,/obj/structure/flora/newtree,/turf/open/floor/rogue/grass,/area/rogue/outdoors/woods)
@@ -117,6 +118,7 @@
"zY" = (/turf/closed/wall/mineral/rogue/wooddark,/area/rogue/indoors)
"Az" = (/obj/structure/roguewindow,/turf/open/floor/rogue/dirt/road,/area/rogue/indoors)
"AC" = (/obj/structure/bars/passage{redstone_id = "woodsmprison"},/turf/open/floor/rogue/dirt/road,/area/rogue/indoors)
+"AG" = (/obj/effect/landmark/start/adventurerlate,/turf/open/floor/rogue/dirt,/area/rogue/outdoors/woods)
"AO" = (/obj/structure/chair/wood/rogue,/turf/open/floor/rogue/cobble,/area/rogue/indoors)
"AR" = (/turf/open/floor/rogue/ruinedwood{icon_state = "horzw"},/area/rogue/indoors)
"AW" = (/obj/machinery/light/rogue/oven/south,/turf/open/floor/rogue/tile{icon_state = "chess"},/area/rogue/indoors)
@@ -140,6 +142,7 @@
"Fh" = (/obj/structure/roguemachine/vendor{keycontrol = "butcher"},/turf/open/floor/rogue/cobblerock,/area/rogue/outdoors/woods)
"Fn" = (/obj/structure/closet/crate/chest,/turf/open/floor/rogue/wood,/area/rogue/indoors)
"Fy" = (/obj/machinery/light/rogue/hearth,/turf/open/floor/rogue/dirt/road,/area/rogue/indoors)
+"FO" = (/obj/effect/landmark/start/adventurerlate{icon_state = "arrow"; dir = 8},/turf/open/floor/rogue/dirt,/area/rogue/outdoors/woods)
"FW" = (/obj/machinery/light/rogue/torchholder{pixel_y = 26},/turf/open/floor/rogue/woodturned,/area/rogue/outdoors/woods)
"GG" = (/obj/structure/ladder,/turf/open/floor/rogue/ruinedwood{icon_state = "horzw"},/area/rogue/indoors)
"GK" = (/obj/effect/landmark/events/testportal{aportalloc = "forest"},/turf/open/floor/rogue/dirt/road,/area/rogue/outdoors/woods)
@@ -198,6 +201,7 @@
"RE" = (/obj/structure/table/wood{layer = 2.8},/obj/item/natural/stone,/turf/open/floor/rogue/woodturned,/area/rogue/indoors)
"RH" = (/turf/open/floor/rogue/rooftop/green{dir = 4},/area/rogue/outdoors/woods)
"RT" = (/turf/open/floor/rogue/ruinedwood{icon_state = "vertw"; dir = 1},/area/rogue/indoors)
+"SE" = (/obj/effect/landmark/start/adventurerlate{icon_state = "arrow"; dir = 8},/turf/open/floor/rogue/dirt/road,/area/rogue/outdoors/woods)
"SR" = (/turf/open/floor/rogue/dirt/road,/area/rogue/indoors)
"Tf" = (/turf/open/floor/rogue/woodturned,/area/rogue/indoors)
"Tj" = (/obj/item/reagent_containers/food/snacks/smallrat,/turf/open/floor/rogue/woodturned,/area/rogue/indoors)
@@ -218,6 +222,7 @@
"Xg" = (/obj/effect/landmark/events/testportal{aportalloc = "woodsman"},/turf/open/floor/rogue/cobblerock,/area/rogue/outdoors/woods)
"XH" = (/obj/structure/fluff/dryingrack,/obj/item/needle/thorn,/turf/open/floor/rogue/woodturned,/area/rogue/outdoors/woods)
"XO" = (/obj/structure/mineral_door/wood/red{locked = 1; lockid = "woodsm"},/turf/open/floor/rogue/ruinedwood,/area/rogue/indoors)
+"Yi" = (/obj/effect/landmark/start/adventurerlate{icon_state = "arrow"; dir = 1},/turf/open/floor/rogue/dirt,/area/rogue/outdoors/woods)
"Yn" = (/obj/structure/roguemachine/mail,/turf/open/floor/rogue/cobblerock,/area/rogue/outdoors/woods)
"Yv" = (/turf/closed/wall/mineral/rogue/decowood,/area/rogue/indoors)
"Yx" = (/obj/structure/closet/crate/roguecloset,/obj/item/candle,/obj/item/candle/yellow,/turf/open/floor/rogue/ruinedwood,/area/rogue/indoors)
@@ -232,33 +237,33 @@
"ZW" = (/obj/structure/closet/crate/roguecloset,/obj/item/storage/roguebag,/turf/open/floor/rogue/ruinedwood{icon_state = "horzw"},/area/rogue/indoors)
(1,1,1) = {"
-dIdIJcdIrudIJcdILuVhVhVhVhdIrudIJcdIJcBmBmBmBmskskskskskskskskskskskskskskskskJcBmBmBmBmBmBmBmJcJcJcububCNCNCNububJcBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmJcJcJcJcdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIBmBmBmBmBmBmBmBmBmBmBmBmBmBmJcdIdIdIdIdIdIdI
+dIdIJcdIubdIJcdILuVhVhVhVhdIubdIJcdIJcBmBmBmBmskskskskskskskskskskskskskskskskJcBmBmBmBmBmBmBmJcJcJcububCNCNCNububJcBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmJcJcJcJcdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIBmBmBmBmBmBmBmBmBmBmBmBmBmBmJcdIdIdIdIdIdIdI
dIJcJcJcubJcJcJcLuVhVhVhVhLuubJcJcJcJcBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmskskBmBmBmBmBmBmBmBmBmBmJcJcJcubububububububJcJcJcJcBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmJcJcJcJcJcJcJcJcJcJcJcBmBmBmBmBmJcJcJcJcJcBmBmBmBmBmBmBmBmBmBmBmBmBmBmJcJcJcdIdIdIdIdI
dIJcJcJcubJcJcJcLuVhVhVhVhLuubJcBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmskskBmBmJcJcJcJcJcJcJcJcububububububububOuubJcJcJcJcJcBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmJcJcJcJcJcJcJcJcJcJcJcJcJcBmBmBmBmBmBmJcJcJcJcJcBmBmBmBmBmBmBmBmBmBmBmBmJcJcJcJcJcJcdIdIdI
dIJcJcJcubJcJcJcLuVhVhVhVhLuubJcJcJcBmBmBmJcBmBmJcJcJcJcJcJcJcJcJcBmBmskskBmBmJcJcubububububububububububububububububububububJcJcBmBmBmBmBmBmBmBmBmBmBmBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcBmBmBmBmBmBmJcJcJcJcJcBmBmBmBmBmBmBmBmBmBmBmBmBmJcJcJcJcJcdIdIdI
dIJcJcJcubJcJcJcLuVhVhVhVhLuubJcJcJcBmBmBmJcJcJcJcJcJcJcJcJcJcJcJcBmBmskskBmJcJcJcubJcJcJcJcJcJcJcBmBmBmBmubububJcJcJcJcJcubJcBmBmBmBmBmBmBmBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcBmBmBmBmBmBmJcJcJcJcJcJcBmBmBmBmBmBmBmBmBmBmBmBmBmJcubububJcdIdI
-dIBmBmJcubJcJcJcLuVhVhVhVhVhLuJcJcJcBmBmBmJcJcJcJcJcJcJcJcJcJcJcJcJcBmskskJcJcJcJcububububJcJcJcBmBmBmJcBmJcJcJcJcJcJcJcJcubJcJcBmBmJcBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcBmBmBmBmBmBmBmBmBmBmBmJcJcJcJcJcJcBmBmBmBmBmBmBmBmBmBmBmBmBmJcubububJcdIdI
+dIBmBmJcubFOJcJcLuVhVhVhVhVhLuJcJcJcBmBmBmJcJcJcJcJcJcJcJcJcJcJcJcJcBmskskJcJcJcJcubububSEJcJcJcBmBmBmJcBmJcJcJcJcJcJcJcJcubJcJcBmBmJcBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcBmBmBmBmBmBmBmBmBmBmBmJcJcJcJcJcJcBmBmBmBmBmBmBmBmBmBmBmBmBmJcubububJcdIdI
dIBmBmJcJcJcJcLuVhVhVhVhVhVhVhLuJcBmBmBmBmJcJcbpJcJcJcJcJcJcJcJcJcJcBmskskJcJcJcJcJcJcJcubJcJcJcBmBmBmJcJcJcJcJcJcJcJcJcJcubJcJcBmBmJcBmBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcBmBmBmBmBmBmBmJcJcBmBmBmBmBmBmBmJcJcJcJcJcJcJcJcBmBmBmBmBmBmBmBmBmBmBmJcubOuububufdI
dIJcBmJcJcJcJcLuVhVhVhVhVhVhVhNkJcBmBmBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcBmskskBmJcJcJcJcJcJcubJcJcJcBmBmBmBmBmBmBmBmBmBmBmBmBmubJcJcBmBmBmBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcBmBmBmBmBmBmBmBmBmBmBmBmJcJcBmBmBmBmBmBmJcJcJcJcJcJcJcJcBmBmBmBmBmBmBmBmBmBmJcJcububububdIdI
-dIBmJcJcJcJcJcbpVhJcJcVhVhVhVhLuJcBmBmBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcBmskskBmubububububububJcJcJcBmBmBmBmBmBmBmBmBmBmBmBmBmubJcBmBmBmBmBmJcJcJcJcJcJcJcJcJcJcJcJcBmBmBmBmBmBmBmBmBmBmBmBmBmJcJcJcBmBmBmBmJcJcJcJcJcJcJcJcJcJcJcJcBmBmBmBmBmBmBmBmJcubububububufdI
+dIBmJcJcJcJcJcbpVhJcJcVhVhVhVhLuJcBmBmBmJcJcJcJcJcJcJcJcAGJcJcJcJcJcBmskskBmubububububububJcJcJcBmBmBmBmBmBmBmBmBmBmBmBmBmubJcBmBmBmBmBmJcJcJcJcJcJcJcAGJcJcJcJcBmBmBmBmBmBmBmBmBmBmBmBmBmJcJcJcBmBmBmBmJcJcJcJcJcJcJcJcJcJcJcJcBmBmBmBmBmBmBmBmJcubububububufdI
dIBmJcJcJcJcLuVhVhJcJcVhVhVhVhLuJcBmBmBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcBmBmBmBmubJcJcJcJcJcJcJcJcJcBmBmJcJcJcBmBmBmBmBmBmJcJcubJcBmBmBmBmBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcBmBmBmBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcubJcJcJcubdIdI
dIBmJcJcJcJcLuVhVhJcJcJcVhVhVhLuJcBmBmBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcBmBmubJcJcJcJcJcJcJcJcJcBmBmBmJcJcJcJcJcbpJcJcubububJcBmBmBmBmBmBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcububububububububububububububububububububububububububububububJcBmJcubufdI
dIBmJcJcJcBmLuVhVhBmJcJcVhVhVhLuBmBmBmBmJcJcJcJcJcJcJcJcJcJcJcBmBmBmJcJcBmJcubJcJcBmBmJcJcJcBmBmBmBmJcJcJcJcJcJcJcJcJcubJcJcJcJcBmBmBmBmBmJcJcJcJcJcJcJcJcJcububububububububububububububububububububJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcBmJcJcdIdI
dIBmJcJcJcJcLuVhVhJcJcJcVhVhVhLuJcBmBmBmBmBmBmJcJcJcJcBmJcJcJcJcJcBmBmJcBmJcubBmBmBmBmBmJcBmBmBmBmJcJcJcJcJcJcJcJcJcJcubJcJcJcJcBmJcJcBmBmBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcubJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcBmBmBmBmBmBmBmBmBmBmBmJcJcdI
-dIJcJcJcJcBmLuVhVhJcJcBmVhVhVhLuBmBmBmBmBmBmBmBmJcJcJcBmJcJcJcbpJcJcJcububububJcJcBmBmBmJcJcJcBmBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcubJcJcBmBmBmBmBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcubJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcBmBmBmBmBmBmBmBmBmBmBmJcdIdI
+dIJcJcJcJcBmLuVhVhJcJcBmVhVhVhLuBmBmBmBmBmBmBmBmJcJcJcBmJcJcJcbpJcJcJcububububJcJcBmBmBmJcJcJcBmBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcubJcJcBmBmBmBmBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcubJcJcAGJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcBmBmBmBmBmBmBmBmBmBmBmJcdIdI
dIJcJcJcJcBmLuVhVhBmJcJcVhVhVhLuJcBmBmBmBmJcBmBmBmJcJcBmBmJcJcJcJcJcJcubJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcubJcJcJcBmBmBmBmBmBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcubJcJcJcJcJcJcJcBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmJcBmBmBmBmBmJcdIdI
dIJcJcJcJcJcLuVhVhBmJcJcVhVhVhLuBmBmBmJcJcJcJcBmBmJcJcBmBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcubJcJcJcJcBmBmBmBmBmJcBmBmBmJcJcBmBmBmBmBmJcJcJcJcJcJcJcubJcJcJcJcJcJcJcBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmJcdIdI
-dIEpububGKubLuvVVhJcJcLuVhVhVhLuJcJcBmJcJcJcJcJcJcJcJcJcBmJcJcJcJcJcJcJcJcJcubububububububububububububububububububububububububububJcJcJcJcBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmJcBmBmJcBmJcJcubJcJcJcJcBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmJcJcdI
+dIubububGKubLuvVVhJcJcLuVhVhVhLuJcJcBmJcJcJcJcJcJcJcJcJcBmJcJcJcJcJcJcJcJcJcubububububububububububububububububububububububububububJcJcJcJcBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmJcBmBmJcBmJcJcubJcJcJcJcBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmJcJcdI
dIJcJcJcubJcLuVhVhJcJcLuVhVhVhLuJcJcBmJcJcJcJcJcJcJcJcJcBmBmJcJcJcJcJcJcJcJcububJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcubJcJcJcJcBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcBmBmBmBmBmBmBmBmBmJcBmBmBmBmBmJcdIdI
-dIJcJcJcubLuLuVhVhJcJcJcVhVhVhLuJcJcBmBmJcJcJcJcJcJcJcJcBmBmJcJcJcJcJcJcJcJcububJcJcJcJcJcJcJcJcsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNJcubJcJcJcBmBmBmBmBmBmBmBmBmBmJcBmBmBmBmJcJcJcJcJcJcJcJcesJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcBmBmBmBmBmBmBmBmBmBmJcBmBmBmBmBmdIdI
+dIJcJcJcubLuLuVhVhJcJcJcVhVhVhLuJcJcBmBmJcJcJcJcJcJcJcJcBmBmJcJcJcJcJcJcJcJcubSEJcJcJcJcJcJcJcJcsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNJcubJcJcJcBmBmBmBmBmBmBmBmBmBmJcBmBmBmBmJcJcJcJcJcJcJcJcesJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcBmBmBmBmBmBmBmBmBmBmJcBmBmBmBmBmdIdI
dIJcJcJcububLuVhVhLuJcLuVhVhVhLuJcJcBmBmJcJcJcJcJcJcJcJcBmBmJcJcJcJcJcJcJcJcububJcJcJcJcJcJcJcJcsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNJcubJcJcJcBmJcBmBmBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcsNsNsNsNsNsNsNJcJcJcBmBmBmJcBmBmBmBmBmJcdI
-dIJcBmBmBmubLufAfAfAfAfAVhVhHcLuJcJcJcBmJcJcJcbpJcJcJcJcJcBmJcJcJcJcJcJcJcJcububJcJcJcJcJcJcJcBmLgLgLgLgLgsNsNsNsNsNsNsNsNsNsNJcubJcJcJcJcBmBmBmsNsNsNsNsNsNsNLgsNsNsNsNsNsNsNsNsNsNsNsNJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcsNsNsNsNsNsNsNJcJcJcJcJcJcJcBmBmBmBmBmJcdI
+dIJcBmBmBmubLufAfAfAfAfAVhVhHcLuJcJcJcBmJcJcJcbpJcJcJcJcJcBmJcJcJcJcJcJcJcJcububJcJcJcJcJcJcJcBmLgLgLgLgLgsNsNsNsNsNsNsNsNsNsNJcubJcJcJcJcBmBmBmsNsNsNsNsNsNsNLgsNsNsNsNsNsNsNsNsNsNsNsNJcJcJcJcJcJcJcJcJcJcJcJcJcJcFOsNsNsNsNsNsNsNJcJcJcJcJcJcJcBmBmBmBmBmJcdI
dIJcJcJcBmubLufAfAfAfAfAVhVhVhLuLuLuJcBmBmBmJcJcJcJcJcJcJcBmJcJcJcJcJcJcJcJcububJcJcJcJcJcsNLgLgLgLgLgLgLgsNsNsNsNsNsNsNLgHhsNJcubJcJcJcJcBmBmBmsNsNsNsNsNsNLgLgsNsNsNsNsNsNsNsNsNsNsNsNJcJcJcBmJcJcJcJcJcJcJcJcJcJcJcsNsNsNsNsNsNsNJcJcJcJcJcJcJcBmBmBmBmBmJcdI
dIBmBmBmBmububLuLuLuLuLufAfAfAVhVhLuJcBmBmBmJcJcJcJcJcJcJcBmBmJcJcJcJcJcJcJcububJcJcJcJcJcsNLgLgJcJcJcJcJcJcJcJcJcJcJcJcJcBmJcJcJcsNJcJcJcBmBmJcJcJcJcBmJcJcJcJcJcBmBmJcJcJcsNJcsNsNsNsNJcJcJcBmJcJcJcJcJcJcJcJcBmBmBmLgLgLgLgsNsNsNJcsNsNsNJcJcJcBmBmBmBmBmdIdI
dIskskBmJcBmubububububLufAfAfAVhVhLuJcBmBmBmJcJcJcJcJcJcJcJcBmJcJcJcJcJcJcJcububJcJcJcJcBmsNLgLgJcJcJcJcJcBmBmJcJcJcBmBmBmBmJcJcJcJcsNBmLgBmJcJcJcJcJcJcBmJcJcBmBmJcJcJcJcJcBmJcsNsNsNsNJcJcJcBmJcJcJcJcBmBmBmBmBmBmBmLgLgLgLgsNsNsNJcsNsNsNJcJcJcBmBmBmBmBmdIdI
dIskskBmBmBmBmBmJcJcubLuLuLuVhVhVhPAJcBmBmBmJcJcJcJcJcJcJcJcBmBmJcJcJcJcJcJcububJcJcJcJcBmLgLgLgBmJcJcBmJcJcBmBmJcJcJcJcBmJcJcJcJcJcJcCGsNsNsNJcJcJcJcsNJcJcBmJcJcBmBmBmBmBmJcJcsNsNsNsNJcJcBmBmJcJcJcJcBmBmBmBmBmBmBmLgLgLgsNsNsNsNJcsNsNsNJcJcJcJcBmBmBmBmdIdI
dIdIskskskskskskJcJcububLuLuVhVhVhLuJcBmBmBmJcJcJcJcJcJcJcJcBmBmBmJcJcJcJcJcububJcJcJcJcBmLgsNLgtMBmBmBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcCGJcJcJcJcJcJcsNsNJcBmBmJcJcBmJcJcJcJcJcJcLgLgLgLgJcJcBmBmJcJcJcJcJcJcJcJcBmBmBmLgLgLgsNsNsNsNJcsNsNsNJcJcJcJcBmBmBmBmdIdI
-dIdIdIskskskdIskBmJcububLuLuVhVhVhLuJcBmBmBmJcJcJcJcJcJcJcJcJcBmBmJcJcJcJcJcJcJcJcJcJcBmBmsNLgLgJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcCGJcJcJcJcJcJcJcJcJcJcJcJcBmBmBmJcJcJcJcJcLgLgLgLgBmJcBmBmJcJcJcJcJcJcJcJcBmBmBmLgLgLgsNsNsNsNJcsNsNsNJcJcJcJcBmBmBmBmdIdI
+dIdIdIskskskdIskBmJcububLuLuVhVhVhLuJcBmBmBmJcJcJcJcFOJcJcJcJcBmBmJcJcJcJcJcJcJcJcJcJcBmBmsNLgLgJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcCGJcJcJcJcJcJcJcJcJcJcJcJcBmBmBmJcJcJcJcJcLgLgLgLgBmJcBmBmJcJcJcJcJcJcJcJcBmBmBmLgLgLgsNsNsNsNJcsNsNsNJcJcFOJcBmBmBmBmdIdI
dIJcJcskskskdIdIBmBmubububLuVhVhVhLuJcBmBmBmBmJcJcJcJcJcJcJcJcBmBmBmJcJcJcJcJcJcJcJcJcBmBmLgLgsNBmJcJcJcJcububububububububububcMcMcMcMcMcMcMcMcMububJcJcJcJcJcJcBmBmJcJcJcJcBmJcsNLgLgLgJcBmBmLgLgsNsNsNsNsNsNsNLgLgLgLgLgLgsNsNsNsNJcsNsNsNJcJcJcJcBmBmBmBmdIdI
dIJcBmskdIdIdIdIJcBmBmJcubLuVhVhVhLuJcJcBmBmBmJcJcJcJcJcJcJcJcBmBmBmJcJcJcJcJcJcJcJcBmBmBmBmJcJcBmJcJcJcJccMqdqdqdqdqdzYvavavazYubnOgasNsNsNdAcMhHabJcJcJcBmBmJcBmBmJcsNJcJcJcBmLgLgLgLgJcBmBmLgLgsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNJcJcJcBmBmBmBmdIdI
dIBmBmdIdIdIdIdIJcBmBmJcubLuVhVhVhLuJcJcBmBmBmJcJcJcJcJcJcJcBmBmBmJcJcJcJcJcJcJcJcBmBmBmBmJcJcJcJcJcJcJcJcqdubububububvaPtRtJAvaubsNsNgasNsNubcMFeabJcJcJcJcJcJcBmtMsNsNJcJcJcBmsNsNLgLgBmBmBmLgLgsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNJcJcBmBmBmBmBmdIdI
@@ -267,98 +272,98 @@ dIdIdIdIdIdIdIdIJcJcBmBmubLuHcVhVhLuLuJcJcBmBmJcJcJcBmBmBmBmJcJcJcJcJcJcBmBmBmJc
dIdIdIdIdIdIdIdIJcJcBmBmubLuVhVhVhLuLuLuJcBmJcBmBmBmBmJcJcJcJcJcJcJcJcJcBmBmBmBmBmBmJcJcJcJcJcLgBmJcBmJcJcqdsNsNubububzYvkRToAvasNsNZmsNsNsNsNYnsNabJcJcJcJcJcJcJcJcJcsNJcJcJcJcJcJcJcJcJcJcJcLgLgLgLgLgsNsNsNsNsNsNLgLgLgLgLgLgLgLgsNLgLgLgLgJcJcJcBmBmBmBmdIdI
dIdIdIdIdIdIskBmBmBmBmBmubLuVhVhVhVhVhVhLuJcBmBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcBmBmJcJcJcJcJcJcJcLgBmBmBmJcJcqdsNsNubdZubzYRTaBARuosNabababababababababubububububJcJcJcJcsNsNJcJcJcJcJcJcJcJcJcJcLgLgLgLgLgsNsNsNsNLgLgLgLgLgLgLgLgLgLgLgLgLgLgLgJcJcJcBmBmBmBmdIdI
dIdIdIskskskskJcBmBmBmBmubLuVhVhVhVhVhVhLuJcJcJcJcJcJcJcJcJcbpJcJcJcJcBmJcJcJcJcJcJcJcJcJcJcJcLgJcJcJcJcJczBsNsNubububvarKARARuGsNabababababababababJcJcJcJcubJcJcJcsNsNJcJcJcJcJcJcJcJcJcJcJcLgLgsNsNsNsNsNsNsNLgLgLgLgLgLgLgLgLgLgLgLgLgLgLgJcJcJcBmBmBmBmdIdI
-dIdIskBmJcJcJcJcJcJcBmBmubPAfAfAfAVhVhVhLuJcJcJcJcJcJcJcJcJcJcJcJcJcJcBmJcJcJcJcJcJcJcJcJcJcJcLgJcJcJcJcJczBLgsNubububvazYvKARvaabababababubsNcMsNLgJcJcJcJcubJcJcsNsNJcJcBmBmJcJcJcJcJcJcJcJcLgLgsNsNsNsNsNsNsNLgLgLgLgLgLgLgLgLgLgBmBmBmBmBmBmJcJcBmBmBmBmdIdI
+dIdIskBmJcJcJcJcJcJcBmBmubPAfAfAfAVhVhVhLuJcJcJcJcJcJcJcJcJcJcJcJcJcJcBmJcJcJcJcJcJcJcJcJcJcJcLgJcJcJcJcJczBLgsNubububvazYvKARvaabababababubsNcMsNLgJcJcJcJcubJcJcsNsNJcJcBmBmJcJcJcJcJcJcFOJcLgLgsNsNsNsNsNsNsNLgLgLgLgLgLgLgLgLgLgBmBmBmBmBmBmJcJcBmBmBmBmdIdI
dIBmBmJcJcJcJcJcJcJcJcJcubLufAfAfAVhVhVhLuJcJcBmBmJcJcJcJcJcJcBmJcJcBmBmJcJcJcJcJcJcJcJcJcJcJcLgsNsNsNsNsNzBsNsNsNububzYvavaNXzYabababububsNsNsNsNsNJcJcJcJcubJcJcJcJcJcBmBmJcJcJcJcJcJcJcJcBmLgLgLgLgLgsNsNsNsNLgLgLgLgLgLgLgLgLgLgBmBmBmBmBmBmJcJcBmBmBmBmdIdI
dIJcJcJcJcbpJcJcJcJcJcJcubLuLuLuLuVhVhVhLuJcJcBmBmJcJcJcJcBmBmBmJcBmBmJcJcJcJcJcJcJcJcJcJcJcJcLgsNsNsNsNsNzBsNLgsNababzBabababababababubsNsNsNLgsNsNJcJcJcJcubJcJcJcbpJcJcaaJcJcJcJcJcJcJcJcBmLgLgLgLgLgLgsNsNsNsNsNLgLgLgLgLgLgLgBmBmBmBmBmBmBmBmJcBmBmBmBmdIdI
dIJcJcJcJcJcJcJcJcJcJcJcububububLuVhVhVhLuJcJcJcBmBmJcJcJcJcJcBmBmBmJcJcJcJcJcJcJcJcJcJcJcJcJcsNsNsNJcJcJccMsNsNsNababYUababababababababubububsNsNLgJcJcJcJcubJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcBmLgLgLgLgLgLgLgsNsNLgLgLgLgLgLgLgLgLgBmBmBmBmBmBmBmBmJcJcBmBmBmdIdI
-dIJcJcJcJcJcJcJcJcJcJcJcBmJcJcubLuVhVhVhLuLuJcJcBmBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcsNsNsNJcJcJccMcMcMcMcMcMcMVWVWVWVWJcBmubabJcJcsNsNsNsNJcJcJcJcubJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcBmLgLgLgLgLgLgLgsNsNLgLgLgLgLgLgLgLgLgBmBmBmBmBmBmBmBmBmJcBmBmBmdIdI
+dIJcJcJcJcJcJcJcJcFOJcJcBmJcJcubLuVhVhVhLuLuJcJcBmBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcsNsNsNJcJcJccMcMcMcMcMcMcMVWVWVWVWJcBmubabJcJcsNsNsNsNJcJcJcJcubJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcBmLgLgLgLgLgLgLgsNsNLgLgLgLgLgLgLgLgLgBmBmBmBmBmBmBmBmBmJcBmBmBmdIdI
dIJcJcJcJcJcJcJcJcJcJcJcBmBmJcubLuVhVhVhVhVhLuJcBmBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcsNsNsNJcJcBmBmBmJcJcJcBmJcJcJcJcJcJcabababJcJcBmJcJcJcJcJcJcJcubJcJcJcJcJcJcJcJcJcJcJcJcJcBmBmBmLgLgLgLgLgLgsNsNLgLgLgLgLgLgLgLgLgLgBmBmBmBmBmBmBmBmBmJcBmBmBmdIdI
dIJcJcJcJcJcJcJcJcJcJcJcBmBmJcubLufAfAVhVhVhNkLuJcBmBmBmBmBmBmBmBmBmBmBmJcJcJcbpJcJcJcJcJcJcJcLgsNLgBmBmBmBmBmJcababababababababababJcJcJcJcJcJcJcJcJcJcJcJcubJcJcJcsNJcJcJcJcBmJcJcJcBmBmBmBmLgLgLgLgLgLgsNsNLgLgLgLgLgLgLgLgLgLgBmBmBmBmBmBmBmBmBmJcBmBmBmdIdI
dIJcJcJcJcJcJcJcJcJcJcJcBmBmJcubLuLuVhVhVhVhVhVhLuBmBmBmBmBmBmBmBmBmBmBmJcJcJcJcJcJcJcJcJcJcBmBmLgLgBmBmBmBmabababJcababJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcubJcJcJcsNJcJcJcJcBmJcJcJcBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmJcBmBmBmdIdI
dIJcJcJcJcJcJcJcBmBmBmBmBmBmJcubJcNkfAfAVhVhVhVhPABmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmLgKLJcJcJcababsNsNubLgsNsNsNsNsNsNsNsNLgsNsNsNsNLgsNsNubJcJcubJcJcsNsNsNJcBmBmBmJcBmBmBmBmBmJcBmBmBmBmBmBmBmBmBmBmBmBmBmBmdIdIdIdIdIdIBmBmBmBmBmJcJcBmBmBmBmdIdI
dIJcubjCububububJcJcJcJcububububububLuLufAfAVhVhVhLuJcJcJcJcJcJcJcJcJcJcJcBmBmBmBmBmBmBmBmBmBmBmJcCGJcJcJcabJcIyIyIyIyIyIyIyAzIyAzIyAzIyIyubLgsNububJcubJcBmubJcJcsNJcJcJcBmBmBmJcBmBmBmBmJcJcJcJcBmBmBmBmBmBmBmBmBmBmBmBmxlcBdIdIdIxlBmBmBmBmBmBmBmBmBmBmBmdIdI
dIHHHHHHHHububububJcJcJcububububHHHHHHHHHHHHHHHHHHHHJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcabJcIyTrBoAWOGIyhgOJOJOJAOOJycIyIysNLgubsNJcsNJcBmubJcJcsNJcJcJcBmBmJcJcBmBmJcJcJcJcJcJcBmBmBmBmBmBmBmBmBmBmBmBmxlUJMyMyUJxlBmBmBmBmBmBmBmBmBmBmBmdIdI
-dIHHHHHHHHHHHHububJcJcJcububububHHHHububHHHHHHHHHHHHHHububububububububububububububububububububububububububabJcAzzmzmzmzmTytZtZxDxKwJqSOJIFIyLgububLgsNsNJcBmubJcJcsNsNJcJcBmBmJcJcBmBmJcJcJcJcJcJcBmBmBmBmBmBmBmBmBmBmBmBmxlMyMyMyMyxlBmBmBmBmBmBmBmBmBmBmBmdIdI
+dIHHHHHHHHHHHHububJcJcJcububububHHHHububHHHHHHHHHHHHHHububububububububububububruubububububububububububububabJcAzzmzmzmzmTytZtZxDxKwJqSOJIFIyLgububLgsNsNJcBmubJcJcsNsNJcJcBmBmJcJcBmBmJcJcJcJcJcJcBmBmBmBmBmBmBmBmBmBmBmBmxlMyMyMyMyxlBmBmBmBmBmBmBmBmBmBmBmdIdI
dIHHHHHHHHHHHHJcJcJcJcJcJcububJcubHHHHHHHHHHHHHHHHHHJcJcJcJcJcJcJcJcJcJcJcJcJcubJcJcJcJcJcJcJcJcJcJcJcJcubabJcIyeFzmzmLtIytZtZOJCcKTqSOJIyIyLgubsNJcsNsNJcBmubJcJcJcJcsNsNBmJcJcJcBmJcJcJcJcJcJcJcJcBmBmBmJcJcBmBmBmBmBmBmxlMyMyMyMyxlBmBmBmBmBmBmBmBmBmBmBmdIdI
dIububububububJcJcJcJcJcJcJcubububububububLuVhVhVhLuJcJcJcJcJcBmBmBmBmJcdIdIJcubJcJcJcJcJcJcJcJcJcCGJcJcubabJcIyIyIyIyIyIyIyIyOJJzQMOJkeIyubJcJcLgsNubsNJcBmubJcJcJcJcJcJcsNsNsNJcJcJcJcJcJcJcJcJcJcBmJcBmJcJcJcJcJcJcJcBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmdIdI
dIJcJcJcJcJcJcubJcJcJcJcJcJcBmJcJcJcJcJcLuLuVhVhVhLuJcJcBmJcBmBmBmBmBmJcdIubububdIdIdIdIdIdIdIdIJcCGJcJcababJcIyaSararWZIyoxoxtZtZtZtZtZAzububJcubsNLgubJcBmubJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcBmBmBmBmJcJcJcJcJcJcJcJcJcJcJcBmBmBmJcJcJcJcBmBmBmBmBmBmBmdIdI
-dIJcJcJcJcJcJcubJcJcJcJcBmBmBmBmJcJcJcJcLuLuVhVhVhLuJcBmBmBmBmJcBmBmBmJcJcubdIdIdIdIdIdIdIdIdIdIJcCGJcJcubabJcIyararararZGOJOJOJOJOJOJhgIyubsNubLgubububJcljububububububububububububububJcJcJcJcJcBmBmBmBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcBmBmBmBmBmBmBmdIdI
+dIJcJcJcJcJcJcubJcJcJcJcBmBmBmBmJcJcJcJcLuLuVhVhVhLuJcBmBmBmBmJcBmBmBmJcJcubdIdIdIdIdIdIdIdIdIdIJcCGJcJcubabJcIyararararZGOJOJOJOJOJOJhgIyubsNubLgubububJcljubububububububububububububSEJcJcJcJcJcBmBmBmBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcBmBmBmBmBmBmBmdIdI
dIBmJcJcJcJcJcubJcJcBmBmBmBmBmBmJcJcJcJcJcPAVhVhVhLuJcBmBmBmBmBmBmBmJcJcJcubdIdIdIdIdIdIdIdIdIdIJcCGJcJcababJcIySRWWarIGIyIyAzIygIIyAzIyIyububsNsNubLgubJcBmubJcJcJcJcsNsNJcJcubJcJcJcubJcJcJcJcBmBmBmBmBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcBmBmBmBmBmBmBmdIdI
dIJcJcJcJcJcJcubJcJcBmBmBmJcJcJcJcJcJcJcJcLuVhVhVhLuJcBmBmBmBmBmBmBmJcJcdIubdIdIdIdIdIdIdIdIdIdIJcBmJcJcababJcIyACbtIybtIyabababtLabubpwTzubububsNubsNubabJcubJcJcsNsNsNJcsNJcubJcJcJcubJcJcJcJcBmBmBmBmBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcBmBmBmBmBmBmBmJcdI
-dIskskBmJcJcJcubJcJcBmBmJcJcJcJcJcJcJcLuLuLuVhVhVhLuJcJcBmJcBmJcJcJcJcJcdIubdIdIdIdIdIdIdIdIdIdIJcBmJcJcubabJcIySRSRSRqVIyabXgababubdiubababJcJcLgsNubLgabJcubJcJcsNaaJcJcJcJcubJcJcJcubJcJcJcJcBmBmBmBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcBmBmBmBmBmJcJcJcdI
+dIskskBmJcJcJcubJcJcBmBmJcJcJcJcJcJcJcLuLuLuVhVhVhLuJcJcBmJcBmJcJcJcJcJcdIubdIdIdIdIdIdIdIdIdIdIJcBmJcJcubabJcIySRSRSRqVIyabXgababubdiubababJcJcLgsNubLgabJcubJcJcsNaaJcJcJcJcubJcJcJcubJcJcJcJcBmBmBmBmJcJcJcJcJcJcJcJcJckaJcJcJcJcJcJcJcJcJcBmBmBmBmBmJcJcJcdI
dIskskBmJcJcJcubJcJcBmBmJcJcJcJcJcJcJcLuVhVhVhVhVhPAJcJcJcJcJcJcJcJcJcJcdIubdIdIdIdIdIdIdIdIdIdIJcBmJcJcubabJcIySRWWWWfyIyababababKdOuubababababababababababubJcJcsNBmJcBmBmJcubBmBmJcubJcJcJcJcJcBmBmBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcdI
dIdIskBmJcJcJcubJcJcJcJcJcbpJcJcJcJcJcNkVhVhVhVhVhLuJcJcJcJcJcJcJcubububububdIdIdIdIdIdIdIdIdIdIJcCGJcJcubabJcIyIyIyIyIyIyababcPababababababababababababababubJcJcJcJcJcBmBmJcubBmBmJcubJcJcJcJcJcBmBmBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcdI
-dIskskBmBmJcJcubJcJcJcJcJcJcJcJcJcJcJcLuVhVhyHyHyHLuJcJcJcJcJcJcJcubJcJcdIdIdIdIdIdIdIdIdIdIdIdIJcCGJcJcubJcabababJcabJcJcabJcBcQyyAkUBcJcababJcJcJcJcJcJcBmubJcJcBmJcJcBmBmJcubBmBmJcubJcJcJcJcJcBmJcJcJcJcJcJcJcJcJcBmBmBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcdI
+dIskskBmBmJcJcubJcJcJcJcJcJcJcJcJcJcJcLuVhVhyHyHyHLuJcJcJcJcJcJcJcubJcJcdIdIdIdIdIdIdIdIdIdIdIdIJcCGJcJcubJcabababJcabJcJcabJcBcQyyAkUBcJcababJcJcJcJcJcJcBmubJcJcBmJcJcBmBmJcubBmBmJcubJcJcJcJcJcBmJcJcJcJcJcJcJcJcJcBmBmBmJcJcJcJcJcJcJcJcJcJcJcJcFOJcJcJcJcdI
dIskskBmBmJcJcububububububububububububLuVhVhLuububububJcububububububJcJcJcdIdIdIububububububububBmBmJcJcubJcJcBmJcBmsNabJcJcBmkUiSiSiSkUJcJcabJcJcJcJcBmJcJcubJcJcJcJcJcBmBmJcubBmBmJcubJcJcJcJcJcJcJcJcJcJcJcJcBmBmBmBmBmBmBmBmBmJcJcJcJcJcJcJcJcJcJcJcJcJcdIdI
dIskskBmBmJcJcubJcJcJcJcJcJcJcJcJcJcJcLuVhVhVhPAJcJcJcJcJcJcJcJcJcJcJcJcdIdIdIdIubdIdIdIdIdIdIdIBmJcJcJcubJcJcJcJcsNJcsNbkbkbkDciSiSiSDcJcababJcBmJcJcJcJcJcubJcJcJcJcJcBmBmJcubBmBmJcububububububububJcJcJcJcJcBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmJcJcJcJcdIdIdI
-dIskskBmBmJcJcubJcJcJcJcJcJcBmBmJcJcJcNkVhVhVhLuJcJcJcsNsNsNsNsNsNJcJcJcdIdIdIdIubdIdIdIdIdIdIdIBmBmJcJcubJcJcJcJcsNJcBmJcJcJcDciSqRiSDcJcababJcJcJcBmBmJcBmubJcJcBmJcJcBmBmJcJcBmBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmJcJcBmBmdIdIdI
+dIskskBmBmJcJcubFOJcJcJcJcJcBmBmJcJcJcNkVhVhVhLuJcJcJcsNsNsNsNsNsNJcJcJcdIdIdIdIubdIdIdIdIdIdIdIBmBmJcJcubJcJcJcJcsNJcBmJcJcJcDciSqRiSDcJcababJcJcJcBmBmJcBmubJcJcBmJcJcBmBmJcJcBmBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmJcJcBmBmdIdIdI
dIdIskBmBmJcJcubJcJcJcJcJcJcBmBmJcJcJcLuVhVhVhLuJcJcJcsNsNsNsNsNsNJcJcJcdIdIdIdIubdIdIdIdIdIdIdIubububububJcJcBmsNJcBmJcBmJcJcQyiSiSiSkUJnababBmJcBmJcJcJcJcubJcBmJcJcJcBmBmJcJcBmBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcBmBmBmBmBmBmBmBmJcJcBmBmdIdIdI
dIskskBmBmJcJcububJcJcJcJcBmBmBmJcJcJcLuVhVhVhLuJcJcJcsNsNsNsNsNsNJcJcJcJcJcJcJcubJcJcJcJcJcJcJcLuJcJcJcubJcaaJcaaJcaaJcJcBmJcBcQyDcDcBcJcababJcJcJcBmJcJcJcubJcJcJcJcJcBmBmJcJcBmBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcBmBmBmBmBmBmBmBmBmBmBmBmdIdIdI
dIBmBmBmBmJcJcububJcJcBmJcBmBmBmJcBmJcLuVhVhVhNkJcJcJcsNsNsNsNsNsNsNsNsNJcJcJcJcubJcJcJcJcJcJcJcLuLuLuLuubJcJcJcJcJcJcsNsNsNJcsNBmsNsNsNJcJcabababJcJcJcJcJcubJcJcJcBmJcJcBmJcJcJcBmJcJcJcJcJcJcJcJcJcJcJcJcBmJcJcJcubJcJcJcJcJcJcJcJcJcJcJcJcJcBmBmBmBmBmdIdIdI
-dIBmBmBmJcJcJcububJcJcBmJcBmBmBmJcBmJcPAVhVhVhLuJcJcJcsNsNsNsNsNsNsNsNsNJcJcJcJcubJcJcJcBmBmJcJcJcLuLuLuububububububububububububububububububababubububububububJcJcJcJcJcJcLgLgsNJcLgLgsNsNsNsNsNsNsNsNsNsNJcBmJcJcJcubJcJcJcJcJcJcJcJcJcJcJcJcJcBmBmBmBmBmdIdIdI
+dIBmBmBmJcJcJcububJcJcBmJcBmBmBmJcBmJcPAVhVhVhLuJcJcJcsNsNsNsNsNsNsNsNsNJcJckaJcubJcJcJcBmBmJcJcJcLuLuLuububububububububububububububububububababubububububububJcJcJcJcJcJcLgLgsNJcLgLgsNsNsNsNsNsNsNsNsNsNJcBmJcJcJcubJcJcJcJcJcJcJcJcJcJcJcJcJcBmBmBmBmBmdIdIdI
dIJcJcJcJcJcJcububJcJcJcBmBmBmBmBmJcJcLuVhVhVhLuJcJcJcsNsNsNsNsNsNsNsNsNJcJcJcJcubJcJcBmBmBmBmJcJcLuLuLuJcJcJcJcJcJcJcsNsNsNsNsNsNsNsNsNzYkcfcyVkcmumumumumumumumufczYJcJcLgLgsNJcLgLgsNsNsNsNLgLgLgLgLgLgBmBmBmBmBmubJcJcJcJcJcJcJcJcJcJcJcJcJcBmBmBmBmBmdIdIdI
dIJcJcJcJcJcJcububJcJcJcBmBmBmBmBmJcJcLuVhVhVhLuJcJcJcsNsNsNsNsNsNsNsNsNJcJcJcJcubJcJcJcBmBmBmJcBmJcLuLuLuLuLuJcJcJcJcsNsNsNsNsNsNsNLgsNcNTfTjTfHnSRLOsqbgOjtFAYPnFycNJcJcLgLgsNJcLgLgsNsNsNLgLgLgLgLgLgLgBmBmBmBmBmubJcJcJcJcJcJcJcJcJcJcJcJcJcBmBmBmBmBmdIdIdI
-dIEpubububububububJcJcJcBmBmBmBmBmJcJcLuVhVhVhLuJcJcJcsNsNsNsNsNLgLgsNsNJcJcJcJcubJcJcJcJcBmBmJcBmJcJcJcJcJcJcJcJcJcJcsNsNsNsNsNsNsNsNsNfeQGNqTfTfhjARARARARSRbgSRSRfeJcBmLgLgsNBmLgLgsNsNsNLgLgLgLgLgLgLgBmBmBmJcJcubJcJcJcJcJcBmBmJcJcJcBmBmJcBmBmBmBmBmdIdIdI
-dIJcJcJcJcJcJcububJcJcJcBmBmBmBmBmJcJcNkVhVhVhPAJcJcJcJcJcJcJcsNLgLgLgLgBmBmJcJcubJcJcJcJcBmJcJcBmBmJcJcBmBmBmBmBmBmBmLgLghbhbhbLghbhbhbPqTfTfTfYDyPDlHIMkARSRSRSRwNPqJcBmLgLgsNBmLgLgsNsNsNLgLgLgsNsNsNLgBmBmBmJcJcubJcJcJcJcJcBmBmBmBmBmBmBmBmBmBmBmBmBmdIdIdI
+dIububububububububJcJcJcBmBmBmBmBmJcJcLuVhVhVhLuJcJcJcsNsNsNsNsNLgLgsNsNJcJcJcJcubJcJcJcJcBmBmJcBmJcJcJcJcJcJcJcJcJcJcsNsNsNsNsNsNsNsNsNfeQGNqTfTfhjARARARARSRbgSRSRfeJcBmLgLgsNBmLgLgsNsNsNLgLgLgLgLgLgLgBmBmBmJcJcubJcJcJcJcJcBmBmJcJcJcBmBmJcBmBmBmBmBmdIdIdI
+dIJcJcJcJcJcJcububJcJcJcBmBmBmBmBmJcJcNkVhVhVhPAJcJcJcJcJcJcJcsNLgLgLgLgBmBmJcJcubJcJcJcJcBmJcJcBmBmJcJcBmBmBmBmBmBmBmLgLghbhbhbLghbhbhbPqTfTfTfYDyPDlHIMkARSRSRSRwNPqJcBmLgLgsNBmLgLgsNsNsNLgLgLgsNsNsNLgBmBmBmJcJcubAGJcJcJcJcBmBmBmBmBmBmBmBmBmBmBmBmBmdIdIdI
dIJcJcJcJcJcJcubJcJcJcJcJcBmBmJcBmBmJcLuVhVhVhLuJcJcJcJcJcJcJcLgLgLgsNsNJcJcJcJcubJcJcJcJcJcJcJcBmBmBmBmBmBmBmBmBmBmBmLgsNsNsNLgsNsNsNsNzYkcAzfczYkcmuAzfczYqNzYkcfczYJcBmLgLgsNBmLgLgsNsNsNsNsNsNsNsNsNLgBmBmBmJcJcubJcJcJcBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmdIdIdI
dIBmJcJcJcJcJcubJcJcJcJcJcBmBmJcBmJcJcLuVhVhVhLuJcJcJcJcJcJcBmLgLgLgsNsNJcJcJcJcubJcJcJcJcJcJcJcBmBmJcJcJcJcJcJcJcJcJcsNsNsNsNsNsNsNLgsNgysNsNLgWYqXXHMWMWFWMWMWWDYAMWJcJcJcsNsNBmLgsNsNsNsNsNsNsNsNsNsNLgBmBmBmJcJcubJcJcJcBmBmBmBmBmBmBmJcBmBmJcBmJcBmBmBmdIdI
dIBmBmBmBmBmJcubJcJcbpJcJcBmBmJcBmJcJcLuVhVhVhLuJcJcJcJcJcBmBmLgLgsNsNsNJcububububJcJcJcJcJcJcJcBmBmJcJcJcJcJcJcJcJcJcJcJcJcJcsNLgsNsNsNsNsNsNsNsNMWMWMWMWMWMWMWMWMWMWJcBmLgsNsNBmLgsNsNsNsNsNsNsNsNsNsNLgBmBmBmJcJcubJcJcJcBmBmBmBmBmBmBmJcJcJcJcJcJcBmBmBmBmdI
dIskskBmBmBmJcubJcJcJcJcJcBmBmJcBmJcJcLuVhVhVhLuJcJcJcJcJcBmJcsNsNLgLgsNJcububJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcsNsNsNsNsNsNsNububububububububububububsNLgLgLgsNsNLgLgsNsNsNsNsNsNsNsNsNLgLgBmBmBmJcJcubJcJcJcJcBmBmBmJcJcJcJcJcJcJcJcJcBmBmBmBmdI
-dIskskBmBmBmJcubJcJcJcJcJcBmBmBmBmJcJcLuVhVhVhLuJcJcJcJcJcBmBmBmBmBmBmBmBmububJcJcJcJcJcJcJcJcJcJcJcJcJcsNsNsNsNsNsNsNsNsNsNsNLgLgLgLgLgubJcubJcubJcubJcubJcubJcsNsNubLgLgLgsNsNLgLgsNsNsNsNsNsNsNsNsNLgLgBmBmBmJcJcubJcJcJcJcBmBmBmJcJcJcJcJcJcJcJcJcBmBmBmBmdI
+dIskskBmBmBmJcubJcJcJcJcJcBmBmBmBmJcJcLuVhVhVhLuJcJcJcJcJcBmBmBmBmBmBmBmBmububJcJcJcJcAGJcJcJcJcJcJcJcJcsNsNsNsNsNsNsNsNsNsNsNLgLgLgLgLgubJcubJcubJcubJcubJcubJcsNsNubLgLgLgsNsNLgLgsNsNsNsNsNsNsNsNsNLgLgBmBmBmJcJcubJcJcJcJcBmBmBmJcJcJcJcJcJcJcJcJcBmBmBmBmdI
dIskskBmBmBmJcubJcJcJcJcBmBmBmBmBmJcJcLuVhVhVhNkJcJcJcJcJcJcJcBmBmBmBmBmBmububJcJcJcJcJcJcJcJcJcJcJcJcJcsNsNsNsNsNsNsNsNsNLgLgLgLgLgLgLgJcJcubJcubJcsNJcubJcubJcsNublyLgLgLgsNsNLgLgsNsNsNsNsNsNsNsNsNLgLgBmBmBmJcJcubJcJcJcJcBmBmBmJcJcJcJcJcJcJcJcJcBmBmBmBmdI
-dIskskBmBmBmJcubJcJcJcJcBmBmJcBmBmJcJcLuVhVhVhLuJcJcJcJcJcJcJcububububububububJcJcJcJcJcJcJcJcJcJcJcJcJcsNsNsNsNsNsNLgLgLgsNLgLgLgLgsNBmsNsNubJcubJcsNJcubJcubJcsNsNsNLgLgLgsNsNLgLgsNsNsNsNsNsNsNsNsNLgLgBmBmBmJcJcubJcJcJcJcBmBmBmJcJcJcJcJcJcJcJcJcBmBmBmBmdI
+dIskskBmBmBmJcubJcJcJcJcBmBmJcBmBmJcJcLuVhVhVhLuJcJcJcJcJcJcJcububububububububJcJcJcJcJcJcJcJcJcJcJcJcJcsNsNsNsNsNsNLgLgLgsNLgLgLgLgsNBmsNsNubJcubJcsNJcubJcubJcsNsNsNLgLgLgsNsNLgLgsNsNsNsNsNsNsNsNsNLgLgBmBmBmJcJcubJcJcJcJcBmBmBmJcJcJcJcJckaJcJcJcBmBmBmBmdI
dIskskBmBmBmJcubJcJcJcJcBmBmJcBmBmJcJcLuVhHcVhLuLuJcJcJcbpJcJcubJcJcJcJcJcJcJcBmJcJcJcJcJcJcJcJcJcJcJcJcsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNJcsNubsNJcubJcsNJcubJcubJcubububLgLgsNsNsNLgsNsNsNsNsNsNsNsNsNsNLgLgBmBmBmJcJcubJcJcJcJcBmBmJcJcJcJcJcJcJcJcJcJcBmBmBmBmdI
dIskskBmBmBmJcubJcJcJcJcBmBmJcBmBmJcJcLuVhVhVhVhLuubJcJcJcJcJcubJcJcJcJcJcJcJcBmJcJcJcJcJcJcJcJcJcJcJcJcsNsNsNsNsNsNsNsNsNsNsNsNLgsNsNJcsNsNsNJcubJcubububububububububLgLgsNsNsNLgsNsNsNsNsNJcJcJcJcJcBmBmBmBmBmJcJcubJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcBmBmBmBmdI
dIskskBmBmBmJcubJcJcJcJcJcJcJcBmBmJcJcLuVhVhVhVhLuubububububububJcJcJcBmJcBmJcBmJcJcJcJcJcJcJcJcJcJcJcJcsNsNsNsNsNsNsNsNsNsNsNsNLgsNsNJcsNsNLgsNsNsNubububJcJcJcJcsNsNLgLgsNLgLgLgsNLgLgLgLgBmBmJcBmBmBmBmBmJcJcJcJcububububububububububububububububJcBmBmBmBmdI
-dIBmBmBmBmJcJcubJcJcJcJcJcJcJcJcJcJcJcLuVhVhVhVhLuubJcJcJcJcJcJcJcJcJcBmBmBmBmBmJcJcJcJcJcJcJcJcJcJcJcJcsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNJcubububububububububububJcJcJcJcLgLgLgLgLgLgLgLgLgLgLgBmBmBmBmBmBmBmBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcubJcJcJcBmBmdI
+dIBmBmBmBmJcJcubJcJcJcJcJcJcJcJcJcJcJcLuVhVhVhVhLuubJcJcJcJcJcFOJcJcJcBmBmBmBmBmJcJcJcJcJcJcJcJcJcJcJcJcsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNJcubububububububububububJcJcJcJcLgLgLgLgLgLgLgLgLgLgLgBmBmBmBmBmBmBmBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcubJcJcJcBmBmdI
dIJcJcJcJcJcJcubJcJcJcJcJcJcJcububububLufAfAVhVhPAubJcJcJcJcJcJcJcJcBmBmBmBmBmBmJcJcJcJcJcJcJcJcBmBmBmBmJcJcJcJcsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNJcJcJcJcJcJcJcJcJcJcJcubJcJcBmBmLgLgLgLgLgLgLgBmBmBmBmBmJcJcBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcububububJcJcdI
dIJcJcJcJcJcJcubJcJcJcJcJcJcJcubJcJcJcLuLuLuVhVhVhLuJcJcJcJcJcJcJcBmBmBmBmBmBmBmBmBmBmBmBmJcJcJcJcBmBmBmBmJcJcJcsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNJcJcJcJcJcJcJcJcJcJcJcubJcJcBmBmsNsNLgLgsNsNsNJcJcJcJcBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmJcBmJcBmBmJcJcJcJcJcubJcJcdI
dIJcJcJcJcJcJcubububububububububJcJcLuPALuLuVhVhVhLuJcJcJcJcJcJcBmBmBmBmLgLgskLgLgLgLgBmBmBmBmBmBmBmBmJcBmBmBmBmLgsNsNsNsNLgLgLgLgLgLgLgLgLgLgBmJcJcJcJcJcJcJcJcJcJcubBmBmBmBmLgLgLgsNsNsNsNJcJcJcJcBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmJcJcJcJcubJcJcdI
-dIEpububububububububububububububLuLuLuLuLuPAVhVhVhLuJcJcJcJcJcBmJcBmBmBmLgLgskLgLgLgLgBmBmBmBmBmBmBmBmBmBmBmJcJcsNsNsNsNLgLgsNsNsNsNsNsNsNLgLgBmBmBmBmBmBmBmBmBmBmBmubJcJcsNsNsNsNsNsNsNsNsNsNsNJcJcJcJcBmBmBmBmBmBmBmBmBmBmBmBmBmBmJcJcJcBmBmBmBmJcBmJcubJcJcdI
+dIububububUlububububububububububLuLuLuLuLuPAVhVhVhLuJcJcJcJcJcBmJcBmBmBmLgLgskLgLgLgLgBmBmBmBmBmBmBmBmBmBmBmJcJcsNsNsNsNLgLgsNsNsNsNsNsNsNLgLgBmBmBmBmBmBmBmBmBmBmBmubJcJcsNsNsNsNsNsNsNsNsNsNsNJcJcJcJcBmBmBmBmBmBmBmBmBmBmBmBmBmBmJcJcJcBmBmBmBmJcBmJcubJcJcdI
dIJcJcJcJcJcJcJcJcJcJcJcJcJcLuLuLuJcJcLuLuLuVhVhVhLuJcJcJcJcBmBmBmBmBmBmLgLgskLgLgsNsNJcJcJcJcJcJcJcJcJcJcJcJcJcsNsNsNsNLgsNsNsNsNsNsNsNsNsNLgBmBmJcJcJcJcJcJcJcJcJcubJcJcsNsNsNsNsNsNsNsNsNsNsNJcJcJcBmBmBmBmBmBmBmJcJcBmJcBmBmJcJcJcJcJcJcJcJcBmBmBmJcubJcJcdI
-dIJcJcJcJcJcJcJcJcJcJcJcJcLupuLuJcJcJcJcPALuVhVhVhLuJcJcBmBmBmBmBmBmBmBmLgLgskLgLgsNsNubububububububububububububsNsNsNsNLgsNsNsNsNsNsNsNsNsNLgBmBmJcJcJcJcJcJcJcbpJcubJcJcsNsNsNsNsNsNsNsNsNsNsNJcJcJcBmBmJcJcJcBmBmBmBmBmBmBmJcJcptJcJcJcJcJcJcJcJcJcJcJcJcubdI
+dIJcJcJcJcJcJcJcJcJcJcJcJcLupuLuJcJcJcJcPALuVhVhVhLuJcJcBmBmBmBmBmBmBmBmLgLgskLgLgsNsNubububububububububruubububsNsNsNsNLgsNsNsNsNsNsNsNsNsNLgBmBmJcJcJcAGJcJcJcbpJcubJcJcsNsNsNsNsNsNsNsNsNsNsNJcJcJcBmBmJcJcJcBmBmBmBmBmBmBmJcJcptJcJcJcJcJcJcJcJcJcJcJcJcubdI
dIskdIJcJcJcJcJcJcJcJcLuLuLuLuJcJcJcJcJcJcNkVhVhVhLuJcJcBmBmBmBmBmBmBmBmsNLgskLgLgsNsNubsNsNsNsNsNsNsNsNsNsNJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcBmBmBmJcJcJcJcJcJcJcubububJcJcsNsNsNsNsNsNsNsNsNsNsNJcJcBmBmJcJcJcJcBmBmBmBmBmBmBmJcJcptJcJcJcJcJcJcJcJcJcJcubJcubdI
-dIskskJcJcJcJcJcJcJcLuLuLuJcJcJcJcJcJcJcJcLuVhVhVhLuJcJcBmBmBmBmBmBmBmJcsNLgskLgsNsNsNubsNsNsNsNsNsNsNsNsNsNJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcBmJcJcJcJcJcJcJcJcubJcJcJcJcsNsNsNsNsNsNsNsNsNsNsNJcJcBmJcJcJcJcJcJcBmJcJcJcJcJcJcptptJcJcJcJcJcJcJcJcJcJcubububdI
+dIskskJcJcJcJcJcJcJcLuLuLuJcJcJcJcJcJcJcJcLuVhVhVhLuJcJcBmBmBmBmBmBmBmJcsNLgskLgsNsNsNubsNsNsNsNsNsNsNsNsNsNJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcBmJcJcJcJcJcJcJcJcubJcJcJcJcsNsNsNsNsNsNsNsNsNsNsNJcJcBmJcJcJcJcJcJcBmJcJcJcJcJcJcptptJcJcJcJcJcJcJcJcJcJcEpububdI
dIdIdIJcJcJcJcJcJcLupuLuJcJcJcJcJcJcJcJcubLuVhVhVhLuJcJcBmBmBmBmBmBmJcJcJcBmskBmJcJcJcubsNLgsNsNsNsNsNsNLgLgJcJcJcJcJcJcJcBmJcJcJcJcJcJcJcBmBmBmJcJcJcsNsNsNsNsNubsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNJcBmBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcptJcJcJcJcJcububdI
dIdIJcJcJcJcJcJcLuLuLuJcJcJcJcJcJcJcJcJcubLuVhVhVhLuJcJcBmBmBmJcBmJcJcJcJcBmskBmJcJcJcubsNLgLgLgLgLgLgLgLgLgBmBmBmJcJcJcJcBmBmJcJcJcJcJcJcBmBmJcJcJcJcsNsNsNsNsNubsNsNsNsNsNsNsNsNsNsNsNsNLgsNLgJcBmBmJcJcJcptJcJcJcJcJcptptJcJcptptptJcJcJcJcJcJcJcJcJcptubJcdI
-dIJcJcJcJcLuLuLuLuLuJcJcJcJcJcJcJcJcJcJcubLuVhVhVhLuJcBmBmBmBmJcBmJcJcJcJcBmskLgJcJcJcubsNsNsNLgLgLgLgLgLgLgBmBmBmJcJcJcJcBmBmJcJcBmJcJcBmBmBmJcJcJcJcsNsNsNsNsNubsNsNsNsNsNsNsNsNLgsNLgsNsNsNsNJcBmBmJcJcJcJcJcJcJcJcJcJcptJcJcJcptJcJcJcptJcJcptJcptJcJcJcJcdI
+dIJcJcJcJcLuLuLuLuLuJcJcJcJcJcJcJcJcJcJcubLuVhVhVhLuJcBmBmBmBmJcBmJcJcJcJcBmskLgJcJcJcubsNsNsNLgLgLgLgLgLgLgBmBmBmJcJcJcJcBmBmJcJcBmJcJcBmBmBmJcJcJcJcsNsNsNsNsNubsNsNsNsNsNsNsNsNLgsNLgsNsNsNsNJcBmBmJcJcJcJcJcJcFOJcJcJcptJcJcJcptJcJcJcptJcJcptJcptJcJcJcJcdI
dIJcJcLupuLuLupuJcJcJcJcJcJcbpJcJcJcJcJcubLuVhVhVhLuJcBmBmBmsNLgLgsNsNsNsNLgskLgLgsNsNubsNsNsNsNsNLgLgLgLgLgJcJcJcJcJcJcBmBmBmJcBmBmJcBmBmBmLgLgsNsNsNsNsNsNsNsNubsNsNLgLgLgsNLgsNsNsNsNsNsNsNsNJcBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcptJcJcJcJcJcdIdI
-dIJcLupuLuLuJcJcJcJcJcJcJcJcJcJcJcJcJcJcubLuVhVhVhLuJcBmBmBmsNLgsNsNsNsNsNLgskLgLgsNsNubsNsNsNsNsNLgLgLgLgLgJcJcJcJcJcJcBmBmBmBmBmBmBmBmJcJcsNLgLgLgsNLgsNsNsNsNubLgLgLgsNLgsNsNsNsNsNsNsNsNsNsNJcBmJcJcJcJcptJcJcJcJcJcptJcJcJcJcJcptJcJcptJcptJcJcJcJcptJcdIdI
+dIJcLupuLuLuJcJcJcJcJcJcJcJcJcJcJcJcJcFOubLuVhVhVhLuJcBmBmBmsNLgsNsNsNsNsNLgskLgLgsNsNubsNsNsNsNsNLgLgLgLgLgJcJcJcJcJcJcBmBmBmBmBmBmBmBmJcJcsNLgLgLgsNLgsNsNsNsNubLgLgLgsNLgsNsNsNsNsNsNsNsNsNsNJcBmJcJcJcJcptJcJcJcJcJcptJcJcJcJcJcptJcJcptJcptJcJcJcJcptJcdIdI
dILuLuLuLuJcJcJcJcJcJcJcJcJcubububububububLuVhVhVhLuBmBmBmBmsNsNsNsNsNsNsNLgskLgLgsNsNubJcJcJcJcJcBmBmBmBmBmJcJcJcJcJcJcBmBmBmBmBmBmJcJcJcJcsNsNsNsNsNsNsNLgLgsNubLgsNsNsNsNsNsNsNsNsNsNsNsNsNsNJcBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcptJcJcJcJcJcJcdIdI
dILuLuLuJcJcJcJcJcJcJcJcJcJcubJcJcJcJcJcJcLuVhVhVhPAJcJcJcJcsNsNsNsNsNsNsNsNLgLgLgsNsNubJcJcJcJcJcBmBmBmBmBmJcJcJcJcJcJcBmBmBmJcJcJcJcJcJcJcsNsNsNsNsNsNsNsNsNsNubsNsNsNsNsNsNsNsNsNJcJcJcJcJcJcJcBmBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcdIdI
-dILuJcJcJcububububububububububJcJcbpJcJcJcLuVhVhVhLuJcJcJcJcJcJcJcJcJcJcJcJcBmBmJcJcJcubJcJcJcJcJcBmBmBmBmBmJcJcJcJcJcJcBmBmBmJcJcJcJcJcJcJcsNsNsNsNsNsNsNsNsNsNububububububsNsNsNsNJcJcJcJcJcJcJcBmBmJcJcJcJcBmBmBmBmBmBmBmBmBmJcJcJcJcJcJcJcJcJcJcJcptJcJcdIdI
+dILuJcJcJcububububububSEubububJcJcbpJcJcJcLuVhVhVhLuJcJcJcJcJcJcJcJcJcJcJcJcBmBmJcJcJcubJcYiJcJcJcBmBmBmBmBmJcJcJcJcJcJcBmBmBmJcJcJcJcJcJcJcsNsNsNsNsNsNsNsNsNsNububububububsNsNsNsNJcJcJcJcJcJcJcBmBmJcJcJcJcBmBmBmBmBmBmBmBmBmJcJcJcJcJcJcJcJcJcJcJcptJcJcdIdI
dIJcJcJcJcubJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcLuVhVhVhLuJcJcJcJcJcJcJcJcJcJcJcJcJcBmBmJcJcubJcJcJcJcBmBmBmBmBmBmJcJcJcJcJcJcBmBmBmJcJcJcJcJcJcJcsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNJcJcJcJcJcJcBmBmJcBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmJcJcJcJcptJcptptJcJcdIdI
-dIEpububububJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcLuVhVhVhLuJcJcJcJcJcJcJcJcJcJcJcJcJcBmBmJcJcubJcJcJcJcBmBmBmBmBmBmJcJcJcJcJcJcBmBmBmJcJcJcJcJcJcJcsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNJcJcJcJcJcJcJcJcJcBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmJcJcJcJcJcJcJcJcJcJcdIdI
-dIJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcLuVhVhVhLuJcJcJcJcJcJcJcubububububJcBmBmJcJcubJcJcJcJcBmBmBmBmBmBmJcJcJcJcJcJcBmBmBmJcJcJcJcJcbpJcsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNJcJcJcJcJcJcubububBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmJcJcJcJcJcptJcptptJcJcdI
+dIubububububJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcLuVhVhVhLuJcJcJcJcJcJcJcJcJcJcJcJcJcBmBmJcJcubJcJcJcJcBmBmBmBmBmBmJcJcJcJcJcJcBmBmBmJcJcJcJcJcJcJcsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNJcJcJcJcJcJcJcJcJcBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmJcJcJcJcJcJcJcJcJcJcdIdI
+dIJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcLuVhVhVhLuJcJcJcJcJcJcJcubububububJcBmBmJcJcubJcJcJcJcBmBmBmBmBmBmJcJcJcJcJcJcBmBmBmJcJcJcJcJcbpJcsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNJcJcAGJcJcJcubububBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmJcJcJcJcJcptJcptptJcJcdI
dIJcJcJcJcJcJcBmBmBmBmBmBmBmBmJcJcJcJcJcJcPAVhVhVhLuJcJcJcJcJcJcJcJcJcJcJcubJcBmBmJcJcubJcJcJcJcBmBmBmBmBmBmJcJcJcJcJcJcBmBmBmJcJcJcJcJcJcJcsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNJcJcJcJcJcJcJcJcubJcJcJcJcJcJcBmBmBmBmBmBmBmBmJcJcJcJcJcubJcJcJcJcJcJcJcdIdI
dIdIdIdIdIdIskskskskskskskBmJcJcJcJcJcJcJcLuVhVhVhNkJcJcJcJcJcJcJcJcJcJcJcubJcBmBmJcsNubsNsNsNsNLgLgLgLgBmBmBmJcJcJcJcJcBmJcBmJcJcJcJcJcJcJcsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNsNJcJcJcJcJcJcJcJcububJcJcJcJcJcBmBmBmJcJcJcJcJcJcJcJcJcJcubJcptJcptJcptJcJcdI
-dIskskskskskskskdIskskskskBmBmBmJcJcJcJcJcLuVhVhVhLuJcJcJcJcJcJcJcJcJcbpJcubJcJcBmJcsNubsNsNsNsNLgLgLgLgBmBmBmBmBmJcJcJcBmJcBmJcJcJcJcJcJcJcsNsNsNLgLgLgLgLgsNLgLgLgBmBmJcJcJcJcJcJcJcJcJcJcJcBmBmBmJcubJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcubJcJcJcJcJcptJcdIdI
+dIskskskskskskskdIskskskskBmBmBmJcJcJcJcJcLuVhVhVhLuJcJcJckaJcJcJcJcJcbpJcubJcJcBmJcsNubsNsNsNsNLgLgLgLgBmBmBmBmBmJcJcJcBmJcBmJcJcJcJcJcJcJcsNsNsNLgLgLgLgLgsNLgLgLgBmBmJcJcJcJcJcJcJcJcJcJcJcBmBmBmJcubJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcubJcJcJcJcJcptJcdIdI
dIJcJcJcJcJcBmBmBmBmBmBmBmBmBmBmBmBmBmJcJcpuVhVhVhLuJcJcJcJcJcJcJcJcJcJcJcubububububububsNsNsNsNLgLgLgLgBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmJcJcJcsNLgLgLgLgLgLgLgLgLgLgLgBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmJcubJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcubJcptptJcptptJccMdI
dIJcJcbpJcJcJcJcJcJcJcJcJcBmBmBmBmBmBmBmJcLuVhVhVhLupuLuJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmsNsNsNsNLgLgLgLgLgLgLgLgLgLgBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmJcJcubJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcubJcJcJcJcJcJcJccMdI
dIJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcLuVhVhVhLuPALuJcJcJcJcJcJcJcJcJcJcJcJcJcJcsNsNsNsNsNsNsNLgBmBmBmBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcsNsNsNsNsNLgsNsNsNBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmJcJcJcubububububJcJcJcJcJcubJcJcJcJcububJcububJcJcptJcptptJccMdI
dIBmBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcLuVhVhVhPAJcLupuLuJcJcJcBmBmBmBmBmBmBmJcJcsNsNLgLgLgLgLgLgBmBmBmJcsNsNsNsNsNsNsNsNsNsNsNsNJcJcsNsNsNsNsNLgLgLgLgBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmBmJcJcJcJcJcJcJcJcJcJcJcJcububububdiububububJcJcJcptptJcJccMdI
-dIJcJcJcJcJcJcJcJcJcJcJchDhDhDhDhDJcJcJcJcNkVhVhVhLuJcJcLuLuJcJcJcJcJcJcJcBmBmBmBmBmLgLgLgLgsNLgLgLgBmBmJcJcsNsNsNsNsNsNsNsNsNsNsNsNJcubsNsNsNsNsNsNsNknLgBmBmBmBmJcBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcubububdiOuubububububJcJcJcJcJcJccMdI
-dIJcJcJcJcJcJchDJcJcJcJchDhDhDJcJcJcJcJcJcNkVhVhVhLuJcJcJcLuPALuJcJcJcJcJcJcJcJcJcJcBmskskBmBmBmBmBmJcBmBmJcsNsNsNsNsNZmsNsNsNsNsNsNJcJcsNsNsNsNsNsNsNLgLgBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcubububububdiububububJcJcJccMcMcMcMdI
-dIJcJcJcJcJchDhDhDJcJcJcJcJcJcJcJcJcJcJcJcLuVhVhVhVhVhJcJcLuLuhDpuJcJcJccMJcJcJcJcJcJcdIdIJcJcJcJcJcJcBmBmJcsNsNsNsNsNsNsNsNsNsNsNsNJcJcsNsNsNsNsNsNsNLgLgBmJcJcJcubububzNubJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcubububububububububububububububzNcMcMcMcMcM
+dIJcJcJcFOJcJcJcJcJcJcJchDhDhDhDhDJcJcJcJcNkVhVhVhLuJcJcLuLuJcJcJcJcJcJcJcBmBmBmBmBmLgLgLgLgsNLgLgLgBmBmJcJcsNsNsNsNsNsNsNsNsNsNsNsNJcubsNsNsNsNsNsNsNknLgBmBmBmBmJcBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcubububdiOuubububububJcJcJcJcJcJccMdI
+dIJcJcJcJcJcJchDJcJcJcJchDhDhDJcJcJcJcFOJcNkVhVhVhLuJcJcJcLuPALuJcJcJcJcJcJcJcJcJcJcBmskskBmBmBmBmBmJcBmBmJcsNsNsNsNsNZmsNsNsNsNsNsNJcJcsNsNsNsNsNsNsNLgLgBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcubububububdiububububJcJcJccMcMcMcMdI
+dIJcJcJcJcJchDhDhDJcJcJcJcJcJcJcJcJcJcJcJcLuVhVhVhVhVhJcJcLuLuhDpuJcJcJccMJcJcJcJcJcJcdIdIJcJcJcJcJcJcBmBmJcsNsNsNsNsNsNsNsNsNsNsNsNJcJcsNsNsNsNsNsNsNLgLgBmJcJcJcubububzNubJcJcJcJcJcJcJcJcJcJcJcJcJcAGJcJcJcJcJcJcJcubububububububububububububububzNcMcMcMcMcM
dIJcJcJcJcJchDhDJcJcJcJcJcJcJcJcJcJcJcJcJcLufAVhVhVhVhhDubHHHHhDLuHHHHHHHHJcJcJcJcJcJcdIdIJcJcJcJcJcJcBmBmBmsNsNsNsNsNsNsNsNsNsNsNsNJcJcsNsNsNsNsNsNLgknkntMtMBmBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcHHHHHHHHHHHHubububububububububububububublr
dIJcJcJcJchDhDhDJcJcJcJcJcJcJcJcJcJcJcJcJcubLuVhVhVhVhhDhDHHHHHHHHHHububHHJcJcJcJcJcJcdIdIJcJcJcJcJcJcBmBmBmsNsNsNsNsNsNsNsNsNsNsNsNJcJcJcJcJcJcJcJcBmtMtMtMtMBmBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcHHHHHHHHHHHHHHHHHHHHubububHHHHHHHHHHHHPGlr
-dIJcJchDhDhDJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcubLuVhVhVhVhubhDubububLuubhDububJcJcJcJcJcJcdIdIJcJcJcJcJcJcBmBmBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcBmtMtMtMtMBmBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHPGlr
-dIhDhDhDhDhDhDhDhDJchDhDhDhDJcJcJcJcBmJcJcubLuVhVhVhVhhDhDJcJcJchDJchDhDJcJcJcJcJcJcJcdIdIJcJcJcJcJcJcBmtMtMBmBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcBmtMvWvWvWtMBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcubHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHPGlr
+dIJcJchDhDhDJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcubLuVhVhVhVhubhDubububLuubhDububJcJcFOJcJcJcdIdIJcJcJcJcJcJcBmBmBmJcJcJcJcJcJcJcJcJcJcJcJckaJcJcJcJcJcJcJcBmtMtMtMtMBmBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHPGlr
+dIhDhDhDhDhDhDhDhDJchDhDhDhDJcJcJcJcBmJcJcubLuVhVhVhVhhDhDJcJcJchDJchDhDJcJcJcJcJcJcJcdIdIJcJcJcJcJcJcBmtMtMBmBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcBmtMvWvWvWtMBmJcJcJcJcJcJcJcFOJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcubHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHPGlr
dIJcJchDhDhDhDhDhDJcJchDhDhDhDJcJcJcJcJcJcubLuVhVhVhVhhDJcJcJcJcJcJcJchDJcJcJcJcJcJcJcdIdIJcJcJcJcJcJcBmvWtMBmBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcBmBmvWtMtMvWvWtMBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcubububububububububububububububububububublr
dIJcJcJchDhDhDhDhDJcJchDhDhDhDhDJcJcJcJcJcubpuVhVhVhHcubJcJcJcJcJcJcJchDhDhDJcJcJcJcJcdIdIJcJcJcJcJcJcJcBmtMJclrlrlrlrJcJcJcJcJcJcJcJcJcJcJcJcJcBmBmvWtMtMvWBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcGVcMcMcMcMcM
dIJcJcJchDhDububhDJcJcJchDhDhDhDhDJcJcJcJcubLuVhVhVhVhubJcJcJcBmJcJcJcJchDhDhDhDJchDJcdIdIJcJcJcJcJcJcJcBmBmBmBmBmBmBmBmBmBmJcJcJcBmBmBmJcJcJcJcBmBmvWtMBmvWtMBmBmBmBmBmBmJcJcJcJcBmBmBmBmBmJcJcJcBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcBmBmBmBmBmJcJcJcJcubJccMcMcMcMdI
-dIEpubububububhDhDJcJcJchDhDhDhDhDhDhDJcJcubLufAfAVhVhubJcJcBmBmJcJcJcJchDhDhDhDJchDhDdIdIhDhDhDJcJcJcJcJcJcJcJcJcBmBmBmBmBmBmBmJcBmJcBmBmBmBmBmBmBmBmBmBmBmBmBmJcJcJcJcJcJcJcJcJcBmBmBmBmBmBmBmBmBmBmBmJcJcJcJcJcJcBmBmBmBmBmBmBmBmBmBmBmBmBmJcJcubmJmJJcJccMdI
+dIububububububhDhDJcJcJchDhDhDhDhDhDhDJcJcubLufAfAVhVhubJcJcBmBmJcJcJcJchDhDhDhDJchDhDdIdIhDhDhDJcJcJcJcJcJcJcJcJcBmBmBmBmBmBmBmJcBmJcBmBmBmBmBmBmBmBmBmBmBmBmBmJcJcJcJcJcJcJcJcJcBmBmBmBmBmBmBmBmBmBmBmJcJcJcJcJcJcBmBmBmBmBmBmBmBmBmBmBmBmBmJcJcubmJmJJcJccMdI
dIJcJcJchDhDhDhDhDJcJcJcJchDJchDhDhDhDJchDubububVhVhVhubJcJcJcBmJcJcJcJcJchDhDhDJcJchDdIdIhDhDhDhDhDJcJcLuJcJcJcJcJcBmBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcBmJcJcJcJcJcBmBmJcJcJcJcJcJcJcJcJcBmBmBmBmBmBmBmBmBmBmJcJcJcJcmJmJmJmJcMdI
dIJcJcJchDhDhDhDhDJcJcJcJcJcJchDhDhDJcJchDhDhDubVhVhVhVhJcBmBmBmBmBmJcJcJchDhDhDJcJchDdIdIhDhDhDJchDJcJcLuJcJcJcJcJcBmBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcBmBmJcJcJcJcJcJcJcJcJcBmBmBmBmJcJcJcJcJcJcJcJcJcmJmJmJmJmJcMdI
dIJcJcJchDhDhDhDhDJcJcJcJcJcJcJchDhDhDhDhDJcJcubfAVhVhVhJcJcBmBmBmBmBmJcJchDhDhDhDJcJcdIdIhDhDhDhDhDJcJcLuJcJcJcJcJcBmBmJcJcJcbpJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcBmBmBmBmJcububJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcmJmJmJmJmJcMdI
-dIJcJcJchDhDhDhDhDJcJcJcJcJcJcJcJchDJchDhDhDJcububVhVhVhJcJcJcJcJcBmBmBmJcJchDhDhDJcJcdIdIhDhDhDhDJcJcJcLuJcJcJcJcJcBmBmBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcBmBmJcJcJcJcJcJcJcBmBmBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcmJmJmJmJmJcMdI
+dIJcJcJchDhDhDhDhDJcJcJcJcJcJcJcJchDJchDhDhDJcububVhVhVhJcJcJcJcJcBmBmBmJcJchDhDhDJcJcdIdIhDhDhDhDJcJcJcLuJcJcJcJcJcBmBmBmJcJcJcJcJcJcJcAGJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcFOJcJcJcBmBmJcJcJcJcJcJcJcBmBmBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcJckaJcJcJcJcJcmJmJmJmJmJcMdI
dIJcJchDhDhDhDhDhDJcJcJcJcJcJcJcJcJcJcJchDhDJcububVhVhVhJcJcJcJcJcJcJcJcJcJchDhDhDJcJcdIdIhDhDJcJcJcJcJcLuJcJcJcJcBmBmBmBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcBmBmJcJcJcJcJcJcBmBmBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcmJmJmJmJmJdIdI
-dIJchDhDhDhDhDhDhDJcubJcJcJcJcJcJcJcJcJcJchDhDububVhHcVhJcJcJcJcJcJcJcJcJcJcJcJchDJcJcJcJcJcJcJcJcJcJcJcLuJcJcJcJcBmBmBmBmJcJcJcJcJcJcJcJcJcBmBmJcJcJcJcJcBmBmBmBmBmJcJcJcJcJcJcJcJcBmJcJcJcJcJcJcJcBmBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcmJmJmJmJmJdIdI
+dIJchDhDhDhDhDhDhDJcubJcJcJcJcFOJcJcJcJcJchDhDububVhHcVhJcJcJcJcJcJcJcJcJcJcJcJchDJcJcJcJcJcJcJcJcJcJcJcLuJcJcJcJcBmBmBmBmJcJcJcJcJcJcJcJcJcBmBmJcJcJcJcJcBmBmBmBmBmJcJcJcJcJcJcJcJcBmJcJcJcJcJcJcJcBmBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcmJmJmJmJmJdIdI
dIJchDhDJchDhDhDhDJcubJcJcJcJchDJcJcJcJcJcJchDububVhVhVhJcJcJcJcJcJcJcJcJcJcJcJchDJcJcJcJcJcJcJcJcJcJcJcLuLuJcJcJcBmBmBmBmBmBmJcJcJcJcJcJcJcJcBmBmBmBmBmBmBmBmBmBmBmBmBmJcJcJcJcJcJcBmJcJcJcJcJcJcJcJcBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcmJmJmJmJdIdIdI
-dIhDhDhDJchDhDhDhDJcubJcJcJchDhDJcJcJcBmJcJcJcububVhVhVhVhVhVhJcJcJcJcJcJcBmJcJcJcJcJcJcJcJcJcJcJcJcdIdIdIdIdIdIJcBmtMtMtMBmBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcBmBmBmBmBmJcJcJcJcBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcBmBmBmBmBmJcJcJcJcJcJcJcJcmJmJmJmJdIdIdI
+dIhDhDhDJchDhDhDhDJcubJcJcJchDhDJcJcJcBmJcJcJcububVhVhVhVhVhVhJcJcJcJcJcJcBmJcJcJcJcFOJcJcJcJcJcJcJcdIdIdIdIdIdIJcBmtMtMtMBmBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcBmBmBmBmBmJcJcJcJcBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcBmBmBmBmBmJcJcJcJcJcJcJcJcmJmJmJmJdIdIdI
dIhDhDJcJchDhDhDhDJcubJcJcJchDhDJcJcJcBmJcJcJcububfAfAVhVhVhVhhDhDhDJcJcJcJcJcJcJcJcJcJcJcdIdIdIdIdIdIdIdIdIdIdIJcBmtMtMtMBmBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcBmBmBmJcJcJcBmBmJcJcJcJcBmBmJcJcJcJcJcJcJcJcBmBmBmBmBmBmBmBmBmBmBmBmJcJcJcJcJcmJmJmJmJdIdI
dIhDhDJcJchDhDhDhDJcubJcJcJchDhDJcBmBmBmBmBmubububububVhVhVhVhhDdIdIdIdIdIdIdIdIdIdIdIJcdIdIdIdIdIdIdIdIdIdIdIdIdIdIfZfZskskBmJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcJcBmBmBmBmJcJcBmJcJcJcJcBmBmBmBmBmBmJcJcJcJcJcBmBmBmBmBmBmBmBmBmBmBmBmBmJcJcmJmJmJmJmJmJdIdI
-dIhDhDJcJcJchDhDhDJcUlJcJcJcJchDJcJcBmBmBmubububUlububVhVhVhVhhDdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIskfZskskBmJcJcJcJcJcJcJcJcJcJcbpJcJcJcJcJcbpJcJcJcJcBmBmBmBmBmBmJcJcJcJcJcBmBmBmBmBmJcJcJcJcBmBmBmBmBmBmBmBmBmBmBmBmBmBmJcdIdImJmJmJdIdIdIdI
+dIhDhDJcJcJchDhDhDJcubJcJcJcJchDJcJcBmBmBmububububububVhVhVhVhhDdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIskfZskskBmJcJcJcJcJcJcJcJcJcJcbpJcJcJcJcJcbpJcJcJcJcBmBmBmBmBmBmJcJcJcJcJcBmBmBmBmBmJcJcJcJcBmBmBmBmBmBmBmBmBmBmBmBmBmBmJcdIdImJmJmJdIdIdIdI
dICDdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdIdI
"}
(1,1,2) = {"
diff --git a/_maps/map_files/roguetown2/otherz/smallswamp.dmm b/_maps/map_files/roguetown2/otherz/smallswamp.dmm
index 437e4ad45f..9863b0e5d5 100644
--- a/_maps/map_files/roguetown2/otherz/smallswamp.dmm
+++ b/_maps/map_files/roguetown2/otherz/smallswamp.dmm
@@ -10,7 +10,9 @@
"j" = (/turf/closed/wall/mineral/rogue/craftstone,/area/rogue/outdoors/bog)
"l" = (/turf/closed/mineral/random/rogue/high,/area/rogue/indoors/cave)
"o" = (/turf/closed/mineral/rogue/bedrock,/area/rogue/outdoors/bog)
+"q" = (/obj/effect/landmark/start/adventurerlate{icon_state = "arrow"; dir = 8},/turf/open/floor/rogue/dirt,/area/rogue/outdoors/bog)
"r" = (/turf/open/floor/rogue/dirt,/area/rogue/indoors/cave)
+"s" = (/obj/effect/landmark/start/adventurerlate,/turf/open/floor/rogue/dirt,/area/rogue/outdoors/bog)
"v" = (/obj/structure/portal,/turf/closed/mineral/rogue/bedrock,/area/rogue/outdoors/bog)
"w" = (/turf/open/floor/rogue/dirt/road,/area/rogue/indoors/cave)
"x" = (/obj/effect/landmark/start/adventurerlate{icon_state = "arrow"; dir = 4},/turf/open/floor/rogue/dirt/road,/area/rogue/outdoors/bog)
@@ -18,7 +20,10 @@
"z" = (/obj/effect/landmark/start/adventurerlate{icon_state = "arrow"; dir = 8},/turf/open/floor/rogue/dirt/road,/area/rogue/outdoors/bog)
"B" = (/obj/effect/landmark/events/testportal{aportalloc = "bog"},/turf/open/floor/rogue/dirt/road,/area/rogue/outdoors/bog)
"D" = (/turf/open/floor/rogue/dirt/road,/area/rogue/outdoors/bog)
+"F" = (/obj/effect/landmark/start/adventurerlate,/turf/open/floor/rogue/dirt/road,/area/rogue/outdoors/bog)
"G" = (/turf/open/water/swamp,/area/rogue/outdoors/bog)
+"M" = (/obj/effect/landmark/start/adventurerlate{icon_state = "arrow"; dir = 4},/turf/open/floor/rogue/dirt,/area/rogue/outdoors/bog)
+"O" = (/obj/effect/landmark/start/adventurerlate{icon_state = "arrow"; dir = 1},/turf/open/floor/rogue/dirt,/area/rogue/outdoors/bog)
"Q" = (/turf/closed/mineral/random/rogue/med,/area/rogue/outdoors/bog)
"S" = (/obj/structure/fluff/traveltile/vampire{aportalgoesto = "vampin"; aportalid = "vampexit"},/turf/open/floor/rogue/dirt,/area/rogue/outdoors/woods)
"U" = (/obj/machinery/light/rogue/firebowl/standing,/turf/open/floor/rogue/hexstone,/area/rogue/outdoors/bog)
@@ -31,105 +36,105 @@
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
booooooooooDDGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGoooooooooooooYYoooooooooooYYGGGGGGGGGGGGGGGGGGGGGGGGGGGQQQQQQQGGGGGGGGQQQQQQQQQQQQQob
booooooooooDDDDDDDDDDDDDDDDDDDDDDDDDGGGGGGGGGGGooooooGGGDDGGGGGGGGGGGDDGGGGGGGGGGGGGGGGGGGGDDDDDDDQQQQQQQDDDGGGDDQQQQQQQQQQQQQob
-boooooDDDDDDDDDDDDDDDDDDDDDDDDDDDDDGGGDDDDDDDDDDDDDDDGGGDDGGGGDDDDDDDDDDDDDDDGGGGGGGaaaaaGGDDDDDDDQQQQQQQDDDGGGDQQQQQQQQQQQQQQob
+boooooDDDDDDzDDDDDDDDDDDDDDDDDDDDDDGGGDDDDDDDDDDDDDDDGGGDDGGGGDDDDDDDDDDDDDDDGGGGGGGaaaaaGGDDDDDDDQQQQQQQDDDGGGDQQQQQQQQQQQQQQob
boooooaaaaaDDaaaaaaaaaaaaaaaaaaaGGGGGaaaaaaaaaaaaaaaaaGGDDGGGGaaaaaaaDBaaaaaaacaaaaaaaaaGGGaaaaaaaQQQQQQQaaaGGaaQQQQQQQQQQQQQQob
boooeeeGGGaDDaaaaaaGGGGGGGGGGaaaaGaGaaaaaaaaaaaaaaaaaaaaDDaaGGaaaaaaaDDaaaaaaaccaaaaaaaGGGGaaaaQQQQQQQQQQaaaGGaaQQQQQQQQQQQQQQob
boooeeeGGGaDaaaaaaaGGGGGGGGGGaaaaaaGaaaaaaaGGaaaaaaaaaaaDDaaGGaaaaaaaDDaaaaaaaaccccaaaGGGGGaaaaQQQQQQQQQQaaaGGaaQQQQQQQQQQQQQQob
-boooeeeeeGaDDaaZaaaGGGGeeGGGGaaaaaaGGaaaaaaGGaGaaaaaaaaaDDaaaaaaaaaaaDDaaaaaaaaccccaaaaaGGGaaaaQQQQQQQQQQaaaGGaaaaaQQQQQQQQQQQob
+boooeeeeeGaDDaaZaaaGGGGeeGGGGaaaaaaGGaaaaaaGGaGaaaaqaaaaDDaaaaaaaaaaaDDaaaaaaaaccccaaaaaGGGaaaaQQQQQQQQQQaaaGGaaaaaQQQQQQQQQQQob
booDaGeeeGaDDaaaaaGGGeeeeeeGGGaaaaaaaaaaaGGGGaGaaaaaaaaaDaaaaaaaaaaaaDDaaaaaaaaacccaaaaaGGGaaaaQQQQQQQQQQaaaGGaaaaaaQQQQQQQQQQob
booDaGeeeGaaDaaaaaGGGeeeeeeGGGGGaaaaaaaaaaGGGGGaaaaaaaaaDaaaaaaGaaaaaDDaaaaaGaaacccaaaaaGGGaaaaaaQQQQQQQQaaaGaGGaaaaQQQQQQQQQQob
bGDDaGeeeGaaDaaaaaGGGeeeeeeeGGGGaaaaaaaaaaaGGGGaaaaaaaaaDaaaaaaaaGaaaDDaaaaaGaaaaccaaaaaaGGaaaaaaQQQQQQQQaaaGGGGaaaaaaaQQQQQQQob
-boDDaGGGeGaaDaaaaaaGGeeeeeeeGGaaaaaaaaaaaaaGGGGGaaaaaaaaDaaaaaaGaGaaaDaaaaaaGaaaacccaaaaaaGaaaaaaQQQQQQQQaaaGGGaaaaaaaaQQQQQQQob
-boDDaaGaGGaaDaaaaaaGGeeeeeeeGGaaaaaaGGaaaaaaGGGGaaaaaaaaDaaaaaaGGGGaaDaaaaaaGaaaacccaaaaaGGGaaaaaaQQQQQQaaaaaGGDDDDDDDDDDDDDzGob
+boDDaGGGeGaaDaaaaaaGGeeeeeeeGGaaaaaaaaaaaaaGGGGGaaaaaaaaDaaaaaaGaGaaaDaaaaaaGaaaacccaaaaaaGaqaaaaQQQQQQQQaaaGGGaaaaaaaaQQQQQQQob
+boDDaaGaGGaaDaaaaaaGGeeeeeeeGGaaaaaaGGaaaaaaGGGGaaaaaaaaDaaaaaaGGGGaaDqaaaaaGaaaacccaaaaaGGGaaaaaaQQQQQQaaaaaGGDDDDDDDDDDDDDzGob
boDDaaaaGGaaDaaaaaaGGGGeeeeeGGaaaaaaaGaaaaaaGGGGaaaaaaaaDaaaaaaaGGGaaDaaaaaaGaaaaaccaaGGGGGGaaaaaaaaQQQQaaaaaaGGaaaaaaaaGaGGDGob
booDaaaaaaaaDaaaaaaGGGGGGGeeeGaaaaGGGGaaZaaaaGaGaaaaaaaaDaaaaaaaGGGaaDaaaaGaGaaaaaccaaaaaaGGaaaaaaaaQQQQaaaaaaGGaaaaaaaaGGGDDGob
booDaaaaaaaaDaaaaaaaaaaGGGeeeGaaaaaaaaaaaaaaaGGGaaaaaaaaDaaaaaaaaaaaaDaaaaaaGaGaaacccaaaaaGGaaaaaaaaQQQQaaaaaaGGGaaaaaaaGGGDDGob
-bDDDDDDDDDDDDDDDDDaaaaaGGGGeeGaaaaaaaaaaaaaaaGGGaaaaaaaaDaaaaaaaaaaaaDaaaaaaaaGaaaccaaaaaaaGGaaaaaaQQQQQaaaaaaaaGGaaaaaGGGaDDGob
+bDDDDDDDDDDxDDDDDDaaaaaGGGGeeGaaaaaaaaaaaaaaaGGGaaaaaaaaDaaaaaaaaaaaaDaaaaaaaaGaaaccaaaaaaaGGaaaaaaQQQQQaaaaaaaaGGaaaaaGGGaDDGob
bDDDaaaaaaaaaaaaaDaaaaaaGGGGGGaaaaaaaaaaaaaaaGGGaaaaaaDDDDDDDDDDDDDDDDaaaaaaaaGaaacccaaaaaaGGGaaaaaQQQQQaaaaaaaaGGGaaaaGGaaDGGob
-booDaoooooaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaGGGaaaaaaaaaaaaaaaaaaaaaDaaaaGGaGGaaccccaaaaGGGaaaaaaaaaQQQaaaaaaaaaGGGaaaGaaaDGGob
+booDaoooooaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaGGGaaaaaaaaaaOaaaaaaaaaaDaaaaGGaGGaaccccaaaaGGGaaaaaaaaaQQQaaaaaaaaaGGGaaaGaaaDGGob
boooooooooooooaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaGGGaaaaaaaaaaaaaaaaaaaaaDaaaaaGGGaaacccccaaaGaaaaaaaaaaaQQQaaaaaaaaGGGGaGaaaaaDGGob
-booooooaaaooaaaaaDaaGGGGGGaaaaaaaaaaaaaaaaaaaGGGaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaccccaaaaaGaaaaaaaaaaaaaaaaaaaaaaGGGGGaaaaaaDGGob
-booooooaaaaaGGGGaDaaGGaaaGGaaaaaaaaaaaaaaaaaaGGGaaaaaaaaaaaaaaaaaaaaaDaGGGGaaaaaccccaaaaaGaaaaaaaaaaaaaaaaaaaaaaGGGGaaaaaaaDGGob
+booooooaaaooaaaaaDaaGGGGGGaaaaaaaaMaaaaaaaaaaGGGaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaccccaaaaaGaaaaaaaaaaaaaaaaaaaaaaGGGGGaaaaaaDGGob
+booooooaaaaaGGGGaDaaGGaaaGGaaaaaaaaaaaaaaaaaaGGGaaaaaaaaaaaaaaaaaaaaaDaGGGGaaaaaccccaaaaaGaaaaaaaaaaaaaaaaaOaaaaGGGGaaaaaaaDGGob
boooooaaaaaaGaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaGGGaaaaaaaaaaaaaaaaaaaaaGGGGGaaaaaaaaaccccaaGaaaaaaaaaaaaaaaaaaaaaGGGGaaaaaaaGGGGob
-boooooaaaaaaaGGaaDaaaaaaaaaaaGGGGaaaaaaaaaaaaGGGaaGGaGGaaaaaaaaaaaaaGGGGGaaaaaaaaaaccccaaaaaaaaaaaaaaaaaaaaaaaGGGGGaaaaaaaGGGGob
+boooooaaaaaaaGGaaDaaaaaaaaaaaGGGGaaaaaaaaaaaaGGGaaGGaGGaaaaaaaaaaaaaGGGGGaaaaaaaaaaccccaaaaaaaaaaaMaaaaaaaaaaaGGGGGaaaaaaaGGGGob
boooooaaZaaaGGaaaDaGGGGGGaGGGGGGGaaaaaaaaaaaaGGaGGaaGGaaaaaaaaaaaaaGGGGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGGGGaaaaaaaaGGGGob
boooooaaaaaaGaaaaDaGGeeeeeGGGeGGGaaaaaaaaaGGGaGaaaaaGaaaaaaaaaaaaaGGGDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGGGaaaaaaaaaGGGGGob
boooooaaaaaaGaaaaDaGGeeeeeeeeeGGGaaaaaaGGGGaaaaaaaGGGaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaGGaGGaaaaaaaaaaaaaaaaaaaaaaaGGGGGob
-boooooaaaaaaGaaaaDaGGeeeeeeeeeeGGaaaaaaGGaaaaaaaaaGGGGaaaaaGaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaGGGGGaaaaaaaaaaaaaaaaaaaaaaGGDGGob
+boooooaaaaaaGaaaaDaGGeeeeeeeeeeGGaaaaaaGGaaaaaaaaaGGGGaaaaaGaaaaaaaaaDaaaaaaaaaaaaaaqaaaaaaaaaGGGGGaaaaaaaaaaaaaaaaaaaaaaGGDGGob
boooooaaaaaaaaaaaDaGGGGGeeeeGGGGGaaaaaaaaaGGaaaaaaGGGGGaaaaGaaaaaaaaaDaaaaaaaaaGaaaaaaaaaaaaaaaaGGGGGaaaaaaaaaaaaaaaaaaaGGaDGGob
-boooooaaaaaaaaaaaDaaaaaaGGGGGGGGGaaaaaaaaaaGGGaaaaGGGGGaaaaGaaaaaaaaaDaaaaaGGGGaGGaaaaaaaaaaaaaGGGaGGaaaaaaaaaaaaaaaaaaaaaaDGGob
+boooooaaaaaaaaaaaDaaaaaaGGGGGGGGGaaaaaaaaaaGGGaaaaGGGGGaaaaGaaaaaaasaDaaaaaGGGGaGGaaaaaaaaaaaaaGGGaGGaaaaaaaaaaaaaaaaaaaaaaDGGob
boooooaaaGGaaaaaaDaaaaaaGGGGGaaaaaaaaaaaDDDDDGDDDDDDDDDDDDDGDDDDDDDDDDaaaaGGaaaaGGaaaaaaaaaaaGGGaaaaaaaaaaaaaaaaaaaaaaaaaaaDGGob
boooooaaaaGGaaaaaDaaaaaaaaaaaaaaGGaaaaaaGGGGGGaaaaaaGaaaaaaGaaaaaaaaaaaaaGGaaaaaaGaaaGGGGGGaaGGaaaaaaaaaaaaaaaaaaaaaaaaaaaaDGGob
booooaaaaaaGGaaaaDaGaaaaaaaacaaaaGGaaaaaDaaaaaaaaaaGGaaaaaaaaGaaaaaaaaaaaGGaaaaaaGGaaaaGGaaaGGGGaaaaaaaaaaaaaaaaaaaaaaaaaaaDGGob
-booooaaaaaaaGGaaaDaGaaaaaaaacaaaaaGGaaaaDaaaaGGGGGGGGGaaaGGGGaGaaGGGaaaaaGGaaaaaaaGaaaaGaaaaaaaGGGGaaaaaaaaaaaaaaaaaaaaaaaaDGQob
-booooaaaaaaaaaaaaDGGaaaaccaacaaaaaaGaaaaDaaaGGGeeeeaeeGaaaGGGaGGGGGGGGGGaaGGGGaaaaaaaaaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDGQob
+booooaaaMaaaGGaaaDaGaaaaaaaacaaaaaGGaaaaDaaaaGGGGGGGGGaaaGGGGaGaaGGGaaaaaGGaaaaaaaGaaaaGaaaaaaaGGGGaaaaaaaaaaaaaaaaaaaaaaqaDGQob
+booooaaaaaaaaaaaaDGGaaaaccaacaaaaaaGaaaaDaaaGGGeeeeaeeGaaaGGGaGGGGGGGGGGaaGGGGaaaaaaaaaGaaaaaaaaaaaaaaaaaaaasaaaaaaaaaaaaaaDGQob
booooooooooaaooooooooooocccacaaaaaaGaaaaDaaaGGeeeeeeeeGaaaGGGaaGGeeGGGGGaaaGGGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDQQob
boooooooooooooooooooooooaccaccaaaaGGaaaaDaGGeeeeeeeeeeGGaaaGGaaGGeeGGGGGGeeeGGGGGGGGaaaaaaaaaaQQQaaaaaaaaaaaaaaaaaaaaaaaaaaDQQob
booooaaaaaaaaaaaGGaooooaacccccaaaaGaaaaaDaGGeeeaaaaaeeGGaaaGGaaGGeeeeeGGGGeeeeeGGGGGaaaaaaaaQQQQQQQQQaaaaaaaaaaaaaaaaaaaaaaQQQob
bGDDaaaGGGGGaaaaGDaaaaaaacccccaaaaaaaaaaDaaGeeaaaaaaeeeGaaaaaaaGGeGGeeeeeeeeeeeeeeeGaaaaaQQQQQQQQQQQQQaaaaaaaaaaaaaaaQaaaaaQQQob
-bGDDaGGeeeGGGaGGaDaaaaaaaaccccaaaaaaaaaaDaaGeeaaaZaaGeeGGGaaaaaaaaGGGGGeeeeeeeeeeeeGGaaaaQQQQQQQQQQQQQQQQQQQQQQQQQQQQQaaQaQQQQob
-beeeeeGeeeGGaaGaaDaaaaaaaacccccaaaaaZaaaDaaGeeaaaaaaaeeGGGaaaaaaaaGGGGGGGeeeeeeeeeeaaaaaaaQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQob
+bGDDaGGeeeGGGaGGaDaaaaaaaaccccaaaaaaaaaaDqaGeeaaaZaaGeeGGGaaaaaaaaGGGGGeeeeeeeeeeeeGGaaaaQQQQQQQQQQQQQQQQQQQQQQQQQQQQQaaQaQQQQob
+beeeeeGeeeGGaaGaaDaaaaaaaacccccaaaaaZaaaDaaGeeaaaaaaaeeGGGaaaaOaaaGGGGGGGeeeeeeeeeeaaaaaaaQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQob
beeeeeeeeGGaaaaaaDaaaaaaaaccccaaaaaGGaaaDaGGGeaaaaaaaeGaGGaaaaaaaaGGGGGGGeeeeeeGGGGGaaaaaaaaQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQob
bGeeeeeeeGaaaaaaaDaaaaaaaaaaccaaaaaaGaaaDaGGGeeeeeeeeeGGGGGaaaaaaaGGGGGGGaaaGGGGGGaaaaaaaaaaaaQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQob
-beeeeeGGGaaaaaaaaDaaaaaaaaaaacaaaaaaGGaaDaaGGeeeeeeeeeGGGGGGaaaaaaGGGGGGGaaaaGGGGaaaaaaaaaaaaaaaaaaaaQQQQQQQQQQQQQQaQQaQQQaQQGob
+beeeeeGGGaaaaaaaaDaMaaaaaaaaacaaaaaaGGaaDaaGGeeeeeeeeeGGGGGGaaaaaaGGGGGGGaaaaGGGGaaaaaaaaaaaaaaaaaaaaQQQQQQQQQQQQQQaQQaQQQaQQGob
bGGeeeGGaaaaaaaaaDaaaaaaaaaaacaaaaaaaGaaDaaaGGGGGGGGGGaGGGaGaaaDaaaaaaaGaaaaaGGaGGaaaaaaaaaaaaaaaaaaaaaDDDDDDDDDDaaaaaaaaaaQQGob
-bGGGGGaaaaaGGGGGaDaaaaaaaaaaacaaaaaaaaaaDaaaaaaaaGGaGaaaaaaGGaaDaaaaaaaaaaaaaaaGGGaaaaaaaaaaaaaaaaaaaaaDaaaaaaaDDDDDDDDDDDDzDGob
+bGGGGGaaaaaGGGGGaDaaaaaaaaaaacaaaaaaaaaaDaaaaaaaaGGaGaaaaaaGGaaDaaaaaaaaaaaaaaaGGGaaaaaaaaaaaaqaaaaaaaaDaaaaaaaDDDDDDDDDDDDzDGob
bGGDaaaaaaGGaaaaaDaaaaaaaaaaacaaaaaaaaaaDDDDDDDGDDDDDDDDDDDDGGDDDDDDaaaaaaaaaaaGGGaaGGGaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaob
bGGDaaaaaaGaaaaaaDaaaaaaaGaaaaaaGGGGaaaaDaaaaGGaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaGaaGaGGGGaaaaaaaaaaaaaaaaaaaaaaaaaaaacccccaccob
-bGGDaaaaaGGaaaaGGDGGaaaaaaGGGGGaGGGGaaaaDaaaGGaaaaGGGaaaaaaaaaaDaaaaaaaaGGGGGaaaaaaGGaaaaaGaaaaaaaGaaaaaaaaaaaaaaaaaaccccccaccob
+bGGDaaaaaGGaaaaGGDGGaaaaaaGGGGGaGGGGaaaaDaaaGGaaaaGGGaaaaaaaaaaDaaaaaaaaGGGGGaaaaaaGGaaaaaGaaaaaaaGaaaaaaaqaaaaaaaaaaccccccaccob
bGGDaaaaaGaaaaGGGGGaaaaaaaaaGGGGGGGGaGGaDaaaGGGGGGaaaaaaaaaaaaaDaaaaGGGaGGGGaaaaaaaGaaaaaaaaaaaaaaGGGGaaaaaaaaaaaaaaccccccccccob
bGGDaaaaaaaaaaGGGDGGaaaaaaaaGGeeeeeGGGGGDaaaaaaaaaaaaaaaaaaaaaaDaaaGGGGeeeeGGaaaaaaaaaaaaaaaaaaaaaGGaaaaaaaaaaaaaaacccccccccccob
bGGDaaaaaaaaaGGaaDaGaaaaaaaaGGeeeeeGGGGGaaaaaaaaaaaaaaeeeeaaaaaDaaGGeeeeeeeGGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacccccooooooccob
-bGGDaaaaaaaGGaaaaDGGaaaaaaaaGGeeeeeeGGGaaaaaaaaaaaaaeeeeeeaaaaaDaaGGeeeeeeeeeeGGaaaaaaaaaaaZaaaaaaaaaaaaaaaaaaccccccccjvooojccob
+bGGDaqaaaaaGGaaaaDGGaaaaaaaaGGeeeeeeGGGaaaaaaaaaaaaaeeeeeeaaaaaDaaGGeeeeeeeeeeGGaaaaaaaaaaaZaaaaaaaaaaaaaaaaaaccccccccjvooojccob
bGGDaaaaaaaaGGaaaDaGaaaaaaaaGGeeeeeeGGGGaaaaaaaaeeeeeeeeeeaaaaaDaaGGeeeeeeeeeeGGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaccccccaaajUyyUjccob
bGGDaaaaaaaGDGDDDDDGDDDDDDDDDaaaGeeeGGGGaaaaeeeeeeeeeeeeaaaaaaaDaaGGGeeeeeeeeeGGZaaaaaaaaaaaaaaaaaaaaaaaaaaaccccccaaaajyyyyjaaob
bGGDaaaaaaaGGGaaaDaGaaaaDDaaaaaaGeeeGGGaaaaaeeeeeeeeaGGaaaaaaaaDaaGGGGGeeeeeeeGGaaaaaaaaaaaaaaaaaaaaaaaaaaaacccccaaaaajyyyyjaaob
-bGGDaaaaaaaaGGaaaDGGaaaaDDaaaaaaGeeeGGaaaaaaaGGaaaaaaGaaaaaaaaaDaaGGGGaeeeeeeeGGaaaaaaaaaaaaaaaaaaaaaaaaaaacccccaaaaaaaGaaaaaaob
+bGGDaaaaaaaaGGaaaDGGaaaaDDaaaaaaGeeeGGaaaaaaaGGaaaaaaGaaaaaaaaaDaaGGGGaeeeeeeeGGaasaaaaaaaaaaaaaaaaaaaaaaaacccccaaaaaaaGaaaaaaob
bGGDaaaaGGaaGGaaaGGGaaaaDDaaaaaaaGGGGGaaaaaGGGaaaaaaGGaaaacaaaaDaaaaGGGGGGGGGGGGaaaaaaaaaaaaaaaaaaaGGaaaaacccccaaaaaGGGaaaaaaaob
-bGGDaaaGGaaaGGaaaaaaaaaaDDaaaaaaaaGGGaaaaaGGGGaaaaaaaaaaaccaaaaDaaaaGaaaGGGGGaaaaaaaaaaaaaaaaaaaaaGGGGaaaccccccaaaaGGaaaaaaaaaob
+bGGDaaaGGaaaGGaaaaaaaaaaDzaaaaaaaaGGGaaaaaGGGGaaaaaaaaaaaccaaaazaaaaGaaaGGGGGaaaaaaaaaaaaaaaaaaaaaGGGGaaaccccccaaaaGGaaaaaaaaaob
bGGDaaaGGGaaaaaaaaaaaaaaDDaaaaaaaaaaaaaaaGGaaaaaaaaaaaacccaaaaaDaaaaaaaaaaaaaGaGGGGGGGGGaaaaaaGaaGGaGGaGGaaccccaaaaGGaaaaaaaaSob
-bDDDaaaaaaaaaaccaccaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaacccacaaaaDaaaaaaaaaaGGGGaaaGGGaaaaaaaaGGGGGGGGGGaGGaaccccaaaaGGGaaaaaaaSob
-bxDDaaaaaaaacccccccccaaaaDaaaaaaaaaaaaaaaaaaaaaaaacccccccccaaaaDaaaaaaaaaaaGGGaGGaaaaaaaaaaaGaaaaaaGGaaaGGGGaaaaGGGGGGGGaaaaaSob
+bDDDaaaaaaaaaaccaccaaaaaaDaaaaaaaaaaaaqaaaaaaaaaaaaaaacccacaaaaDaaaaaaaaaaGGGGaaaGGGaaaaaaaaGGGGGGGGGGaGGaaccccaaaaGGGaaaaaaaSob
+bDDDaaaaaaaacccccccccaaaaDaaaaaaaaaaaaaaaaaaaaaaaacccccccccaaaaDaaaaaaaaaaaGGGaGGaaaaaaaaaaaGaaaaaaGGaaaGGGGaaaaGGGGGGGGaaaaaSob
baaaaaaaaccccccccccccaaaaDaaaaaaaaaaaaaaaaaaaaaaccacccccccaaaaaDaaaaaGaaaaaaaGGaaaaaaaaaaaaaaaaaaaaGaaaaGGGGaGGGGGGGaaaaaaaaaSob
baaaaaaacccccccccccccccccDaaaaaaaaaaaaaaaaaaaaacacccccccccaaaaaDaaaaGGGaaaaaaGaaaaaaaaaaaGaaaaaaaaaGaaaaGGGGGccaGGGGaaaaaaaaaaob
bccaaaacccccccccccccccaaaDaaaaaaccccccacacacacccccccccccccaaaaGDaGGGGGaaaaaaaaaaaaaaaaaaGGaaaaaaaaaGaaaaGGGGacccaaaaaaaaaaaaaaob
-bccccccccccccccccccaaaaaaDacccccccccccccccccccccccccccacaaaaaGGGGGGGaaaaaaaaaaaaaaaaaaaaGaaaaaaaaaaaaaGaaaaaaccccaaaaaaaaaaaaaob
+bccccccccccccccccccaaaaaaDacccccccccccccccccccccccccccacaaaaaGGGGGGGaaaaaaaaaaaaaaaaaaaaGaaaaaqaaaaaaaGaaaaaaccccaaaaaaaaaaaaaob
bccccccccccccaaaaaaaaaaaaDaaaaaaaaaaaaaaaaacccaaaaaaaaaaaaaaaGGGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGaaaaaaaaaaccccaaaaaaaaaaGaaob
bccaaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGGGDaaaaaaaaaaaaaaaaaccaaaaaaaaaaaaaaaGGaaaaaacaacccccaaaaaaaaaGaaob
baGGaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaaaaaGaaaaaaaGGaaaaaaaaGGGaDaaaaaaaaaaaaaaaacccaaaaaaaaaZaaaaaGGaaaaaacaacacccaaaaaaaaaGaaob
-baGGaaaaaaaaaaaacaaaaaaaaDDDDDDDDDDDDDDGGGDDDDDDDGGDDDDDDDDGGDDDaaaaaaaaaaaaaaacccaacaaaaaaaaaaaaaGGaaaaaacaacaccccaccaaaaaaaaob
-baaGGaaaaaaaaaaccaaaaaaaaDaaaaaaaaaaaaaGaaaaaaaaaaGaaaaaaaGGGGaDaaaaaaaaaaaaccccccacaccccccccccaaGGacccccccaaacccccccccaaaaaaaob
+baGGaaaaaaaaaaaacaaaaaaaaDDDDDDDDDDDDDDGGGDDDDDDDGGDDDDDDDDGGDDDaqaaaaaaaaaaaaacccaacaaaaaaaaaaaaaGGaaaaaacaacaccccaccaaaaaaaaob
+baaGGaaaaaaaaaaccaaaaaaaaFaaaaaaaaaaaaaGaaaaaaaaaaGaaaaaaaGGGGaDaaaaaaaaaaaaccccccacaccccccccccaaGGacccccccaaacccccccccaaaaaaaob
bGGGGaaaaaacccccccaaaaaaaDaaaaaaaaaaaaGGaaaaaaaaaaGaaaaaaaGGaGaDaaaaaaaaaaccccccccacaccaccccaaaaaGGaacccccaaaaacccccccccaaaaaaob
bGGGGaaaaaaaacccccaaaaaaaDaaaaaaaaaaaGGaaaaeeeeeeeeeeeeeeaaaaaaDaaaaaaaaaccccccccccaaaaaaaacaaaaaaGaaaaaaaaaaaaacaccccccccaacaob
bGGGaaaaaaaaaaaaaaaaaaaaaDaaaaaaaaaaaGGaaeeeeeeeeeeeeeeeeaaaaaaaaaaaaaacaaccccaccaaaaaaaaaaaaaaaaGGaaaaaaaaaaaaaaaaccaccccaaccob
bGGGaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeeeeGaaaaaaaaaGGaaaaaaaaaaaacaacaccccccaaaaaaaaaaaaaaaaaGGaaaaaaaaaaaaaaaaaccccccccccob
-bGGDaGaaaaaaaaaaaaaGGGaaaaaaaaaaGGGGaaGGGaaeeeaaaaaaaaaaaaaaaaaaaaaaaaccccccccaaaaaaaaaaaaaaaaaaaaaDDDDDaaaaaaaaaaaaaccaacccccob
+bGGDaGaaaaaaaaaaaaaGGGaaaaaaaaaaGGGGaaGGGaaeeeaaaaaaaaaaaaaaaaaaaaaaaaccccccccaaaaaasaaaaaaaaaaaaaaDDDDDaaaaaaaaaaaaaccaacccccob
bGGDaGaaaaaaaaaaaaGGGaaaaaaaaaaGGGGGGGGaaaeeeeaaaaaaaaaaaaaaaaaaaaccaccccccaaaaaaaaaaaaaaGaGaaaaaaaDDDGDDDDDDDDDDDDDDaaaacccccob
-bGGDaGGGGGaaaaaaaGGGGaaaaaaaaGGGaGGGGaaaaaeeaaaaaaaaaaaaaaacacaaaaccccccaaaaaaaGaaaaaaaaaaaaaaaaaaaDDGGGDGaaaaaaaaaaDaaaaaaaccob
+bGGDaGGGGGaaaaaaaGGGGaaaaaaaaGGGaGGGGaaaaaeeaaaaaaaaaaaaaaacacaaaaccccccaaaaaaaGaaaaaaaaaaaaaaaaaaaDDGGGDGaaaaaaqaaaDaaaaaaaccob
bGGDGGaaaGGGaaaaaGGaGaaaaaaaaaaaaaGGGGaaaaaaaaaaccccccccccccccccccccccccaaaaaGGGaaaaGaaaGaaaaaaaaaaDDGGGGGaaaaaaaaaaDaaaaaaaaaob
-bGGDGGaaaaaaaaaaaGGaaGaaaaaaaaaaaaaaaGaaaaaaaccccccccccccccccccccccccacaaaaGGGaaaaeeeeeeaaaGaaaaaGaGDGGGGGaaaaaaaaaaDDDDDDDDzGob
+bGGDGGaaaaaaaaaaaGGaaGaaaaaaaaaaaaaaaGaaaaaaaccccccccccccccccccccccccacaaaaGGGaaaaeeeeeeaaaGaaaaaGaGDGGGGGaaaaaaaaaaDDDDDDDDDGob
bGGGGGaaaaaaaaaaaaaaaGaaaaaaacccaaaaaaaaaaaaaacacacccccccccaaaaccccaaaaaaaaGaaeeeeeeeeeeaaaGaaaaaGaGGGGGGGaaaaaaaaaGaaaaaaGGDGob
bGGGGaaaaaaaaaaaaaaaaaaaaaaacccccccaaaaaaaaaaaaccccaaccccaaaaaaaaaaaaaaaaaaaaaeeeeeeeeeeaaGGaaaGGGaDGGGGGDaaGaaaaaaGGaaaaaGGGGob
bGGDaaaaaaZaaaaaaaaaccaaaaaacccccccccaaaaaaaaaaccaccccaaaaaaaaaaaaaaaaaaaaaaaaeeeeeeeeeeGaGaaaaaGGaaGGGGGDGaaaaaaaaaaaaaaaGGGGob
bGGDaaaaaaaaaaaaaaacccaaaaaacccaaaaaaaaaaaGaaaaaccaaaaaaaaaaaaaaaaaaaaaaGaaaaGeeeeeeeeeeGGaaaaaaGaaaGGGGGDaaGaGaaaaaaaaaaaGGGGob
-bGGDaaaaaaaaaaaaacccccaaaaGaaaaaaaaaaaaaaaGaaaaaaaaaaaaGaGGaaaaaaaaaaaaGGaGeeeeeeeeeeeaaaaaaaaaaGaaGGGGGGDaaaGGGGGGaaaaaaaGGGGob
+bGGDaaaaaaaaaaaaacccccaaaaGaaaaaaaaaaaaaaaGaaaaaaaaaaaaGaGGaaaaaaMaaaaaGGaGeeeeeeeeeeeaaaaaaaaaaGaaGGGGGGDaaaGGGGGGaaaaaaaGGGGob
bGGDaaaaaaaaaaaaaccaaaaaaGGGGaaaaaaZaaaaaGGaGaaaaaaaaaaGGGaaaaaaaaaaaaaeeeeeeeeeeaeeGGGaaaaaaaaaGaaGGGGGGDaaaGGaGGGGaaaaaaGGGGob
-bGGDaaaaaaaaaaaaaccaaaaaaGGGGaaaaaaaaaaaaGGGGaaaaaaaaaGGaaaaaaaaaaaaaaGeeeeeeeaaaaaaaaGGGaaaaaaaaaaaGGGGDDaaaaGaaaGGaaaaaGGGGGob
+bGGDaaaasaaaaaaaaccaaaaaaGGGGaaaaaaaaaaaaGGGGaaaaaaaaaGGaaaaaaaaaaaaaaGeeeeeeeaaaaaaaaGGGaaaaaaaaaaaGGGGDDaaaaGaaaGGaaaaaGGGGGob
bGGDaaaaaaaaaaaaaaaaaaaaaaGGGGaaaaaaaaaaaGGGGaaaaaaaaGGaaaaaaaaaaaaaaaGGGGGGaaaaaaaaaaaaaaGaaaaaaaaaGGGGGDaaaaaaaaGaaaaaaGGDGGob
bGGDaaaaaaaaaaaaaaaaaaaaaaGGGGGaaaGGaaaaaGGGGaaGaaaaaGaaaaaaGGaaaGGaaaGGaGGGaaaaaaaaaaaaaaaaaaaaaaaaDDGGGGaaaaaaaaaaGaaGGGGGGGob
bGGGaaaaaaaaaaaaaaaaZaaaaaaGGaGaaaGGGaGGGGGGGaGGaaaaaGaaaaaGGGaaGGGGGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDGGDGGaaaaaaaaaaGaaGGGGDDGob
bGGGaaGGaaaaaaaaaaaaaaaaaaaaGGGaaaGaGGGGGGGGGGGaaaaaaaaaaaaGeeeeeeeGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGaGaaGGDGob
-bGGGaaaGGaGGaGaaaaaaaaaaaaaaaaGGaaGaaaGGaaaGaaaaaaaaaaaaaaaGeeeeeeeGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGGaaaGDDGob
-bGGGaaaaGGaGGGaaaaaaaaaaaaaaaaaaaaGaaaGeeeeGaaaaaaaaaaaaaaGGeeeeeeeGGaaaaaaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGaaGGDDGob
-bGGGaaaaaGGGGaaaaaaaaaaaaaaaaaaaaGGaaaGeeeeaaaaaaaaaaaaaaaGeeeeeeeeGGGaaaaaGaaaaogggoaaooaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGaDDGob
+bGGGaaaGGaGGaGaaaaaaaaaaaaaaaaGGaaGaaaGGaaaGaaaaaaaaaaaaaaaGeeeeeeeGaaaaaaaaaaaaaaaaaaaaaaaaMaaaaaaaaaaaaaaaaaaaaaaaaGGaaaGDDGob
+bGGGaaaaGGaGGGaaaaaaaaaaMaaaaaaaaaGaaaGeeeeGaaaaaaaaaaaaaaGGeeeeeeeGGaaaaaaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGaaGGDDGob
+bGGGaaaaaGGGGaaaaaaaaaaaaaaaaaaaaGGaaaGeeeeaaaaaaaaaaaaaaaGeeeeeeeeGGGaaaaaGaaaaogggoaaooaaaaaaaaaaaaaaaaaaaaaqaaaaaaaaaaGaDDGob
bGGDaaaaaGGaGGaaaaaaaaaaaaaaaaGaGGaaaaGGeeeaaaaaaccaaaaaaaGeeeeeeeeGGaaaaaaGaaaooggggggggoooaaaaaaaaaaaaaaaaaaaaaaaaaaaaaGGDDGob
-bGGGaaaGGaGGGGaaaaaaaaaaaaaaGGGaaaaaaaGGeeeGaaaaaccaaaaaaGGeeeeeeeeeGaaaaaaGaaaooooggggggggggggooaaaaaaaaaaaaaaaaaaaaaaaaGGDDGob
-bGDDaaaaGGGaGGaaaaaaaaaaaaaaGGGGaaaaaaGGGeeaaaaacccaaaaaaGGeeeeeeeeeGaaaaaaGGaaaaaoooogggggggggooooaaaaaaaaaaaaaaaaaahhaaGGDDGob
+bGGGaaaGGaGGGGaaaaaaaaaaaaaaGGGaaaaqaaGGeeeGaaaaaccaaOaaaGGeeeeeeeeeGaaaaaaGaaaooooggggggggggggooaaaaaaaaaaaaaaaaaaaaaaaaGGDDGob
+bGDDaaaaGGGaGGaaaaaaaaaaaaaaGGGGaaaaaaGGGeeaaaaacccaaaaaaGGeeeeeeeeeGaaaMaaGGaaaaaoooogggggggggooooaaaaaaaaaaaaaaaaaahhaaGGDDGob
bGDDaaaaaaaaaaaaaaaaaaaaaaaaGGGGGaaaaaaGGeeGaacccccaaaaaGGGeeeeeeeeeGaGaaaaaGaaaaaaaoogggggggggooooaaaaDDaaaaaaaaaaaahhaaGGGGGob
bGDDaaaaaaaaaaaaaaaaaaaaaaaaGeeeeaaaaaaGGeeGaacccccaaaaaaGGeeeeeeeeeGGGaaaaaGaaaaaaaaogggggggggoooooooaDDDDDDDaaaaaaahhaaaaGGGob
-bGDDaaaaaaaaaaaaaaaaaaaaaaaaGeeeeGGaaaaGGGGGaaccccccaaaaaaaGGGGGGGGaGGGaaaaaGaaaaaaaaogggggggggoooooooooDDDDDDaaaaaahhhaaaaDDGob
+bGDDaaaOaaaaaaaaaaaaaaaaaaaaGeeeeGGaaaaGGGGGaaccccccaaaaaaaGGGGGGGGaGGGaaaaaGaaaaaaaaogggggggggoooooooooDDDDDDaaaaaahhhaaaaDDGob
bGDDaaaaaaGaaaaaaaaaaZZaaaaaGGeeeeeGaaaGGGGGaaccccccaaaaaaaaaaaaaaaGGGGGGGaGGaaaaDDDDDgggggggggooooooowwwDDDDDDaaaaahhhaaaaDDGob
-bGDDaaaaaaaGGaaaaaaaaaaaaaaaGGeeeeeGaaaaGGGGaaccccccaaaaaaaaaaaaaaaaGGaaGGGaaaaaaDDDDDoogggggggodddwwwwwwoooDDDaaoaahhhaaaaDDGob
+bGDDaaaaaaaGGaaaaaaaaaaaaaaaGGeeeeeGaaaaGGGGaaccccccaaaaaaaaaqaaaaaaGGaaGGGaaaaaaDDDDDoogggggggodddwwwwwwoooDDDaaoaahhhaaaaDDGob
bGDDGGGGaaaaaGaaaaaaaaaaaaaaGGGeeeeGGGaaaaaaaaacccccaaaaaaaaaaaaaaaaGaaaGaaaaaaaowwwwwdogggggggoddwwwwwddooooooooooohhhoooooooob
bGDDaGGGGaaaaaGGGaaaaaaaaaaaGGGeeeeGGGaaaaaaaaccccccaaaaaaaaaaGeeGGGGGaaGGaaaaaaowwwwdddlllllllodwwwwddooooooooooooohhhoooooooob
bGDDaaaaGGGGGaaaGGaaaaaaaaaaaaGeeeeGGGGGaaaaaaccccccaaaaaaaGGGaeeGGaaaaaaaaaaaaadwwwwllllllllllllwwwlllllllllllllddwiiwddddddddb
@@ -141,10 +146,10 @@ bGGGGaaaaaaaaaaaaaGGGGGGaaaaaaaaaaaGaaaaaaGGGaacccccaaaGeeeeeeeeeGaaaaaaaaaGaaag
bGGGGaaaaaaaaaaaaaaaaaGGGGaaaaaaaaaGGaaaaaaGGaacccccaaaGeeeeeeGGGGaaaaGaaaaaaaoglwrwrwwwwwwdddddddiwdwwwfdddddddlldlliillllllldb
bGDGGaaaaaaaaaaaaaaaaaaaGGGaaaaaaaaaGaaaaaaaaaaccaaaaaaGeeeeeeGaGaaaaGGaaaaaaaowwwrwrrwwrrrrrwwwdwiwwwwwwwwwdddddlllliillllllldb
bGDGGaaaaaaaaaaaaaaaaaaaaGGGaaaaaaaaGaaaaaaaaaaaaaaaaaaGGGeeeeGGaaaaGGaaaaaaaaodwwrrrrrrrrrrrrwwwwiwwddwwwwiiiiddllllllllllldddb
-bGDDGaaaaaaaaaaaaaaaaaaaaaGaaaaaaaaaaaaaaaaaaaaaaaaaaaaGGGGGGGaaaaaGGaaaaaaaaoodwwwwrrrrrrrrrrwwwdiwwdddwwwiiiiddllllllllllldddb
+bGDDGaaaaaaaaaaaaaaaaaaaaaGaaaMaaaaaaaaaaaaaaaaMaaaaaaaGGGGGGGaaaaaGGaaaaaaaaoodwwwwrrrrrrrrrrwwwdiwwdddwwwiiiiddllllllllllldddb
bGDGGaaGGaaaaaaGGGGGaaaaaaGaaaaaaaaaaaaaaaaaaaaaaaaaaGGaaaaGGaaaaaGGaaaaaaaaDooddddwrrrrrrrrrriiiiiiwddwwwwwdddddllllllllllldddb
bGDGGaaGGaaaaaGGGGGGGGGGaaGaaaaaaaaaaaaaaaaGGaaaaaaaaaGGGGGaaaaaGGaaaaaaaaDDDodwwdddrrrrrrrrrriiiiiiwddfwwddddddddlllllllddddddb
-bGDDGGGGaaaaaaGGGGGGGGGGaaGaaaaaaaaaaaaaaGGGaaaaaaaaaaaaaaaaaaGGGaaaaaaaaaDDwwwwwwddwrwwwwwrrriiiiiiwwdwwwwdddddldlllllllddddddb
+bGDDGGGGaaaaaaGGGGGGGGGGaaGaaaaaaaaaaaaaaGGGaaaaaaaaaaaaaaaaaaGGGaaaaaaqaaDDwwwwwwddwrwwwwwrrriiiiiiwwdwwwwdddddldlllllllddddddb
bGxDGGGGaaaaaaaaaaaaaaaaaaGaaaaaaaaaaaGGaGaGaaaaaGGaaaaaaaaaaaaaaaaaaaaaaaaowwwwwwwdllllldwrrriiiiiirwwdwwwwiiddlllllllllddddddb
bGDDGGGaaaaaaaaaaaaaaaaaaaaGGaaaaaaaaaaGGGaGGaaaaaGGaaaaaaaaaaaaaaaaaaaaaooodwwwwwwdlllllwwrrriiiiiirwwdwwwiiiddddlllldddddddddb
bGDGGGGaaaaaaaaaaaaaaaaaaaaaaGaaGGGaGGGGGGGaGaaaaaGGGGaaGaaaaaaaaaaaaaaaaoddwwwwdwwwlllllwwrrrrwddirwwwdwwiiiidddddddldddddddddb
diff --git a/_maps/map_files/roguetown2/roguetown2.dmm b/_maps/map_files/roguetown2/roguetown2.dmm
index 8f1d7a9327..a432deef56 100644
--- a/_maps/map_files/roguetown2/roguetown2.dmm
+++ b/_maps/map_files/roguetown2/roguetown2.dmm
@@ -250,6 +250,7 @@
"eQ" = (/obj/item/roguestatue/gold,/turf/open/floor/rogue/blocks,/area/rogue/outdoors/town)
"eR" = (/turf/open/floor/rogue/grass,/area/rogue/outdoors/town)
"eS" = (/turf/open/floor/rogue/cobble,/area/rogue/outdoors/town)
+"eT" = (/obj/structure/fluff/railing/border{icon_state = "border"; dir = 6},/turf/closed/wall/mineral/rogue/stone,/area/rogue/outdoors/town)
"eU" = (/obj/machinery/light/rogue/oven/south,/turf/open/floor/rogue/woodturned,/area/rogue/indoors/town/manor)
"eV" = (/obj/machinery/light/rogue/hearth,/turf/open/floor/rogue/woodturned,/area/rogue/indoors/town/manor)
"eW" = (/turf/open/floor/rogue/ruinedwood{icon_state = "weird1"},/area/rogue/indoors/town/manor)
@@ -295,6 +296,7 @@
"fP" = (/obj/structure/fluff/statue/gargoyle/moss,/turf/open/floor/rogue/grass,/area/rogue/indoors/town/manor)
"fQ" = (/obj/structure/mineral_door/wood/fancywood{lockid = "lord"; name = "Lord's Apartment"},/turf/open/floor/rogue/carpet/lord/left{dir = 1},/area/rogue/indoors/town/manor)
"fS" = (/obj/structure/chair/wood,/turf/open/floor/rogue/woodturned,/area/rogue/indoors/town/manor)
+"fT" = (/obj/structure/fluff/railing/border,/turf/closed/wall/mineral/rogue/stone,/area/rogue/outdoors/town)
"fU" = (/obj/item/book/rogue/law,/turf/open/floor/rogue/wood,/area/rogue/indoors/town/manor)
"fV" = (/turf/open/floor/rogue/tile/masonic{dir = 1},/area/rogue/indoors/town/manor)
"fW" = (/obj/effect/landmark/start/sheriff{dir = 1},/turf/open/floor/rogue/carpet/lord/center,/area/rogue/indoors/town/manor)
@@ -322,6 +324,7 @@
"gt" = (/obj/effect/landmark/start/squire{icon_state = "arrow"; dir = 4},/turf/open/floor/rogue/wood,/area/rogue/indoors/town/manor)
"gu" = (/obj/structure/fluff/walldeco/customflag{pixel_y = 32},/obj/effect/landmark/start/manorguardsman{dir = 4},/turf/open/floor/rogue/tile/masonic{dir = 4},/area/rogue/indoors/town/manor)
"gv" = (/obj/structure/fluff/walldeco/customflag{pixel_y = 32},/obj/effect/landmark/start/dungeoneer{dir = 8},/turf/open/floor/rogue/tile/masonic{dir = 8},/area/rogue/indoors/town/manor)
+"gw" = (/obj/structure/fluff/railing/border{icon_state = "border"; dir = 8},/turf/closed/wall/mineral/rogue/wooddark,/area/rogue/outdoors/beach)
"gx" = (/turf/closed/wall/mineral/rogue/stone/moss,/area/rogue/outdoors/rtfield)
"gy" = (/obj/structure/flora/roguetree/evil,/turf/open/floor/rogue/dirt/road,/area/rogue/outdoors/rtfield)
"gz" = (/turf/open/transparent/openspace,/area/rogue/outdoors/rtfield)
@@ -409,6 +412,7 @@
"ij" = (/obj/structure/table/wood{icon_state = "largetable"; dir = 8},/obj/item/candle/yellow/lit,/obj/structure/fluff/walldeco/rpainting/crown{pixel_x = 32},/turf/open/floor/rogue/woodturned,/area/rogue/indoors/town/manor)
"ik" = (/turf/closed/wall/mineral/rogue/wooddark/window,/area/rogue/indoors/town/manor)
"il" = (/obj/structure/mineral_door/wood/fancywood{name = "Lord's Office"; lockid = "lord"},/turf/open/floor/rogue/woodturned,/area/rogue/indoors/town/manor)
+"in" = (/turf/open/floor/carpet/purple,/area/rogue/indoors/town)
"iq" = (/turf/closed/wall/mineral/rogue/wooddark/window,/area/rogue/outdoors/town)
"ir" = (/obj/structure/table/wood{icon_state = "largetable"; dir = 4},/obj/item/candle/yellow/lit,/turf/open/floor/rogue/blocks/stonered,/area/rogue/indoors/town/manor)
"is" = (/obj/structure/table/wood{icon_state = "largetable"; dir = 4},/obj/item/reagent_containers/glass/cup,/turf/open/floor/rogue/blocks/stonered,/area/rogue/indoors/town/manor)
@@ -467,6 +471,7 @@
"jx" = (/turf/open/floor/rogue/wood,/area/rogue/indoors/town/magician)
"jy" = (/obj/machinery/light/rogue/firebowl/standing/blue,/turf/open/floor/rogue/wood,/area/rogue/indoors/town/magician)
"jz" = (/turf/open/floor/rogue/blocks,/area/rogue/indoors/town/manor)
+"jA" = (/turf/open/floor/rogue/wood,/area/rogue/outdoors/beach)
"jB" = (/obj/structure/bookcase,/obj/item/book/random,/turf/open/floor/rogue/carpet,/area/rogue/indoors/town/manor)
"jC" = (/obj/structure/table/wood,/obj/item/paper/scroll,/obj/item/paper/scroll,/obj/item/paper/scroll,/obj/item/natural/feather,/obj/machinery/light/rogue/torchholder{pixel_y = 26},/turf/open/floor/rogue/blocks,/area/rogue/indoors/town/manor)
"jD" = (/obj/structure/roguemachine/scomm,/turf/open/floor/rogue/blocks,/area/rogue/indoors/town/manor)
@@ -702,7 +707,7 @@
"nZ" = (/turf/closed/wall/mineral/rogue/wooddark,/area/rogue/indoors)
"oa" = (/turf/closed/wall/mineral/rogue/wooddark/end{icon_state = "endwooddark"; dir = 8},/area/rogue/indoors)
"ob" = (/turf/closed/wall/mineral/rogue/wooddark/end{icon_state = "endwooddark"; dir = 4},/area/rogue/indoors)
-"oc" = (/obj/structure/mineral_door/wood/deadbolt{dir = 1; icon_state = "wooddir"; locked = 0},/turf/open/floor/rogue/dirt/road,/area/rogue/indoors)
+"oc" = (/obj/structure/mineral_door/wood/deadbolt{dir = 1; icon_state = "wooddir"; locked = 0; lockid = "farm"},/turf/open/floor/rogue/dirt/road,/area/rogue/indoors)
"od" = (/turf/closed/wall/mineral/rogue/wooddark/horizontal,/area/rogue/indoors)
"oe" = (/obj/effect/landmark/start/villager,/turf/open/floor/rogue/cobblerock,/area/rogue/outdoors/rtfield)
"of" = (/obj/structure/mineral_door/wood/donjon{dir = 1; icon_state = "donjondir"; locked = 1; lockid = "nightmaiden"},/turf/open/floor/rogue/herringbone,/area/rogue/indoors/town/bath)
@@ -771,7 +776,7 @@
"pq" = (/obj/structure/fluff/statue/gargoyle/moss/candles,/turf/open/floor/rogue/cobble,/area/rogue/outdoors/town)
"pr" = (/obj/structure/fluff/railing/stonehedge,/turf/open/floor/rogue/dirt,/area/rogue/outdoors/rtfield)
"ps" = (/obj/structure/roguewindow,/turf/open/floor/rogue/dirt/road,/area/rogue/indoors)
-"pt" = (/obj/structure/mineral_door/wood/deadbolt{dir = 1; icon_state = "wooddir"},/turf/open/floor/rogue/dirt/road,/area/rogue/indoors)
+"pt" = (/obj/structure/mineral_door/wood/deadbolt{dir = 1; icon_state = "wooddir"; lockid = "farm"},/turf/open/floor/rogue/dirt/road,/area/rogue/indoors)
"pu" = (/obj/machinery/light/rogue/wallfire/candle/blue/l,/obj/structure/fluff/railing/border,/turf/open/floor/rogue/blocks/stonered/tiny,/area/rogue/indoors/town/bath)
"pv" = (/obj/structure/table/wood{icon_state = "longtable"},/turf/open/floor/rogue/blocks/stonered/tiny,/area/rogue/indoors/town/bath)
"pw" = (/obj/structure/table/wood{icon_state = "longtable"; dir = 1},/obj/item/candle/yellow,/turf/open/floor/rogue/blocks/stonered/tiny,/area/rogue/indoors/town/bath)
@@ -808,7 +813,7 @@
"qb" = (/obj/structure/ladder,/turf/open/floor/rogue/ruinedwood,/area/rogue/indoors/town)
"qd" = (/turf/open/floor/rogue/blocks/bluestone,/area/rogue/indoors/town)
"qe" = (/obj/structure/closet/crate/chest,/turf/open/floor/rogue/ruinedwood,/area/rogue/indoors/town)
-"qf" = (/obj/structure/lever/wall{pixel_x = 32; redstone_id = "warehouse_shutter"},/turf/open/floor/rogue/ruinedwood,/area/rogue/indoors/town)
+"qf" = (/obj/structure/lever/wall{pixel_x = 32; redstone_id = "warehouse_shutter"},/obj/machinery/light/rogue/torchholder{icon_state = "torchwall1"; dir = 8},/turf/open/floor/rogue/ruinedwood,/area/rogue/indoors/town)
"qg" = (/obj/structure/flora/roguegrass/bush,/turf/open/floor/rogue/grass,/area/rogue/outdoors/town)
"qh" = (/obj/structure/flora/roguegrass/bush,/turf/open/floor/rogue/dirt,/area/rogue/outdoors/town)
"qi" = (/turf/open/floor/rogue/dirt,/area/rogue/outdoors/town)
@@ -889,7 +894,7 @@
"rF" = (/obj/structure/table/wood,/obj/item/storage/pill_bottle/dice,/turf/open/floor/rogue/tile{icon_state = "chess"},/area/rogue/outdoors/town)
"rG" = (/obj/structure/roguemachine/money/r,/turf/open/floor/rogue/tile{icon_state = "chess"},/area/rogue/outdoors/town)
"rH" = (/turf/closed/wall/mineral/rogue/wood,/area/rogue/under/town/basement)
-"rI" = (/obj/structure/closet/crate/chest,/obj/item/reagent_containers/food/snacks/rogue/crackerscooked,/turf/open/floor/rogue/ruinedwood,/area/rogue/indoors/town)
+"rI" = (/obj/structure/closet/crate/chest,/obj/item/reagent_containers/food/snacks/rogue/crackerscooked,/obj/machinery/light/rogue/torchholder{icon_state = "torchwall1"; dir = 4},/turf/open/floor/rogue/ruinedwood,/area/rogue/indoors/town)
"rJ" = (/obj/structure/fluff/railing/border{icon_state = "border"; dir = 5},/turf/open/floor/rogue/ruinedwood,/area/rogue/indoors/town)
"rK" = (/obj/structure/fluff/railing/border{icon_state = "border"; dir = 1},/turf/open/floor/rogue/ruinedwood,/area/rogue/indoors/town)
"rL" = (/obj/structure/fluff/railing/border{icon_state = "border"; dir = 9},/turf/open/floor/rogue/ruinedwood,/area/rogue/indoors/town)
@@ -1046,6 +1051,7 @@
"uI" = (/obj/machinery/light/rogue/firebowl,/turf/open/floor/rogue/blocks/stonered/tiny,/area/rogue/indoors/town/dwarfin)
"uJ" = (/obj/structure/closet/crate/chest,/turf/open/floor/rogue/blocks/stonered/tiny,/area/rogue/indoors/town/dwarfin)
"uK" = (/obj/structure/closet/crate/roguecloset,/obj/item/clothing/suit/roguetown/shirt/shortshirt/random,/obj/item/clothing/suit/roguetown/shirt/shortshirt/random,/obj/item/clothing/under/roguetown/tights/random,/obj/item/clothing/under/roguetown/tights/random,/turf/open/floor/rogue/blocks/stonered/tiny,/area/rogue/indoors/town/dwarfin)
+"uL" = (/obj/machinery/light/rogue/torchholder{icon_state = "torchwall1"; dir = 4},/turf/open/floor/rogue/woodturned,/area/rogue/outdoors/beach)
"uM" = (/obj/machinery/light/rogue/hearth,/turf/open/floor/rogue/ruinedwood{icon_state = "vertw"; dir = 1},/area/rogue/indoors/town)
"uN" = (/obj/structure/table/wood{icon_state = "tablewood1"; dir = 1},/turf/open/floor/rogue/ruinedwood{icon_state = "vertw"; dir = 1},/area/rogue/indoors/town)
"uO" = (/obj/structure/chair/wood/rogue{icon_state = "chair2"; dir = 8},/turf/open/floor/rogue/ruinedwood{icon_state = "vertw"; dir = 1},/area/rogue/indoors/town)
@@ -1069,7 +1075,7 @@
"vh" = (/obj/structure/fluff/wallclock/r,/turf/open/floor/rogue/cobble,/area/rogue/indoors)
"vi" = (/obj/structure/roguewindow,/obj/structure/roguewindow/openclose{icon_state = "woodwindowdir"; dir = 8},/turf/open/floor/rogue/woodturned,/area/rogue/indoors/town/manor)
"vj" = (/obj/structure/table/wood{icon_state = "map6"},/turf/open/floor/rogue/carpet/lord/right,/area/rogue/indoors/town/manor)
-"vk" = (/obj/structure/stairs{icon_state = "stairs"; dir = 1},/turf/closed/wall/mineral/rogue/wooddark,/area/rogue/indoors/town/dwarfin)
+"vk" = (/obj/structure/stairs{icon_state = "stairs"; dir = 1},/turf/open/floor/rogue/blocks/stonered/tiny,/area/rogue/indoors/town/dwarfin)
"vl" = (/turf/open/floor/rogue/ruinedwood{icon_state = "weird1"},/area/rogue/indoors/town/shop)
"vm" = (/obj/machinery/light/rogue/torchholder{pixel_y = 26},/turf/open/floor/rogue/ruinedwood{icon_state = "weird1"},/area/rogue/indoors/town/shop)
"vn" = (/obj/structure/stairs{icon_state = "stairs"; dir = 4},/turf/open/floor/rogue/ruinedwood{icon_state = "weird1"},/area/rogue/indoors/town/shop)
@@ -1079,6 +1085,7 @@
"vr" = (/obj/structure/stairs{icon_state = "stairs"; dir = 4},/turf/open/floor/rogue/blocks{icon_state = "paving"},/area/rogue/indoors)
"vs" = (/obj/machinery/light/rogue/torchholder{icon_state = "torchwall1"; dir = 8},/turf/open/floor/rogue/blocks{icon_state = "paving"},/area/rogue/indoors)
"vt" = (/obj/structure/stairs{icon_state = "stairs"; dir = 1},/turf/open/floor/rogue/ruinedwood,/area/rogue/indoors)
+"vu" = (/obj/structure/chair/wood{dir = 8},/turf/open/floor/rogue/wood,/area/rogue/outdoors/town)
"vv" = (/turf/open/floor/rogue/woodturned,/area/rogue/indoors/town)
"vw" = (/obj/structure/closet/crate/roguecloset,/turf/open/floor/rogue/woodturned,/area/rogue/indoors/town)
"vx" = (/obj/machinery/light/rogue/torchholder/c,/turf/open/floor/rogue/woodturned,/area/rogue/indoors/town)
@@ -1183,8 +1190,8 @@
"xs" = (/obj/structure/fluff/traveltile{aportalgoesto = "bogrtin"; aportalid = "bogrtout"},/turf/open/floor/rogue/cobblerock,/area/rogue/outdoors/rtfield)
"xt" = (/obj/machinery/light/rogue/wallfire/candle,/obj/structure/fluff/clock,/turf/open/floor/rogue/woodturned,/area/rogue/indoors/town/manor)
"xu" = (/obj/effect/landmark/start/mercenarylate{icon_state = "arrow"; dir = 8},/turf/open/floor/rogue/dirt/road,/area/rogue/outdoors/rtfield)
-"xv" = (/obj/effect/landmark/latejoin,/turf/open/floor/rogue/dirt/road,/area/rogue/outdoors/rtfield)
-"xw" = (/obj/effect/landmark/latejoin,/turf/open/floor/rogue/cobblerock,/area/rogue/outdoors/rtfield)
+"xv" = (/obj/effect/landmark/latejoin,/turf/open/floor/rogue/ruinedwood{icon_state = "wooden_floort"},/area/rogue/outdoors/beach)
+"xw" = (/obj/effect/landmark/latejoin,/turf/open/floor/rogue/ruinedwood{icon_state = "vertw"},/area/rogue/outdoors/beach)
"xx" = (/obj/effect/landmark/mapGenerator/rogue/roguetownfield{endTurfX = 128; endTurfY = 128},/turf/closed/mineral/rogue/bedrock,/area/rogue/outdoors/rtfield)
"xy" = (/turf/closed/mineral/rogue/bedrock,/area/rogue/outdoors/mountains)
"xz" = (/turf/closed/mineral/rogue/bedrock,/area/rogue/outdoors/town/roofs)
@@ -1237,6 +1244,7 @@
"yE" = (/obj/structure/fluff/railing/border{icon_state = "border"; dir = 8},/obj/machinery/light/rogue/firebowl/standing,/turf/open/floor/rogue/cobble,/area/rogue/outdoors/rtfield)
"yG" = (/obj/structure/fluff/statue,/turf/open/floor/rogue/wood,/area/rogue/indoors/town/manor)
"yH" = (/obj/structure/roguewindow/openclose{icon_state = "woodwindowdir"; dir = 1},/turf/open/floor/rogue/woodturned,/area/rogue/indoors/town/manor)
+"yI" = (/obj/effect/landmark/latejoin,/turf/open/floor/rogue/ruinedwood{icon_state = "wooden_floor2"; dir = 1},/area/rogue/outdoors/beach)
"yJ" = (/obj/structure/fermenting_barrel/random/water,/obj/item/storage/box/matches,/turf/open/floor/rogue/cobble,/area/rogue/under/town/basement)
"yM" = (/obj/structure/fluff/railing/border{icon_state = "border"; dir = 8},/turf/open/transparent/openspace,/area/rogue/outdoors/town)
"yO" = (/obj/structure/closet/crate/chest,/obj/item/clothing/neck/roguetown/gorget,/obj/item/clothing/shoes/roguetown/boots,/turf/open/floor/rogue/woodturned,/area/rogue/indoors/town/manor)
@@ -1248,6 +1256,7 @@
"yW" = (/obj/structure/bed/rogue,/obj/effect/landmark/start/mason,/turf/open/floor/rogue/blocks/stonered,/area/rogue/indoors/town/dwarfin)
"yY" = (/obj/structure/table/wood{icon_state = "map3"},/obj/item/natural/feather,/turf/open/floor/rogue/carpet/lord/right,/area/rogue/indoors/town/manor)
"yZ" = (/obj/effect/landmark/start/churchling,/turf/open/floor/rogue/churchrough,/area/rogue/indoors/town/church/chapel)
+"zb" = (/obj/structure/fluff/railing/border{icon_state = "border"; dir = 1},/obj/structure/fluff/railing/border{icon_state = "border"; dir = 1},/turf/closed/wall/mineral/rogue/craftstone,/area/rogue/outdoors/beach)
"zd" = (/obj/structure/fluff/railing/wood,/turf/open/floor/rogue/grass,/area/rogue/outdoors/rtfield)
"ze" = (/obj/structure/fluff/railing/wood,/turf/closed/wall/mineral/rogue/stone/moss,/area/rogue/outdoors/rtfield)
"zf" = (/obj/machinery/light/rogue/firebowl/standing/blue,/turf/open/floor/rogue/concrete,/area/rogue/indoors/town/shop)
@@ -1298,9 +1307,9 @@
"Ab" = (/obj/structure/fluff/walldeco/customflag,/turf/closed/wall/mineral/rogue/wood,/area/rogue/indoors/town/manor)
"Ac" = (/obj/structure/chair/wood/rogue{icon_state = "chair2"; dir = 1},/turf/open/floor/rogue/ruinedwood{icon_state = "horzw"},/area/rogue/indoors/town/church)
"Ad" = (/obj/structure/closet/crate/chest{lockid = "priest"},/obj/item/clothing/cloak/stole/red,/obj/item/clothing/cloak/chasuble,/turf/open/floor/carpet/royalblack,/area/rogue/outdoors/town)
-"Ae" = (/obj/structure/fluff/walldeco/church/line{icon_state = "churchslate"; dir = 4},/obj/effect/landmark/start/monk,/turf/open/floor/rogue/church,/area/rogue/indoors/town/church/chapel)
+"Ae" = (/obj/structure/fluff/walldeco/church/line{icon_state = "churchslate"; dir = 4},/obj/effect/landmark/start/monk,/obj/machinery/light/rogue/torchholder/r{dir = 4},/turf/open/floor/rogue/church,/area/rogue/indoors/town/church/chapel)
"Af" = (/turf/open/floor/rogue/churchrough,/area/rogue/indoors/town/church/chapel)
-"Ag" = (/obj/structure/fluff/walldeco/church/line{icon_state = "churchslate"; dir = 8},/obj/effect/landmark/start/churchling,/turf/open/floor/rogue/church,/area/rogue/indoors/town/church/chapel)
+"Ag" = (/obj/structure/fluff/walldeco/church/line{icon_state = "churchslate"; dir = 8},/obj/effect/landmark/start/churchling,/obj/machinery/light/rogue/torchholder/r,/turf/open/floor/rogue/church,/area/rogue/indoors/town/church/chapel)
"Ah" = (/obj/structure/mineral_door/wood{name = "Room VI"; chat_color_name = room; lockid = "roomvi"},/turf/open/floor/rogue/ruinedwood{icon_state = "weird1"},/area/rogue/indoors/town/church/chapel)
"Ai" = (/turf/closed/wall/mineral/rogue/wood,/area/rogue/indoors/town/church/chapel)
"Aj" = (/obj/machinery/light/rogue/torchholder/c,/turf/open/transparent/openspace,/area/rogue/outdoors/town/roofs)
@@ -1349,7 +1358,7 @@
"Ba" = (/obj/structure/rack/rogue,/turf/open/floor/rogue/ruinedwood{icon_state = "horzw"},/area/rogue/indoors/town/garrison)
"Bb" = (/obj/structure/fluff/walldeco/painting/seraphina{pixel_y = 32},/obj/effect/landmark/start/templar,/turf/open/floor/rogue/church,/area/rogue/indoors/town/church/chapel)
"Bc" = (/obj/machinery/light/rogue/torchholder/c,/turf/open/floor/rogue/church,/area/rogue/indoors/town/church/chapel)
-"Bd" = (/obj/machinery/light/rogue/torchholder/r,/turf/open/floor/rogue/church,/area/rogue/indoors/town/church/chapel)
+"Bd" = (/turf/open/water/cleanshallow,/area/rogue/outdoors/beach)
"Be" = (/turf/closed/wall/mineral/rogue/wooddark,/area/rogue/indoors/town/tavern)
"Bf" = (/turf/closed/wall/mineral/rogue/decowood,/area/rogue/indoors/town/tavern)
"Bg" = (/obj/structure/roguewindow/openclose,/turf/open/floor/rogue/woodturned,/area/rogue/indoors/town/tavern)
@@ -1364,7 +1373,7 @@
"Bp" = (/turf/open/transparent/openspace,/area/rogue/indoors/town/church/chapel)
"Bq" = (/obj/structure/chair/bench/church{icon_state = "church_benchleft"; dir = 1},/turf/open/floor/rogue/church,/area/rogue/indoors/town/church/chapel)
"Br" = (/obj/structure/chair/bench/church/mid{icon_state = "church_benchmid"; dir = 1},/turf/open/floor/rogue/church,/area/rogue/indoors/town/church/chapel)
-"Bs" = (/obj/structure/chair/bench/church/r,/turf/open/floor/rogue/church,/area/rogue/indoors/town/church/chapel)
+"Bs" = (/obj/structure/chair/bench/church/r{dir = 1},/turf/open/floor/rogue/church,/area/rogue/indoors/town/church/chapel)
"Bt" = (/obj/structure/fermenting_barrel/random/water,/turf/open/floor/rogue/tile{icon_state = "tile"},/area/rogue/indoors/town/tavern)
"Bu" = (/obj/machinery/light/rogue/oven/south,/turf/open/floor/rogue/tile{icon_state = "tile"},/area/rogue/indoors/town/tavern)
"Bv" = (/obj/structure/table/wood{icon_state = "longtable"},/obj/item/reagent_containers/powder/flour,/obj/item/rogueweapon/huntingknife/cleaver,/turf/open/floor/rogue/tile{icon_state = "tile"},/area/rogue/indoors/town/tavern)
@@ -1386,7 +1395,7 @@
"BL" = (/obj/item/roguebin/water,/turf/open/floor/rogue/churchmarble,/area/rogue/indoors/town/church/chapel)
"BM" = (/obj/structure/chair/bench/church{icon_state = "church_benchleft"; dir = 1},/turf/open/floor/rogue/churchmarble,/area/rogue/indoors/town/church/chapel)
"BN" = (/obj/structure/chair/bench/church/mid{icon_state = "church_benchmid"; dir = 1},/turf/open/floor/rogue/churchmarble,/area/rogue/indoors/town/church/chapel)
-"BO" = (/obj/structure/chair/bench/church/r,/turf/open/floor/rogue/churchmarble,/area/rogue/indoors/town/church/chapel)
+"BO" = (/obj/structure/chair/bench/church/r{dir = 1},/turf/open/floor/rogue/churchmarble,/area/rogue/indoors/town/church/chapel)
"BP" = (/turf/open/floor/rogue/tile{icon_state = "tile"},/area/rogue/indoors/town/tavern)
"BQ" = (/obj/effect/landmark/start/cook,/turf/open/floor/rogue/tile{icon_state = "tile"},/area/rogue/indoors/town/tavern)
"BR" = (/obj/item/reagent_containers/food/snacks/smallrat,/turf/open/floor/rogue/tile{icon_state = "chess"},/area/rogue/indoors/town/tavern)
@@ -1697,8 +1706,9 @@
"HL" = (/obj/structure/mineral_door/wood/deadbolt{icon_state = "wooddir"; dir = 8},/turf/open/floor/rogue/wood,/area/rogue/indoors/town/dwarfin)
"HM" = (/obj/structure/closet/crate/chest,/obj/item/candle/yellow,/obj/item/candle/yellow,/obj/item/candle/yellow,/turf/open/floor/rogue/woodturned,/area/rogue/indoors/town/dwarfin)
"HN" = (/turf/closed/wall/mineral/rogue/pipe{icon_state = "iron_line"},/area/rogue/indoors/town/dwarfin)
+"HO" = (/turf/open/floor/rogue/ruinedwood{icon_state = "vertw"},/area/rogue/outdoors/beach)
"HP" = (/obj/structure/bed/rogue,/turf/open/floor/rogue/ruinedwood{icon_state = "weird1"},/area/rogue/indoors/town/manor)
-"HQ" = (/obj/structure/rack/rogue,/obj/item/roguekey/roomi{name = "fancy room I key"; lockid = "fancyroomi"; pixel_x = 10},/obj/item/roguekey/roomi{name = "fancy room I key"; lockid = "fancyroomi"},/obj/item/roguekey/roomi{name = "fancy room II key"; lockid = "fancyroomii"; pixel_x = -10},/turf/open/floor/rogue/blocks,/area/rogue/under/town/basement)
+"HQ" = (/obj/structure/rack/rogue,/obj/item/roguekey/roomi{name = "fancy room I key"; lockid = "fancyroomi"; pixel_x = 10},/obj/item/roguekey/roomi{name = "fancy room II key"; lockid = "fancyroomii"; pixel_x = -10},/obj/item/roguekey/roomi{name = "fancy room III key"; lockid = "fancyroomiii"},/turf/open/floor/rogue/blocks,/area/rogue/under/town/basement)
"HR" = (/obj/structure/rack/rogue,/turf/open/floor/rogue/ruinedwood{icon_state = "weird1"},/area/rogue/indoors/town)
"HS" = (/obj/structure/roguewindow/openclose{icon_state = "woodwindowdir"; dir = 8},/turf/open/floor/rogue/wood,/area/rogue/indoors/town)
"HT" = (/obj/structure/ladder,/turf/open/floor/rogue/ruinedwood{icon_state = "weird1"},/area/rogue/indoors/town/shop)
@@ -1711,7 +1721,7 @@
"Ia" = (/obj/structure/bed/rogue,/obj/effect/landmark/start/weaponsmith{icon_state = "arrow"; dir = 8},/obj/item/bedsheet/rogue/cloth,/turf/open/floor/rogue/ruinedwood{icon_state = "horzw"},/area/rogue/indoors/town/dwarfin)
"Ib" = (/obj/structure/fluff/railing/border{icon_state = "border"; dir = 6},/turf/closed/wall/mineral/rogue/wooddark/vertical,/area/rogue/indoors/town/dwarfin)
"Ic" = (/obj/structure/fluff/railing/border,/turf/open/floor/rogue/wood,/area/rogue/indoors/town/dwarfin)
-"Id" = (/obj/effect/landmark/latejoin,/obj/effect/landmark/start/adventurerlate{dir = 1},/turf/open/floor/rogue/cobblerock,/area/rogue/outdoors/rtfield)
+"Id" = (/obj/structure/fluff/railing/border{icon_state = "border"; dir = 9},/obj/effect/landmark/latejoin,/turf/open/floor/rogue/ruinedwood{icon_state = "wooden_floort"},/area/rogue/outdoors/beach)
"If" = (/obj/structure/table/wood{icon_state = "tablewood2"; dir = 10},/obj/item/natural/feather,/obj/item/candle/skull/lit,/turf/open/floor/carpet/stellar,/area/rogue/indoors/town/shop)
"Ig" = (/turf/open/floor/rogue/rooftop{icon_state = "roofg"; dir = 2},/area/rogue/outdoors/town/roofs)
"Ih" = (/obj/structure/chair/wood/rogue{icon_state = "chair2"; dir = 4},/turf/open/floor/rogue/ruinedwood{icon_state = "horzw"},/area/rogue/indoors/town/dwarfin)
@@ -1913,6 +1923,7 @@
"LV" = (/obj/structure/fluff/railing/border{icon_state = "border"; dir = 1},/turf/open/floor/rogue/woodturned,/area/rogue/indoors/town/church)
"LW" = (/obj/structure/chair/wood/rogue{icon_state = "chair2"; dir = 8},/turf/open/floor/rogue/wood,/area/rogue/outdoors/town)
"LX" = (/obj/structure/fluff/railing/wood,/turf/open/floor/rogue/ruinedwood{icon_state = "horzw"},/area/rogue/indoors/town/tavern)
+"LY" = (/obj/structure/bars,/turf/closed/mineral/rogue/bedrock,/area/rogue/outdoors/beach)
"LZ" = (/obj/item/reagent_containers/food/snacks/crow{icon_state = "crow"; dir = 8},/turf/open/floor/rogue/rooftop{icon_state = "roof"; dir = 8},/area/rogue/outdoors/town)
"Ma" = (/obj/structure/fluff/railing/border{icon_state = "border"; dir = 5},/turf/open/transparent/openspace,/area/rogue/outdoors/town)
"Mb" = (/obj/structure/fluff/railing/border{icon_state = "border"; dir = 1},/turf/open/transparent/openspace,/area/rogue/outdoors/town)
@@ -1998,11 +2009,20 @@
"ND" = (/obj/structure/stairs{icon_state = "stairs"; dir = 4},/turf/open/floor/rogue/rooftop{dir = 8},/area/rogue/outdoors/town)
"NE" = (/obj/effect/landmark/mapGenerator/rogue/mountain{endTurfX = 128; endTurfY = 128},/turf/open/transparent/openspace,/area/rogue)
"NF" = (/obj/effect/landmark/mapGenerator/sunlights{endTurfX = 128; endTurfY = 128},/turf/open/transparent/openspace,/area/rogue)
+"NG" = (/obj/structure/well,/turf/open/floor/rogue/dirt/road,/area/rogue/outdoors/rtfield)
"NH" = (/obj/structure/mineral_door/wood/fancywood{lockid = "lord"; name = "Lord's Apartment"},/turf/open/floor/rogue/woodturned,/area/rogue/indoors/town/manor)
"NI" = (/obj/machinery/light/rogue/wallfire/candle,/turf/open/floor/rogue/carpet/lord/right,/area/rogue/indoors/town/manor)
+"NJ" = (/obj/structure/fluff/railing/border{icon_state = "border"; dir = 8},/turf/open/floor/rogue/ruinedwood{icon_state = "wooden_floort"},/area/rogue/outdoors/beach)
"NK" = (/obj/structure/bed/rogue/inn/wool,/turf/open/floor/carpet/inn,/area/rogue/indoors/town/tavern)
+"NL" = (/obj/structure/fluff/railing/border{icon_state = "border"; dir = 5},/turf/closed/wall/mineral/rogue/craftstone,/area/rogue/outdoors/beach)
+"NQ" = (/obj/structure/chair/wood{dir = 8},/turf/open/floor/rogue/woodturned,/area/rogue/indoors/town/tavern)
+"NR" = (/obj/structure/fluff/railing/border{icon_state = "border"; dir = 9},/turf/open/floor/rogue/ruinedwood{icon_state = "wooden_floort"},/area/rogue/outdoors/beach)
+"NS" = (/obj/structure/fluff/railing/border{icon_state = "border"; dir = 4},/obj/effect/landmark/latejoin,/turf/open/floor/rogue/ruinedwood{icon_state = "wooden_floort"},/area/rogue/outdoors/beach)
+"NZ" = (/turf/closed/wall/mineral/rogue/craftstone,/area/rogue/under/cave)
+"Oa" = (/obj/structure/chair/wood/rogue{icon_state = "chair2"; dir = 1},/turf/open/floor/rogue/ruinedwood{icon_state = "wooden_floort"},/area/rogue/indoors/town)
"Oc" = (/obj/structure/fluff/railing/wood,/obj/structure/fluff/railing/border{icon_state = "border"; dir = 10},/turf/open/floor/rogue/blocks,/area/rogue/outdoors/town)
"Od" = (/obj/structure/fluff/statue/gargoyle,/turf/open/floor/rogue/tile{icon_state = "bfloorz"},/area/rogue/indoors/town/manor)
+"Og" = (/obj/machinery/light/rogue/wallfire/candle/blue,/turf/open/floor/rogue/ruinedwood{icon_state = "weird1"},/area/rogue/indoors/town/shop)
"Om" = (/obj/structure/fluff/railing/wood{icon_state = "woodrailing"; dir = 8; pixel_y = -1},/obj/structure/fluff/railing/wood{icon_state = "woodrailing"; dir = 8; pixel_y = -1},/turf/open/floor/rogue/blocks,/area/rogue/outdoors/town)
"Oo" = (/obj/structure/roguemachine/scomm,/turf/open/floor/rogue/carpet,/area/rogue/indoors/town/manor)
"Op" = (/obj/machinery/light/rogue/torchholder,/turf/closed/wall/mineral/rogue/craftstone,/area/rogue/indoors/town/bath)
@@ -2010,14 +2030,24 @@
"Os" = (/obj/structure/closet/crate/chest,/obj/item/paper/scroll,/obj/item/paper/scroll,/turf/open/floor/rogue/wood,/area/rogue/indoors/town/manor)
"Ot" = (/obj/structure/closet/crate/chest,/obj/item/candle/skull,/turf/open/floor/rogue/ruinedwood{icon_state = "horzw"},/area/rogue/under/town/basement)
"Ou" = (/obj/structure/fluff/railing/border{icon_state = "border"; dir = 5},/turf/open/floor/rogue/cobble,/area/rogue/outdoors/town)
+"Ov" = (/obj/machinery/light/rogue/torchholder{icon_state = "torchwall1"; dir = 4},/turf/open/floor/rogue/ruinedwood{icon_state = "wooden_floort"},/area/rogue/indoors/town)
"Ox" = (/obj/structure/chair/bench/coucha,/turf/open/floor/carpet/royalblack,/area/rogue/indoors/town/manor)
+"OA" = (/obj/machinery/light/rogue/firebowl/stump,/turf/open/floor/rogue/grass,/area/rogue/outdoors/town)
"OE" = (/obj/structure/bookcase,/obj/item/book/random,/obj/item/book/random,/obj/item/book/random,/obj/item/book/random,/obj/item/book/random,/obj/item/book/random,/turf/open/floor/rogue/carpet,/area/rogue/indoors/town/manor)
+"OJ" = (/obj/structure/fluff/railing/border{icon_state = "border"; dir = 4},/obj/structure/fluff/railing/border,/obj/structure/fluff/railing/border{icon_state = "border"; dir = 6},/turf/open/floor/rogue/ruinedwood{icon_state = "wooden_floort"},/area/rogue/outdoors/beach)
+"OM" = (/obj/effect/decal/cobbleedge{dir = 5},/turf/open/floor/plating/ashplanet/rocky,/area/rogue/outdoors/beach)
+"OP" = (/obj/structure/fluff/railing/border,/obj/structure/fluff/railing/border{icon_state = "border"; dir = 1},/turf/open/transparent/openspace,/area/rogue/indoors/town)
"OT" = (/obj/structure/rack/rogue,/obj/item/rogueweapon/shield/wood,/turf/open/floor/rogue/wood,/area/rogue/indoors/town/manor)
+"OU" = (/obj/item/reagent_containers/glass/bucket/wooden,/turf/open/floor/rogue/dirt/road,/area/rogue/outdoors/rtfield)
+"OW" = (/obj/structure/fluff/railing/wood{dir = 1; pixel_y = 7; pixel_x = 2; layer = 2.7},/turf/open/floor/rogue/woodturned,/area/rogue/outdoors/beach)
"OX" = (/obj/structure/roguemachine/atm,/turf/open/floor/rogue/blocks,/area/rogue/outdoors/town)
"OY" = (/obj/structure/mineral_door/wood{name = "Room I"; lockid = "roomi"},/turf/open/floor/rogue/wood,/area/rogue/indoors/town/tavern)
+"Pb" = (/obj/structure/mineral_door/wood,/turf/open/floor/rogue/woodturned,/area/rogue/outdoors/beach)
"Pd" = (/obj/structure/chair/wood/rogue{icon_state = "chair2"; dir = 1},/turf/open/floor/rogue/carpet/lord/center,/area/rogue/indoors/town/manor)
"Ph" = (/obj/structure/fluff/railing/wood{dir = 1; pixel_y = -1},/turf/open/floor/rogue/cobble,/area/rogue/outdoors/town)
+"Pm" = (/obj/structure/fluff/railing/border{icon_state = "border"; dir = 4},/obj/structure/fluff/railing/border{icon_state = "border"; dir = 1},/obj/structure/fluff/railing/border{icon_state = "border"; dir = 5},/turf/open/floor/rogue/ruinedwood{icon_state = "wooden_floort"},/area/rogue/outdoors/beach)
"Po" = (/obj/structure/mineral_door/wood/deadbolt,/turf/open/floor/rogue/ruinedwood{icon_state = "vertw"; dir = 1},/area/rogue/indoors/town)
+"Pp" = (/obj/machinery/light/rogue/torchholder{icon_state = "torchwall1"; dir = 4},/obj/effect/landmark/latejoin,/turf/open/floor/rogue/ruinedwood{icon_state = "wooden_floort"},/area/rogue/outdoors/beach)
"Pu" = (/obj/structure/floordoor/gatehatch/inner{redstone_id = "gatelava"},/obj/structure/kybraxor{pixel_x = -32; pixel_y = -32},/turf/open/transparent/openspace,/area/rogue/indoors/town/manor)
"Pw" = (/obj/structure/fluff/railing/border,/turf/open/floor/rogue/dirt/road,/area/rogue/outdoors/rtfield)
"Px" = (/obj/structure/fluff/millstone,/turf/open/floor/rogue/woodturned,/area/rogue/indoors/town/manor)
@@ -2025,43 +2055,64 @@
"PA" = (/obj/machinery/light/rogue/firebowl/standing,/turf/open/floor/rogue/dirt/road,/area/rogue/outdoors/rtfield)
"PB" = (/obj/structure/fluff/railing/border{icon_state = "border"; dir = 5},/turf/open/floor/rogue/dirt/road,/area/rogue/outdoors/rtfield)
"PD" = (/turf/open/floor/rogue/carpet/lord/right{dir = 1},/area/rogue/indoors/town/manor)
+"PE" = (/obj/structure/fluff/railing/border{icon_state = "border"; dir = 1},/obj/structure/fluff/railing/border{icon_state = "border"; dir = 4},/obj/structure/fluff/railing/border{icon_state = "border"; dir = 5},/turf/open/floor/rogue/ruinedwood{icon_state = "wooden_floort"},/area/rogue/outdoors/beach)
"PG" = (/obj/structure/closet/crate/chest,/obj/item/paper/scroll,/obj/item/paper/scroll,/turf/open/floor/rogue/tile{icon_state = "bfloorz"},/area/rogue/indoors/town/manor)
"PH" = (/mob/living/simple_animal/hostile/retaliate/rogue/wolf{del_on_deaggro = 0},/turf/open/floor/rogue/cobble,/area/rogue/under/town/basement)
"PI" = (/obj/structure/mineral_door/wood/deadbolt,/turf/open/floor/rogue/woodturned,/area/rogue/indoors/town)
+"PJ" = (/obj/structure/stairs{icon_state = "stairs"; dir = 8},/turf/open/floor/rogue/ruinedwood{icon_state = "wooden_floort"},/area/rogue/outdoors/beach)
+"PL" = (/turf/open/floor/rogue/woodturned,/area/rogue/outdoors/beach)
"PO" = (/obj/machinery/light/rogue/torchholder{icon_state = "torchwall1"; dir = 8},/turf/open/floor/rogue/blocks,/area/rogue/outdoors/town)
"PR" = (/obj/structure/bed/rogue/inn/double,/obj/item/bedsheet/rogue/fabric_double,/obj/structure/fluff/walldeco/customflag{pixel_x = 32; pixel_y = 0},/turf/open/floor/rogue/carpet/lord/center,/area/rogue/indoors/town/manor)
+"PW" = (/obj/effect/decal/cobbleedge,/turf/open/floor/plating/ashplanet/rocky,/area/rogue/outdoors/beach)
+"Qa" = (/obj/structure/roguewindow/openclose{icon_state = "woodwindowdir"; dir = 4},/turf/open/floor/rogue/woodturned,/area/rogue/indoors/town/tavern)
"Qd" = (/obj/structure/floordoor/gatehatch/outer,/obj/structure/fluff/railing/border{icon_state = "border"; dir = 8},/turf/open/floor/rogue/blocks,/area/rogue/outdoors/town)
"Qi" = (/obj/structure/fluff/walldeco/church/line{icon_state = "churchslate"; dir = 8},/turf/open/floor/rogue/church,/area/rogue/indoors/town/church/chapel)
+"Qk" = (/obj/machinery/light/rogue/torchholder/c,/obj/structure/globe,/turf/open/floor/rogue/ruinedwood{icon_state = "wooden_floort"},/area/rogue/indoors/town)
"Qm" = (/obj/structure/mineral_door/wood{name = "Room V"; chat_color_name = room; lockid = "roomv"},/turf/open/floor/rogue/wood,/area/rogue/indoors/town/tavern)
"Qn" = (/obj/machinery/light/rogue/firebowl/standing,/turf/open/floor/rogue/carpet/lord/center,/area/rogue/indoors/town/manor)
"Qp" = (/obj/structure/mineral_door/wood/fancywood{locked = 1; lockid = "hand"; name = "Hand's Chambers"},/turf/open/floor/rogue/woodturned,/area/rogue/indoors/town/manor)
"Qq" = (/obj/structure/closet/crate/chest,/obj/item/paper/scroll,/turf/open/floor/rogue/carpet,/area/rogue/indoors/town/manor)
+"Qs" = (/obj/structure/fluff/railing/border,/turf/closed/wall/mineral/rogue/craftstone,/area/rogue/outdoors/beach)
+"Qt" = (/obj/structure/table/wood{icon_state = "tablewood1"; dir = 1},/turf/open/floor/rogue/ruinedwood{icon_state = "wooden_floort"},/area/rogue/indoors/town)
"Qu" = (/obj/machinery/light/rogue/torchholder{pixel_y = 26},/turf/open/floor/rogue/dirt/road,/area/rogue/outdoors/town)
"Qv" = (/obj/structure/rack/rogue,/obj/item/roguekey/roomi{pixel_x = 10},/obj/item/roguekey/roomii,/obj/item/roguekey/roomiii{pixel_x = -10},/turf/open/floor/rogue/cobble,/area/rogue/under/town/basement)
"QA" = (/mob/living/simple_animal/hostile/retaliate/rogue/wolf{del_on_deaggro = 0},/turf/open/floor/rogue/blocks,/area/rogue/under/town/basement)
"QC" = (/obj/structure/rack/rogue,/turf/open/floor/rogue/ruinedwood{icon_state = "horzw"},/area/rogue/indoors/town/church)
"QD" = (/obj/structure/fluff/railing/border{icon_state = "border"; dir = 1},/turf/open/floor/rogue/dirt/road,/area/rogue/outdoors/rtfield)
+"QG" = (/obj/machinery/light/rogue/torchholder/c,/turf/open/floor/rogue/ruinedwood{icon_state = "wooden_floort"},/area/rogue/indoors/town)
"QH" = (/obj/structure/chair/bench/coucha/r,/turf/open/floor/carpet/royalblack,/area/rogue/indoors/town/manor)
"QM" = (/obj/structure/chair/bench/couch{icon_state = "redcouch2"},/obj/structure/fluff/walldeco/stone{pixel_x = 0; pixel_y = 32},/turf/open/floor/rogue/carpet,/area/rogue/indoors/town/manor)
+"QO" = (/obj/machinery/light/rogue/torchholder{icon_state = "torchwall1"; dir = 8},/turf/open/floor/rogue/ruinedwood{icon_state = "weird1"},/area/rogue/indoors/town)
+"QQ" = (/obj/structure/fluff/railing/border{icon_state = "border"; dir = 8},/turf/closed/wall/mineral/rogue/stone,/area/rogue/outdoors/town)
+"QT" = (/obj/structure/fluff/railing/border{icon_state = "border"; dir = 1},/turf/closed/wall/mineral/rogue/craftstone,/area/rogue/outdoors/beach)
"QW" = (/obj/machinery/light/rogue/firebowl/stump,/turf/open/floor/rogue/dirt,/area/rogue/outdoors/rtfield)
+"QX" = (/obj/machinery/light/rogue/torchholder{icon_state = "torchwall1"; dir = 8},/turf/open/floor/rogue/ruinedwood{icon_state = "wooden_floort"},/area/rogue/indoors/town)
"QY" = (/obj/machinery/light/rogue/torchholder/c,/obj/structure/fluff/railing/wood,/turf/open/floor/rogue/blocks,/area/rogue/outdoors/town)
+"Ra" = (/obj/structure/fluff/railing/border{icon_state = "border"; dir = 5},/turf/closed/wall/mineral/rogue/stone,/area/rogue/outdoors/town)
"Rc" = (/obj/structure/fluff/railing/wood{dir = 1; pixel_y = -1},/obj/structure/fluff/railing/wood{icon_state = "woodrailing"; dir = 8; pixel_y = -1},/turf/open/floor/rogue/blocks,/area/rogue/outdoors/town)
"Re" = (/obj/structure/fluff/millstone,/turf/open/floor/rogue/dirt/road,/area/rogue/outdoors/rtfield)
"Rk" = (/obj/machinery/light/rogue/torchholder{icon_state = "torchwall1"; dir = 8},/turf/open/floor/rogue/cobble,/area/rogue/outdoors/exposed/dwarf)
+"Rr" = (/obj/structure/boatbell/fluff{pixel_y = 16},/obj/effect/landmark/latejoin,/turf/open/floor/rogue/ruinedwood{icon_state = "wooden_floor2"; dir = 1},/area/rogue/outdoors/beach)
"Rs" = (/obj/structure/chair/wood/rogue,/turf/open/floor/rogue/ruinedwood{icon_state = "horzw"},/area/rogue/under/town/basement)
"Rv" = (/obj/machinery/light/rogue/firebowl/standing,/turf/open/floor/rogue/ruinedwood{icon_state = "horzw"},/area/rogue/under/town/basement)
+"Rw" = (/obj/machinery/light/rogue/torchholder{icon_state = "torchwall1"; dir = 4},/turf/open/floor/rogue/ruinedwood,/area/rogue/indoors/town)
"RB" = (/obj/effect/landmark/start/priest,/turf/open/floor/rogue/churchmarble,/area/rogue/indoors/town/church/chapel)
+"RC" = (/obj/structure/closet/crate/roguecloset,/turf/open/floor/rogue/ruinedwood{icon_state = "wooden_floort"},/area/rogue/indoors/town)
"RD" = (/obj/machinery/light/rogue/torchholder{pixel_y = 26},/turf/open/floor/rogue/blocks,/area/rogue/outdoors/exposed/dwarf)
+"RE" = (/obj/machinery/light/rogue/torchholder{icon_state = "torchwall1"; dir = 4},/obj/structure/fluff/railing/wood{dir = 1; pixel_y = 7; pixel_x = 2; layer = 2.7},/turf/open/floor/rogue/woodturned,/area/rogue/outdoors/beach)
"RF" = (/obj/structure/roguewindow/openclose{icon_state = "woodwindowdir"; dir = 4},/turf/open/floor/rogue/wood,/area/rogue/indoors/town)
"RJ" = (/obj/structure/stairs/stone{icon_state = "stonestairs"; dir = 4},/turf/open/floor/rogue/church,/area/rogue/outdoors/town)
"RM" = (/obj/structure/bookcase,/obj/item/book/random,/obj/item/book/random,/turf/open/floor/rogue/wood,/area/rogue/indoors/town/manor)
"RQ" = (/obj/structure/roguemachine/scomm,/turf/open/floor/rogue/wood,/area/rogue/indoors/town/manor)
+"RS" = (/obj/machinery/light/rogue/torchholder{icon_state = "torchwall1"; dir = 4},/turf/open/floor/rogue/cobble,/area/rogue/indoors/town/dwarfin)
"RT" = (/obj/structure/fluff/railing/wood{icon_state = "woodrailing"; dir = 8; pixel_y = -1},/obj/structure/fluff/railing/border{icon_state = "border"; dir = 9},/turf/open/floor/rogue/blocks,/area/rogue/outdoors/town)
"RU" = (/obj/structure/chair/bench/couch{icon_state = "redcouch2"},/turf/open/floor/rogue/carpet,/area/rogue/indoors/town/manor)
"RV" = (/obj/structure/bookcase,/obj/item/book/random,/obj/item/book/random,/obj/item/book/random,/obj/item/book/random,/obj/item/book/random,/turf/open/floor/rogue/carpet,/area/rogue/indoors/town/manor)
+"RW" = (/obj/structure/fluff/railing/border{icon_state = "border"; dir = 4},/turf/open/floor/rogue/ruinedwood{icon_state = "wooden_floort"},/area/rogue/outdoors/beach)
"RZ" = (/obj/item/rogueweapon/mace/wsword,/obj/item/rogueweapon/mace/wsword,/obj/structure/closet/crate/roguecloset/inn/chest,/turf/open/floor/rogue/carpet,/area/rogue/indoors/town/manor)
"Sc" = (/obj/structure/table/wood{icon_state = "map6"},/obj/machinery/light/rogue/wallfire{pixel_x = 32},/turf/open/floor/rogue/wood,/area/rogue/indoors/town/manor)
"Se" = (/obj/item/roguekey/roomv{lockid = "abandonedhouse"; name = "rusty key"},/turf/open/floor/rogue/wood,/area/rogue/under/town/basement)
+"Si" = (/turf/open/floor/rogue/ruinedwood{icon_state = "wooden_floort"},/area/rogue/indoors/town)
"Sl" = (/obj/structure/bookcase,/obj/item/book/random,/turf/open/floor/rogue/wood,/area/rogue/indoors/town/manor)
"So" = (/obj/structure/fluff/statue/gargoyle,/turf/open/floor/rogue/carpet,/area/rogue/indoors/town/manor)
"Sp" = (/obj/item/roguestatue/iron,/turf/open/floor/rogue/carpet,/area/rogue/indoors/town/manor)
@@ -2069,29 +2120,43 @@
"Sy" = (/obj/structure/table/wood,/obj/structure/table/wood{icon_state = "tablewood1"},/turf/open/floor/rogue/wood,/area/rogue/indoors/town/manor)
"Sz" = (/obj/structure/fluff/traveltile{aportalgoesto = "forestin"; aportalid = "forestout"},/turf/open/floor/rogue/cobblerock,/area/rogue/outdoors/rtfield)
"SA" = (/obj/machinery/light/rogue/wallfire/candle{pixel_y = -32},/turf/open/floor/rogue/tile{icon_state = "bfloorz"},/area/rogue/indoors/town/manor)
+"SP" = (/obj/effect/decal/cobbleedge{dir = 1},/turf/open/floor/plating/ashplanet/rocky,/area/rogue/outdoors/beach)
"SR" = (/obj/structure/fluff/railing/border{icon_state = "border"; dir = 6},/turf/open/floor/rogue/dirt/road,/area/rogue/outdoors/rtfield)
"SS" = (/obj/structure/table/wood{icon_state = "longtable"; dir = 1},/obj/item/paper/scroll,/turf/open/floor/rogue/woodturned,/area/rogue/indoors/town/manor)
+"ST" = (/obj/machinery/light/rogue/torchholder{icon_state = "torchwall1"; dir = 4},/obj/effect/landmark/latejoin,/turf/open/floor/rogue/ruinedwood{icon_state = "wooden_floor2"; dir = 1},/area/rogue/outdoors/beach)
"SU" = (/turf/open/floor/rogue/cobble,/area/rogue/under/cave)
"SY" = (/obj/structure/bed/rogue,/turf/open/floor/rogue/ruinedwood{icon_state = "horzw"},/area/rogue/indoors/town/church)
"Tc" = (/obj/structure/fluff/railing/wood{dir = 1; pixel_y = -1},/turf/open/floor/rogue/wood,/area/rogue/outdoors/town)
+"Te" = (/obj/structure/fluff/railing/wood{icon_state = "woodrailing"; dir = 4},/turf/open/floor/rogue/woodturned,/area/rogue/outdoors/beach)
+"Tf" = (/obj/structure/stairs{icon_state = "stairs"; dir = 8},/turf/open/floor/plating/ashplanet/rocky,/area/rogue/outdoors/beach)
"Th" = (/obj/structure/fluff/walldeco/painting{pixel_y = 32},/turf/open/floor/rogue/wood,/area/rogue/indoors/town/manor)
"Tj" = (/obj/structure/winch{gid = "townin"; redstone_id = "townin"},/turf/open/floor/rogue/blocks,/area/rogue/indoors/town/manor)
+"Tm" = (/obj/structure/fluff/railing/border{icon_state = "border"; dir = 9},/turf/closed/wall/mineral/rogue/stone,/area/rogue/outdoors/town)
"Tn" = (/obj/structure/table/wood{icon_state = "map3"},/obj/machinery/light/rogue/wallfire{pixel_x = 32},/turf/open/floor/rogue/wood,/area/rogue/indoors/town/manor)
+"Tr" = (/obj/structure/closet/crate/chest,/turf/open/floor/rogue/woodturned,/area/rogue/outdoors/beach)
"Tt" = (/obj/structure/table/wood,/obj/item/keyring,/turf/open/floor/rogue/wood,/area/rogue/outdoors/town)
+"Tu" = (/turf/closed/wall/mineral/rogue/wooddark,/area/rogue/outdoors/beach)
+"Tw" = (/obj/structure/mineral_door/wood{name = "Fancy Room III"; chat_color_name = room; lockid = "fancyroomiii"},/turf/open/floor/rogue/wood,/area/rogue/indoors/town/tavern)
"Tx" = (/obj/structure/closet/crate/roguecloset/dark,/obj/item/clothing/suit/roguetown/armor/leather/vest,/obj/item/clothing/shoes/roguetown/boots/leather,/obj/item/clothing/suit/roguetown/armor/armordress,/turf/open/floor/rogue/blocks/stonered/tiny,/area/rogue/indoors/town/dwarfin)
"Ty" = (/obj/machinery/light/rogue/firebowl/standing,/turf/open/floor/rogue/ruinedwood,/area/rogue/indoors/town)
"TA" = (/obj/effect/landmark/start/manorguardsman{dir = 4},/turf/open/floor/rogue/tile/masonic{dir = 4},/area/rogue/indoors/town/manor)
"TC" = (/obj/machinery/light/rogue/torchholder{icon_state = "torchwall1"; dir = 8},/obj/structure/fluff/railing/wood{icon_state = "woodrailing"; dir = 8; pixel_y = -1},/turf/open/floor/rogue/blocks,/area/rogue/outdoors/town)
+"TG" = (/obj/machinery/light/rogue/torchholder/r{dir = 4},/turf/open/floor/rogue/churchmarble,/area/rogue/indoors/town/church/chapel)
"TI" = (/obj/machinery/light/rogue/torchholder{pixel_y = 26},/turf/open/floor/rogue/cobble,/area/rogue/outdoors/town)
+"TN" = (/obj/effect/decal/cobbleedge{dir = 6},/turf/open/floor/plating/ashplanet/rocky,/area/rogue/outdoors/beach)
"TR" = (/obj/item/storage/roguebag,/turf/open/floor/rogue/wood,/area/rogue/indoors/town/manor)
"TS" = (/obj/structure/bed/rogue,/turf/open/floor/rogue/wood,/area/rogue/indoors/town)
"TU" = (/obj/effect/landmark/start/manorguardsman{dir = 8},/turf/open/floor/rogue/tile/masonic{dir = 8},/area/rogue/indoors/town/manor)
+"TW" = (/obj/machinery/light/rogue/torchholder{icon_state = "torchwall1"; dir = 8},/obj/effect/landmark/latejoin,/turf/open/floor/rogue/ruinedwood{icon_state = "wooden_floort"},/area/rogue/outdoors/beach)
"Uc" = (/obj/machinery/light/rogue/torchholder{pixel_y = 26},/turf/open/floor/rogue/grass,/area/rogue/outdoors/town)
+"Ue" = (/obj/structure/fluff/railing/border,/obj/structure/fluff/railing/border{icon_state = "border"; dir = 10},/turf/closed/wall/mineral/rogue/wooddark,/area/rogue/outdoors/beach)
"Ug" = (/obj/structure/mineral_door/wood{icon_state = "wcv"; lockid = "shop"},/turf/open/floor/rogue/ruinedwood{icon_state = "weird1"},/area/rogue/indoors/town/shop)
"Uh" = (/obj/structure/closet/crate/roguecloset/dark,/obj/item/roguekey/blacksmith,/obj/item/roguekey/blacksmith,/turf/open/floor/rogue/woodturned,/area/rogue/indoors/town/dwarfin)
"Ui" = (/obj/structure/chair/wood/rogue,/turf/open/floor/rogue/carpet/lord/right,/area/rogue/indoors/town/manor)
"Uk" = (/obj/machinery/light/rogue/firebowl/stump,/obj/structure/fluff/railing/wood{dir = 1; pixel_y = -1},/turf/open/floor/rogue/blocks,/area/rogue/outdoors/town)
"Um" = (/obj/structure/table/wood,/turf/open/floor/rogue/ruinedwood{icon_state = "vertw"; dir = 1},/area/rogue/indoors/town/tavern)
+"Up" = (/obj/structure/bed/rogue,/turf/open/floor/carpet/purple,/area/rogue/indoors/town)
+"Ut" = (/obj/structure/fluff/railing/border{icon_state = "border"; dir = 8},/obj/structure/fluff/railing/border{icon_state = "border"; dir = 1},/obj/structure/fluff/railing/border{icon_state = "border"; dir = 9},/turf/open/floor/rogue/ruinedwood{icon_state = "wooden_floort"},/area/rogue/outdoors/beach)
"Uw" = (/obj/structure/plasticflaps,/turf/closed/mineral/rogue,/area/rogue/under/town/basement)
"Uy" = (/obj/structure/chair/wood/rogue/fancy,/turf/open/floor/rogue/carpet,/area/rogue/indoors/town/manor)
"UB" = (/obj/machinery/light/rogue/wallfire/candle{pixel_y = -32},/turf/open/floor/carpet/royalblack,/area/rogue/indoors/town/manor)
@@ -2099,9 +2164,14 @@
"UF" = (/obj/structure/bookcase,/obj/item/book/random,/obj/item/book/random,/obj/item/book/random,/obj/item/book/random,/obj/item/book/random,/obj/item/book/random,/obj/item/book/random,/turf/open/floor/rogue/wood,/area/rogue/indoors/town/manor)
"UG" = (/obj/structure/table/wood{icon_state = "longtable"},/obj/structure/fluff/walldeco/rpainting{pixel_y = 32},/obj/item/natural/feather,/turf/open/floor/rogue/woodturned,/area/rogue/indoors/town/manor)
"UH" = (/obj/structure/mineral_door/wood{name = "Fancy Room I"; lockid = "fancyroomi"},/turf/open/floor/rogue/wood,/area/rogue/indoors/town/tavern)
+"UI" = (/obj/structure/fluff/railing/border{icon_state = "border"; dir = 8},/obj/structure/fluff/railing/border,/obj/structure/fluff/railing/border{icon_state = "border"; dir = 10},/turf/closed/wall/mineral/rogue/wooddark,/area/rogue/outdoors/beach)
"UJ" = (/obj/structure/closet/crate/chest,/turf/open/floor/rogue/carpet,/area/rogue/indoors/town/manor)
+"UQ" = (/obj/structure/stairs{icon_state = "stairs"; dir = 8},/obj/structure/fluff/railing/border,/obj/structure/fluff/railing/border{icon_state = "border"; dir = 1},/turf/open/floor/rogue/ruinedwood{icon_state = "wooden_floort"},/area/rogue/indoors/town)
"US" = (/obj/structure/fluff/railing/border{icon_state = "border"; dir = 4},/obj/machinery/light/rogue/firebowl/standing,/turf/open/floor/rogue/cobble,/area/rogue/outdoors/rtfield)
+"UV" = (/obj/structure/chair/wood{dir = 4},/turf/open/floor/rogue/woodturned,/area/rogue/indoors/town/tavern)
"Vc" = (/obj/structure/rogue/trophy/deer,/turf/open/floor/carpet/royalblack,/area/rogue/indoors/town/manor)
+"Ve" = (/obj/structure/fluff/railing/border{icon_state = "border"; dir = 10},/turf/closed/wall/mineral/rogue/wooddark,/area/rogue/outdoors/beach)
+"Vf" = (/obj/structure/fluff/railing/border{icon_state = "border"; dir = 6},/turf/closed/wall/mineral/rogue/craftstone,/area/rogue/outdoors/beach)
"Vj" = (/obj/structure/fluff/statue/gargoyle,/obj/machinery/light/rogue/wallfire/candle,/turf/open/floor/rogue/carpet,/area/rogue/indoors/town/manor)
"Vk" = (/obj/structure/closet/crate/roguecloset,/obj/item/needle/thorn,/obj/item/reagent_containers/glass/cup/silver,/obj/item/roguekey/church,/obj/item/paper/confession,/obj/item/roguekey/priest,/turf/open/floor/rogue/wood,/area/rogue/outdoors/town)
"Vn" = (/obj/structure/floordoor/gatehatch/outer,/obj/structure/fluff/railing/border{icon_state = "border"; dir = 4},/turf/open/floor/rogue/blocks,/area/rogue/outdoors/town)
@@ -2111,15 +2181,21 @@
"Vu" = (/obj/structure/fluff/railing/wood{dir = 1; pixel_y = -1},/obj/structure/fluff/railing/wood{icon_state = "woodrailing"; dir = 4},/turf/open/floor/rogue/blocks,/area/rogue/outdoors/town)
"Vy" = (/obj/structure/chair/bench/couch,/turf/open/floor/rogue/carpet,/area/rogue/indoors/town/manor)
"VA" = (/obj/structure/winch{dir = 4; gid = "gatemanor2"; redstone_id = "gatemanor3"; pixel_x = -6},/turf/open/floor/rogue/wood,/area/rogue/indoors/town/manor)
+"VD" = (/obj/structure/fluff/railing/border,/obj/structure/fluff/railing/border{icon_state = "border"; dir = 8},/obj/structure/fluff/railing/border{icon_state = "border"; dir = 10},/turf/closed/wall/mineral/rogue/wooddark,/area/rogue/outdoors/beach)
"VE" = (/obj/structure/closet/crate/roguecloset/lord,/obj/item/clothing/shoes/roguetown/nobleboot,/obj/item/rogueweapon/greatsword,/obj/item/scomstone,/obj/item/clothing/suit/roguetown/armor/plate/blkknight,/turf/open/floor/rogue/tile{icon_state = "bfloorz"},/area/rogue/indoors/town/manor)
"VI" = (/obj/structure/chair/wood/rogue,/turf/open/floor/rogue/wood,/area/rogue/indoors/town/manor)
"VK" = (/obj/structure/fluff/clock,/turf/open/floor/rogue/carpet,/area/rogue/indoors/town/manor)
"VL" = (/obj/structure/bed/rogue/shit,/obj/effect/landmark/start/butler{icon_state = "arrow"; dir = 4},/turf/open/floor/rogue/cobble,/area/rogue/indoors/town/manor)
+"VM" = (/obj/structure/fluff/railing/border{icon_state = "border"; dir = 6},/turf/open/floor/rogue/ruinedwood{icon_state = "wooden_floort"},/area/rogue/outdoors/beach)
"VN" = (/obj/machinery/light/rogue/torchholder,/turf/closed/wall/mineral/rogue/craftstone,/area/rogue/indoors/town/dwarfin)
"VO" = (/obj/item/rogueweapon/tongs,/turf/open/floor/rogue/blocks/stonered,/area/rogue/indoors/town/dwarfin)
"VP" = (/obj/structure/table/wood{icon_state = "tablewood1"},/turf/open/floor/rogue/woodturned,/area/rogue/indoors/town/dwarfin)
"VQ" = (/obj/structure/fluff/railing/wood{icon_state = "woodrailing"; dir = 8; pixel_y = -1},/obj/structure/fluff/railing/wood{dir = 1; pixel_y = -1},/turf/open/floor/rogue/blocks,/area/rogue/outdoors/town)
"VT" = (/obj/structure/fluff/walldeco/painting/seraphina{pixel_y = 32},/turf/open/floor/rogue/tile{icon_state = "bfloorz"},/area/rogue/indoors/town/manor)
+"VX" = (/obj/structure/fluff/railing/border{icon_state = "border"; dir = 1},/turf/closed/wall/mineral/rogue/stone,/area/rogue/outdoors/town)
+"Wa" = (/obj/structure/fluff/railing/border{icon_state = "border"; dir = 4},/obj/structure/fluff/railing/border{icon_state = "border"; dir = 8},/turf/open/floor/rogue/ruinedwood{icon_state = "vertw"},/area/rogue/outdoors/beach)
+"Wf" = (/obj/structure/fluff/railing/border,/obj/structure/fluff/railing/border{icon_state = "border"; dir = 4},/obj/structure/fluff/railing/border{icon_state = "border"; dir = 6},/obj/machinery/light/rogue/torchholder{pixel_y = 26; dir = 1},/turf/closed/wall/mineral/rogue/wooddark,/area/rogue/outdoors/beach)
+"Wh" = (/obj/machinery/light/rogue/torchholder{icon_state = "torchwall1"; dir = 8},/turf/open/floor/rogue/blocks/stonered,/area/rogue/indoors/town/dwarfin)
"Wi" = (/obj/structure/fluff/railing/wood,/obj/structure/fluff/railing/wood,/turf/open/floor/rogue/blocks,/area/rogue/outdoors/town)
"Wl" = (/obj/structure/table/wood,/turf/open/floor/rogue/wood,/area/rogue/indoors/town/manor)
"Wp" = (/obj/machinery/light/rogue/torchholder,/turf/closed/wall/mineral/rogue/stone,/area/rogue/outdoors/town)
@@ -2127,10 +2203,13 @@
"Wr" = (/obj/structure/fluff/railing/border{icon_state = "border"; dir = 5},/turf/open/floor/rogue/blocks,/area/rogue/outdoors/town)
"WA" = (/obj/effect/landmark/start/manorguardsman{dir = 8},/turf/open/floor/rogue/tile/masonic{dir = 2},/area/rogue/indoors/town/manor)
"WB" = (/obj/machinery/light/rogue/torchholder/l,/turf/open/floor/rogue/woodturned,/area/rogue/indoors/town/manor)
+"WC" = (/obj/structure/fluff/railing/border{icon_state = "border"; dir = 10},/turf/closed/wall/mineral/rogue/stone,/area/rogue/outdoors/town)
"WG" = (/obj/structure/closet/crate/roguecloset,/obj/item/rogueweapon/huntingknife/cleaver,/turf/open/floor/rogue/ruinedwood{icon_state = "horzw"},/area/rogue/under/town/basement)
"WH" = (/obj/structure/mineral_door/wood/fancywood{lockid = "lord"; name = "Lord's Apartment"},/turf/open/floor/rogue/carpet/lord/right{dir = 1},/area/rogue/indoors/town/manor)
+"WK" = (/obj/structure/fluff/railing/border{icon_state = "border"; dir = 1},/obj/structure/fluff/railing/border{icon_state = "border"; dir = 8},/obj/structure/fluff/railing/border{icon_state = "border"; dir = 9},/turf/open/floor/rogue/ruinedwood{icon_state = "wooden_floort"},/area/rogue/outdoors/beach)
"WL" = (/obj/structure/table/wood,/obj/item/candle/yellow,/obj/item/candle/yellow,/obj/item/paper/scroll,/turf/open/floor/rogue/ruinedwood{icon_state = "horzw"},/area/rogue/indoors/town/church)
"WN" = (/obj/structure/chair/wood/rogue,/turf/open/floor/rogue/ruinedwood{icon_state = "vertw"; dir = 1},/area/rogue/indoors/town/tavern)
+"WQ" = (/obj/structure/closet/crate/chest,/obj/machinery/light/rogue/torchholder{icon_state = "torchwall1"; dir = 4},/turf/open/floor/rogue/woodturned,/area/rogue/outdoors/beach)
"WT" = (/obj/structure/mineral_door/wood/deadbolt{icon_state = "wooddir"; dir = 8; lockid = "townroom1"},/turf/open/floor/rogue/ruinedwood{icon_state = "vertw"; dir = 1},/area/rogue/indoors/town)
"WU" = (/obj/structure/bookcase,/obj/item/book/random,/obj/item/book/random,/obj/item/book/random,/obj/item/book/random,/turf/open/floor/rogue/carpet,/area/rogue/indoors/town/manor)
"WW" = (/obj/structure/stairs/stone{icon_state = "stonestairs"; dir = 4},/turf/closed,/area/rogue/indoors/town/church/chapel)
@@ -2139,42 +2218,59 @@
"Xe" = (/obj/effect/landmark/events/haunts,/turf/open/floor/rogue/wood,/area/rogue/indoors/town/tavern)
"Xf" = (/obj/machinery/light/rogue/wallfire/candle/l,/turf/open/floor/rogue/carpet,/area/rogue/indoors/town/manor)
"Xg" = (/obj/machinery/light/rogue/wallfire/candle{pixel_y = -32},/turf/open/floor/rogue/carpet,/area/rogue/indoors/town/manor)
+"Xk" = (/turf/open/floor/rogue/ruinedwood{icon_state = "wooden_floort"},/area/rogue/outdoors/beach)
+"Xn" = (/obj/machinery/light/rogue/wallfire/candle/blue,/turf/open/floor/rogue/metal,/area/rogue/indoors/town/shop)
"Xp" = (/turf/open/floor/rogue/tile/masonic{dir = 2},/area/rogue/indoors/town/manor)
"Xq" = (/obj/machinery/light/rogue/torchholder/r,/obj/structure/closet/crate/chest,/turf/open/floor/rogue/woodturned,/area/rogue/indoors/town/manor)
"Xu" = (/obj/structure/fluff/railing/wood,/obj/structure/fluff/railing/wood{icon_state = "woodrailing"; dir = 8; pixel_y = -1},/turf/open/floor/rogue/blocks,/area/rogue/outdoors/town)
+"XA" = (/obj/structure/mineral_door/wood,/turf/open/floor/rogue/ruinedwood{icon_state = "wooden_floort"},/area/rogue/indoors/town)
"XC" = (/obj/structure/fluff/psycross,/obj/item/rogueweapon/woodstaff/aries,/turf/open/floor/carpet/royalblack,/area/rogue/outdoors/town)
"XF" = (/obj/structure/roguemachine/scomm/l,/turf/open/floor/rogue/wood,/area/rogue/indoors/town/manor)
+"XK" = (/obj/machinery/light/rogue/wallfire/candle/blue,/turf/open/floor/rogue/tile{icon_state = "chess"},/area/rogue/indoors/town/shop)
"XN" = (/obj/effect/decal/cobbleedge{dir = 1; icon_state = "borderfall"},/obj/structure/roguemachine/atm{pixel_x = 32; pixel_y = 0},/turf/open/floor/rogue/tile{icon_state = "bfloorz"},/area/rogue/indoors/town/manor)
+"XZ" = (/obj/structure/fluff/railing/border,/turf/closed/wall/mineral/rogue/wooddark,/area/rogue/outdoors/beach)
+"Yb" = (/turf/closed/mineral/rogue/bedrock,/area/rogue/outdoors/beach)
"Yc" = (/obj/structure/fermenting_barrel,/turf/open/floor/rogue/woodturned,/area/rogue/indoors/town/manor)
"Yk" = (/obj/structure/floordoor/gatehatch/inner,/obj/structure/fluff/railing/border{icon_state = "border"; dir = 4},/turf/open/floor/rogue/blocks,/area/rogue/outdoors/town)
"Yo" = (/obj/structure/fluff/clock,/turf/open/floor/rogue/tile{icon_state = "bfloorz"},/area/rogue/indoors/town/manor)
"Yp" = (/obj/structure/fluff/wallclock,/obj/structure/chair/bench/couch,/turf/open/floor/rogue/carpet,/area/rogue/indoors/town/manor)
+"Yq" = (/obj/structure/table/wood{icon_state = "tablewood1"; dir = 1},/obj/item/paper/scroll,/turf/open/floor/rogue/ruinedwood{icon_state = "wooden_floort"},/area/rogue/indoors/town)
+"Yt" = (/obj/structure/bars,/turf/open/water/cleanshallow,/area/rogue/outdoors/beach)
"Yv" = (/obj/structure/bookcase,/obj/item/book/random,/obj/item/book/random,/obj/item/book/random,/obj/item/book/random,/obj/item/book/random,/obj/item/book/random,/turf/open/floor/rogue/wood,/area/rogue/indoors/town/manor)
"Yx" = (/obj/machinery/light/rogue/torchholder/c,/turf/open/floor/rogue/grass,/area/rogue/outdoors/town)
+"Yy" = (/obj/machinery/light/rogue/torchholder{icon_state = "torchwall1"; dir = 4},/turf/open/floor/rogue/dirt,/area/rogue/outdoors/town)
"Yz" = (/obj/machinery/light/rogue/torchholder{icon_state = "torchwall1"; dir = 8},/turf/open/floor/rogue/grass,/area/rogue/outdoors/town)
"YE" = (/obj/structure/mineral_door/wood{icon_state = "wcv"; lockid = "townroom1"},/turf/open/floor/rogue/ruinedwood{icon_state = "weird1"},/area/rogue/indoors/town)
"YI" = (/obj/structure/chair/wood/rogue{icon_state = "chair2"; dir = 4},/turf/open/floor/rogue/tile{icon_state = "bfloorz"},/area/rogue/indoors/town/manor)
"YK" = (/obj/structure/roguemachine/scomm/r,/turf/open/floor/rogue/carpet,/area/rogue/indoors/town/manor)
"YL" = (/obj/structure/bed/rogue,/turf/open/floor/rogue/ruinedwood{icon_state = "horzw"},/area/rogue/under/town/basement)
+"YM" = (/obj/structure/mineral_door/wood{name = "Room IV"; chat_color_name = room; lockid = "roomiv"},/turf/open/floor/rogue/wood,/area/rogue/indoors/town/tavern)
"YS" = (/obj/structure/bed/rogue/inn/double,/obj/item/bedsheet/rogue/fabric_double,/turf/open/floor/rogue/carpet,/area/rogue/indoors/town/manor)
"YU" = (/obj/structure/bearpelt,/obj/structure/fluff/wallclock{pixel_x = -32; pixel_y = 0},/turf/open/floor/rogue/carpet,/area/rogue/indoors/town/manor)
+"YZ" = (/obj/structure/fluff/railing/border{icon_state = "border"; dir = 5},/turf/open/floor/rogue/ruinedwood{icon_state = "wooden_floort"},/area/rogue/outdoors/beach)
"Zb" = (/obj/structure/fluff/statue/knight,/turf/open/floor/rogue/carpet/lord/center,/area/rogue/indoors/town/manor)
"Zc" = (/obj/structure/closet/crate/chest{lockid = "priest"},/obj/item/book/rogue/bibble,/turf/open/floor/rogue/wood,/area/rogue/outdoors/town)
"Zg" = (/obj/structure/closet/crate/roguecloset,/obj/item/rogueweapon/sword/rapier,/turf/open/floor/rogue/wood,/area/rogue/indoors/town/manor)
+"Zi" = (/obj/machinery/light/rogue/torchholder/r,/turf/open/floor/rogue/churchmarble,/area/rogue/indoors/town/church/chapel)
"Zj" = (/obj/machinery/light/rogue/torchholder{icon_state = "torchwall1"; dir = 4},/turf/open/floor/rogue/cobble,/area/rogue/outdoors/exposed/dwarf)
+"Zk" = (/obj/structure/fluff/wallclock,/obj/effect/landmark/latejoin,/turf/open/floor/rogue/ruinedwood{icon_state = "wooden_floort"},/area/rogue/outdoors/beach)
"Zm" = (/obj/structure/fluff/railing/border{icon_state = "border"; dir = 5},/turf/open/floor/rogue/cobble,/area/rogue/outdoors/rtfield)
"Zn" = (/obj/machinery/light/rogue/torchholder{pixel_y = 26},/turf/open/floor/rogue/blocks,/area/rogue/outdoors/town)
"Zp" = (/obj/machinery/light/rogue/wallfire/candle,/obj/structure/chair/bench/couch{icon_state = "redcouch2"},/turf/open/floor/rogue/woodturned,/area/rogue/indoors/town/manor)
"Zu" = (/obj/structure/roguemachine/scomm,/turf/open/floor/rogue/wood,/area/rogue/outdoors/town)
+"Zv" = (/obj/structure/flora/roguegrass/water/reeds,/turf/open/water/cleanshallow,/area/rogue/outdoors/beach)
"Zx" = (/turf/open/floor/rogue/carpet/lord/left{dir = 1},/area/rogue/indoors/town/manor)
+"Zy" = (/turf/closed/wall/mineral/rogue/craftstone,/area/rogue/outdoors/beach)
"ZC" = (/obj/structure/mineral_door/wood{name = "Room II"; lockid = "roomii"},/turf/open/floor/rogue/wood,/area/rogue/indoors/town/tavern)
"ZH" = (/obj/structure/bed/rogue/shit,/turf/open/floor/rogue/grass,/area/rogue/indoors/town/manor)
+"ZI" = (/obj/machinery/light/rogue/torchholder{icon_state = "torchwall1"; dir = 8},/obj/effect/landmark/latejoin,/turf/open/floor/rogue/ruinedwood{icon_state = "wooden_floor2"; dir = 1},/area/rogue/outdoors/beach)
"ZJ" = (/obj/machinery/light/rogue/torchholder,/turf/closed/wall/mineral/rogue/craftstone,/area/rogue/indoors/town)
"ZL" = (/obj/structure/fluff/railing/wood,/obj/structure/fluff/railing/border{icon_state = "border"; dir = 6},/turf/open/floor/rogue/blocks,/area/rogue/outdoors/town)
"ZM" = (/obj/machinery/light/rogue/wallfire/candle/r,/turf/open/floor/rogue/carpet,/area/rogue/indoors/town/manor)
"ZP" = (/obj/structure/closet/crate/chest{lockid = "priest"},/obj/item/book/rogue/bibble,/turf/open/floor/carpet/royalblack,/area/rogue/indoors/town/church)
"ZQ" = (/obj/structure/fluff/railing/border{icon_state = "border"; dir = 4},/obj/structure/fluff/railing/border{icon_state = "border"; dir = 8},/turf/open/floor/rogue/ruinedwood{icon_state = "weird1"},/area/rogue/indoors/town/shop)
"ZU" = (/obj/machinery/light/rogue/wallfire/candle/l,/turf/open/floor/carpet/royalblack,/area/rogue/indoors/town/manor)
+"ZV" = (/obj/structure/closet/crate/chest,/obj/machinery/light/rogue/torchholder{icon_state = "torchwall1"; dir = 8},/turf/open/floor/rogue/ruinedwood,/area/rogue/indoors/town)
"ZW" = (/obj/effect/landmark/events/haunts,/turf/open/floor/rogue/carpet/lord/center,/area/rogue/indoors/town/manor)
"ZZ" = (/obj/structure/table/wood{icon_state = "map1"},/turf/open/floor/rogue/wood,/area/rogue/indoors/town/manor)
@@ -2229,49 +2325,49 @@ craaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacac
aaaaaaaaaaaaaaaaaaacacacacaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacaaacacacacaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaciciaaaaaaaaaaaaciciciciciciciaaaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaclahcvbbahahcwagbubbasascxbXbXasasagbXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaacacacacacacacaaaaaaaaaaaaaaaaaaaacycyacacacacacacacacaaacacacacaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaciciciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaciciciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabacsahczahahahbXagasbXcAcAcBbXbXasasagbXbXbXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaacacacacacacacacacacaaaaaaaaaaaaaaaacycyacacacacaaacacacaaaaaaaaaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaciciciciciciciciciciciciciciciciciciciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababXbabXbabXbXagascCcAcAcDbXbaasasagagcEbXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaacacacacacacacacacacacacaacFaaaaaaaacFcycyaacFacaccFacacaccFaaaaaaaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaciciciciciciciciciciciciciciciciciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaahcmascGcHcIbXagascJcKcAcLbXbaasasasagcEbXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaacacacacacacacacacacacacaccycycycycycycycycycycycycycycycycyacacaaaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabXbFasasasasasbXagasbabXbXbXbXbXasasasagcEbXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaacacacacacacacacacacacacacaccycycycycycycycycycycycycycycycycyacacacaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaagagagbbahahcwagbubXcMcMcMcMcpasasasbabXbXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaacacacacacacacacacacacacacaaaacFaaaaaaaacFcycyaacFcycycFaacFcycyacacacaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabacMcNcOahcsahbXagasbbcPcPagcQcpasasasbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaacacacacacacacacacacacacaaaaaaaaaaaaaaaacFcycycFaaaaaaaaaaaaacacacacacaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabXbXbXbXbXbabXbXcRascScAcTcUcKcpasasasbXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaacacacacacacacacacacacacaaaaaaaaaaaaaaaaaacFcVcVcFaaaaaaaaaaaaacacacacacaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabXcWcXasasasascSasasbbcPagagagbXasasasbXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaacacacacacacacacacacacacacaaaaaaaaaaaaaaaacFcFcFcFaaaaaaaaaaaaacacacacacaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaasascYbbbbbbbbasasbXbXcLcAcZbXasasasbXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaacacacacacacaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaasascYbbdbdcbbasbubXbXbXbXbXbXasasasbXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaadadaacacacacacacaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabacGasasagagagcSagagbXbXbXbXbXbXasasasbXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaadadadaacacacacacacaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababXddbXbXbabXbabXbXasasasbXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaacacacacacacacacacacacacacacacacdadaaaaaaaaaaaaadadaaadadaacacacacacacacaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaasasasasasasdebXaaaabadfdfdfbXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaacacacacacacacacacacacacacacacacacdadadadadadadadadadadadaacacacacacacacaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaagagagagagagdgbXaaaabababXbXbXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaacacacacacacacacacacacacacacacacacacdadadadadadadadadadadaacacacacacacacacaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababXbXagagbXbababXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaacacacacacacacacacacacacacacacacacacacdadadadadadadadadadaacacacacacacacacaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabXbXdhbXaabaalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaacacacacacacacacacacacacacacacacacdadadadadadadadadaacacacacacacacacaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalalalalalalalalalasalalalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacpcpcpcpcpcpcpcpcpaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaacacacacacacacacacacacacacacacacacacdadadadadadadadadaacacacacacacacaaaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalcWasasdiasdjdkasasascWalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacpaEdldmcpdncPdocpaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaacacacacacacacacacacacacacacacacacacacdadadadadadadaacacacacacacacacaaaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalasasasagagagasasasasasalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacpdpcPcPcPcPcPdocpaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaacacacacacacacacacacacacacacacacacdadadadadadadadadaacacacacacacacacaaaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalagagdqdrdqdqdqdqdqasasalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacpagcPcPcpdscPdocpaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaacacacacacacacacacacacacacdadadadadadadadadadadadadaacacacacacacacacaaaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaldtasdqdudududududqaNdvalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacpagdwbXcpcpcPcpcpaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaacacacacacacacacacacacacdadadadadadadadadadadadadadaacacacacacacacaaaaaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalasasdqdudududududqagdxalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacpagagaEcpcPcPdocpaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaacacacacacacacacacacdadadadadadadadadadadadadadaacacacacacacacacacaaaaaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaldtasdqdudududududqdydzalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacpdAagagcPcPcPdocpaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaacacacacacacacacacdadadadadadadadadadadadadadadaacdaacacacacacaaaaaaaaaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalagagdqdudududududqdydxalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacpagagagcpcPcPdBcpaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaacacacacacacacacdadadadadadadadadadadadadadadadadaacacacacacaaaaaaaaaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaldtasdqdudCdDdududqdEdFalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdGbbdGdHbbcpcpcpcpcpaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaacacacacacacacacacdadadadadadadadadadadadadadadaacacacacaaaaaaaaaaaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalalalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalalalasasdqdudududududqagdxalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadIdJdKdLagdIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaacacacacacacacacacacdadadadadadadadadadadaacacacacacacacaaaaaaaaaaaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalalalaldMalalalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalaldNdOasasdqdudududududqdPagalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadIagcRagagdIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaldQdRaldSaldTalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaldUasbbasasdqdudududududqaNdvalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadIdJdVdWagdIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaacacacacacacacacacacacacacacacacacacdadaacacacacacacacacaaaaaaaaaaaaaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalbjbjbjSebjbjalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaldUasdXdYasdqdqdqdqdqdZdqasasalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadIagagagagdIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaacacacacacacacacacacacacacacacacacdadadadadaacacacacacacaaaaaaaaaaaaaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalbjbjbjbjbjbjalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalalasbbasagagagasasagagasasasalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadIdJeaebagdIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaacacacacacacacacacdadadadaadadadacacdadadadadaacacacacacacaaaaaaaaaaaaaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalbjecbjalbjbjalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalasedasagasasasasagagaseecWalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbdGbbdGbbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaacacacacacacacacdadadadadaadadadadadaddadadadaacacacacacacaaaaaaaaaaaaaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalbjbjefbjbjbjalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalalalalalalalalalalalalalalalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaacacacacacacdadadaacacacacacadadadadaddadadadaacacacacacacaaaaaaaaaaaaaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalbjbjbjbjbjegalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaacacacdadadadadaacacacacacacacacacacacdadadadaacacacacacacaaaaaaaaaaaaaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalalalalalalalalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaacacacdadadadadaacacacacacacacacacacacacdadadadaacacacacacacaaaaaaaaaaaaaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaacacacacacacdadaaaaaaaaaaaaaaaaaaaacacacacacacdadadadaacacacacacacaaaaaaaaaaaaaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaacacacacacacdadaaaaaaaaaaaaaaaaaaaaaaaaaacacacdadadadaacacacacacacaaaaaaaaaaaaaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacdadadadaacacacacacaaaaaaaaaaaaaaaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaacacacacacacaaaaaaaaaaaaalalalalaaaaaaaaacacacacdadaacacacacacacaaaaaaaaaaaaaaaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaacacacacacacaaaaaaaaaaaaalduehalaaaaaaaaaaacacacdadadaacacacacacaaaaaaaaaaaaaaaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaacacacacacacaaaaaaaaaaaaalahehalaaaaaaaaaaacacacacdadaacacacacacaaaaaaaaaaaaaaaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaacacacacacacaaaaaaaaaaaaalaheialaaaaaaaaaaacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaacacacacacacacaaaaaaaaaaalejdOalalalaaaaaaaaacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaacacacacacacacaaaaaaaaaaalahahahekalaaaaaaacacacacacacacacacacacacacacacacacaaaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaacacacacacacacacaaaaaaaaalahduduelalaaaaaaacacacacacacacacacacacacacacacacacaaaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaacacacacacacacacacacacacaacFaaaaaaaacFcycyaacFacaccFacacaccFaaaaaaaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaciciciciciciciciciciciciciciciciciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaahcmascGcHcIbXagascJcKcAcLbXbaasasasagcEbXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNZ
+aaaaaaaaaaaaaaacacacacacacacacacacacacaccycycycycycycycycycycycycycycycycyacacaaaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabXbFasasasasasbXagasbabXbXbXbXbXasasasagcEbXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZy
+aaaaaaaaaaaaacacacacacacacacacacacacacaccycycycycycycycycycycycycycycycycyacacacaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaagagagbbahahcwagbubXcMcMcMcMcpasasasbabXbXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNZZy
+aaaaaaaaaaacacacacacacacacacacacacacaaaacFaaaaaaaacFcycyaacFcycycFaacFcycyacacacaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabacMcNcOahcsahbXagasbbcPcPagcQcpasasasbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZyZy
+aaaaaaaaaaacacacacacacacacacacacacaaaaaaaaaaaaaaaacFcycycFaaaaaaaaaaaaacacacacacaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabXbXbXbXbXbabXbXcRascScAcTcUcKcpasasasbXaaaaaaaaaaaaaaaaaaaaYbYbYbYbBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdYtLY
+aaaaaaaaacacacacacacacacacacacacaaaaaaaaaaaaaaaaaacFcVcVcFaaaaaaaaaaaaacacacacacaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabXcWcXasasasascSasasbbcPagagagbXasasasbXaaaaaaaaaaaaaaaaYbYbYbBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdYtLY
+aaaaaaaaacacacacacacacacacacacacacaaaaaaaaaaaaaaaacFcFcFcFaaaaaaaaaaaaacacacacacaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaasascYbbbbbbbbasasbXbXcLcAcZbXasasasbXaaaaaaaaaaaaaaYbBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdYtLY
+aaaaaaaaacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadaacacacacacacaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaasascYbbdbdcbbasbubXbXbXbXbXbXasasasbXaaaaaaaaaaaaaaYbBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdYtLY
+aaaaaaaaacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaadadaacacacacacacaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabacGasasagagagcSagagbXbXbXbXbXbXasasasbXaaaaaaaaaaaaYbBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdYtLY
+aaaaaaaaacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaadadadaacacacacacacaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababababXddbXbXbabXbabXbXasasasbXaaaaaaaaaaaaYbBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdYtLY
+aaaaaaaaacacacacacacacacacacacacacacacacdadaaaaaaaaaaaaadadaaadadaacacacacacacacaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaasasasasasasdebXaaaabadfdfdfbXaaaaaaaaaaaaYbBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdBdYtLY
+aaaaaaaaacacacacacacacacacacacacacacacacacdadadadadadadadadadadadaacacacacacacacaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaagagagagagagdgbXaaaabababXbXbXaaaaaaaaaaaaYbBdBdBdBdBdBdBdBdYbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZyZy
+aaaaaaacacacacacacacacacacacacacacacacacacdadadadadadadadadadadaacacacacacacacacaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababXbXagagbXbababXaaaaaaaaaaaaaaaaaaaaaaYbBdBdBdBdBdBdBdBdYbYbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNZZy
+aaaaaaacacacacacacacacacacacacacacacacacacacdadadadadadadadadadaacacacacacacacacaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabXbXdhbXaabaalaaaaaaaaaaaaaaaaaaaaaaYbBdBdBdBdBdBdBdBdYbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZy
+aaaaaaaaaaaaacacacacacacacacacacacacacacacacacdadadadadadadadadaacacacacacacacacaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalalalalalalalalalasalalalaaaaaaaaaaaaaaaaaaaaaaaaYbBdBdBdBdBdBdBdYbaacpcpcpcpcpcpcpcpcpaaaaaaaaaaaaaaaaaaaaNZ
+aaaaaaaaaaacacacacacacacacacacacacacacacacacacdadadadadadadadadaacacacacacacacaaaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalcWasasdiasdjdkasasascWalaaaaaaaaaaaaaaaaaaaaaaaaYbBdBdBdBdBdBdYbaaaacpaEdldmcpdncPdocpaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaacacacacacacacacacacacacacacacacacacacdadadadadadadaacacacacacacacacaaaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalasasasagagagasasasasasalaaaaaaaaaaaaaaaaaaaaaaaaYbBdBdBdBdBdBdYbaaaacpdpcPcPcPcPcPdocpaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaacacacacacacacacacacacacacacacacacdadadadadadadadadaacacacacacacacacaaaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalagagdqdrdqdqdqdqdqasasalaaaaaaaaaaaaaaaaaaaaaaYbBdBdBdBdBdBdBdYbaaaacpagcPcPcpdscPdocpaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaacacacacacacacacacacacacacdadadadadadadadadadadadadaacacacacacacacacaaaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaldtasdqdudududududqaNdvalaaaaaaaaaaaaaaaaaaaaaaYbBdBdBdBdBdBdBdYbaaaacpagdwbXcpcpcPcpcpaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaacacacacacacacacacacacacdadadadadadadadadadadadadadaacacacacacacacaaaaaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalasasdqdudududududqagdxalaaaaaaaaaaaaaaaaaaaaaaYbBdBdBdBdBdBdBdYbaaaacpagagaEcpcPcPdocpaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaacacacacacacacacacacdadadadadadadadadadadadadadaacacacacacacacacacaaaaaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaldtasdqdudududududqdydzalaaaaaaaaaaaaaaaaaaaaBdBdBdBdBdBdBdBdYbaaaaaacpdAagagcPcPcPdocpaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaacacacacacacacacacdadadadadadadadadadadadadadadaacdaacacacacacaaaaaaaaaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalagagdqdudududududqdydxalaaaaaaaaaaaaaaaaaaaaBdBdBdBdBdBdBdYbaaaaaaaacpagagagcpcPcPdBcpaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaacacacacacacacacdadadadadadadadadadadadadadadadadaacacacacacaaaaaaaaaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaldtasdqdudCdDdududqdEdFalaaaaaaaaaaaaaaaaaaaaBdBdBdBdBdBdBdYbaaaabbdGbbdGdHbbcpcpcpcpcpaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaacacacacacacacacacdadadadadadadadadadadadadadadaacacacacaaaaaaaaaaaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalalalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalalalasasdqdudududududqagdxalaaaaaaaaaaaaaaaaaaaaBdBdBdBdBdBdBdYbaaaadIdJdKdLagdIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaacacacacacacacacacacdadadadadadadadadadadaacacacacacacacaaaaaaaaaaaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalalalaldMalalalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalaldNdOasasdqdudududududqdPagalaaaaaaaaaaaaaaaaaaaaBdBdBdBdBdBdBdYbaaaadIagcRagagdIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaaaaaaaaaaaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaldQdRaldSaldTalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaldUasbbasasdqdudududududqaNdvalaaaaaaaaaaaaaaNZNZZyYtYtYtYtYtYtYtZyaaaadIdJdVdWagdIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaacacacacacacacacacacacacacacacacacacdadaacacacacacacacacaaaaaaaaaaaaaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalbjbjbjSebjbjalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaldUasdXdYasdqdqdqdqdqdZdqasasalaaaaaaaaaaYbZyZyZyZyYtYtYtYtYtYtYtZyNZaadIagagagagdIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaacacacacacacacacacacacacacacacacacdadadadadaacacacacacacaaaaaaaaaaaaaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalbjbjbjbjbjbjalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalalasbbasagagagasasagagasasasalaaaaaaaaYbYbBdBdBdBdBdBdZvBdBdBdBdBdZyaadIdJeaebagdIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaacacacacacacacacacdadadadaadadadacacdadadadadaacacacacacacaaaaaaaaaaaaaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalbjecbjalbjbjalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalasedasagasasasasagagaseecWalaaaaaaaaYbBdBdBdBdBdBdBdBdBdBdBdZvBdYbaabbdGbbdGbbbbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaacacacacacacacacdadadadadaadadadadadaddadadadaacacacacacacaaaaaaaaaaaaaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalbjbjefbjbjbjalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalalalalalalalalalalalalalalalaaaaaaYbYbZvBdBdZvBdBdBdBdBdBdBdBdBdYbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaacacacacacacdadadaacacacacacadadadadaddadadadaacacacacacacaaaaaaaaaaaaaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalbjbjbjbjbjegalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaYbBdBdBdBdBdBdBdBdHOBdBdBdBdBdYbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaacacacdadadadadaacacacacacacacacacacacdadadadaacacacacacacaaaaaaaaaaaaaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaalalalalalalalalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaYbBdBdBdBdBdBdBdWKWaPEBdBdBdBdYbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaacacacdadadadadaacacacacacacacacacacacacdadadadaacacacacacacaaaaaaaaaaaaaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZyBdBdBdZvBdBdZvNRWaYZBdBdBdBdYbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaacacacacacacdadaaaaaaaaaaaaaaaaaaaacacacacacacdadadadaacacacacacacaaaaaaaaaaaaaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZyZvBdBdBdBdBdWKyIxwyIPEBdBdBdYbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaacacacacacacdadaaaaaaaaaaaaaaaaaaaaaaaaaacacacdadadadaacacacacacacaaaaaaaaaaaaaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZyZyTuBdBdBdBdBdNJTWTuPpRWBdBdBdYbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaaaacacacdadadadaacacacacacaaaaaaaaaaaaaaaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaVfQsQsREOWOWOWjAjAXkyIRryIRWBdZvBdYbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaacacacacacacaaaaaaaaaaaaalalalalaaaaaaaaacacacacdadaacacacacacacaaaaaaaaaaaaaaaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZyTfSPOMPLPLPLjAjAXkyIyIyIRWBdBdBdYbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaacacacacacacaaaaaaaaaaaaalduehalaaaaaaaaaaacacacdadadaacacacacacaaaaaaaaaaaaaaaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZyTfPWTNPLPLTeBdBdNJZITuSTRWBdBdBdYbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaacacacacacacaaaaaaaaaaaaalahehalaaaaaaaaaaacacacacdadaacacacacacaaaaaaaaaaaaaaaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNLQTzbuLPLTuTuBdUtIdxvZkxvYZPmBdBdYbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaacacacacacacaaaaaaaaaaaaalaheialaaaaaaaaaaacacacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZyTuPbTuTuBdBdgwTuTuTuxvXkNSBdBdYbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaacacacacacacacaaaaaaaaaaalejdOalalalaaaaaaaaacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTuPLTrTuBdBdUIVeTuPJXkVMOJBdBdYbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaacacacacacacacaaaaaaaaaaalahahahekalaaaaaaacacacacacacacacacacacacacacacacacaaaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTuWQTrTuBdBdBdVDUeXZXZWfBdZvBdYbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaacacacacacacacacaaaaaaaaalahduduelalaaaaaaacacacacacacacacacacacacacacacacacaaaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaTuTuTuTuBdBdBdBdBdBdBdBdBdBdYbYbaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaacacacacacacacacaaaaaaaaalalalalalalaaaaaaacacacacacacacacacacacacacacacacacaaaaaaaaaaciciaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacaaaaaaaaaaciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciaaaa
aaacacacacacacacacaaaaaaaaaaaaaaaaaaaaaaaaaaacacacacacacacacacacacacacacacacacaaaaaaaaaaciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciciaaaa
@@ -2392,8 +2488,8 @@ eneqeoeoepeoepeoepeoepeoepeoeqeqeoeqeqepepeneneneneneneneneneneneneneneneneoeoeo
eneqeoeoepeoepeoepeoepeoepeoeqeqeoeoeoepepeoeneneneneneneneneneneneneneneneoeoeoeqeqeoeoererjUeSeSkDlalQlQlQlQlakDljmdmdmxljliljltltltltmykDkDmzmzmzeSeSgglRmilRPOlTmjmkmlmmmnkwlFkweSlUjNkJlmlmmojNkJlmmplmlmjNjZjZmqjSjSjNmrmrjXjXjXmsggerererewewkCmtkVlKlKlKlKlKlLlKlKlKkCkCkCkCkCkCkCkVkVkVkVkVmueteteteteteteten
eneqeoeoeoeoepeoepeoepeoepeoeqeqeoeoeoeoepepeoenenmvmwmwmveneneneneneneneneojaeoeqeqeoeoererjUeSgpkDkDkDkDkDkDkDkDljmdmdmdljliljljljljljljlhkDeseseseSeSggmAmBmAggkwmCmDmDmDmDlFlFmEeSgpjNmFmGmHmIjNkJlmmJmJmKjNjZjZmqjSjSmLjXjSjSjSmMjNmNererereSewkCnbkClKlKlKlLlLlLlKlKlKkCkVkVkVkVmPmQkVlLmRmSkVmueteteteteteteten
eneoeoeoeoeoeoeoeoeoepeoepeoeoeqeoeoiVeoepepepeoenmTgzgzmTeneneneneneneneoeoeoeoeqeoeoeoererjUeSeSkDnjnknlnjnmnmkDnnmdmdmdljlinoltnoltnoltnokDnpnpnpggeSeSeSeSmUkwkwmDmVlTmDmWkwmXkweSmYlGlmlmlmlmlGkJlmjZmpkJjNjNjNjNmZjSkQkQkQnanakQkQmNererereSewkVnbkVlKlKlKlLlKlKlKlKlKkCkVmbmbkVmPncndlLnenfkVmueteteteteteteten
-eneoeoeoeoeonggMgMeoeoeoepeoeoeoeoeoeogxgxepepgxgxnhnininheneneneneneneoeoeoeoeoeoeoeoeoererjUeSeSkDltlQlQltnGnGkDnHljljnIlhlilililililililinJggnKggggeSeSkwkwlTlTkwnqnrmDmDmDnskwkweSgpjNkJkJkJntjNnunvjZmpkJjNnwnxjXnyjSkQlInzlIlIlIkQmNererereSewkVnbnAnblLlLlLlKlKlKkVlKkVkVnBnBnBncncnClLlLnDkVmueteteteteteteten
-eneoeoeoeoeoeogMgMgMReeoeoeoeoeoeoeoeogxeoepepeoeomvnEnFmveneneneneneneoeoeoeoeoeoeoeogMererjUeSeSkDltlQlQltnGnGofmdmdljnomdmdnoognoognoognokDnpnpnpggeSnLkwnMnNnOnPmDmDmDmDmDkwlFkweSesjNnQnRkJnSjNjNjNjNjNjNjNnwnxjXjSjSnTjXlIlIlInUkQmNererereSewkVnbkClKlLlKlKlKlKlKlKlKkVkVnVnVkVnWnckVnDlLnXkVmueteteteteteteten
+eneoeoeoeoeonggMgMeoeoeoepeoqUeoeoeoeogxgxepepgxgxnhnininheneneneneneneoeoeoeoeoeoeoeoeoererjUeSeSkDltlQlQltnGnGkDnHljljnIlhlilililililililinJggnKggggeSeSkwkwlTlTkwnqnrmDmDmDnskwkweSgpjNkJkJkJntjNnunvjZmpkJjNnwnxjXnyjSkQlInzlIlIlIkQmNererereSewkVnbnAnblLlLlLlKlKlKkVlKkVkVnBnBnBncncnClLlLnDkVmueteteteteteteten
+eneoeoeoeoeoeogMgMgMReNGOUeoeoeoeoeoeogxeoepepeoeomvnEnFmveneneneneneneoeoeoeoeoeoeoeogMererjUeSeSkDltlQlQltnGnGofmdmdljnomdmdnoognoognoognokDnpnpnpggeSnLkwnMnNnOnPmDmDmDmDmDkwlFkweSesjNnQnRkJnSjNjNjNjNjNjNjNnwnxjXjSjSnTjXlIlIlInUkQmNererereSewkVnbkClKlLlKlKlKlKlKlKlKkVkVnVnVkVnWnckVnDlLnXkVmueteteteteteteten
ennYnYnYnYnZoaobocoaododododododododobnZeoeoeoeoeoeogMgMeogxeoeoeoeoeoepepepepepgXeoeooeererjUeSeSkDnjltltnjnjoGkDmdmdljltltltoglQlQlQlQlQogkDesesesggeSeSohoioioinPmDmDojokolkwomkweSesjNjNjNjNjNjNewesononoojNjNjNjNjSjSkQjXlIlIlIopkQoqererereSewkClLlKlKlLlKlKkVkCkCkCesesewkVkVkVkVorkVkVorkVkVkVkVeteteteteteten
eneoeoeoeoosotouotovowoxoyozoAoBoCoDoEoseoeoepepeoeogMgMeogxgXepepepepepepoFepepepeoeogMererjUeSeSkDkDkDkDkDkDkDkDmdmdljltlQltoglQlQlQlQlQogkDoVoVoVggeSgpkwoioioHkwlTlTlTlTlTkwkwkweSesesesewewewewesesononoIjNoJlqjXjSjXkQjXlIlIlIoKkQggererereSewkClLlLlLlLlKkVkCkVkVkVewewewkYkYkYkVlLoLlLlLoMoNoOkVeteteteteteten
eneoeoeoeooPoQoRototoSoToToToTowozowowoPeoepepeoeoeogMgMeogxepepoUepgXepepepepepepeqeqgMererjUeSeSkDkDkDljljleljplmdmdljltltltoglQlQlQlQlQogmheSeSeSeSeSeSlTkwohkwkwkwoWkwkwkwkwkwggeSeSggjMoXoXoXoXoXoXoXggggjNoYjXjXjXlnkQlIoZlIoZpakQpbererereSewesesesesesesesewewpcpcpcewewkYkYkYkVlLlLlLlLlLlLpdkVeteteteteteten
@@ -2402,33 +2498,33 @@ ennYeoprnYnZoapsobnZoaodpsobnZptnZoaobnZeoeoepepeoeogMgMeoeoepepeoeqeqeqeqeqeqeo
eneoeoepeppAeqeqhlpBpCpDeoeopFgMeopGqUeoeoeoepepepeogMgMeogxeoeoeqeqeoeoeoeoeoeoeqiVeoeoererjUeSkvkDkDkDpIlilimdkDkDFqkDkDpQagagpRagagagalalaloXoXoXeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSpyewkYkVlLlLpKpLpMpNpOkVeteteteteteten
eneoeoepepeqeqeqeqeqeoeoeoeogMgMeoeoeoeoeoeoeoepQWepgMgMeoeoeoeoeojaeoeoeoeoeoeoeqeoeoeoererjUeSeSkDkDkDkDkDkDkDalpYbRpZqaagahahahahahbmalagahahahaleSeSeSlTkwkwkwpUpUpUpUkwkwkwkwggeSeSggggggggggggggggewewpVewpVewpVewewesggewewewewewewewpWpXpWewewewewewpWpWewewewpXewewewpWewewetewewewewewewkVkVkVeteteteteteten
eneoepepepeoeoeoepepeoeoeogMgMgMeoeoeqeqeqeqeqeoepepgMeoeogxeoeoeoeoeoeoiVeoepepeoeoeoeoererjUeSeSalHQagqpqqqrqsalbRqtpZalagahahahbmahahqaagahquahaleSeSeSkwqbDTDTqdqdqdqdDTqeqfkwkwewewewewewewewewmNmNpVerererererererpVeSeSeweReRqgiSiSqhpXpXpXqhewqiqjqkqipXqiqlqipXqmqnqmpXeweweweweweweweweweteteteteteteteteten
-eneoepepepepeoepepeoeoeogMgMgMeoeqeqeqeoeoeqeoeoepepgMeoeogxeoeoeoepeoepepepepeoiVqoqoeoererjUeSeSalqGasasasasasqaqHqHqIalalalahbmahbmbmalagahqJahaleSeSgpkwDTDTDTqdqdqdqdDTDTDTDTkwewqvqwqxqyqxqxqxmNqzewerererererererewqAeSeweReReRiSeRpXpXpXqgeRiOqiqBqCqipXqiqDqipXeSeSeSpXoXoXoXoXoXoXoXeweweteteteteteteteteten
+eneoepepepepeoepepeoeoeogMgMgMeoeqeqeqeoeoeqeoeoepepgMeoeogxeoeoeoepeoepepepepeoiVqoqoeoererjUeSeSalqGasasasasasqaqHqHqIalalalahbmahbmbmalagahqJahaleSeSgpkwRwDTDTqdqdqdqdDTDTDTDTkwewqvqwqxqyqxqxqxmNqzewerererererererewqAeSeweReReRiSeRpXpXpXqgeRiOqiqBqCqipXqiqDqipXeSeSeSpXoXoXoXoXoXoXoXeweweteteteteteteteteten
eneqepeoepepeoeoeoeoeogMgMgMeoeoeqeqeqiUeoeqiVeoepeogMgMeoqEeoeoeqepepepepepepeoqFeoeoeoererjUeSeSbaqVasaseJaUQvalpZqWqXalqYalqZraagagrbalagagahahaleSeSeSkwDTDTDTqdqdqdqdqKDTDTqLkwewqxqxqxqMqxqNqxmNmNpVerererererererpVeSeSeweRqgiSiSqhpXqOpXiSiSiOpXpXpXpXpXpXpXfvpXpXpXpXpXoXqPeSqQqRqSnpqjeweteteteteteteteteten
eneqepepepepeqeogMgMgMgMgMgMeoeoeoeqeqeqeqeqeoeqeqeqgMgMeoqEgxeoqTeqeqeogXepepepqFeoeoPAererjUeSeSbaalalalalalalalalalalbXrrbXalalalalalalalalalalaleSeSeSrcDTDTrdrererererfDTDTrgkwewrhrirjqxrhrirkewggewerererererereresrleSeweRiSqgrmpXpXpXpXpXqgewfvpXqifvqBqipXpXpXpXpXqiqioXerrnroeSeSrppXeweteteteteteteteteten
eneqeqepepeoeqeoeogMgMgMgMgMgMgMeoeoeqeoeoeqeqeqeqeqgMgMeoeorqeoeoeoeqeqeoeoeoeoeoeoSRPwLGLGgYeSeSggOrggrBOXgggcggggggOrggeSggggggggggggOrggggggggggeSeSeSkwDTDTrdrererererfDTDTrgkwewqxqxqxqxqxqxqxeweSpVerererererererewrseSeweRiSeRqipXrtrupXpXeRrwrxpXfvqirmfvpXqirxqipXqDqjoXeSeSeSeSeSnppXeweteteteteteteteteten
eneqeqeoepepeqeqeqeqeogMgMgMgMgMgMgMgMgMgMgMgMgMgMgMgMgMgMgMgMgMgMgMgMgMgMgMgMrygMgMryrzeSeSrAeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSkwqeDTrdrererererfDTDTqekwewrDqxrErFrjqxrGeweSewerererererererpVggeSeweRqgeRqhpXpXpXpXpXqiewfvpXqiqirxqipXqiqiqipXqiqioXrooXoXoXoXoXpXeweteteteteteteteteten
-eneqeqeoeoeoeqeqeqeqeoeoeoeogMgMgMgMgMgMgMgMgMgMgMgMgMgMgMgMgMgMgMgMgMgMgMgMgMrygMgMryrzeSeSrAeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSkwrIDTrJrKrKrKrKrLqeqeqekwewoXqxqxqxqxqxrMeweSpVererererererereweseSeweReReRiSqipXrNpXqhrmiOfvpXfvpXpXpXpXpXpXpXpXpXpXpXpXpXpXpXpXpXpXeweteteteteteteteteten
+eneqeqeoeoeoeqeqeqeqeoeoeoeogMgMgMgMgMgMgMgMgMgMgMgMgMgMgMgMgMgMgMgMgMgMgMgMgMrygMgMryrzeSeSrAeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSkwrIDTrJrKrKrKrKrLqeqeZVkwewoXqxqxqxqxqxrMeweSpVererererererereweseSeweReReRiSqipXrNpXqhrmiOfvpXfvpXpXpXpXpXpXpXpXpXpXpXpXpXpXpXpXpXpXeweteteteteteteteteten
eneoeoeneneneoeqeqepepepepepepeoeoeoeogMgMeqeqepepeoeoeogMgMgMgMgMgMgMgMgMgMgMgMgMryryrzeSeSrAeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSkwkwkwkwkwkwkwoWkwkwkwkwkwewoXqxqxqxqxqxriewggewererererererereweskxewrPeReRiSqhpXpXpXqgeRiOfvpXqipXfvqBpXpXqBqiqiqirQewfvrRfvqjrRfveweweteteteteteteteteten
eneneoeneneneneneoeoepepepepepepepepeoeoeqeqepepepepeoeogMgMgMgMeoeoeoeoeoeoeoeoeoeoPBQDMbMbRTggggggeSggggrSeSeSggggggggggggggggggeSggggrTggrUggggggeSeSeSeSggeSeSeSeSeSeSeSeSeSeSggggqxqxqxrVrWqxrXeweSewererererererereweseSewpXpXpXrYpXpXpXpXeRrmewfvpXqBpXrZfvpXpXqieReRqiqioXeweweweweweweweweteteteteteteteteten
eneoeoeneneneneneneoepepepepepepepeoeoeqeqepepepepeoeogMgMgMgMqUeoeoepepepepeoqFeoeoeoPAererjUsasbhXscsdsbsesfsfststststVNststststeSkwsgkwkwshkwsgkweSeSsisjsksksksksjsksksksksjewewewoXqxqxewewewewewslewererereweweweweweseSewpXpXqiqhiSqgiSiSqgeRewewpXewsmfvfvpXpXqBeRfvqDqjoXeteteteteteteteteteteteteteteteteten
eneoeneneneneneneneoeoeoeoeoepepepepeqeoepepepepepsneogMgMgMgMeoeoepepepepepepsoepgXeoeoererjUsbspsqsrsrsssbZjsfsfhThTsbfLTxtqststeSkwsukwkwkwkwshkweSeSeSsvswsxsyszsAsBsCsDsEsFewewewoXeSggiNsGrCsHersIespJpVeseseSiZeSesesewewpXpXpXqgqgiSqgiSiSfvewsJpXsKpXrxfvpXpXqiqifvqiqioXeteteteteteteteteteteteteteteteteten
enepeoeneneneneneneoepeoeosLeoepeoepeqepepeoeoeoepeoeogMgMgMgMeoeqepepepepepepsMsNsMsMeoererOmsbsOsqsrsrsPsbsfsfsfhThTtetctctqvksbgpkwshshshshshshkweSeSeSsUsVsWsVsXsAswsDsYsZsFewewewggeSggeSeSeSsHertaeSeSeSeSggggggggewewewewewewpXpXewewewewewewewpXpXpXpXpXpXpXpXfveweweweweweteteteteteteteteteteteteteteteteten
-enepepeoeneneneneoepepepeoeoeoepepepeqepeoeoeoepepeoeogMgMgMeoeoeqepepepepgXepepepeoeoeoererTCsbtbtctdtdtdtesfsfsbscscsbtcvDtqHJsbthkwshshshshshshkweSeSeSsUsVsVsVtisAswswswtjsFeweweSggggggggggeSeStktleSeSeSeSeSeSeSeSewqgqgeRrRtmpXpXtmeRrReRrRewqjpXqiqirZfvfvpXpXpXeSeSpXtneweteteteteteteteteteteteteteteteteten
+enepepeoeneneneneoepepepeoeoeoepepepeqepeoeoeoepepeoeogMgMgMeoeoeqepepepepgXepepepeoeoeoererTCsbtbtctdtdtdtesfsfsbscscsbtcvDtqtcsbthkwshshshshshshkweSeSeSsUsVsVsVtisAswswswtjsFeweweSggggggggggeSeStktleSeSeSeSeSeSeSeSewqgqgeRrRtmpXpXtmeRrReRrRewqjpXqiqirZfvfvpXpXpXeSeSpXtneweteteteteteteteteteteteteteteteteten
eneoepeoeneneneoeoepepeoeoeqeqepepeqeqepeogXeoepeoeoeogMgMgMeoeqeqeqeoepepepepeoepeoeqeoererjUsbtotctptqtqsbsfRksbtctctbtctctctcsbeSkwshshshshshshkweSeSeSsjtttuswtvtwtvswswtxsFeweweSeSeSggggeSeSeSeSeSeSkwkwkwkwkweSeSeweReReReRfvpXpXeReRfvfvqgewqipXqDqifvfvfvpXpXfvewtyfvggeweteteteteteteteteteteteteteteteteten
eneoepepeoeneoeoeoeoeoeoeqeqeqeqeqeqeoepepeoepepeoeoeogMgMgMeoeqeoeqeqepepepepepepeqeqeoererjUsbtztctdtAtqsesfsfsbtctctcvLsrvMvNsbkykwshshshshshshkweSeSgpsjsksksksksksksktDsksjeweweSeSeSeSeSeSeSeSeSeStEtFDTDTtHkwtFeSeweReReReRfvpXpXeRfveReRrRewqipXqiqifvpXfvpXpXfvggeSpXeSeweteteteteteteteteteteteteteteteteten
eneoeoepepeoeoeoeoeoeoeoeoeoeqeqeqeqeoeoeoepepeojaeoeogMgMgMeoeqeoeoeqeqepepepeoeoeqeqeoererjUsesbsbsbsbsesesfsfsbtctctctcsrsrvVsbkxkwshshshshshshkweSeSeSsFtJswtKtLtMtNsyswtjsFeweweSeSeSeSeSeSeSeSeSeSuvtODTDTtHtHtFewewfveReRfvpXpXpXfveReReRfvewqBpXfvfvfvfvfvpXpXfvggfvpXtPeweteteteteteteteteteteteteteteteteten
-eneneneoepepeoepepeoepepepeoeoeoeqeqeoeoeoeoeoeoeoeoeogMgMgMeoeqeqgXeoeqeqeoeoeoeoeqeoeoererTCstststststststsfRksbtotztctcsrsrsPsbeSkwkwkwkwkwkwkwkweSeSeStDswswswswtVswswswswsFeweweSeSeSeSeSeSeSeStFtFtFtFDTDTDTDTtFeweReReRfvpXpXpXpXpXpXeRfveRewqipXtWqipXpXfvpXpXfvggpXpXggeweteteteteteteteteteteteteteteteteten
+eneneneoepepeoepepeoepepepeoeoeoeqeqeoeoeoeoeoeoeoeoeogMgMgMeoeqeqgXeoeqeqeoeoeoeoeqeoeoererTCstststststststsfRksbtotztctcsrsrsPsbeSkwkwkwkwkwkwkwkweSeSeStDswswswswtVswswswswsFeweweSeSeSeSeSeSeSeStFtFtFtFDTDTDTDTtFeweReReRfvpXpXpXpXpXpXeRfveRewYypXtWqipXpXfvpXpXfvggpXpXggeweteteteteteteteteteteteteteteteteten
eneneneoeoepepepeoeogXepeptXtXtXtXtXtXtXpstXpstXpstXtXgMgMgMeoeqeqeqeqeqeqeqeoeoeoeoepeoererjUsttgsQsRsQtfstsfsfstststststststststggggTIeSeSeSeSZneSeSeSeSsFswswsjswzfswsjswswsFeweweSeSeSeSeSeSeSeStFudmXtHlFDTMhuetFeweRfveRfvpXpXrReReRpXpXpXpXpXpXpXpXpXpXpXpXpXpXpXggpXeSggeweteteteteteteteteteteteteteteteteten
eneneneoeoeoepepeoeoepepeptXufuguhuitXujukukukulukumtXtXgMgMeoqUeqeqeqeqeqeqeogXeoepepepererjUsttfsQsQsQyWstsfsfsfRDsfsfsfyjsfRDyjeStHuquququruquqtHeSeSeSusswswswswtVswuuswttsFewewewkveSeSeSeSeSeSRFlFlFlFlFlFDTuwtFfveRfvfvpXpXfveReRfvfvfveReRewfvfvfveReReReRfvfvpXewuxeSggeweteteteteteteteteteteteteteteteteten
-eneneneneoeoeoepeoeoepepeppsuyuyuyuyuzuAuAuBuCuDuEukuFtXgMgMeoeoeqeoeoeqeqeoeoeoeoepepepererjUststststtsststZjsfHwHxHxHxHxHxHxHxHzgguquMuNuOuPuQuRuqeSeSeSsFswuSuTuUuVtVswswuWsFeweweweweSeSeSeSeSeStFLMTStHlFWqtHTytFeReRfvpXpXpXfveReReReRfvrPeRewrRrRrRfvrReRrRfvrRpXpXpXfvtPeweteteteteteteteteteteteteteteteteten
-eneneneneneneoeoeoeoepepeptXuYuyuyuZtXuAuAukvavbuEuktXtXgMgMeoeoeoepepepepepeoeoeoepepeoererjUsttByDsQsQsQsttUsfteIsIstctctctceIHNeSuquPuPuPuPuPuPWTyueSgpsAvesksksksjsFsFsFsFsjOrggeSeSeSeSeSeSeSeStFtFtFtFtFtFtFtFtFiOiOfvpXpXfvpWiOiOiOpWpWpWpWewpWpWpWpWpWpWpWpWpWpWeweweweweweweteteteteteteteteteteteteteteteten
-eneneneneneneneoeoeoeoeoeotXtXtXtXtXtXtXtXukvfvgukvhtXeogMgMeoeoeogXepepepepeojaepepeoeoererjUstsQsQsQsQsQtIsfsfHNIsIssQIuIvtcIwHNeSuquPuPtHuquququqeSeSeSsAswswswucsFvlzjsFsFsFggeSeSeSeSeSeSeSeSeSeSeSeSiNeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSiNeSeSeweteteteteteteteteteteteteteteteten
-eneneneneneneneoeomvvovpvotXvqvqvrvstXvtvtuAuAuAuAuApseogMgMeoepeoeoepepepeoeoeoepepgXeoererTCststtctctctcstsfsfHNIsHAsQsQsQtcIBHNgpuqvvvvtHvwvxvyuqeSeSeSsAvzswswswtDvlvnsFsFsFeSeSeweweSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeweteteteteteteteteteteteteteteteten
-eneneneneoepepepepvAeoeoeotXvqvqvrvBvCukukukukukukujtXeogMgMepepeoeoepepepeoeoeoeoeoeoeoererjUsttctctctctTstZjsfHNIDIsIEsQIFtcsQHNeSuqvvvvvFvvvvvvureSeSeSsAvGtuswswsjsFsFsFsFsjeSeSewewewewewWpewewewewewewewewewewewewewewewWpeweweweweweweweweweweweweweweweweweweweweweweweweweweteteteteteteteteteteteteteteteten
-eneneneoepeqeqeqeqmTeoeovHtXvqvqvIvJtXtXpstXvKtXpstXtXeogMgMepepeoeoeoeqeqeoeoeoeoeoeoeoererjUstuatctcsttcstsfsfHNIsIssQVOstyktqHNeSuqvvvvtHvOvOvOuqeSeSeSvPsAsAsAsAsAeRfvYxeReReSgpeweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweteteteteteteteteteteteteteteteten
-eneneneoepeqeoeqeqmTeoeoeotXvQvQvRvRtXgMgMgMvSeoeovTeoeogMgMepeoeoeoeqeqsneoeoepepepepeoererjUstuntcuostubstsfsfHNIDIssQsQsttqtqHNeSuqvWvvuqvvvxvXuqeSeSeSkeggggOXggggeSeSeSeSeSeSeSpbeweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweteteteteteteteteteteteteteteteten
-eneneoepeqeqeqeqeomTeoeoeotXvqvqvqvqtXgMvYgMeoeovZeoeoeogMgMepqUeoeoeqeoeoepepgXepepepeoererTCstuIuJuKstupstsfsfHNIsIssQsQsttqtqHNeSuqtHvvvvvvvvwbuqeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweteteteteteteteteteteteteteteteten
-eneoeqeqeqeqeqeqeowceoeoeotXvqvqvqvqtXgMgMgMeowdweeoeoeogMgMepepeoeoeoepepepepepepepeqeoererjUstststststststsfsfJaHxHxHxHxHxHxHxJbeStHuquququququqtHeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweteteteteteteteteteteteteteteteten
+eneneneneoeoeoepeoeoepepeppsuyuyuyuyuzuAuAuBuCuDuEukuFtXgMgMeoeoeqeoeoeqeqeoeoeoeoepepepererjUststststtsststZjsfHwHxHxHxHxHxHxHxHzgguquMuNuOuPuQuRuqeSeSeSsFswuSuTuUuVtVswswuWsFeweweweweSeSeSeSeSeStFLMTStHlFWqtHTytFOAeRfvpXpXpXfveReReReRfvrPeRewrRrRrRfvrReRrRfvrRpXpXpXfvtPeweteteteteteteteteteteteteteteteteten
+eneneneneneneoeoeoeoepepeptXuYuyuyuZtXuAuAukvavbuEuktXtXgMgMeoeoeoepepepepepeoeoeoepepeoererjUsttByDsQsQsQsttUsfteIsIstctctctceIHNeSuquPuPuPuPuPuPWTyueSgpsAvesksksksjsFsFsFsFsjOrggeSeSeSeSeSeSeSeStFtFtFtFtFtFtFtFtFiOiOpWpXpXpWeTfTfTWCeweweweweweweweweweweweweweweweweweweweweweteteteteteteteteteteteteteteteten
+eneneneneneneneoeoeoeoeoeotXtXtXtXtXtXtXtXukvfvgukvhtXeogMgMeoeoeogXepepepepeojaepepeoeoererjUstsQsQsQsQsQtIsfsfHNRSIssQIuIvtcIwHNeSuquPuPtHuquququqeSeSeSsAswswswucsFvlzjsFsFsFggeSeSeSeSeSeSeSeSeSeSeSeSiNeSeSeSeSeSeSeSeSeSeSeSeSsHerQQewewewewtHtHtHtHtHtHtHtHtHeweweweweweweweweteteteteteteteteteteteteteteteten
+eneneneneneneneoeomvvovpvotXvqvqvrvstXvtvtuAuAuAuAuApseogMgMeoepeoeoepepepeoeoeoepepgXeoererTCststtctctctcstsfsfHNIsHAsQsQsQtcIBHNgpuqvvvvtHvwvxvyuqeSeSeSsAvzswswswtDvlvnsFsFsFeSeSeweweSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSsHerQQewewewewtHYqQtSiQGtHRCQktHeweweweweweweweweteteteteteteteteteteteteteteteten
+eneneneneoepepepepvAeoeoeotXvqvqvrvBvCukukukukukukujtXeogMgMepepeoeoepepepeoeoeoeoeoeoeoererjUsttctctctctTstZjsfHNIDIsIEsQIFtcWhHNeSuqvvvvvFvvvvvvureSeSeSsAvGtuswswsjsFsFsFsFsjeSeSewewewewewWpewewewewewewewewewewewewewewewWpewRaVXVXTmewewewewtHOaOaSiSiXASiSitHeweweweweweweweweteteteteteteteteteteteteteteteten
+eneneneoepeqeqeqeqmTeoeovHtXvqvqvIvJtXtXpstXvKtXpstXtXeogMgMepepeoeoeoeqeqeoeoeoeoeoeoeoererjUstuatctcsttcstsfsfHNIsIssQVOstyktqHNeSuqvvvvtHvOvOvOuqeSeSeSvPsAsAsAsAsAeRfvYxeReReSgpewewewewewewewewewewewewewewewewewewewewewewewewewewewewewewewtHSiSiSitHtHinQXtHeweweweweweweweweteteteteteteteteteteteteteteteten
+eneneneoepeqeoeqeqmTeoeoeotXvQvQvRvRtXgMgMgMvSeoeovTeoeogMgMepeoeoeoeqeqsneoeoepepepepeoererjUstuntcuostubstsfsfHNIDIssQsQsttqtqHNeSuqvWvvuqvvvxvXuqeSeSeSkeggggOXggggeSeSeSeSeSeSeSpbewewewewewewewewewewewewewewewewewewewewewewewewewewewewewewtHOvSiUQOPtHinUptHeweweweweweweweweteteteteteteteteteteteteteteteten
+eneneoepeqeqeqeqeomTeoeoeotXvqvqvqvqtXgMvYgMeoeovZeoeoeogMgMepqUeoeoeqeoeoepepgXepepepeoererTCstuIuJuKstupstsfsfHNRSIssQsQsttqtqHNeSuqtHvvvvvvvvwbuqeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSewewewewewewewewewewewewewewewewewewewewewewewewewewewewewewewtHtHtHtHtHtHintHtHeweweweweweweweweteteteteteteteteteteteteteteteten
+eneoeqeqeqeqeqeqeowceoeoeotXvqvqvqvqtXgMgMgMeowdweeoeoeogMgMepepeoeoeoepepepepepepepeqeoererjUstststststststsfsfJaHxHxHxHxHxHxHxJbeStHuquququququqtHeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSeSewewewewewewewewewewewewewewewewewewewewewewewewewewewewewewewewtHtHtHtHtHtHtHeweweweweweweweweweteteteteteteteteteteteteteteteten
eneoeqeqeqeoeoeoeomvmvwfmvtXtXtXtXtXtXgMgMwgeoeoeovZeogMgMgMeoepeoeoepepepepepepepeqeqeoererXuwhwhQYwhWiwhwhwhwhwhwhwhQYwhwhwhwhwhwhwhwhwhQYwhwhwhwhZLrTrTrTOcwhwhwhwhwhwhwhwhwhwhwhwheweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweweteteteteteteteteteteteteteteteten
engMgMgMgMgMgMgMgMgMgMgMgMgMgMgMgMgMgMgMgMgMgMgMgMgMgMgMgMgMeoepeoeoeoeoepepepepeqeqeoeoererererererererwierererererererererererererererererererererLKeSeSeSyMerererererererererererererererererererererererererererererererererererererererererererererererererererererererererererenenenenenenenenenenenenenenenenen
engMgMgMgMgMgMgMgMgMgMgMgMgMgMgMgMgMgMgMgMgMgMgMgMgMgMgMgMgMeoeoeoeogXeoeoeqeqeqeqeqeoeoererererererererwierererererererererererererererererererererLKeSeSeSyMerererererererererererererererererererererererererererererererererererererererererererererererererererererererererererenenenenenenenenenenenenenenenenen
@@ -2488,8 +2584,8 @@ eneneneneneneneneneneneneneneneneneneneneneneneoeoeqeqeogMgMeojaeoeoenenenenenen
eneneneneneneneneneneneneneneneneneneneneneneneoeoeoeoeogMgMeoqUeoeneneneneneneneneneneogzgzeoenenenenenenenenenenenenenenenenenenenenepepeqeqepepgMgMephleqepepenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenen
eneneneneneneneneneneneneneneneneneneneneneneneneneoeoeogMgMeoxueneneneneneneneneneneneogzgzeoenenenenenenenenenenenenenenenenenenenenepepeqeqepepgMgMepeqeqepepenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenen
eneneneneneneneneneneneneneneneneneneneneneneneneneneoeogMgMxueneneneneneneneneneneneneogzgzeoenenenenenenenenenenenenenenenenenenenenepepepepepeogMgMepepeqepepenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenen
-enenenenenenenenenenenenenenenenenenenenenenenenenenenxvxwxwxueneneneneneneneneneneneneogzgzeoenenenenenenenenenenenenenenenenenenenenepgXeoepepeogMgMeoepeogXepenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenen
-enenenenenenenenenenenenenenenenenenenenenenenenenenenenIdIdeneneneneneneneneneneneneneogzgzeoenenenenenenenenenenenenenenenenenenenenenepeoeoeoeogMgMeoeoeoepepenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenen
+eneneneneneneneneneneneneneneneneneneneneneneneneneneneogMgMxueneneneneneneneneneneneneogzgzeoenenenenenenenenenenenenenenenenenenenenepgXeoepepeogMgMeoepeogXepenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenen
+enenenenenenenenenenenenenenenenenenenenenenenenenenenengMgMeneneneneneneneneneneneneneogzgzeoenenenenenenenenenenenenenenenenenenenenenepeoeoeoeogMgMeoeoeoepepenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenen
xxeneneneneneneneneneneneneneneneneneneneneneneneneneneneneneneneneneneneneneneneneneneneneneneneneneneneneneneneneneneneneneneneneneneneneoeoeoeoSzSzeoeoeoenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenenen
"}
(1,1,3) = {"
@@ -2541,9 +2637,9 @@ xyxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxAxAxA
xyxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxAxAxAxAxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBAjxBAjxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBjNAkjXjXAljNkJAmkJkJAnkJjNxBxBxBxBxBzIzLzLQCQCzLzLfJzVApAqRBAqApzVzPzPzPzPzOApAsApzOApAtApzIxzxzxzxzxzxz
xyxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxAxAxAxAxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBAuAuAuAuAuAuAuAuAuAuAujNAvjXjXAwjNAxlmkJAykJkJjNxBxBxBxBxBzIAzzPAAAAAAzPzOAqAqABACADAqAqzOAAAAAAAAzVAqzVzOzVAqzVzIxzxzxzxzxzxz
xyxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxAxAxAxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBAuAEAFAGAuAEAFAGAuAuAujNAHjXjXAIjNAJlmAKjZAKALjNxBxBxBxBzEzIAAAAAMANAfAAzPAOAOAPAQARAOAOzPASAMATzPzVAqzVzPzVAqzVzFxzxzxzxzxzxz
-xyxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxAxAxAxBxBxBxBxBxBxBBeBfBfBfBgBfBfBfBfBfBfBgBfBfBfBfBexBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBlTkwkwAUkwlTAVAVjNjNAWjNjNjNjNjZAXAXAXjNAYjXjXlmjNAJAKAKAZAKBajNxBxBxBxBzEzIzVzVzVzVzVzVBbzVzVzVAqzVzVzVzVzVzVzVzVzVAqzVBczVAqBdzIxzxzxzxzxzxz
+xyxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxAxAxAxBxBxBxBxBxBxBBeBfBfBfBgBfBfBfBfBfBfBgBfBfBfBfBexBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBlTkwkwAUkwlTAVAVjNjNAWjNjNjNjNjZAXAXAXjNAYjXjXlmjNAJAKAKAZAKBajNxBxBxBxBzEzIzVzVzVzVzVzVBbzVzVzVAqzVzVzVzVzVzVzVzVzVAqzVBczVAqzVzIxzxzxzxzxzxz
xyxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxAxAxAxAxBxBxBxBxBxBxBBfBtBuBvBwBxByBfBzBABBBBBfBCBDBfBfBfBgBfBexBxBxBxBxBxBxBxBxBxBxBxBxBkwkwlFBhBiBjkwAVAVjNlmlmlmBklmBljNAXAXAXjNkijXjXlmBmAKlmBnlmlmkLjNxBxBxBxBzEzIBoBpBpArBoBoBoBqBrBsAqBqBrBsBoBoBoBoBoBoAqBoBoBoAqBozIxzxzxzxzxzxz
-xyxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxAxAxAxAxBxBxBxBxBxBxBBfBPBQBPByBRByBSBBBBBBBBBTBTBUBfBVBWBXBYBfJqxBxBxBxBxBxBxBxBxBxBlTkwkwkwBEBFBGlFkwAVAVjNlmBHkLlmlmBHjNjNjNjNjNBIjXjXlmjNAKlmBJlmlmlmjNxBxBxBxBzEzHAqBpBpBKAqBLAqBMBNBOAqBMBNBOAqAqAqAqAqAqAqAqAqAqAqAqzHxzxzxzxzxzxz
+xyxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxAxAxAxAxBxBxBxBxBxBxBBfBPBQBPByBRByBSBBBBBBBBBTBTBUBfBVBWBXBYBfJqxBxBxBxBxBxBxBxBxBxBlTkwkwkwBEBFBGlFkwAVAVjNlmBHkLlmlmBHjNjNjNjNjNBIjXjXlmjNAKlmBJlmlmlmjNxBxBxBxBzEzHTGBpBpBKAqBLAqBMBNBOAqBMBNBOAqAqAqAqAqAqAqAqAqAqAqZizHxzxzxzxzxzxz
xyxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxAxAxAxAxBxBxBxBxBxBxBCdBPBPCeCfCgChBSBBBBBBBBBfCiCjBfBVCkClBYCmBfxBxBxBxBxBxBxBxBxBxBkwBZBZkwlFlFlFlFkwAVCajNjNjNjNCbjNjNjNjNkLjNjNjNjNjNjNjNjNjNjNjNCcjNjNxBxBxBxBzEzIApBpBpArApApApBqBrBsAqBqBrBsApApApApApApApApApApApApzIxzxzxzxzxzxz
xyxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxyxyxyxyxyxyxyxyxyxyxyxyxyxyxAxAxAxAxAxBxBxBxBxBxBxBBfBPBPCCCDByByBfBBBBCECFBfBfBfBfCGBBBBBBBBCHxBxBxBxBxBxBxBxBxBxBkwCnCnlTkwCoCokwkwAVCaCpCqjNlmCrCsCtCulmlmjNjNCvCwCwCxjNkJCykJkJkJkJjNxBxBxBxBzEzIzVzVzVzVzVzVzVzVzVzVAqzVzVzVzVzVCzzGCAzGzGzGCBzGzGzGCzxzxzxzxzxzxz
xyxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxyxyxyxyxyxyxyxyxyxyxyxyxyxyxAxAxAxAxAxBxBxBxBxBxBxBBfCYByByByByCZBfBfDaBfBfBeDbDbBfDcBBBBBVBWBfxBxBxBxBxBxBxBxBxBxBkwlFlFCIlFlFlFlFkwAVCalmlmCJlmCKCLCMCulmlmjNjNCvmpnwCNjNCOCOCOCOCOCPjNxBxBxBxBzEzICQCQCQzPAfAfAfzPCRzVAqzVCRzPzVzVzICSlLlLCTCUCVCWCTCXzIxzxzxzxzxzxz
@@ -2558,7 +2654,7 @@ xyxAxAxAxAEMFhFhFhGeFlFkFlFjFlFlFlFlGfEMxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxA
xyxAxAxAxAELEMEMGnEMEMEMEMGoEMEMEMGoEMELxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxBxBxBxBxBxBxBBfBSGxGyBfBfBfBfBfBfGzBfBfBfBfBfBSBSBSBfGABfBfBfBexBDSxBxBxBxBxBHlxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBGsGtGtGtGtGuGtGvGtGtGwGwxDxzxzxzxzxz
xyxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxBxBxBxBxBxBxBBfBSGxGyBfGDGDBfGEBBBSBSGDBfBSBSBSBSBSBSBSBSBSGFBfDXGBxBxBxBxBxBHlxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBGsGtGtGtGtGtGtGtGtGtGwGCxDxzxzxzxzxz
xyxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxBxBxBxBxBxBxBBfBfBfBfBfBSBSBfCGBBGJBSBSBfBSGKBSfMBSBSGKBSBSBSBfxBxBxBpSpTGGpTpTpTpTpTGGpTpTpSxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxDGHGHGHxDGtGtGtxDGIGHGIxDxzxzxzxzxz
-xyxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxBxBxBxBxBxBxBCdGOGPGQGRBSBSMpBSBSBSBSBSGzBSGTGUGVGVGWGVFpGXBSCHxBxBxBpTGMGNGNGNGNGNGNGNGNGNpSpSxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxDGtGwGwGtGtGtGtGwGwGwGtxDxzxzxzxzxz
+xyxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxBxBxBxBxBxBxBCdGOGPGQGRBSBSTwBSBSBSBSBSGzBSGTGUGVGVGWGVFpGXBSCHxBxBxBpTGMGNXnGNGNGNGNGNGNXnpSpSxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxDGtGwGwGtGtGtGtGwGwGwGtxDxzxzxzxzxz
xyxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxBxBxBxBxBxBxBBfGRHbHbGRBSBSBfBXBBBBHcDbBfBSCkHdHdHdHdHdClBBBSBfxBxBxBGGGYGZGZGZGZGYGZGZGZGZGYpTxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBzExDxDxDGwGtGtGtGtGwHaxDxDxDxzxzxzxzxz
xyxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxBxBxBxBxBxBxBBfGRHeHeGRBSBSBfClBYBBHcGyBfBSBBGrBBHfBBBBGrBBBSBfxBxBxBpSGYGZGZGZGZGYGZGZGZGZGYpTxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBzEzEzExDxDxDxDxDxDxDxDxDxzxzxzxzxzxzxz
xyxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxBxBxBxBxBxBxBBeBfHjBfBfHjBfBeBfBfHjBfBfBfBfBfHjBfBfBfBfBfHjBfBexBxBxBpSGYGNGNGNGNHgHhGNGNGNGYGGxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBzEzEzEzEzEzEzEzEzExDxzxzxzxzxzxzxzxzxz
@@ -2569,19 +2665,19 @@ xyxAxAxyxyxyxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxA
xyxyxAxyxyxyxyxyxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxBxBHkHkxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBHlxBxBxBxBxBxBxBxBxBxBxBxBxBxBZQxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBzEzEzEzEzEzEzEzEzExDxzxzxzxzxzxzxzxzxz
xyxAxAxyxyxyxyxyxyxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxBxBxBxBxBtqHmHntqHmtqtqxBxBxBtqHnHnHnHnHnHntqHququqHruquqHsuquqxBxBxBsjUgsjsksjsksksksksksjzEzEzExBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxDxDxDxDxDxDxDxDxDxDxzxzxzxzxzxzxzxzxz
xyxAxyxyxyxyxyxyxyxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxBxBxBxBxBHtsrHutqsrHvHnxBxBxBHnJrsrsqsqsqvEHtxBuquqYEuqHBHCHDuqxBxBxBsFvlsFHEsFHFHGHGHHHIsFzEzEzExBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxDxDxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxz
-xyxAxAxyxyxyxyxyxyxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxBxBxBxBHtHJHKHLsrHMHnxBxBxBHnsrsrsqsqJtIkHtxBuqHRbOHCHCHCHCHSxBxBxBsFvlvlHTsFHUHUHUHUHUHVzEzEzExBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBzEzEzEzEzExDxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxz
+xyxAxAxyxyxyxyxyxyxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxBxBxBxBHtHJHKHLsrHMHnxBxBxBHnsrsrsqsqJtIkHtxBuqHRbOHCHCHCHCHSxBxBxBsFvlOgHTsFHUHUHUHUHUHVzEzEzExBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBzEzEzEzEzExDxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxz
xyxAxAxAxyxyxyxyxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxBxBxBxBHtHJHWtqHXsqHmxBxBxBHnJuJvtqIqJwJxtqHYuqHCHCHCHCHCHCuqxBxBxBsjvlvlvlussVsVsVsVHZsjzEzExBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBzEzEzEzEzExDxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxz
-xyxAxAxAxyxyxyxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxBxBxBxBHtHJIaIbIcsqHnxBxBxBHnsrsrtqJAJBIiHtxBuqHCHCHCHCHCHCuqxBxBxBsFvlsFsFsjsVsVsVsVIfsAzEzExBxBxBxBxBxBxBxBxBxBxBIgIgIgIgIgxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBzEzEzEzEzExDxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxz
-xyxAxAxAxAxyxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxBxBxBxBHtIhIiIjIktAHnxBxBxBHnJEsrJFHKHJJGHtxBuqHCHCImHCHCHCHSxBxBxBsFvlsjInygHUHUIoHUIpsAzEzExBxBxBxBxBxBxBxBxBxBxBIgIgIgIgIgIgxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBzEzEzEzEzExDxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxz
+xyxAxAxAxyxyxyxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxBxBxBxBHtHJIaIbIcsqHnxBxBxBHnsrsrtqJAJBIiHtxBuqHCHCHCHCHCQOuqxBxBxBsFvlsFsFsjsVsVsVsVIfsAzEzExBxBxBxBxBxBxBxBxBxBxBIgIgIgIgIgxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBzEzEzEzEzExDxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxz
+xyxAxAxAxAxyxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxBxBxBxBHtIhIiIjIktAHnxBxBxBHnJEsrJFHKHJJGHtxBuqHCHCImHCHCHCHSxBxBxBsFvlsjXKygHUHUIoHUIpsAzEzExBxBxBxBxBxBxBxBxBxBxBIgIgIgIgIgIgxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBzEzEzEzEzExDxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxz
xyxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxBxBxBxBtqIqIqtqIqIqtqxBxBxBtqtqtYtqHnJIHntqxBuqHCIxIyHCHCIzuqxBxBxBsFvlIAInsFHUHUHUHUHUsAzEzExBxBxBxBxBxBxBxBxBxBxBIgIgIgIgIgIgxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBzEzEzEzEzExDxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxz
xyxyxyxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxBxBxBxBIgIgIgIgIgIgIgxBxBxBIkIkIkIkIkIkIkIkxBuquququququququqxBxBxBsFsFsFInsjsFsFsFsFsFsAzEzExBxBxBxBxBxBxBxBIgIgIgIgIgIgIgIgIgxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBzEzEzEzEzExDxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxz
-xyxyxyxAxAxAxAxAxAxAxAxAxAICICICICICICICICICICICICICICxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxBxBxBxBIgIgIgIgIgIgIgxBxBxBxBxBxBxBxBxBxBDSxBxBxBxBxBxBxBxBxBxBxBxBsFsFsjInInInInInInInsAzEzExBxBxBxBxBxBxBxBIgIgIgIgIgIgIgIgIgxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBzEzEzEzEzExDxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxz
+xyxyxyxAxAxAxAxAxAxAxAxAxAICICICICICICICICICICICICICICxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxBxBxBxBIgIgIgIgIgIgIgxBxBxBxBxBxBxBxBxBxBDSxBxBxBxBxBxBxBxBxBxBxBxBsFsFsjInInInXKInInInsAzEzExBxBxBxBxBxBxBxBIgIgIgIgIgIgIgIgIgxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBzEzEzEzEzExDxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxz
xyxyxyxAxAxAxAxAxAxAxAxAxAIGIHIHIHIHIHIHIHIHIHIHIGIIIIIIxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxBxBxBxBIgIgIgIgIgIgIgxBxBxBxBxBxBxBxBxBxBDSxBtHuquququququqtHxBxBxBsFsFsFIKILInInInInInsAzEzEzExBxBxBxBxBxBxBIgIgIgIgIgIgIgIgIgxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBzEzEzEzEzExDxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxz
xyxyxyxyxAxAxAxAxAxAxAxAxAIHIMINIOIPIGIQIRIGISITIHIIxAIIxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxBxBxBxBIgIgIgIgIgIgIgxBxBIgIgIgIgIgIgIgIgIgxBuqIWuQuPuqvxuRuqxBxBxBsjsFsjsksksjsksjsjIAsjzEzEzExBxBxBxBxBxBxBIgIgIgIgIgIgIgIgIgxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBzEzEzEzEzExDxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxz
xyxyxyxyxyxyxAxAxAxAxAxAxAIXISISISISIYISISIYISIZIHIIIIIIxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxBxBxBxBIgIgIgIgIgIgIgxBxBIgIgIgIgIgIgIgIgIgxBuquPuPuPPovvJcurxBxBxBJdJdJdJdJeskvlvmvlvlskxBxBxBxBxBxBxBxBxBxBIgIgIgIgIgIgIgIgIgxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxDxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxz
-xyxyxyxyxyxyxyxAxAxAxAxAxAIHISISISISJfJgJgJfISJhIHICICxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxBxBxBxBIgIgIgIgIgIgIgxBxBIgIgIgIgIgIgIgIgIgxBuquPuPvvuqvvvvuqxBxBxBJdJdJdJdJdJivlGZJjvlskxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxDxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxz
-xyxyxyxyxyxyxyxAxAxAxAxAxAIHJkJlJmJnJoxAxAJoJpISIHICICxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxBxBxBxBIgIgIgIgIgIgIgxBxBIgIgIgIgIgIgIgIgIgxBuquqPItHtHtHtHuqxBxBxBJdJdJdJdJdskvlGZJjvlskxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxDxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxz
-xyxyxyxyxAxAxAxAxAxAxAxAxAIGIHIHIHIHIHIHIHIHIHJsIGICICxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxBxBxBxBIgIgIgIgIgIgIgxBxBtqHntqHnHnHnHnHntqxBuqvvvvvvvvvvvvuqxBxBxBJdJdJdJdJdsjsksksksksjxBxBxBxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxz
+xyxyxyxyxyxyxyxAxAxAxAxAxAIHISISISISJfJgJgJfISJhIHICICxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxBxBxBxBIgIgIgIgIgIgIgxBxBIgIgIgIgIgIgIgIgIgxBuquPuPvvuqvvvvuqxBxBxBJdJdJdJdJdJivlGZJjvlskxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxDxDxDxDxDxDxDxDxDxDxDxDxDxBxBxBxBxBxDxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxz
+xyxyxyxyxyxyxyxAxAxAxAxAxAIHJkJlJmJnJoxAxAJoJpISIHICICxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxBxBxBxBIgIgIgIgIgIgIgxBxBIgIgIgIgIgIgIgIgIgxBuquqPItHtHtHtHuqxBxBxBJdJdJdJdJdskvlGZJjvlskxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxDxDxDxDxDxDxDxDxDxDxDxDxDxDxBxBxBxBxBxDxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxz
+xyxyxyxyxAxAxAxAxAxAxAxAxAIGIHIHIHIHIHIHIHIHIHJsIGICICxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxBxBxBxBIgIgIgIgIgIgIgxBxBtqHntqHnHnHnHnHntqxBuqvvvvvvvvvvvvuqxBxBxBJdJdJdJdJdsjsksksksksjxBxBxBxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxBxBxBxBxBxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxz
xyxyxyxAxAxAxAxAxAxAxAxAxAICICICICICICICICICICICICICICxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxBxBxBxBIgIgIgIgIgIgIgxBxBHnhSpPUhtqsqIkVPIqxBuqJyvvvvtHvvJzuqxBxBxBJdJdJdJdJdJdxBxBxBxBxBxBxBxBxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxz
xyxyxyxAxAxAxAxAxAxAxAxAxAICICICICICICxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxBxBxBxBIgIgIgIgIgIgIgxBxBHnwtsqsqpEsqzDMsIqxBuqshvvvvvxvvJCurxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxz
xyxyxAxAxAxAxAxAxAxAxAxAxAJDICICICICICxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxBxBxBxBIgIgIgIgIgIgIgxBxBHnhSsqMotqsqsqsqIqxBuqvWvvvvvvvvJHuqxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxBxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxDxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxzxz
@@ -2700,15 +2796,15 @@ xyxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAKvKvKvxAxyxyxyxyxyxyxyxyxyxyxyxyxyKvKvKvxAxA
xyxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAKvxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyKvKvxAxAxAxAxAxAxAerererererererererererererererererererererererererererererererererererererererererererererererererererererererererewggeSeSeSeSeSeSeSeSeSeSeSerererererKOIrLjLmLmLmLmLmLmLmLmLmLmLmCzzGzGzGzGzGzGCzJZJZJZJZJTKOetetetetetet
xyxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAKvxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyKvKvxAxAxAxAxAxAxAerererBeBfBfBfBeBfBfBfBfBfBfBfBfBgBfBfBeererererererererererererererererererKOKOKOKOKOKOerLnLoLoLoLpLpLpLpLnewewewewggggggggggggggggggggggmYerererererKOIrLjkSkSkSkSkSkSkSkSkSkSkSkSLqLjLjLjJZJZJZJZJZJZJZJTKOetetetetetet
xyxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAKvKvxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyKvxAxAxAxAxAxAxAxAerererBfLtLuBBLvLwLxLyLzBfBSLABSLBLCGDBfBfBfBfBeerererererererererererererKOKOLrKRKRKXKOerLoLoLoLoLpLpLpLpLpeweweweweSeSeSeSeSeSeSeSeSeSggeSerererererKOIrLjkSzLkSkSkSzLkSkSkSzLkSkSLqLsLsLjJZJZJZJZJZJZJZJTKOetetetetetet
-xyxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAKvKvxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyKvxAxAxAxAxAxAxAxAerererBfBBLHLHLHLHLHLHBBUHBSBSBSBSBSBSBSLJBfBfBfBeererererererererererKOKOKOLrJZLDLDJTKOerLoLoLoLoLpLpLpLpLpKOKOKOewggggggggggggggggggggggmYerererererKOIrLjkSLEkSkSkSLEkSkSkSLEkSkSLqLsLsLjJZJZJZJZJZJZJZJTKOetetetetetet
-xyxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAKvxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyKvxAxAxAxAxAxAxAxALFLGLGMpBBLHLHLLLHLHLHBBBfBSBSBSBSBSBSBSBSBfBfBfBfererererererererererKOLrKRJZLDlFlFmEKOerLoLrKRKRKRKRKXLpLpKOKOKOewggeSeSeSeSeSeSeSeSrororoerererererKOIrLjkSkSkSkSkSkSkSkSkSkSkSkSLqLsLsLjJZJZJZJZJZJZJZJTKOetetetetetet
-xyxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAKvKvxyxyxyxyxyxyxyxyxyxyxyxyxyKvxAxAxAxAxAxAxAxAxALKlRlRBfBBBBBBLOLPBBBBBBBfBBBBBBLQLQBBBBBBBfMYLSBfererererererererererKOJYLDLMlFlFlFJTKOerLoJYJZJZJZJZJTLpLpKOLNKOewggggggggggggggggggrororoerererererKOIrLjkSkSkSkSkSkSkSkSkSkSkSkSLqLsLsLjJZJZJZJZJZJZJZJTKOetetetetetet
-xyxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAKvxyxyxyxyxyxyxyxyxyxyxyxyKvKvxAxAxAxAxAxAxAxAxALKlRlRBfBfBfBfBeBfBfBfBfBeLXLXLXGyGyLXBBBBOYBSBSCHererererererererererKOJYLDlFlFlFLTJTKOerLoJYJZJZJZJZJTLpLpKOKOKOeweSeSeSeSeSeSeSeSeSroLUroerererererKOIrLjLVLVLVLVLVLVLVLVLVLVLVLVLVLsLsLjJZJZJZJZJZJZJZJTKOetetetetetet
-xyxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAKvKvxyxyxyxyxyxyxyxyxyxyKvKvxAxAxAxAxAxAxAxAxALKlRLWBeMcBeMcMcBeMcBeGyGyGyGyGyGyGyGyMdBBBfGLMeBfererererererererererKOJYewewewKdJVKaKOerLZJYJZJZJZJZJTLpLpLNKOKOewggggggggggggggggggggggeSerererererKOIrLjLsLsLsLsLsLsLsLsLsLsLsLsLsLsLsLjJZJZJZJZJZJZJZJTKOetetetetetet
+xyxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAKvKvxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyKvxAxAxAxAxAxAxAxAerererQaBBLHLHLHLHLHLHBBUHBSBSBSBSBSBSBSLJBfBfBfBeererererererererererKOKOKOLrJZLDLDJTKOerLoLoLoLoLpLpLpLpLpKOKOKOewggggggggggggggggggggggmYerererererKOIrLjkSLEkSkSkSLEkSkSkSLEkSkSLqLsLsLjJZJZJZJZJZJZJZJTKOetetetetetet
+xyxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAKvxyxyxyxyxyxyxyxyxyxyxyxyxyxyxyKvxAxAxAxAxAxAxAxALFLGLGBfBBLHLHLLLLLHLHBBBfBSBSBSBSBSBSBSBSBfBfBfBfererererererererererKOLrKRJZLDlFlFmEKOerLoLrKRKRKRKRKXLpLpKOKOKOewggeSeSeSeSeSeSeSeSrororoerererererKOIrLjkSkSkSkSkSkSkSkSkSkSkSkSLqLsLsLjJZJZJZJZJZJZJZJTKOetetetetetet
+xyxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAKvKvxyxyxyxyxyxyxyxyxyxyxyxyxyKvxAxAxAxAxAxAxAxAxALKlRlRUHBBBBUVLOLPNQBBBBBfBBBBBBLQLQBBBBBBBfMYLSBfererererererererererKOJYLDLMlFlFlFJTKOerLoJYJZJZJZJZJTLpLpKOLNKOewggggggggggggggggggrororoerererererKOIrLjkSkSkSkSkSkSkSkSkSkSkSkSLqLsLsLjJZJZJZJZJZJZJZJTKOetetetetetet
+xyxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAKvxyxyxyxyxyxyxyxyxyxyxyxyKvKvxAxAxAxAxAxAxAxAxALKMOlRBfBfBfBfBeBfBfBfBfBeLXLXLXGyGyLXBBBBOYBSBSCHererererererererererKOJYLDlFlFlFLTJTKOerLoJYJZJZJZJZJTLpLpKOKOKOeweSeSeSeSeSeSeSeSeSroLUroerererererKOIrLjLVLVLVLVLVLVLVLVLVLVLVLVLVLsLsLjJZJZJZJZJZJZJZJTKOetetetetetet
+xyxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAKvKvxyxyxyxyxyxyxyxyxyxyKvKvxAxAxAxAxAxAxAxAxALKlRvuBeMcBeMcMcBeMcBeGyGyGyGyGyGyGyGyMdBBBfGLMeBfererererererererererKOJYewewewKdJVKaKOerLZJYJZJZJZJZJTLpLpLNKOKOewggggggggggggggggggggggeSerererererKOIrLjLsLsLsLsLsLsLsLsLsLsLsLsLsLsLsLjJZJZJZJZJZJZJZJTKOetetetetetet
xyxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAKvxyxyxyxyxyxyxyxyKvKvKvxAxAxAxAxAxAxAxAxAxAMaMbMbBfMeMYBeBeLRKpMcGyGyGyGyGyMkGyGyMdMlBfBfBfBferererererererererKOKOJYllMfllmEKOKOKOerLoJYJZJZJZJZJTLpLpKOKOKOewggeSeSeSeSeSeSeSeSeSeSeSerererererKOIrLjLsLjLjLjMgLjLjLjLjLjLjLjLjLjLjLjJZJZJZJZJZJZJZJTKOetetetetetet
xyxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAKvxyxyKvKvKvxAxAxAxAxAxAxAxAxAxAxAerererMnBSXaMcMcMtBSCHGyMkGyBfGyGyBfGyMdBBBfLRLSBfererererererKOKOKOKOKOJYDUshewKXKOKOKOerLoKcJVJVJVJVKaLpLpggggLnewggggggggggggggggggggggpperererererKOIrLjLsLjMmMmkUMmMmJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJTKOetetetetetet
xyxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAKvKvKvKvKvKvxAxAxAxAxAxAxAxAxAxAxAerererBfKpBSBeBeBSMeBfGyGyGyGyGyGyGyGyMdBBZCBSBSCHererererererKOLrKRKXKOJYewKdJVKaKOKOKOerLoLoLoLoMqLpLpLpLpLoLoLoeweSeSeSeSeSeSeSeSeSeSggeSerererererKOIrLjLsLjMmMrkUkUMmJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJTKOetetetetetet
-xyxAxAxAxAJMJMJMJMJMJMJMJMJMJMJMJMJMJMJMxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAerererBeBfMpMcMcNiBfBeMDBfMEMEMEMEMEMEMdBBBfGLMeBfererererererKOJYKPKOKOKcJVKaKOKOKOKOKOerLoLoLoLoLpLpMvLpLpLoLoLoewggggggggggggggggggggggMwerererererKOuGLsLsLjMmkUkUMyMmJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJTKOetetetetetet
+xyxAxAxAxAJMJMJMJMJMJMJMJMJMJMJMJMJMJMJMxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAerererBeBfYMMcMcNiBfBeMDBfMEMEMEMEMEMEMdBBBfGLMeBfererererererKOJYKPKOKOKcJVKaKOKOKOKOKOerLoLoLoLoLpLpMvLpLpLoLoLoewggggggggggggggggggggggMwerererererKOuGLsLsLjMmkUkUMyMmJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJTKOetetetetetet
xyxAxAxAxAJMMzMAMAMAMAMAMAMAMAMAMAMAMAJMxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxALFLGLGBfBSBSBSBSBSGDGDBSBSBSBSBSBSBSBSBSBSBfBfBfBfererererererKOKcJVKaKOKOKOKOKOKOKOKOKOerLnLoLoLoLpLpLpLpLpggggLneweSeSeSeSeSeSeSeSeSeSeSeSerererererKOIrMFLjLjMmMGkUMHMmJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJZJTKOetetetetetet
xyxAxAxAxAJMMIMJMJMJMJMJMJMJMJMJMJMJJLJMxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxALKlRLWMpBSBSBSBSBSBSBSBSBSBSBSBSBSBSBSBSBSBSBSBSBfererererererKOKOKOKOMKerererererererererererererererererererererewggggggggggggggggggggggewerererererKOxXMLMLMLMmMmMMMmMmJVJVJVJVJVJVJVJVJVJVJVJVJVJVJVJVKaKOetetetetetet
xyxAxAxAxAJMMNJOJOJOJOJOJOJOJOJOJOJOJPJMxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxAxALKMOlRBfBSBSBSBSBSBSBSBSBSBSBSBSBSBSBSBSBSBSBSBSBfererererererererererMKerererererererererererererererererererererewewewewewewewewewewewewewerererererKOKOKOKOKOKOMQKOMQKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOKOeretetetetet
diff --git a/code/__DEFINES/callbacks.dm b/code/__DEFINES/callbacks.dm
index f25dfdf150..f66fd0775f 100644
--- a/code/__DEFINES/callbacks.dm
+++ b/code/__DEFINES/callbacks.dm
@@ -2,4 +2,4 @@
/// A shorthand for the callback datum, [documented here](datum/callback.html)
#define CALLBACK new /datum/callback
#define INVOKE_ASYNC world.ImmediateInvokeAsync
-#define CALLBACK_NEW(typepath, args) CALLBACK(GLOBAL_PROC, /proc/___callbacknew, typepath, args)
+#define CALLBACK_NEW(typepath, args) CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(___callbacknew), typepath, args)
diff --git a/code/__DEFINES/lighting.dm b/code/__DEFINES/lighting.dm
index a65d86efa5..20a11995b7 100644
--- a/code/__DEFINES/lighting.dm
+++ b/code/__DEFINES/lighting.dm
@@ -127,5 +127,3 @@ GLOBAL_LIST_INIT(em_mask_matrix, EM_MASK_MATRIX)
/// Returns the blue part of a #RRGGBB hex sequence as number
#define GETBLUEPART(hexa) hex2num(copytext(hexa, 6, 8))
-
-#define TYPE_PROC_REF(TYPE, X) (##TYPE.proc/##X) //BYOND version compatability nonsence that probably dosent work.
diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm
index e423b96e26..de066446e6 100644
--- a/code/__DEFINES/traits.dm
+++ b/code/__DEFINES/traits.dm
@@ -204,6 +204,7 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
#define TRAIT_XENO_IMMUNE "xeno_immune"//prevents xeno huggies implanting skeletons
#define TRAIT_NOPAIN "no_pain"
#define TRAIT_DRUQK "druqk"
+#define TRAIT_BURIED_COIN_GIVEN "buried_coin_given" // prevents a human corpse from being used for a corpse multiple times
//non-mob traits
#define TRAIT_PARALYSIS "paralysis" //Used for limb-based paralysis, where replacing the limb will fix it
diff --git a/code/__HELPERS/_string_lists.dm b/code/__HELPERS/_string_lists.dm
index 766ea9e5c2..068303ecda 100644
--- a/code/__HELPERS/_string_lists.dm
+++ b/code/__HELPERS/_string_lists.dm
@@ -12,7 +12,7 @@ GLOBAL_VAR(string_filename_current_key)
if((filename in GLOB.string_cache) && (key in GLOB.string_cache[filename]))
var/response = pick(GLOB.string_cache[filename][key])
var/regex/r = regex("@pick\\((\\D+?)\\)", "g")
- response = r.Replace(response, /proc/strings_subkey_lookup)
+ response = r.Replace(response, GLOBAL_PROC_REF(strings_subkey_lookup))
return response
else
CRASH("strings list not found: [directory]/[filename], index=[key]")
diff --git a/code/__HELPERS/game.dm b/code/__HELPERS/game.dm
index b2ded95886..1717e5c9bf 100644
--- a/code/__HELPERS/game.dm
+++ b/code/__HELPERS/game.dm
@@ -378,7 +378,7 @@
/proc/flick_overlay(image/I, list/show_to, duration)
for(var/client/C in show_to)
C.images += I
- addtimer(CALLBACK(GLOBAL_PROC, /proc/remove_images_from_clients, I, show_to), duration, TIMER_CLIENT_TIME)
+ addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(remove_images_from_clients), I, show_to), duration, TIMER_CLIENT_TIME)
/proc/flick_overlay_view(image/I, atom/target, duration) //wrapper for the above, flicks to everyone who can see the target atom
var/list/viewing = list()
diff --git a/code/__HELPERS/global_lists.dm b/code/__HELPERS/global_lists.dm
index 244e61f7d0..654da31233 100644
--- a/code/__HELPERS/global_lists.dm
+++ b/code/__HELPERS/global_lists.dm
@@ -43,18 +43,18 @@
for(var/spath in subtypesof(/datum/species))
var/datum/species/S = new spath()
GLOB.species_list[S.name] = spath
- sortList(GLOB.species_list, /proc/cmp_typepaths_asc)
+ sortList(GLOB.species_list, GLOBAL_PROC_REF(cmp_typepaths_asc))
//Surgeries
for(var/path in subtypesof(/datum/surgery))
GLOB.surgeries_list += new path()
- sortList(GLOB.surgeries_list, /proc/cmp_typepaths_asc)
+ sortList(GLOB.surgeries_list, GLOBAL_PROC_REF(cmp_typepaths_asc))
//Materials
for(var/path in subtypesof(/datum/material))
var/datum/material/D = new path()
GLOB.materials_list[D.id] = D
- sortList(GLOB.materials_list, /proc/cmp_typepaths_asc)
+ sortList(GLOB.materials_list, GLOBAL_PROC_REF(cmp_typepaths_asc))
// Keybindings
init_keybindings()
diff --git a/code/__HELPERS/lordcolor.dm b/code/__HELPERS/lordcolor.dm
index eadb63163a..33c5853d39 100644
--- a/code/__HELPERS/lordcolor.dm
+++ b/code/__HELPERS/lordcolor.dm
@@ -18,7 +18,7 @@ GLOBAL_VAR(lordsecondary)
/mob/proc/lord_color_choice()
if(!client)
- addtimer(CALLBACK(src, .proc/lord_color_choice), 50)
+ addtimer(CALLBACK(src, PROC_REF(lord_color_choice)), 50)
return
var/list/lordcolors = list(
"PURPLE"="#865c9c",
diff --git a/code/__HELPERS/qdel.dm b/code/__HELPERS/qdel.dm
index 0d2bf89152..ba31b067c4 100644
--- a/code/__HELPERS/qdel.dm
+++ b/code/__HELPERS/qdel.dm
@@ -1,8 +1,8 @@
-#define QDEL_IN(item, time) addtimer(CALLBACK(GLOBAL_PROC, .proc/qdel, item), time, TIMER_STOPPABLE)
-#define QDEL_IN_CLIENT_TIME(item, time) addtimer(CALLBACK(GLOBAL_PROC, .proc/qdel, item), time, TIMER_STOPPABLE | TIMER_CLIENT_TIME)
+#define QDEL_IN(item, time) addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(qdel), item), time, TIMER_STOPPABLE)
+#define QDEL_IN_CLIENT_TIME(item, time) addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(qdel), item), time, TIMER_STOPPABLE | TIMER_CLIENT_TIME)
#define QDEL_NULL(item) qdel(item); item = null
#define QDEL_LIST(L) if(L) { for(var/I in L) qdel(I); L.Cut(); }
-#define QDEL_LIST_IN(L, time) addtimer(CALLBACK(GLOBAL_PROC, .proc/______qdel_list_wrapper, L), time, TIMER_STOPPABLE)
+#define QDEL_LIST_IN(L, time) addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(______qdel_list_wrapper), L), time, TIMER_STOPPABLE)
#define QDEL_LIST_ASSOC(L) if(L) { for(var/I in L) { qdel(L[I]); qdel(I); } L.Cut(); }
#define QDEL_LIST_ASSOC_VAL(L) if(L) { for(var/I in L) qdel(L[I]); L.Cut(); }
diff --git a/code/__HELPERS/roundend.dm b/code/__HELPERS/roundend.dm
index e34a17bb9b..def4006fe0 100644
--- a/code/__HELPERS/roundend.dm
+++ b/code/__HELPERS/roundend.dm
@@ -357,7 +357,7 @@
var/currrent_category
var/datum/antagonist/previous_category
- sortTim(all_antagonists, /proc/cmp_antag_category)
+ sortTim(all_antagonists, GLOBAL_PROC_REF(cmp_antag_category))
for(var/datum/antagonist/A in all_antagonists)
if(!A.show_in_roundend)
@@ -611,7 +611,7 @@
var/currrent_category
var/datum/antagonist/previous_category
- sortTim(all_antagonists, /proc/cmp_antag_category)
+ sortTim(all_antagonists, GLOBAL_PROC_REF(cmp_antag_category))
for(var/datum/antagonist/A in all_antagonists)
if(!A.show_in_roundend)
diff --git a/code/__HELPERS/time.dm b/code/__HELPERS/time.dm
index fef3dfad55..19ce1db79f 100644
--- a/code/__HELPERS/time.dm
+++ b/code/__HELPERS/time.dm
@@ -134,12 +134,12 @@ GLOBAL_VAR_INIT(dayspassed, FALSE)
T.maptext_y = -120
playsound_local(src, 'sound/misc/newday.ogg', 100, FALSE)
animate(T, alpha = 255, time = 10, easing = EASE_IN)
- addtimer(CALLBACK(src, .proc/clear_area_text, T), 35)
+ addtimer(CALLBACK(src, PROC_REF(clear_area_text), T), 35)
var/obj/screen/daynight/D = new()
D.alpha = 0
client.screen += D
animate(D, alpha = 255, time = 20, easing = EASE_IN)
- addtimer(CALLBACK(src, .proc/clear_time_icon, D), 30)
+ addtimer(CALLBACK(src, PROC_REF(clear_time_icon), D), 30)
/proc/station_time_debug(force_set)
if(isnum(force_set))
diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm
index 8c020104e6..b62e2951d9 100644
--- a/code/__HELPERS/unsorted.dm
+++ b/code/__HELPERS/unsorted.dm
@@ -582,11 +582,11 @@ Turf and target are separate in case you want to teleport some distance from a t
for(var/area/A in world)
GLOB.sortedAreas.Add(A)
- sortTim(GLOB.sortedAreas, /proc/cmp_name_asc)
+ sortTim(GLOB.sortedAreas, GLOBAL_PROC_REF(cmp_name_asc))
/area/proc/addSorted()
GLOB.sortedAreas.Add(src)
- sortTim(GLOB.sortedAreas, /proc/cmp_name_asc)
+ sortTim(GLOB.sortedAreas, GLOBAL_PROC_REF(cmp_name_asc))
//Takes: Area type as a text string from a variable.
//Returns: Instance for the area in the world.
@@ -1505,9 +1505,9 @@ GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new)
*/
#define NAMEOF_STATIC(datum, X) (nameof(type::##X))
-#define VARSET_LIST_CALLBACK(target, var_name, var_value) CALLBACK(GLOBAL_PROC, /proc/___callbackvarset, ##target, ##var_name, ##var_value)
+#define VARSET_LIST_CALLBACK(target, var_name, var_value) CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(___callbackvarset), ##target, ##var_name, ##var_value)
//dupe code because dm can't handle 3 level deep macros
-#define VARSET_CALLBACK(datum, var, var_value) CALLBACK(GLOBAL_PROC, /proc/___callbackvarset, ##datum, NAMEOF(##datum, ##var), ##var_value)
+#define VARSET_CALLBACK(datum, var, var_value) CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(___callbackvarset), ##datum, NAMEOF(##datum, ##var), ##var_value)
/proc/___callbackvarset(list_or_datum, var_name, var_value)
if(length(list_or_datum))
@@ -1519,8 +1519,8 @@ GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new)
else
D.vars[var_name] = var_value
-#define TRAIT_CALLBACK_ADD(target, trait, source) CALLBACK(GLOBAL_PROC, /proc/___TraitAdd, ##target, ##trait, ##source)
-#define TRAIT_CALLBACK_REMOVE(target, trait, source) CALLBACK(GLOBAL_PROC, /proc/___TraitRemove, ##target, ##trait, ##source)
+#define TRAIT_CALLBACK_ADD(target, trait, source) CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(___TraitAdd), ##target, ##trait, ##source)
+#define TRAIT_CALLBACK_REMOVE(target, trait, source) CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(___TraitRemove), ##target, ##trait, ##source)
///DO NOT USE ___TraitAdd OR ___TraitRemove as a replacement for ADD_TRAIT / REMOVE_TRAIT defines. To be used explicitly for callback.
/proc/___TraitAdd(target,trait,source)
diff --git a/code/__byond_version_compat.dm b/code/__byond_version_compat.dm
new file mode 100644
index 0000000000..80bd71c856
--- /dev/null
+++ b/code/__byond_version_compat.dm
@@ -0,0 +1,17 @@
+// This file contains defines allowing targeting byond versions newer than the supported
+// TODO: Remove the 514 versions once we move completely over to 515
+#if DM_VERSION < 515
+// 514 version
+#define PROC_REF(X) (.proc/##X)
+#define VERB_REF(X) (.verb/##X)
+#define TYPE_PROC_REF(TYPE, X) (##TYPE.proc/##X)
+#define TYPE_VERB_REF(TYPE, X) (##TYPE.verb/##X)
+#define GLOBAL_PROC_REF(X) (.proc/##X)
+#else
+// 515 versions
+#define PROC_REF(X) (nameof(.proc/##X))
+#define VERB_REF(X) (nameof(.verb/##X))
+#define TYPE_PROC_REF(TYPE, X) (nameof(##TYPE.proc/##X))
+#define TYPE_VERB_REF(TYPE, X) (nameof(##TYPE.verb/##X))
+#define GLOBAL_PROC_REF(X) (/proc/##X)
+#endif
diff --git a/code/_globalvars/lists/mapping.dm b/code/_globalvars/lists/mapping.dm
index f109640426..ad49a19203 100644
--- a/code/_globalvars/lists/mapping.dm
+++ b/code/_globalvars/lists/mapping.dm
@@ -38,7 +38,6 @@ GLOBAL_LIST_EMPTY(tdomeadmin)
GLOBAL_LIST_EMPTY(prisonwarped) //list of players already warped
GLOBAL_LIST_EMPTY(blobstart) //stationloving objects, blobs, santa, respawning devils
GLOBAL_LIST_EMPTY(underworldspawn)
-GLOBAL_LIST_EMPTY(underworldcoin)
GLOBAL_LIST_EMPTY(hauntstart)
GLOBAL_LIST_EMPTY(testportals)
GLOBAL_LIST_EMPTY(traveltiles)
diff --git a/code/_onclick/hud/alert.dm b/code/_onclick/hud/alert.dm
index b485a28a2e..bcd3d760be 100644
--- a/code/_onclick/hud/alert.dm
+++ b/code/_onclick/hud/alert.dm
@@ -64,7 +64,7 @@
thealert.transform = matrix(32, 6, MATRIX_TRANSLATE)
animate(thealert, transform = matrix(), time = 2.5, easing = CUBIC_EASING)
if(thealert.timeout)
- addtimer(CALLBACK(src, .proc/alert_timeout, thealert, category), thealert.timeout)
+ addtimer(CALLBACK(src, PROC_REF(alert_timeout), thealert, category), thealert.timeout)
thealert.timeout = world.time + thealert.timeout - world.tick_lag
return thealert
diff --git a/code/_onclick/hud/credits.dm b/code/_onclick/hud/credits.dm
index 5750b2d544..f81195fd0a 100644
--- a/code/_onclick/hud/credits.dm
+++ b/code/_onclick/hud/credits.dm
@@ -80,7 +80,7 @@
M.Translate(-288, 0)
animate(src, transform = M, time = 90)
animate(src, alpha = 255, time = 10, flags = ANIMATION_PARALLEL)
- addtimer(CALLBACK(src, .proc/FadeOut), 80)
+ addtimer(CALLBACK(src, PROC_REF(FadeOut)), 80)
QDEL_IN(src, 90)
P.screen += src
diff --git a/code/_onclick/hud/fullscreen.dm b/code/_onclick/hud/fullscreen.dm
index 3a8f0995f4..0b932e4f1d 100644
--- a/code/_onclick/hud/fullscreen.dm
+++ b/code/_onclick/hud/fullscreen.dm
@@ -42,7 +42,7 @@
if(animated)
animate(screen, alpha = 0, time = animated)
- addtimer(CALLBACK(src, .proc/clear_fullscreen_after_animate, screen), animated, TIMER_CLIENT_TIME, flags = ANIMATION_PARALLEL)
+ addtimer(CALLBACK(src, PROC_REF(clear_fullscreen_after_animate), screen), animated, TIMER_CLIENT_TIME, flags = ANIMATION_PARALLEL)
else
if(client)
client.screen -= screen
diff --git a/code/_onclick/hud/ghost.dm b/code/_onclick/hud/ghost.dm
index f87532a1df..cd131ff18f 100644
--- a/code/_onclick/hud/ghost.dm
+++ b/code/_onclick/hud/ghost.dm
@@ -42,7 +42,7 @@
if(istype(G, /mob/dead/observer/rogue/arcaneeye))
return
if(alert("Travel with the boatman?", "", "Yes", "No") == "Yes")
- for(var/obj/effect/landmark/underworld/A in world)
+ for(var/obj/effect/landmark/underworld/A in GLOB.landmarks_list)
var/mob/living/carbon/spirit/O = new /mob/living/carbon/spirit(A.loc)
O.livingname = G.name
O.ckey = G.ckey
@@ -56,7 +56,7 @@
if(C.skeletons)
G.returntolobby()
if(alert("Travel with the boatman?", "", "Yes", "No") == "Yes")
- for(var/obj/effect/landmark/underworld/A in world)
+ for(var/obj/effect/landmark/underworld/A in GLOB.landmarks_list)
var/mob/living/carbon/spirit/O = new /mob/living/carbon/spirit(A.loc)
O.livingname = G.name
O.ckey = G.ckey
diff --git a/code/_onclick/hud/parallax.dm b/code/_onclick/hud/parallax.dm
index 798209a29e..62622d42af 100644
--- a/code/_onclick/hud/parallax.dm
+++ b/code/_onclick/hud/parallax.dm
@@ -147,7 +147,7 @@
C.parallax_movedir = new_parallax_movedir
if (C.parallax_animate_timer)
deltimer(C.parallax_animate_timer)
- var/datum/callback/CB = CALLBACK(src, .proc/update_parallax_motionblur, C, animatedir, new_parallax_movedir, newtransform)
+ var/datum/callback/CB = CALLBACK(src, PROC_REF(update_parallax_motionblur), C, animatedir, new_parallax_movedir, newtransform)
if(skip_windups)
CB.Invoke()
else
diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm
index 67de24e52d..73f5fd2be5 100644
--- a/code/_onclick/hud/screen_objects.dm
+++ b/code/_onclick/hud/screen_objects.dm
@@ -770,7 +770,7 @@
/obj/screen/advsetup/New(client/C) //TODO: Make this use INITIALIZE_IMMEDIATE, except its not easy
. = ..()
- addtimer(CALLBACK(src, .proc/check_mob), 30)
+ addtimer(CALLBACK(src, PROC_REF(check_mob)), 30)
/obj/screen/advsetup/Destroy()
hud.static_inventory -= src
diff --git a/code/_onclick/other_mobs.dm b/code/_onclick/other_mobs.dm
index 794042ecdf..b8dd2d3055 100644
--- a/code/_onclick/other_mobs.dm
+++ b/code/_onclick/other_mobs.dm
@@ -206,12 +206,11 @@
if(!src.mind.has_antag_datum(/datum/antagonist/werewolf))
if(prob(10))
H.werewolf_infect()
- //addtimer(CALLBACK(src, .mob/living/carbon/human/proc/werewolf_infect), 3 MINUTES)
+ //addtimer(CALLBACK(src, TYPE_PROC_REF(/mob/living/carbon/human, werewolf_infect)), 3 MINUTES)
if(user.mind.has_antag_datum(/datum/antagonist/zombie))
if(!src.mind.has_antag_datum(/datum/antagonist/zombie))
- if(prob(25)) // Delay is handled in zombie_infect anyways
- H.zombie_infect()
- //addtimer(CALLBACK(src, .mob/living/carbon/human/proc/zombie_infect), 3 MINUTES)
+ H.zombie_infect_attempt()
+ //addtimer(CALLBACK(src, TYPE_PROC_REF(/mob/living/carbon/human, zombie_infect)), 3 MINUTES)
var/obj/item/grabbing/bite/B = new()
user.equip_to_slot_or_del(B, SLOT_MOUTH)
diff --git a/code/controllers/configuration/configuration.dm b/code/controllers/configuration/configuration.dm
index 67106519d0..3ee4649908 100644
--- a/code/controllers/configuration/configuration.dm
+++ b/code/controllers/configuration/configuration.dm
@@ -421,4 +421,4 @@ Example config:
//Message admins when you can.
/datum/controller/configuration/proc/DelayedMessageAdmins(text)
- addtimer(CALLBACK(GLOBAL_PROC, /proc/message_admins, text), 0)
+ addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(message_admins), text), 0)
diff --git a/code/controllers/master.dm b/code/controllers/master.dm
index b24badfad8..1cc96ce7cb 100644
--- a/code/controllers/master.dm
+++ b/code/controllers/master.dm
@@ -79,7 +79,7 @@ GLOBAL_REAL(Master, /datum/controller/master) = new
qdel(Master)
else
var/list/subsytem_types = subtypesof(/datum/controller/subsystem)
- sortTim(subsytem_types, /proc/cmp_subsystem_init)
+ sortTim(subsytem_types, GLOBAL_PROC_REF(cmp_subsystem_init))
for(var/I in subsytem_types)
_subsystems += new I
Master = src
@@ -94,7 +94,7 @@ GLOBAL_REAL(Master, /datum/controller/master) = new
/datum/controller/master/Shutdown()
processing = FALSE
- sortTim(subsystems, /proc/cmp_subsystem_init)
+ sortTim(subsystems, GLOBAL_PROC_REF(cmp_subsystem_init))
reverseRange(subsystems)
for(var/datum/controller/subsystem/ss in subsystems)
log_world("Shutting down [ss.name] subsystem...")
@@ -225,7 +225,7 @@ GLOBAL_REAL(Master, /datum/controller/master) = new
to_chat(world, "Initializing subsystems...")
#endif
// Sort subsystems by init_order, so they initialize in the correct order.
- sortTim(subsystems, /proc/cmp_subsystem_init)
+ sortTim(subsystems, GLOBAL_PROC_REF(cmp_subsystem_init))
var/start_timeofday = REALTIMEOFDAY
// Initialize subsystems.
@@ -255,7 +255,7 @@ GLOBAL_REAL(Master, /datum/controller/master) = new
SetRunLevel(1)
// Sort subsystems by display setting for easy access.
- sortTim(subsystems, /proc/cmp_subsystem_display)
+ sortTim(subsystems, GLOBAL_PROC_REF(cmp_subsystem_display))
// Set world options.
world.change_fps(CONFIG_GET(number/fps))
var/initialized_tod = REALTIMEOFDAY
@@ -337,9 +337,9 @@ GLOBAL_REAL(Master, /datum/controller/master) = new
queue_tail = null
//these sort by lower priorities first to reduce the number of loops needed to add subsequent SS's to the queue
//(higher subsystems will be sooner in the queue, adding them later in the loop means we don't have to loop thru them next queue add)
- sortTim(tickersubsystems, /proc/cmp_subsystem_priority)
+ sortTim(tickersubsystems, GLOBAL_PROC_REF(cmp_subsystem_priority))
for(var/I in runlevel_sorted_subsystems)
- sortTim(I, /proc/cmp_subsystem_priority) //I is a list, sort it bro
+ sortTim(I, GLOBAL_PROC_REF(cmp_subsystem_priority)) //I is a list, sort it bro
I += tickersubsystems
var/cached_runlevel = current_runlevel
diff --git a/code/controllers/subsystem/assets.dm b/code/controllers/subsystem/assets.dm
index 7285298283..dfe6438d79 100644
--- a/code/controllers/subsystem/assets.dm
+++ b/code/controllers/subsystem/assets.dm
@@ -14,5 +14,5 @@ SUBSYSTEM_DEF(assets)
preload = cache.Copy() //don't preload assets generated during the round
for(var/client/C in GLOB.clients)
- addtimer(CALLBACK(GLOBAL_PROC, .proc/getFilesSlow, C, preload, FALSE), 10)
+ addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(getFilesSlow), C, preload, FALSE), 10)
..()
diff --git a/code/controllers/subsystem/dbcore.dm b/code/controllers/subsystem/dbcore.dm
index cf54f21be0..f4fa0a8d63 100644
--- a/code/controllers/subsystem/dbcore.dm
+++ b/code/controllers/subsystem/dbcore.dm
@@ -191,9 +191,9 @@ SUBSYSTEM_DEF(dbcore)
for (var/thing in querys)
var/datum/DBQuery/query = thing
if (warn)
- INVOKE_ASYNC(query, /datum/DBQuery.proc/warn_execute)
+ INVOKE_ASYNC(query, TYPE_PROC_REF(/datum/DBQuery, warn_execute))
else
- INVOKE_ASYNC(query, /datum/DBQuery.proc/Execute)
+ INVOKE_ASYNC(query, TYPE_PROC_REF(/datum/DBQuery, Execute))
for (var/thing in querys)
var/datum/DBQuery/query = thing
diff --git a/code/controllers/subsystem/job.dm b/code/controllers/subsystem/job.dm
index 5c20859951..4f4b93a6cf 100644
--- a/code/controllers/subsystem/job.dm
+++ b/code/controllers/subsystem/job.dm
@@ -815,7 +815,7 @@ SUBSYSTEM_DEF(job)
var/oldjobs = SSjob.occupations
sleep(20)
for (var/datum/job/J in oldjobs)
- INVOKE_ASYNC(src, .proc/RecoverJob, J)
+ INVOKE_ASYNC(src, PROC_REF(RecoverJob), J)
/datum/controller/subsystem/job/proc/RecoverJob(datum/job/J)
var/datum/job/newjob = GetJob(J.title)
diff --git a/code/controllers/subsystem/mapping.dm b/code/controllers/subsystem/mapping.dm
index 6fdf5ff046..fc10d236ef 100644
--- a/code/controllers/subsystem/mapping.dm
+++ b/code/controllers/subsystem/mapping.dm
@@ -122,7 +122,7 @@ SUBSYSTEM_DEF(mapping)
message_admins("Shuttles in transit detected. Attempting to fast travel. Timeout is [wipe_safety_delay/10] seconds.")
var/list/cleared = list()
for(var/i in in_transit)
- INVOKE_ASYNC(src, .proc/safety_clear_transit_dock, i, in_transit[i], cleared)
+ INVOKE_ASYNC(src, PROC_REF(safety_clear_transit_dock), i, in_transit[i], cleared)
UNTIL((go_ahead < world.time) || (cleared.len == in_transit.len))
do_wipe_turf_reservations()
clearing_reserved_turfs = FALSE
@@ -383,7 +383,7 @@ GLOBAL_LIST_EMPTY(the_station_areas)
var/list/banned = generateMapList("[global.config.directory]/lavaruinblacklist.txt")
banned += generateMapList("[global.config.directory]/spaceruinblacklist.txt")
- for(var/item in sortList(subtypesof(/datum/map_template/ruin), /proc/cmp_ruincost_priority))
+ for(var/item in sortList(subtypesof(/datum/map_template/ruin), GLOBAL_PROC_REF(cmp_ruincost_priority)))
var/datum/map_template/ruin/ruin_type = item
// screen out the abstract subtypes
if(!initial(ruin_type.id))
diff --git a/code/controllers/subsystem/pai.dm b/code/controllers/subsystem/pai.dm
index 448e975d13..56539f2b52 100644
--- a/code/controllers/subsystem/pai.dm
+++ b/code/controllers/subsystem/pai.dm
@@ -147,7 +147,7 @@ SUBSYSTEM_DEF(pai)
if(!(ROLE_PAI in G.client.prefs.be_special))
continue
to_chat(G, "[user] is requesting a pAI personality! Use the pAI button to submit myself as one.")
- addtimer(CALLBACK(src, .proc/spam_again), spam_delay)
+ addtimer(CALLBACK(src, PROC_REF(spam_again)), spam_delay)
var/list/available = list()
for(var/datum/paiCandidate/c in SSpai.candidates)
available.Add(check_ready(c))
diff --git a/code/controllers/subsystem/pathfinder.dm b/code/controllers/subsystem/pathfinder.dm
index ccbea79306..21ee7ea60b 100644
--- a/code/controllers/subsystem/pathfinder.dm
+++ b/code/controllers/subsystem/pathfinder.dm
@@ -31,7 +31,7 @@ SUBSYSTEM_DEF(pathfinder)
while(flow[free])
CHECK_TICK
free = (free % lcount) + 1
- var/t = addtimer(CALLBACK(src, /datum/flowcache.proc/toolong, free), 150, TIMER_STOPPABLE)
+ var/t = addtimer(CALLBACK(src, TYPE_PROC_REF(/datum/flowcache, toolong), free), 150, TIMER_STOPPABLE)
flow[free] = t
flow[t] = M
return free
diff --git a/code/controllers/subsystem/processing/quirks.dm b/code/controllers/subsystem/processing/quirks.dm
index b4d29ef759..cd51dcd05d 100644
--- a/code/controllers/subsystem/processing/quirks.dm
+++ b/code/controllers/subsystem/processing/quirks.dm
@@ -22,7 +22,7 @@ PROCESSING_SUBSYSTEM_DEF(quirks)
/datum/controller/subsystem/processing/quirks/proc/SetupQuirks()
// Sort by Positive, Negative, Neutral; and then by name
- var/list/quirk_list = sortList(subtypesof(/datum/quirk), /proc/cmp_quirk_asc)
+ var/list/quirk_list = sortList(subtypesof(/datum/quirk), GLOBAL_PROC_REF(cmp_quirk_asc))
for(var/V in quirk_list)
var/datum/quirk/T = V
diff --git a/code/controllers/subsystem/rogue/devotion.dm b/code/controllers/subsystem/rogue/devotion.dm
index 9280dd48d5..2696313384 100644
--- a/code/controllers/subsystem/rogue/devotion.dm
+++ b/code/controllers/subsystem/rogue/devotion.dm
@@ -14,6 +14,7 @@
var/holder_mob = null
var/patron = null
var/devotion = 0
+ var/max_devotion = 1000
var/progression = 0
var/level = CLERIC_T0
@@ -31,6 +32,10 @@
/datum/devotion/cleric_holder/proc/update_devotion(dev_amt, prog_amt)
var/datum/patrongods/P = patron
devotion += dev_amt
+ //Max devotion limit
+ if(devotion > max_devotion)
+ devotion = max_devotion
+ to_chat(holder_mob, "I have reached the limit of my devotion...")
if(!prog_amt) // no point in the rest if it's just an expenditure
return
progression += prog_amt
@@ -84,6 +89,9 @@
visible_message("[src] kneels their head in prayer to the Gods.", "I kneel my head in prayer to [PATRON]")
for(var/i in 1 to 20)
if(do_after(src, 30))
+ if(C.devotion >= C.max_devotion)
+ to_chat(src, "I have reached the limit of my devotion...")
+ break
C.update_devotion(2, 2)
prayersesh += 2
else
diff --git a/code/controllers/subsystem/shuttle.dm b/code/controllers/subsystem/shuttle.dm
index e8bf1b70a3..9434c98609 100644
--- a/code/controllers/subsystem/shuttle.dm
+++ b/code/controllers/subsystem/shuttle.dm
@@ -161,7 +161,7 @@ SUBSYSTEM_DEF(shuttle)
/datum/controller/subsystem/shuttle/proc/block_recall(lockout_timer)
emergencyNoRecall = TRUE
- addtimer(CALLBACK(src, .proc/unblock_recall), lockout_timer)
+ addtimer(CALLBACK(src, PROC_REF(unblock_recall)), lockout_timer)
/datum/controller/subsystem/shuttle/proc/unblock_recall()
emergencyNoRecall = FALSE
diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm
index 307bbfd4c8..b1a075faf5 100644
--- a/code/controllers/subsystem/ticker.dm
+++ b/code/controllers/subsystem/ticker.dm
@@ -616,7 +616,7 @@ SUBSYSTEM_DEF(ticker)
S.Fade(TRUE)
livings += living
if(livings.len)
- addtimer(CALLBACK(src, .proc/release_characters, livings), 30, TIMER_CLIENT_TIME)
+ addtimer(CALLBACK(src, PROC_REF(release_characters), livings), 30, TIMER_CLIENT_TIME)
/datum/controller/subsystem/ticker/proc/release_characters(list/livings)
for(var/I in livings)
@@ -684,7 +684,7 @@ SUBSYSTEM_DEF(ticker)
//map rotate chance defaults to 75% of the length of the round (in minutes)
if (!prob((world.time/600)*CONFIG_GET(number/maprotatechancedelta)))
return
- INVOKE_ASYNC(SSmapping, /datum/controller/subsystem/mapping/.proc/maprotate)
+ INVOKE_ASYNC(SSmapping, TYPE_PROC_REF(/datum/controller/subsystem/mapping, maprotate))
/datum/controller/subsystem/ticker/proc/HasRoundStarted()
return current_state >= GAME_STATE_PLAYING
@@ -797,7 +797,7 @@ SUBSYSTEM_DEF(ticker)
var/mob/dead/new_player/player = i
if(player.ready == PLAYER_READY_TO_OBSERVE && player.mind)
//Break chain since this has a sleep input in it
- addtimer(CALLBACK(player, /mob/dead/new_player.proc/make_me_an_observer), 1)
+ addtimer(CALLBACK(player, TYPE_PROC_REF(/mob/dead/new_player, make_me_an_observer)), 1)
/datum/controller/subsystem/ticker/proc/load_mode()
var/mode = trim(file2text("data/mode.txt"))
diff --git a/code/controllers/subsystem/timer.dm b/code/controllers/subsystem/timer.dm
index d65ba6b888..3e546759d3 100644
--- a/code/controllers/subsystem/timer.dm
+++ b/code/controllers/subsystem/timer.dm
@@ -258,7 +258,7 @@ SUBSYSTEM_DEF(timer)
if (!length(alltimers))
return
- sortTim(alltimers, .proc/cmp_timer)
+ sortTim(alltimers, PROC_REF(cmp_timer))
var/datum/timedevent/head = alltimers[1]
diff --git a/code/controllers/subsystem/vis_overlays.dm b/code/controllers/subsystem/vis_overlays.dm
index d67ce85bce..52be06cc4b 100644
--- a/code/controllers/subsystem/vis_overlays.dm
+++ b/code/controllers/subsystem/vis_overlays.dm
@@ -55,7 +55,7 @@ SUBSYSTEM_DEF(vis_overlays)
if(!thing.managed_vis_overlays)
thing.managed_vis_overlays = list(overlay)
- RegisterSignal(thing, COMSIG_ATOM_DIR_CHANGE, .proc/rotate_vis_overlay)
+ RegisterSignal(thing, COMSIG_ATOM_DIR_CHANGE, PROC_REF(rotate_vis_overlay))
else
thing.managed_vis_overlays += overlay
diff --git a/code/controllers/subsystem/weather.dm b/code/controllers/subsystem/weather.dm
index 55a4862330..5510a011cd 100644
--- a/code/controllers/subsystem/weather.dm
+++ b/code/controllers/subsystem/weather.dm
@@ -56,7 +56,7 @@ SUBSYSTEM_DEF(weather)
run_weather(W, list(text2num(z)))
eligible_zlevels -= z
var/randTime = rand(3000, 6000)
- addtimer(CALLBACK(src, .proc/make_eligible, z, possible_weather), randTime + initial(W.weather_duration_upper), TIMER_UNIQUE) //Around 5-10 minutes between weathers
+ addtimer(CALLBACK(src, PROC_REF(make_eligible), z, possible_weather), randTime + initial(W.weather_duration_upper), TIMER_UNIQUE) //Around 5-10 minutes between weathers
next_hit_by_zlevel["[z]"] = world.time + randTime + initial(W.telegraph_duration)*/
/datum/controller/subsystem/weather/Initialize(start_timeofday)
diff --git a/code/datums/beam.dm b/code/datums/beam.dm
index d0b6d791ec..7df6bf244f 100644
--- a/code/datums/beam.dm
+++ b/code/datums/beam.dm
@@ -30,7 +30,7 @@
icon_state = beam_icon_state
beam_type = btype
if(time < INFINITY)
- addtimer(CALLBACK(src,.proc/End), time)
+ addtimer(CALLBACK(src,PROC_REF(End)), time)
/datum/beam/proc/Start()
Draw()
@@ -61,13 +61,13 @@
/datum/beam/proc/recalculate_in(time)
if(timing_id)
deltimer(timing_id)
- timing_id = addtimer(CALLBACK(src, .proc/recalculate), time, TIMER_STOPPABLE)
+ timing_id = addtimer(CALLBACK(src, PROC_REF(recalculate)), time, TIMER_STOPPABLE)
/datum/beam/proc/after_calculate()
if((sleep_time == null) || finished) //Does not automatically recalculate.
return
if(isnull(timing_id))
- timing_id = addtimer(CALLBACK(src, .proc/recalculate), sleep_time, TIMER_STOPPABLE)
+ timing_id = addtimer(CALLBACK(src, PROC_REF(recalculate)), sleep_time, TIMER_STOPPABLE)
/datum/beam/proc/End(destroy_self = TRUE)
finished = TRUE
@@ -159,5 +159,5 @@
/atom/proc/Beam(atom/BeamTarget,icon_state="b_beam",icon='icons/effects/beam.dmi',time=50, maxdistance=10,beam_type=/obj/effect/ebeam,beam_sleep_time = 3)
var/datum/beam/newbeam = new(src,BeamTarget,icon,icon_state,time,maxdistance,beam_type,beam_sleep_time)
- INVOKE_ASYNC(newbeam, /datum/beam/.proc/Start)
+ INVOKE_ASYNC(newbeam, TYPE_PROC_REF(/datum/beam, Start))
return newbeam
diff --git a/code/datums/brain_damage/brain_trauma.dm b/code/datums/brain_damage/brain_trauma.dm
index 8374b43e8a..95f6f68bad 100644
--- a/code/datums/brain_damage/brain_trauma.dm
+++ b/code/datums/brain_damage/brain_trauma.dm
@@ -40,8 +40,8 @@
//Called when given to a mob
/datum/brain_trauma/proc/on_gain()
to_chat(owner, gain_text)
- RegisterSignal(owner, COMSIG_MOB_SAY, .proc/handle_speech)
- RegisterSignal(owner, COMSIG_MOVABLE_HEAR, .proc/handle_hearing)
+ RegisterSignal(owner, COMSIG_MOB_SAY, PROC_REF(handle_speech))
+ RegisterSignal(owner, COMSIG_MOVABLE_HEAR, PROC_REF(handle_hearing))
//Called when removed from a mob
/datum/brain_trauma/proc/on_lose(silent)
diff --git a/code/datums/brain_damage/imaginary_friend.dm b/code/datums/brain_damage/imaginary_friend.dm
index efcf522b07..5b06e743f0 100644
--- a/code/datums/brain_damage/imaginary_friend.dm
+++ b/code/datums/brain_damage/imaginary_friend.dm
@@ -23,7 +23,7 @@
qdel(src)
return
if(!friend.client && friend_initialized)
- addtimer(CALLBACK(src, .proc/reroll_friend), 600)
+ addtimer(CALLBACK(src, PROC_REF(reroll_friend)), 600)
/datum/brain_trauma/special/imaginary_friend/on_death()
..()
@@ -170,7 +170,7 @@
if(owner.client)
var/mutable_appearance/MA = mutable_appearance('icons/mob/talk.dmi', src, "default[say_test(message)]", FLY_LAYER)
MA.appearance_flags = APPEARANCE_UI_IGNORE_ALPHA
- INVOKE_ASYNC(GLOBAL_PROC, /proc/flick_overlay, MA, list(owner.client), 30)
+ INVOKE_ASYNC(GLOBAL_PROC, GLOBAL_PROC_REF(flick_overlay), MA, list(owner.client), 30)
for(var/mob/M in GLOB.dead_mob_list)
var/link = FOLLOW_LINK(M, owner)
diff --git a/code/datums/brain_damage/mild.dm b/code/datums/brain_damage/mild.dm
index b5347c46d9..9155b60501 100644
--- a/code/datums/brain_damage/mild.dm
+++ b/code/datums/brain_damage/mild.dm
@@ -178,8 +178,8 @@
to_chat(owner, "[pick("You have a coughing fit!", "You can't stop coughing!")]")
owner.Immobilize(20)
owner.emote("cough")
- addtimer(CALLBACK(owner, /mob/.proc/emote, "cough"), 6)
- addtimer(CALLBACK(owner, /mob/.proc/emote, "cough"), 12)
+ addtimer(CALLBACK(owner, TYPE_PROC_REF(/mob, emote), "cough"), 6)
+ addtimer(CALLBACK(owner, TYPE_PROC_REF(/mob, emote), "cough"), 12)
owner.emote("cough")
..()
diff --git a/code/datums/brain_damage/phobia.dm b/code/datums/brain_damage/phobia.dm
index e0105bfa37..88c6aebaf3 100644
--- a/code/datums/brain_damage/phobia.dm
+++ b/code/datums/brain_damage/phobia.dm
@@ -87,7 +87,7 @@
var/regex/reg = regex("(\\b|\\A)[REGEX_QUOTE(word)]'?s*(\\b|\\Z)", "i")
if(findtext(hearing_args[HEARING_RAW_MESSAGE], reg))
- addtimer(CALLBACK(src, .proc/freak_out, null, word), 10) //to react AFTER the chat message
+ addtimer(CALLBACK(src, PROC_REF(freak_out), null, word), 10) //to react AFTER the chat message
hearing_args[HEARING_MESSAGE] = reg.Replace(hearing_args[HEARING_MESSAGE], "$1")
break
diff --git a/code/datums/brain_damage/severe.dm b/code/datums/brain_damage/severe.dm
index 60cbddd2ea..0455c798a8 100644
--- a/code/datums/brain_damage/severe.dm
+++ b/code/datums/brain_damage/severe.dm
@@ -191,7 +191,7 @@
to_chat(owner, "I feel sick...")
else
to_chat(owner, "I feel really sick at the thought of being alone!")
- addtimer(CALLBACK(owner, /mob/living/carbon.proc/vomit, high_stress), 50) //blood vomit if high stress
+ addtimer(CALLBACK(owner, TYPE_PROC_REF(/mob/living/carbon, vomit), high_stress), 50) //blood vomit if high stress
if(2)
if(!high_stress)
to_chat(owner, "I can't stop shaking...")
diff --git a/code/datums/brain_damage/special.dm b/code/datums/brain_damage/special.dm
index 1294b3d3a7..562c0e5701 100644
--- a/code/datums/brain_damage/special.dm
+++ b/code/datums/brain_damage/special.dm
@@ -182,7 +182,7 @@
/datum/brain_trauma/special/death_whispers/proc/whispering()
ADD_TRAIT(owner, TRAIT_SIXTHSENSE, TRAUMA_TRAIT)
active = TRUE
- addtimer(CALLBACK(src, .proc/cease_whispering), rand(50, 300))
+ addtimer(CALLBACK(src, PROC_REF(cease_whispering)), rand(50, 300))
/datum/brain_trauma/special/death_whispers/proc/cease_whispering()
REMOVE_TRAIT(owner, TRAIT_SIXTHSENSE, TRAUMA_TRAIT)
@@ -226,7 +226,7 @@
var/atom/movable/AM = thing
SEND_SIGNAL(AM, COMSIG_MOVABLE_SECLUDED_LOCATION)
next_crisis = world.time + 600
- addtimer(CALLBACK(src, .proc/fade_in), duration)
+ addtimer(CALLBACK(src, PROC_REF(fade_in)), duration)
/datum/brain_trauma/special/existential_crisis/proc/fade_in()
QDEL_NULL(veil)
diff --git a/code/datums/brain_damage/split_personality.dm b/code/datums/brain_damage/split_personality.dm
index 4194c54364..4fcbf970b8 100644
--- a/code/datums/brain_damage/split_personality.dm
+++ b/code/datums/brain_damage/split_personality.dm
@@ -207,7 +207,7 @@
var/message = hearing_args[HEARING_MESSAGE]
if(findtext(message, codeword))
hearing_args[HEARING_MESSAGE] = replacetext(message, codeword, "[codeword]")
- addtimer(CALLBACK(src, /datum/brain_trauma/severe/split_personality.proc/switch_personalities), 10)
+ addtimer(CALLBACK(src, TYPE_PROC_REF(/datum/brain_trauma/severe/split_personality, switch_personalities)), 10)
/datum/brain_trauma/severe/split_personality/brainwashing/handle_speech(datum/source, list/speech_args)
if(findtext(speech_args[SPEECH_MESSAGE], codeword))
diff --git a/code/datums/browser.dm b/code/datums/browser.dm
index 7ad1f75b2d..1424dae799 100644
--- a/code/datums/browser.dm
+++ b/code/datums/browser.dm
@@ -233,7 +233,7 @@
winset(user, "mapwindow", "focus=true")
break
if (timeout)
- addtimer(CALLBACK(src, .proc/close), timeout)
+ addtimer(CALLBACK(src, PROC_REF(close)), timeout)
/datum/browser/modal/proc/wait()
while (opentime && selectedbutton <= 0 && (!timeout || opentime+timeout > world.time))
diff --git a/code/datums/callback.dm b/code/datums/callback.dm
index 706c8ac963..7ef4b53637 100644
--- a/code/datums/callback.dm
+++ b/code/datums/callback.dm
@@ -1,53 +1,45 @@
/**
- *# Callback Datums
- *A datum that holds a proc to be called on another object, used to track proccalls to other objects
- *
- * ## USAGE
- *
- * ```
- * var/datum/callback/C = new(object|null, /proc/type/path|"procstring", arg1, arg2, ... argn)
- * var/timerid = addtimer(C, time, timertype)
- * you can also use the compiler define shorthand
- * var/timerid = addtimer(CALLBACK(object|null, /proc/type/path|procstring, arg1, arg2, ... argn), time, timertype)
- * ```
- *
- * Note: proc strings can only be given for datum proc calls, global procs must be proc paths
- *
- * Also proc strings are strongly advised against because they don't compile error if the proc stops existing
- *
- * In some cases you can provide a shortform of the procname, see the proc typepath shortcuts documentation below
- *
- * ## INVOKING THE CALLBACK
- *`var/result = C.Invoke(args, to, add)` additional args are added after the ones given when the callback was created
- *
- * `var/result = C.InvokeAsync(args, to, add)` Asyncronous - returns . on the first sleep then continues on in the background
- * after the sleep/block ends, otherwise operates normally.
- *
- * ## PROC TYPEPATH SHORTCUTS
- * (these operate on paths, not types, so to these shortcuts, datum is NOT a parent of atom, etc...)
- *
- * ### global proc while in another global proc:
- * .procname
- *
- * `CALLBACK(GLOBAL_PROC, .some_proc_here)`
- *
- * ### proc defined on current(src) object (when in a /proc/ and not an override) OR overridden at src or any of it's parents:
- * .procname
- *
- * `CALLBACK(src, .some_proc_here)`
- *
- * ### when the above doesn't apply:
- *.proc/procname
- *
- * `CALLBACK(src, .proc/some_proc_here)`
- *
- *
- * proc defined on a parent of a some type
- *
- * `/some/type/.proc/some_proc_here`
- *
- * Otherwise you must always provide the full typepath of the proc (/type/of/thing/proc/procname)
- */
+ *# Callback Datums
+ *A datum that holds a proc to be called on another object, used to track proccalls to other objects
+ *
+ * ## USAGE
+ *
+ * ```
+ * var/datum/callback/C = new(object|null, PROC_REF(procname), arg1, arg2, ... argn)
+ * var/timerid = addtimer(C, time, timertype)
+ * you can also use the compiler define shorthand
+ * var/timerid = addtimer(CALLBACK(object|null, PROC_REF(procname), arg1, arg2, ... argn), time, timertype)
+ * ```
+ *
+ * Note: proc strings can only be given for datum proc calls, global procs must be proc paths
+ *
+ * Also proc strings are strongly advised against because they don't compile error if the proc stops existing
+ *
+ * In some cases you can provide a shortform of the procname, see the proc typepath shortcuts documentation below
+ *
+ * ## INVOKING THE CALLBACK
+ *`var/result = C.Invoke(args, to, add)` additional args are added after the ones given when the callback was created
+ *
+ * `var/result = C.InvokeAsync(args, to, add)` Asyncronous - returns . on the first sleep then continues on in the background
+ * after the sleep/block ends, otherwise operates normally.
+ *
+ * ## PROC TYPEPATH SHORTCUTS
+ * (these operate on paths, not types, so to these shortcuts, datum is NOT a parent of atom, etc...)
+ *
+ * ### proc defined on current(src) object OR overridden at src or any of it's parents:
+ * PROC_REF(procname)
+ *
+ * `CALLBACK(src, PROC_REF(some_proc_here))`
+ *
+ * ### global proc
+ * GLOBAL_PROC_REF(procname)
+ *
+ * `CALLBACK(src, GLOBAL_PROC_REF(some_proc_here))`
+ *
+ *
+ * ### proc defined on some type
+ * TYPE_PROC_REF(/some/type/, some_proc_here)
+ */
/datum/callback
///The object we will be calling the proc on
diff --git a/code/datums/chatmessage.dm b/code/datums/chatmessage.dm
index 85f8da1b7e..4bd9ad2e07 100644
--- a/code/datums/chatmessage.dm
+++ b/code/datums/chatmessage.dm
@@ -49,7 +49,7 @@
stack_trace("/datum/chatmessage created with [isnull(owner) ? "null" : "invalid"] mob owner")
qdel(src)
return
- INVOKE_ASYNC(src, .proc/generate_image, text, target, owner, extra_classes, lifespan)
+ INVOKE_ASYNC(src, PROC_REF(generate_image), text, target, owner, extra_classes, lifespan)
/datum/chatmessage/Destroy()
if (owned_by)
@@ -74,7 +74,7 @@
/datum/chatmessage/proc/generate_image(text, atom/target, mob/owner, list/extra_classes, lifespan)
// Register client who owns this message
owned_by = owner.client
- RegisterSignal(owned_by, COMSIG_PARENT_QDELETING, .proc/qdel, src)
+ RegisterSignal(owned_by, COMSIG_PARENT_QDELETING, PROC_REF(qdel), src)
// Clip message
var/maxlen = owned_by.prefs.max_chat_length
@@ -129,7 +129,7 @@
WXH_TO_HEIGHT(owned_by.MeasureText(complete_text, null, CHAT_MESSAGE_WIDTH), mheight)
if(!VERB_SHOULD_YIELD)
return finish_image_generation(mheight, target, owner, complete_text, lifespan)
- var/datum/callback/our_callback = CALLBACK(src, .proc/finish_image_generation, mheight, target, owner, complete_text, lifespan)
+ var/datum/callback/our_callback = CALLBACK(src, PROC_REF(finish_image_generation), mheight, target, owner, complete_text, lifespan)
SSrunechat.message_queue += our_callback
@@ -153,7 +153,7 @@
// if (sched_remaining > CHAT_MESSAGE_SPAWN_TIME)
// var/remaining_time = (sched_remaining) * (CHAT_MESSAGE_EXP_DECAY ** idx++) * (CHAT_MESSAGE_HEIGHT_DECAY ** combined_height)
// m.scheduled_destruction = world.time + remaining_time
-// addtimer(CALLBACK(m, .proc/end_of_life), remaining_time, TIMER_UNIQUE|TIMER_OVERRIDE)
+// addtimer(CALLBACK(m, PROC_REF(end_of_life)), remaining_time, TIMER_UNIQUE|TIMER_OVERRIDE)
qdel(m)
// Build message image
@@ -174,7 +174,7 @@
// Prepare for destruction
scheduled_destruction = world.time + (lifespan - CHAT_MESSAGE_EOL_FADE)
- addtimer(CALLBACK(src, .proc/end_of_life), lifespan - CHAT_MESSAGE_EOL_FADE, TIMER_UNIQUE|TIMER_OVERRIDE)
+ addtimer(CALLBACK(src, PROC_REF(end_of_life)), lifespan - CHAT_MESSAGE_EOL_FADE, TIMER_UNIQUE|TIMER_OVERRIDE)
diff --git a/code/datums/components/anti_magic.dm b/code/datums/components/anti_magic.dm
index c573b38837..3cc7202680 100644
--- a/code/datums/components/anti_magic.dm
+++ b/code/datums/components/anti_magic.dm
@@ -10,10 +10,10 @@
/datum/component/anti_magic/Initialize(_magic = FALSE, _holy = FALSE, _psychic = FALSE, _allowed_slots, _charges, _blocks_self = TRUE, datum/callback/_reaction, datum/callback/_expire)
if(isitem(parent))
- RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, .proc/on_equip)
- RegisterSignal(parent, COMSIG_ITEM_DROPPED, .proc/on_drop)
+ RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, PROC_REF(on_equip))
+ RegisterSignal(parent, COMSIG_ITEM_DROPPED, PROC_REF(on_drop))
else if(ismob(parent))
- RegisterSignal(parent, COMSIG_MOB_RECEIVE_MAGIC, .proc/protect)
+ RegisterSignal(parent, COMSIG_MOB_RECEIVE_MAGIC, PROC_REF(protect))
else
return COMPONENT_INCOMPATIBLE
@@ -32,7 +32,7 @@
if(!CHECK_BITFIELD(allowed_slots, slotdefine2slotbit(slot))) //Check that the slot is valid for antimagic
UnregisterSignal(equipper, COMSIG_MOB_RECEIVE_MAGIC)
return
- RegisterSignal(equipper, COMSIG_MOB_RECEIVE_MAGIC, .proc/protect, TRUE)
+ RegisterSignal(equipper, COMSIG_MOB_RECEIVE_MAGIC, PROC_REF(protect), TRUE)
/datum/component/anti_magic/proc/on_drop(datum/source, mob/user)
UnregisterSignal(user, COMSIG_MOB_RECEIVE_MAGIC)
diff --git a/code/datums/components/archaeology.dm b/code/datums/components/archaeology.dm
index 449c3560f0..35e0bf74c0 100644
--- a/code/datums/components/archaeology.dm
+++ b/code/datums/components/archaeology.dm
@@ -15,9 +15,9 @@
archdrops[i][ARCH_PROB] = 100
stack_trace("ARCHAEOLOGY WARNING: [parent] contained a null probability value in [i].")
callback = _callback
- RegisterSignal(parent, COMSIG_PARENT_ATTACKBY,.proc/Dig)
- RegisterSignal(parent, COMSIG_ATOM_EX_ACT, .proc/BombDig)
- RegisterSignal(parent, COMSIG_ATOM_SING_PULL, .proc/SingDig)
+ RegisterSignal(parent, COMSIG_PARENT_ATTACKBY,PROC_REF(Dig))
+ RegisterSignal(parent, COMSIG_ATOM_EX_ACT, PROC_REF(BombDig))
+ RegisterSignal(parent, COMSIG_ATOM_SING_PULL, PROC_REF(SingDig))
/datum/component/archaeology/InheritComponent(datum/component/archaeology/A, i_am_original)
var/list/other_archdrops = A.archdrops
diff --git a/code/datums/components/armor_plate.dm b/code/datums/components/armor_plate.dm
index e7946e2129..d3e7641e48 100644
--- a/code/datums/components/armor_plate.dm
+++ b/code/datums/components/armor_plate.dm
@@ -9,9 +9,9 @@
if(!isobj(parent))
return COMPONENT_INCOMPATIBLE
- RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/examine)
- RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, .proc/applyplate)
- RegisterSignal(parent, COMSIG_PARENT_PREQDELETED, .proc/dropplates)
+ RegisterSignal(parent, COMSIG_PARENT_EXAMINE, PROC_REF(examine))
+ RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, PROC_REF(applyplate))
+ RegisterSignal(parent, COMSIG_PARENT_PREQDELETED, PROC_REF(dropplates))
if(_maxamount)
maxamount = _maxamount
diff --git a/code/datums/components/art.dm b/code/datums/components/art.dm
index 693de5ee6d..e6f5e8ca47 100644
--- a/code/datums/components/art.dm
+++ b/code/datums/components/art.dm
@@ -4,13 +4,13 @@
/datum/component/art/Initialize(impress)
impressiveness = impress
if(isobj(parent))
- RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/on_obj_examine)
+ RegisterSignal(parent, COMSIG_PARENT_EXAMINE, PROC_REF(on_obj_examine))
else
- RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/on_other_examine)
+ RegisterSignal(parent, COMSIG_PARENT_EXAMINE, PROC_REF(on_other_examine))
if(isstructure(parent))
- RegisterSignal(parent, COMSIG_ATOM_ATTACK_HAND, .proc/on_attack_hand)
+ RegisterSignal(parent, COMSIG_ATOM_ATTACK_HAND, PROC_REF(on_attack_hand))
if(isitem(parent))
- RegisterSignal(parent, COMSIG_ITEM_ATTACK_SELF, .proc/apply_moodlet)
+ RegisterSignal(parent, COMSIG_ITEM_ATTACK_SELF, PROC_REF(apply_moodlet))
/datum/component/art/proc/apply_moodlet(mob/M, impress)
M.visible_message("[M] stops and looks intently at [parent].", \
diff --git a/code/datums/components/bane.dm b/code/datums/components/bane.dm
index fa4292e37e..79e2937723 100644
--- a/code/datums/components/bane.dm
+++ b/code/datums/components/bane.dm
@@ -20,9 +20,9 @@
/datum/component/bane/RegisterWithParent()
if(speciestype)
- RegisterSignal(parent, COMSIG_ITEM_AFTERATTACK, .proc/speciesCheck)
+ RegisterSignal(parent, COMSIG_ITEM_AFTERATTACK, PROC_REF(speciesCheck))
else
- RegisterSignal(parent, COMSIG_ITEM_AFTERATTACK, .proc/mobCheck)
+ RegisterSignal(parent, COMSIG_ITEM_AFTERATTACK, PROC_REF(mobCheck))
/datum/component/bane/UnregisterFromParent()
UnregisterSignal(parent, COMSIG_ITEM_AFTERATTACK)
diff --git a/code/datums/components/beauty.dm b/code/datums/components/beauty.dm
index 1be21cf0cb..f5bffb4235 100644
--- a/code/datums/components/beauty.dm
+++ b/code/datums/components/beauty.dm
@@ -5,8 +5,8 @@
if(!ismovableatom(parent))
return COMPONENT_INCOMPATIBLE
beauty = beautyamount
- RegisterSignal(parent, COMSIG_ENTER_AREA, .proc/enter_area)
- RegisterSignal(parent, COMSIG_EXIT_AREA, .proc/exit_area)
+ RegisterSignal(parent, COMSIG_ENTER_AREA, PROC_REF(enter_area))
+ RegisterSignal(parent, COMSIG_EXIT_AREA, PROC_REF(exit_area))
var/area/A = get_area(parent)
if(A)
enter_area(null, A)
diff --git a/code/datums/components/beetlejuice.dm b/code/datums/components/beetlejuice.dm
index 2ae78ad3ac..92c404cb52 100644
--- a/code/datums/components/beetlejuice.dm
+++ b/code/datums/components/beetlejuice.dm
@@ -23,7 +23,7 @@
keyword = M.real_name
update_regex()
- RegisterSignal(SSdcs, COMSIG_GLOB_LIVING_SAY_SPECIAL, .proc/say_react)
+ RegisterSignal(SSdcs, COMSIG_GLOB_LIVING_SAY_SPECIAL, PROC_REF(say_react))
/datum/component/beetlejuice/proc/update_regex()
R = regex("[REGEX_QUOTE(keyword)]","g[case_sensitive ? "" : "i"]")
diff --git a/code/datums/components/butchering.dm b/code/datums/components/butchering.dm
index b1212ce58a..9519870aaa 100644
--- a/code/datums/components/butchering.dm
+++ b/code/datums/components/butchering.dm
@@ -20,7 +20,7 @@
if(_can_be_blunt)
can_be_blunt = _can_be_blunt
if(isitem(parent))
- RegisterSignal(parent, COMSIG_ITEM_ATTACK, .proc/onItemAttack)
+ RegisterSignal(parent, COMSIG_ITEM_ATTACK, PROC_REF(onItemAttack))
/datum/component/butchering/proc/onItemAttack(obj/item/source, mob/living/M, mob/living/user)
return
@@ -28,7 +28,7 @@
return
if(M.stat == DEAD && (M.butcher_results || M.guaranteed_butcher_results)) //can we butcher it?
if(butchering_enabled && (can_be_blunt || source.get_sharpness()))
- INVOKE_ASYNC(src, .proc/startButcher, source, M, user)
+ INVOKE_ASYNC(src, PROC_REF(startButcher), source, M, user)
return COMPONENT_ITEM_NO_ATTACK
if(ishuman(M) && source.force && source.get_sharpness())
@@ -38,7 +38,7 @@
user.show_message("[H]'s neck has already been already cut, you can't make the bleeding any worse!", MSG_VISUAL, \
"Their neck has already been already cut, you can't make the bleeding any worse!")
return COMPONENT_ITEM_NO_ATTACK
- INVOKE_ASYNC(src, .proc/startNeckSlice, source, H, user)
+ INVOKE_ASYNC(src, PROC_REF(startNeckSlice), source, H, user)
return COMPONENT_ITEM_NO_ATTACK
/datum/component/butchering/proc/startButcher(obj/item/source, mob/living/M, mob/living/user)
@@ -113,7 +113,7 @@
. = ..()
if(. == COMPONENT_INCOMPATIBLE)
return
- RegisterSignal(parent, COMSIG_MOVABLE_CROSSED, .proc/onCrossed)
+ RegisterSignal(parent, COMSIG_MOVABLE_CROSSED, PROC_REF(onCrossed))
/datum/component/butchering/recycler/proc/onCrossed(datum/source, mob/living/L)
if(!istype(L))
diff --git a/code/datums/components/caltrop.dm b/code/datums/components/caltrop.dm
index e5eeeaadc2..5cda6e1e8b 100644
--- a/code/datums/components/caltrop.dm
+++ b/code/datums/components/caltrop.dm
@@ -12,7 +12,7 @@
probability = _probability
flags = _flags
- RegisterSignal(parent, list(COMSIG_MOVABLE_CROSSED), .proc/Crossed)
+ RegisterSignal(parent, list(COMSIG_MOVABLE_CROSSED), PROC_REF(Crossed))
/datum/component/caltrop/proc/Crossed(datum/source, atom/movable/AM)
var/atom/A = parent
diff --git a/code/datums/components/chasm.dm b/code/datums/components/chasm.dm
index b6cd321f93..fb4f137d89 100644
--- a/code/datums/components/chasm.dm
+++ b/code/datums/components/chasm.dm
@@ -24,7 +24,7 @@
))
/datum/component/chasm/Initialize(turf/target)
- RegisterSignal(parent, list(COMSIG_MOVABLE_CROSSED, COMSIG_ATOM_ENTERED), .proc/Entered)
+ RegisterSignal(parent, list(COMSIG_MOVABLE_CROSSED, COMSIG_ATOM_ENTERED), PROC_REF(Entered))
target_turf = target
START_PROCESSING(SSobj, src) // process on create, in case stuff is still there
@@ -57,7 +57,7 @@
for (var/thing in to_check)
if (droppable(thing))
. = 1
- INVOKE_ASYNC(src, .proc/drop, thing)
+ INVOKE_ASYNC(src, PROC_REF(drop), thing)
/datum/component/chasm/proc/droppable(atom/movable/AM)
// avoid an infinite loop, but allow falling a large distance
diff --git a/code/datums/components/construction.dm b/code/datums/components/construction.dm
index 01df44752c..45ef560297 100644
--- a/code/datums/components/construction.dm
+++ b/code/datums/components/construction.dm
@@ -15,8 +15,8 @@
if(!isatom(parent))
return COMPONENT_INCOMPATIBLE
- RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/examine)
- RegisterSignal(parent, COMSIG_PARENT_ATTACKBY,.proc/action)
+ RegisterSignal(parent, COMSIG_PARENT_EXAMINE, PROC_REF(examine))
+ RegisterSignal(parent, COMSIG_PARENT_ATTACKBY,PROC_REF(action))
update_parent(index)
/datum/component/construction/proc/examine(datum/source, mob/user, list/examine_list)
diff --git a/code/datums/components/crafting/crafting.dm b/code/datums/components/crafting/crafting.dm
index 87b2367765..59614e9f40 100644
--- a/code/datums/components/crafting/crafting.dm
+++ b/code/datums/components/crafting/crafting.dm
@@ -3,7 +3,7 @@
return COMPONENT_INCOMPATIBLE
var/mob/living/L = parent
L.craftingthing = src
-// RegisterSignal(parent, COMSIG_MOB_CLIENT_LOGIN, .proc/create_mob_button)
+// RegisterSignal(parent, COMSIG_MOB_CLIENT_LOGIN, PROC_REF(create_mob_button))
/*
/datum/component/personal_crafting/proc/create_mob_button(mob/user, client/CL)
var/datum/hud/H = user.hud_used
@@ -11,7 +11,7 @@
C.icon = H.ui_style
H.static_inventory += C
CL.screen += C
- RegisterSignal(C, COMSIG_CLICK, .proc/roguecraft)
+ RegisterSignal(C, COMSIG_CLICK, PROC_REF(roguecraft))
*/
/datum/component/personal_crafting
var/busy
@@ -144,7 +144,7 @@
return FALSE
return TRUE
-/atom/proc/OnCrafted(dirin)
+/atom/proc/OnCrafted(dirin, user)
return
/obj/item/OnCrafted(dirin)
@@ -261,16 +261,16 @@
for(var/IT in L)
var/atom/movable/I = new IT(T)
I.CheckParts(parts, R)
- I.OnCrafted(user.dir)
+ I.OnCrafted(user.dir, user)
else
if(ispath(R.result, /turf))
var/turf/X = T.PlaceOnTop(R.result)
if(X)
- X.OnCrafted(user.dir)
+ X.OnCrafted(user.dir, user)
else
var/atom/movable/I = new R.result (T)
I.CheckParts(parts, R)
- I.OnCrafted(user.dir)
+ I.OnCrafted(user.dir, user)
user.visible_message("[user] [R.verbage] \a [R.name]!", \
"I [R.verbage] \a [R.name]!")
if(user.mind && R.skillcraft)
diff --git a/code/datums/components/creamed.dm b/code/datums/components/creamed.dm
index 278bb3c9b1..b895c2a0bd 100644
--- a/code/datums/components/creamed.dm
+++ b/code/datums/components/creamed.dm
@@ -49,7 +49,7 @@ GLOBAL_LIST_INIT(creamable, typecacheof(list(
RegisterSignal(parent, list(
COMSIG_COMPONENT_CLEAN_ACT,
COMSIG_COMPONENT_CLEAN_FACE_ACT),
- .proc/clean_up)
+ PROC_REF(clean_up))
/datum/component/creamed/UnregisterFromParent()
UnregisterSignal(parent, list(
diff --git a/code/datums/components/deadchat_control.dm b/code/datums/components/deadchat_control.dm
index 7c6398e51a..8304557286 100644
--- a/code/datums/components/deadchat_control.dm
+++ b/code/datums/components/deadchat_control.dm
@@ -14,13 +14,13 @@
/datum/component/deadchat_control/Initialize(_deadchat_mode, _inputs, _input_cooldown = 12 SECONDS)
if(!isatom(parent))
return COMPONENT_INCOMPATIBLE
- RegisterSignal(parent, COMSIG_ATOM_ORBIT_BEGIN, .proc/orbit_begin)
- RegisterSignal(parent, COMSIG_ATOM_ORBIT_STOP, .proc/orbit_stop)
+ RegisterSignal(parent, COMSIG_ATOM_ORBIT_BEGIN, PROC_REF(orbit_begin))
+ RegisterSignal(parent, COMSIG_ATOM_ORBIT_STOP, PROC_REF(orbit_stop))
deadchat_mode = _deadchat_mode
inputs = _inputs
input_cooldown = _input_cooldown
if(deadchat_mode == DEMOCRACY_MODE)
- timerid = addtimer(CALLBACK(src, .proc/democracy_loop), input_cooldown, TIMER_STOPPABLE | TIMER_LOOP)
+ timerid = addtimer(CALLBACK(src, PROC_REF(democracy_loop)), input_cooldown, TIMER_STOPPABLE | TIMER_LOOP)
notify_ghosts("[parent] is now deadchat controllable!", source = parent, action = NOTIFY_ORBIT, header="Something Interesting!")
@@ -40,7 +40,7 @@
return MOB_DEADSAY_SIGNAL_INTERCEPT
inputs[message].Invoke()
ckey_to_cooldown[source.ckey] = TRUE
- addtimer(CALLBACK(src, .proc/remove_cooldown, source.ckey), input_cooldown)
+ addtimer(CALLBACK(src, PROC_REF(remove_cooldown), source.ckey), input_cooldown)
else if(deadchat_mode == DEMOCRACY_MODE)
ckey_to_cooldown[source.ckey] = message
return MOB_DEADSAY_SIGNAL_INTERCEPT
@@ -92,12 +92,12 @@
return
ckey_to_cooldown = list()
if(var_value == DEMOCRACY_MODE)
- timerid = addtimer(CALLBACK(src, .proc/democracy_loop), input_cooldown, TIMER_STOPPABLE | TIMER_LOOP)
+ timerid = addtimer(CALLBACK(src, PROC_REF(democracy_loop)), input_cooldown, TIMER_STOPPABLE | TIMER_LOOP)
else
deltimer(timerid)
/datum/component/deadchat_control/proc/orbit_begin(atom/source, atom/orbiter)
- RegisterSignal(orbiter, COMSIG_MOB_DEADSAY, .proc/deadchat_react)
+ RegisterSignal(orbiter, COMSIG_MOB_DEADSAY, PROC_REF(deadchat_react))
orbiters |= orbiter
/datum/component/deadchat_control/proc/orbit_stop(atom/source, atom/orbiter)
diff --git a/code/datums/components/decal.dm b/code/datums/components/decal.dm
index ac129fca8e..214bc3a037 100644
--- a/code/datums/components/decal.dm
+++ b/code/datums/components/decal.dm
@@ -18,11 +18,11 @@
/datum/component/decal/RegisterWithParent()
if(first_dir)
- RegisterSignal(parent, COMSIG_ATOM_DIR_CHANGE, .proc/rotate_react)
+ RegisterSignal(parent, COMSIG_ATOM_DIR_CHANGE, PROC_REF(rotate_react))
if(cleanable)
- RegisterSignal(parent, COMSIG_COMPONENT_CLEAN_ACT, .proc/clean_react)
+ RegisterSignal(parent, COMSIG_COMPONENT_CLEAN_ACT, PROC_REF(clean_react))
if(description)
- RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/examine)
+ RegisterSignal(parent, COMSIG_PARENT_EXAMINE, PROC_REF(examine))
/datum/component/decal/UnregisterFromParent()
UnregisterSignal(parent, list(COMSIG_ATOM_DIR_CHANGE, COMSIG_COMPONENT_CLEAN_ACT, COMSIG_PARENT_EXAMINE))
@@ -54,7 +54,7 @@
if(isitem(master))
var/obj/item/I = master
I.update_slot_icon()
-// addtimer(CALLBACK(master, /obj/item/.proc/update_slot_icon), 0, TIMER_UNIQUE)
+// addtimer(CALLBACK(master, TYPE_PROC_REF(/obj/item, update_slot_icon)), 0, TIMER_UNIQUE)
/datum/component/decal/proc/remove(atom/thing)
var/atom/master = thing || parent
@@ -62,7 +62,7 @@
if(isitem(master))
var/obj/item/I = master
I.update_slot_icon()
-// addtimer(CALLBACK(master, /obj/item/.proc/update_slot_icon), 0, TIMER_UNIQUE)
+// addtimer(CALLBACK(master, TYPE_PROC_REF(/obj/item, update_slot_icon)), 0, TIMER_UNIQUE)
/datum/component/decal/proc/rotate_react(datum/source, old_dir, new_dir)
if(old_dir == new_dir)
diff --git a/code/datums/components/decals/blood.dm b/code/datums/components/decals/blood.dm
index 6c4ff12fca..90da19f24d 100644
--- a/code/datums/components/decals/blood.dm
+++ b/code/datums/components/decals/blood.dm
@@ -5,7 +5,7 @@
if(!isitem(parent))
return COMPONENT_INCOMPATIBLE
. = ..()
- RegisterSignal(parent, COMSIG_ATOM_GET_EXAMINE_NAME, .proc/get_examine_name)
+ RegisterSignal(parent, COMSIG_ATOM_GET_EXAMINE_NAME, PROC_REF(get_examine_name))
/datum/component/decal/blood/generate_appearance(_icon, _icon_state, _dir, _layer, _color)
testing("genappearance")
diff --git a/code/datums/components/dejavu.dm b/code/datums/components/dejavu.dm
index 6f3cd34bc3..495edef7a6 100644
--- a/code/datums/components/dejavu.dm
+++ b/code/datums/components/dejavu.dm
@@ -42,22 +42,22 @@
tox_loss = L.getToxLoss()
oxy_loss = L.getOxyLoss()
brain_loss = L.getOrganLoss(ORGAN_SLOT_BRAIN)
- rewind_type = .proc/rewind_living
+ rewind_type = PROC_REF(rewind_living)
if(iscarbon(parent))
var/mob/living/carbon/C = parent
saved_bodyparts = C.save_bodyparts()
- rewind_type = .proc/rewind_carbon
+ rewind_type = PROC_REF(rewind_carbon)
else if(isanimal(parent))
var/mob/living/simple_animal/M = parent
brute_loss = M.bruteloss
- rewind_type = .proc/rewind_animal
+ rewind_type = PROC_REF(rewind_animal)
else if(isobj(parent))
var/obj/O = parent
integrity = O.obj_integrity
- rewind_type = .proc/rewind_obj
+ rewind_type = PROC_REF(rewind_obj)
addtimer(CALLBACK(src, rewind_type), rewind_interval)
diff --git a/code/datums/components/earprotection.dm b/code/datums/components/earprotection.dm
index 9256c4310a..6439e49b83 100644
--- a/code/datums/components/earprotection.dm
+++ b/code/datums/components/earprotection.dm
@@ -1,7 +1,7 @@
/datum/component/wearertargeting/earprotection
signals = list(COMSIG_CARBON_SOUNDBANG)
mobtype = /mob/living/carbon
- proctype = .proc/reducebang
+ proctype = PROC_REF(reducebang)
/datum/component/wearertargeting/earprotection/Initialize(_valid_slots)
. = ..()
diff --git a/code/datums/components/edit_complainer.dm b/code/datums/components/edit_complainer.dm
index bf52296e2c..144a37a1fa 100644
--- a/code/datums/components/edit_complainer.dm
+++ b/code/datums/components/edit_complainer.dm
@@ -16,7 +16,7 @@
)
say_lines = text || default_lines
- RegisterSignal(SSdcs, COMSIG_GLOB_VAR_EDIT, .proc/var_edit_react)
+ RegisterSignal(SSdcs, COMSIG_GLOB_VAR_EDIT, PROC_REF(var_edit_react))
/datum/component/edit_complainer/proc/var_edit_react(datum/source, list/arguments)
var/atom/movable/master = parent
diff --git a/code/datums/components/empprotection.dm b/code/datums/components/empprotection.dm
index c85cdf31c7..25ab6ce97f 100644
--- a/code/datums/components/empprotection.dm
+++ b/code/datums/components/empprotection.dm
@@ -5,7 +5,7 @@
if(!istype(parent, /atom))
return COMPONENT_INCOMPATIBLE
flags = _flags
- RegisterSignal(parent, list(COMSIG_ATOM_EMP_ACT), .proc/getEmpFlags)
+ RegisterSignal(parent, list(COMSIG_ATOM_EMP_ACT), PROC_REF(getEmpFlags))
/datum/component/empprotection/proc/getEmpFlags(datum/source, severity)
return flags
diff --git a/code/datums/components/explodable.dm b/code/datums/components/explodable.dm
index 77065af1ac..baf384ad94 100644
--- a/code/datums/components/explodable.dm
+++ b/code/datums/components/explodable.dm
@@ -10,16 +10,16 @@
if(!isatom(parent))
return COMPONENT_INCOMPATIBLE
- RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, .proc/explodable_attack)
- RegisterSignal(parent, COMSIG_TRY_STORAGE_INSERT, .proc/explodable_insert_item)
- RegisterSignal(parent, COMSIG_ATOM_EX_ACT, .proc/detonate)
+ RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, PROC_REF(explodable_attack))
+ RegisterSignal(parent, COMSIG_TRY_STORAGE_INSERT, PROC_REF(explodable_insert_item))
+ RegisterSignal(parent, COMSIG_ATOM_EX_ACT, PROC_REF(detonate))
if(ismovableatom(parent))
- RegisterSignal(parent, COMSIG_MOVABLE_IMPACT, .proc/explodable_impact)
- RegisterSignal(parent, COMSIG_MOVABLE_BUMP, .proc/explodable_bump)
+ RegisterSignal(parent, COMSIG_MOVABLE_IMPACT, PROC_REF(explodable_impact))
+ RegisterSignal(parent, COMSIG_MOVABLE_BUMP, PROC_REF(explodable_bump))
if(isitem(parent))
- RegisterSignal(parent, list(COMSIG_ITEM_ATTACK, COMSIG_ITEM_ATTACK_OBJ, COMSIG_ITEM_HIT_REACT), .proc/explodable_attack)
- RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, .proc/on_equip)
- RegisterSignal(parent, COMSIG_ITEM_DROPPED, .proc/on_drop)
+ RegisterSignal(parent, list(COMSIG_ITEM_ATTACK, COMSIG_ITEM_ATTACK_OBJ, COMSIG_ITEM_HIT_REACT), PROC_REF(explodable_attack))
+ RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, PROC_REF(on_equip))
+ RegisterSignal(parent, COMSIG_ITEM_DROPPED, PROC_REF(on_drop))
@@ -56,7 +56,7 @@
detonate()
/datum/component/explodable/proc/on_equip(datum/source, mob/equipper, slot)
- RegisterSignal(equipper, COMSIG_MOB_APPLY_DAMGE, .proc/explodable_attack_zone, TRUE)
+ RegisterSignal(equipper, COMSIG_MOB_APPLY_DAMGE, PROC_REF(explodable_attack_zone), TRUE)
/datum/component/explodable/proc/on_drop(datum/source, mob/user)
UnregisterSignal(user, COMSIG_MOB_APPLY_DAMGE)
diff --git a/code/datums/components/footstep.dm b/code/datums/components/footstep.dm
index a9084feb8e..a38c44374a 100644
--- a/code/datums/components/footstep.dm
+++ b/code/datums/components/footstep.dm
@@ -22,7 +22,7 @@
if(FOOTSTEP_MOB_HUMAN)
if(!ishuman(parent))
return COMPONENT_INCOMPATIBLE
- RegisterSignal(parent, list(COMSIG_MOVABLE_MOVED), .proc/play_humanstep)
+ RegisterSignal(parent, list(COMSIG_MOVABLE_MOVED), PROC_REF(play_humanstep))
return
if(FOOTSTEP_MOB_CLAW)
footstep_sounds = GLOB.clawfootstep
@@ -34,7 +34,7 @@
footstep_sounds = GLOB.footstep
if(FOOTSTEP_MOB_SLIME)
footstep_sounds = 'sound/blank.ogg'
- RegisterSignal(parent, list(COMSIG_MOVABLE_MOVED), .proc/play_simplestep) //Note that this doesn't get called for humans.
+ RegisterSignal(parent, list(COMSIG_MOVABLE_MOVED), PROC_REF(play_simplestep)) //Note that this doesn't get called for humans.
///Prepares a footstep. Determines if it should get played. Returns the turf it should get played on. Note that it is always a /turf/open
/datum/component/footstep/proc/prepare_step()
diff --git a/code/datums/components/forced_gravity.dm b/code/datums/components/forced_gravity.dm
index fe9cfc861b..90051af551 100644
--- a/code/datums/components/forced_gravity.dm
+++ b/code/datums/components/forced_gravity.dm
@@ -5,9 +5,9 @@
/datum/component/forced_gravity/Initialize(forced_value = 1)
if(!isatom(parent))
return COMPONENT_INCOMPATIBLE
- RegisterSignal(parent, COMSIG_ATOM_HAS_GRAVITY, .proc/gravity_check)
+ RegisterSignal(parent, COMSIG_ATOM_HAS_GRAVITY, PROC_REF(gravity_check))
if(isturf(parent))
- RegisterSignal(parent, COMSIG_TURF_HAS_GRAVITY, .proc/turf_gravity_check)
+ RegisterSignal(parent, COMSIG_TURF_HAS_GRAVITY, PROC_REF(turf_gravity_check))
gravity = forced_value
diff --git a/code/datums/components/forensics.dm b/code/datums/components/forensics.dm
index 17f1628ecd..925b22c2a3 100644
--- a/code/datums/components/forensics.dm
+++ b/code/datums/components/forensics.dm
@@ -25,7 +25,7 @@
/datum/component/forensics/RegisterWithParent()
check_blood()
- RegisterSignal(parent, COMSIG_COMPONENT_CLEAN_ACT, .proc/clean_act)
+ RegisterSignal(parent, COMSIG_COMPONENT_CLEAN_ACT, PROC_REF(clean_act))
/datum/component/forensics/UnregisterFromParent()
UnregisterSignal(parent, list(COMSIG_COMPONENT_CLEAN_ACT))
diff --git a/code/datums/components/gps.dm b/code/datums/components/gps.dm
index 3118deb6c2..46bc4f69bc 100644
--- a/code/datums/components/gps.dm
+++ b/code/datums/components/gps.dm
@@ -28,11 +28,11 @@ GLOBAL_LIST_EMPTY(GPS_list)
var/atom/A = parent
A.add_overlay("working")
A.name = "[initial(A.name)] ([gpstag])"
- RegisterSignal(parent, COMSIG_ITEM_ATTACK_SELF, .proc/interact)
+ RegisterSignal(parent, COMSIG_ITEM_ATTACK_SELF, PROC_REF(interact))
if(!emp_proof)
- RegisterSignal(parent, COMSIG_ATOM_EMP_ACT, .proc/on_emp_act)
- RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/on_examine)
- RegisterSignal(parent, COMSIG_CLICK_ALT, .proc/on_AltClick)
+ RegisterSignal(parent, COMSIG_ATOM_EMP_ACT, PROC_REF(on_emp_act))
+ RegisterSignal(parent, COMSIG_PARENT_EXAMINE, PROC_REF(on_examine))
+ RegisterSignal(parent, COMSIG_CLICK_ALT, PROC_REF(on_AltClick))
///Called on COMSIG_ITEM_ATTACK_SELF
/datum/component/gps/item/proc/interact(datum/source, mob/user)
@@ -49,7 +49,7 @@ GLOBAL_LIST_EMPTY(GPS_list)
var/atom/A = parent
A.cut_overlay("working")
A.add_overlay("emp")
- addtimer(CALLBACK(src, .proc/reboot), 300, TIMER_UNIQUE|TIMER_OVERRIDE) //if a new EMP happens, remove the old timer so it doesn't reactivate early
+ addtimer(CALLBACK(src, PROC_REF(reboot)), 300, TIMER_UNIQUE|TIMER_OVERRIDE) //if a new EMP happens, remove the old timer so it doesn't reactivate early
SStgui.close_uis(src) //Close the UI control if it is open.
///Restarts the GPS after getting turned off by an EMP.
diff --git a/code/datums/components/heirloom.dm b/code/datums/components/heirloom.dm
index 72b28b125d..3c3f38d1d0 100644
--- a/code/datums/components/heirloom.dm
+++ b/code/datums/components/heirloom.dm
@@ -9,7 +9,7 @@
owner = new_owner
family_name = new_family_name
- RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/examine)
+ RegisterSignal(parent, COMSIG_PARENT_EXAMINE, PROC_REF(examine))
/datum/component/heirloom/proc/examine(datum/source, mob/user, list/examine_list)
if(user.mind == owner)
diff --git a/code/datums/components/igniter.dm b/code/datums/components/igniter.dm
index 175e826601..f45c9397b8 100644
--- a/code/datums/components/igniter.dm
+++ b/code/datums/components/igniter.dm
@@ -9,11 +9,11 @@
/datum/component/igniter/RegisterWithParent()
if(ismachinery(parent) || isstructure(parent) || isgun(parent)) // turrets, etc
- RegisterSignal(parent, COMSIG_PROJECTILE_ON_HIT, .proc/projectile_hit)
+ RegisterSignal(parent, COMSIG_PROJECTILE_ON_HIT, PROC_REF(projectile_hit))
else if(isitem(parent))
- RegisterSignal(parent, COMSIG_ITEM_AFTERATTACK, .proc/item_afterattack)
+ RegisterSignal(parent, COMSIG_ITEM_AFTERATTACK, PROC_REF(item_afterattack))
else if(ishostile(parent))
- RegisterSignal(parent, COMSIG_HOSTILE_ATTACKINGTARGET, .proc/hostile_attackingtarget)
+ RegisterSignal(parent, COMSIG_HOSTILE_ATTACKINGTARGET, PROC_REF(hostile_attackingtarget))
/datum/component/igniter/UnregisterFromParent()
UnregisterSignal(parent, list(COMSIG_ITEM_AFTERATTACK, COMSIG_HOSTILE_ATTACKINGTARGET, COMSIG_PROJECTILE_ON_HIT))
diff --git a/code/datums/components/infective.dm b/code/datums/components/infective.dm
index bf39c32f7d..9ac66037b1 100644
--- a/code/datums/components/infective.dm
+++ b/code/datums/components/infective.dm
@@ -15,19 +15,19 @@
if(!ismovableatom(parent))
return COMPONENT_INCOMPATIBLE
- RegisterSignal(parent, COMSIG_COMPONENT_CLEAN_ACT, .proc/clean)
- RegisterSignal(parent, COMSIG_MOVABLE_BUCKLE, .proc/try_infect_buckle)
- RegisterSignal(parent, COMSIG_MOVABLE_BUMP, .proc/try_infect_collide)
- RegisterSignal(parent, COMSIG_MOVABLE_CROSSED, .proc/try_infect_crossed)
- RegisterSignal(parent, COMSIG_MOVABLE_IMPACT_ZONE, .proc/try_infect_impact_zone)
+ RegisterSignal(parent, COMSIG_COMPONENT_CLEAN_ACT, PROC_REF(clean))
+ RegisterSignal(parent, COMSIG_MOVABLE_BUCKLE, PROC_REF(try_infect_buckle))
+ RegisterSignal(parent, COMSIG_MOVABLE_BUMP, PROC_REF(try_infect_collide))
+ RegisterSignal(parent, COMSIG_MOVABLE_CROSSED, PROC_REF(try_infect_crossed))
+ RegisterSignal(parent, COMSIG_MOVABLE_IMPACT_ZONE, PROC_REF(try_infect_impact_zone))
if(isitem(parent))
- RegisterSignal(parent, COMSIG_ITEM_ATTACK_ZONE, .proc/try_infect_attack_zone)
- RegisterSignal(parent, COMSIG_ITEM_ATTACK, .proc/try_infect_attack)
- RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, .proc/try_infect_equipped)
+ RegisterSignal(parent, COMSIG_ITEM_ATTACK_ZONE, PROC_REF(try_infect_attack_zone))
+ RegisterSignal(parent, COMSIG_ITEM_ATTACK, PROC_REF(try_infect_attack))
+ RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, PROC_REF(try_infect_equipped))
if(istype(parent, /obj/item/reagent_containers/food/snacks))
- RegisterSignal(parent, COMSIG_FOOD_EATEN, .proc/try_infect_eat)
+ RegisterSignal(parent, COMSIG_FOOD_EATEN, PROC_REF(try_infect_eat))
else if(istype(parent, /obj/effect/decal/cleanable/blood/gibs))
- RegisterSignal(parent, COMSIG_GIBS_STREAK, .proc/try_infect_streak)
+ RegisterSignal(parent, COMSIG_GIBS_STREAK, PROC_REF(try_infect_streak))
/datum/component/infective/proc/try_infect_eat(datum/source, mob/living/eater, mob/living/feeder)
for(var/V in diseases)
diff --git a/code/datums/components/jousting.dm b/code/datums/components/jousting.dm
index deef128494..cbb61b7832 100644
--- a/code/datums/components/jousting.dm
+++ b/code/datums/components/jousting.dm
@@ -18,12 +18,12 @@
/datum/component/jousting/Initialize()
if(!isitem(parent))
return COMPONENT_INCOMPATIBLE
- RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, .proc/on_equip)
- RegisterSignal(parent, COMSIG_ITEM_DROPPED, .proc/on_drop)
- RegisterSignal(parent, COMSIG_ITEM_ATTACK, .proc/on_attack)
+ RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, PROC_REF(on_equip))
+ RegisterSignal(parent, COMSIG_ITEM_DROPPED, PROC_REF(on_drop))
+ RegisterSignal(parent, COMSIG_ITEM_ATTACK, PROC_REF(on_attack))
/datum/component/jousting/proc/on_equip(datum/source, mob/user, slot)
- RegisterSignal(user, COMSIG_MOVABLE_MOVED, .proc/mob_move, TRUE)
+ RegisterSignal(user, COMSIG_MOVABLE_MOVED, PROC_REF(mob_move), TRUE)
current_holder = user
/datum/component/jousting/proc/on_drop(datum/source, mob/user)
@@ -68,7 +68,7 @@
current_tile_charge++
if(current_timerid)
deltimer(current_timerid)
- current_timerid = addtimer(CALLBACK(src, .proc/reset_charge), movement_reset_tolerance, TIMER_STOPPABLE)
+ current_timerid = addtimer(CALLBACK(src, PROC_REF(reset_charge)), movement_reset_tolerance, TIMER_STOPPABLE)
/datum/component/jousting/proc/reset_charge()
current_tile_charge = 0
diff --git a/code/datums/components/knockback.dm b/code/datums/components/knockback.dm
index 110c82ad06..48a6dc6dd3 100644
--- a/code/datums/components/knockback.dm
+++ b/code/datums/components/knockback.dm
@@ -11,11 +11,11 @@
/datum/component/knockback/RegisterWithParent()
if(ismachinery(parent) || isstructure(parent) || isgun(parent)) // turrets, etc
- RegisterSignal(parent, COMSIG_PROJECTILE_ON_HIT, .proc/projectile_hit)
+ RegisterSignal(parent, COMSIG_PROJECTILE_ON_HIT, PROC_REF(projectile_hit))
else if(isitem(parent))
- RegisterSignal(parent, COMSIG_ITEM_AFTERATTACK, .proc/item_afterattack)
+ RegisterSignal(parent, COMSIG_ITEM_AFTERATTACK, PROC_REF(item_afterattack))
else if(ishostile(parent))
- RegisterSignal(parent, COMSIG_HOSTILE_ATTACKINGTARGET, .proc/hostile_attackingtarget)
+ RegisterSignal(parent, COMSIG_HOSTILE_ATTACKINGTARGET, PROC_REF(hostile_attackingtarget))
/datum/component/knockback/UnregisterFromParent()
UnregisterSignal(parent, list(COMSIG_ITEM_AFTERATTACK, COMSIG_HOSTILE_ATTACKINGTARGET, COMSIG_PROJECTILE_ON_HIT))
diff --git a/code/datums/components/knockoff.dm b/code/datums/components/knockoff.dm
index 7626e28bd1..6ea3170af3 100644
--- a/code/datums/components/knockoff.dm
+++ b/code/datums/components/knockoff.dm
@@ -7,8 +7,8 @@
/datum/component/knockoff/Initialize(knockoff_chance,zone_override,slots_knockoffable)
if(!isitem(parent))
return COMPONENT_INCOMPATIBLE
- RegisterSignal(parent, COMSIG_ITEM_EQUIPPED,.proc/OnEquipped)
- RegisterSignal(parent, COMSIG_ITEM_DROPPED,.proc/OnDropped)
+ RegisterSignal(parent, COMSIG_ITEM_EQUIPPED,PROC_REF(OnEquipped))
+ RegisterSignal(parent, COMSIG_ITEM_DROPPED,PROC_REF(OnDropped))
src.knockoff_chance = knockoff_chance
@@ -38,7 +38,7 @@
if(slots_knockoffable && !(slot in slots_knockoffable))
UnregisterSignal(H, COMSIG_HUMAN_DISARM_HIT)
return
- RegisterSignal(H, COMSIG_HUMAN_DISARM_HIT, .proc/Knockoff, TRUE)
+ RegisterSignal(H, COMSIG_HUMAN_DISARM_HIT, PROC_REF(Knockoff), TRUE)
/datum/component/knockoff/proc/OnDropped(datum/source, mob/living/M)
UnregisterSignal(M, COMSIG_HUMAN_DISARM_HIT)
diff --git a/code/datums/components/lifesteal.dm b/code/datums/components/lifesteal.dm
index 499816f177..ae4b22b533 100644
--- a/code/datums/components/lifesteal.dm
+++ b/code/datums/components/lifesteal.dm
@@ -10,11 +10,11 @@
/datum/component/lifesteal/RegisterWithParent()
if(isgun(parent))
- RegisterSignal(parent, COMSIG_PROJECTILE_ON_HIT, .proc/projectile_hit)
+ RegisterSignal(parent, COMSIG_PROJECTILE_ON_HIT, PROC_REF(projectile_hit))
else if(isitem(parent))
- RegisterSignal(parent, COMSIG_ITEM_AFTERATTACK, .proc/item_afterattack)
+ RegisterSignal(parent, COMSIG_ITEM_AFTERATTACK, PROC_REF(item_afterattack))
else if(ishostile(parent))
- RegisterSignal(parent, COMSIG_HOSTILE_ATTACKINGTARGET, .proc/hostile_attackingtarget)
+ RegisterSignal(parent, COMSIG_HOSTILE_ATTACKINGTARGET, PROC_REF(hostile_attackingtarget))
/datum/component/lifesteal/UnregisterFromParent()
UnregisterSignal(parent, list(COMSIG_ITEM_AFTERATTACK, COMSIG_HOSTILE_ATTACKINGTARGET, COMSIG_PROJECTILE_ON_HIT))
diff --git a/code/datums/components/lockon_aiming.dm b/code/datums/components/lockon_aiming.dm
index af15ffe992..c9a5345db1 100644
--- a/code/datums/components/lockon_aiming.dm
+++ b/code/datums/components/lockon_aiming.dm
@@ -26,7 +26,7 @@
if(target_callback)
can_target_callback = target_callback
else
- can_target_callback = CALLBACK(src, .proc/can_target)
+ can_target_callback = CALLBACK(src, PROC_REF(can_target))
if(range)
lock_cursor_range = range
if(typecache)
diff --git a/code/datums/components/magnetic_catch.dm b/code/datums/components/magnetic_catch.dm
index 4defe936e5..08c4350c5a 100644
--- a/code/datums/components/magnetic_catch.dm
+++ b/code/datums/components/magnetic_catch.dm
@@ -1,31 +1,31 @@
/datum/component/magnetic_catch/Initialize()
if(!isatom(parent))
return COMPONENT_INCOMPATIBLE
- RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/examine)
+ RegisterSignal(parent, COMSIG_PARENT_EXAMINE, PROC_REF(examine))
if(ismovableatom(parent))
- RegisterSignal(parent, COMSIG_MOVABLE_CROSSED, .proc/crossed_react)
- RegisterSignal(parent, COMSIG_MOVABLE_UNCROSSED, .proc/uncrossed_react)
+ RegisterSignal(parent, COMSIG_MOVABLE_CROSSED, PROC_REF(crossed_react))
+ RegisterSignal(parent, COMSIG_MOVABLE_UNCROSSED, PROC_REF(uncrossed_react))
for(var/i in get_turf(parent))
if(i == parent)
continue
- RegisterSignal(i, COMSIG_MOVABLE_PRE_THROW, .proc/throw_react)
+ RegisterSignal(i, COMSIG_MOVABLE_PRE_THROW, PROC_REF(throw_react))
else
- RegisterSignal(parent, COMSIG_ATOM_ENTERED, .proc/entered_react)
- RegisterSignal(parent, COMSIG_ATOM_EXITED, .proc/exited_react)
+ RegisterSignal(parent, COMSIG_ATOM_ENTERED, PROC_REF(entered_react))
+ RegisterSignal(parent, COMSIG_ATOM_EXITED, PROC_REF(exited_react))
for(var/i in parent)
- RegisterSignal(i, COMSIG_MOVABLE_PRE_THROW, .proc/throw_react)
+ RegisterSignal(i, COMSIG_MOVABLE_PRE_THROW, PROC_REF(throw_react))
/datum/component/magnetic_catch/proc/examine(datum/source, mob/user, list/examine_list)
examine_list += "It has been installed with inertia dampening to prevent coffee spills."
/datum/component/magnetic_catch/proc/crossed_react(datum/source, atom/movable/thing)
- RegisterSignal(thing, COMSIG_MOVABLE_PRE_THROW, .proc/throw_react, TRUE)
+ RegisterSignal(thing, COMSIG_MOVABLE_PRE_THROW, PROC_REF(throw_react), TRUE)
/datum/component/magnetic_catch/proc/uncrossed_react(datum/source, atom/movable/thing)
UnregisterSignal(thing, COMSIG_MOVABLE_PRE_THROW)
/datum/component/magnetic_catch/proc/entered_react(datum/source, atom/movable/thing, atom/oldloc)
- RegisterSignal(thing, COMSIG_MOVABLE_PRE_THROW, .proc/throw_react, TRUE)
+ RegisterSignal(thing, COMSIG_MOVABLE_PRE_THROW, PROC_REF(throw_react), TRUE)
/datum/component/magnetic_catch/proc/exited_react(datum/source, atom/movable/thing, atom/newloc)
UnregisterSignal(thing, COMSIG_MOVABLE_PRE_THROW)
diff --git a/code/datums/components/material_container.dm b/code/datums/components/material_container.dm
index 4127ea2932..5469daa9fa 100644
--- a/code/datums/components/material_container.dm
+++ b/code/datums/components/material_container.dm
@@ -38,8 +38,8 @@
precondition = _precondition
after_insert = _after_insert
- RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, .proc/OnAttackBy)
- RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/OnExamine)
+ RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, PROC_REF(OnAttackBy))
+ RegisterSignal(parent, COMSIG_PARENT_EXAMINE, PROC_REF(OnExamine))
for(var/mat in mat_list) //Make the assoc list ref | amount
var/datum/material/M = getmaterialref(mat) || mat
diff --git a/code/datums/components/mood.dm b/code/datums/components/mood.dm
index 998e051e0e..42531cc332 100644
--- a/code/datums/components/mood.dm
+++ b/code/datums/components/mood.dm
@@ -18,13 +18,13 @@
START_PROCESSING(SSmood, src)
- RegisterSignal(parent, COMSIG_ADD_MOOD_EVENT, .proc/add_event)
- RegisterSignal(parent, COMSIG_CLEAR_MOOD_EVENT, .proc/clear_event)
- RegisterSignal(parent, COMSIG_ENTER_AREA, .proc/check_area_mood)
- RegisterSignal(parent, COMSIG_LIVING_REVIVE, .proc/on_revive)
+ RegisterSignal(parent, COMSIG_ADD_MOOD_EVENT, PROC_REF(add_event))
+ RegisterSignal(parent, COMSIG_CLEAR_MOOD_EVENT, PROC_REF(clear_event))
+ RegisterSignal(parent, COMSIG_ENTER_AREA, PROC_REF(check_area_mood))
+ RegisterSignal(parent, COMSIG_LIVING_REVIVE, PROC_REF(on_revive))
- RegisterSignal(parent, COMSIG_MOB_HUD_CREATED, .proc/modify_hud)
- RegisterSignal(parent, COMSIG_JOB_RECEIVED, .proc/register_job_signals)
+ RegisterSignal(parent, COMSIG_MOB_HUD_CREATED, PROC_REF(modify_hud))
+ RegisterSignal(parent, COMSIG_JOB_RECEIVED, PROC_REF(register_job_signals))
var/mob/living/owner = parent
if(owner.hud_used)
@@ -39,7 +39,7 @@
/datum/component/mood/proc/register_job_signals(datum/source, job)
if(job in list("Research Director", "Scientist", "Roboticist"))
- RegisterSignal(parent, COMSIG_ADD_MOOD_EVENT_RND, .proc/add_event) //Mood events that are only for RnD members
+ RegisterSignal(parent, COMSIG_ADD_MOOD_EVENT_RND, PROC_REF(add_event)) //Mood events that are only for RnD members
/datum/component/mood/proc/print_mood(mob/user)
var/msg = "*---------*\nMy current mood\n"
@@ -249,7 +249,7 @@
clear_event(null, category)
else
if(the_event.timeout)
- addtimer(CALLBACK(src, .proc/clear_event, null, category), the_event.timeout, TIMER_UNIQUE|TIMER_OVERRIDE)
+ addtimer(CALLBACK(src, PROC_REF(clear_event), null, category), the_event.timeout, TIMER_UNIQUE|TIMER_OVERRIDE)
return 0 //Don't have to update the event.
var/list/params = args.Copy(4)
params.Insert(1, parent)
@@ -260,7 +260,7 @@
update_mood()
if(the_event.timeout)
- addtimer(CALLBACK(src, .proc/clear_event, null, category), the_event.timeout, TIMER_UNIQUE|TIMER_OVERRIDE)
+ addtimer(CALLBACK(src, PROC_REF(clear_event), null, category), the_event.timeout, TIMER_UNIQUE|TIMER_OVERRIDE)
/datum/component/mood/proc/clear_event(datum/source, category)
if(!istext(category))
@@ -289,8 +289,8 @@
screen_obj = new
screen_obj.color = "#4b96c4"
hud.infodisplay += screen_obj
- RegisterSignal(hud, COMSIG_PARENT_QDELETING, .proc/unmodify_hud)
- RegisterSignal(screen_obj, COMSIG_CLICK, .proc/hud_click)
+ RegisterSignal(hud, COMSIG_PARENT_QDELETING, PROC_REF(unmodify_hud))
+ RegisterSignal(screen_obj, COMSIG_CLICK, PROC_REF(hud_click))
/datum/component/mood/proc/unmodify_hud(datum/source)
if(!screen_obj)
diff --git a/code/datums/components/nanites.dm b/code/datums/components/nanites.dm
index 9c0c65991e..1c9dc7f082 100644
--- a/code/datums/components/nanites.dm
+++ b/code/datums/components/nanites.dm
@@ -36,31 +36,31 @@
cloud_sync()
/datum/component/nanites/RegisterWithParent()
- RegisterSignal(parent, COMSIG_HAS_NANITES, .proc/confirm_nanites)
- RegisterSignal(parent, COMSIG_NANITE_IS_STEALTHY, .proc/check_stealth)
- RegisterSignal(parent, COMSIG_NANITE_DELETE, .proc/delete_nanites)
- RegisterSignal(parent, COMSIG_NANITE_UI_DATA, .proc/nanite_ui_data)
- RegisterSignal(parent, COMSIG_NANITE_GET_PROGRAMS, .proc/get_programs)
- RegisterSignal(parent, COMSIG_NANITE_SET_VOLUME, .proc/set_volume)
- RegisterSignal(parent, COMSIG_NANITE_ADJUST_VOLUME, .proc/adjust_nanites)
- RegisterSignal(parent, COMSIG_NANITE_SET_MAX_VOLUME, .proc/set_max_volume)
- RegisterSignal(parent, COMSIG_NANITE_SET_CLOUD, .proc/set_cloud)
- RegisterSignal(parent, COMSIG_NANITE_SET_CLOUD_SYNC, .proc/set_cloud_sync)
- RegisterSignal(parent, COMSIG_NANITE_SET_SAFETY, .proc/set_safety)
- RegisterSignal(parent, COMSIG_NANITE_SET_REGEN, .proc/set_regen)
- RegisterSignal(parent, COMSIG_NANITE_ADD_PROGRAM, .proc/add_program)
- RegisterSignal(parent, COMSIG_NANITE_SCAN, .proc/nanite_scan)
- RegisterSignal(parent, COMSIG_NANITE_SYNC, .proc/sync)
+ RegisterSignal(parent, COMSIG_HAS_NANITES, PROC_REF(confirm_nanites))
+ RegisterSignal(parent, COMSIG_NANITE_IS_STEALTHY, PROC_REF(check_stealth))
+ RegisterSignal(parent, COMSIG_NANITE_DELETE, PROC_REF(delete_nanites))
+ RegisterSignal(parent, COMSIG_NANITE_UI_DATA, PROC_REF(nanite_ui_data))
+ RegisterSignal(parent, COMSIG_NANITE_GET_PROGRAMS, PROC_REF(get_programs))
+ RegisterSignal(parent, COMSIG_NANITE_SET_VOLUME, PROC_REF(set_volume))
+ RegisterSignal(parent, COMSIG_NANITE_ADJUST_VOLUME, PROC_REF(adjust_nanites))
+ RegisterSignal(parent, COMSIG_NANITE_SET_MAX_VOLUME, PROC_REF(set_max_volume))
+ RegisterSignal(parent, COMSIG_NANITE_SET_CLOUD, PROC_REF(set_cloud))
+ RegisterSignal(parent, COMSIG_NANITE_SET_CLOUD_SYNC, PROC_REF(set_cloud_sync))
+ RegisterSignal(parent, COMSIG_NANITE_SET_SAFETY, PROC_REF(set_safety))
+ RegisterSignal(parent, COMSIG_NANITE_SET_REGEN, PROC_REF(set_regen))
+ RegisterSignal(parent, COMSIG_NANITE_ADD_PROGRAM, PROC_REF(add_program))
+ RegisterSignal(parent, COMSIG_NANITE_SCAN, PROC_REF(nanite_scan))
+ RegisterSignal(parent, COMSIG_NANITE_SYNC, PROC_REF(sync))
if(isliving(parent))
- RegisterSignal(parent, COMSIG_ATOM_EMP_ACT, .proc/on_emp)
- RegisterSignal(parent, COMSIG_MOB_DEATH, .proc/on_death)
- RegisterSignal(parent, COMSIG_MOB_ALLOWED, .proc/check_access)
- RegisterSignal(parent, COMSIG_LIVING_ELECTROCUTE_ACT, .proc/on_shock)
- RegisterSignal(parent, COMSIG_LIVING_MINOR_SHOCK, .proc/on_minor_shock)
- RegisterSignal(parent, COMSIG_SPECIES_GAIN, .proc/check_viable_biotype)
- RegisterSignal(parent, COMSIG_NANITE_SIGNAL, .proc/receive_signal)
- RegisterSignal(parent, COMSIG_NANITE_COMM_SIGNAL, .proc/receive_comm_signal)
+ RegisterSignal(parent, COMSIG_ATOM_EMP_ACT, PROC_REF(on_emp))
+ RegisterSignal(parent, COMSIG_MOB_DEATH, PROC_REF(on_death))
+ RegisterSignal(parent, COMSIG_MOB_ALLOWED, PROC_REF(check_access))
+ RegisterSignal(parent, COMSIG_LIVING_ELECTROCUTE_ACT, PROC_REF(on_shock))
+ RegisterSignal(parent, COMSIG_LIVING_MINOR_SHOCK, PROC_REF(on_minor_shock))
+ RegisterSignal(parent, COMSIG_SPECIES_GAIN, PROC_REF(check_viable_biotype))
+ RegisterSignal(parent, COMSIG_NANITE_SIGNAL, PROC_REF(receive_signal))
+ RegisterSignal(parent, COMSIG_NANITE_COMM_SIGNAL, PROC_REF(receive_comm_signal))
/datum/component/nanites/UnregisterFromParent()
UnregisterSignal(parent, list(COMSIG_HAS_NANITES,
diff --git a/code/datums/components/orbiter.dm b/code/datums/components/orbiter.dm
index 525e8c2590..f1eb91778c 100644
--- a/code/datums/components/orbiter.dm
+++ b/code/datums/components/orbiter.dm
@@ -26,8 +26,8 @@
target.orbiters = src
if(ismovableatom(target))
- tracker = new(target, CALLBACK(src, .proc/move_react))
- RegisterSignal(parent, COMSIG_MOVABLE_UPDATE_GLIDE_SIZE, .proc/orbiter_glide_size_update)
+ tracker = new(target, CALLBACK(src, PROC_REF(move_react)))
+ RegisterSignal(parent, COMSIG_MOVABLE_UPDATE_GLIDE_SIZE, PROC_REF(orbiter_glide_size_update))
/datum/component/orbiter/UnregisterFromParent()
@@ -65,7 +65,7 @@
orbiter.orbiting.end_orbit(orbiter)
orbiters[orbiter] = TRUE
orbiter.orbiting = src
- RegisterSignal(orbiter, COMSIG_MOVABLE_MOVED, .proc/orbiter_move_react)
+ RegisterSignal(orbiter, COMSIG_MOVABLE_MOVED, PROC_REF(orbiter_move_react))
SEND_SIGNAL(parent, COMSIG_ATOM_ORBIT_BEGIN, orbiter)
var/matrix/initial_transform = matrix(orbiter.transform)
diff --git a/code/datums/components/paintable.dm b/code/datums/components/paintable.dm
index 22956d63d2..7ef9de44e6 100644
--- a/code/datums/components/paintable.dm
+++ b/code/datums/components/paintable.dm
@@ -2,7 +2,7 @@
var/current_paint
/datum/component/spraycan_paintable/Initialize()
- RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, .proc/Repaint)
+ RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, PROC_REF(Repaint))
/datum/component/spraycan_paintable/Destroy()
RemoveCurrentCoat()
diff --git a/code/datums/components/plumbing/_plumbing.dm b/code/datums/components/plumbing/_plumbing.dm
index 0ce410854a..3b2af400da 100644
--- a/code/datums/components/plumbing/_plumbing.dm
+++ b/code/datums/components/plumbing/_plumbing.dm
@@ -25,8 +25,8 @@
reagents = AM.reagents
turn_connects = _turn_connects
- RegisterSignal(parent, list(COMSIG_MOVABLE_MOVED,COMSIG_PARENT_PREQDELETED), .proc/disable)
- RegisterSignal(parent, list(COMSIG_OBJ_DEFAULT_UNFASTEN_WRENCH), .proc/toggle_active)
+ RegisterSignal(parent, list(COMSIG_MOVABLE_MOVED,COMSIG_PARENT_PREQDELETED), PROC_REF(disable))
+ RegisterSignal(parent, list(COMSIG_OBJ_DEFAULT_UNFASTEN_WRENCH), PROC_REF(toggle_active))
if(start)
enable()
diff --git a/code/datums/components/punchcooldown.dm b/code/datums/components/punchcooldown.dm
index 7724aae947..1019b00347 100644
--- a/code/datums/components/punchcooldown.dm
+++ b/code/datums/components/punchcooldown.dm
@@ -2,7 +2,7 @@
/datum/component/wearertargeting/punchcooldown
signals = list(COMSIG_HUMAN_MELEE_UNARMED_ATTACK)
mobtype = /mob/living/carbon
- proctype = .proc/reducecooldown
+ proctype = PROC_REF(reducecooldown)
valid_slots = list(SLOT_GLOVES)
///The warcry this generates
var/warcry = "AT"
@@ -11,7 +11,7 @@
. = ..()
if(. == COMPONENT_INCOMPATIBLE)
return
- RegisterSignal(parent, COMSIG_ITEM_ATTACK_SELF, .proc/changewarcry)
+ RegisterSignal(parent, COMSIG_ITEM_ATTACK_SELF, PROC_REF(changewarcry))
///Called on COMSIG_HUMAN_MELEE_UNARMED_ATTACK. Yells the warcry and and reduces punch cooldown.
/datum/component/wearertargeting/punchcooldown/proc/reducecooldown(mob/living/carbon/M, atom/target)
diff --git a/code/datums/components/rad_insulation.dm b/code/datums/components/rad_insulation.dm
index 73d8c29440..546cfe8dc4 100644
--- a/code/datums/components/rad_insulation.dm
+++ b/code/datums/components/rad_insulation.dm
@@ -6,11 +6,11 @@
return COMPONENT_INCOMPATIBLE
if(protects) // Does this protect things in its contents from being affected?
- RegisterSignal(parent, COMSIG_ATOM_RAD_PROBE, .proc/rad_probe_react)
+ RegisterSignal(parent, COMSIG_ATOM_RAD_PROBE, PROC_REF(rad_probe_react))
if(contamination_proof) // Can this object be contaminated?
- RegisterSignal(parent, COMSIG_ATOM_RAD_CONTAMINATING, .proc/rad_contaminating)
+ RegisterSignal(parent, COMSIG_ATOM_RAD_CONTAMINATING, PROC_REF(rad_contaminating))
if(_amount != 1) // If it's 1 it wont have any impact on radiation passing through anyway
- RegisterSignal(parent, COMSIG_ATOM_RAD_WAVE_PASSING, .proc/rad_pass)
+ RegisterSignal(parent, COMSIG_ATOM_RAD_WAVE_PASSING, PROC_REF(rad_pass))
amount = _amount
diff --git a/code/datums/components/radioactive.dm b/code/datums/components/radioactive.dm
index 37f38ffcc1..3b4f5a98fd 100644
--- a/code/datums/components/radioactive.dm
+++ b/code/datums/components/radioactive.dm
@@ -19,10 +19,10 @@
can_contaminate = _can_contaminate
if(istype(parent, /atom))
- RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/rad_examine)
+ RegisterSignal(parent, COMSIG_PARENT_EXAMINE, PROC_REF(rad_examine))
if(istype(parent, /obj/item))
- RegisterSignal(parent, COMSIG_ITEM_ATTACK, .proc/rad_attack)
- RegisterSignal(parent, COMSIG_ITEM_ATTACK_OBJ, .proc/rad_attack)
+ RegisterSignal(parent, COMSIG_ITEM_ATTACK, PROC_REF(rad_attack))
+ RegisterSignal(parent, COMSIG_ITEM_ATTACK_OBJ, PROC_REF(rad_attack))
else
return COMPONENT_INCOMPATIBLE
diff --git a/code/datums/components/remote_materials.dm b/code/datums/components/remote_materials.dm
index 3111a0adef..480f9f188f 100644
--- a/code/datums/components/remote_materials.dm
+++ b/code/datums/components/remote_materials.dm
@@ -23,12 +23,12 @@ handles linking back and forth.
src.category = category
src.allow_standalone = allow_standalone
- RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, .proc/OnAttackBy)
- RegisterSignal(parent, COMSIG_ATOM_MULTITOOL_ACT, .proc/OnMultitool)
+ RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, PROC_REF(OnAttackBy))
+ RegisterSignal(parent, COMSIG_ATOM_MULTITOOL_ACT, PROC_REF(OnMultitool))
var/turf/T = get_turf(parent)
if (force_connect || (mapload && is_station_level(T.z)))
- addtimer(CALLBACK(src, .proc/LateInitialize))
+ addtimer(CALLBACK(src, PROC_REF(LateInitialize)))
else if (allow_standalone)
_MakeLocal()
diff --git a/code/datums/components/riding.dm b/code/datums/components/riding.dm
index bafaea96eb..89c3cce3f4 100644
--- a/code/datums/components/riding.dm
+++ b/code/datums/components/riding.dm
@@ -24,9 +24,9 @@
/datum/component/riding/Initialize()
if(!ismovableatom(parent))
return COMPONENT_INCOMPATIBLE
- RegisterSignal(parent, COMSIG_MOVABLE_BUCKLE, .proc/vehicle_mob_buckle)
- RegisterSignal(parent, COMSIG_MOVABLE_UNBUCKLE, .proc/vehicle_mob_unbuckle)
- RegisterSignal(parent, COMSIG_MOVABLE_MOVED, .proc/vehicle_moved)
+ RegisterSignal(parent, COMSIG_MOVABLE_BUCKLE, PROC_REF(vehicle_mob_buckle))
+ RegisterSignal(parent, COMSIG_MOVABLE_UNBUCKLE, PROC_REF(vehicle_mob_unbuckle))
+ RegisterSignal(parent, COMSIG_MOVABLE_MOVED, PROC_REF(vehicle_moved))
/datum/component/riding/proc/vehicle_mob_unbuckle(datum/source, mob/living/M, force = FALSE)
var/atom/movable/AM = parent
@@ -189,7 +189,7 @@
return TRUE
/datum/component/riding/proc/Unbuckle(atom/movable/M)
- addtimer(CALLBACK(parent, /atom/movable/.proc/unbuckle_mob, M), 0, TIMER_UNIQUE)
+ addtimer(CALLBACK(parent, TYPE_PROC_REF(/atom/movable, unbuckle_mob), M), 0, TIMER_UNIQUE)
/datum/component/riding/proc/Process_Spacemove(direction)
var/atom/movable/AM = parent
@@ -209,7 +209,7 @@
/datum/component/riding/human/Initialize()
. = ..()
- RegisterSignal(parent, COMSIG_HUMAN_MELEE_UNARMED_ATTACK, .proc/on_host_unarmed_melee)
+ RegisterSignal(parent, COMSIG_HUMAN_MELEE_UNARMED_ATTACK, PROC_REF(on_host_unarmed_melee))
/datum/component/riding/human/vehicle_mob_unbuckle(datum/source, mob/living/M, force = FALSE)
var/mob/living/carbon/human/H = parent
diff --git a/code/datums/components/rotation.dm b/code/datums/components/rotation.dm
index e7cd72352a..dad4abe489 100644
--- a/code/datums/components/rotation.dm
+++ b/code/datums/components/rotation.dm
@@ -24,17 +24,17 @@
if(can_user_rotate)
src.can_user_rotate = can_user_rotate
else
- src.can_user_rotate = CALLBACK(src,.proc/default_can_user_rotate)
+ src.can_user_rotate = CALLBACK(src,PROC_REF(default_can_user_rotate))
if(can_be_rotated)
src.can_be_rotated = can_be_rotated
else
- src.can_be_rotated = CALLBACK(src,.proc/default_can_be_rotated)
+ src.can_be_rotated = CALLBACK(src,PROC_REF(default_can_be_rotated))
if(after_rotation)
src.after_rotation = after_rotation
else
- src.after_rotation = CALLBACK(src,.proc/default_after_rotation)
+ src.after_rotation = CALLBACK(src,PROC_REF(default_after_rotation))
//Try Clockwise,counter,flip in order
if(src.rotation_flags & ROTATION_FLIP)
@@ -46,10 +46,10 @@
/datum/component/simple_rotation/proc/add_signals()
// if(rotation_flags & ROTATION_ALTCLICK)
-// RegisterSignal(parent, COMSIG_CLICK_ALT, .proc/HandRot)
-// RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/ExamineMessage)
+// RegisterSignal(parent, COMSIG_CLICK_ALT, PROC_REF(HandRot))
+// RegisterSignal(parent, COMSIG_PARENT_EXAMINE, PROC_REF(ExamineMessage))
if(rotation_flags & ROTATION_WRENCH)
- RegisterSignal(parent, COMSIG_ATOM_WRENCH_ACT, .proc/WrenchRot)
+ RegisterSignal(parent, COMSIG_ATOM_WRENCH_ACT, PROC_REF(WrenchRot))
/datum/component/simple_rotation/proc/add_verbs()
if(rotation_flags & ROTATION_VERBS)
diff --git a/code/datums/components/shrapnel.dm b/code/datums/components/shrapnel.dm
index f549fbbb34..225cba7238 100644
--- a/code/datums/components/shrapnel.dm
+++ b/code/datums/components/shrapnel.dm
@@ -13,7 +13,7 @@
/datum/component/shrapnel/RegisterWithParent()
if(ismachinery(parent) || isstructure(parent) || isgun(parent)) // turrets, etc
- RegisterSignal(parent, COMSIG_PROJECTILE_ON_HIT, .proc/projectile_hit)
+ RegisterSignal(parent, COMSIG_PROJECTILE_ON_HIT, PROC_REF(projectile_hit))
/datum/component/shrapnel/UnregisterFromParent()
UnregisterSignal(parent, list(COMSIG_PROJECTILE_ON_HIT))
diff --git a/code/datums/components/slippery.dm b/code/datums/components/slippery.dm
index eafac255a8..3e0ea9a1d2 100644
--- a/code/datums/components/slippery.dm
+++ b/code/datums/components/slippery.dm
@@ -11,8 +11,8 @@
force_drop_items = _force_drop
lube_flags = _lube_flags
callback = _callback
- RegisterSignal(parent, list(COMSIG_MOVABLE_CROSSED, COMSIG_ATOM_ENTERED), .proc/Slip)
- RegisterSignal(parent, COMSIG_ITEM_WEARERCROSSED, .proc/Slip_on_wearer)
+ RegisterSignal(parent, list(COMSIG_MOVABLE_CROSSED, COMSIG_ATOM_ENTERED), PROC_REF(Slip))
+ RegisterSignal(parent, COMSIG_ITEM_WEARERCROSSED, PROC_REF(Slip_on_wearer))
/datum/component/slippery/proc/Slip(datum/source, atom/movable/AM)
var/mob/victim = AM
diff --git a/code/datums/components/soulstoned.dm b/code/datums/components/soulstoned.dm
index 6e87e7f9fe..485a0c2754 100644
--- a/code/datums/components/soulstoned.dm
+++ b/code/datums/components/soulstoned.dm
@@ -16,7 +16,7 @@
S.health = S.maxHealth
S.bruteloss = 0
- RegisterSignal(S, COMSIG_MOVABLE_MOVED, .proc/free_prisoner)
+ RegisterSignal(S, COMSIG_MOVABLE_MOVED, PROC_REF(free_prisoner))
/datum/component/soulstoned/proc/free_prisoner()
var/mob/living/simple_animal/S = parent
diff --git a/code/datums/components/spawner.dm b/code/datums/components/spawner.dm
index 8f5ca86cec..7044c11357 100644
--- a/code/datums/components/spawner.dm
+++ b/code/datums/components/spawner.dm
@@ -21,7 +21,7 @@
if(_max_mobs)
max_mobs=_max_mobs
- RegisterSignal(parent, list(COMSIG_PARENT_QDELETING), .proc/stop_spawning)
+ RegisterSignal(parent, list(COMSIG_PARENT_QDELETING), PROC_REF(stop_spawning))
START_PROCESSING(SSprocessing, src)
/datum/component/spawner/process()
diff --git a/code/datums/components/spill.dm b/code/datums/components/spill.dm
index 1a9a526ec3..b5fde3de11 100644
--- a/code/datums/components/spill.dm
+++ b/code/datums/components/spill.dm
@@ -27,8 +27,8 @@
return COMPONENT_INCOMPATIBLE
/datum/component/spill/RegisterWithParent()
- RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, .proc/equip_react)
- RegisterSignal(parent, COMSIG_ITEM_DROPPED, .proc/drop_react)
+ RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, PROC_REF(equip_react))
+ RegisterSignal(parent, COMSIG_ITEM_DROPPED, PROC_REF(drop_react))
var/obj/item/master = parent
preexisting_item_flags = master.item_flags
master.item_flags |= ITEM_SLOT_POCKET
@@ -41,7 +41,7 @@
/datum/component/spill/proc/equip_react(obj/item/source, mob/equipper, slot)
if(slot == SLOT_L_STORE || slot == SLOT_R_STORE)
- RegisterSignal(equipper, COMSIG_LIVING_STATUS_KNOCKDOWN, .proc/knockdown_react, TRUE)
+ RegisterSignal(equipper, COMSIG_LIVING_STATUS_KNOCKDOWN, PROC_REF(knockdown_react), TRUE)
else
UnregisterSignal(equipper, COMSIG_LIVING_STATUS_KNOCKDOWN)
diff --git a/code/datums/components/spooky.dm b/code/datums/components/spooky.dm
index 0c3679ffbd..d33a76f27e 100644
--- a/code/datums/components/spooky.dm
+++ b/code/datums/components/spooky.dm
@@ -2,7 +2,7 @@
var/too_spooky = TRUE //will it spawn a new instrument?
/datum/component/spooky/Initialize()
- RegisterSignal(parent, COMSIG_ITEM_ATTACK, .proc/spectral_attack)
+ RegisterSignal(parent, COMSIG_ITEM_ATTACK, PROC_REF(spectral_attack))
/datum/component/spooky/proc/spectral_attack(datum/source, mob/living/carbon/C, mob/user)
if(ishuman(user)) //this weapon wasn't meant for mortals.
diff --git a/code/datums/components/squeak.dm b/code/datums/components/squeak.dm
index 4c0d26c3e2..89315c57fb 100644
--- a/code/datums/components/squeak.dm
+++ b/code/datums/components/squeak.dm
@@ -16,19 +16,19 @@
/datum/component/squeak/Initialize(custom_sounds, volume_override, chance_override, step_delay_override, use_delay_override)
if(!isatom(parent))
return COMPONENT_INCOMPATIBLE
- RegisterSignal(parent, list(COMSIG_ATOM_ENTERED, COMSIG_ATOM_BLOB_ACT, COMSIG_ATOM_HULK_ATTACK, COMSIG_PARENT_ATTACKBY), .proc/play_squeak)
+ RegisterSignal(parent, list(COMSIG_ATOM_ENTERED, COMSIG_ATOM_BLOB_ACT, COMSIG_ATOM_HULK_ATTACK, COMSIG_PARENT_ATTACKBY), PROC_REF(play_squeak))
if(ismovableatom(parent))
- RegisterSignal(parent, list(COMSIG_MOVABLE_BUMP, COMSIG_MOVABLE_IMPACT), .proc/play_squeak)
- RegisterSignal(parent, COMSIG_MOVABLE_CROSSED, .proc/play_squeak_crossed)
- RegisterSignal(parent, COMSIG_ITEM_WEARERCROSSED, .proc/play_squeak_crossed)
- RegisterSignal(parent, COMSIG_MOVABLE_DISPOSING, .proc/disposing_react)
+ RegisterSignal(parent, list(COMSIG_MOVABLE_BUMP, COMSIG_MOVABLE_IMPACT), PROC_REF(play_squeak))
+ RegisterSignal(parent, COMSIG_MOVABLE_CROSSED, PROC_REF(play_squeak_crossed))
+ RegisterSignal(parent, COMSIG_ITEM_WEARERCROSSED, PROC_REF(play_squeak_crossed))
+ RegisterSignal(parent, COMSIG_MOVABLE_DISPOSING, PROC_REF(disposing_react))
if(isitem(parent))
- RegisterSignal(parent, list(COMSIG_ITEM_ATTACK, COMSIG_ITEM_ATTACK_OBJ, COMSIG_ITEM_HIT_REACT), .proc/play_squeak)
- RegisterSignal(parent, COMSIG_ITEM_ATTACK_SELF, .proc/use_squeak)
- RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, .proc/on_equip)
- RegisterSignal(parent, COMSIG_ITEM_DROPPED, .proc/on_drop)
+ RegisterSignal(parent, list(COMSIG_ITEM_ATTACK, COMSIG_ITEM_ATTACK_OBJ, COMSIG_ITEM_HIT_REACT), PROC_REF(play_squeak))
+ RegisterSignal(parent, COMSIG_ITEM_ATTACK_SELF, PROC_REF(use_squeak))
+ RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, PROC_REF(on_equip))
+ RegisterSignal(parent, COMSIG_ITEM_DROPPED, PROC_REF(on_drop))
if(istype(parent, /obj/item/clothing))
- RegisterSignal(parent, COMSIG_CLOTHING_STEP_ACTION, .proc/step_squeak)
+ RegisterSignal(parent, COMSIG_CLOTHING_STEP_ACTION, PROC_REF(step_squeak))
override_squeak_sounds = custom_sounds
if(chance_override)
@@ -79,7 +79,7 @@
play_squeak()
/datum/component/squeak/proc/on_equip(datum/source, mob/equipper, slot)
- RegisterSignal(equipper, COMSIG_MOVABLE_DISPOSING, .proc/disposing_react, TRUE)
+ RegisterSignal(equipper, COMSIG_MOVABLE_DISPOSING, PROC_REF(disposing_react), TRUE)
/datum/component/squeak/proc/on_drop(datum/source, mob/user)
UnregisterSignal(user, COMSIG_MOVABLE_DISPOSING)
@@ -87,7 +87,7 @@
// Disposal pipes related shit
/datum/component/squeak/proc/disposing_react(datum/source, obj/structure/disposalholder/holder, obj/machinery/disposal/source)
//We don't need to worry about unregistering this signal as it will happen for us automaticaly when the holder is qdeleted
- RegisterSignal(holder, COMSIG_ATOM_DIR_CHANGE, .proc/holder_dir_change)
+ RegisterSignal(holder, COMSIG_ATOM_DIR_CHANGE, PROC_REF(holder_dir_change))
/datum/component/squeak/proc/holder_dir_change(datum/source, old_dir, new_dir)
//If the dir changes it means we're going through a bend in the pipes, let's pretend we bumped the wall
diff --git a/code/datums/components/stationloving.dm b/code/datums/components/stationloving.dm
index 61ee41ad4a..bf8378c7fc 100644
--- a/code/datums/components/stationloving.dm
+++ b/code/datums/components/stationloving.dm
@@ -7,11 +7,11 @@
/datum/component/stationloving/Initialize(inform_admins = FALSE, allow_death = FALSE)
if(!ismovableatom(parent))
return COMPONENT_INCOMPATIBLE
- RegisterSignal(parent, list(COMSIG_MOVABLE_Z_CHANGED), .proc/check_in_bounds)
- RegisterSignal(parent, list(COMSIG_MOVABLE_SECLUDED_LOCATION), .proc/relocate)
- RegisterSignal(parent, list(COMSIG_PARENT_PREQDELETED), .proc/check_deletion)
- RegisterSignal(parent, list(COMSIG_ITEM_IMBUE_SOUL), .proc/check_soul_imbue)
- RegisterSignal(parent, list(COMSIG_ITEM_MARK_RETRIEVAL), .proc/check_mark_retrieval)
+ RegisterSignal(parent, list(COMSIG_MOVABLE_Z_CHANGED), PROC_REF(check_in_bounds))
+ RegisterSignal(parent, list(COMSIG_MOVABLE_SECLUDED_LOCATION), PROC_REF(relocate))
+ RegisterSignal(parent, list(COMSIG_PARENT_PREQDELETED), PROC_REF(check_deletion))
+ RegisterSignal(parent, list(COMSIG_ITEM_IMBUE_SOUL), PROC_REF(check_soul_imbue))
+ RegisterSignal(parent, list(COMSIG_ITEM_MARK_RETRIEVAL), PROC_REF(check_mark_retrieval))
src.inform_admins = inform_admins
src.allow_death = allow_death
check_in_bounds() // Just in case something is being created outside of station/centcom
diff --git a/code/datums/components/storage/concrete/_concrete.dm b/code/datums/components/storage/concrete/_concrete.dm
index d1cfb0f399..150a7c00a3 100644
--- a/code/datums/components/storage/concrete/_concrete.dm
+++ b/code/datums/components/storage/concrete/_concrete.dm
@@ -15,8 +15,8 @@
/datum/component/storage/concrete/Initialize()
. = ..()
- RegisterSignal(parent, COMSIG_ATOM_CONTENTS_DEL, .proc/on_contents_del)
- RegisterSignal(parent, COMSIG_OBJ_DECONSTRUCT, .proc/on_deconstruct)
+ RegisterSignal(parent, COMSIG_ATOM_CONTENTS_DEL, PROC_REF(on_contents_del))
+ RegisterSignal(parent, COMSIG_OBJ_DECONSTRUCT, PROC_REF(on_deconstruct))
/datum/component/storage/concrete/Destroy()
var/atom/real_location = real_location()
diff --git a/code/datums/components/storage/storage.dm b/code/datums/components/storage/storage.dm
index dd8ea01119..4e125c8512 100644
--- a/code/datums/components/storage/storage.dm
+++ b/code/datums/components/storage/storage.dm
@@ -78,42 +78,42 @@
closer = new(null, src)
orient2hud()
- RegisterSignal(parent, COMSIG_CONTAINS_STORAGE, .proc/on_check)
- RegisterSignal(parent, COMSIG_IS_STORAGE_LOCKED, .proc/check_locked)
- RegisterSignal(parent, COMSIG_TRY_STORAGE_SHOW, .proc/signal_show_attempt)
- RegisterSignal(parent, COMSIG_TRY_STORAGE_INSERT, .proc/signal_insertion_attempt)
- RegisterSignal(parent, COMSIG_TRY_STORAGE_CAN_INSERT, .proc/signal_can_insert)
- RegisterSignal(parent, COMSIG_TRY_STORAGE_TAKE_TYPE, .proc/signal_take_type)
- RegisterSignal(parent, COMSIG_TRY_STORAGE_FILL_TYPE, .proc/signal_fill_type)
- RegisterSignal(parent, COMSIG_TRY_STORAGE_SET_LOCKSTATE, .proc/set_locked)
- RegisterSignal(parent, COMSIG_TRY_STORAGE_TAKE, .proc/signal_take_obj)
- RegisterSignal(parent, COMSIG_TRY_STORAGE_QUICK_EMPTY, .proc/signal_quick_empty)
- RegisterSignal(parent, COMSIG_TRY_STORAGE_HIDE_FROM, .proc/signal_hide_attempt)
- RegisterSignal(parent, COMSIG_TRY_STORAGE_HIDE_ALL, .proc/close_all)
- RegisterSignal(parent, COMSIG_TRY_STORAGE_RETURN_INVENTORY, .proc/signal_return_inv)
-
- RegisterSignal(parent, COMSIG_TOPIC, .proc/topic_handle)
-
- RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, .proc/attackby)
-
- RegisterSignal(parent, COMSIG_ATOM_ATTACK_HAND, .proc/on_attack_hand)
- RegisterSignal(parent, COMSIG_ATOM_ATTACK_PAW, .proc/on_attack_hand)
- RegisterSignal(parent, COMSIG_ATOM_EMP_ACT, .proc/emp_act)
- RegisterSignal(parent, COMSIG_ATOM_ATTACK_GHOST, .proc/show_to_ghost)
- RegisterSignal(parent, COMSIG_ATOM_ENTERED, .proc/refresh_mob_views)
- RegisterSignal(parent, COMSIG_ATOM_EXITED, .proc/_remove_and_refresh)
- RegisterSignal(parent, COMSIG_ATOM_CANREACH, .proc/canreach_react)
-
- RegisterSignal(parent, COMSIG_ITEM_PRE_ATTACK, .proc/preattack_intercept)
- RegisterSignal(parent, COMSIG_ITEM_ATTACK_SELF, .proc/attack_self)
- RegisterSignal(parent, COMSIG_ITEM_PICKUP, .proc/signal_on_pickup)
-
- RegisterSignal(parent, COMSIG_MOVABLE_POST_THROW, .proc/close_all)
- RegisterSignal(parent, COMSIG_MOVABLE_MOVED, .proc/on_move)
-
- RegisterSignal(parent, COMSIG_CLICK_ALT, .proc/on_alt_click)
- RegisterSignal(parent, COMSIG_MOUSEDROP_ONTO, .proc/mousedrop_onto)
- RegisterSignal(parent, COMSIG_MOUSEDROPPED_ONTO, .proc/mousedrop_receive)
+ RegisterSignal(parent, COMSIG_CONTAINS_STORAGE, PROC_REF(on_check))
+ RegisterSignal(parent, COMSIG_IS_STORAGE_LOCKED, PROC_REF(check_locked))
+ RegisterSignal(parent, COMSIG_TRY_STORAGE_SHOW, PROC_REF(signal_show_attempt))
+ RegisterSignal(parent, COMSIG_TRY_STORAGE_INSERT, PROC_REF(signal_insertion_attempt))
+ RegisterSignal(parent, COMSIG_TRY_STORAGE_CAN_INSERT, PROC_REF(signal_can_insert))
+ RegisterSignal(parent, COMSIG_TRY_STORAGE_TAKE_TYPE, PROC_REF(signal_take_type))
+ RegisterSignal(parent, COMSIG_TRY_STORAGE_FILL_TYPE, PROC_REF(signal_fill_type))
+ RegisterSignal(parent, COMSIG_TRY_STORAGE_SET_LOCKSTATE, PROC_REF(set_locked))
+ RegisterSignal(parent, COMSIG_TRY_STORAGE_TAKE, PROC_REF(signal_take_obj))
+ RegisterSignal(parent, COMSIG_TRY_STORAGE_QUICK_EMPTY, PROC_REF(signal_quick_empty))
+ RegisterSignal(parent, COMSIG_TRY_STORAGE_HIDE_FROM, PROC_REF(signal_hide_attempt))
+ RegisterSignal(parent, COMSIG_TRY_STORAGE_HIDE_ALL, PROC_REF(close_all))
+ RegisterSignal(parent, COMSIG_TRY_STORAGE_RETURN_INVENTORY, PROC_REF(signal_return_inv))
+
+ RegisterSignal(parent, COMSIG_TOPIC, PROC_REF(topic_handle))
+
+ RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, PROC_REF(attackby))
+
+ RegisterSignal(parent, COMSIG_ATOM_ATTACK_HAND, PROC_REF(on_attack_hand))
+ RegisterSignal(parent, COMSIG_ATOM_ATTACK_PAW, PROC_REF(on_attack_hand))
+ RegisterSignal(parent, COMSIG_ATOM_EMP_ACT, PROC_REF(emp_act))
+ RegisterSignal(parent, COMSIG_ATOM_ATTACK_GHOST, PROC_REF(show_to_ghost))
+ RegisterSignal(parent, COMSIG_ATOM_ENTERED, PROC_REF(refresh_mob_views))
+ RegisterSignal(parent, COMSIG_ATOM_EXITED, PROC_REF(_remove_and_refresh))
+ RegisterSignal(parent, COMSIG_ATOM_CANREACH, PROC_REF(canreach_react))
+
+ RegisterSignal(parent, COMSIG_ITEM_PRE_ATTACK, PROC_REF(preattack_intercept))
+ RegisterSignal(parent, COMSIG_ITEM_ATTACK_SELF, PROC_REF(attack_self))
+ RegisterSignal(parent, COMSIG_ITEM_PICKUP, PROC_REF(signal_on_pickup))
+
+ RegisterSignal(parent, COMSIG_MOVABLE_POST_THROW, PROC_REF(close_all))
+ RegisterSignal(parent, COMSIG_MOVABLE_MOVED, PROC_REF(on_move))
+
+ RegisterSignal(parent, COMSIG_CLICK_ALT, PROC_REF(on_alt_click))
+ RegisterSignal(parent, COMSIG_MOUSEDROP_ONTO, PROC_REF(mousedrop_onto))
+ RegisterSignal(parent, COMSIG_MOUSEDROPPED_ONTO, PROC_REF(mousedrop_receive))
update_actions()
@@ -152,7 +152,7 @@
return
var/obj/item/I = parent
modeswitch_action = new(I)
- RegisterSignal(modeswitch_action, COMSIG_ACTION_TRIGGER, .proc/action_trigger)
+ RegisterSignal(modeswitch_action, COMSIG_ACTION_TRIGGER, PROC_REF(action_trigger))
if(I.obj_flags & IN_INVENTORY)
var/mob/M = I.loc
if(!istype(M))
@@ -227,7 +227,7 @@
return
// var/datum/progressbar/progress = new(M, len, I.loc)
// var/list/rejections = list()
-// while(do_after(M, 0, TRUE, parent, FALSE, CALLBACK(src, .proc/handle_mass_pickup, things, I.loc, rejections, progress)))
+// while(do_after(M, 0, TRUE, parent, FALSE, CALLBACK(src, PROC_REF(handle_mass_pickup), things, I.loc, rejections, progress)))
// stoplag(1)
if(ismob(M))
var/mob/user = M
@@ -303,7 +303,7 @@
var/list/things = contents()
playsound(A, "rustle", 50, FALSE, -5)
// var/datum/progressbar/progress = new(M, length(things), T)
-// while (do_after(M, dump_time, TRUE, T, FALSE, CALLBACK(src, .proc/mass_remove_from_storage, T, things, progress)))
+// while (do_after(M, dump_time, TRUE, T, FALSE, CALLBACK(src, PROC_REF(mass_remove_from_storage), T, things, progress)))
// stoplag(1)
// qdel(progress)
var/turf/target = get_turf(A)
diff --git a/code/datums/components/summoning.dm b/code/datums/components/summoning.dm
index e49bed8299..f973097beb 100644
--- a/code/datums/components/summoning.dm
+++ b/code/datums/components/summoning.dm
@@ -24,11 +24,11 @@
/datum/component/summoning/RegisterWithParent()
if(ismachinery(parent) || isstructure(parent) || isgun(parent)) // turrets, etc
- RegisterSignal(parent, COMSIG_PROJECTILE_ON_HIT, .proc/projectile_hit)
+ RegisterSignal(parent, COMSIG_PROJECTILE_ON_HIT, PROC_REF(projectile_hit))
else if(isitem(parent))
- RegisterSignal(parent, COMSIG_ITEM_AFTERATTACK, .proc/item_afterattack)
+ RegisterSignal(parent, COMSIG_ITEM_AFTERATTACK, PROC_REF(item_afterattack))
else if(ishostile(parent))
- RegisterSignal(parent, COMSIG_HOSTILE_ATTACKINGTARGET, .proc/hostile_attackingtarget)
+ RegisterSignal(parent, COMSIG_HOSTILE_ATTACKINGTARGET, PROC_REF(hostile_attackingtarget))
/datum/component/summoning/UnregisterFromParent()
UnregisterSignal(parent, list(COMSIG_ITEM_AFTERATTACK, COMSIG_HOSTILE_ATTACKINGTARGET, COMSIG_PROJECTILE_ON_HIT))
@@ -60,7 +60,7 @@
spawned_mobs += L
if(faction != null)
L.faction = faction
- RegisterSignal(L, COMSIG_MOB_DEATH, .proc/on_spawned_death) // so we can remove them from the list, etc (for mobs with corpses)
+ RegisterSignal(L, COMSIG_MOB_DEATH, PROC_REF(on_spawned_death)) // so we can remove them from the list, etc (for mobs with corpses)
playsound(spawn_location,spawn_sound, 50, TRUE)
spawn_location.visible_message("[L] [spawn_text].")
diff --git a/code/datums/components/swarming.dm b/code/datums/components/swarming.dm
index c9d20f1f70..1c2d2a5176 100644
--- a/code/datums/components/swarming.dm
+++ b/code/datums/components/swarming.dm
@@ -10,8 +10,8 @@
offset_x = rand(-max_x, max_x)
offset_y = rand(-max_y, max_y)
- RegisterSignal(parent, COMSIG_MOVABLE_CROSSED, .proc/join_swarm)
- RegisterSignal(parent, COMSIG_MOVABLE_UNCROSSED, .proc/leave_swarm)
+ RegisterSignal(parent, COMSIG_MOVABLE_CROSSED, PROC_REF(join_swarm))
+ RegisterSignal(parent, COMSIG_MOVABLE_UNCROSSED, PROC_REF(leave_swarm))
/datum/component/swarming/Destroy()
for(var/other in swarm_members)
diff --git a/code/datums/components/tactical.dm b/code/datums/components/tactical.dm
index 7c742a769b..74a4eebb5d 100644
--- a/code/datums/components/tactical.dm
+++ b/code/datums/components/tactical.dm
@@ -8,8 +8,8 @@
src.allowed_slot = allowed_slot
/datum/component/tactical/RegisterWithParent()
- RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, .proc/modify)
- RegisterSignal(parent, COMSIG_ITEM_DROPPED, .proc/unmodify)
+ RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, PROC_REF(modify))
+ RegisterSignal(parent, COMSIG_ITEM_DROPPED, PROC_REF(unmodify))
/datum/component/tactical/UnregisterFromParent()
UnregisterSignal(parent, list(COMSIG_ITEM_EQUIPPED, COMSIG_ITEM_DROPPED))
diff --git a/code/datums/components/tether.dm b/code/datums/components/tether.dm
index ae7ada6f56..69df76c6e9 100644
--- a/code/datums/components/tether.dm
+++ b/code/datums/components/tether.dm
@@ -14,7 +14,7 @@
src.tether_name = initial(tmp.name)
else
src.tether_name = tether_name
- RegisterSignal(parent, list(COMSIG_MOVABLE_PRE_MOVE), .proc/checkTether)
+ RegisterSignal(parent, list(COMSIG_MOVABLE_PRE_MOVE), PROC_REF(checkTether))
/datum/component/tether/proc/checkTether(mob/mover, newloc)
if (get_dist(mover,newloc) > max_dist)
diff --git a/code/datums/components/thermite.dm b/code/datums/components/thermite.dm
index cbee4c58ac..75ed9ad587 100644
--- a/code/datums/components/thermite.dm
+++ b/code/datums/components/thermite.dm
@@ -38,9 +38,9 @@
overlay = mutable_appearance('icons/effects/effects.dmi', "thermite")
master.add_overlay(overlay)
- RegisterSignal(parent, COMSIG_COMPONENT_CLEAN_ACT, .proc/clean_react)
- RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, .proc/attackby_react)
- RegisterSignal(parent, COMSIG_ATOM_FIRE_ACT, .proc/flame_react)
+ RegisterSignal(parent, COMSIG_COMPONENT_CLEAN_ACT, PROC_REF(clean_react))
+ RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, PROC_REF(attackby_react))
+ RegisterSignal(parent, COMSIG_ATOM_FIRE_ACT, PROC_REF(flame_react))
/datum/component/thermite/UnregisterFromParent()
UnregisterSignal(parent, COMSIG_COMPONENT_CLEAN_ACT)
@@ -65,7 +65,7 @@
master.cut_overlay(overlay)
playsound(master, 'sound/blank.ogg', 100, TRUE)
var/obj/effect/overlay/thermite/fakefire = new(master)
- addtimer(CALLBACK(src, .proc/burn_parent, fakefire, user), min(amount * 0.35 SECONDS, 20 SECONDS))
+ addtimer(CALLBACK(src, PROC_REF(burn_parent), fakefire, user), min(amount * 0.35 SECONDS, 20 SECONDS))
UnregisterFromParent()
/datum/component/thermite/proc/burn_parent(datum/fakefire, mob/user)
diff --git a/code/datums/components/uplink.dm b/code/datums/components/uplink.dm
index 9212b0f1f4..f407b631a6 100644
--- a/code/datums/components/uplink.dm
+++ b/code/datums/components/uplink.dm
@@ -35,20 +35,20 @@ GLOBAL_LIST_EMPTY(uplinks)
return COMPONENT_INCOMPATIBLE
- RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, .proc/OnAttackBy)
- RegisterSignal(parent, COMSIG_ITEM_ATTACK_SELF, .proc/interact)
+ RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, PROC_REF(OnAttackBy))
+ RegisterSignal(parent, COMSIG_ITEM_ATTACK_SELF, PROC_REF(interact))
if(istype(parent, /obj/item/implant))
- RegisterSignal(parent, COMSIG_IMPLANT_ACTIVATED, .proc/implant_activation)
- RegisterSignal(parent, COMSIG_IMPLANT_IMPLANTING, .proc/implanting)
- RegisterSignal(parent, COMSIG_IMPLANT_OTHER, .proc/old_implant)
- RegisterSignal(parent, COMSIG_IMPLANT_EXISTING_UPLINK, .proc/new_implant)
+ RegisterSignal(parent, COMSIG_IMPLANT_ACTIVATED, PROC_REF(implant_activation))
+ RegisterSignal(parent, COMSIG_IMPLANT_IMPLANTING, PROC_REF(implanting))
+ RegisterSignal(parent, COMSIG_IMPLANT_OTHER, PROC_REF(old_implant))
+ RegisterSignal(parent, COMSIG_IMPLANT_EXISTING_UPLINK, PROC_REF(new_implant))
else if(istype(parent, /obj/item/pda))
- RegisterSignal(parent, COMSIG_PDA_CHANGE_RINGTONE, .proc/new_ringtone)
- RegisterSignal(parent, COMSIG_PDA_CHECK_DETONATE, .proc/check_detonate)
+ RegisterSignal(parent, COMSIG_PDA_CHANGE_RINGTONE, PROC_REF(new_ringtone))
+ RegisterSignal(parent, COMSIG_PDA_CHECK_DETONATE, PROC_REF(check_detonate))
else if(istype(parent, /obj/item/radio))
- RegisterSignal(parent, COMSIG_RADIO_NEW_FREQUENCY, .proc/new_frequency)
+ RegisterSignal(parent, COMSIG_RADIO_NEW_FREQUENCY, PROC_REF(new_frequency))
else if(istype(parent, /obj/item/pen))
- RegisterSignal(parent, COMSIG_PEN_ROTATED, .proc/pen_rotation)
+ RegisterSignal(parent, COMSIG_PEN_ROTATED, PROC_REF(pen_rotation))
GLOB.uplinks += src
uplink_items = get_uplink_items(_gamemode, TRUE, allow_restricted)
diff --git a/code/datums/components/waddling.dm b/code/datums/components/waddling.dm
index 47ca60c8a1..5e07a287ef 100644
--- a/code/datums/components/waddling.dm
+++ b/code/datums/components/waddling.dm
@@ -6,9 +6,9 @@
if(!ismovableatom(parent))
return COMPONENT_INCOMPATIBLE
if(isliving(parent))
- RegisterSignal(parent, list(COMSIG_MOVABLE_MOVED), .proc/LivingWaddle)
+ RegisterSignal(parent, list(COMSIG_MOVABLE_MOVED), PROC_REF(LivingWaddle))
else
- RegisterSignal(parent, list(COMSIG_MOVABLE_MOVED), .proc/Waddle)
+ RegisterSignal(parent, list(COMSIG_MOVABLE_MOVED), PROC_REF(Waddle))
/datum/component/waddling/proc/LivingWaddle()
var/mob/living/L = parent
diff --git a/code/datums/components/wearertargeting.dm b/code/datums/components/wearertargeting.dm
index 4760757701..dbf06ea22f 100644
--- a/code/datums/components/wearertargeting.dm
+++ b/code/datums/components/wearertargeting.dm
@@ -3,14 +3,14 @@
/datum/component/wearertargeting
var/list/valid_slots = list()
var/list/signals = list()
- var/proctype = .proc/pass
+ var/proctype = PROC_REF(pass)
var/mobtype = /mob/living
/datum/component/wearertargeting/Initialize()
if(!isitem(parent))
return COMPONENT_INCOMPATIBLE
- RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, .proc/on_equip)
- RegisterSignal(parent, COMSIG_ITEM_DROPPED, .proc/on_drop)
+ RegisterSignal(parent, COMSIG_ITEM_EQUIPPED, PROC_REF(on_equip))
+ RegisterSignal(parent, COMSIG_ITEM_DROPPED, PROC_REF(on_drop))
/datum/component/wearertargeting/proc/on_equip(datum/source, mob/equipper, slot)
if((slot in valid_slots) && istype(equipper, mobtype))
diff --git a/code/datums/components/wet_floor.dm b/code/datums/components/wet_floor.dm
index a64e9735db..857b3d17ae 100644
--- a/code/datums/components/wet_floor.dm
+++ b/code/datums/components/wet_floor.dm
@@ -30,12 +30,12 @@
permanent = _permanent
if(!permanent)
START_PROCESSING(SSwet_floors, src)
- addtimer(CALLBACK(src, .proc/gc, TRUE), 1) //GC after initialization.
+ addtimer(CALLBACK(src, PROC_REF(gc), TRUE), 1) //GC after initialization.
last_process = world.time
/datum/component/wet_floor/RegisterWithParent()
- RegisterSignal(parent, COMSIG_TURF_IS_WET, .proc/is_wet)
- RegisterSignal(parent, COMSIG_TURF_MAKE_DRY, .proc/dry)
+ RegisterSignal(parent, COMSIG_TURF_IS_WET, PROC_REF(is_wet))
+ RegisterSignal(parent, COMSIG_TURF_MAKE_DRY, PROC_REF(dry))
/datum/component/wet_floor/UnregisterFromParent()
UnregisterSignal(parent, list(COMSIG_TURF_IS_WET, COMSIG_TURF_MAKE_DRY))
@@ -96,7 +96,7 @@
qdel(parent.GetComponent(/datum/component/slippery))
return
- parent.LoadComponent(/datum/component/slippery, intensity, lube_flags, CALLBACK(src, .proc/AfterSlip))
+ parent.LoadComponent(/datum/component/slippery, intensity, lube_flags, CALLBACK(src, PROC_REF(AfterSlip)))
/datum/component/wet_floor/proc/dry(datum/source, strength = TURF_WET_WATER, immediate = FALSE, duration_decrease = INFINITY)
for(var/i in time_left_list)
diff --git a/code/datums/dash_weapon.dm b/code/datums/dash_weapon.dm
index 3656a11740..80e4d09d9e 100644
--- a/code/datums/dash_weapon.dm
+++ b/code/datums/dash_weapon.dm
@@ -40,7 +40,7 @@
spot1.Beam(spot2,beam_effect,time=20)
current_charges--
holder.update_action_buttons_icon()
- addtimer(CALLBACK(src, .proc/charge), charge_rate)
+ addtimer(CALLBACK(src, PROC_REF(charge)), charge_rate)
/datum/action/innate/dash/proc/charge()
current_charges = CLAMP(current_charges + 1, 0, max_charges)
diff --git a/code/datums/diseases/advance/advance.dm b/code/datums/diseases/advance/advance.dm
index 9c41550027..6a8a7f616b 100644
--- a/code/datums/diseases/advance/advance.dm
+++ b/code/datums/diseases/advance/advance.dm
@@ -93,7 +93,7 @@
advance_diseases += P
var/replace_num = advance_diseases.len + 1 - DISEASE_LIMIT //amount of diseases that need to be removed to fit this one
if(replace_num > 0)
- sortTim(advance_diseases, /proc/cmp_advdisease_resistance_asc)
+ sortTim(advance_diseases, GLOBAL_PROC_REF(cmp_advdisease_resistance_asc))
for(var/i in 1 to replace_num)
var/datum/disease/advance/competition = advance_diseases[i]
if(totalTransmittable() > competition.totalResistance())
@@ -447,7 +447,7 @@
symptoms += SSdisease.list_symptoms.Copy()
do
if(user)
- var/symptom = input(user, "Choose a symptom to add ([i] remaining)", "Choose a Symptom") in sortList(symptoms, /proc/cmp_typepaths_asc)
+ var/symptom = input(user, "Choose a symptom to add ([i] remaining)", "Choose a Symptom") in sortList(symptoms, GLOBAL_PROC_REF(cmp_typepaths_asc))
if(isnull(symptom))
return
else if(istext(symptom))
diff --git a/code/datums/diseases/advance/symptoms/cough.dm b/code/datums/diseases/advance/symptoms/cough.dm
index deec93f829..3852b2044f 100644
--- a/code/datums/diseases/advance/symptoms/cough.dm
+++ b/code/datums/diseases/advance/symptoms/cough.dm
@@ -71,6 +71,6 @@ BONUS
if(power >= 2 && prob(30))
to_chat(M, "[pick("You have a coughing fit!", "You can't stop coughing!")]")
M.Immobilize(20)
- addtimer(CALLBACK(M, /mob/.proc/emote, "cough"), 6)
- addtimer(CALLBACK(M, /mob/.proc/emote, "cough"), 12)
- addtimer(CALLBACK(M, /mob/.proc/emote, "cough"), 18)
+ addtimer(CALLBACK(M, TYPE_PROC_REF(/mob, emote), "cough"), 6)
+ addtimer(CALLBACK(M, TYPE_PROC_REF(/mob, emote), "cough"), 12)
+ addtimer(CALLBACK(M, TYPE_PROC_REF(/mob, emote), "cough"), 18)
diff --git a/code/datums/diseases/advance/symptoms/heal.dm b/code/datums/diseases/advance/symptoms/heal.dm
index 3bd4fbff37..a1591a16e8 100644
--- a/code/datums/diseases/advance/symptoms/heal.dm
+++ b/code/datums/diseases/advance/symptoms/heal.dm
@@ -262,13 +262,13 @@
else if(M.getBruteLoss() + M.getFireLoss() >= 70 && !active_coma)
to_chat(M, "I feel myself slip into a regenerative coma...")
active_coma = TRUE
- addtimer(CALLBACK(src, .proc/coma, M), 60)
+ addtimer(CALLBACK(src, PROC_REF(coma), M), 60)
/datum/symptom/heal/coma/proc/coma(mob/living/M)
M.fakedeath("regenerative_coma", !deathgasp)
M.update_stat()
M.update_mobility()
- addtimer(CALLBACK(src, .proc/uncoma, M), 300)
+ addtimer(CALLBACK(src, PROC_REF(uncoma), M), 300)
/datum/symptom/heal/coma/proc/uncoma(mob/living/M)
if(!active_coma)
diff --git a/code/datums/diseases/advance/symptoms/shedding.dm b/code/datums/diseases/advance/symptoms/shedding.dm
index 0a5d11401c..b481477dec 100644
--- a/code/datums/diseases/advance/symptoms/shedding.dm
+++ b/code/datums/diseases/advance/symptoms/shedding.dm
@@ -40,11 +40,11 @@ BONUS
if(3, 4)
if(!(H.hairstyle == "Bald") && !(H.hairstyle == "Balding Hair"))
to_chat(H, "My hair starts to fall out in clumps...")
- addtimer(CALLBACK(src, .proc/Shed, H, FALSE), 50)
+ addtimer(CALLBACK(src, PROC_REF(Shed), H, FALSE), 50)
if(5)
if(!(H.facial_hairstyle == "Shaved") || !(H.hairstyle == "Bald"))
to_chat(H, "My hair starts to fall out in clumps...")
- addtimer(CALLBACK(src, .proc/Shed, H, TRUE), 50)
+ addtimer(CALLBACK(src, PROC_REF(Shed), H, TRUE), 50)
/datum/symptom/shedding/proc/Shed(mob/living/carbon/human/H, fullbald)
if(fullbald)
diff --git a/code/datums/diseases/pierrot_throat.dm b/code/datums/diseases/pierrot_throat.dm
index b2b0e2df49..43e8cd9444 100644
--- a/code/datums/diseases/pierrot_throat.dm
+++ b/code/datums/diseases/pierrot_throat.dm
@@ -28,7 +28,7 @@
affected_mob.say( pick( list("HONK!", "Honk!", "Honk.", "Honk?", "Honk!!", "Honk?!", "Honk...") ) , forced = "pierrot's throat")
/datum/disease/pierrot_throat/after_add()
- RegisterSignal(affected_mob, COMSIG_MOB_SAY, .proc/handle_speech)
+ RegisterSignal(affected_mob, COMSIG_MOB_SAY, PROC_REF(handle_speech))
/datum/disease/pierrot_throat/proc/handle_speech(datum/source, list/speech_args)
diff --git a/code/datums/dna.dm b/code/datums/dna.dm
index 591f186723..7e263ff942 100644
--- a/code/datums/dna.dm
+++ b/code/datums/dna.dm
@@ -635,12 +635,12 @@
spawn_gibs()
set_species(/datum/species/skeleton)
if(prob(90))
- addtimer(CALLBACK(src, .proc/death), 30)
+ addtimer(CALLBACK(src, PROC_REF(death)), 30)
if(mind)
mind.hasSoul = FALSE
if(5)
to_chat(src, "LOOK UP!")
- addtimer(CALLBACK(src, .proc/something_horrible_mindmelt), 30)
+ addtimer(CALLBACK(src, PROC_REF(something_horrible_mindmelt)), 30)
/mob/living/carbon/human/proc/something_horrible_mindmelt()
@@ -651,4 +651,4 @@
eyes.Remove(src)
qdel(eyes)
visible_message("[src] looks up and their eyes melt away!", "='danger'>I understand now.")
- addtimer(CALLBACK(src, .proc/adjustOrganLoss, ORGAN_SLOT_BRAIN, 200), 20)
+ addtimer(CALLBACK(src, PROC_REF(adjustOrganLoss), ORGAN_SLOT_BRAIN, 200), 20)
diff --git a/code/datums/ductnet.dm b/code/datums/ductnet.dm
index 744d9a919b..cb5a833add 100644
--- a/code/datums/ductnet.dm
+++ b/code/datums/ductnet.dm
@@ -15,8 +15,8 @@
/datum/ductnet/proc/remove_duct(obj/machinery/duct/ducting)
destroy_network(FALSE)
for(var/obj/machinery/duct/D in ducting.neighbours)
- addtimer(CALLBACK(D, /obj/machinery/duct/proc/reconnect), 0) //all needs to happen after the original duct that was destroyed finishes destroying itself
- addtimer(CALLBACK(D, /obj/machinery/duct/proc/generate_connects), 0)
+ addtimer(CALLBACK(D, TYPE_PROC_REF(/obj/machinery/duct, reconnect)), 0) //all needs to happen after the original duct that was destroyed finishes destroying itself
+ addtimer(CALLBACK(D, TYPE_PROC_REF(/obj/machinery/duct, generate_connects)), 0)
qdel(src)
///add a plumbing object to either demanders or suppliers
/datum/ductnet/proc/add_plumber(datum/component/plumbing/P, dir)
diff --git a/code/datums/elements/_element.dm b/code/datums/elements/_element.dm
index 5a421c970d..07d76074b8 100644
--- a/code/datums/elements/_element.dm
+++ b/code/datums/elements/_element.dm
@@ -14,7 +14,7 @@
if(type == /datum/element)
return ELEMENT_INCOMPATIBLE
if(element_flags & ELEMENT_DETACH)
- RegisterSignal(target, COMSIG_PARENT_QDELETING, .proc/Detach, override = TRUE)
+ RegisterSignal(target, COMSIG_PARENT_QDELETING, PROC_REF(Detach), override = TRUE)
/// Deactivates the functionality defines by the element on the given datum
/datum/element/proc/Detach(datum/source, force)
diff --git a/code/datums/elements/bsa_blocker.dm b/code/datums/elements/bsa_blocker.dm
index 61140ad0ed..e33338650b 100644
--- a/code/datums/elements/bsa_blocker.dm
+++ b/code/datums/elements/bsa_blocker.dm
@@ -3,7 +3,7 @@
/datum/element/bsa_blocker/Attach(datum/target)
if(!isatom(target))
return ELEMENT_INCOMPATIBLE
- RegisterSignal(target, COMSIG_ATOM_BSA_BEAM, .proc/block_bsa)
+ RegisterSignal(target, COMSIG_ATOM_BSA_BEAM, PROC_REF(block_bsa))
return ..()
/datum/element/bsa_blocker/proc/block_bsa()
diff --git a/code/datums/elements/cleaning.dm b/code/datums/elements/cleaning.dm
index 8599c20111..37b1f4672a 100644
--- a/code/datums/elements/cleaning.dm
+++ b/code/datums/elements/cleaning.dm
@@ -2,7 +2,7 @@
. = ..()
if(!ismovableatom(target))
return ELEMENT_INCOMPATIBLE
- RegisterSignal(target, COMSIG_MOVABLE_MOVED, .proc/Clean)
+ RegisterSignal(target, COMSIG_MOVABLE_MOVED, PROC_REF(Clean))
/datum/element/cleaning/Detach(datum/target)
. = ..()
diff --git a/code/datums/elements/digitalcamo.dm b/code/datums/elements/digitalcamo.dm
index e3a97002cc..198e523de3 100644
--- a/code/datums/elements/digitalcamo.dm
+++ b/code/datums/elements/digitalcamo.dm
@@ -10,8 +10,8 @@
. = ..()
if(!isliving(target) || target in attached_mobs)
return ELEMENT_INCOMPATIBLE
- RegisterSignal(target, COMSIG_PARENT_EXAMINE, .proc/on_examine)
- RegisterSignal(target, COMSIG_LIVING_CAN_TRACK, .proc/can_track)
+ RegisterSignal(target, COMSIG_PARENT_EXAMINE, PROC_REF(on_examine))
+ RegisterSignal(target, COMSIG_LIVING_CAN_TRACK, PROC_REF(can_track))
var/image/img = image(loc = target)
img.override = TRUE
attached_mobs[target] = img
diff --git a/code/datums/elements/earhealing.dm b/code/datums/elements/earhealing.dm
index 45b33ec36f..935d43334b 100644
--- a/code/datums/elements/earhealing.dm
+++ b/code/datums/elements/earhealing.dm
@@ -10,7 +10,7 @@
if(!isitem(target))
return ELEMENT_INCOMPATIBLE
- RegisterSignal(target, list(COMSIG_ITEM_EQUIPPED, COMSIG_ITEM_DROPPED), .proc/equippedChanged)
+ RegisterSignal(target, list(COMSIG_ITEM_EQUIPPED, COMSIG_ITEM_DROPPED), PROC_REF(equippedChanged))
/datum/element/earhealing/Detach(datum/target)
. = ..()
diff --git a/code/datums/elements/firestacker.dm b/code/datums/elements/firestacker.dm
index df491d32f3..7809c088d1 100644
--- a/code/datums/elements/firestacker.dm
+++ b/code/datums/elements/firestacker.dm
@@ -11,10 +11,10 @@
. = ..()
if(!ismovableatom(target))
return ELEMENT_INCOMPATIBLE
- RegisterSignal(target, COMSIG_MOVABLE_IMPACT, .proc/impact, override = TRUE)
+ RegisterSignal(target, COMSIG_MOVABLE_IMPACT, PROC_REF(impact), override = TRUE)
if(isitem(target))
- RegisterSignal(target, COMSIG_ITEM_ATTACK, .proc/item_attack, override = TRUE)
- RegisterSignal(target, COMSIG_ITEM_ATTACK_SELF, .proc/item_attack_self, override = TRUE)
+ RegisterSignal(target, COMSIG_ITEM_ATTACK, PROC_REF(item_attack), override = TRUE)
+ RegisterSignal(target, COMSIG_ITEM_ATTACK_SELF, PROC_REF(item_attack_self), override = TRUE)
if(amount) // If amount is not given we default to 1 and don't need to save it here
amount_by_owner[target] = amount
diff --git a/code/datums/elements/snail_crawl.dm b/code/datums/elements/snail_crawl.dm
index a3ce821338..786d832916 100644
--- a/code/datums/elements/snail_crawl.dm
+++ b/code/datums/elements/snail_crawl.dm
@@ -7,9 +7,9 @@
return ELEMENT_INCOMPATIBLE
var/P
if(iscarbon(target))
- P = .proc/snail_crawl
+ P = PROC_REF(snail_crawl)
else
- P = .proc/lubricate
+ P = PROC_REF(lubricate)
RegisterSignal(target, COMSIG_MOVABLE_MOVED, P)
/datum/element/snailcrawl/Detach(mob/living/carbon/target)
diff --git a/code/datums/explosion.dm b/code/datums/explosion.dm
index 8a63e914fa..6c2ef98ea4 100644
--- a/code/datums/explosion.dm
+++ b/code/datums/explosion.dm
@@ -397,7 +397,7 @@ GLOBAL_LIST_EMPTY(explosions)
else
continue
- addtimer(CALLBACK(GLOBAL_PROC, .proc/wipe_color_and_text, wipe_colours), 100)
+ addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(wipe_color_and_text), wipe_colours), 100)
/proc/wipe_color_and_text(list/atom/wiping)
for(var/i in wiping)
diff --git a/code/datums/hud.dm b/code/datums/hud.dm
index 0a7e14270a..cc9cd629aa 100644
--- a/code/datums/hud.dm
+++ b/code/datums/hud.dm
@@ -84,7 +84,7 @@ GLOBAL_LIST_INIT(huds, list(
hudusers[M] = 1
if(next_time_allowed[M] > world.time)
if(!queued_to_see[M])
- addtimer(CALLBACK(src, .proc/show_hud_images_after_cooldown, M), next_time_allowed[M] - world.time)
+ addtimer(CALLBACK(src, PROC_REF(show_hud_images_after_cooldown), M), next_time_allowed[M] - world.time)
queued_to_see[M] = TRUE
else
next_time_allowed[M] = world.time + ADD_HUD_TO_COOLDOWN
diff --git a/code/datums/looping_sounds/_looping_sound.dm b/code/datums/looping_sounds/_looping_sound.dm
index 0a4bcf06e7..4b6e85e4cd 100644
--- a/code/datums/looping_sounds/_looping_sound.dm
+++ b/code/datums/looping_sounds/_looping_sound.dm
@@ -84,7 +84,7 @@
if(!chance || prob(chance))
play(cursound)
// if(!timerid)
-// timerid = addtimer(CALLBACK(src, .proc/sound_loop, world.time), mid_length, TIMER_CLIENT_TIME | TIMER_STOPPABLE | TIMER_LOOP)
+// timerid = addtimer(CALLBACK(src, PROC_REF(sound_loop), world.time), mid_length, TIMER_CLIENT_TIME | TIMER_STOPPABLE | TIMER_LOOP)
/datum/looping_sound/proc/play(soundfile)
var/list/atoms_cache = output_atoms
@@ -136,7 +136,7 @@
if(start_sound)
play(start_sound)
start_wait = start_length
- addtimer(CALLBACK(src, .proc/begin_loop), start_wait, TIMER_CLIENT_TIME)
+ addtimer(CALLBACK(src, PROC_REF(begin_loop)), start_wait, TIMER_CLIENT_TIME)
/datum/looping_sound/proc/begin_loop()
sound_loop()
diff --git a/code/datums/martial/plasma_fist.dm b/code/datums/martial/plasma_fist.dm
index b8ea0055ce..fdf3296953 100644
--- a/code/datums/martial/plasma_fist.dm
+++ b/code/datums/martial/plasma_fist.dm
@@ -25,7 +25,7 @@
/datum/martial_art/plasma_fist/proc/Tornado(mob/living/carbon/human/A, mob/living/carbon/human/D)
A.say("TORNADO SWEEP!", forced="plasma fist")
- dance_rotate(A, CALLBACK(GLOBAL_PROC, .proc/playsound, A.loc, 'sound/blank.ogg', 15, TRUE, -1))
+ dance_rotate(A, CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(playsound), A.loc, 'sound/blank.ogg', 15, TRUE, -1))
var/obj/effect/proc_holder/spell/aoe_turf/repulse/R = new(null)
var/list/turfs = list()
for(var/turf/T in range(1,A))
diff --git a/code/datums/martial/wrestling.dm b/code/datums/martial/wrestling.dm
index 25c16b7d25..f7d53db35d 100644
--- a/code/datums/martial/wrestling.dm
+++ b/code/datums/martial/wrestling.dm
@@ -196,7 +196,7 @@
if (T && isturf(T))
if (!D.stat)
D.emote("scream")
- D.throw_at(T, 10, 4, A, TRUE, TRUE, callback = CALLBACK(D, /mob/living/carbon/human.proc/Paralyze, 20))
+ D.throw_at(T, 10, 4, A, TRUE, TRUE, callback = CALLBACK(D, TYPE_PROC_REF(/mob/living/carbon/human, Paralyze), 20))
log_combat(A, D, "has thrown with wrestling")
return 0
@@ -333,7 +333,7 @@
A.setDir(turn(A.dir, 90))
A.forceMove(D.loc)
- addtimer(CALLBACK(src, .proc/CheckStrikeTurf, A, T), 4)
+ addtimer(CALLBACK(src, PROC_REF(CheckStrikeTurf), A, T), 4)
D.visible_message("[A] headbutts [D]!", \
"You're headbutted by [A]!", "I hear a sickening sound of flesh hitting flesh!", COMBAT_MESSAGE_RANGE, A)
diff --git a/code/datums/materials/_material.dm b/code/datums/materials/_material.dm
index eb9e6240ce..d065c5a8ae 100644
--- a/code/datums/materials/_material.dm
+++ b/code/datums/materials/_material.dm
@@ -41,7 +41,7 @@ Simple datum which is instanced once per type and is used for every object of sa
source.name = "[name] [source.name]"
if(beauty_modifier)
- addtimer(CALLBACK(source, /datum.proc/AddComponent, /datum/component/beauty, beauty_modifier * amount), 0)
+ addtimer(CALLBACK(source, TYPE_PROC_REF(/datum, AddComponent), /datum/component/beauty, beauty_modifier * amount), 0)
if(istype(source, /obj)) //objs
on_applied_obj(source, amount, material_flags)
diff --git a/code/datums/mind.dm b/code/datums/mind.dm
index 1c49400136..747f11aac0 100644
--- a/code/datums/mind.dm
+++ b/code/datums/mind.dm
@@ -248,7 +248,7 @@
transfer_antag_huds(hud_to_transfer) //inherit the antag HUD
transfer_actions(new_character)
transfer_martial_arts(new_character)
- RegisterSignal(new_character, COMSIG_MOB_DEATH, .proc/set_death_time)
+ RegisterSignal(new_character, COMSIG_MOB_DEATH, PROC_REF(set_death_time))
if(active || force_key_move)
testing("dotransfer to [new_character]")
new_character.key = key //now transfer the key to link the client to our new body
@@ -905,7 +905,7 @@
continue
S.charge_counter = delay
S.updateButtonIcon()
- INVOKE_ASYNC(S, /obj/effect/proc_holder/spell.proc/start_recharge)
+ INVOKE_ASYNC(S, TYPE_PROC_REF(/obj/effect/proc_holder/spell, start_recharge))
/datum/mind/proc/get_ghost(even_if_they_cant_reenter, ghosts_with_clients)
for(var/mob/dead/observer/G in (ghosts_with_clients ? GLOB.player_list : GLOB.dead_mob_list))
diff --git a/code/datums/mood_events/generic_negative_events.dm b/code/datums/mood_events/generic_negative_events.dm
index f09310e368..47ee8950a5 100644
--- a/code/datums/mood_events/generic_negative_events.dm
+++ b/code/datums/mood_events/generic_negative_events.dm
@@ -80,7 +80,7 @@
if(isfelinid(owner))
var/mob/living/carbon/human/H = owner
H.dna.species.start_wagging_tail(H)
- addtimer(CALLBACK(H.dna.species, /datum/species.proc/stop_wagging_tail, H), 30)
+ addtimer(CALLBACK(H.dna.species, TYPE_PROC_REF(/datum/species, stop_wagging_tail), H), 30)
description = "They want to play on the table!\n"
mood_change = 2
diff --git a/code/datums/movement_detector.dm b/code/datums/movement_detector.dm
index ff40d6bb1d..067d98a530 100644
--- a/code/datums/movement_detector.dm
+++ b/code/datums/movement_detector.dm
@@ -20,7 +20,7 @@
src.listener = listener
while(ismovableatom(target))
- RegisterSignal(target, COMSIG_MOVABLE_MOVED, .proc/move_react)
+ RegisterSignal(target, COMSIG_MOVABLE_MOVED, PROC_REF(move_react))
target = target.loc
/// Stops tracking
@@ -47,7 +47,7 @@
if(tracked.loc != newturf)
var/atom/target = mover.loc
while(ismovableatom(target))
- RegisterSignal(target, COMSIG_MOVABLE_MOVED, .proc/move_react, TRUE)
+ RegisterSignal(target, COMSIG_MOVABLE_MOVED, PROC_REF(move_react), TRUE)
target = target.loc
listener.Invoke(tracked, mover, oldloc, direction)
diff --git a/code/datums/mutations/_mutations.dm b/code/datums/mutations/_mutations.dm
index 0f170bc9b2..418e156f54 100644
--- a/code/datums/mutations/_mutations.dm
+++ b/code/datums/mutations/_mutations.dm
@@ -49,7 +49,7 @@
. = ..()
class = class_
if(timer)
- addtimer(CALLBACK(src, .proc/remove), timer)
+ addtimer(CALLBACK(src, PROC_REF(remove)), timer)
timed = TRUE
if(copymut && istype(copymut, /datum/mutation/human))
copy_mutation(copymut)
@@ -84,7 +84,7 @@
owner.apply_overlay(layer_used)
grant_spell() //we do checks here so nothing about hulk getting magic
if(!modified)
- addtimer(CALLBACK(src, .proc/modify, 5)) //gonna want children calling ..() to run first
+ addtimer(CALLBACK(src, PROC_REF(modify), 5)) //gonna want children calling ..() to run first
/datum/mutation/human/proc/get_visual_indicator()
return
diff --git a/code/datums/mutations/body.dm b/code/datums/mutations/body.dm
index ebc2863436..9abc3881ac 100644
--- a/code/datums/mutations/body.dm
+++ b/code/datums/mutations/body.dm
@@ -15,7 +15,7 @@
owner.Unconscious(200 * GET_MUTATION_POWER(src))
owner.Jitter(1000 * GET_MUTATION_POWER(src))
SEND_SIGNAL(owner, COMSIG_ADD_MOOD_EVENT, "epilepsy", /datum/mood_event/epilepsy)
- addtimer(CALLBACK(src, .proc/jitter_less), 90)
+ addtimer(CALLBACK(src, PROC_REF(jitter_less)), 90)
/datum/mutation/human/epilepsy/proc/jitter_less()
if(owner)
diff --git a/code/datums/mutations/chameleon.dm b/code/datums/mutations/chameleon.dm
index c4b5d23e67..3e13bbf18b 100644
--- a/code/datums/mutations/chameleon.dm
+++ b/code/datums/mutations/chameleon.dm
@@ -13,8 +13,8 @@
if(..())
return
owner.alpha = CHAMELEON_MUTATION_DEFAULT_TRANSPARENCY
- RegisterSignal(owner, COMSIG_MOVABLE_MOVED, .proc/on_move)
- RegisterSignal(owner, COMSIG_HUMAN_EARLY_UNARMED_ATTACK, .proc/on_attack_hand)
+ RegisterSignal(owner, COMSIG_MOVABLE_MOVED, PROC_REF(on_move))
+ RegisterSignal(owner, COMSIG_HUMAN_EARLY_UNARMED_ATTACK, PROC_REF(on_attack_hand))
/datum/mutation/human/chameleon/on_life()
owner.alpha = max(0, owner.alpha - 25)
diff --git a/code/datums/mutations/hulk.dm b/code/datums/mutations/hulk.dm
index e75bac36a4..13f6ff5539 100644
--- a/code/datums/mutations/hulk.dm
+++ b/code/datums/mutations/hulk.dm
@@ -22,8 +22,8 @@
ADD_TRAIT(owner, TRAIT_IGNOREDAMAGESLOWDOWN, TRAIT_HULK)
owner.update_body_parts()
SEND_SIGNAL(owner, COMSIG_ADD_MOOD_EVENT, "hulk", /datum/mood_event/hulk)
- RegisterSignal(owner, COMSIG_HUMAN_EARLY_UNARMED_ATTACK, .proc/on_attack_hand)
- RegisterSignal(owner, COMSIG_MOB_SAY, .proc/handle_speech)
+ RegisterSignal(owner, COMSIG_HUMAN_EARLY_UNARMED_ATTACK, PROC_REF(on_attack_hand))
+ RegisterSignal(owner, COMSIG_MOB_SAY, PROC_REF(handle_speech))
/datum/mutation/human/hulk/proc/on_attack_hand(mob/living/source, atom/target, proximity)
if(!proximity)
diff --git a/code/datums/mutations/sight.dm b/code/datums/mutations/sight.dm
index e62ffc6161..c04e688ff1 100644
--- a/code/datums/mutations/sight.dm
+++ b/code/datums/mutations/sight.dm
@@ -86,7 +86,7 @@
. = ..()
if(.)
return
- RegisterSignal(H, COMSIG_MOB_ATTACK_RANGED, .proc/on_ranged_attack)
+ RegisterSignal(H, COMSIG_MOB_ATTACK_RANGED, PROC_REF(on_ranged_attack))
/datum/mutation/human/laser_eyes/on_losing(mob/living/carbon/human/H)
. = ..()
diff --git a/code/datums/mutations/speech.dm b/code/datums/mutations/speech.dm
index 6346cf6f5e..87a85343a0 100644
--- a/code/datums/mutations/speech.dm
+++ b/code/datums/mutations/speech.dm
@@ -22,7 +22,7 @@
/datum/mutation/human/wacky/on_acquiring(mob/living/carbon/human/owner)
if(..())
return
- RegisterSignal(owner, COMSIG_MOB_SAY, .proc/handle_speech)
+ RegisterSignal(owner, COMSIG_MOB_SAY, PROC_REF(handle_speech))
/datum/mutation/human/wacky/on_losing(mob/living/carbon/human/owner)
if(..())
@@ -60,7 +60,7 @@
/datum/mutation/human/smile/on_acquiring(mob/living/carbon/human/owner)
if(..())
return
- RegisterSignal(owner, COMSIG_MOB_SAY, .proc/handle_speech)
+ RegisterSignal(owner, COMSIG_MOB_SAY, PROC_REF(handle_speech))
/datum/mutation/human/smile/on_losing(mob/living/carbon/human/owner)
if(..())
@@ -146,7 +146,7 @@
/datum/mutation/human/swedish/on_acquiring(mob/living/carbon/human/owner)
if(..())
return
- RegisterSignal(owner, COMSIG_MOB_SAY, .proc/handle_speech)
+ RegisterSignal(owner, COMSIG_MOB_SAY, PROC_REF(handle_speech))
/datum/mutation/human/swedish/on_losing(mob/living/carbon/human/owner)
if(..())
@@ -175,7 +175,7 @@
/datum/mutation/human/chav/on_acquiring(mob/living/carbon/human/owner)
if(..())
return
- RegisterSignal(owner, COMSIG_MOB_SAY, .proc/handle_speech)
+ RegisterSignal(owner, COMSIG_MOB_SAY, PROC_REF(handle_speech))
/datum/mutation/human/chav/on_losing(mob/living/carbon/human/owner)
if(..())
@@ -232,7 +232,7 @@
/datum/mutation/human/elvis/on_acquiring(mob/living/carbon/human/owner)
if(..())
return
- RegisterSignal(owner, COMSIG_MOB_SAY, .proc/handle_speech)
+ RegisterSignal(owner, COMSIG_MOB_SAY, PROC_REF(handle_speech))
/datum/mutation/human/elvis/on_losing(mob/living/carbon/human/owner)
if(..())
diff --git a/code/datums/mutations/telekinesis.dm b/code/datums/mutations/telekinesis.dm
index be67d0c178..ddda13fcf3 100644
--- a/code/datums/mutations/telekinesis.dm
+++ b/code/datums/mutations/telekinesis.dm
@@ -17,7 +17,7 @@
. = ..()
if(.)
return
- RegisterSignal(H, COMSIG_MOB_ATTACK_RANGED, .proc/on_ranged_attack)
+ RegisterSignal(H, COMSIG_MOB_ATTACK_RANGED, PROC_REF(on_ranged_attack))
/datum/mutation/human/telekinesis/on_losing(mob/living/carbon/human/H)
. = ..()
diff --git a/code/datums/progressbar.dm b/code/datums/progressbar.dm
index 6fe0cc0db0..e9a2e40257 100644
--- a/code/datums/progressbar.dm
+++ b/code/datums/progressbar.dm
@@ -59,7 +59,7 @@
LAZYREMOVE(user.progressbars, bar.loc)
animate(bar, alpha = 0, time = PROGRESSBAR_ANIMATION_TIME)
- addtimer(CALLBACK(src, .proc/remove_from_client), PROGRESSBAR_ANIMATION_TIME, TIMER_CLIENT_TIME)
+ addtimer(CALLBACK(src, PROC_REF(remove_from_client)), PROGRESSBAR_ANIMATION_TIME, TIMER_CLIENT_TIME)
QDEL_IN(bar, PROGRESSBAR_ANIMATION_TIME * 2) //for garbage collection safety
. = ..()
diff --git a/code/datums/status_effects/buffs.dm b/code/datums/status_effects/buffs.dm
index 26ca8de28a..0830ff0d5d 100644
--- a/code/datums/status_effects/buffs.dm
+++ b/code/datums/status_effects/buffs.dm
@@ -304,7 +304,7 @@
owner.add_stun_absorption("bloody bastard sword", duration, 2, "doesn't even flinch as the sword's power courses through them!", "You shrug off the stun!", " glowing with a blazing red aura!")
owner.spin(duration,1)
animate(owner, color = oldcolor, time = duration, easing = EASE_IN)
- addtimer(CALLBACK(owner, /atom/proc/update_atom_colour), duration)
+ addtimer(CALLBACK(owner, TYPE_PROC_REF(/atom, update_atom_colour)), duration)
playsound(owner, 'sound/blank.ogg', 75, FALSE)
return ..()
diff --git a/code/datums/status_effects/debuffs.dm b/code/datums/status_effects/debuffs.dm
index 0f78b874d1..f27585f194 100644
--- a/code/datums/status_effects/debuffs.dm
+++ b/code/datums/status_effects/debuffs.dm
@@ -475,7 +475,7 @@
/datum/status_effect/trance/on_apply()
if(!iscarbon(owner))
return FALSE
- RegisterSignal(owner, COMSIG_MOVABLE_HEAR, .proc/hypnotize)
+ RegisterSignal(owner, COMSIG_MOVABLE_HEAR, PROC_REF(hypnotize))
ADD_TRAIT(owner, TRAIT_MUTE, "trance")
owner.add_client_colour(/datum/client_colour/monochrome/trance)
owner.visible_message("[stun ? "[owner] stands still as [owner.p_their()] eyes seem to focus on a distant point." : ""]", \
@@ -501,8 +501,8 @@
return
var/mob/living/carbon/C = owner
C.cure_trauma_type(/datum/brain_trauma/hypnosis, TRAUMA_RESILIENCE_SURGERY) //clear previous hypnosis
- addtimer(CALLBACK(C, /mob/living/carbon.proc/gain_trauma, /datum/brain_trauma/hypnosis, TRAUMA_RESILIENCE_SURGERY, hearing_args[HEARING_RAW_MESSAGE]), 10)
- addtimer(CALLBACK(C, /mob/living.proc/Stun, 60, TRUE, TRUE), 15) //Take some time to think about it
+ addtimer(CALLBACK(C, TYPE_PROC_REF(/mob/living/carbon, gain_trauma), /datum/brain_trauma/hypnosis, TRAUMA_RESILIENCE_SURGERY, hearing_args[HEARING_RAW_MESSAGE]), 10)
+ addtimer(CALLBACK(C, TYPE_PROC_REF(/mob/living, Stun), 60, TRUE, TRUE), 15) //Take some time to think about it
qdel(src)
/datum/status_effect/spasms
diff --git a/code/datums/status_effects/gas.dm b/code/datums/status_effects/gas.dm
index 293dc0806a..a3d59c1eeb 100644
--- a/code/datums/status_effects/gas.dm
+++ b/code/datums/status_effects/gas.dm
@@ -12,7 +12,7 @@
icon_state = "frozen"
/datum/status_effect/freon/on_apply()
- RegisterSignal(owner, COMSIG_LIVING_RESIST, .proc/owner_resist)
+ RegisterSignal(owner, COMSIG_LIVING_RESIST, PROC_REF(owner_resist))
if(!owner.stat)
to_chat(owner, "I become frozen in a cube!")
cube = icon('icons/effects/freeze.dmi', "ice_cube")
diff --git a/code/datums/status_effects/neutral.dm b/code/datums/status_effects/neutral.dm
index 35dc11d6b0..ae7d41ae92 100644
--- a/code/datums/status_effects/neutral.dm
+++ b/code/datums/status_effects/neutral.dm
@@ -144,7 +144,7 @@
/datum/status_effect/bugged/on_apply(mob/living/new_owner, mob/living/tracker)
. = ..()
if (.)
- RegisterSignal(new_owner, COMSIG_MOVABLE_HEAR, .proc/handle_hearing)
+ RegisterSignal(new_owner, COMSIG_MOVABLE_HEAR, PROC_REF(handle_hearing))
/datum/status_effect/bugged/on_remove()
. = ..()
diff --git a/code/datums/traits/_quirk.dm b/code/datums/traits/_quirk.dm
index 90f8f9ff94..25ab106851 100644
--- a/code/datums/traits/_quirk.dm
+++ b/code/datums/traits/_quirk.dm
@@ -26,7 +26,7 @@
add()
if(spawn_effects)
on_spawn()
- addtimer(CALLBACK(src, .proc/post_add), 30)
+ addtimer(CALLBACK(src, PROC_REF(post_add)), 30)
/datum/quirk/Destroy()
STOP_PROCESSING(SSquirks, src)
diff --git a/code/datums/weather/weather.dm b/code/datums/weather/weather.dm
index bf141dc433..00ecb9edbd 100644
--- a/code/datums/weather/weather.dm
+++ b/code/datums/weather/weather.dm
@@ -95,7 +95,7 @@
to_chat(M, telegraph_message)
if(telegraph_sound)
SEND_SOUND(M, sound(telegraph_sound))
- addtimer(CALLBACK(src, .proc/start), telegraph_duration)
+ addtimer(CALLBACK(src, PROC_REF(start)), telegraph_duration)
/datum/weather/proc/starteffected()
return
@@ -128,7 +128,7 @@
to_chat(M, weather_message)
if(weather_sound)
SEND_SOUND(M, sound(weather_sound))
- addtimer(CALLBACK(src, .proc/wind_down), weather_duration)
+ addtimer(CALLBACK(src, PROC_REF(wind_down)), weather_duration)
/datum/weather/proc/wind_down()
if(stage >= WIND_DOWN_STAGE)
@@ -145,7 +145,7 @@
to_chat(M, end_message)
if(end_sound)
SEND_SOUND(M, sound(end_sound))
- addtimer(CALLBACK(src, .proc/end), end_duration)
+ addtimer(CALLBACK(src, PROC_REF(end)), end_duration)
/datum/weather/proc/end()
if(stage == END_STAGE)
diff --git a/code/datums/weather/weather_types/roguetown/rain.dm b/code/datums/weather/weather_types/roguetown/rain.dm
index dcb261c607..25d5e65f07 100644
--- a/code/datums/weather/weather_types/roguetown/rain.dm
+++ b/code/datums/weather/weather_types/roguetown/rain.dm
@@ -100,7 +100,7 @@
M.playsound_local(M, pick('sound/ambience/noises/thunout (1).ogg','sound/ambience/noises/thunout (2).ogg','sound/ambience/noises/thunout (3).ogg','sound/ambience/noises/thunout (4).ogg'), 100, FALSE)
M.lightning_flashing = TRUE
M.update_sight()
- addtimer(CALLBACK(M, /mob/living/carbon.proc/reset_lightning), 1)
+ addtimer(CALLBACK(M, TYPE_PROC_REF(/mob/living/carbon, reset_lightning)), 1)
continue
if(istype(A, /area/rogue/indoors))
M.playsound_local(M, pick('sound/ambience/noises/thunin (1).ogg','sound/ambience/noises/thunin (2).ogg','sound/ambience/noises/thunin (3).ogg','sound/ambience/noises/thunin (4).ogg'), 100, FALSE)
diff --git a/code/datums/wires/airalarm.dm b/code/datums/wires/airalarm.dm
index c46e06a4ad..f6c166c596 100644
--- a/code/datums/wires/airalarm.dm
+++ b/code/datums/wires/airalarm.dm
@@ -31,13 +31,13 @@
if(!A.shorted)
A.shorted = TRUE
A.update_icon()
- addtimer(CALLBACK(A, /obj/machinery/airalarm.proc/reset, wire), 1200)
+ addtimer(CALLBACK(A, TYPE_PROC_REF(/obj/machinery/airalarm, reset), wire), 1200)
if(WIRE_IDSCAN) // Toggle lock.
A.locked = !A.locked
if(WIRE_AI) // Disable AI control for a while.
if(!A.aidisabled)
A.aidisabled = TRUE
- addtimer(CALLBACK(A, /obj/machinery/airalarm.proc/reset, wire), 100)
+ addtimer(CALLBACK(A, TYPE_PROC_REF(/obj/machinery/airalarm, reset), wire), 100)
if(WIRE_PANIC) // Toggle panic siphon.
if(!A.shorted)
if(A.mode == 1) // AALARM_MODE_SCRUB
diff --git a/code/datums/wires/airlock.dm b/code/datums/wires/airlock.dm
index f06bba6486..cf5fb18a32 100644
--- a/code/datums/wires/airlock.dm
+++ b/code/datums/wires/airlock.dm
@@ -48,9 +48,9 @@
return
if(!A.requiresID() || A.check_access(null))
if(A.density)
- INVOKE_ASYNC(A, /obj/machinery/door/airlock.proc/open)
+ INVOKE_ASYNC(A, TYPE_PROC_REF(/obj/machinery/door/airlock, open))
else
- INVOKE_ASYNC(A, /obj/machinery/door/airlock.proc/close)
+ INVOKE_ASYNC(A, TYPE_PROC_REF(/obj/machinery/door/airlock, close))
if(WIRE_BOLTS) // Pulse to toggle bolts (but only raise if power is on).
if(!A.locked)
A.bolt()
diff --git a/code/datums/wires/apc.dm b/code/datums/wires/apc.dm
index e97c1f3654..271472b35d 100644
--- a/code/datums/wires/apc.dm
+++ b/code/datums/wires/apc.dm
@@ -29,14 +29,14 @@
if(WIRE_POWER1, WIRE_POWER2) // Short for a long while.
if(!A.shorted)
A.shorted = TRUE
- addtimer(CALLBACK(A, /obj/machinery/power/apc.proc/reset, wire), 1200)
+ addtimer(CALLBACK(A, TYPE_PROC_REF(/obj/machinery/power/apc, reset), wire), 1200)
if(WIRE_IDSCAN) // Unlock for a little while.
A.locked = FALSE
- addtimer(CALLBACK(A, /obj/machinery/power/apc.proc/reset, wire), 300)
+ addtimer(CALLBACK(A, TYPE_PROC_REF(/obj/machinery/power/apc, reset), wire), 300)
if(WIRE_AI) // Disable AI control for a very short time.
if(!A.aidisabled)
A.aidisabled = TRUE
- addtimer(CALLBACK(A, /obj/machinery/power/apc.proc/reset, wire), 10)
+ addtimer(CALLBACK(A, TYPE_PROC_REF(/obj/machinery/power/apc, reset), wire), 10)
/datum/wires/apc/on_cut(index, mend)
var/obj/machinery/power/apc/A = holder
diff --git a/code/datums/wires/autolathe.dm b/code/datums/wires/autolathe.dm
index 7f3519f394..c70a20ca8e 100644
--- a/code/datums/wires/autolathe.dm
+++ b/code/datums/wires/autolathe.dm
@@ -27,13 +27,13 @@
switch(wire)
if(WIRE_HACK)
A.adjust_hacked(!A.hacked)
- addtimer(CALLBACK(A, /obj/machinery/autolathe.proc/reset, wire), 60)
+ addtimer(CALLBACK(A, TYPE_PROC_REF(/obj/machinery/autolathe, reset), wire), 60)
if(WIRE_SHOCK)
A.shocked = !A.shocked
- addtimer(CALLBACK(A, /obj/machinery/autolathe.proc/reset, wire), 60)
+ addtimer(CALLBACK(A, TYPE_PROC_REF(/obj/machinery/autolathe, reset), wire), 60)
if(WIRE_DISABLE)
A.disabled = !A.disabled
- addtimer(CALLBACK(A, /obj/machinery/autolathe.proc/reset, wire), 60)
+ addtimer(CALLBACK(A, TYPE_PROC_REF(/obj/machinery/autolathe, reset), wire), 60)
/datum/wires/autolathe/on_cut(wire, mend)
var/obj/machinery/autolathe/A = holder
diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm
index 3d524cb5c4..de64431592 100644
--- a/code/game/area/areas.dm
+++ b/code/game/area/areas.dm
@@ -141,7 +141,7 @@ GLOBAL_LIST_EMPTY(teleportlocs)
if (picked && is_station_level(picked.z))
GLOB.teleportlocs[AR.name] = AR
- sortTim(GLOB.teleportlocs, /proc/cmp_text_asc)
+ sortTim(GLOB.teleportlocs, GLOBAL_PROC_REF(cmp_text_asc))
/**
* Called when an area loads
@@ -345,7 +345,7 @@ GLOBAL_LIST_EMPTY(teleportlocs)
if(D.operating)
D.nextstate = opening ? FIREDOOR_OPEN : FIREDOOR_CLOSED
else if(!(D.density ^ opening))
- INVOKE_ASYNC(D, (opening ? /obj/machinery/door/firedoor.proc/open : /obj/machinery/door/firedoor.proc/close))
+ INVOKE_ASYNC(D, (opening ? TYPE_PROC_REF(/obj/machinery/door/firedoor, open) : TYPE_PROC_REF(/obj/machinery/door/firedoor, close)))
/**
* Generate an firealarm alert for this area
@@ -450,7 +450,7 @@ GLOBAL_LIST_EMPTY(teleportlocs)
var/mob/living/silicon/SILICON = i
if(SILICON.triggerAlarm("Burglar", src, cameras, trigger))
//Cancel silicon alert after 1 minute
- addtimer(CALLBACK(SILICON, /mob/living/silicon.proc/cancelAlarm,"Burglar",src,trigger), 600)
+ addtimer(CALLBACK(SILICON, TYPE_PROC_REF(/mob/living/silicon, cancelAlarm),"Burglar",src,trigger), 600)
/**
* Trigger the fire alarm visual affects in an area
@@ -655,7 +655,7 @@ GLOBAL_LIST_EMPTY(teleportlocs)
T.maptext_y = 64
playsound_local(src, 'sound/misc/area.ogg', 100, FALSE)
animate(T, alpha = 255, time = 10, easing = EASE_IN)
- addtimer(CALLBACK(src, .proc/clear_area_text, T), 35)
+ addtimer(CALLBACK(src, PROC_REF(clear_area_text), T), 35)
/mob/living/proc/clear_area_text(obj/screen/A)
if(!A)
diff --git a/code/game/atoms.dm b/code/game/atoms.dm
index 8b1179fe07..25537d59bf 100644
--- a/code/game/atoms.dm
+++ b/code/game/atoms.dm
@@ -603,7 +603,7 @@
*/
/atom/proc/hitby(atom/movable/AM, skipcatch, hitpush, blocked, datum/thrownthing/throwingdatum)
if(density && !has_gravity(AM)) //thrown stuff bounces off dense stuff in no grav, unless the thrown stuff ends up inside what it hit(embedding, bola, etc...).
- addtimer(CALLBACK(src, .proc/hitby_react, AM), 2)
+ addtimer(CALLBACK(src, PROC_REF(hitby_react), AM), 2)
/**
* We have have actually hit the passed in atom
@@ -760,7 +760,7 @@
var/list/things = src_object.contents()
var/datum/progressbar/progress = new(user, things.len, src)
var/datum/component/storage/STR = GetComponent(/datum/component/storage)
- while (do_after(user, 10, TRUE, src, FALSE, CALLBACK(STR, /datum/component/storage.proc/handle_mass_item_insertion, things, src_object, user, progress)))
+ while (do_after(user, 10, TRUE, src, FALSE, CALLBACK(STR, TYPE_PROC_REF(/datum/component/storage, handle_mass_item_insertion), things, src_object, user, progress)))
stoplag(1)
qdel(progress)
to_chat(user, "I dump as much of [src_object.parent]'s contents [STR.insert_preposition]to [src] as I can.")
@@ -947,7 +947,7 @@
if(!valid_id)
to_chat(usr, "A reagent with that ID doesn't exist!")
if("Choose from a list")
- chosen_id = input(usr, "Choose a reagent to add.", "Choose a reagent.") as null|anything in sortList(subtypesof(/datum/reagent), /proc/cmp_typepaths_asc)
+ chosen_id = input(usr, "Choose a reagent to add.", "Choose a reagent.") as null|anything in sortList(subtypesof(/datum/reagent), GLOBAL_PROC_REF(cmp_typepaths_asc))
if("I'm feeling lucky")
chosen_id = pick(subtypesof(/datum/reagent))
if(chosen_id)
diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm
index 7c613153e2..9d1f180459 100644
--- a/code/game/atoms_movable.dm
+++ b/code/game/atoms_movable.dm
@@ -75,7 +75,7 @@
if(isobj(A) || ismob(A))
if(A.layer > highest.layer)
highest = A
-// INVOKE_ASYNC(src, .proc/SpinAnimation, 5, 2)
+// INVOKE_ASYNC(src, PROC_REF(SpinAnimation), 5, 2)
throw_impact(highest)
return TRUE
diff --git a/code/game/gamemodes/clown_ops/clown_weapons.dm b/code/game/gamemodes/clown_ops/clown_weapons.dm
index 4a9f7b907e..ef932ccf4b 100644
--- a/code/game/gamemodes/clown_ops/clown_weapons.dm
+++ b/code/game/gamemodes/clown_ops/clown_weapons.dm
@@ -221,7 +221,7 @@
/obj/item/clothing/mask/fakemoustache/sticky/Initialize()
. = ..()
ADD_TRAIT(src, TRAIT_NODROP, STICKY_MOUSTACHE_TRAIT)
- addtimer(CALLBACK(src, .proc/unstick), unstick_time)
+ addtimer(CALLBACK(src, PROC_REF(unstick)), unstick_time)
/obj/item/clothing/mask/fakemoustache/sticky/proc/unstick()
REMOVE_TRAIT(src, TRAIT_NODROP, STICKY_MOUSTACHE_TRAIT)
diff --git a/code/game/gamemodes/dynamic/dynamic.dm b/code/game/gamemodes/dynamic/dynamic.dm
index d68670947e..5aba5e3420 100644
--- a/code/game/gamemodes/dynamic/dynamic.dm
+++ b/code/game/gamemodes/dynamic/dynamic.dm
@@ -361,7 +361,7 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1)
for(var/datum/dynamic_ruleset/roundstart/rule in executed_rules)
rule.candidates.Cut() // The rule should not use candidates at this point as they all are null.
- addtimer(CALLBACK(src, /datum/game_mode/dynamic/.proc/execute_roundstart_rule, rule), rule.delay)
+ addtimer(CALLBACK(src, TYPE_PROC_REF(/datum/game_mode/dynamic, execute_roundstart_rule), rule), rule.delay)
..()
/// A simple roundstart proc used when dynamic_forced_roundstart_ruleset has rules in it.
@@ -534,7 +534,7 @@ GLOBAL_VAR_INIT(dynamic_forced_threat_level, -1)
else if(rule.ruletype == "Midround")
midround_rules = remove_from_list(midround_rules, rule.type)
- addtimer(CALLBACK(src, /datum/game_mode/dynamic/.proc/execute_midround_latejoin_rule, rule), rule.delay)
+ addtimer(CALLBACK(src, TYPE_PROC_REF(/datum/game_mode/dynamic, execute_midround_latejoin_rule), rule), rule.delay)
return TRUE
/// An experimental proc to allow admins to call rules on the fly or have rules call other rules.
diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm
index 0d9de86b6a..817e61f7ae 100644
--- a/code/game/gamemodes/game_mode.dm
+++ b/code/game/gamemodes/game_mode.dm
@@ -84,7 +84,7 @@
/datum/game_mode/proc/post_setup(report) //Gamemodes can override the intercept report. Passing TRUE as the argument will force a report.
if(!report)
report = !CONFIG_GET(flag/no_intercept_report)
-// addtimer(CALLBACK(GLOBAL_PROC, .proc/display_roundstart_logout_report), ROUNDSTART_LOGOUT_REPORT_TIME)
+// addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(display_roundstart_logout_report)), ROUNDSTART_LOGOUT_REPORT_TIME)
if(CONFIG_GET(flag/reopen_roundstart_suicide_roles))
var/delay = CONFIG_GET(number/reopen_roundstart_suicide_roles_delay)
@@ -92,7 +92,7 @@
delay = (delay SECONDS)
else
delay = (4 MINUTES) //default to 4 minutes if the delay isn't defined.
- addtimer(CALLBACK(GLOBAL_PROC, .proc/reopen_roundstart_suicide_roles), delay)
+ addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(reopen_roundstart_suicide_roles)), delay)
if(SSdbcore.Connect())
var/sql
@@ -107,7 +107,7 @@
query_round_game_mode.Execute()
qdel(query_round_game_mode)
if(report)
- addtimer(CALLBACK(src, .proc/send_intercept, 0), rand(waittime_l, waittime_h))
+ addtimer(CALLBACK(src, PROC_REF(send_intercept), 0), rand(waittime_l, waittime_h))
generate_station_goals()
gamemode_ready = TRUE
return 1
diff --git a/code/game/gamemodes/roguetown/chaosmode.dm b/code/game/gamemodes/roguetown/chaosmode.dm
index a12c1bf5b4..6db8c0ecd4 100644
--- a/code/game/gamemodes/roguetown/chaosmode.dm
+++ b/code/game/gamemodes/roguetown/chaosmode.dm
@@ -328,21 +328,21 @@
///////////////// VILLAINS
for(var/datum/mind/traitor in pre_villains)
var/datum/antagonist/new_antag = new /datum/antagonist/villain()
- addtimer(CALLBACK(traitor, /datum/mind.proc/add_antag_datum, new_antag), rand(10,100))
+ addtimer(CALLBACK(traitor, TYPE_PROC_REF(/datum/mind, add_antag_datum), new_antag), rand(10,100))
GLOB.pre_setup_antags -= traitor
villains += traitor
///////////////// WWOLF
for(var/datum/mind/werewolf in pre_werewolves)
var/datum/antagonist/new_antag = new /datum/antagonist/werewolf()
- addtimer(CALLBACK(werewolf, /datum/mind.proc/add_antag_datum, new_antag), rand(10,100))
+ addtimer(CALLBACK(werewolf, TYPE_PROC_REF(/datum/mind, add_antag_datum), new_antag), rand(10,100))
GLOB.pre_setup_antags -= werewolf
werewolves += werewolf
///////////////// VAMPIRES
for(var/datum/mind/vampire in pre_vampires)
var/datum/antagonist/new_antag = new /datum/antagonist/vampire()
- addtimer(CALLBACK(vampire, /datum/mind.proc/add_antag_datum, new_antag), rand(10,100))
+ addtimer(CALLBACK(vampire, TYPE_PROC_REF(/datum/mind, add_antag_datum), new_antag), rand(10,100))
GLOB.pre_setup_antags -= vampire
vampires += vampire
diff --git a/code/game/gamemodes/roguetown/roguetown.dm b/code/game/gamemodes/roguetown/roguetown.dm
index 5329070587..ff88e9deb2 100644
--- a/code/game/gamemodes/roguetown/roguetown.dm
+++ b/code/game/gamemodes/roguetown/roguetown.dm
@@ -404,14 +404,14 @@ var/global/list/roguegamemodes = list("Rebellion", "Vampire Lord", "Extended", "
///////////////// VILLAINS
for(var/datum/mind/traitor in pre_villains)
var/datum/antagonist/new_antag = new /datum/antagonist/villain()
- addtimer(CALLBACK(traitor, /datum/mind.proc/add_antag_datum, new_antag), rand(10,100))
+ addtimer(CALLBACK(traitor, TYPE_PROC_REF(/datum/mind, add_antag_datum), new_antag), rand(10,100))
GLOB.pre_setup_antags -= traitor
villains += traitor
///////////////// WWOLF
for(var/datum/mind/werewolf in pre_werewolves)
var/datum/antagonist/new_antag = new /datum/antagonist/werewolf()
- addtimer(CALLBACK(werewolf, /datum/mind.proc/add_antag_datum, new_antag), rand(10,100))
+ addtimer(CALLBACK(werewolf, TYPE_PROC_REF(/datum/mind, add_antag_datum), new_antag), rand(10,100))
GLOB.pre_setup_antags -= werewolf
werewolves += werewolf
@@ -421,13 +421,13 @@ var/global/list/roguegamemodes = list("Rebellion", "Vampire Lord", "Extended", "
for(var/datum/mind/vampire in pre_vampires)
if(!vamplordpicked)
var/datum/antagonist/new_antag = new /datum/antagonist/vampirelord()
- addtimer(CALLBACK(vampire, /datum/mind.proc/add_antag_datum, new_antag), rand(10,100))
+ addtimer(CALLBACK(vampire, TYPE_PROC_REF(/datum/mind, add_antag_datum), new_antag), rand(10,100))
GLOB.pre_setup_antags -= vampire
vampires += vampire
vamplordpicked = TRUE
else
var/datum/antagonist/new_antag = new /datum/antagonist/vampirelord/lesser()
- addtimer(CALLBACK(vampire, /datum/mind.proc/add_antag_datum, new_antag), rand(10,100))
+ addtimer(CALLBACK(vampire, TYPE_PROC_REF(/datum/mind, add_antag_datum), new_antag), rand(10,100))
GLOB.pre_setup_antags -= vampire
vampires += vampire
///////////////// BANDIT
diff --git a/code/game/gamemodes/roguetown/roguewar.dm b/code/game/gamemodes/roguetown/roguewar.dm
index 041bd2b024..a2a3ee61d4 100644
--- a/code/game/gamemodes/roguetown/roguewar.dm
+++ b/code/game/gamemodes/roguetown/roguewar.dm
@@ -336,19 +336,19 @@
///////////////// VILLAINS
for(var/datum/mind/traitor in pre_villains)
var/datum/antagonist/new_antag = new /datum/antagonist/villain()
- addtimer(CALLBACK(traitor, /datum/mind.proc/add_antag_datum, new_antag), rand(10,100))
+ addtimer(CALLBACK(traitor, TYPE_PROC_REF(/datum/mind, add_antag_datum), new_antag), rand(10,100))
GLOB.pre_setup_antags -= traitor
///////////////// WWOLF
for(var/datum/mind/werewolf in pre_werewolves)
var/datum/antagonist/new_antag = new /datum/antagonist/werewolf()
- addtimer(CALLBACK(werewolf, /datum/mind.proc/add_antag_datum, new_antag), rand(10,100))
+ addtimer(CALLBACK(werewolf, TYPE_PROC_REF(/datum/mind, add_antag_datum), new_antag), rand(10,100))
GLOB.pre_setup_antags -= werewolf
///////////////// VAMPIRES
for(var/datum/mind/vampire in pre_vampires)
var/datum/antagonist/new_antag = new /datum/antagonist/vampire()
- addtimer(CALLBACK(vampire, /datum/mind.proc/add_antag_datum, new_antag), rand(10,100))
+ addtimer(CALLBACK(vampire, TYPE_PROC_REF(/datum/mind, add_antag_datum), new_antag), rand(10,100))
GLOB.pre_setup_antags -= vampire
///////////////// BANDIT
diff --git a/code/game/gamemodes/traitor/traitor.dm b/code/game/gamemodes/traitor/traitor.dm
index 5dd33fd032..446bdb7340 100644
--- a/code/game/gamemodes/traitor/traitor.dm
+++ b/code/game/gamemodes/traitor/traitor.dm
@@ -71,7 +71,7 @@
/datum/game_mode/traitor/post_setup()
for(var/datum/mind/traitor in pre_traitors)
var/datum/antagonist/traitor/new_antag = new antag_datum()
- addtimer(CALLBACK(traitor, /datum/mind.proc/add_antag_datum, new_antag), rand(10,100))
+ addtimer(CALLBACK(traitor, TYPE_PROC_REF(/datum/mind, add_antag_datum), new_antag), rand(10,100))
GLOB.pre_setup_antags -= traitor
if(!exchange_blue)
exchange_blue = -1 //Block latejoiners from getting exchange objectives
diff --git a/code/game/machinery/_machinery.dm b/code/game/machinery/_machinery.dm
index 39ce64599b..bf765dee34 100644
--- a/code/game/machinery/_machinery.dm
+++ b/code/game/machinery/_machinery.dm
@@ -157,7 +157,7 @@ Class Procs:
/obj/machinery/LateInitialize()
. = ..()
power_change()
- RegisterSignal(src, COMSIG_ENTER_AREA, .proc/power_change)
+ RegisterSignal(src, COMSIG_ENTER_AREA, PROC_REF(power_change))
/obj/machinery/Destroy()
GLOB.machines.Remove(src)
@@ -441,7 +441,7 @@ Class Procs:
I.play_tool_sound(src, 50)
var/prev_anchored = anchored
//as long as we're the same anchored state and we're either on a floor or are anchored, toggle our anchored state
- if(I.use_tool(src, user, time, extra_checks = CALLBACK(src, .proc/unfasten_wrench_check, prev_anchored, user)))
+ if(I.use_tool(src, user, time, extra_checks = CALLBACK(src, PROC_REF(unfasten_wrench_check), prev_anchored, user)))
to_chat(user, "I [anchored ? "un" : ""]secure [src].")
setAnchored(!anchored)
playsound(src, 'sound/blank.ogg', 50, TRUE)
diff --git a/code/game/machinery/ai_slipper.dm b/code/game/machinery/ai_slipper.dm
index b0104c91ea..53f043e395 100644
--- a/code/game/machinery/ai_slipper.dm
+++ b/code/game/machinery/ai_slipper.dm
@@ -40,4 +40,4 @@
to_chat(user, "I activate [src]. It now has [uses] uses of foam remaining.")
cooldown = world.time + cooldown_time
power_change()
- addtimer(CALLBACK(src, .proc/power_change), cooldown_time)
+ addtimer(CALLBACK(src, PROC_REF(power_change)), cooldown_time)
diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm
index 28a3a5e36d..c93d363814 100644
--- a/code/game/machinery/autolathe.dm
+++ b/code/game/machinery/autolathe.dm
@@ -63,7 +63,7 @@
/datum/material/plastic,
/datum/material/adamantine,
/datum/material/mythril
- ), 0, TRUE, null, null, CALLBACK(src, .proc/AfterMaterialInsert))
+ ), 0, TRUE, null, null, CALLBACK(src, PROC_REF(AfterMaterialInsert)))
. = ..()
wires = new /datum/wires/autolathe(src)
@@ -198,7 +198,7 @@
if(materials.materials[i] > 0)
list_to_show += i
- used_material = input("Choose [used_material]", "Custom Material") as null|anything in sortList(list_to_show, /proc/cmp_typepaths_asc)
+ used_material = input("Choose [used_material]", "Custom Material") as null|anything in sortList(list_to_show, GLOBAL_PROC_REF(cmp_typepaths_asc))
if(!used_material)
return //Didn't pick any material, so you can't build shit either.
custom_materials[used_material] += amount_needed
@@ -210,7 +210,7 @@
use_power(power)
icon_state = "autolathe_n"
var/time = is_stack ? 32 : (32 * coeff * multiplier) ** 0.8
- addtimer(CALLBACK(src, .proc/make_item, power, materials_used, custom_materials, multiplier, coeff, is_stack, usr), time)
+ addtimer(CALLBACK(src, PROC_REF(make_item), power, materials_used, custom_materials, multiplier, coeff, is_stack, usr), time)
else
to_chat(usr, "Not enough materials for this operation.")
diff --git a/code/game/machinery/buttons.dm b/code/game/machinery/buttons.dm
index 67206e2a25..f85d9ef8c1 100644
--- a/code/game/machinery/buttons.dm
+++ b/code/game/machinery/buttons.dm
@@ -177,7 +177,7 @@
if(device)
device.pulsed()
- addtimer(CALLBACK(src, /atom/.proc/update_icon), 15)
+ addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, update_icon)), 15)
/obj/machinery/button/door
name = "door button"
diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm
index 33f10eaf41..4a9d54654a 100644
--- a/code/game/machinery/camera/camera.dm
+++ b/code/game/machinery/camera/camera.dm
@@ -144,7 +144,7 @@
set_light(0)
emped = emped+1 //Increase the number of consecutive EMP's
update_icon()
- addtimer(CALLBACK(src, .proc/post_emp_reset, emped, network), 90 SECONDS)
+ addtimer(CALLBACK(src, PROC_REF(post_emp_reset), emped, network), 90 SECONDS)
for(var/i in GLOB.player_list)
var/mob/M = i
if (M.client.eye == src)
@@ -164,7 +164,7 @@
if(can_use())
GLOB.cameranet.addCamera(src)
emped = 0 //Resets the consecutive EMP count
- addtimer(CALLBACK(src, .proc/cancelCameraAlarm), 100)
+ addtimer(CALLBACK(src, PROC_REF(cancelCameraAlarm)), 100)
/obj/machinery/camera/ex_act(severity, target)
if(invuln)
@@ -406,7 +406,7 @@
if(status)
change_msg = "reactivates"
triggerCameraAlarm()
- addtimer(CALLBACK(src, .proc/cancelCameraAlarm), 100)
+ addtimer(CALLBACK(src, PROC_REF(cancelCameraAlarm)), 100)
if(displaymessage)
if(user)
visible_message("[user] [change_msg] [src]!")
diff --git a/code/game/machinery/camera/tracking.dm b/code/game/machinery/camera/tracking.dm
index 1b4b01f204..04a4b18894 100644
--- a/code/game/machinery/camera/tracking.dm
+++ b/code/game/machinery/camera/tracking.dm
@@ -86,7 +86,7 @@
to_chat(U, "Now tracking [target.get_visible_name()] on camera.")
- INVOKE_ASYNC(src, .proc/do_track, target, U)
+ INVOKE_ASYNC(src, PROC_REF(do_track), target, U)
/mob/living/silicon/ai/proc/do_track(mob/living/target, mob/living/silicon/ai/U)
var/cameraticks = 0
diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm
index 55d10e2ffa..0ffb64963e 100644
--- a/code/game/machinery/cloning.dm
+++ b/code/game/machinery/cloning.dm
@@ -174,7 +174,7 @@
if(G.suiciding) // The ghost came from a body that is suiciding.
return NONE
if(clonemind.damnation_type) //Can't clone the damned.
- INVOKE_ASYNC(src, .proc/horrifyingsound)
+ INVOKE_ASYNC(src, PROC_REF(horrifyingsound))
mess = TRUE
icon_state = "pod_g"
update_icon()
diff --git a/code/game/machinery/computer/arena.dm b/code/game/machinery/computer/arena.dm
index 69a5af9b9c..edb625f026 100644
--- a/code/game/machinery/computer/arena.dm
+++ b/code/game/machinery/computer/arena.dm
@@ -234,7 +234,7 @@
for(var/mob/M in all_contestants())
to_chat(M,"The gates will open in [timetext]!")
start_time = world.time + start_delay
- addtimer(CALLBACK(src,.proc/begin),start_delay)
+ addtimer(CALLBACK(src,PROC_REF(begin)),start_delay)
for(var/team in teams)
var/obj/machinery/arena_spawn/team_spawn = get_spawn(team)
var/obj/effect/countdown/arena/A = new(team_spawn)
@@ -261,9 +261,9 @@
if(D.id != arena_id)
continue
if(closed)
- INVOKE_ASYNC(D, /obj/machinery/door/poddoor.proc/close)
+ INVOKE_ASYNC(D, TYPE_PROC_REF(/obj/machinery/door/poddoor, close))
else
- INVOKE_ASYNC(D, /obj/machinery/door/poddoor.proc/open)
+ INVOKE_ASYNC(D, TYPE_PROC_REF(/obj/machinery/door/poddoor, open))
/obj/machinery/computer/arena/Topic(href, href_list)
if(..())
diff --git a/code/game/machinery/computer/camera.dm b/code/game/machinery/computer/camera.dm
index 35ba1a21e4..478d69a8cd 100644
--- a/code/game/machinery/computer/camera.dm
+++ b/code/game/machinery/computer/camera.dm
@@ -128,7 +128,7 @@
user.clear_fullscreen("flash", 5)
watchers[user] = C
use_power(50)
- addtimer(CALLBACK(src, .proc/use_camera_console, user), 5)
+ addtimer(CALLBACK(src, PROC_REF(use_camera_console), user), 5)
else
user.unset_machine()
@@ -231,7 +231,7 @@
/obj/machinery/computer/security/telescreen/entertainment/Initialize()
. = ..()
- RegisterSignal(src, COMSIG_CLICK, .proc/BigClick)
+ RegisterSignal(src, COMSIG_CLICK, PROC_REF(BigClick))
// Bypass clickchain to allow humans to use the telescreen from a distance
/obj/machinery/computer/security/telescreen/entertainment/proc/BigClick()
diff --git a/code/game/machinery/computer/cloning.dm b/code/game/machinery/computer/cloning.dm
index d7fb302790..d6564a57f9 100644
--- a/code/game/machinery/computer/cloning.dm
+++ b/code/game/machinery/computer/cloning.dm
@@ -357,7 +357,7 @@
playsound(src, 'sound/blank.ogg', 50, FALSE)
say("Initiating scan...")
- addtimer(CALLBACK(src, .proc/do_scan, usr, body_only), 2 SECONDS)
+ addtimer(CALLBACK(src, PROC_REF(do_scan), usr, body_only), 2 SECONDS)
//No locking an open scanner.
else if ((href_list["lock"]) && !isnull(scanner) && scanner.is_operational())
diff --git a/code/game/machinery/computer/prisoner/gulag_teleporter.dm b/code/game/machinery/computer/prisoner/gulag_teleporter.dm
index 1b8227195e..de34d2dff4 100644
--- a/code/game/machinery/computer/prisoner/gulag_teleporter.dm
+++ b/code/game/machinery/computer/prisoner/gulag_teleporter.dm
@@ -104,7 +104,7 @@
if("teleport")
if(!teleporter || !beacon)
return
- addtimer(CALLBACK(src, .proc/teleport, usr), 5)
+ addtimer(CALLBACK(src, PROC_REF(teleport), usr), 5)
/obj/machinery/computer/prisoner/gulag_teleporter_computer/proc/scan_machinery()
teleporter = findteleporter()
diff --git a/code/game/machinery/computer/robot.dm b/code/game/machinery/computer/robot.dm
index 6ab3755c47..9586dc80e6 100644
--- a/code/game/machinery/computer/robot.dm
+++ b/code/game/machinery/computer/robot.dm
@@ -47,7 +47,7 @@
dat += "
No cyborg units detected within access parameters.
"
else
if(robo_list.len > 1)
- sortTim(robo_list, /proc/cmp_text_asc)
+ sortTim(robo_list, GLOBAL_PROC_REF(cmp_text_asc))
for(var/ai_unit in robo_list)
dat += "[ai_unit]
"
var/spacer
diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm
index 2800f0cc4d..af1032e818 100644
--- a/code/game/machinery/constructable_frame.dm
+++ b/code/game/machinery/constructable_frame.dm
@@ -206,7 +206,7 @@
for(var/obj/item/co in replacer)
part_list += co
//Sort the parts. This ensures that higher tier items are applied first.
- part_list = sortTim(part_list, /proc/cmp_rped_sort)
+ part_list = sortTim(part_list, GLOBAL_PROC_REF(cmp_rped_sort))
for(var/path in req_components)
while(req_components[path] > 0 && (locate(path) in part_list))
diff --git a/code/game/machinery/dance_machine.dm b/code/game/machinery/dance_machine.dm
index 7aeffead96..4023156c18 100644
--- a/code/game/machinery/dance_machine.dm
+++ b/code/game/machinery/dance_machine.dm
@@ -280,7 +280,7 @@
glow.set_light_color(LIGHT_COLOR_RED)
glow.even_cycle = !glow.even_cycle
if(prob(2)) // Unique effects for the dance floor that show up randomly to mix things up
- INVOKE_ASYNC(src, .proc/hierofunk)
+ INVOKE_ASYNC(src, PROC_REF(hierofunk))
sleep(selection.song_beat)
if(QDELETED(src))
return
@@ -301,7 +301,7 @@
/obj/machinery/jukebox/disco/proc/dance2(mob/living/M)
for(var/i in 0 to 9)
- dance_rotate(M, CALLBACK(M, /mob.proc/dance_flip))
+ dance_rotate(M, CALLBACK(M, TYPE_PROC_REF(/mob, dance_flip)))
sleep(20)
/mob/proc/dance_flip()
diff --git a/code/game/machinery/deployable.dm b/code/game/machinery/deployable.dm
index 8768702a82..a97721e3af 100644
--- a/code/game/machinery/deployable.dm
+++ b/code/game/machinery/deployable.dm
@@ -129,7 +129,7 @@
/obj/structure/barricade/security/Initialize()
. = ..()
- addtimer(CALLBACK(src, .proc/deploy), deploy_time)
+ addtimer(CALLBACK(src, PROC_REF(deploy)), deploy_time)
/obj/structure/barricade/security/proc/deploy()
icon_state = "barrier1"
diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm
index 9703418a37..cb30959c56 100644
--- a/code/game/machinery/doors/airlock.dm
+++ b/code/game/machinery/doors/airlock.dm
@@ -102,7 +102,7 @@
set_frequency(frequency)
if(closeOtherId != null)
- addtimer(CALLBACK(.proc/update_other_id), 5)
+ addtimer(CALLBACK(PROC_REF(update_other_id)), 5)
if(glass)
airlock_material = "glass"
if(security_level > AIRLOCK_SECURITY_METAL)
@@ -118,7 +118,7 @@
diag_hud.add_to_hud(src)
diag_hud_set_electrified()
- RegisterSignal(src, COMSIG_MACHINERY_BROKEN, .proc/on_break)
+ RegisterSignal(src, COMSIG_MACHINERY_BROKEN, PROC_REF(on_break))
return INITIALIZE_HINT_LATELOAD
@@ -215,9 +215,9 @@
return
if(density)
- INVOKE_ASYNC(src, .proc/open)
+ INVOKE_ASYNC(src, PROC_REF(open))
else
- INVOKE_ASYNC(src, .proc/close)
+ INVOKE_ASYNC(src, PROC_REF(close))
if("bolt")
if(command_value == "on" && locked)
@@ -325,7 +325,7 @@
if(cyclelinkedairlock.operating)
cyclelinkedairlock.delayed_close_requested = TRUE
else
- addtimer(CALLBACK(cyclelinkedairlock, .proc/close), 2)
+ addtimer(CALLBACK(cyclelinkedairlock, PROC_REF(close)), 2)
..()
/obj/machinery/door/airlock/proc/isElectrified()
@@ -382,7 +382,7 @@
secondsBackupPowerLost = 10
if(!spawnPowerRestoreRunning)
spawnPowerRestoreRunning = TRUE
- INVOKE_ASYNC(src, .proc/handlePowerRestore)
+ INVOKE_ASYNC(src, PROC_REF(handlePowerRestore))
update_icon()
/obj/machinery/door/airlock/proc/loseBackupPower()
@@ -390,7 +390,7 @@
secondsBackupPowerLost = 60
if(!spawnPowerRestoreRunning)
spawnPowerRestoreRunning = TRUE
- INVOKE_ASYNC(src, .proc/handlePowerRestore)
+ INVOKE_ASYNC(src, PROC_REF(handlePowerRestore))
update_icon()
/obj/machinery/door/airlock/proc/regainBackupPower()
@@ -956,7 +956,7 @@
user.visible_message("
[user] is [welded ? "unwelding":"welding"] the airlock.", \
"
I begin [welded ? "unwelding":"welding"] the airlock...", \
"
I hear welding.")
- if(W.use_tool(src, user, 40, volume=50, extra_checks = CALLBACK(src, .proc/weld_checks, W, user)))
+ if(W.use_tool(src, user, 40, volume=50, extra_checks = CALLBACK(src, PROC_REF(weld_checks), W, user)))
welded = !welded
user.visible_message("
[user.name] has [welded? "welded shut":"unwelded"] [src].", \
"
I [welded ? "weld the airlock shut":"unweld the airlock"].")
@@ -968,7 +968,7 @@
user.visible_message("
[user] is welding the airlock.", \
"
I begin repairing the airlock...", \
"
I hear welding.")
- if(W.use_tool(src, user, 40, volume=50, extra_checks = CALLBACK(src, .proc/weld_checks, W, user)))
+ if(W.use_tool(src, user, 40, volume=50, extra_checks = CALLBACK(src, PROC_REF(weld_checks), W, user)))
obj_integrity = max_integrity
stat &= ~BROKEN
user.visible_message("
[user.name] has repaired [src].", \
@@ -1023,7 +1023,7 @@
if(!F.wielded)
to_chat(user, "
I need to be wielding the fire axe to do that!")
return
- INVOKE_ASYNC(src, (density ? .proc/open : .proc/close), 2)
+ INVOKE_ASYNC(src, (density ? PROC_REF(open) : PROC_REF(close)), 2)
/obj/machinery/door/airlock/open(forced=0)
@@ -1062,7 +1062,7 @@
operating = FALSE
if(delayed_close_requested)
delayed_close_requested = FALSE
- addtimer(CALLBACK(src, .proc/close), 1)
+ addtimer(CALLBACK(src, PROC_REF(close)), 1)
return TRUE
@@ -1276,7 +1276,7 @@
secondsElectrified = seconds
diag_hud_set_electrified()
if(secondsElectrified > MACHINE_NOT_ELECTRIFIED)
- INVOKE_ASYNC(src, .proc/electrified_loop)
+ INVOKE_ASYNC(src, PROC_REF(electrified_loop))
if(user)
var/message
diff --git a/code/game/machinery/doors/brigdoors.dm b/code/game/machinery/doors/brigdoors.dm
index b9a405fe24..a777ca997c 100644
--- a/code/game/machinery/doors/brigdoors.dm
+++ b/code/game/machinery/doors/brigdoors.dm
@@ -90,7 +90,7 @@
for(var/obj/machinery/door/window/brigdoor/door in targets)
if(door.density)
continue
- INVOKE_ASYNC(door, /obj/machinery/door/window/brigdoor.proc/close)
+ INVOKE_ASYNC(door, TYPE_PROC_REF(/obj/machinery/door/window/brigdoor, close))
for(var/obj/structure/closet/secure_closet/brig/C in targets)
if(C.broken)
@@ -119,7 +119,7 @@
for(var/obj/machinery/door/window/brigdoor/door in targets)
if(!door.density)
continue
- INVOKE_ASYNC(door, /obj/machinery/door/window/brigdoor.proc/open)
+ INVOKE_ASYNC(door, TYPE_PROC_REF(/obj/machinery/door/window/brigdoor, open))
for(var/obj/structure/closet/secure_closet/brig/C in targets)
if(C.broken)
diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm
index 0726795b45..37353f6c97 100644
--- a/code/game/machinery/doors/door.dm
+++ b/code/game/machinery/doors/door.dm
@@ -244,12 +244,12 @@
if (. & EMP_PROTECT_SELF)
return
if(prob(20/severity) && (istype(src, /obj/machinery/door/airlock) || istype(src, /obj/machinery/door/window)) )
- INVOKE_ASYNC(src, .proc/open)
+ INVOKE_ASYNC(src, PROC_REF(open))
if(prob(severity*10 - 20))
if(secondsElectrified == MACHINE_NOT_ELECTRIFIED)
secondsElectrified = MACHINE_ELECTRIFIED_PERMANENT
LAZYADD(shockedby, "\[[time_stamp()]\]EM Pulse")
- addtimer(CALLBACK(src, .proc/unelectrify), 300)
+ addtimer(CALLBACK(src, PROC_REF(unelectrify)), 300)
/obj/machinery/door/proc/unelectrify()
secondsElectrified = MACHINE_NOT_ELECTRIFIED
@@ -296,7 +296,7 @@
air_update_turf(1)
update_freelook_sight()
if(autoclose)
- addtimer(CALLBACK(src, .proc/close), autoclose)
+ addtimer(CALLBACK(src, PROC_REF(close)), autoclose)
return 1
/obj/machinery/door/proc/close()
@@ -364,7 +364,7 @@
close()
/obj/machinery/door/proc/autoclose_in(wait)
- addtimer(CALLBACK(src, .proc/autoclose), wait, TIMER_UNIQUE | TIMER_NO_HASH_WAIT | TIMER_OVERRIDE)
+ addtimer(CALLBACK(src, PROC_REF(autoclose)), wait, TIMER_UNIQUE | TIMER_NO_HASH_WAIT | TIMER_OVERRIDE)
/obj/machinery/door/proc/requiresID()
return 1
diff --git a/code/game/machinery/doors/poddoor.dm b/code/game/machinery/doors/poddoor.dm
index 74d6e634d7..70f194bd2f 100644
--- a/code/game/machinery/doors/poddoor.dm
+++ b/code/game/machinery/doors/poddoor.dm
@@ -37,9 +37,9 @@
/obj/machinery/door/poddoor/shuttledock/proc/check()
var/turf/T = get_step(src, checkdir)
if(!istype(T, turftype))
- INVOKE_ASYNC(src, .proc/open)
+ INVOKE_ASYNC(src, PROC_REF(open))
else
- INVOKE_ASYNC(src, .proc/close)
+ INVOKE_ASYNC(src, PROC_REF(close))
/obj/machinery/door/poddoor/incinerator_toxmix
name = "combustion chamber vent"
diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm
index bb4f477862..999dbf89b3 100644
--- a/code/game/machinery/doors/windowdoor.dm
+++ b/code/game/machinery/doors/windowdoor.dm
@@ -319,11 +319,11 @@
return
if(density)
- INVOKE_ASYNC(src, .proc/open)
+ INVOKE_ASYNC(src, PROC_REF(open))
else
- INVOKE_ASYNC(src, .proc/close)
+ INVOKE_ASYNC(src, PROC_REF(close))
if("touch")
- INVOKE_ASYNC(src, .proc/open_and_close)
+ INVOKE_ASYNC(src, PROC_REF(open_and_close))
/obj/machinery/door/window/brigdoor
name = "secure door"
diff --git a/code/game/machinery/doppler_array.dm b/code/game/machinery/doppler_array.dm
index bbf03126df..d5feada9b2 100644
--- a/code/game/machinery/doppler_array.dm
+++ b/code/game/machinery/doppler_array.dm
@@ -19,7 +19,7 @@ GLOBAL_LIST_EMPTY(doppler_arrays)
/obj/machinery/doppler_array/ComponentInitialize()
. = ..()
- AddComponent(/datum/component/simple_rotation,ROTATION_ALTCLICK | ROTATION_CLOCKWISE,null,null,CALLBACK(src,.proc/rot_message))
+ AddComponent(/datum/component/simple_rotation,ROTATION_ALTCLICK | ROTATION_CLOCKWISE,null,null,CALLBACK(src,PROC_REF(rot_message)))
/obj/machinery/doppler_array/Destroy()
GLOB.doppler_arrays -= src
diff --git a/code/game/machinery/embedded_controller/access_controller.dm b/code/game/machinery/embedded_controller/access_controller.dm
index 05d9062ebe..63c879ef0e 100644
--- a/code/game/machinery/embedded_controller/access_controller.dm
+++ b/code/game/machinery/embedded_controller/access_controller.dm
@@ -205,7 +205,7 @@
goIdle(TRUE)
return
A.unbolt()
- INVOKE_ASYNC(src, .proc/do_openDoor, A)
+ INVOKE_ASYNC(src, PROC_REF(do_openDoor), A)
/obj/machinery/doorButtons/airlock_controller/proc/do_openDoor(obj/machinery/door/airlock/A)
if(A && A.open())
diff --git a/code/game/machinery/embedded_controller/embedded_controller_base.dm b/code/game/machinery/embedded_controller/embedded_controller_base.dm
index 6fd351bcff..5f677ad62c 100644
--- a/code/game/machinery/embedded_controller/embedded_controller_base.dm
+++ b/code/game/machinery/embedded_controller/embedded_controller_base.dm
@@ -48,10 +48,10 @@
if(program)
program.receive_user_command(href_list["command"])
- addtimer(CALLBACK(program, /datum/computer/file/embedded_program.proc/process), 5)
+ addtimer(CALLBACK(program, TYPE_PROC_REF(/datum/computer/file/embedded_program, process)), 5)
usr.set_machine(src)
- addtimer(CALLBACK(src, .proc/updateDialog), 5)
+ addtimer(CALLBACK(src, PROC_REF(updateDialog)), 5)
/obj/machinery/embedded_controller/process()
if(program)
diff --git a/code/game/machinery/exp_cloner.dm b/code/game/machinery/exp_cloner.dm
index 26f79ec8d0..051e1bdcfe 100644
--- a/code/game/machinery/exp_cloner.dm
+++ b/code/game/machinery/exp_cloner.dm
@@ -234,7 +234,7 @@
playsound(src, 'sound/blank.ogg', 50, FALSE)
say("Initiating scan...")
- addtimer(CALLBACK(src, .proc/do_clone), 2 SECONDS)
+ addtimer(CALLBACK(src, PROC_REF(do_clone)), 2 SECONDS)
//No locking an open scanner.
else if ((href_list["lock"]) && !isnull(scanner) && scanner.is_operational())
diff --git a/code/game/machinery/fat_sucker.dm b/code/game/machinery/fat_sucker.dm
index 198e5fb695..5c2815e1e3 100644
--- a/code/game/machinery/fat_sucker.dm
+++ b/code/game/machinery/fat_sucker.dm
@@ -58,7 +58,7 @@
occupant = null
return
to_chat(occupant, "
I enter [src].")
- addtimer(CALLBACK(src, .proc/start_extracting), 20, TIMER_OVERRIDE|TIMER_UNIQUE)
+ addtimer(CALLBACK(src, PROC_REF(start_extracting)), 20, TIMER_OVERRIDE|TIMER_UNIQUE)
update_icon()
/obj/machinery/fat_sucker/open_machine(mob/user)
diff --git a/code/game/machinery/harvester.dm b/code/game/machinery/harvester.dm
index caf640d3c3..52a71304de 100644
--- a/code/game/machinery/harvester.dm
+++ b/code/game/machinery/harvester.dm
@@ -88,7 +88,7 @@
visible_message("
The [name] begins warming up!")
say("Initializing harvest protocol.")
update_icon(TRUE)
- addtimer(CALLBACK(src, .proc/harvest), interval)
+ addtimer(CALLBACK(src, PROC_REF(harvest)), interval)
/obj/machinery/harvester/proc/harvest()
update_icon()
@@ -122,7 +122,7 @@
operation_order.Remove(BP)
break
use_power(5000)
- addtimer(CALLBACK(src, .proc/harvest), interval)
+ addtimer(CALLBACK(src, PROC_REF(harvest)), interval)
/obj/machinery/harvester/proc/end_harvesting()
harvesting = FALSE
diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm
index 87df3e78e5..fb5b0f9978 100644
--- a/code/game/machinery/hologram.dm
+++ b/code/game/machinery/hologram.dm
@@ -640,7 +640,7 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/
if(HOLORECORD_SOUND)
playsound(src,entry[2],50,TRUE)
if(HOLORECORD_DELAY)
- addtimer(CALLBACK(src,.proc/replay_entry,entry_number+1),entry[2])
+ addtimer(CALLBACK(src,PROC_REF(replay_entry),entry_number+1),entry[2])
return
if(HOLORECORD_LANGUAGE)
var/datum/language_holder/holder = replay_holo.get_language_holder()
diff --git a/code/game/machinery/limbgrower.dm b/code/game/machinery/limbgrower.dm
index 265085ddd6..dc818f9f1b 100644
--- a/code/game/machinery/limbgrower.dm
+++ b/code/game/machinery/limbgrower.dm
@@ -106,7 +106,7 @@
use_power(power)
flick("limbgrower_fill",src)
icon_state = "limbgrower_idleon"
- addtimer(CALLBACK(src, .proc/build_item),32*prod_coeff)
+ addtimer(CALLBACK(src, PROC_REF(build_item)),32*prod_coeff)
else
to_chat(usr, "
The limb grower is busy. Please wait for completion of previous operation.")
diff --git a/code/game/machinery/magnet.dm b/code/game/machinery/magnet.dm
index b774ee6ae7..c62bccbba1 100644
--- a/code/game/machinery/magnet.dm
+++ b/code/game/machinery/magnet.dm
@@ -129,7 +129,7 @@
on = !on
if(on)
- INVOKE_ASYNC(src, .proc/magnetic_process)
+ INVOKE_ASYNC(src, PROC_REF(magnetic_process))
@@ -315,7 +315,7 @@
if("togglemoving")
moving = !moving
if(moving)
- INVOKE_ASYNC(src, .proc/MagnetMove)
+ INVOKE_ASYNC(src, PROC_REF(MagnetMove))
updateUsrDialog()
@@ -352,7 +352,7 @@
pathpos++ // increase iterator
// Broadcast the signal
- INVOKE_ASYNC(CALLBACK(radio_connection, /datum/radio_frequency.proc/post_signal, src, signal, RADIO_MAGNETS))
+ INVOKE_ASYNC(CALLBACK(radio_connection, TYPE_PROC_REF(/datum/radio_frequency, post_signal), src, signal, RADIO_MAGNETS))
if(speed == 10)
sleep(1)
diff --git a/code/game/machinery/newscaster.dm b/code/game/machinery/newscaster.dm
index 05543057d9..ed890f1c82 100644
--- a/code/game/machinery/newscaster.dm
+++ b/code/game/machinery/newscaster.dm
@@ -849,7 +849,7 @@ GLOBAL_LIST_EMPTY(allCasters)
say("Breaking news from [channel]!")
alert = TRUE
update_icon()
- addtimer(CALLBACK(src,.proc/remove_alert),alert_delay,TIMER_UNIQUE|TIMER_OVERRIDE)
+ addtimer(CALLBACK(src,PROC_REF(remove_alert)),alert_delay,TIMER_UNIQUE|TIMER_OVERRIDE)
playsound(loc, 'sound/blank.ogg', 75, TRUE)
else
say("Attention! Wanted issue distributed!")
diff --git a/code/game/machinery/porta_turret/portable_turret.dm b/code/game/machinery/porta_turret/portable_turret.dm
index 8c5734b14f..76cf22e60b 100644
--- a/code/game/machinery/porta_turret/portable_turret.dm
+++ b/code/game/machinery/porta_turret/portable_turret.dm
@@ -97,7 +97,7 @@
base.layer = NOT_HIGH_OBJ_LAYER
underlays += base
if(!has_cover)
- INVOKE_ASYNC(src, .proc/popUp)
+ INVOKE_ASYNC(src, PROC_REF(popUp))
/obj/machinery/porta_turret/update_icon_state()
if(!anchored)
@@ -323,7 +323,7 @@
spark_system.start()
if(on && !(turret_flags & TURRET_FLAG_SHOOT_ALL_REACT) && !(obj_flags & EMAGGED))
turret_flags |= TURRET_FLAG_SHOOT_ALL_REACT
- addtimer(CALLBACK(src, .proc/reset_attacked), 60)
+ addtimer(CALLBACK(src, PROC_REF(reset_attacked)), 60)
/obj/machinery/porta_turret/proc/reset_attacked()
turret_flags &= ~TURRET_FLAG_SHOOT_ALL_REACT
@@ -707,9 +707,9 @@
if(target)
setDir(get_dir(base, target))//even if you can't shoot, follow the target
shootAt(target)
- addtimer(CALLBACK(src, .proc/shootAt, target), 5)
- addtimer(CALLBACK(src, .proc/shootAt, target), 10)
- addtimer(CALLBACK(src, .proc/shootAt, target), 15)
+ addtimer(CALLBACK(src, PROC_REF(shootAt), target), 5)
+ addtimer(CALLBACK(src, PROC_REF(shootAt), target), 10)
+ addtimer(CALLBACK(src, PROC_REF(shootAt), target), 15)
return TRUE
/obj/machinery/porta_turret/ai
diff --git a/code/game/machinery/recycler.dm b/code/game/machinery/recycler.dm
index cf2680154a..5daad5d64a 100644
--- a/code/game/machinery/recycler.dm
+++ b/code/game/machinery/recycler.dm
@@ -150,7 +150,7 @@
safety_mode = TRUE
update_icon()
L.forceMove(loc)
- addtimer(CALLBACK(src, .proc/reboot), SAFETY_COOLDOWN)
+ addtimer(CALLBACK(src, PROC_REF(reboot)), SAFETY_COOLDOWN)
/obj/machinery/recycler/proc/reboot()
playsound(src, 'sound/blank.ogg', 50, FALSE)
diff --git a/code/game/machinery/requests_console.dm b/code/game/machinery/requests_console.dm
index 0364794358..8ca03d67f4 100644
--- a/code/game/machinery/requests_console.dm
+++ b/code/game/machinery/requests_console.dm
@@ -289,7 +289,7 @@ GLOBAL_LIST_EMPTY(req_console_ckey_departments)
Radio.set_frequency(radio_freq)
Radio.talk_into(src,"[emergency] emergency in [department]!!",radio_freq)
update_icon()
- addtimer(CALLBACK(src, .proc/clear_emergency), 5 MINUTES)
+ addtimer(CALLBACK(src, PROC_REF(clear_emergency)), 5 MINUTES)
if(href_list["send"] && message && to_department && priority)
diff --git a/code/game/machinery/roulette_machine.dm b/code/game/machinery/roulette_machine.dm
index 869579a15c..d3f07ce878 100644
--- a/code/game/machinery/roulette_machine.dm
+++ b/code/game/machinery/roulette_machine.dm
@@ -141,7 +141,7 @@
playsound(src, 'sound/blank.ogg', 70)
playsound(src, 'sound/blank.ogg', 50)
- addtimer(CALLBACK(src, .proc/play, user, player_card, chosen_bet_type, chosen_bet_amount, potential_payout), 4) //Animation first
+ addtimer(CALLBACK(src, PROC_REF(play), user, player_card, chosen_bet_type, chosen_bet_amount, potential_payout), 4) //Animation first
return TRUE
else
var/obj/item/card/id/new_card = W
@@ -171,8 +171,8 @@
var/rolled_number = rand(0, 36)
playsound(src, 'sound/blank.ogg', 50)
- addtimer(CALLBACK(src, .proc/finish_play, player_id, bet_type, bet_amount, payout, rolled_number), 34) //4 deciseconds more so the animation can play
- addtimer(CALLBACK(src, .proc/finish_play_animation), 30)
+ addtimer(CALLBACK(src, PROC_REF(finish_play), player_id, bet_type, bet_amount, payout, rolled_number), 34) //4 deciseconds more so the animation can play
+ addtimer(CALLBACK(src, PROC_REF(finish_play_animation)), 30)
/obj/machinery/roulette/proc/finish_play_animation()
icon_state = "idle"
@@ -244,7 +244,7 @@
var/obj/item/cash = new coin_to_drop(drop_loc)
playsound(cash, pick(list('sound/blank.ogg')), 40, TRUE)
- addtimer(CALLBACK(src, .proc/drop_coin), 3) //Recursion time
+ addtimer(CALLBACK(src, PROC_REF(drop_coin)), 3) //Recursion time
///Fills a list of coins that should be dropped.
@@ -366,7 +366,7 @@
return
loc.visible_message("
\The [src] begins to beep loudly!")
used = TRUE
- addtimer(CALLBACK(src, .proc/launch_payload), 40)
+ addtimer(CALLBACK(src, PROC_REF(launch_payload)), 40)
/obj/item/roulette_wheel_beacon/proc/launch_payload()
var/obj/structure/closet/supplypod/centcompod/toLaunch = new()
diff --git a/code/game/machinery/scan_gate.dm b/code/game/machinery/scan_gate.dm
index 68f742f28c..a55ac2f5a2 100644
--- a/code/game/machinery/scan_gate.dm
+++ b/code/game/machinery/scan_gate.dm
@@ -49,7 +49,7 @@
deltimer(scanline_timer)
add_overlay(type)
if(duration)
- scanline_timer = addtimer(CALLBACK(src, .proc/set_scanline, "passive"), duration, TIMER_STOPPABLE)
+ scanline_timer = addtimer(CALLBACK(src, PROC_REF(set_scanline), "passive"), duration, TIMER_STOPPABLE)
/obj/machinery/scanner_gate/attackby(obj/item/W, mob/user, params)
var/obj/item/card/id/card = W.GetID()
diff --git a/code/game/machinery/slotmachine.dm b/code/game/machinery/slotmachine.dm
index e12acdeb8c..24bf5abfc3 100644
--- a/code/game/machinery/slotmachine.dm
+++ b/code/game/machinery/slotmachine.dm
@@ -209,9 +209,9 @@
update_icon()
updateDialog()
- var/spin_loop = addtimer(CALLBACK(src, .proc/do_spin), 2, TIMER_LOOP|TIMER_STOPPABLE)
+ var/spin_loop = addtimer(CALLBACK(src, PROC_REF(do_spin)), 2, TIMER_LOOP|TIMER_STOPPABLE)
- addtimer(CALLBACK(src, .proc/finish_spinning, spin_loop, user, the_name), SPIN_TIME - (REEL_DEACTIVATE_DELAY * reels.len))
+ addtimer(CALLBACK(src, PROC_REF(finish_spinning), spin_loop, user, the_name), SPIN_TIME - (REEL_DEACTIVATE_DELAY * reels.len))
//WARNING: no sanity checking for user since it's not needed and would complicate things (machine should still spin even if user is gone), be wary of this if you're changing this code.
/obj/machinery/computer/slot_machine/proc/do_spin()
diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm
index e86adc5a6e..639561a190 100644
--- a/code/game/machinery/suit_storage_unit.dm
+++ b/code/game/machinery/suit_storage_unit.dm
@@ -251,7 +251,7 @@
else
mob_occupant.adjustFireLoss(rand(10, 16))
mob_occupant.emote("scream")
- addtimer(CALLBACK(src, .proc/cook), 50)
+ addtimer(CALLBACK(src, PROC_REF(cook)), 50)
else
uv_cycles = initial(uv_cycles)
uv = FALSE
@@ -340,7 +340,7 @@
if(locked)
visible_message("
I see [user] kicking against the doors of [src]!", \
"
I start kicking against the doors...")
- addtimer(CALLBACK(src, .proc/resist_open, user), 300)
+ addtimer(CALLBACK(src, PROC_REF(resist_open), user), 300)
else
open_machine()
dump_contents()
diff --git a/code/game/machinery/syndicatebomb.dm b/code/game/machinery/syndicatebomb.dm
index 71416011ee..a37e3778c4 100644
--- a/code/game/machinery/syndicatebomb.dm
+++ b/code/game/machinery/syndicatebomb.dm
@@ -399,7 +399,7 @@
chem_splash(get_turf(src), spread_range, list(reactants), temp_boost)
// Detonate it again in one second, until it's out of juice.
- addtimer(CALLBACK(src, .proc/detonate), 10)
+ addtimer(CALLBACK(src, PROC_REF(detonate)), 10)
// If it's not a time release bomb, do normal explosion
diff --git a/code/game/machinery/telecomms/computers/message.dm b/code/game/machinery/telecomms/computers/message.dm
index 156f7da37d..1607776775 100644
--- a/code/game/machinery/telecomms/computers/message.dm
+++ b/code/game/machinery/telecomms/computers/message.dm
@@ -59,7 +59,7 @@
// Will help make emagging the console not so easy to get away with.
MK.info += "
£%@%(*$%&(£&?*(%&£/{}"
var/time = 100 * length(linkedServer.decryptkey)
- addtimer(CALLBACK(src, .proc/UnmagConsole), time)
+ addtimer(CALLBACK(src, PROC_REF(UnmagConsole)), time)
message = rebootmsg
else
to_chat(user, "
A no server error appears on the screen.")
diff --git a/code/game/machinery/telecomms/machines/broadcaster.dm b/code/game/machinery/telecomms/machines/broadcaster.dm
index d37c42a349..656db981c0 100644
--- a/code/game/machinery/telecomms/machines/broadcaster.dm
+++ b/code/game/machinery/telecomms/machines/broadcaster.dm
@@ -48,7 +48,7 @@ GLOBAL_VAR_INIT(message_delay, 0) // To make sure restarting the recentmessages
if(!GLOB.message_delay)
GLOB.message_delay = TRUE
- addtimer(CALLBACK(GLOBAL_PROC, .proc/end_message_delay), 1 SECONDS)
+ addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(end_message_delay)), 1 SECONDS)
/* --- Do a snazzy animation! --- */
flick("broadcaster_send", src)
diff --git a/code/game/machinery/telecomms/telecomunications.dm b/code/game/machinery/telecomms/telecomunications.dm
index 38007b2d19..2a297ee2d1 100644
--- a/code/game/machinery/telecomms/telecomunications.dm
+++ b/code/game/machinery/telecomms/telecomunications.dm
@@ -148,7 +148,7 @@ GLOBAL_LIST_EMPTY(telecomms_list)
if(prob(100/severity) && !(stat & EMPED))
stat |= EMPED
var/duration = (300 * 10)/severity
- addtimer(CALLBACK(src, .proc/de_emp), rand(duration - 20, duration + 20))
+ addtimer(CALLBACK(src, PROC_REF(de_emp)), rand(duration - 20, duration + 20))
/obj/machinery/telecomms/proc/de_emp()
stat &= ~EMPED
diff --git a/code/game/machinery/transformer.dm b/code/game/machinery/transformer.dm
index d43d3450a5..09ecd72b30 100644
--- a/code/game/machinery/transformer.dm
+++ b/code/game/machinery/transformer.dm
@@ -99,7 +99,7 @@
R.connected_ai = masterAI
R.lawsync()
R.lawupdate = 1
- addtimer(CALLBACK(src, .proc/unlock_new_robot, R), 50)
+ addtimer(CALLBACK(src, PROC_REF(unlock_new_robot), R), 50)
/obj/machinery/transformer/proc/unlock_new_robot(mob/living/silicon/robot/R)
playsound(src.loc, 'sound/blank.ogg', 50, FALSE)
diff --git a/code/game/machinery/washing_machine.dm b/code/game/machinery/washing_machine.dm
index fb09415141..d1be4baacb 100644
--- a/code/game/machinery/washing_machine.dm
+++ b/code/game/machinery/washing_machine.dm
@@ -124,7 +124,7 @@ GLOBAL_LIST_INIT(dye_registry, list(
/obj/machinery/washing_machine/ComponentInitialize()
. = ..()
- RegisterSignal(src, COMSIG_COMPONENT_CLEAN_ACT, .proc/clean_blood)
+ RegisterSignal(src, COMSIG_COMPONENT_CLEAN_ACT, PROC_REF(clean_blood))
/obj/machinery/washing_machine/examine(mob/user)
. = ..()
@@ -144,7 +144,7 @@ GLOBAL_LIST_INIT(dye_registry, list(
return
busy = TRUE
update_icon()
- addtimer(CALLBACK(src, .proc/wash_cycle), 200)
+ addtimer(CALLBACK(src, PROC_REF(wash_cycle)), 200)
START_PROCESSING(SSfastprocess, src)
diff --git a/code/game/mecha/combat/durand.dm b/code/game/mecha/combat/durand.dm
index 56fd4a3755..49a7120657 100644
--- a/code/game/mecha/combat/durand.dm
+++ b/code/game/mecha/combat/durand.dm
@@ -17,8 +17,8 @@
shield = new/obj/durand_shield
shield.chassis = src
shield.layer = layer
- RegisterSignal(src, COMSIG_MECHA_ACTION_ACTIVATE, .proc/relay)
- RegisterSignal(src, COMSIG_PROJECTILE_PREHIT, .proc/prehit)
+ RegisterSignal(src, COMSIG_MECHA_ACTION_ACTIVATE, PROC_REF(relay))
+ RegisterSignal(src, COMSIG_PROJECTILE_PREHIT, PROC_REF(prehit))
. = ..()
/obj/mecha/combat/durand/Destroy()
@@ -144,7 +144,7 @@ own integrity back to max. Shield is automatically dropped if we run out of powe
/obj/durand_shield/Initialize()
. = ..()
- RegisterSignal(src, COMSIG_MECHA_ACTION_ACTIVATE, .proc/activate)
+ RegisterSignal(src, COMSIG_MECHA_ACTION_ACTIVATE, PROC_REF(activate))
/obj/durand_shield/Destroy()
if(chassis)
diff --git a/code/game/mecha/equipment/mecha_equipment.dm b/code/game/mecha/equipment/mecha_equipment.dm
index 27cb34b6f1..603b77b4bf 100644
--- a/code/game/mecha/equipment/mecha_equipment.dm
+++ b/code/game/mecha/equipment/mecha_equipment.dm
@@ -98,7 +98,7 @@
/obj/item/mecha_parts/mecha_equipment/proc/start_cooldown()
set_ready_state(0)
chassis.use_power(energy_drain)
- addtimer(CALLBACK(src, .proc/set_ready_state, 1), equip_cooldown)
+ addtimer(CALLBACK(src, PROC_REF(set_ready_state), 1), equip_cooldown)
/obj/item/mecha_parts/mecha_equipment/proc/do_after_cooldown(atom/target)
if(!chassis)
diff --git a/code/game/mecha/equipment/tools/other_tools.dm b/code/game/mecha/equipment/tools/other_tools.dm
index 5fe7cca7df..ac70f8fb63 100644
--- a/code/game/mecha/equipment/tools/other_tools.dm
+++ b/code/game/mecha/equipment/tools/other_tools.dm
@@ -121,7 +121,7 @@
var/mob/M = A
if(M.mob_negates_gravity())
continue
- INVOKE_ASYNC(src, .proc/do_scatter, A, target)
+ INVOKE_ASYNC(src, PROC_REF(do_scatter), A, target)
var/turf/T = get_turf(target)
log_game("[key_name(chassis.occupant)] used a Gravitational Catapult repulse wave on [AREACOORD(T)]")
diff --git a/code/game/mecha/equipment/weapons/weapons.dm b/code/game/mecha/equipment/weapons/weapons.dm
index 7fd75f322c..3076bb1c09 100644
--- a/code/game/mecha/equipment/weapons/weapons.dm
+++ b/code/game/mecha/equipment/weapons/weapons.dm
@@ -72,7 +72,7 @@
/obj/item/mecha_parts/mecha_equipment/weapon/energy/start_cooldown()
set_ready_state(0)
chassis.use_power(energy_drain*get_shot_amount())
- addtimer(CALLBACK(src, .proc/set_ready_state, 1), equip_cooldown)
+ addtimer(CALLBACK(src, PROC_REF(set_ready_state), 1), equip_cooldown)
/obj/item/mecha_parts/mecha_equipment/weapon/energy/laser
equip_cooldown = 8
@@ -396,7 +396,7 @@
var/turf/T = get_turf(src)
message_admins("[ADMIN_LOOKUPFLW(chassis.occupant)] fired a [src] in [ADMIN_VERBOSEJMP(T)]")
log_game("[key_name(chassis.occupant)] fired a [src] in [AREACOORD(T)]")
- addtimer(CALLBACK(F, /obj/item/grenade/flashbang.proc/prime), det_time)
+ addtimer(CALLBACK(F, TYPE_PROC_REF(/obj/item/grenade/flashbang, prime)), det_time)
/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/launcher/flashbang/clusterbang //Because I am a heartless bastard -Sieve //Heartless? for making the poor man's honkblast? - Kaze
name = "\improper SOB-3 grenade launcher"
diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm
index a827c9920b..6d478567db 100644
--- a/code/game/mecha/mech_fabricator.dm
+++ b/code/game/mecha/mech_fabricator.dm
@@ -362,7 +362,7 @@
add_part_set_to_queue(href_list["partset_to_queue"])
return update_queue_on_page()
if(href_list["process_queue"])
- INVOKE_ASYNC(src, .proc/do_process_queue)
+ INVOKE_ASYNC(src, PROC_REF(do_process_queue))
if(href_list["clear_temp"])
temp = null
if(href_list["screen"])
@@ -423,7 +423,7 @@
/obj/machinery/mecha_part_fabricator/proc/AfterMaterialInsert(item_inserted, id_inserted, amount_inserted)
var/datum/material/M = id_inserted
add_overlay("fab-load-[M.name]")
- addtimer(CALLBACK(src, /atom/proc/cut_overlay, "fab-load-[M.name]"), 10)
+ addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, cut_overlay), "fab-load-[M.name]"), 10)
updateUsrDialog()
/obj/machinery/mecha_part_fabricator/attackby(obj/item/W, mob/user, params)
diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm
index 938d124f6f..6844a454f2 100644
--- a/code/game/mecha/mecha.dm
+++ b/code/game/mecha/mecha.dm
@@ -459,7 +459,7 @@
for(var/mob/M in get_hearers_in_view(7,src))
if(M.client)
speech_bubble_recipients.Add(M.client)
- INVOKE_ASYNC(GLOBAL_PROC, /proc/flick_overlay, image('icons/mob/talk.dmi', src, "machine[say_test(raw_message)]",MOB_LAYER+1), speech_bubble_recipients, 30)
+ INVOKE_ASYNC(GLOBAL_PROC, GLOBAL_PROC_REF(flick_overlay), image('icons/mob/talk.dmi', src, "machine[say_test(raw_message)]",MOB_LAYER+1), speech_bubble_recipients, 30)
////////////////////////////
///// Action processing ////
diff --git a/code/game/mecha/mecha_control_console.dm b/code/game/mecha/mecha_control_console.dm
index c3686e0519..56c43ecad1 100644
--- a/code/game/mecha/mecha_control_console.dm
+++ b/code/game/mecha/mecha_control_console.dm
@@ -103,7 +103,7 @@
var/obj/mecha/M = in_mecha()
if(M)
M.emp_act(EMP_HEAVY)
- addtimer(CALLBACK(src, /obj/item/mecha_parts/mecha_tracking/proc/recharge), 5 SECONDS, TIMER_UNIQUE | TIMER_OVERRIDE)
+ addtimer(CALLBACK(src, TYPE_PROC_REF(/obj/item/mecha_parts/mecha_tracking, recharge)), 5 SECONDS, TIMER_UNIQUE | TIMER_OVERRIDE)
recharging = 1
/obj/item/mecha_parts/mecha_tracking/proc/recharge()
diff --git a/code/game/mecha/mecha_defense.dm b/code/game/mecha/mecha_defense.dm
index 9bf8236597..2035f3eb6d 100644
--- a/code/game/mecha/mecha_defense.dm
+++ b/code/game/mecha/mecha_defense.dm
@@ -155,7 +155,7 @@
occupant?.update_mouse_pointer()
if(!equipment_disabled && occupant) //prevent spamming this message with back-to-back EMPs
to_chat(occupant, "
Error -- Connection to equipment control unit has been lost.")
- addtimer(CALLBACK(src, /obj/mecha/proc/restore_equipment), 3 SECONDS, TIMER_UNIQUE | TIMER_OVERRIDE)
+ addtimer(CALLBACK(src, TYPE_PROC_REF(/obj/mecha, restore_equipment)), 3 SECONDS, TIMER_UNIQUE | TIMER_OVERRIDE)
equipment_disabled = 1
/obj/mecha/temperature_expose(datum/gas_mixture/air, exposed_temperature, exposed_volume)
diff --git a/code/game/mecha/mecha_topic.dm b/code/game/mecha/mecha_topic.dm
index 77a7151897..0b234d23b7 100644
--- a/code/game/mecha/mecha_topic.dm
+++ b/code/game/mecha/mecha_topic.dm
@@ -406,7 +406,7 @@
if(href_list["repair_int_control_lost"])
occupant_message("
Recalibrating coordination system...")
log_message("Recalibration of coordination system started.", LOG_MECHA)
- addtimer(CALLBACK(src, .proc/stationary_repair, loc), 100, TIMER_UNIQUE)
+ addtimer(CALLBACK(src, PROC_REF(stationary_repair), loc), 100, TIMER_UNIQUE)
///Repairs internal damage if the mech hasn't moved.
/obj/mecha/proc/stationary_repair(location)
diff --git a/code/game/objects/effects/anomalies.dm b/code/game/objects/effects/anomalies.dm
index 32eb173355..4f2baaac1d 100644
--- a/code/game/objects/effects/anomalies.dm
+++ b/code/game/objects/effects/anomalies.dm
@@ -228,7 +228,7 @@
if(ismob(A) && !(A in flashers)) // don't flash if we're already doing an effect
var/mob/M = A
if(M.client)
- INVOKE_ASYNC(src, .proc/blue_effect, M)
+ INVOKE_ASYNC(src, PROC_REF(blue_effect), M)
/obj/effect/anomaly/bluespace/proc/blue_effect(mob/M)
var/obj/blueeffect = new /obj(src)
@@ -262,7 +262,7 @@
T.atmos_spawn_air("o2=5;plasma=5;TEMP=1000")
/obj/effect/anomaly/pyro/detonate()
- INVOKE_ASYNC(src, .proc/makepyroslime)
+ INVOKE_ASYNC(src, PROC_REF(makepyroslime))
/obj/effect/anomaly/pyro/proc/makepyroslime()
var/turf/open/T = get_turf(src)
diff --git a/code/game/objects/effects/blessing.dm b/code/game/objects/effects/blessing.dm
index ba9849bfa2..5f96d399a1 100644
--- a/code/game/objects/effects/blessing.dm
+++ b/code/game/objects/effects/blessing.dm
@@ -16,7 +16,7 @@
I.alpha = 64
I.appearance_flags = RESET_ALPHA
add_alt_appearance(/datum/atom_hud/alternate_appearance/basic/blessedAware, "blessing", I)
- RegisterSignal(loc, COMSIG_ATOM_INTERCEPT_TELEPORT, .proc/block_cult_teleport)
+ RegisterSignal(loc, COMSIG_ATOM_INTERCEPT_TELEPORT, PROC_REF(block_cult_teleport))
/obj/effect/blessing/Destroy()
UnregisterSignal(loc, COMSIG_ATOM_INTERCEPT_TELEPORT)
diff --git a/code/game/objects/effects/contraband.dm b/code/game/objects/effects/contraband.dm
index 06d3fca9c7..1de95a146b 100644
--- a/code/game/objects/effects/contraband.dm
+++ b/code/game/objects/effects/contraband.dm
@@ -67,7 +67,7 @@
name = "poster - [name]"
desc = ""
- addtimer(CALLBACK(src, /datum.proc/AddComponent, /datum/component/beauty, 300), 0)
+ addtimer(CALLBACK(src, TYPE_PROC_REF(/datum, AddComponent), /datum/component/beauty, 300), 0)
/obj/structure/sign/poster/proc/randomise(base_type)
var/list/poster_types = subtypesof(base_type)
diff --git a/code/game/objects/effects/decals/cleanable.dm b/code/game/objects/effects/decals/cleanable.dm
index 2f4634c6e3..8543da9ec2 100644
--- a/code/game/objects/effects/decals/cleanable.dm
+++ b/code/game/objects/effects/decals/cleanable.dm
@@ -27,7 +27,7 @@
if(LAZYLEN(diseases_to_add))
AddComponent(/datum/component/infective, diseases_to_add)
-// addtimer(CALLBACK(src, /datum.proc/AddComponent, /datum/component/beauty, beauty), 0)
+// addtimer(CALLBACK(src, TYPE_PROC_REF(/datum, AddComponent), /datum/component/beauty, beauty), 0)
var/turf/T = get_turf(src)
if(T && is_station_level(T.z))
diff --git a/code/game/objects/effects/decals/cleanable/humans.dm b/code/game/objects/effects/decals/cleanable/humans.dm
index 2000a0b072..54566a8886 100644
--- a/code/game/objects/effects/decals/cleanable/humans.dm
+++ b/code/game/objects/effects/decals/cleanable/humans.dm
@@ -18,7 +18,7 @@
return .
pixel_x = rand(-5,5)
pixel_y = rand(5,5)
- blood_timer = addtimer(CALLBACK(src, .proc/become_dry), rand(5 MINUTES,8 MINUTES), TIMER_STOPPABLE)
+ blood_timer = addtimer(CALLBACK(src, PROC_REF(become_dry)), rand(5 MINUTES,8 MINUTES), TIMER_STOPPABLE)
/obj/effect/decal/cleanable/blood/proc/become_dry()
@@ -89,7 +89,7 @@
. = ..()
if(. == INITIALIZE_HINT_QDEL)
return .
- blood_timer = addtimer(CALLBACK(src, .proc/become_dry), rand(5 MINUTES,8 MINUTES), TIMER_STOPPABLE)
+ blood_timer = addtimer(CALLBACK(src, PROC_REF(become_dry)), rand(5 MINUTES,8 MINUTES), TIMER_STOPPABLE)
/obj/effect/decal/cleanable/trail_holder/Destroy()
deltimer(blood_timer)
diff --git a/code/game/objects/effects/effect_system/effect_system.dm b/code/game/objects/effects/effect_system/effect_system.dm
index e2bc6f54ec..e9e86bbe8f 100644
--- a/code/game/objects/effects/effect_system/effect_system.dm
+++ b/code/game/objects/effects/effect_system/effect_system.dm
@@ -54,7 +54,7 @@ would spawn and follow the beaker, even if it is carried or thrown.
for(var/i in 1 to number)
if(total_effects > 20)
return
- INVOKE_ASYNC(src, .proc/generate_effect)
+ INVOKE_ASYNC(src, PROC_REF(generate_effect))
/datum/effect_system/proc/generate_effect()
if(holder)
@@ -70,7 +70,7 @@ would spawn and follow the beaker, even if it is carried or thrown.
for(var/j in 1 to steps_amt)
sleep(5)
step(E,direction)
- addtimer(CALLBACK(src, .proc/decrement_total_effect), 20)
+ addtimer(CALLBACK(src, PROC_REF(decrement_total_effect)), 20)
/datum/effect_system/proc/decrement_total_effect()
total_effects--
diff --git a/code/game/objects/effects/effect_system/effects_explosion.dm b/code/game/objects/effects/effect_system/effects_explosion.dm
index c91df696e6..8169b0a2c8 100644
--- a/code/game/objects/effects/effect_system/effects_explosion.dm
+++ b/code/game/objects/effects/effect_system/effects_explosion.dm
@@ -59,4 +59,4 @@
S.start()
/datum/effect_system/explosion/smoke/start()
..()
- addtimer(CALLBACK(src, .proc/create_smoke), 5)
+ addtimer(CALLBACK(src, PROC_REF(create_smoke)), 5)
diff --git a/code/game/objects/effects/effect_system/effects_smoke.dm b/code/game/objects/effects/effect_system/effects_smoke.dm
index 843645fe6a..1cc203184b 100644
--- a/code/game/objects/effects/effect_system/effects_smoke.dm
+++ b/code/game/objects/effects/effect_system/effects_smoke.dm
@@ -43,7 +43,7 @@
/obj/effect/particle_effect/smoke/proc/kill_smoke()
STOP_PROCESSING(SSobj, src)
- INVOKE_ASYNC(src, .proc/fade_out)
+ INVOKE_ASYNC(src, PROC_REF(fade_out))
QDEL_IN(src, 10)
/obj/effect/particle_effect/smoke/process()
@@ -65,7 +65,7 @@
if(C.smoke_delay)
return 0
C.smoke_delay++
- addtimer(CALLBACK(src, .proc/remove_smoke_delay, C), 10)
+ addtimer(CALLBACK(src, PROC_REF(remove_smoke_delay), C), 10)
return 1
/obj/effect/particle_effect/smoke/proc/remove_smoke_delay(mob/living/carbon/C)
@@ -96,7 +96,7 @@
//the smoke spreads rapidly but not instantly
for(var/obj/effect/particle_effect/smoke/SM in newsmokes)
- addtimer(CALLBACK(SM, /obj/effect/particle_effect/smoke.proc/spread_smoke), 1)
+ addtimer(CALLBACK(SM, TYPE_PROC_REF(/obj/effect/particle_effect/smoke, spread_smoke)), 1)
/datum/effect_system/smoke_spread
diff --git a/code/game/objects/effects/glowshroom.dm b/code/game/objects/effects/glowshroom.dm
index 9371643adc..26ad88b45e 100644
--- a/code/game/objects/effects/glowshroom.dm
+++ b/code/game/objects/effects/glowshroom.dm
@@ -129,7 +129,7 @@
else //if on the floor, glowshroom on-floor sprite
icon_state = base_icon_state
*/
-// addtimer(CALLBACK(src, .proc/Spread), delay)
+// addtimer(CALLBACK(src, PROC_REF(Spread)), delay)
/obj/structure/glowshroom/proc/Spread()
var/turf/ownturf = get_turf(src)
@@ -176,7 +176,7 @@
shrooms_planted++ //if we failed due to generation, don't try to plant one later
if(shrooms_planted < myseed.yield) //if we didn't get all possible shrooms planted, try again later
myseed.yield -= shrooms_planted
- addtimer(CALLBACK(src, .proc/Spread), delay)
+ addtimer(CALLBACK(src, PROC_REF(Spread)), delay)
/obj/structure/glowshroom/proc/CalcDir(turf/location = loc)
var/direction = 16
diff --git a/code/game/objects/effects/landmarks.dm b/code/game/objects/effects/landmarks.dm
index 839b5c6e36..3d64b0aa05 100644
--- a/code/game/objects/effects/landmarks.dm
+++ b/code/game/objects/effects/landmarks.dm
@@ -722,9 +722,3 @@ INITIALIZE_IMMEDIATE(/obj/effect/landmark/start/new_player)
/obj/effect/landmark/underworldsafe // To prevent demons spawn camping will save a lot of ear rape.
name = "safe zone"
-
-/obj/effect/landmark/underworldcoin/Initialize(mapload)
- GLOB.underworldcoin += loc
- return
-
-
diff --git a/code/game/objects/effects/mines.dm b/code/game/objects/effects/mines.dm
index bca4492ae6..8f8ad54872 100644
--- a/code/game/objects/effects/mines.dm
+++ b/code/game/objects/effects/mines.dm
@@ -125,7 +125,7 @@
var/static/list/red_splash = list(1,0,0,0.8,0.2,0, 0.8,0,0.2,0.1,0,0)
var/static/list/pure_red = list(0,0,0,0,0,0,0,0,0,1,0,0)
- INVOKE_ASYNC(src, .proc/blood_delusion, victim)
+ INVOKE_ASYNC(src, PROC_REF(blood_delusion), victim)
var/obj/item/twohanded/required/chainsaw/doomslayer/chainsaw = new(victim.loc)
victim.log_message("entered a blood frenzy", LOG_ATTACK)
diff --git a/code/game/objects/effects/proximity.dm b/code/game/objects/effects/proximity.dm
index 607921d562..b28e0c13d9 100644
--- a/code/game/objects/effects/proximity.dm
+++ b/code/game/objects/effects/proximity.dm
@@ -24,7 +24,7 @@
else if(hasprox_receiver == host) //Default case
hasprox_receiver = H
host = H
- RegisterSignal(host, COMSIG_MOVABLE_MOVED, .proc/HandleMove)
+ RegisterSignal(host, COMSIG_MOVABLE_MOVED, PROC_REF(HandleMove))
last_host_loc = host.loc
SetRange(current_range,TRUE)
diff --git a/code/game/objects/effects/spawners/xeno_egg_delivery.dm b/code/game/objects/effects/spawners/xeno_egg_delivery.dm
index a6e0cf5906..111fcc4204 100644
--- a/code/game/objects/effects/spawners/xeno_egg_delivery.dm
+++ b/code/game/objects/effects/spawners/xeno_egg_delivery.dm
@@ -15,5 +15,5 @@
message_admins("An alien egg has been delivered to [ADMIN_VERBOSEJMP(T)].")
log_game("An alien egg has been delivered to [AREACOORD(T)]")
var/message = "Attention [station_name()], we have entrusted you with a research specimen in [get_area_name(T, TRUE)]. Remember to follow all safety precautions when dealing with the specimen."
- SSticker.OnRoundstart(CALLBACK(GLOBAL_PROC, /proc/addtimer, CALLBACK(GLOBAL_PROC, /proc/print_command_report, message), announcement_time))
+ SSticker.OnRoundstart(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(addtimer), CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(print_command_report), message), announcement_time))
return INITIALIZE_HINT_QDEL
diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index 2167ded83f..fbc488ce8a 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -808,7 +808,7 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE)
/obj/item/throw_at(atom/target, range, speed, mob/thrower, spin=1, diagonals_first = 0, datum/callback/callback, force)
thrownby = thrower
- callback = CALLBACK(src, .proc/after_throw, callback) //replace their callback with our own
+ callback = CALLBACK(src, PROC_REF(after_throw), callback) //replace their callback with our own
. = ..(target, range, speed, thrower, spin, diagonals_first, callback, force)
@@ -1018,7 +1018,7 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE)
if((item_flags & IN_INVENTORY || item_flags & IN_STORAGE) && usr.client.prefs.enable_tips && !QDELETED(src))
var/timedelay = usr.client.prefs.tip_delay/100
var/user = usr
- tip_timer = addtimer(CALLBACK(src, .proc/openTip, location, control, params, user), timedelay, TIMER_STOPPABLE)//timer takes delay in deciseconds, but the pref is in milliseconds. dividing by 100 converts it.
+ tip_timer = addtimer(CALLBACK(src, PROC_REF(openTip), location, control, params, user), timedelay, TIMER_STOPPABLE)//timer takes delay in deciseconds, but the pref is in milliseconds. dividing by 100 converts it.
/obj/item/MouseExited()
. = ..()
@@ -1047,7 +1047,7 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE)
if(delay)
// Create a callback with checks that would be called every tick by do_after.
- var/datum/callback/tool_check = CALLBACK(src, .proc/tool_check_callback, user, amount, extra_checks)
+ var/datum/callback/tool_check = CALLBACK(src, PROC_REF(tool_check_callback), user, amount, extra_checks)
if(ismob(target))
if(!do_mob(user, target, delay, extra_checks=tool_check))
diff --git a/code/game/objects/items/RCD.dm b/code/game/objects/items/RCD.dm
index 1996aa9f59..cbf1610a8e 100644
--- a/code/game/objects/items/RCD.dm
+++ b/code/game/objects/items/RCD.dm
@@ -325,7 +325,7 @@ RLD
"SOUTH" = image(icon = 'icons/mob/radial.dmi', icon_state = "csouth"),
"WEST" = image(icon = 'icons/mob/radial.dmi', icon_state = "cwest")
)
- var/computerdirs = show_radial_menu(user, src, computer_dirs, custom_check = CALLBACK(src, .proc/check_menu, user), require_near = TRUE, tooltips = TRUE)
+ var/computerdirs = show_radial_menu(user, src, computer_dirs, custom_check = CALLBACK(src, PROC_REF(check_menu), user), require_near = TRUE, tooltips = TRUE)
if(!check_menu(user))
return
switch(computerdirs)
@@ -382,13 +382,13 @@ RLD
"External Maintenance" = get_airlock_image(/obj/machinery/door/airlock/maintenance/external/glass)
)
- var/airlockcat = show_radial_menu(user, src, solid_or_glass_choices, custom_check = CALLBACK(src, .proc/check_menu, user), require_near = TRUE, tooltips = TRUE)
+ var/airlockcat = show_radial_menu(user, src, solid_or_glass_choices, custom_check = CALLBACK(src, PROC_REF(check_menu), user), require_near = TRUE, tooltips = TRUE)
if(!check_menu(user))
return
switch(airlockcat)
if("Solid")
if(advanced_airlock_setting == 1)
- var/airlockpaint = show_radial_menu(user, src, solid_choices, radius = 42, custom_check = CALLBACK(src, .proc/check_menu, user), require_near = TRUE, tooltips = TRUE)
+ var/airlockpaint = show_radial_menu(user, src, solid_choices, radius = 42, custom_check = CALLBACK(src, PROC_REF(check_menu), user), require_near = TRUE, tooltips = TRUE)
if(!check_menu(user))
return
switch(airlockpaint)
@@ -431,7 +431,7 @@ RLD
if("Glass")
if(advanced_airlock_setting == 1)
- var/airlockpaint = show_radial_menu(user, src , glass_choices, radius = 42, custom_check = CALLBACK(src, .proc/check_menu, user), require_near = TRUE, tooltips = TRUE)
+ var/airlockpaint = show_radial_menu(user, src , glass_choices, radius = 42, custom_check = CALLBACK(src, PROC_REF(check_menu), user), require_near = TRUE, tooltips = TRUE)
if(!check_menu(user))
return
switch(airlockpaint)
@@ -516,7 +516,7 @@ RLD
choices += list(
"Change Window Type" = image(icon = 'icons/mob/radial.dmi', icon_state = "windowtype")
)
- var/choice = show_radial_menu(user, src, choices, custom_check = CALLBACK(src, .proc/check_menu, user), require_near = TRUE, tooltips = TRUE)
+ var/choice = show_radial_menu(user, src, choices, custom_check = CALLBACK(src, PROC_REF(check_menu), user), require_near = TRUE, tooltips = TRUE)
if(!check_menu(user))
return
switch(choice)
@@ -568,7 +568,7 @@ RLD
buzz loudly!","
[src] begins \
vibrating violently!")
// 5 seconds to get rid of it
- addtimer(CALLBACK(src, .proc/detonate_pulse_explode), 50)
+ addtimer(CALLBACK(src, PROC_REF(detonate_pulse_explode)), 50)
/obj/item/construction/rcd/proc/detonate_pulse_explode()
explosion(src, 0, 0, 3, 1, flame_range = 1)
@@ -870,7 +870,7 @@ RLD
machinery_data["cost"][A] = initial(M.rcd_cost)
machinery_data["delay"][A] = initial(M.rcd_delay)
- var/choice = show_radial_menu(user, src, choices, custom_check = CALLBACK(src, .proc/check_menu, user), require_near = TRUE, tooltips = TRUE)
+ var/choice = show_radial_menu(user, src, choices, custom_check = CALLBACK(src, PROC_REF(check_menu), user), require_near = TRUE, tooltips = TRUE)
if(!check_menu(user))
return
diff --git a/code/game/objects/items/RCL.dm b/code/game/objects/items/RCL.dm
index 4affbb3b98..d80f742d57 100644
--- a/code/game/objects/items/RCL.dm
+++ b/code/game/objects/items/RCL.dm
@@ -151,7 +151,7 @@
return
if(listeningTo)
UnregisterSignal(listeningTo, COMSIG_MOVABLE_MOVED)
- RegisterSignal(to_hook, COMSIG_MOVABLE_MOVED, .proc/trigger)
+ RegisterSignal(to_hook, COMSIG_MOVABLE_MOVED, PROC_REF(trigger))
listeningTo = to_hook
/obj/item/twohanded/rcl/proc/trigger(mob/user)
@@ -236,7 +236,7 @@
/obj/item/twohanded/rcl/proc/showWiringGui(mob/user)
var/list/choices = wiringGuiGenerateChoices(user)
- wiring_gui_menu = show_radial_menu_persistent(user, src , choices, select_proc = CALLBACK(src, .proc/wiringGuiReact, user), radius = 42)
+ wiring_gui_menu = show_radial_menu_persistent(user, src , choices, select_proc = CALLBACK(src, PROC_REF(wiringGuiReact), user), radius = 42)
/obj/item/twohanded/rcl/proc/wiringGuiUpdate(mob/user)
if(!wiring_gui_menu)
diff --git a/code/game/objects/items/body_egg.dm b/code/game/objects/items/body_egg.dm
index 36e1efa52e..f5a5f8fa2b 100644
--- a/code/game/objects/items/body_egg.dm
+++ b/code/game/objects/items/body_egg.dm
@@ -19,14 +19,14 @@
ADD_TRAIT(owner, TRAIT_XENO_HOST, TRAIT_GENERIC)
ADD_TRAIT(owner, TRAIT_XENO_IMMUNE, "xeno immune")
owner.med_hud_set_status()
- INVOKE_ASYNC(src, .proc/AddInfectionImages, owner)
+ INVOKE_ASYNC(src, PROC_REF(AddInfectionImages), owner)
/obj/item/organ/body_egg/Remove(mob/living/carbon/M, special = 0)
if(owner)
REMOVE_TRAIT(owner, TRAIT_XENO_HOST, TRAIT_GENERIC)
REMOVE_TRAIT(owner, TRAIT_XENO_IMMUNE, "xeno immune")
owner.med_hud_set_status()
- INVOKE_ASYNC(src, .proc/RemoveInfectionImages, owner)
+ INVOKE_ASYNC(src, PROC_REF(RemoveInfectionImages), owner)
..()
/obj/item/organ/body_egg/on_death()
diff --git a/code/game/objects/items/bodybag.dm b/code/game/objects/items/bodybag.dm
index 2400c69e60..37c74ff5f3 100644
--- a/code/game/objects/items/bodybag.dm
+++ b/code/game/objects/items/bodybag.dm
@@ -48,7 +48,7 @@
/obj/item/bodybag/bluespace/Initialize()
. = ..()
- RegisterSignal(src, COMSIG_ATOM_CANREACH, .proc/CanReachReact)
+ RegisterSignal(src, COMSIG_ATOM_CANREACH, PROC_REF(CanReachReact))
/obj/item/bodybag/bluespace/examine(mob/user)
. = ..()
diff --git a/code/game/objects/items/charter.dm b/code/game/objects/items/charter.dm
index 7d0a855b55..223ca3b26a 100644
--- a/code/game/objects/items/charter.dm
+++ b/code/game/objects/items/charter.dm
@@ -58,7 +58,7 @@
to_chat(user, "
My name has been sent to my employers for approval.")
// Autoapproves after a certain time
- response_timer_id = addtimer(CALLBACK(src, .proc/rename_station, new_name, user.name, user.real_name, key_name(user)), approval_time, TIMER_STOPPABLE)
+ response_timer_id = addtimer(CALLBACK(src, PROC_REF(rename_station), new_name, user.name, user.real_name, key_name(user)), approval_time, TIMER_STOPPABLE)
to_chat(GLOB.admins, "
CUSTOM STATION RENAME:[ADMIN_LOOKUPFLW(user)] proposes to rename the [name_type] to [new_name] (will autoapprove in [DisplayTimeText(approval_time)]). [ADMIN_SMITE(user)] (REJECT) [ADMIN_CENTCOM_REPLY(user)]")
/obj/item/station_charter/proc/reject_proposed(user)
diff --git a/code/game/objects/items/crab17.dm b/code/game/objects/items/crab17.dm
index 0ae23014b7..28c4d78a7e 100644
--- a/code/game/objects/items/crab17.dm
+++ b/code/game/objects/items/crab17.dm
@@ -78,7 +78,7 @@
add_overlay("flaps")
add_overlay("hatch")
add_overlay("legs_retracted")
- addtimer(CALLBACK(src, .proc/startUp), 50)
+ addtimer(CALLBACK(src, PROC_REF(startUp)), 50)
QDEL_IN(src, 8 MINUTES) //Self destruct after 8 min
@@ -171,7 +171,7 @@
if (account) // get_bank_account() may return FALSE
account.transfer_money(B, amount)
B.bank_card_talk("You have lost [percentage_lost * 100]% of your funds! A spacecoin credit deposit machine is located at: [get_area(src)].")
- addtimer(CALLBACK(src, .proc/dump), 150) //Drain every 15 seconds
+ addtimer(CALLBACK(src, PROC_REF(dump)), 150) //Drain every 15 seconds
/obj/structure/checkoutmachine/process()
var/anydir = pick(GLOB.cardinals)
@@ -208,7 +208,7 @@
/obj/effect/dumpeetTarget/Initialize(mapload, user)
. = ..()
bogdanoff = user
- addtimer(CALLBACK(src, .proc/startLaunch), 100)
+ addtimer(CALLBACK(src, PROC_REF(startLaunch)), 100)
sound_to_playing_players('sound/blank.ogg', 20)
deadchat_broadcast("Protocol CRAB-17 has been activated. A space-coin market has been launched at the station!", turf_target = get_turf(src))
@@ -218,7 +218,7 @@
priority_announce("The spacecoin bubble has popped! Get to the credit deposit machine at [get_area(src)] and cash out before you lose all of your funds!", sender_override = "CRAB-17 Protocol")
animate(DF, pixel_z = -8, time = 5, , easing = LINEAR_EASING)
playsound(src, 'sound/blank.ogg', 70, TRUE, 6)
- addtimer(CALLBACK(src, .proc/endLaunch), 5, TIMER_CLIENT_TIME) //Go onto the last step after a very short falling animation
+ addtimer(CALLBACK(src, PROC_REF(endLaunch)), 5, TIMER_CLIENT_TIME) //Go onto the last step after a very short falling animation
diff --git a/code/game/objects/items/defib.dm b/code/game/objects/items/defib.dm
index 7bcab85358..c460b89aae 100644
--- a/code/game/objects/items/defib.dm
+++ b/code/game/objects/items/defib.dm
@@ -228,7 +228,7 @@
return FALSE
/obj/item/defibrillator/proc/cooldowncheck(mob/user)
- addtimer(CALLBACK(src, .proc/finish_charging), cooldown_duration)
+ addtimer(CALLBACK(src, PROC_REF(finish_charging)), cooldown_duration)
/obj/item/defibrillator/proc/finish_charging()
if(cell)
@@ -315,7 +315,7 @@
. = ..()
if(!req_defib)
return
- RegisterSignal(user, COMSIG_MOVABLE_MOVED, .proc/check_range)
+ RegisterSignal(user, COMSIG_MOVABLE_MOVED, PROC_REF(check_range))
/obj/item/twohanded/shockpaddles/Moved()
. = ..()
diff --git a/code/game/objects/items/devices/PDA/PDA_types.dm b/code/game/objects/items/devices/PDA/PDA_types.dm
index bc333e9c66..d57f2339fb 100644
--- a/code/game/objects/items/devices/PDA/PDA_types.dm
+++ b/code/game/objects/items/devices/PDA/PDA_types.dm
@@ -9,7 +9,7 @@
/obj/item/pda/clown/ComponentInitialize()
. = ..()
- AddComponent(/datum/component/slippery, 120, NO_SLIP_WHEN_WALKING, CALLBACK(src, .proc/AfterSlip))
+ AddComponent(/datum/component/slippery, 120, NO_SLIP_WHEN_WALKING, CALLBACK(src, PROC_REF(AfterSlip)))
/obj/item/pda/clown/proc/AfterSlip(mob/living/carbon/human/M)
if (istype(M) && (M.real_name != owner))
@@ -55,7 +55,7 @@
/obj/item/pda/ai/Initialize()
. = ..()
- RegisterSignal(src, COMSIG_PDA_CHECK_DETONATE, .proc/pda_no_detonate)
+ RegisterSignal(src, COMSIG_PDA_CHECK_DETONATE, PROC_REF(pda_no_detonate))
/obj/item/pda/medical
name = "medical PDA"
@@ -138,7 +138,7 @@
/obj/item/pda/captain/Initialize()
. = ..()
- RegisterSignal(src, COMSIG_PDA_CHECK_DETONATE, .proc/pda_no_detonate)
+ RegisterSignal(src, COMSIG_PDA_CHECK_DETONATE, PROC_REF(pda_no_detonate))
/obj/item/pda/cargo
name = "cargo technician PDA"
diff --git a/code/game/objects/items/devices/PDA/cart.dm b/code/game/objects/items/devices/PDA/cart.dm
index 9c5ee73f6e..00ecb55d65 100644
--- a/code/game/objects/items/devices/PDA/cart.dm
+++ b/code/game/objects/items/devices/PDA/cart.dm
@@ -607,7 +607,7 @@ Code:
active1 = null
if("Send Signal")
- INVOKE_ASYNC(radio, /obj/item/integrated_signaler.proc/send_activation)
+ INVOKE_ASYNC(radio, TYPE_PROC_REF(/obj/item/integrated_signaler, send_activation))
if("Signal Frequency")
var/new_frequency = sanitize_frequency(radio.frequency + text2num(href_list["sfreq"]))
diff --git a/code/game/objects/items/devices/desynchronizer.dm b/code/game/objects/items/devices/desynchronizer.dm
index f9a346c3e2..80693401d3 100644
--- a/code/game/objects/items/devices/desynchronizer.dm
+++ b/code/game/objects/items/devices/desynchronizer.dm
@@ -54,7 +54,7 @@
SEND_SIGNAL(AM, COMSIG_MOVABLE_SECLUDED_LOCATION)
last_use = world.time
icon_state = "desynchronizer-on"
- addtimer(CALLBACK(src, .proc/resync), duration)
+ addtimer(CALLBACK(src, PROC_REF(resync)), duration)
/obj/item/desynchronizer/proc/resync()
new /obj/effect/temp_visual/desynchronizer(sync_holder.drop_location())
diff --git a/code/game/objects/items/devices/electroadaptive_pseudocircuit.dm b/code/game/objects/items/devices/electroadaptive_pseudocircuit.dm
index f1f6a48078..363d9e66c1 100644
--- a/code/game/objects/items/devices/electroadaptive_pseudocircuit.dm
+++ b/code/game/objects/items/devices/electroadaptive_pseudocircuit.dm
@@ -43,7 +43,7 @@
maptext = "[circuits]"
icon_state = "[initial(icon_state)]_recharging"
var/recharge_time = min(600, circuit_cost * 5) //40W of cost for one fabrication = 20 seconds of recharge time; this is to prevent spamming
- addtimer(CALLBACK(src, .proc/recharge), recharge_time)
+ addtimer(CALLBACK(src, PROC_REF(recharge)), recharge_time)
return TRUE //The actual circuit magic itself is done on a per-object basis
/obj/item/electroadaptive_pseudocircuit/afterattack(atom/target, mob/living/user, proximity)
diff --git a/code/game/objects/items/devices/geiger_counter.dm b/code/game/objects/items/devices/geiger_counter.dm
index f578926a5f..6ca01e806c 100644
--- a/code/game/objects/items/devices/geiger_counter.dm
+++ b/code/game/objects/items/devices/geiger_counter.dm
@@ -136,7 +136,7 @@
if(user.used_intent.type == INTENT_HELP)
if(!(obj_flags & EMAGGED))
user.visible_message("
[user] scans [target] with [src].", "
I scan [target]'s radiation levels with [src]...")
- addtimer(CALLBACK(src, .proc/scan, target, user), 20, TIMER_UNIQUE) // Let's not have spamming GetAllContents
+ addtimer(CALLBACK(src, PROC_REF(scan), target, user), 20, TIMER_UNIQUE) // Let's not have spamming GetAllContents
else
user.visible_message("
[user] scans [target] with [src].", "
I project [src]'s stored radiation into [target]!")
target.rad_act(radiation_count)
@@ -217,7 +217,7 @@
return
if(listeningTo)
UnregisterSignal(listeningTo, COMSIG_ATOM_RAD_ACT)
- RegisterSignal(user, COMSIG_ATOM_RAD_ACT, .proc/redirect_rad_act)
+ RegisterSignal(user, COMSIG_ATOM_RAD_ACT, PROC_REF(redirect_rad_act))
listeningTo = user
/obj/item/geiger_counter/cyborg/proc/redirect_rad_act(datum/source, amount)
diff --git a/code/game/objects/items/devices/instruments.dm b/code/game/objects/items/devices/instruments.dm
index ab1bebfe69..282e5a8edf 100644
--- a/code/game/objects/items/devices/instruments.dm
+++ b/code/game/objects/items/devices/instruments.dm
@@ -219,7 +219,7 @@
/obj/item/instrument/harmonica/equipped(mob/M, slot)
. = ..()
- RegisterSignal(M, COMSIG_MOB_SAY, .proc/handle_speech, override = TRUE)
+ RegisterSignal(M, COMSIG_MOB_SAY, PROC_REF(handle_speech), override = TRUE)
/obj/item/instrument/harmonica/dropped(mob/M)
. = ..()
diff --git a/code/game/objects/items/devices/megaphone.dm b/code/game/objects/items/devices/megaphone.dm
index 0562df2d19..9c1a22a6ea 100644
--- a/code/game/objects/items/devices/megaphone.dm
+++ b/code/game/objects/items/devices/megaphone.dm
@@ -20,7 +20,7 @@
/obj/item/megaphone/equipped(mob/M, slot)
. = ..()
if (slot == SLOT_HANDS)
- RegisterSignal(M, COMSIG_MOB_SAY, .proc/handle_speech)
+ RegisterSignal(M, COMSIG_MOB_SAY, PROC_REF(handle_speech))
else
UnregisterSignal(M, COMSIG_MOB_SAY)
diff --git a/code/game/objects/items/devices/pressureplates.dm b/code/game/objects/items/devices/pressureplates.dm
index a75e0e5bc2..af75845652 100644
--- a/code/game/objects/items/devices/pressureplates.dm
+++ b/code/game/objects/items/devices/pressureplates.dm
@@ -41,7 +41,7 @@
else if(!trigger_item)
return
can_trigger = FALSE
- addtimer(CALLBACK(src, .proc/trigger), trigger_delay)
+ addtimer(CALLBACK(src, PROC_REF(trigger)), trigger_delay)
/obj/item/pressure_plate/proc/trigger()
can_trigger = TRUE
diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm
index 88fa62044f..be4e9f1345 100644
--- a/code/game/objects/items/devices/radio/radio.dm
+++ b/code/game/objects/items/devices/radio/radio.dm
@@ -199,7 +199,7 @@
spans = list(M.speech_span)
if(!language)
language = M.get_default_language()
- INVOKE_ASYNC(src, .proc/talk_into_impl, M, message, channel, spans.Copy(), language)
+ INVOKE_ASYNC(src, PROC_REF(talk_into_impl), M, message, channel, spans.Copy(), language)
return ITALICS | REDUCE_RANGE
/obj/item/radio/proc/talk_into_impl(atom/movable/M, message, channel, list/spans, datum/language/language)
@@ -267,7 +267,7 @@
// Non-subspace radios will check in a couple of seconds, and if the signal
// was never received, send a mundane broadcast (no headsets).
- addtimer(CALLBACK(src, .proc/backup_transmission, signal), 20)
+ addtimer(CALLBACK(src, PROC_REF(backup_transmission), signal), 20)
/obj/item/radio/proc/backup_transmission(datum/signal/subspace/vocal/signal)
var/turf/T = get_turf(src)
@@ -357,7 +357,7 @@
for (var/ch_name in channels)
channels[ch_name] = 0
on = FALSE
- addtimer(CALLBACK(src, .proc/end_emp_effect, curremp), 200)
+ addtimer(CALLBACK(src, PROC_REF(end_emp_effect), curremp), 200)
/obj/item/radio/proc/end_emp_effect(curremp)
if(emped != curremp) //Don't fix it if it's been EMP'd again
diff --git a/code/game/objects/items/devices/reverse_bear_trap.dm b/code/game/objects/items/devices/reverse_bear_trap.dm
index 53e82bc8fe..0d91aea563 100644
--- a/code/game/objects/items/devices/reverse_bear_trap.dm
+++ b/code/game/objects/items/devices/reverse_bear_trap.dm
@@ -43,7 +43,7 @@
soundloop.stop()
soundloop2.stop()
to_chat(loc, "
*ding*")
- addtimer(CALLBACK(src, .proc/snap), 2)
+ addtimer(CALLBACK(src, PROC_REF(snap)), 2)
/obj/item/reverse_bear_trap/attack_hand(mob/user)
if(iscarbon(user))
diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm
index 5301d48605..eb8d76e26f 100644
--- a/code/game/objects/items/devices/scanners.dm
+++ b/code/game/objects/items/devices/scanners.dm
@@ -578,7 +578,7 @@ GENE SCANNER
else
to_chat(user, "
[src]'s barometer function says a storm will land in approximately [butchertime(fixed)].")
cooldown = TRUE
- addtimer(CALLBACK(src,/obj/item/analyzer/proc/ping), cooldown_time)
+ addtimer(CALLBACK(src,TYPE_PROC_REF(/obj/item/analyzer, ping)), cooldown_time)
/obj/item/analyzer/proc/ping()
if(isliving(loc))
@@ -815,7 +815,7 @@ GENE SCANNER
ready = FALSE
icon_state = "[icon_state]_recharging"
- addtimer(CALLBACK(src, .proc/recharge), cooldown, TIMER_UNIQUE)
+ addtimer(CALLBACK(src, PROC_REF(recharge)), cooldown, TIMER_UNIQUE)
/obj/item/sequence_scanner/proc/recharge()
icon_state = initial(icon_state)
diff --git a/code/game/objects/items/devices/swapper.dm b/code/game/objects/items/devices/swapper.dm
index 8cdf9bdcd1..6a703b512d 100644
--- a/code/game/objects/items/devices/swapper.dm
+++ b/code/game/objects/items/devices/swapper.dm
@@ -58,7 +58,7 @@
var/mob/holder = linked_swapper.loc
to_chat(holder, "
[linked_swapper] starts buzzing.")
next_use = world.time + cooldown //only the one used goes on cooldown
- addtimer(CALLBACK(src, .proc/swap, user), 25)
+ addtimer(CALLBACK(src, PROC_REF(swap), user), 25)
/obj/item/swapper/examine(mob/user)
. = ..()
diff --git a/code/game/objects/items/devices/transfer_valve.dm b/code/game/objects/items/devices/transfer_valve.dm
index 9e5322170c..3eca7570ea 100644
--- a/code/game/objects/items/devices/transfer_valve.dm
+++ b/code/game/objects/items/devices/transfer_valve.dm
@@ -130,7 +130,7 @@
if(toggle)
toggle = FALSE
toggle_valve()
- addtimer(CALLBACK(src, .proc/toggle_off), 5) //To stop a signal being spammed from a proxy sensor constantly going off or whatever
+ addtimer(CALLBACK(src, PROC_REF(toggle_off)), 5) //To stop a signal being spammed from a proxy sensor constantly going off or whatever
/obj/item/transfer_valve/proc/toggle_off()
toggle = TRUE
@@ -224,7 +224,7 @@
merge_gases()
for(var/i in 1 to 6)
- addtimer(CALLBACK(src, /atom/.proc/update_icon), 20 + (i - 1) * 10)
+ addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, update_icon)), 20 + (i - 1) * 10)
else if(valve_open && tank_one && tank_two)
split_gases()
diff --git a/code/game/objects/items/eightball.dm b/code/game/objects/items/eightball.dm
index 227355068f..9ed3dae23d 100644
--- a/code/game/objects/items/eightball.dm
+++ b/code/game/objects/items/eightball.dm
@@ -64,7 +64,7 @@
say(answer)
on_cooldown = TRUE
- addtimer(CALLBACK(src, .proc/clear_cooldown), cooldown_time)
+ addtimer(CALLBACK(src, PROC_REF(clear_cooldown)), cooldown_time)
shaking = FALSE
diff --git a/code/game/objects/items/etherealdiscoball.dm b/code/game/objects/items/etherealdiscoball.dm
index de277371d5..27ac1ef4ed 100644
--- a/code/game/objects/items/etherealdiscoball.dm
+++ b/code/game/objects/items/etherealdiscoball.dm
@@ -63,7 +63,7 @@
set_light(range, power, current_color)
add_atom_colour("#[current_color]", FIXED_COLOUR_PRIORITY)
update_icon()
- TimerID = addtimer(CALLBACK(src, .proc/DiscoFever), 5, TIMER_STOPPABLE) //Call ourselves every 0.5 seconds to change colors
+ TimerID = addtimer(CALLBACK(src, PROC_REF(DiscoFever)), 5, TIMER_STOPPABLE) //Call ourselves every 0.5 seconds to change colors
/obj/structure/etherealball/update_icon()
cut_overlays()
diff --git a/code/game/objects/items/extinguisher.dm b/code/game/objects/items/extinguisher.dm
index 9a744adc34..c0af4ba859 100644
--- a/code/game/objects/items/extinguisher.dm
+++ b/code/game/objects/items/extinguisher.dm
@@ -149,7 +149,7 @@
if(user.buckled && isobj(user.buckled) && !user.buckled.anchored)
var/obj/B = user.buckled
var/movementdirection = turn(direction,180)
- addtimer(CALLBACK(src, /obj/item/extinguisher/proc/move_chair, B, movementdirection), 1)
+ addtimer(CALLBACK(src, TYPE_PROC_REF(/obj/item/extinguisher, move_chair), B, movementdirection), 1)
else user.newtonian_move(turn(direction, 180))
@@ -177,7 +177,7 @@
reagents.trans_to(W,1, transfered_by = user)
//Make em move dat ass, hun
- addtimer(CALLBACK(src, /obj/item/extinguisher/proc/move_particles, water_particles), 2)
+ addtimer(CALLBACK(src, TYPE_PROC_REF(/obj/item/extinguisher, move_particles), water_particles), 2)
//Particle movement loop
/obj/item/extinguisher/proc/move_particles(list/particles, repetition=0)
@@ -199,7 +199,7 @@
particles -= W
if(repetition < power)
repetition++
- addtimer(CALLBACK(src, /obj/item/extinguisher/proc/move_particles, particles, repetition), 2)
+ addtimer(CALLBACK(src, TYPE_PROC_REF(/obj/item/extinguisher, move_particles), particles, repetition), 2)
//Chair movement loop
/obj/item/extinguisher/proc/move_chair(obj/B, movementdirection, repetition=0)
@@ -217,7 +217,7 @@
return
repetition++
- addtimer(CALLBACK(src, /obj/item/extinguisher/proc/move_chair, B, movementdirection, repetition), timer_seconds)
+ addtimer(CALLBACK(src, TYPE_PROC_REF(/obj/item/extinguisher, move_chair), B, movementdirection, repetition), timer_seconds)
/obj/item/extinguisher/AltClick(mob/user)
if(!user.canUseTopic(src, BE_CLOSE, ismonkey(user)))
diff --git a/code/game/objects/items/grenades/chem_grenade.dm b/code/game/objects/items/grenades/chem_grenade.dm
index 1147c80394..c344f73f4b 100644
--- a/code/game/objects/items/grenades/chem_grenade.dm
+++ b/code/game/objects/items/grenades/chem_grenade.dm
@@ -172,7 +172,7 @@
landminemode.activate()
return
active = TRUE
- addtimer(CALLBACK(src, .proc/prime), isnull(delayoverride)? det_time : delayoverride)
+ addtimer(CALLBACK(src, PROC_REF(prime)), isnull(delayoverride)? det_time : delayoverride)
/obj/item/grenade/chem_grenade/prime()
if(stage != GRENADE_READY)
@@ -297,7 +297,7 @@
chem_splash(get_turf(src), affected_area, list(reactants), ignition_temp, threatscale)
var/turf/DT = get_turf(src)
- addtimer(CALLBACK(src, .proc/prime), det_time)
+ addtimer(CALLBACK(src, PROC_REF(prime)), det_time)
log_game("A grenade detonated at [AREACOORD(DT)]")
diff --git a/code/game/objects/items/grenades/clusterbuster.dm b/code/game/objects/items/grenades/clusterbuster.dm
index 1a216aedf5..3ecf501577 100644
--- a/code/game/objects/items/grenades/clusterbuster.dm
+++ b/code/game/objects/items/grenades/clusterbuster.dm
@@ -57,7 +57,7 @@
var/steps = rand(1,4)
for(var/i in 1 to steps)
step_away(src,loc)
- addtimer(CALLBACK(src, .proc/prime), rand(15,60))
+ addtimer(CALLBACK(src, PROC_REF(prime)), rand(15,60))
/obj/item/grenade/clusterbuster/segment/prime()
new payload_spawner(drop_location(), payload, rand(min_spawned,max_spawned))
@@ -77,7 +77,7 @@
var/obj/item/grenade/P = new type(loc)
if(istype(P))
P.active = TRUE
- addtimer(CALLBACK(P, /obj/item/grenade/proc/prime), rand(15,60))
+ addtimer(CALLBACK(P, TYPE_PROC_REF(/obj/item/grenade, prime)), rand(15,60))
var/steps = rand(1,4)
for(var/i in 1 to steps)
step_away(src,loc)
@@ -106,7 +106,7 @@
var/chosen = pick(subtypesof(/obj/item/slime_extract))
var/obj/item/slime_extract/P = new chosen(loc)
if(volatile)
- addtimer(CALLBACK(P, /obj/item/slime_extract/proc/activate_slime), rand(15,60))
+ addtimer(CALLBACK(P, TYPE_PROC_REF(/obj/item/slime_extract, activate_slime)), rand(15,60))
var/steps = rand(1,4)
for(var/i in 1 to steps)
step_away(src,loc)
diff --git a/code/game/objects/items/grenades/grenade.dm b/code/game/objects/items/grenades/grenade.dm
index 9a1a833fb6..39e0e028f1 100644
--- a/code/game/objects/items/grenades/grenade.dm
+++ b/code/game/objects/items/grenades/grenade.dm
@@ -73,7 +73,7 @@
playsound(src, 'sound/blank.ogg', volume, TRUE)
active = TRUE
icon_state = initial(icon_state) + "_active"
- addtimer(CALLBACK(src, .proc/prime), isnull(delayoverride)? det_time : delayoverride)
+ addtimer(CALLBACK(src, PROC_REF(prime)), isnull(delayoverride)? det_time : delayoverride)
/obj/item/grenade/proc/prime()
diff --git a/code/game/objects/items/grenades/plastic.dm b/code/game/objects/items/grenades/plastic.dm
index f619e91827..7885ff0f10 100644
--- a/code/game/objects/items/grenades/plastic.dm
+++ b/code/game/objects/items/grenades/plastic.dm
@@ -106,7 +106,7 @@
target.add_overlay(plastic_overlay)
to_chat(user, "
I plant the bomb. Timer counting down from [det_time].")
- addtimer(CALLBACK(src, .proc/prime), det_time*10)
+ addtimer(CALLBACK(src, PROC_REF(prime)), det_time*10)
/obj/item/grenade/c4/proc/shout_syndicate_crap(mob/M)
if(!M)
diff --git a/code/game/objects/items/handcuffs.dm b/code/game/objects/items/handcuffs.dm
index 2e8c0f5971..9afe5869ca 100644
--- a/code/game/objects/items/handcuffs.dm
+++ b/code/game/objects/items/handcuffs.dm
@@ -414,7 +414,7 @@
/obj/item/restraints/legcuffs/beartrap/energy/Initialize()
. = ..()
- addtimer(CALLBACK(src, .proc/dissipate), 100)
+ addtimer(CALLBACK(src, PROC_REF(dissipate)), 100)
/obj/item/restraints/legcuffs/beartrap/energy/proc/dissipate()
if(!ismob(loc))
diff --git a/code/game/objects/items/his_grace.dm b/code/game/objects/items/his_grace.dm
index b75bc3121e..efe11607bc 100644
--- a/code/game/objects/items/his_grace.dm
+++ b/code/game/objects/items/his_grace.dm
@@ -28,7 +28,7 @@
. = ..()
START_PROCESSING(SSprocessing, src)
GLOB.poi_list += src
- RegisterSignal(src, COMSIG_MOVABLE_POST_THROW, .proc/move_gracefully)
+ RegisterSignal(src, COMSIG_MOVABLE_POST_THROW, PROC_REF(move_gracefully))
/obj/item/his_grace/Destroy()
STOP_PROCESSING(SSprocessing, src)
@@ -39,7 +39,7 @@
/obj/item/his_grace/attack_self(mob/living/user)
if(!awakened)
- INVOKE_ASYNC(src, .proc/awaken, user)
+ INVOKE_ASYNC(src, PROC_REF(awaken), user)
/obj/item/his_grace/attack(mob/living/M, mob/user)
if(awakened && M.stat)
diff --git a/code/game/objects/items/holy_weapons.dm b/code/game/objects/items/holy_weapons.dm
index f4252c0394..563880ca33 100644
--- a/code/game/objects/items/holy_weapons.dm
+++ b/code/game/objects/items/holy_weapons.dm
@@ -227,7 +227,7 @@
if (initial(rodtype.chaplain_spawnable))
display_names[initial(rodtype.name)] = rodtype
- var/choice = input(M,"What theme would you like for my holy weapon?","Holy Weapon Theme") as null|anything in sortList(display_names, /proc/cmp_typepaths_asc)
+ var/choice = input(M,"What theme would you like for my holy weapon?","Holy Weapon Theme") as null|anything in sortList(display_names, GLOBAL_PROC_REF(cmp_typepaths_asc))
if(QDELETED(src) || !choice || M.stat || !in_range(M, src) || M.incapacitated() || reskinned)
return
diff --git a/code/game/objects/items/hot_potato.dm b/code/game/objects/items/hot_potato.dm
index 50a494d110..b356ddc99b 100644
--- a/code/game/objects/items/hot_potato.dm
+++ b/code/game/objects/items/hot_potato.dm
@@ -139,7 +139,7 @@
ADD_TRAIT(src, TRAIT_NODROP, HOT_POTATO_TRAIT)
name = "primed [name]"
activation_time = timer + world.time
- detonation_timerid = addtimer(CALLBACK(src, .proc/detonate), delay, TIMER_STOPPABLE)
+ detonation_timerid = addtimer(CALLBACK(src, PROC_REF(detonate)), delay, TIMER_STOPPABLE)
START_PROCESSING(SSfastprocess, src)
if(user)
log_bomber(user, "has primed a", src, "for detonation (Timer:[delay],Explosive:[detonate_explosion],Range:[detonate_dev_range]/[detonate_heavy_range]/[detonate_light_range]/[detonate_fire_range])")
diff --git a/code/game/objects/items/hourglass.dm b/code/game/objects/items/hourglass.dm
index 825d615e85..cf8fb702c4 100644
--- a/code/game/objects/items/hourglass.dm
+++ b/code/game/objects/items/hourglass.dm
@@ -37,7 +37,7 @@
/obj/item/hourglass/proc/start()
finish_time = world.time + time
- timing_id = addtimer(CALLBACK(src, .proc/finish), time, TIMER_STOPPABLE)
+ timing_id = addtimer(CALLBACK(src, PROC_REF(finish)), time, TIMER_STOPPABLE)
countdown.start()
timing_animation()
diff --git a/code/game/objects/items/implants/implant_stealth.dm b/code/game/objects/items/implants/implant_stealth.dm
index b7aa7ca2d2..ae46eb0c7d 100644
--- a/code/game/objects/items/implants/implant_stealth.dm
+++ b/code/game/objects/items/implants/implant_stealth.dm
@@ -33,7 +33,7 @@
/obj/structure/closet/cardboard/agent/proc/reveal()
alpha = 255
- addtimer(CALLBACK(src, .proc/go_invisible), 10, TIMER_OVERRIDE|TIMER_UNIQUE)
+ addtimer(CALLBACK(src, PROC_REF(go_invisible)), 10, TIMER_OVERRIDE|TIMER_UNIQUE)
/obj/structure/closet/cardboard/agent/Bump(atom/movable/A)
. = ..()
diff --git a/code/game/objects/items/melee/misc.dm b/code/game/objects/items/melee/misc.dm
index c397190bc9..f39dbb5b5b 100644
--- a/code/game/objects/items/melee/misc.dm
+++ b/code/game/objects/items/melee/misc.dm
@@ -113,8 +113,8 @@
var/speedbase = abs((4 SECONDS) / limbs_to_dismember.len)
for(bodypart in limbs_to_dismember)
i++
- addtimer(CALLBACK(src, .proc/suicide_dismember, user, bodypart), speedbase * i)
- addtimer(CALLBACK(src, .proc/manual_suicide, user), (5 SECONDS) * i)
+ addtimer(CALLBACK(src, PROC_REF(suicide_dismember), user, bodypart), speedbase * i)
+ addtimer(CALLBACK(src, PROC_REF(manual_suicide), user), (5 SECONDS) * i)
return MANUAL_SUICIDE
/obj/item/melee/sabre/proc/suicide_dismember(mob/living/user, obj/item/bodypart/affecting)
diff --git a/code/game/objects/items/robot/robot_items.dm b/code/game/objects/items/robot/robot_items.dm
index 59b969fbe3..59b7f65c15 100644
--- a/code/game/objects/items/robot/robot_items.dm
+++ b/code/game/objects/items/robot/robot_items.dm
@@ -371,7 +371,7 @@
if(charging)
return
if(candy < candymax)
- addtimer(CALLBACK(src, .proc/charge_lollipops), charge_delay)
+ addtimer(CALLBACK(src, PROC_REF(charge_lollipops)), charge_delay)
charging = TRUE
/obj/item/borg/lollipop/proc/charge_lollipops()
@@ -755,7 +755,7 @@
/obj/item/borg/apparatus/Initialize()
. = ..()
- RegisterSignal(loc.loc, COMSIG_BORG_SAFE_DECONSTRUCT, .proc/safedecon)
+ RegisterSignal(loc.loc, COMSIG_BORG_SAFE_DECONSTRUCT, PROC_REF(safedecon))
/obj/item/borg/apparatus/Destroy()
if(stored)
@@ -804,7 +804,7 @@
var/obj/item/O = A
O.forceMove(src)
stored = O
- RegisterSignal(stored, COMSIG_ATOM_UPDATE_ICON, /atom/.proc/update_icon)
+ RegisterSignal(stored, COMSIG_ATOM_UPDATE_ICON, TYPE_PROC_REF(/atom, update_icon))
update_icon()
return
else
@@ -832,7 +832,7 @@
/obj/item/borg/apparatus/beaker/Initialize()
. = ..()
stored = new /obj/item/reagent_containers/glass/beaker/large(src)
- RegisterSignal(stored, COMSIG_ATOM_UPDATE_ICON, /atom/.proc/update_icon)
+ RegisterSignal(stored, COMSIG_ATOM_UPDATE_ICON, TYPE_PROC_REF(/atom, update_icon))
update_icon()
/obj/item/borg/apparatus/beaker/Destroy()
@@ -893,7 +893,7 @@
/obj/item/borg/apparatus/beaker/service/Initialize()
. = ..()
stored = new /obj/item/reagent_containers/food/drinks/drinkingglass(src)
- RegisterSignal(stored, COMSIG_ATOM_UPDATE_ICON, /atom/.proc/update_icon)
+ RegisterSignal(stored, COMSIG_ATOM_UPDATE_ICON, TYPE_PROC_REF(/atom, update_icon))
update_icon()
////////////////////
diff --git a/code/game/objects/items/rogueitems/coins.dm b/code/game/objects/items/rogueitems/coins.dm
index 0939db2918..65b6ac0eda 100644
--- a/code/game/objects/items/rogueitems/coins.dm
+++ b/code/game/objects/items/rogueitems/coins.dm
@@ -134,11 +134,13 @@
desc = initial(desc)
icon_state = "[base_type][heads_tails]"
dropshrink = 0.2
+ slot_flags = ITEM_SLOT_MOUTH
return
name = plural_name
desc = ""
dropshrink = 1
+ slot_flags = null
switch(quantity)
if(2)
dropshrink = 0.2 // this is just like the single coin, gotta shrink it
diff --git a/code/game/objects/items/rogueitems/magic.dm b/code/game/objects/items/rogueitems/magic.dm
index fb35affd9e..c27ab17fe5 100644
--- a/code/game/objects/items/rogueitems/magic.dm
+++ b/code/game/objects/items/rogueitems/magic.dm
@@ -45,7 +45,7 @@
S.ManualFollow(HL)
last_scry = world.time
user.visible_message("
[user] stares into [src], \their eyes rolling back into \their head.")
- addtimer(CALLBACK(S, /mob/dead/observer/.proc/reenter_corpse), 8 SECONDS)
+ addtimer(CALLBACK(S, TYPE_PROC_REF(/mob/dead/observer, reenter_corpse)), 8 SECONDS)
if(!HL.stat)
if(HL.STAPER >= 15)
if(HL.mind)
diff --git a/code/game/objects/items/rogueweapons/melee/axes.dm b/code/game/objects/items/rogueweapons/melee/axes.dm
index 22e16b8ad5..d91c39134e 100644
--- a/code/game/objects/items/rogueweapons/melee/axes.dm
+++ b/code/game/objects/items/rogueweapons/melee/axes.dm
@@ -1,5 +1,5 @@
/obj/item/rogueweapon/stoneaxe
- slot_flags = ITEM_SLOT_HIP
+ slot_flags = ITEM_SLOT_HIP | ITEM_SLOT_BACK
force = 12
possible_item_intents = list(/datum/intent/axe/chop/stone)
name = "stone axe"
@@ -95,7 +95,6 @@
swingdelay = 10
/obj/item/rogueweapon/stoneaxe/battle
- slot_flags = ITEM_SLOT_HIP
force = 33
possible_item_intents = list(/datum/intent/axe/cut,/datum/intent/axe/chop)
name = "battle axe"
@@ -118,7 +117,6 @@
return ..()
/obj/item/rogueweapon/stoneaxe/woodcut
- slot_flags = ITEM_SLOT_HIP
force = 18
possible_item_intents = list(/datum/intent/axe/cut,/datum/intent/axe/chop)
name = "axe"
diff --git a/code/game/objects/items/rogueweapons/melee/blunt.dm b/code/game/objects/items/rogueweapons/melee/blunt.dm
index 174add6f35..ab4bc37323 100644
--- a/code/game/objects/items/rogueweapons/melee/blunt.dm
+++ b/code/game/objects/items/rogueweapons/melee/blunt.dm
@@ -14,7 +14,7 @@
//dropshrink = 0.75
wlength = WLENGTH_NORMAL
w_class = WEIGHT_CLASS_BULKY
- slot_flags = ITEM_SLOT_HIP
+ slot_flags = ITEM_SLOT_HIP | ITEM_SLOT_BACK
associated_skill = /datum/skill/combat/axesmaces
smeltresult = /obj/item/ingot/iron
gripped_intents = list(/datum/intent/mace/strike,/datum/intent/mace/smash)
@@ -250,7 +250,6 @@
//dropshrink = 0.75
wlength = WLENGTH_LONG
w_class = WEIGHT_CLASS_BULKY
- slot_flags = ITEM_SLOT_BACK
associated_skill = /datum/skill/combat/axesmaces
smeltresult = /obj/item/ash
parrysound = "parrywood"
diff --git a/code/game/objects/items/rogueweapons/melee/flail.dm b/code/game/objects/items/rogueweapons/melee/flail.dm
index 33660aa0ef..b8becea9f9 100644
--- a/code/game/objects/items/rogueweapons/melee/flail.dm
+++ b/code/game/objects/items/rogueweapons/melee/flail.dm
@@ -9,7 +9,7 @@
//dropshrink = 0.75
wlength = WLENGTH_NORMAL
w_class = WEIGHT_CLASS_BULKY
- slot_flags = ITEM_SLOT_HIP
+ slot_flags = ITEM_SLOT_HIP | ITEM_SLOT_BACK
associated_skill = /datum/skill/combat/whipsflails
smeltresult = /obj/item/ingot/iron
parrysound = list('sound/combat/parry/parrygen.ogg')
@@ -55,4 +55,4 @@
force = 40
icon_state = "flail"
smeltresult = /obj/item/ingot/steel
- minstr = 5
\ No newline at end of file
+ minstr = 5
diff --git a/code/game/objects/items/rogueweapons/melee/polearms.dm b/code/game/objects/items/rogueweapons/melee/polearms.dm
index c6b68669b5..b041306cd1 100644
--- a/code/game/objects/items/rogueweapons/melee/polearms.dm
+++ b/code/game/objects/items/rogueweapons/melee/polearms.dm
@@ -62,6 +62,9 @@
if("onbelt")
return list("shrink" = 0.3,"sx" = -2,"sy" = -5,"nx" = 4,"ny" = -5,"wx" = 0,"wy" = -5,"ex" = 2,"ey" = -5,"nturn" = 0,"sturn" = 0,"wturn" = 0,"eturn" = 0,"nflip" = 0,"sflip" = 0,"wflip" = 0,"eflip" = 0,"northabove" = 0,"southabove" = 1,"eastabove" = 1,"westabove" = 0)
+/obj/item/rogueweapon/woodstaff/wise
+ name = "wise staff"
+ desc = "A staff for keeping the volfs at bay..."
/obj/item/rogueweapon/woodstaff/aries
name = "staff of the shepherd"
@@ -299,4 +302,4 @@
reach = 2
/datum/intent/sword/thrust/zwei
- reach = 2
\ No newline at end of file
+ reach = 2
diff --git a/code/game/objects/items/rogueweapons/melee/swords.dm b/code/game/objects/items/rogueweapons/melee/swords.dm
index b429c9f34b..8e8bfa5bb3 100644
--- a/code/game/objects/items/rogueweapons/melee/swords.dm
+++ b/code/game/objects/items/rogueweapons/melee/swords.dm
@@ -1,6 +1,6 @@
/obj/item/rogueweapon/sword
- slot_flags = ITEM_SLOT_HIP
+ slot_flags = ITEM_SLOT_HIP | ITEM_SLOT_BACK
force = 18
force_wielded = 25
possible_item_intents = list(/datum/intent/sword/cut, /datum/intent/sword/thrust)
@@ -101,7 +101,6 @@
associated_skill = /datum/skill/combat/swords
throwforce = 15
thrown_bclass = BCLASS_CUT
- slot_flags = ITEM_SLOT_BACK|ITEM_SLOT_HIP
dropshrink = 0.75
smeltresult = /obj/item/ingot/steel
@@ -143,7 +142,6 @@
associated_skill = /datum/skill/combat/swords
throwforce = 15
thrown_bclass = BCLASS_CUT
- slot_flags = ITEM_SLOT_BACK|ITEM_SLOT_HIP
dropshrink = 0.75
smeltresult = /obj/item/ingot/steel
@@ -182,7 +180,6 @@
associated_skill = /datum/skill/combat/swords
throwforce = 15
thrown_bclass = BCLASS_CUT
- slot_flags = ITEM_SLOT_BACK|ITEM_SLOT_HIP
dropshrink = 0.75
smeltresult = /obj/item/ingot/steel
sellprice = 363
@@ -222,7 +219,6 @@
associated_skill = /datum/skill/combat/swords
throwforce = 15
thrown_bclass = BCLASS_CUT
- slot_flags = ITEM_SLOT_BACK|ITEM_SLOT_HIP
dropshrink = 0.75
smeltresult = /obj/item/ingot/steel
sellprice = 363
@@ -262,7 +258,6 @@
associated_skill = /datum/skill/combat/swords
throwforce = 15
thrown_bclass = BCLASS_CUT
- slot_flags = ITEM_SLOT_BACK|ITEM_SLOT_HIP
dropshrink = 0.75
smeltresult = /obj/item/ingot/steel
@@ -302,7 +297,6 @@
associated_skill = /datum/skill/combat/swords
throwforce = 15
thrown_bclass = BCLASS_CUT
- slot_flags = ITEM_SLOT_BACK|ITEM_SLOT_HIP
dropshrink = 0.75
minstr = 6
sellprice = 42
@@ -349,7 +343,6 @@
name = "execution sword"
desc = ""
minstr = 10
- slot_flags = ITEM_SLOT_BACK
/obj/item/rogueweapon/sword/long/exe/getonmobprop(tag)
. = ..()
diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm
index 9369ae6a0c..f4f1cd2fc5 100644
--- a/code/game/objects/items/stacks/medical.dm
+++ b/code/game/objects/items/stacks/medical.dm
@@ -27,12 +27,12 @@
if(M == user)
if(!silent)
user.visible_message("
[user] starts to apply \the [src] on [user.p_them()]self...", "
I begin applying \the [src] on myself...")
- if(!do_mob(user, M, self_delay, extra_checks=CALLBACK(M, /mob/living/proc/can_inject, user, TRUE)))
+ if(!do_mob(user, M, self_delay, extra_checks=CALLBACK(M, TYPE_PROC_REF(/mob/living, can_inject), user, TRUE)))
return
else if(other_delay)
if(!silent)
user.visible_message("
[user] starts to apply \the [src] on [M].", "
I begin applying \the [src] on [M]...")
- if(!do_mob(user, M, other_delay, extra_checks=CALLBACK(M, /mob/living/proc/can_inject, user, TRUE)))
+ if(!do_mob(user, M, other_delay, extra_checks=CALLBACK(M, TYPE_PROC_REF(/mob/living, can_inject), user, TRUE)))
return
if(heal(M, user))
diff --git a/code/game/objects/items/storage/backpack.dm b/code/game/objects/items/storage/backpack.dm
index c430350b16..fc2e34bf6e 100644
--- a/code/game/objects/items/storage/backpack.dm
+++ b/code/game/objects/items/storage/backpack.dm
@@ -88,7 +88,7 @@
return (OXYLOSS)
/obj/item/storage/backpack/santabag/proc/regenerate_presents()
- addtimer(CALLBACK(src, .proc/regenerate_presents), rand(30 SECONDS, 60 SECONDS))
+ addtimer(CALLBACK(src, PROC_REF(regenerate_presents)), rand(30 SECONDS, 60 SECONDS))
var/mob/M = get(loc, /mob)
if(!istype(M))
diff --git a/code/game/objects/items/storage/bags.dm b/code/game/objects/items/storage/bags.dm
index e420915541..e9e493245b 100644
--- a/code/game/objects/items/storage/bags.dm
+++ b/code/game/objects/items/storage/bags.dm
@@ -121,7 +121,7 @@
return
if(listeningTo)
UnregisterSignal(listeningTo, COMSIG_MOVABLE_MOVED)
- RegisterSignal(user, COMSIG_MOVABLE_MOVED, .proc/Pickup_ores)
+ RegisterSignal(user, COMSIG_MOVABLE_MOVED, PROC_REF(Pickup_ores))
listeningTo = user
/obj/item/storage/bag/ore/dropped()
diff --git a/code/game/objects/items/stunbaton.dm b/code/game/objects/items/stunbaton.dm
index 16f9d346b6..a41348222a 100644
--- a/code/game/objects/items/stunbaton.dm
+++ b/code/game/objects/items/stunbaton.dm
@@ -172,7 +172,7 @@
L.adjustStaminaLoss(60)
SEND_SIGNAL(L, COMSIG_LIVING_MINOR_SHOCK)
- addtimer(CALLBACK(src, .proc/apply_stun_effect_end, L), 2 SECONDS)
+ addtimer(CALLBACK(src, PROC_REF(apply_stun_effect_end), L), 2 SECONDS)
if(user)
L.lastattacker = user.real_name
diff --git a/code/game/objects/items/tanks/jetpack.dm b/code/game/objects/items/tanks/jetpack.dm
index 41cd4a709c..0f4c0d09e2 100644
--- a/code/game/objects/items/tanks/jetpack.dm
+++ b/code/game/objects/items/tanks/jetpack.dm
@@ -54,7 +54,7 @@
on = TRUE
icon_state = "[initial(icon_state)]-on"
ion_trail.start()
- RegisterSignal(user, COMSIG_MOVABLE_MOVED, .proc/move_react)
+ RegisterSignal(user, COMSIG_MOVABLE_MOVED, PROC_REF(move_react))
if(full_speed)
user.add_movespeed_modifier(MOVESPEED_ID_JETPACK, priority=100, multiplicative_slowdown=-0.25, movetypes=FLOATING, conflict=MOVE_CONFLICT_JETPACK)
diff --git a/code/game/objects/items/tanks/watertank.dm b/code/game/objects/items/tanks/watertank.dm
index 3f41646734..20d1e207cd 100644
--- a/code/game/objects/items/tanks/watertank.dm
+++ b/code/game/objects/items/tanks/watertank.dm
@@ -296,7 +296,7 @@
var/obj/effect/particle_effect/foam/metal/resin/F = new (get_turf(target))
F.amount = 0
metal_synthesis_cooldown++
- addtimer(CALLBACK(src, .proc/reduce_metal_synth_cooldown), 10 SECONDS)
+ addtimer(CALLBACK(src, PROC_REF(reduce_metal_synth_cooldown)), 10 SECONDS)
else
to_chat(user, "
Resin foam mix is still being synthesized...")
return
diff --git a/code/game/objects/items/theft_tools.dm b/code/game/objects/items/theft_tools.dm
index 5c3353dd44..490c737ff0 100644
--- a/code/game/objects/items/theft_tools.dm
+++ b/code/game/objects/items/theft_tools.dm
@@ -61,7 +61,7 @@
core = ncore
icon_state = "core_container_loaded"
to_chat(user, "
Container is sealing...")
- addtimer(CALLBACK(src, .proc/seal), 50)
+ addtimer(CALLBACK(src, PROC_REF(seal)), 50)
return TRUE
/obj/item/nuke_core_container/proc/seal()
@@ -179,7 +179,7 @@
T.icon_state = "supermatter_tongs"
icon_state = "core_container_loaded"
to_chat(user, "
Container is sealing...")
- addtimer(CALLBACK(src, .proc/seal), 50)
+ addtimer(CALLBACK(src, PROC_REF(seal)), 50)
return TRUE
/obj/item/nuke_core_container/supermatter/seal()
diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm
index 13d1aa2b87..1f48b41523 100644
--- a/code/game/objects/items/toys.dm
+++ b/code/game/objects/items/toys.dm
@@ -352,7 +352,7 @@
active = TRUE
playsound(src, 'sound/blank.ogg', 100)
Rumble()
- addtimer(CALLBACK(src, .proc/stopRumble), 600)
+ addtimer(CALLBACK(src, PROC_REF(stopRumble)), 600)
else
to_chat(user, "
[src] is already active!")
@@ -460,7 +460,7 @@
/obj/item/ash/snappop_phoenix/Initialize()
. = ..()
- addtimer(CALLBACK(src, .proc/respawn), respawn_time)
+ addtimer(CALLBACK(src, PROC_REF(respawn)), respawn_time)
/obj/item/ash/snappop_phoenix/proc/respawn()
new /obj/item/toy/snappop/phoenix(get_turf(src))
@@ -579,7 +579,7 @@
activation_message(user)
playsound(loc, 'sound/blank.ogg', 20, TRUE)
- INVOKE_ASYNC(src, .proc/do_toy_talk, user)
+ INVOKE_ASYNC(src, PROC_REF(do_toy_talk), user)
cooldown = TRUE
addtimer(VARSET_CALLBACK(src, cooldown, FALSE), recharge_time)
diff --git a/code/game/objects/items/twohanded.dm b/code/game/objects/items/twohanded.dm
index 75288f42c3..fa4ecd5659 100644
--- a/code/game/objects/items/twohanded.dm
+++ b/code/game/objects/items/twohanded.dm
@@ -341,10 +341,10 @@
impale(user)
return
if((wielded) && prob(50))
- INVOKE_ASYNC(src, .proc/jedi_spin, user)
+ INVOKE_ASYNC(src, PROC_REF(jedi_spin), user)
/obj/item/twohanded/dualsaber/proc/jedi_spin(mob/living/user)
- dance_rotate(user, CALLBACK(user, /mob.proc/dance_flip))
+ dance_rotate(user, CALLBACK(user, TYPE_PROC_REF(/mob, dance_flip)))
/obj/item/twohanded/dualsaber/proc/impale(mob/living/user)
to_chat(user, "
I twirl around a bit before losing your balance and impaling myself on [src].")
@@ -404,7 +404,7 @@
playsound(loc, pick(hitsound), get_clamped_volume(), TRUE, -1)
add_fingerprint(user)
// Light your candles while spinning around the room
- INVOKE_ASYNC(src, .proc/jedi_spin, user)
+ INVOKE_ASYNC(src, PROC_REF(jedi_spin), user)
/obj/item/twohanded/dualsaber/green
possible_colors = list("green")
@@ -812,7 +812,7 @@
. = ..()
if(!wielded)
return
- RegisterSignal(user, COMSIG_MOVABLE_MOVED, .proc/unwield)
+ RegisterSignal(user, COMSIG_MOVABLE_MOVED, PROC_REF(unwield))
listeningTo = user
user.visible_message("
[user] holds [src] up to [user.p_their()] eyes.", "
I hold [src] up to your eyes.")
item_state = "binoculars_wielded"
diff --git a/code/game/objects/items/weaponry.dm b/code/game/objects/items/weaponry.dm
index 2113643ffb..adf404bea6 100644
--- a/code/game/objects/items/weaponry.dm
+++ b/code/game/objects/items/weaponry.dm
@@ -475,7 +475,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
/obj/item/statuebust/Initialize()
. = ..()
AddComponent(/datum/component/art, impressiveness)
- addtimer(CALLBACK(src, /datum.proc/AddComponent, /datum/component/beauty, 1000), 0)
+ addtimer(CALLBACK(src, TYPE_PROC_REF(/datum, AddComponent), /datum/component/beauty, 1000), 0)
/obj/item/statuebust/hippocratic
name = "hippocrates bust"
diff --git a/code/game/objects/obj_defense.dm b/code/game/objects/obj_defense.dm
index 25bccb7555..3f71969b02 100644
--- a/code/game/objects/obj_defense.dm
+++ b/code/game/objects/obj_defense.dm
@@ -247,7 +247,7 @@ GLOBAL_DATUM_INIT(acid_overlay, /mutable_appearance, mutable_appearance('icons/e
obj_flags |= BEING_SHOCKED
var/power_bounced = power / 2
tesla_zap(src, 3, power_bounced, tesla_flags, shocked_targets)
- addtimer(CALLBACK(src, .proc/reset_shocked), 10)
+ addtimer(CALLBACK(src, PROC_REF(reset_shocked)), 10)
//The surgeon general warns that being buckled to certain objects receiving powerful shocks is greatly hazardous to your health
///Only tesla coils and grounding rods currently call this because mobs are already targeted over all other objects, but this might be useful for more things later.
diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm
index 4a5fd4984a..353647ac7c 100644
--- a/code/game/objects/structures.dm
+++ b/code/game/objects/structures.dm
@@ -38,7 +38,7 @@
H.toggle_rogmove_intent(MOVE_INTENT_WALK, TRUE)
playsound(src, "genblunt", 100, TRUE)
H.visible_message("
[H] runs into [src]!", "
I run into [src]!")
- addtimer(CALLBACK(H, /mob/living/carbon/human/.proc/Knockdown, 10), 10)
+ addtimer(CALLBACK(H, TYPE_PROC_REF(/mob/living/carbon/human, Knockdown), 10), 10)
/obj/structure/Destroy()
diff --git a/code/game/objects/structures/aliens.dm b/code/game/objects/structures/aliens.dm
index ff3d18d2a1..6e983b5a4a 100644
--- a/code/game/objects/structures/aliens.dm
+++ b/code/game/objects/structures/aliens.dm
@@ -229,7 +229,7 @@
if(status == GROWING || status == GROWN)
child = new(src)
if(status == GROWING)
- addtimer(CALLBACK(src, .proc/Grow), rand(MIN_GROWTH_TIME, MAX_GROWTH_TIME))
+ addtimer(CALLBACK(src, PROC_REF(Grow)), rand(MIN_GROWTH_TIME, MAX_GROWTH_TIME))
proximity_monitor = new(src, status == GROWN ? 1 : 0)
if(status == BURST)
obj_integrity = integrity_failure * max_integrity
@@ -285,7 +285,7 @@
status = BURST
update_icon()
flick("egg_opening", src)
- addtimer(CALLBACK(src, .proc/finish_bursting, kill), 15)
+ addtimer(CALLBACK(src, PROC_REF(finish_bursting), kill), 15)
/obj/structure/alien/egg/proc/finish_bursting(kill = TRUE)
if(child)
diff --git a/code/game/objects/structures/beds_chairs/chair.dm b/code/game/objects/structures/beds_chairs/chair.dm
index 39051ba6a1..c900cbf4a0 100644
--- a/code/game/objects/structures/beds_chairs/chair.dm
+++ b/code/game/objects/structures/beds_chairs/chair.dm
@@ -24,11 +24,11 @@
/obj/structure/chair/Initialize()
. = ..()
if(!anchored) //why would you put these on the shuttle?
- addtimer(CALLBACK(src, .proc/RemoveFromLatejoin), 0)
+ addtimer(CALLBACK(src, PROC_REF(RemoveFromLatejoin)), 0)
/obj/structure/chair/ComponentInitialize()
. = ..()
- AddComponent(/datum/component/simple_rotation,ROTATION_ALTCLICK | ROTATION_CLOCKWISE, CALLBACK(src, .proc/can_user_rotate),CALLBACK(src, .proc/can_be_rotated),null)
+ AddComponent(/datum/component/simple_rotation,ROTATION_ALTCLICK | ROTATION_CLOCKWISE, CALLBACK(src, PROC_REF(can_user_rotate)),CALLBACK(src, PROC_REF(can_be_rotated)),null)
/obj/structure/chair/proc/can_be_rotated(mob/user)
return TRUE
@@ -460,7 +460,7 @@
Mob.pixel_y -= 2
.=..()
if(iscarbon(Mob))
- INVOKE_ASYNC(src, .proc/snap_check, Mob)
+ INVOKE_ASYNC(src, PROC_REF(snap_check), Mob)
/obj/structure/chair/plastic/post_unbuckle_mob(mob/living/Mob)
Mob.pixel_y += 2
diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm
index c9fe57be80..802a5289dc 100644
--- a/code/game/objects/structures/crates_lockers/closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets.dm
@@ -51,7 +51,7 @@
/obj/structure/closet/Initialize(mapload)
if(mapload && !opened) // if closed, any item at the crate's loc is put in the contents
- addtimer(CALLBACK(src, .proc/take_contents), 0)
+ addtimer(CALLBACK(src, PROC_REF(take_contents)), 0)
. = ..()
update_icon()
PopulateContents()
diff --git a/code/game/objects/structures/crates_lockers/closets/cardboardbox.dm b/code/game/objects/structures/crates_lockers/closets/cardboardbox.dm
index 0497f2cb7b..b364bb58f7 100644
--- a/code/game/objects/structures/crates_lockers/closets/cardboardbox.dm
+++ b/code/game/objects/structures/crates_lockers/closets/cardboardbox.dm
@@ -25,7 +25,7 @@
return
move_delay = TRUE
if(step(src, direction))
- addtimer(CALLBACK(src, .proc/ResetMoveDelay), CONFIG_GET(number/movedelay/walk_delay) * move_speed_multiplier)
+ addtimer(CALLBACK(src, PROC_REF(ResetMoveDelay)), CONFIG_GET(number/movedelay/walk_delay) * move_speed_multiplier)
else
ResetMoveDelay()
@@ -83,6 +83,6 @@
var/oldloc = loc
step(src, direction)
if(oldloc != loc)
- addtimer(CALLBACK(src, .proc/ResetMoveDelay), CONFIG_GET(number/movedelay/walk_delay) * move_speed_multiplier)
+ addtimer(CALLBACK(src, PROC_REF(ResetMoveDelay)), CONFIG_GET(number/movedelay/walk_delay) * move_speed_multiplier)
else
move_delay = FALSE
diff --git a/code/game/objects/structures/crates_lockers/closets/infinite.dm b/code/game/objects/structures/crates_lockers/closets/infinite.dm
index 5e987ea06c..9aaf220f9b 100644
--- a/code/game/objects/structures/crates_lockers/closets/infinite.dm
+++ b/code/game/objects/structures/crates_lockers/closets/infinite.dm
@@ -26,7 +26,7 @@
/obj/structure/closet/infinite/open()
. = ..()
if(. && auto_close_time)
- addtimer(CALLBACK(src, .proc/close_on_my_own), auto_close_time, TIMER_OVERRIDE)
+ addtimer(CALLBACK(src, PROC_REF(close_on_my_own)), auto_close_time, TIMER_OVERRIDE)
/obj/structure/closet/infinite/proc/close_on_my_own()
if(close())
diff --git a/code/game/objects/structures/crates_lockers/crates/bins.dm b/code/game/objects/structures/crates_lockers/crates/bins.dm
index 96de66753d..c745aa5d6e 100644
--- a/code/game/objects/structures/crates_lockers/crates/bins.dm
+++ b/code/game/objects/structures/crates_lockers/crates/bins.dm
@@ -37,7 +37,7 @@
/obj/structure/closet/crate/bin/proc/do_animate()
playsound(loc, open_sound, 15, TRUE, -3)
flick("animate_largebins", src)
- addtimer(CALLBACK(src, .proc/do_close), 13)
+ addtimer(CALLBACK(src, PROC_REF(do_close)), 13)
/obj/structure/closet/crate/bin/proc/do_close()
playsound(loc, close_sound, 15, TRUE, -3)
diff --git a/code/game/objects/structures/divine.dm b/code/game/objects/structures/divine.dm
index ccdffbce1e..87d7755a7d 100644
--- a/code/game/objects/structures/divine.dm
+++ b/code/game/objects/structures/divine.dm
@@ -41,7 +41,7 @@
to_chat(user, "
The blood feels warm as you touch it. The fountain immediately dries up shortly afterwards.")
user.reagents.add_reagent(/datum/reagent/medicine/healthpot,40)
update_icon()
- addtimer(CALLBACK(src, /atom/.proc/update_icon), time_between_uses)
+ addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, update_icon)), time_between_uses)
/obj/structure/healingfountain/update_icon()
diff --git a/code/game/objects/structures/electricchair.dm b/code/game/objects/structures/electricchair.dm
index 7a40f3931c..db2c54bbcd 100644
--- a/code/game/objects/structures/electricchair.dm
+++ b/code/game/objects/structures/electricchair.dm
@@ -42,5 +42,5 @@
var/mob/living/buckled_mob = m
buckled_mob.electrocute_act(85, src, 1)
to_chat(buckled_mob, "
I feel a deep shock course through your body!")
- addtimer(CALLBACK(buckled_mob, /mob/living.proc/electrocute_act, 85, src, 1), 1)
+ addtimer(CALLBACK(buckled_mob, TYPE_PROC_REF(/mob/living, electrocute_act), 85, src, 1), 1)
visible_message("
The electric chair went off!", "
I hear a deep sharp shock!")
diff --git a/code/game/objects/structures/false_walls.dm b/code/game/objects/structures/false_walls.dm
index 2a4cd88629..34c33c03bf 100644
--- a/code/game/objects/structures/false_walls.dm
+++ b/code/game/objects/structures/false_walls.dm
@@ -49,7 +49,7 @@
for(var/mob/living/obstacle in srcturf) //Stop people from using this as a shield
opening = FALSE
return
- addtimer(CALLBACK(src, /obj/structure/falsewall/proc/toggle_open), 5)
+ addtimer(CALLBACK(src, TYPE_PROC_REF(/obj/structure/falsewall, toggle_open)), 5)
/obj/structure/falsewall/proc/toggle_open()
if(!QDELETED(src))
diff --git a/code/game/objects/structures/flora.dm b/code/game/objects/structures/flora.dm
index fa8055cda2..2eb1bc1ad0 100644
--- a/code/game/objects/structures/flora.dm
+++ b/code/game/objects/structures/flora.dm
@@ -322,7 +322,7 @@
/obj/item/twohanded/required/kirbyplants/Initialize()
. = ..()
AddComponent(/datum/component/tactical)
- addtimer(CALLBACK(src, /datum.proc/AddComponent, /datum/component/beauty, 500), 0)
+ addtimer(CALLBACK(src, TYPE_PROC_REF(/datum, AddComponent), /datum/component/beauty, 500), 0)
/obj/item/twohanded/required/kirbyplants/random
icon = 'icons/obj/flora/_flora.dmi'
diff --git a/code/game/objects/structures/ghost_role_spawners.dm b/code/game/objects/structures/ghost_role_spawners.dm
index e5d8b5e196..ce3dc78e93 100644
--- a/code/game/objects/structures/ghost_role_spawners.dm
+++ b/code/game/objects/structures/ghost_role_spawners.dm
@@ -380,7 +380,7 @@
id.update_label()
else
to_chat(L, "
My owner is already dead! You will soon perish.")
- addtimer(CALLBACK(L, /mob.proc/dust, 150)) //Give em a few seconds as a mercy.
+ addtimer(CALLBACK(L, TYPE_PROC_REF(/mob, dust), 150)) //Give em a few seconds as a mercy.
/datum/outfit/demonic_friend
name = "Demonic Friend"
diff --git a/code/game/objects/structures/guillotine.dm b/code/game/objects/structures/guillotine.dm
index ed0a5d9e53..e5c1b220bc 100644
--- a/code/game/objects/structures/guillotine.dm
+++ b/code/game/objects/structures/guillotine.dm
@@ -97,7 +97,7 @@
if (GUILLOTINE_BLADE_DROPPED)
blade_status = GUILLOTINE_BLADE_MOVING
icon_state = "guillotine_raise"
- addtimer(CALLBACK(src, .proc/raise_blade), GUILLOTINE_ANIMATION_RAISE_LENGTH)
+ addtimer(CALLBACK(src, PROC_REF(raise_blade)), GUILLOTINE_ANIMATION_RAISE_LENGTH)
return
if (GUILLOTINE_BLADE_RAISED)
if (LAZYLEN(buckled_mobs))
@@ -110,14 +110,14 @@
blade_status = GUILLOTINE_BLADE_MOVING
playsound(src, 'sound/misc/wood_saw.ogg', 100, TRUE)
icon_state = "guillotine_drop"
- addtimer(CALLBACK(src, .proc/drop_blade, user), GUILLOTINE_ANIMATION_LENGTH) // Minus two so we play the sound and decap faster
+ addtimer(CALLBACK(src, PROC_REF(drop_blade), user), GUILLOTINE_ANIMATION_LENGTH) // Minus two so we play the sound and decap faster
else
current_action = 0
else
blade_status = GUILLOTINE_BLADE_MOVING
playsound(src, 'sound/misc/wood_saw.ogg', 100, TRUE)
icon_state = "guillotine_drop"
- addtimer(CALLBACK(src, .proc/drop_blade), GUILLOTINE_ANIMATION_LENGTH)
+ addtimer(CALLBACK(src, PROC_REF(drop_blade)), GUILLOTINE_ANIMATION_LENGTH)
/obj/structure/guillotine/proc/raise_blade()
blade_status = GUILLOTINE_BLADE_RAISED
@@ -166,7 +166,7 @@
for(var/mob/M in viewers(src, 7))
var/mob/living/carbon/human/C = M
if (ishuman(M))
- addtimer(CALLBACK(C, /mob/.proc/emote, "clap"), delay_offset * 0.3)
+ addtimer(CALLBACK(C, TYPE_PROC_REF(/mob, emote), "clap"), delay_offset * 0.3)
delay_offset++
else
H.apply_damage(15 * blade_sharpness, BRUTE, head)
diff --git a/code/game/objects/structures/hivebot.dm b/code/game/objects/structures/hivebot.dm
index fc876e56d9..8a4ac65df6 100644
--- a/code/game/objects/structures/hivebot.dm
+++ b/code/game/objects/structures/hivebot.dm
@@ -15,7 +15,7 @@
smoke.start()
visible_message("
[src] warps in!")
playsound(src.loc, 'sound/blank.ogg', 25, TRUE)
- addtimer(CALLBACK(src, .proc/warpbots), rand(10, 600))
+ addtimer(CALLBACK(src, PROC_REF(warpbots)), rand(10, 600))
/obj/structure/hivebot_beacon/proc/warpbots()
icon_state = "def_radar"
diff --git a/code/game/objects/structures/holosign.dm b/code/game/objects/structures/holosign.dm
index 22420122a0..d697f54bac 100644
--- a/code/game/objects/structures/holosign.dm
+++ b/code/game/objects/structures/holosign.dm
@@ -176,7 +176,7 @@
var/mob/living/M = user
M.electrocute_act(15,"Energy Barrier", flags = SHOCK_NOGLOVES)
shockcd = TRUE
- addtimer(CALLBACK(src, .proc/cooldown), 5)
+ addtimer(CALLBACK(src, PROC_REF(cooldown)), 5)
/obj/structure/holosign/barrier/cyborg/hacked/Bumped(atom/movable/AM)
if(shockcd)
@@ -188,4 +188,4 @@
var/mob/living/M = AM
M.electrocute_act(15,"Energy Barrier", flags = SHOCK_NOGLOVES)
shockcd = TRUE
- addtimer(CALLBACK(src, .proc/cooldown), 5)
+ addtimer(CALLBACK(src, PROC_REF(cooldown)), 5)
diff --git a/code/game/objects/structures/lavaland/necropolis_tendril.dm b/code/game/objects/structures/lavaland/necropolis_tendril.dm
index 0506919329..1870862cea 100644
--- a/code/game/objects/structures/lavaland/necropolis_tendril.dm
+++ b/code/game/objects/structures/lavaland/necropolis_tendril.dm
@@ -80,7 +80,7 @@ GLOBAL_LIST_INIT(tendrils, list())
visible_message("
The tendril writhes in fury as the earth around it begins to crack and break apart! Get back!")
visible_message("
Something falls free of the tendril!")
playsound(loc,'sound/blank.ogg', 200, FALSE, 50, TRUE, TRUE)
- addtimer(CALLBACK(src, .proc/collapse), 50)
+ addtimer(CALLBACK(src, PROC_REF(collapse)), 50)
/obj/effect/collapse/Destroy()
QDEL_NULL(emitted_light)
diff --git a/code/game/objects/structures/life_candle.dm b/code/game/objects/structures/life_candle.dm
index fa034f0302..361b987d32 100644
--- a/code/game/objects/structures/life_candle.dm
+++ b/code/game/objects/structures/life_candle.dm
@@ -67,7 +67,7 @@
for(var/m in linked_minds)
var/datum/mind/mind = m
if(!mind.current || (mind.current && mind.current.stat == DEAD))
- addtimer(CALLBACK(src, .proc/respawn, mind), respawn_time, TIMER_UNIQUE)
+ addtimer(CALLBACK(src, PROC_REF(respawn), mind), respawn_time, TIMER_UNIQUE)
/obj/structure/life_candle/proc/respawn(datum/mind/mind)
var/turf/T = get_turf(src)
diff --git a/code/game/objects/structures/manned_turret.dm b/code/game/objects/structures/manned_turret.dm
index 7c631ccd48..e96a146fed 100644
--- a/code/game/objects/structures/manned_turret.dm
+++ b/code/game/objects/structures/manned_turret.dm
@@ -142,7 +142,7 @@
/obj/machinery/manned_turret/proc/volley(mob/user)
target_turf = get_turf(target)
for(var/i in 1 to number_of_shots)
- addtimer(CALLBACK(src, /obj/machinery/manned_turret/.proc/fire_helper, user), i*rate_of_fire)
+ addtimer(CALLBACK(src, TYPE_PROC_REF(/obj/machinery/manned_turret, fire_helper), user), i*rate_of_fire)
/obj/machinery/manned_turret/proc/fire_helper(mob/user)
if(user.incapacitated() || !(user in buckled_mobs))
diff --git a/code/game/objects/structures/mineral_doors.dm b/code/game/objects/structures/mineral_doors.dm
index be6a2ff43f..cd9f9a2686 100644
--- a/code/game/objects/structures/mineral_doors.dm
+++ b/code/game/objects/structures/mineral_doors.dm
@@ -91,7 +91,7 @@
isSwitchingStates = FALSE
if(close_delay != -1)
- addtimer(CALLBACK(src, .proc/Close), close_delay)
+ addtimer(CALLBACK(src, PROC_REF(Close)), close_delay)
/obj/structure/mineral_door/proc/force_closed()
isSwitchingStates = TRUE
@@ -162,9 +162,9 @@
if(isliving(AM))
var/mob/living/M = AM
if(M.m_intent == MOVE_INTENT_SNEAK)
- addtimer(CALLBACK(src, .proc/Close, TRUE), 25)
+ addtimer(CALLBACK(src, PROC_REF(Close), TRUE), 25)
else
- addtimer(CALLBACK(src, .proc/Close, FALSE), 25)
+ addtimer(CALLBACK(src, PROC_REF(Close), FALSE), 25)
/obj/structure/mineral_door/attack_ai(mob/user) //those aren't machinery, they're just big fucking slabs of a mineral
if(isAI(user)) //so the AI can't open it
@@ -246,7 +246,7 @@
isSwitchingStates = FALSE
if(close_delay != -1)
- addtimer(CALLBACK(src, .proc/Close), close_delay)
+ addtimer(CALLBACK(src, PROC_REF(Close)), close_delay)
/obj/structure/mineral_door/proc/Close(silent = FALSE)
if(isSwitchingStates || !door_opened)
diff --git a/code/game/objects/structures/musician.dm b/code/game/objects/structures/musician.dm
index 94b20a8f2b..ead9dc932d 100644
--- a/code/game/objects/structures/musician.dm
+++ b/code/game/objects/structures/musician.dm
@@ -268,7 +268,7 @@
else if(href_list["play"])
playing = TRUE
- INVOKE_ASYNC(src, .proc/playsong, usr)
+ INVOKE_ASYNC(src, PROC_REF(playsong), usr)
else if(href_list["newline"])
var/newline = html_encode(input("Enter your line: ", instrumentObj.name) as text|null)
diff --git a/code/game/objects/structures/plasticflaps.dm b/code/game/objects/structures/plasticflaps.dm
index 5beda6c2a0..446fa7f241 100644
--- a/code/game/objects/structures/plasticflaps.dm
+++ b/code/game/objects/structures/plasticflaps.dm
@@ -31,7 +31,7 @@
var/action = anchored ? "unscrews [src] from" : "screws [src] to"
var/uraction = anchored ? "unscrew [src] from " : "screw [src] to"
user.visible_message("
[user] [action] the floor.", "
I start to [uraction] the floor...", "
I hear rustling noises.")
- if(W.use_tool(src, user, 100, volume=100, extra_checks = CALLBACK(src, .proc/check_anchored_state, anchored)))
+ if(W.use_tool(src, user, 100, volume=100, extra_checks = CALLBACK(src, PROC_REF(check_anchored_state), anchored)))
setAnchored(!anchored)
to_chat(user, "
I [anchored ? "unscrew" : "screw"] [src] from the floor.")
return TRUE
diff --git a/code/game/objects/structures/roguetown/handcart.dm b/code/game/objects/structures/roguetown/handcart.dm
index 5ac8a995bf..2f426d22e9 100644
--- a/code/game/objects/structures/roguetown/handcart.dm
+++ b/code/game/objects/structures/roguetown/handcart.dm
@@ -84,7 +84,7 @@
/obj/structure/handcart/Initialize(mapload)
if(mapload) // if closed, any item at the crate's loc is put in the contents
- addtimer(CALLBACK(src, .proc/take_contents), 0)
+ addtimer(CALLBACK(src, PROC_REF(take_contents)), 0)
. = ..()
update_icon()
diff --git a/code/game/objects/structures/roguetown/rogueflora.dm b/code/game/objects/structures/roguetown/rogueflora.dm
index a25c330810..acc6f0d4f1 100644
--- a/code/game/objects/structures/roguetown/rogueflora.dm
+++ b/code/game/objects/structures/roguetown/rogueflora.dm
@@ -225,7 +225,7 @@
dir = pick(GLOB.cardinals)
/datum/component/roguegrass/Initialize()
- RegisterSignal(parent, list(COMSIG_MOVABLE_CROSSED), .proc/Crossed)
+ RegisterSignal(parent, list(COMSIG_MOVABLE_CROSSED), PROC_REF(Crossed))
/datum/component/roguegrass/proc/Crossed(datum/source, atom/movable/AM)
var/atom/A = parent
diff --git a/code/game/objects/structures/shower.dm b/code/game/objects/structures/shower.dm
index 9537cfe8a9..599fce0323 100644
--- a/code/game/objects/structures/shower.dm
+++ b/code/game/objects/structures/shower.dm
@@ -77,10 +77,10 @@
// If there was already mist, and the shower was turned off (or made cold): remove the existing mist in 25 sec
var/obj/effect/mist/mist = locate() in loc
if(!mist && on && current_temperature != SHOWER_FREEZING)
- addtimer(CALLBACK(src, .proc/make_mist), 5 SECONDS)
+ addtimer(CALLBACK(src, PROC_REF(make_mist)), 5 SECONDS)
if(mist && (!on || current_temperature == SHOWER_FREEZING))
- addtimer(CALLBACK(src, .proc/clear_mist), 25 SECONDS)
+ addtimer(CALLBACK(src, PROC_REF(clear_mist)), 25 SECONDS)
/obj/machinery/shower/proc/make_mist()
var/obj/effect/mist/mist = locate() in loc
diff --git a/code/game/objects/structures/statues.dm b/code/game/objects/structures/statues.dm
index 2dfe9c2aba..b6d315f95d 100644
--- a/code/game/objects/structures/statues.dm
+++ b/code/game/objects/structures/statues.dm
@@ -15,7 +15,7 @@
/obj/structure/statue/Initialize()
. = ..()
AddComponent(art_type, impressiveness)
- addtimer(CALLBACK(src, /datum.proc/AddComponent, /datum/component/beauty, impressiveness * 75), 0)
+ addtimer(CALLBACK(src, TYPE_PROC_REF(/datum, AddComponent), /datum/component/beauty, impressiveness * 75), 0)
/obj/structure/statue/attackby(obj/item/W, mob/living/user, params)
add_fingerprint(user)
diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm
index 9d5d4fd473..a7a2cf3236 100644
--- a/code/game/objects/structures/tables_racks.dm
+++ b/code/game/objects/structures/tables_racks.dm
@@ -257,7 +257,7 @@
return
// Don't break if they're just flying past
if(AM.throwing)
- addtimer(CALLBACK(src, .proc/throw_check, AM), 5)
+ addtimer(CALLBACK(src, PROC_REF(throw_check), AM), 5)
else
check_break(AM)
diff --git a/code/game/objects/structures/transit_tubes/transit_tube_construction.dm b/code/game/objects/structures/transit_tubes/transit_tube_construction.dm
index d7bcb884c8..2948fb40ef 100644
--- a/code/game/objects/structures/transit_tubes/transit_tube_construction.dm
+++ b/code/game/objects/structures/transit_tubes/transit_tube_construction.dm
@@ -27,7 +27,7 @@
/obj/structure/c_transit_tube/ComponentInitialize()
. = ..()
- AddComponent(/datum/component/simple_rotation,ROTATION_ALTCLICK | ROTATION_CLOCKWISE | ROTATION_FLIP | ROTATION_VERBS,null,null,CALLBACK(src,.proc/after_rot))
+ AddComponent(/datum/component/simple_rotation,ROTATION_ALTCLICK | ROTATION_CLOCKWISE | ROTATION_FLIP | ROTATION_VERBS,null,null,CALLBACK(src,PROC_REF(after_rot)))
/obj/structure/c_transit_tube/proc/after_rot(mob/user,rotation_type)
if(flipped_build_type && rotation_type == ROTATION_FLIP)
@@ -46,7 +46,7 @@
return
to_chat(user, "
I start attaching the [name]...")
add_fingerprint(user)
- if(I.use_tool(src, user, time_to_unwrench, volume=50, extra_checks=CALLBACK(src, .proc/can_wrench_in_loc, user)))
+ if(I.use_tool(src, user, time_to_unwrench, volume=50, extra_checks=CALLBACK(src, PROC_REF(can_wrench_in_loc), user)))
to_chat(user, "
I attach the [name].")
var/obj/structure/transit_tube/R = new build_type(loc, dir)
transfer_fingerprints_to(R)
diff --git a/code/game/objects/structures/windoor_assembly.dm b/code/game/objects/structures/windoor_assembly.dm
index 58f99eb491..af165f20d3 100644
--- a/code/game/objects/structures/windoor_assembly.dm
+++ b/code/game/objects/structures/windoor_assembly.dm
@@ -319,8 +319,8 @@
/datum/component/simple_rotation,
ROTATION_ALTCLICK | ROTATION_CLOCKWISE | ROTATION_COUNTERCLOCKWISE | ROTATION_VERBS,
null,
- CALLBACK(src, .proc/can_be_rotated),
- CALLBACK(src,.proc/after_rotation)
+ CALLBACK(src, PROC_REF(can_be_rotated)),
+ CALLBACK(src,PROC_REF(after_rotation))
)
/obj/structure/windoor_assembly/proc/can_be_rotated(mob/user,rotation_type)
diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm
index 6b6bb024ae..57e5695f19 100644
--- a/code/game/objects/structures/window.dm
+++ b/code/game/objects/structures/window.dm
@@ -65,7 +65,7 @@
/obj/structure/window/ComponentInitialize()
. = ..()
- AddComponent(/datum/component/simple_rotation,ROTATION_ALTCLICK | ROTATION_CLOCKWISE | ROTATION_COUNTERCLOCKWISE | ROTATION_VERBS ,null,CALLBACK(src, .proc/can_be_rotated),CALLBACK(src,.proc/after_rotation))
+ AddComponent(/datum/component/simple_rotation,ROTATION_ALTCLICK | ROTATION_CLOCKWISE | ROTATION_COUNTERCLOCKWISE | ROTATION_VERBS ,null,CALLBACK(src, PROC_REF(can_be_rotated)),CALLBACK(src,PROC_REF(after_rotation)))
/obj/structure/window/rcd_vals(mob/user, obj/item/construction/rcd/the_rcd)
switch(the_rcd.mode)
@@ -175,13 +175,13 @@
if(!(flags_1&NODECONSTRUCT_1) && !(reinf && state >= RWINDOW_FRAME_BOLTED))
if(I.tool_behaviour == TOOL_SCREWDRIVER)
to_chat(user, "
I begin to [anchored ? "unscrew the window from":"screw the window to"] the floor...")
- if(I.use_tool(src, user, decon_speed, volume = 75, extra_checks = CALLBACK(src, .proc/check_anchored, anchored)))
+ if(I.use_tool(src, user, decon_speed, volume = 75, extra_checks = CALLBACK(src, PROC_REF(check_anchored), anchored)))
setAnchored(!anchored)
to_chat(user, "
I [anchored ? "fasten the window to":"unfasten the window from"] the floor.")
return
else if(I.tool_behaviour == TOOL_WRENCH && !anchored)
to_chat(user, "
I begin to disassemble [src]...")
- if(I.use_tool(src, user, decon_speed, volume = 75, extra_checks = CALLBACK(src, .proc/check_state_and_anchored, state, anchored)))
+ if(I.use_tool(src, user, decon_speed, volume = 75, extra_checks = CALLBACK(src, PROC_REF(check_state_and_anchored), state, anchored)))
var/obj/item/stack/sheet/G = new glass_type(user.loc, glass_amount)
G.add_fingerprint(user)
playsound(src, 'sound/blank.ogg', 50, TRUE)
@@ -190,7 +190,7 @@
return
else if(I.tool_behaviour == TOOL_CROWBAR && reinf && (state == WINDOW_OUT_OF_FRAME) && anchored)
to_chat(user, "
I begin to lever the window into the frame...")
- if(I.use_tool(src, user, 100, volume = 75, extra_checks = CALLBACK(src, .proc/check_state_and_anchored, state, anchored)))
+ if(I.use_tool(src, user, 100, volume = 75, extra_checks = CALLBACK(src, PROC_REF(check_state_and_anchored), state, anchored)))
state = RWINDOW_SECURE
to_chat(user, "
I pry the window into the frame.")
return
@@ -378,7 +378,7 @@
if(I.use_tool(src, user, 150, volume = 100))
to_chat(user, "
The security bolts are glowing white hot and look ready to be removed.")
state = RWINDOW_BOLTS_HEATED
- addtimer(CALLBACK(src, .proc/cool_bolts), 300)
+ addtimer(CALLBACK(src, PROC_REF(cool_bolts)), 300)
return
if(RWINDOW_BOLTS_HEATED)
if(I.tool_behaviour == TOOL_SCREWDRIVER)
@@ -503,7 +503,7 @@
if(I.use_tool(src, user, 180, volume = 100))
to_chat(user, "
The security screws are glowing white hot and look ready to be removed.")
state = RWINDOW_BOLTS_HEATED
- addtimer(CALLBACK(src, .proc/cool_bolts), 300)
+ addtimer(CALLBACK(src, PROC_REF(cool_bolts)), 300)
return
if(RWINDOW_BOLTS_HEATED)
if(I.tool_behaviour == TOOL_SCREWDRIVER)
diff --git a/code/game/turfs/closed/_closed.dm b/code/game/turfs/closed/_closed.dm
index 272c66a698..450981883e 100644
--- a/code/game/turfs/closed/_closed.dm
+++ b/code/game/turfs/closed/_closed.dm
@@ -92,7 +92,7 @@
H.toggle_rogmove_intent(MOVE_INTENT_WALK, TRUE)
playsound(src, "genblunt", 100, TRUE)
H.visible_message("
[H] runs into [src]!", "
I run into [src]!")
- addtimer(CALLBACK(H, /mob/living/carbon/human/.proc/Knockdown, 10), 10)
+ addtimer(CALLBACK(H, TYPE_PROC_REF(/mob/living/carbon/human, Knockdown), 10), 10)
/turf/closed/Initialize()
. = ..()
diff --git a/code/game/turfs/closed/minerals.dm b/code/game/turfs/closed/minerals.dm
index bb688e50c8..96db8e4c9a 100644
--- a/code/game/turfs/closed/minerals.dm
+++ b/code/game/turfs/closed/minerals.dm
@@ -94,7 +94,7 @@
if(defer_change) // TODO: make the defer change var a var for any changeturf flag
flags = CHANGETURF_DEFER_CHANGE
ScrapeAway(null, flags)
- addtimer(CALLBACK(src, .proc/AfterChange), 1, TIMER_UNIQUE)
+ addtimer(CALLBACK(src, PROC_REF(AfterChange)), 1, TIMER_UNIQUE)
// playsound(src, 'sound/blank.ogg', 100, TRUE) //beautiful destruction
/turf/closed/mineral/attack_animal(mob/living/simple_animal/user)
@@ -527,7 +527,7 @@
if(defer_change)
flags = CHANGETURF_DEFER_CHANGE
ScrapeAway(null, flags)
- addtimer(CALLBACK(src, .proc/AfterChange), 1, TIMER_UNIQUE)
+ addtimer(CALLBACK(src, PROC_REF(AfterChange)), 1, TIMER_UNIQUE)
/turf/closed/mineral/gibtonite/volcanic
@@ -564,7 +564,7 @@
if(defer_change) // TODO: make the defer change var a var for any changeturf flag
flags = CHANGETURF_DEFER_CHANGE
ScrapeAway(flags=flags)
- addtimer(CALLBACK(src, .proc/AfterChange), 1, TIMER_UNIQUE)
+ addtimer(CALLBACK(src, PROC_REF(AfterChange)), 1, TIMER_UNIQUE)
playsound(src, 'sound/blank.ogg', 50, TRUE) //beautiful destruction
/turf/closed/mineral/strong/proc/drop_ores()
diff --git a/code/game/turfs/open/_open.dm b/code/game/turfs/open/_open.dm
index 8cd0af72c7..c1f9c721b3 100644
--- a/code/game/turfs/open/_open.dm
+++ b/code/game/turfs/open/_open.dm
@@ -239,7 +239,7 @@
lube |= SLIDE_ICE
if(lube&SLIDE)
- new /datum/forced_movement(C, get_ranged_target_turf(C, olddir, 4), 1, FALSE, CALLBACK(C, /mob/living/carbon/.proc/spin, 1, 1))
+ new /datum/forced_movement(C, get_ranged_target_turf(C, olddir, 4), 1, FALSE, CALLBACK(C, TYPE_PROC_REF(/mob/living/carbon, spin), 1, 1))
else if(lube&SLIDE_ICE)
if(C.force_moving) //If we're already slipping extend it
qdel(C.force_moving)
diff --git a/code/game/turfs/open/water.dm b/code/game/turfs/open/water.dm
index 6f77151771..de6c822612 100644
--- a/code/game/turfs/open/water.dm
+++ b/code/game/turfs/open/water.dm
@@ -85,7 +85,7 @@
drained += 40
if(!user.rogfat_add(drained))
user.Immobilize(30)
- addtimer(CALLBACK(user, /mob/living/.proc/Knockdown, 30), 10)
+ addtimer(CALLBACK(user, TYPE_PROC_REF(/mob/living, Knockdown), 30), 10)
/turf/open/water/hitby(atom/movable/AM, skipcatch, hitpush, blocked, datum/thrownthing/throwingdatum)
..()
@@ -360,7 +360,7 @@
. = ..()
if(isliving(AM))
if(!river_processing)
- river_processing = addtimer(CALLBACK(src, .proc/process_river), 5, TIMER_STOPPABLE)
+ river_processing = addtimer(CALLBACK(src, PROC_REF(process_river)), 5, TIMER_STOPPABLE)
/turf/open/water/river/proc/process_river()
river_processing = null
diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm
index 3453bfddee..e1bc7a8b05 100644
--- a/code/game/turfs/turf.dm
+++ b/code/game/turfs/turf.dm
@@ -487,7 +487,7 @@
var/list/things = src_object.contents()
var/datum/progressbar/progress = new(user, things.len, src)
- while (do_after(usr, 10, TRUE, src, FALSE, CALLBACK(src_object, /datum/component/storage.proc/mass_remove_from_storage, src, things, progress)))
+ while (do_after(usr, 10, TRUE, src, FALSE, CALLBACK(src_object, TYPE_PROC_REF(/datum/component/storage, mass_remove_from_storage), src, things, progress)))
stoplag(1)
qdel(progress)
diff --git a/code/game/world.dm b/code/game/world.dm
index 48fedc419b..7d226994ab 100644
--- a/code/game/world.dm
+++ b/code/game/world.dm
@@ -93,11 +93,11 @@ GLOBAL_VAR(restart_counter)
CONFIG_SET(number/round_end_countdown, 0)
var/datum/callback/cb
#ifdef UNIT_TESTS
- cb = CALLBACK(GLOBAL_PROC, /proc/RunUnitTests)
+ cb = CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(RunUnitTests))
#else
cb = VARSET_CALLBACK(SSticker, force_ending, TRUE)
#endif
- SSticker.OnRoundstart(CALLBACK(GLOBAL_PROC, /proc/addtimer, cb, 10 SECONDS))
+ SSticker.OnRoundstart(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(addtimer), cb, 10 SECONDS))
/world/proc/SetupExternalRSC()
#if (PRELOAD_RSC == 0)
diff --git a/code/modules/admin/IsBanned.dm b/code/modules/admin/IsBanned.dm
index 887ae067a7..a8ce0e9393 100644
--- a/code/modules/admin/IsBanned.dm
+++ b/code/modules/admin/IsBanned.dm
@@ -140,7 +140,7 @@ GLOBAL_VAR(last_connection)
return
GLOB.stickybanadminexemptions[ckey] = world.time
stoplag() // sleep a byond tick
- GLOB.stickbanadminexemptiontimerid = addtimer(CALLBACK(GLOBAL_PROC, /proc/restore_stickybans), 5 SECONDS, TIMER_STOPPABLE|TIMER_UNIQUE|TIMER_OVERRIDE)
+ GLOB.stickbanadminexemptiontimerid = addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(restore_stickybans)), 5 SECONDS, TIMER_STOPPABLE|TIMER_UNIQUE|TIMER_OVERRIDE)
return
var/list/ban = ..() //default pager ban stuff
diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm
index 02b6166e25..5fced841b3 100644
--- a/code/modules/admin/admin_verbs.dm
+++ b/code/modules/admin/admin_verbs.dm
@@ -192,7 +192,7 @@ GLOBAL_PROTECT(admin_verbs_debug)
/client/proc/returntolobby,
/client/proc/set_tod_override
)
-GLOBAL_LIST_INIT(admin_verbs_possess, list(/proc/possess, /proc/release))
+GLOBAL_LIST_INIT(admin_verbs_possess, list(/proc/possess, GLOBAL_PROC_REF(release)))
GLOBAL_PROTECT(admin_verbs_possess)
GLOBAL_LIST_INIT(admin_verbs_permissions, list(/client/proc/edit_admin_permissions))
GLOBAL_PROTECT(admin_verbs_permissions)
@@ -642,7 +642,7 @@ GLOBAL_PROTECT(admin_verbs_hideable)
if(!istype(T))
to_chat(src, "
I can only give a disease to a mob of type /mob/living.")
return
- var/datum/disease/D = input("Choose the disease to give to that guy", "ACHOO") as null|anything in sortList(SSdisease.diseases, /proc/cmp_typepaths_asc)
+ var/datum/disease/D = input("Choose the disease to give to that guy", "ACHOO") as null|anything in sortList(SSdisease.diseases, GLOBAL_PROC_REF(cmp_typepaths_asc))
if(!D)
return
T.ForceContractDisease(new D, FALSE, TRUE)
diff --git a/code/modules/admin/check_antagonists.dm b/code/modules/admin/check_antagonists.dm
index 4d230fe26f..b6e984094a 100644
--- a/code/modules/admin/check_antagonists.dm
+++ b/code/modules/admin/check_antagonists.dm
@@ -106,7 +106,7 @@
else
sections += T.antag_listing_entry()
- sortTim(all_antagonists, /proc/cmp_antag_category)
+ sortTim(all_antagonists, GLOBAL_PROC_REF(cmp_antag_category))
var/current_category
var/list/current_section = list()
diff --git a/code/modules/admin/create_object.dm b/code/modules/admin/create_object.dm
index 00f642c794..dba9c3da15 100644
--- a/code/modules/admin/create_object.dm
+++ b/code/modules/admin/create_object.dm
@@ -19,7 +19,7 @@
/obj/item, /obj/item/clothing, /obj/item/stack, /obj/item,
/obj/item/reagent_containers, /obj/item/gun)
- var/path = input("Select the path of the object you wish to create.", "Path", /obj) in sortList(create_object_forms, /proc/cmp_typepaths_asc)
+ var/path = input("Select the path of the object you wish to create.", "Path", /obj) in sortList(create_object_forms, GLOBAL_PROC_REF(cmp_typepaths_asc))
var/html_form = create_object_forms[path]
if (!html_form)
diff --git a/code/modules/admin/fun_balloon.dm b/code/modules/admin/fun_balloon.dm
index 5612d8bd89..f4b9fa1395 100644
--- a/code/modules/admin/fun_balloon.dm
+++ b/code/modules/admin/fun_balloon.dm
@@ -158,7 +158,7 @@
var/mob/living/M = AM
M.forceMove(get_turf(LA))
to_chat(M, "
You're trapped in a deadly arena! To escape, you'll need to drag a severed head to the escape portals.")
- INVOKE_ASYNC(src, .proc/do_bloodbath, M)
+ INVOKE_ASYNC(src, PROC_REF(do_bloodbath), M)
/obj/effect/forcefield/arena_shuttle_entrance/proc/do_bloodbath(mob/living/L)
var/obj/effect/mine/pickup/bloodbath/B = new (L)
diff --git a/code/modules/admin/patdiscord.dm b/code/modules/admin/patdiscord.dm
index 3e15849614..73033f7429 100644
--- a/code/modules/admin/patdiscord.dm
+++ b/code/modules/admin/patdiscord.dm
@@ -34,7 +34,7 @@
to_chat(src, "
Registration cancelled.")
return
to_chat(src, "
Registering [namey], please wait....")
- addtimer(CALLBACK(src, .proc/discordtimeout), 5 SECONDS, TIMER_STOPPABLE)
+ addtimer(CALLBACK(src, PROC_REF(discordtimeout)), 5 SECONDS, TIMER_STOPPABLE)
*/
/mob/dead/new_player/proc/discordtimeout()
diff --git a/code/modules/admin/secrets.dm b/code/modules/admin/secrets.dm
index be37b27589..dead5c41ad 100644
--- a/code/modules/admin/secrets.dm
+++ b/code/modules/admin/secrets.dm
@@ -286,7 +286,7 @@
SSblackbox.record_feedback("nested tally", "admin_secrets_fun_used", 1, list("Monkeyize All Humans"))
for(var/i in GLOB.human_list)
var/mob/living/carbon/human/H = i
- INVOKE_ASYNC(H, /mob/living/carbon.proc/monkeyize)
+ INVOKE_ASYNC(H, TYPE_PROC_REF(/mob/living/carbon, monkeyize))
ok = 1
if("allspecies")
@@ -442,7 +442,7 @@
var/datum/round_event_control/disease_outbreak/DC = locate(/datum/round_event_control/disease_outbreak) in SSevents.control
E = DC.runEvent()
if("Choose")
- var/virus = input("Choose the virus to spread", "BIOHAZARD") as null|anything in sortList(typesof(/datum/disease, /proc/cmp_typepaths_asc))
+ var/virus = input("Choose the virus to spread", "BIOHAZARD") as null|anything in sortList(typesof(/datum/disease, GLOBAL_PROC_REF(cmp_typepaths_asc)))
var/datum/round_event_control/disease_outbreak/DC = locate(/datum/round_event_control/disease_outbreak) in SSevents.control
var/datum/round_event/disease_outbreak/DO = DC.runEvent()
DO.virus_type = virus
@@ -662,9 +662,9 @@
var/ghostcandidates = list()
for (var/j in 1 to min(prefs["amount"]["value"], length(candidates)))
ghostcandidates += pick_n_take(candidates)
- addtimer(CALLBACK(GLOBAL_PROC, .proc/doPortalSpawn, get_random_station_turf(), pathToSpawn, length(ghostcandidates), storm, ghostcandidates, outfit), i*prefs["delay"]["value"])
+ addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(doPortalSpawn), get_random_station_turf(), pathToSpawn, length(ghostcandidates), storm, ghostcandidates, outfit), i*prefs["delay"]["value"])
else if (prefs["playersonly"]["value"] != "Yes")
- addtimer(CALLBACK(GLOBAL_PROC, .proc/doPortalSpawn, get_random_station_turf(), pathToSpawn, prefs["amount"]["value"], storm, null, outfit), i*prefs["delay"]["value"])
+ addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(doPortalSpawn), get_random_station_turf(), pathToSpawn, prefs["amount"]["value"], storm, null, outfit), i*prefs["delay"]["value"])
if(E)
E.processing = FALSE
diff --git a/code/modules/admin/team_panel.dm b/code/modules/admin/team_panel.dm
index 6e2987486b..82654a31fe 100644
--- a/code/modules/admin/team_panel.dm
+++ b/code/modules/admin/team_panel.dm
@@ -164,7 +164,7 @@
/datum/team/custom/get_admin_commands()
. = ..()
- .["Force HUD"] = CALLBACK(src,.proc/admin_force_hud)
+ .["Force HUD"] = CALLBACK(src,PROC_REF(admin_force_hud))
//This is here if you want admin created teams to tell each other apart easily.
/datum/team/custom/proc/admin_force_hud(mob/user)
diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm
index e24162c329..f973a2feea 100644
--- a/code/modules/admin/topic.dm
+++ b/code/modules/admin/topic.dm
@@ -1039,7 +1039,7 @@
L.Unconscious(100)
sleep(5)
L.forceMove(pick(GLOB.tdome1))
- addtimer(CALLBACK(GLOBAL_PROC, /proc/to_chat, L, "
I have been sent to the Thunderdome."), 5 SECONDS)
+ addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(to_chat), L, "
I have been sent to the Thunderdome."), 5 SECONDS)
log_admin("[key_name(usr)] has sent [key_name(L)] to the thunderdome. (Team 1)")
message_admins("[key_name_admin(usr)] has sent [key_name_admin(L)] to the thunderdome. (Team 1)")
@@ -1065,7 +1065,7 @@
L.Unconscious(100)
sleep(5)
L.forceMove(pick(GLOB.tdome2))
- addtimer(CALLBACK(GLOBAL_PROC, /proc/to_chat, L, "
I have been sent to the Thunderdome."), 5 SECONDS)
+ addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(to_chat), L, "
I have been sent to the Thunderdome."), 5 SECONDS)
log_admin("[key_name(usr)] has sent [key_name(L)] to the thunderdome. (Team 2)")
message_admins("[key_name_admin(usr)] has sent [key_name_admin(L)] to the thunderdome. (Team 2)")
@@ -1088,7 +1088,7 @@
L.Unconscious(100)
sleep(5)
L.forceMove(pick(GLOB.tdomeadmin))
- addtimer(CALLBACK(GLOBAL_PROC, /proc/to_chat, L, "
I have been sent to the Thunderdome."), 5 SECONDS)
+ addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(to_chat), L, "
I have been sent to the Thunderdome."), 5 SECONDS)
log_admin("[key_name(usr)] has sent [key_name(L)] to the thunderdome. (Admin.)")
message_admins("[key_name_admin(usr)] has sent [key_name_admin(L)] to the thunderdome. (Admin.)")
@@ -1118,7 +1118,7 @@
L.Unconscious(100)
sleep(5)
L.forceMove(pick(GLOB.tdomeobserve))
- addtimer(CALLBACK(GLOBAL_PROC, /proc/to_chat, L, "
I have been sent to the Thunderdome."), 5 SECONDS)
+ addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(to_chat), L, "
I have been sent to the Thunderdome."), 5 SECONDS)
log_admin("[key_name(usr)] has sent [key_name(L)] to the thunderdome. (Observer.)")
message_admins("[key_name_admin(usr)] has sent [key_name_admin(L)] to the thunderdome. (Observer.)")
diff --git a/code/modules/admin/verbs/SDQL2/SDQL_2.dm b/code/modules/admin/verbs/SDQL2/SDQL_2.dm
index d2c1b1a9db..5b19481f44 100644
--- a/code/modules/admin/verbs/SDQL2/SDQL_2.dm
+++ b/code/modules/admin/verbs/SDQL2/SDQL_2.dm
@@ -488,7 +488,7 @@ GLOBAL_DATUM_INIT(sdql2_vv_statobj, /obj/effect/statclick/SDQL2_VV_all, new(null
ENABLE_BITFIELD(options,SDQL2_OPTION_SEQUENTIAL)
/datum/SDQL2_query/proc/ARun()
- INVOKE_ASYNC(src, .proc/Run)
+ INVOKE_ASYNC(src, PROC_REF(Run))
/datum/SDQL2_query/proc/Run()
if(SDQL2_IS_RUNNING)
diff --git a/code/modules/admin/verbs/adminhelp.dm b/code/modules/admin/verbs/adminhelp.dm
index 06ac0700e5..e1c79e1a1d 100644
--- a/code/modules/admin/verbs/adminhelp.dm
+++ b/code/modules/admin/verbs/adminhelp.dm
@@ -227,7 +227,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new)
//Removes the ahelp verb and returns it after 2 minutes
/datum/admin_help/proc/TimeoutVerb()
initiator.verbs -= /client/verb/adminhelp
- initiator.adminhelptimerid = addtimer(CALLBACK(initiator, /client/proc/giveadminhelpverb), 1200, TIMER_STOPPABLE) //2 minute cooldown of admin helps
+ initiator.adminhelptimerid = addtimer(CALLBACK(initiator, TYPE_PROC_REF(/client, giveadminhelpverb)), 1200, TIMER_STOPPABLE) //2 minute cooldown of admin helps
//private
/datum/admin_help/proc/FullMonty(ref_src)
@@ -343,7 +343,7 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new)
state = AHELP_RESOLVED
GLOB.ahelp_tickets.ListInsert(src)
- addtimer(CALLBACK(initiator, /client/proc/giveadminhelpverb), 50)
+ addtimer(CALLBACK(initiator, TYPE_PROC_REF(/client, giveadminhelpverb)), 50)
AddInteraction("
Resolved by [key_name].")
to_chat(initiator, "
Your ticket has been resolved by [usr?.client?.holder?.fakekey? usr.client.holder.fakekey : "an administrator"]. The Adminhelp verb will be returned to you shortly.")
diff --git a/code/modules/admin/verbs/adminpm.dm b/code/modules/admin/verbs/adminpm.dm
index ad4e5c3a89..def33ac902 100644
--- a/code/modules/admin/verbs/adminpm.dm
+++ b/code/modules/admin/verbs/adminpm.dm
@@ -188,7 +188,7 @@
//AdminPM popup for ApocStation and anybody else who wants to use it. Set it with POPUP_ADMIN_PM in config.txt ~Carn
if(CONFIG_GET(flag/popup_admin_pm))
- INVOKE_ASYNC(src, .proc/popup_admin_pm, recipient, msg)
+ INVOKE_ASYNC(src, PROC_REF(popup_admin_pm), recipient, msg)
else //neither are admins
to_chat(src, "
Error: Admin-PM: Non-admin to non-admin PM communication is forbidden.")
diff --git a/code/modules/admin/verbs/cinematic.dm b/code/modules/admin/verbs/cinematic.dm
index 2a05595dbb..03123ef888 100644
--- a/code/modules/admin/verbs/cinematic.dm
+++ b/code/modules/admin/verbs/cinematic.dm
@@ -6,6 +6,6 @@
if(!SSticker)
return
- var/datum/cinematic/choice = input(src,"Cinematic","Choose",null) as anything in sortList(subtypesof(/datum/cinematic), /proc/cmp_typepaths_asc)
+ var/datum/cinematic/choice = input(src,"Cinematic","Choose",null) as anything in sortList(subtypesof(/datum/cinematic), GLOBAL_PROC_REF(cmp_typepaths_asc))
if(choice)
Cinematic(initial(choice.id),world,null)
diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm
index b75de544f8..6be7c2e844 100644
--- a/code/modules/admin/verbs/debug.dm
+++ b/code/modules/admin/verbs/debug.dm
@@ -47,7 +47,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
if(ishuman(M))
log_admin("[key_name(src)] has robotized [M.key].")
var/mob/living/carbon/human/H = M
- INVOKE_ASYNC(H, /mob/living/carbon/human.proc/Robotize)
+ INVOKE_ASYNC(H, TYPE_PROC_REF(/mob/living/carbon/human, Robotize))
else
alert("Invalid mob")
@@ -84,7 +84,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
return
log_admin("[key_name(src)] has animalized [M.key].")
- INVOKE_ASYNC(M, /mob.proc/Animalize)
+ INVOKE_ASYNC(M, TYPE_PROC_REF(/mob, Animalize))
/client/proc/makepAI(turf/T in GLOB.mob_list)
@@ -128,7 +128,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
alert("Wait until the game starts")
return
if(ishuman(M))
- INVOKE_ASYNC(M, /mob/living/carbon/human/proc/Alienize)
+ INVOKE_ASYNC(M, TYPE_PROC_REF(/mob/living/carbon/human, Alienize))
SSblackbox.record_feedback("tally", "admin_verb", 1, "Make Alien") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
log_admin("[key_name(usr)] made [key_name(M)] into an alien at [AREACOORD(M)].")
message_admins("
[key_name_admin(usr)] made [ADMIN_LOOKUPFLW(M)] into an alien.")
@@ -143,7 +143,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
alert("Wait until the game starts")
return
if(ishuman(M))
- INVOKE_ASYNC(M, /mob/living/carbon/human/proc/slimeize)
+ INVOKE_ASYNC(M, TYPE_PROC_REF(/mob/living/carbon/human, slimeize))
SSblackbox.record_feedback("tally", "admin_verb", 1, "Make Slime") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
log_admin("[key_name(usr)] made [key_name(M)] into a slime at [AREACOORD(M)].")
message_admins("
[key_name_admin(usr)] made [ADMIN_LOOKUPFLW(M)] into a slime.")
diff --git a/code/modules/admin/verbs/one_click_antag.dm b/code/modules/admin/verbs/one_click_antag.dm
index 8c91e3abfc..1df7b4c980 100644
--- a/code/modules/admin/verbs/one_click_antag.dm
+++ b/code/modules/admin/verbs/one_click_antag.dm
@@ -310,9 +310,9 @@
ertemplate = new /datum/ert/centcom_official
var/list/settings = list(
- "preview_callback" = CALLBACK(src, .proc/makeERTPreviewIcon),
+ "preview_callback" = CALLBACK(src, PROC_REF(makeERTPreviewIcon)),
"mainsettings" = list(
- "template" = list("desc" = "Template", "callback" = CALLBACK(src, .proc/makeERTTemplateModified), "type" = "datum", "path" = "/datum/ert", "subtypesonly" = TRUE, "value" = ertemplate.type),
+ "template" = list("desc" = "Template", "callback" = CALLBACK(src, PROC_REF(makeERTTemplateModified)), "type" = "datum", "path" = "/datum/ert", "subtypesonly" = TRUE, "value" = ertemplate.type),
"teamsize" = list("desc" = "Team Size", "type" = "number", "value" = ertemplate.teamsize),
"mission" = list("desc" = "Mission", "type" = "string", "value" = ertemplate.mission),
"polldesc" = list("desc" = "Ghost poll description", "type" = "string", "value" = ertemplate.polldesc),
diff --git a/code/modules/admin/verbs/onlyone.dm b/code/modules/admin/verbs/onlyone.dm
index 3fb1a389ce..64c38a3c55 100644
--- a/code/modules/admin/verbs/onlyone.dm
+++ b/code/modules/admin/verbs/onlyone.dm
@@ -19,13 +19,13 @@ GLOBAL_VAR_INIT(highlander, FALSE)
message_admins("
[key_name_admin(usr)] used THERE CAN BE ONLY ONE!")
log_admin("[key_name(usr)] used THERE CAN BE ONLY ONE.")
- addtimer(CALLBACK(SSshuttle.emergency, /obj/docking_port/mobile/emergency.proc/request, null, 1), 50)
+ addtimer(CALLBACK(SSshuttle.emergency, TYPE_PROC_REF(/obj/docking_port/mobile/emergency, request), null, 1), 50)
/client/proc/only_one_delayed()
send_to_playing_players("
Bagpipes begin to blare. You feel Scottish pride coming over you.")
message_admins("
[key_name_admin(usr)] used (delayed) THERE CAN BE ONLY ONE!")
log_admin("[key_name(usr)] used delayed THERE CAN BE ONLY ONE.")
- addtimer(CALLBACK(src, .proc/only_one), 420)
+ addtimer(CALLBACK(src, PROC_REF(only_one)), 420)
/mob/living/carbon/human/proc/make_scottish()
mind.add_antag_datum(/datum/antagonist/highlander)
diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm
index 1af29ae1f9..3ead57a445 100644
--- a/code/modules/admin/verbs/randomverbs.dm
+++ b/code/modules/admin/verbs/randomverbs.dm
@@ -890,7 +890,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
if(!holder)
return
- var/weather_type = input("Choose a weather", "Weather") as null|anything in sortList(subtypesof(/datum/weather), /proc/cmp_typepaths_asc)
+ var/weather_type = input("Choose a weather", "Weather") as null|anything in sortList(subtypesof(/datum/weather), GLOBAL_PROC_REF(cmp_typepaths_asc))
if(!weather_type)
return
diff --git a/code/modules/admin/view_variables/topic_basic.dm b/code/modules/admin/view_variables/topic_basic.dm
index 2a1d4c7a6f..973be814f1 100644
--- a/code/modules/admin/view_variables/topic_basic.dm
+++ b/code/modules/admin/view_variables/topic_basic.dm
@@ -51,11 +51,11 @@
if(!check_rights(NONE))
return
var/list/names = list()
- var/list/componentsubtypes = sortList(subtypesof(/datum/component), /proc/cmp_typepaths_asc)
+ var/list/componentsubtypes = sortList(subtypesof(/datum/component), GLOBAL_PROC_REF(cmp_typepaths_asc))
names += "---Components---"
names += componentsubtypes
names += "---Elements---"
- names += sortList(subtypesof(/datum/element), /proc/cmp_typepaths_asc)
+ names += sortList(subtypesof(/datum/element), GLOBAL_PROC_REF(cmp_typepaths_asc))
var/result = input(usr, "Choose a component/element to add","better know what ur fuckin doin pal") as null|anything in names
if(!usr || !result || result == "---Components---" || result == "---Elements---")
return
diff --git a/code/modules/antagonists/abductor/abductor.dm b/code/modules/antagonists/abductor/abductor.dm
index e62ad88776..d69352eb4e 100644
--- a/code/modules/antagonists/abductor/abductor.dm
+++ b/code/modules/antagonists/abductor/abductor.dm
@@ -107,7 +107,7 @@
/datum/antagonist/abductor/get_admin_commands()
. = ..()
- .["Equip"] = CALLBACK(src,.proc/admin_equip)
+ .["Equip"] = CALLBACK(src,PROC_REF(admin_equip))
/datum/antagonist/abductor/proc/admin_equip(mob/admin)
if(!ishuman(owner.current))
diff --git a/code/modules/antagonists/abductor/equipment/abduction_gear.dm b/code/modules/antagonists/abductor/equipment/abduction_gear.dm
index cd2b738102..7a87c86a71 100644
--- a/code/modules/antagonists/abductor/equipment/abduction_gear.dm
+++ b/code/modules/antagonists/abductor/equipment/abduction_gear.dm
@@ -660,7 +660,7 @@ Congratulations! You are now trained for invasive xenobiology research!"}
user.visible_message("
[user] places down [src] and activates it.", "
I place down [src] and activate it.")
user.dropItemToGround(src)
playsound(src, 'sound/blank.ogg', 50)
- addtimer(CALLBACK(src, .proc/try_spawn_machine), 30)
+ addtimer(CALLBACK(src, PROC_REF(try_spawn_machine)), 30)
/obj/item/abductor_machine_beacon/proc/try_spawn_machine()
var/viable = FALSE
diff --git a/code/modules/antagonists/abductor/equipment/gland.dm b/code/modules/antagonists/abductor/equipment/gland.dm
index 0f80befc7d..2f3a38eeda 100644
--- a/code/modules/antagonists/abductor/equipment/gland.dm
+++ b/code/modules/antagonists/abductor/equipment/gland.dm
@@ -61,7 +61,7 @@
update_gland_hud()
var/obj/screen/alert/mind_control/mind_alert = owner.throw_alert("mind_control", /obj/screen/alert/mind_control)
mind_alert.command = command
- addtimer(CALLBACK(src, .proc/clear_mind_control), mind_control_duration)
+ addtimer(CALLBACK(src, PROC_REF(clear_mind_control)), mind_control_duration)
return TRUE
/obj/item/organ/heart/gland/proc/clear_mind_control()
diff --git a/code/modules/antagonists/abductor/equipment/glands/access.dm b/code/modules/antagonists/abductor/equipment/glands/access.dm
index 6a66b2cc57..5f1bc7b349 100644
--- a/code/modules/antagonists/abductor/equipment/glands/access.dm
+++ b/code/modules/antagonists/abductor/equipment/glands/access.dm
@@ -9,7 +9,7 @@
/obj/item/organ/heart/gland/access/activate()
to_chat(owner, "
I feel like a VIP for some reason.")
- RegisterSignal(owner, COMSIG_MOB_ALLOWED, .proc/free_access)
+ RegisterSignal(owner, COMSIG_MOB_ALLOWED, PROC_REF(free_access))
/obj/item/organ/heart/gland/access/proc/free_access(datum/source, obj/O)
return TRUE
diff --git a/code/modules/antagonists/abductor/equipment/glands/electric.dm b/code/modules/antagonists/abductor/equipment/glands/electric.dm
index 302860bb7b..e82883229c 100644
--- a/code/modules/antagonists/abductor/equipment/glands/electric.dm
+++ b/code/modules/antagonists/abductor/equipment/glands/electric.dm
@@ -19,7 +19,7 @@
owner.visible_message("
[owner]'s skin starts emitting electric arcs!",\
"
I feel electric energy building up inside you!")
playsound(get_turf(owner), "sparks", 100, TRUE, -1)
- addtimer(CALLBACK(src, .proc/zap), rand(30, 100))
+ addtimer(CALLBACK(src, PROC_REF(zap)), rand(30, 100))
/obj/item/organ/heart/gland/electric/proc/zap()
tesla_zap(owner, 4, 8000, TESLA_MOB_DAMAGE | TESLA_OBJ_DAMAGE | TESLA_MOB_STUN)
diff --git a/code/modules/antagonists/abductor/equipment/glands/heal.dm b/code/modules/antagonists/abductor/equipment/glands/heal.dm
index d64f4b054d..5408bc3d3b 100644
--- a/code/modules/antagonists/abductor/equipment/glands/heal.dm
+++ b/code/modules/antagonists/abductor/equipment/glands/heal.dm
@@ -107,7 +107,7 @@
else
to_chat(owner, "
I feel a weird rumble behind my eye sockets...")
- addtimer(CALLBACK(src, .proc/finish_replace_eyes), rand(100, 200))
+ addtimer(CALLBACK(src, PROC_REF(finish_replace_eyes)), rand(100, 200))
/obj/item/organ/heart/gland/heal/proc/finish_replace_eyes()
var/eye_type = /obj/item/organ/eyes
@@ -125,7 +125,7 @@
else
to_chat(owner, "
I feel a weird tingle in my [parse_zone(body_zone)]... even if you don't have one.")
- addtimer(CALLBACK(src, .proc/finish_replace_limb, body_zone), rand(150, 300))
+ addtimer(CALLBACK(src, PROC_REF(finish_replace_limb), body_zone), rand(150, 300))
/obj/item/organ/heart/gland/heal/proc/finish_replace_limb(body_zone)
owner.visible_message("
With a loud snap, [owner]'s [parse_zone(body_zone)] rapidly grows back from [owner.p_their()] body!",
@@ -155,7 +155,7 @@
if(owner.reagents.has_reagent(R.type))
keep_going = TRUE
if(keep_going)
- addtimer(CALLBACK(src, .proc/keep_replacing_blood), 30)
+ addtimer(CALLBACK(src, PROC_REF(keep_replacing_blood)), 30)
/obj/item/organ/heart/gland/heal/proc/replace_chest(obj/item/bodypart/chest/chest)
if(chest.status == BODYPART_ROBOTIC)
diff --git a/code/modules/antagonists/abductor/equipment/glands/mindshock.dm b/code/modules/antagonists/abductor/equipment/glands/mindshock.dm
index 302eecce64..43164bbdb3 100644
--- a/code/modules/antagonists/abductor/equipment/glands/mindshock.dm
+++ b/code/modules/antagonists/abductor/equipment/glands/mindshock.dm
@@ -48,7 +48,7 @@
if(LAZYLEN(broadcasted_mobs))
active_mind_control = TRUE
- addtimer(CALLBACK(src, .proc/clear_mind_control), mind_control_duration)
+ addtimer(CALLBACK(src, PROC_REF(clear_mind_control)), mind_control_duration)
update_gland_hud()
return TRUE
diff --git a/code/modules/antagonists/abductor/equipment/glands/plasma.dm b/code/modules/antagonists/abductor/equipment/glands/plasma.dm
index bb16dfba92..9037b7de1d 100644
--- a/code/modules/antagonists/abductor/equipment/glands/plasma.dm
+++ b/code/modules/antagonists/abductor/equipment/glands/plasma.dm
@@ -9,8 +9,8 @@
/obj/item/organ/heart/gland/plasma/activate()
to_chat(owner, "
I feel bloated.")
- addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, owner, "
A massive stomachache overcomes you."), 150)
- addtimer(CALLBACK(src, .proc/vomit_plasma), 200)
+ addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(to_chat), owner, "
A massive stomachache overcomes you."), 150)
+ addtimer(CALLBACK(src, PROC_REF(vomit_plasma)), 200)
/obj/item/organ/heart/gland/plasma/proc/vomit_plasma()
if(!owner)
diff --git a/code/modules/antagonists/abductor/equipment/glands/quantum.dm b/code/modules/antagonists/abductor/equipment/glands/quantum.dm
index 8dfebb9fad..66cca1ecb0 100644
--- a/code/modules/antagonists/abductor/equipment/glands/quantum.dm
+++ b/code/modules/antagonists/abductor/equipment/glands/quantum.dm
@@ -15,7 +15,7 @@
if(!iscarbon(M))
continue
entangled_mob = M
- addtimer(CALLBACK(src, .proc/quantum_swap), rand(600, 2400))
+ addtimer(CALLBACK(src, PROC_REF(quantum_swap)), rand(600, 2400))
return
/obj/item/organ/heart/gland/quantum/proc/quantum_swap()
diff --git a/code/modules/antagonists/abductor/machinery/pad.dm b/code/modules/antagonists/abductor/machinery/pad.dm
index 3e57fe4b5c..d149a37676 100644
--- a/code/modules/antagonists/abductor/machinery/pad.dm
+++ b/code/modules/antagonists/abductor/machinery/pad.dm
@@ -31,7 +31,7 @@
/obj/machinery/abductor/pad/proc/MobToLoc(place,mob/living/target)
new /obj/effect/temp_visual/teleport_abductor(place)
- addtimer(CALLBACK(src, .proc/doMobToLoc, place, target), 80)
+ addtimer(CALLBACK(src, PROC_REF(doMobToLoc), place, target), 80)
/obj/machinery/abductor/pad/proc/doPadToLoc(place)
flick("alien-pad", src)
@@ -41,7 +41,7 @@
/obj/machinery/abductor/pad/proc/PadToLoc(place)
new /obj/effect/temp_visual/teleport_abductor(place)
- addtimer(CALLBACK(src, .proc/doPadToLoc, place), 80)
+ addtimer(CALLBACK(src, PROC_REF(doPadToLoc), place), 80)
/obj/effect/temp_visual/teleport_abductor
name = "Huh"
diff --git a/code/modules/antagonists/ashwalker/ashwalker.dm b/code/modules/antagonists/ashwalker/ashwalker.dm
index 5e2abc9fd0..f1a906ab1d 100644
--- a/code/modules/antagonists/ashwalker/ashwalker.dm
+++ b/code/modules/antagonists/ashwalker/ashwalker.dm
@@ -22,10 +22,10 @@
/datum/antagonist/ashwalker/on_body_transfer(mob/living/old_body, mob/living/new_body)
UnregisterSignal(old_body, COMSIG_MOB_EXAMINATE)
- RegisterSignal(new_body, COMSIG_MOB_EXAMINATE, .proc/on_examinate)
+ RegisterSignal(new_body, COMSIG_MOB_EXAMINATE, PROC_REF(on_examinate))
/datum/antagonist/ashwalker/on_gain()
- RegisterSignal(owner.current, COMSIG_MOB_EXAMINATE, .proc/on_examinate)
+ RegisterSignal(owner.current, COMSIG_MOB_EXAMINATE, PROC_REF(on_examinate))
/datum/antagonist/ashwalker/on_removal()
UnregisterSignal(owner.current, COMSIG_MOB_EXAMINATE)
diff --git a/code/modules/antagonists/blob/overmind.dm b/code/modules/antagonists/blob/overmind.dm
index 6e07889682..2004b41b46 100644
--- a/code/modules/antagonists/blob/overmind.dm
+++ b/code/modules/antagonists/blob/overmind.dm
@@ -110,7 +110,7 @@ GLOBAL_LIST_EMPTY(blob_nodes)
set_security_level("delta")
max_blob_points = INFINITY
blob_points = INFINITY
- addtimer(CALLBACK(src, .proc/victory), 450)
+ addtimer(CALLBACK(src, PROC_REF(victory)), 450)
else if(!free_strain_rerolls && (last_reroll_time + BLOB_REROLL_TIME
I have gained another free strain re-roll.")
free_strain_rerolls = 1
diff --git a/code/modules/antagonists/blob/powers.dm b/code/modules/antagonists/blob/powers.dm
index e6412341a8..bae1b06b7a 100644
--- a/code/modules/antagonists/blob/powers.dm
+++ b/code/modules/antagonists/blob/powers.dm
@@ -354,7 +354,7 @@
var/datum/blobstrain/bs = pick((GLOB.valid_blobstrains))
choices[initial(bs.name)] = bs
- var/choice = input(usr, "Please choose a new strain","Strain") as anything in sortList(choices, /proc/cmp_typepaths_asc)
+ var/choice = input(usr, "Please choose a new strain","Strain") as anything in sortList(choices, GLOBAL_PROC_REF(cmp_typepaths_asc))
if (choice && choices[choice] && !QDELETED(src))
var/datum/blobstrain/bs = choices[choice]
set_strain(bs)
diff --git a/code/modules/antagonists/blob/structures/core.dm b/code/modules/antagonists/blob/structures/core.dm
index f37a30f6eb..6a9f56f59d 100644
--- a/code/modules/antagonists/blob/structures/core.dm
+++ b/code/modules/antagonists/blob/structures/core.dm
@@ -18,7 +18,7 @@
return INITIALIZE_HINT_QDEL
if(overmind)
update_icon()
- addtimer(CALLBACK(src, .proc/generate_announcement), 1800)
+ addtimer(CALLBACK(src, PROC_REF(generate_announcement)), 1800)
. = ..()
/obj/structure/blob/core/proc/generate_announcement()
diff --git a/code/modules/antagonists/blood_contract/blood_contract.dm b/code/modules/antagonists/blood_contract/blood_contract.dm
index 68417bc1f7..bd13253ca9 100644
--- a/code/modules/antagonists/blood_contract/blood_contract.dm
+++ b/code/modules/antagonists/blood_contract/blood_contract.dm
@@ -29,7 +29,7 @@
var/obj/effect/mine/pickup/bloodbath/B = new(H)
B.duration = duration
- INVOKE_ASYNC(B, /obj/effect/mine/pickup/bloodbath/.proc/mineEffect, H) //could use moving out from the mine
+ INVOKE_ASYNC(B, TYPE_PROC_REF(/obj/effect/mine/pickup/bloodbath, mineEffect), H) //could use moving out from the mine
for(var/mob/living/carbon/human/P in GLOB.player_list)
if(P == H)
diff --git a/code/modules/antagonists/changeling/changeling.dm b/code/modules/antagonists/changeling/changeling.dm
index 0fc00c8add..0e3d3422e1 100644
--- a/code/modules/antagonists/changeling/changeling.dm
+++ b/code/modules/antagonists/changeling/changeling.dm
@@ -355,7 +355,7 @@
if(B)
B.organ_flags &= ~ORGAN_VITAL
B.decoy_override = TRUE
- RegisterSignal(C, list(COMSIG_MOB_MIDDLECLICKON, COMSIG_MOB_ALTCLICKON), .proc/stingAtom)
+ RegisterSignal(C, list(COMSIG_MOB_MIDDLECLICKON, COMSIG_MOB_ALTCLICKON), PROC_REF(stingAtom))
var/mob/living/M = mob_override || owner.current
add_antag_hud(antag_hud_type, antag_hud_name, M)
handle_clown_mutation(M, "You have evolved beyond your clownish nature, allowing you to wield weapons without harming myself.")
@@ -484,7 +484,7 @@
/datum/antagonist/changeling/get_admin_commands()
. = ..()
if(stored_profiles.len && (owner.current.real_name != first_prof.name))
- .["Transform to initial appearance."] = CALLBACK(src,.proc/admin_restore_appearance)
+ .["Transform to initial appearance."] = CALLBACK(src,PROC_REF(admin_restore_appearance))
/datum/antagonist/changeling/proc/admin_restore_appearance(mob/admin)
if(!stored_profiles.len || !iscarbon(owner.current))
diff --git a/code/modules/antagonists/changeling/powers/biodegrade.dm b/code/modules/antagonists/changeling/powers/biodegrade.dm
index 1ba9f3a93a..19e24658d6 100644
--- a/code/modules/antagonists/changeling/powers/biodegrade.dm
+++ b/code/modules/antagonists/changeling/powers/biodegrade.dm
@@ -20,7 +20,7 @@
user.visible_message("[user] vomits a glob of acid on [user.p_their()] [O]!", \
"We vomit acidic ooze onto our restraints!")
- addtimer(CALLBACK(src, .proc/dissolve_handcuffs, user, O), 30)
+ addtimer(CALLBACK(src, PROC_REF(dissolve_handcuffs), user, O), 30)
used = TRUE
if(user.wear_armor && user.wear_armor.breakouttime && !used)
@@ -29,7 +29,7 @@
return 0
user.visible_message("[user] vomits a glob of acid across the front of [user.p_their()] [S]!", \
"We vomit acidic ooze onto our straight jacket!")
- addtimer(CALLBACK(src, .proc/dissolve_straightjacket, user, S), 30)
+ addtimer(CALLBACK(src, PROC_REF(dissolve_straightjacket), user, S), 30)
used = TRUE
@@ -39,7 +39,7 @@
return 0
C.visible_message("[C]'s hinges suddenly begin to melt and run!")
to_chat(user, "We vomit acidic goop onto the interior of [C]!")
- addtimer(CALLBACK(src, .proc/open_closet, user, C), 70)
+ addtimer(CALLBACK(src, PROC_REF(open_closet), user, C), 70)
used = TRUE
if(istype(user.loc, /obj/structure/spider/cocoon) && !used)
@@ -48,7 +48,7 @@
return 0
C.visible_message("[src] shifts and starts to fall apart!")
to_chat(user, "We secrete acidic enzymes from our skin and begin melting our cocoon...")
- addtimer(CALLBACK(src, .proc/dissolve_cocoon, user, C), 25) //Very short because it's just webs
+ addtimer(CALLBACK(src, PROC_REF(dissolve_cocoon), user, C), 25) //Very short because it's just webs
used = TRUE
..()
return used
diff --git a/code/modules/antagonists/changeling/powers/fakedeath.dm b/code/modules/antagonists/changeling/powers/fakedeath.dm
index c4fd8fac24..922b434b4d 100644
--- a/code/modules/antagonists/changeling/powers/fakedeath.dm
+++ b/code/modules/antagonists/changeling/powers/fakedeath.dm
@@ -13,7 +13,7 @@
/datum/action/changeling/fakedeath/sting_action(mob/living/user)
..()
if(revive_ready)
- INVOKE_ASYNC(src, .proc/revive, user)
+ INVOKE_ASYNC(src, PROC_REF(revive), user)
revive_ready = FALSE
name = "Reviving Stasis"
desc = ""
@@ -26,7 +26,7 @@
user.fakedeath("changeling") //play dead
user.update_stat()
user.update_mobility()
- addtimer(CALLBACK(src, .proc/ready_to_regenerate, user), LING_FAKEDEATH_TIME, TIMER_UNIQUE)
+ addtimer(CALLBACK(src, PROC_REF(ready_to_regenerate), user), LING_FAKEDEATH_TIME, TIMER_UNIQUE)
return TRUE
/datum/action/changeling/fakedeath/proc/revive(mob/living/user)
diff --git a/code/modules/antagonists/changeling/powers/mutations.dm b/code/modules/antagonists/changeling/powers/mutations.dm
index fec47dc3a6..f32789ba4d 100644
--- a/code/modules/antagonists/changeling/powers/mutations.dm
+++ b/code/modules/antagonists/changeling/powers/mutations.dm
@@ -377,12 +377,12 @@
if(INTENT_GRAB)
C.visible_message("[L] is grabbed by [H]'s tentacle!","A tentacle grabs you and pulls you towards [H]!")
- C.throw_at(get_step_towards(H,C), 8, 2, H, TRUE, TRUE, callback=CALLBACK(src, .proc/tentacle_grab, H, C))
+ C.throw_at(get_step_towards(H,C), 8, 2, H, TRUE, TRUE, callback=CALLBACK(src, PROC_REF(tentacle_grab), H, C))
return BULLET_ACT_HIT
if(INTENT_HARM)
C.visible_message("[L] is thrown towards [H] by a tentacle!","A tentacle grabs you and throws you towards [H]!")
- C.throw_at(get_step_towards(H,C), 8, 2, H, TRUE, TRUE, callback=CALLBACK(src, .proc/tentacle_stab, H, C))
+ C.throw_at(get_step_towards(H,C), 8, 2, H, TRUE, TRUE, callback=CALLBACK(src, PROC_REF(tentacle_stab), H, C))
return BULLET_ACT_HIT
else
L.visible_message("[L] is pulled by [H]'s tentacle!","A tentacle grabs you and pulls you towards [H]!")
diff --git a/code/modules/antagonists/changeling/powers/strained_muscles.dm b/code/modules/antagonists/changeling/powers/strained_muscles.dm
index 6da29e54b9..55fd6caa4d 100644
--- a/code/modules/antagonists/changeling/powers/strained_muscles.dm
+++ b/code/modules/antagonists/changeling/powers/strained_muscles.dm
@@ -25,7 +25,7 @@
user.Paralyze(60)
user.emote("breathgasp")
- INVOKE_ASYNC(src, .proc/muscle_loop, user)
+ INVOKE_ASYNC(src, PROC_REF(muscle_loop), user)
return TRUE
diff --git a/code/modules/antagonists/changeling/powers/tiny_prick.dm b/code/modules/antagonists/changeling/powers/tiny_prick.dm
index 6b5c6d636d..544ed8c59f 100644
--- a/code/modules/antagonists/changeling/powers/tiny_prick.dm
+++ b/code/modules/antagonists/changeling/powers/tiny_prick.dm
@@ -150,7 +150,7 @@
target.visible_message("A grotesque blade forms around [target.name]\'s arm!", "My arm twists and mutates, transforming into a horrific monstrosity!", "I hear organic matter ripping and tearing!")
playsound(target, 'sound/blank.ogg', 30, TRUE)
- addtimer(CALLBACK(src, .proc/remove_fake, target, blade), 600)
+ addtimer(CALLBACK(src, PROC_REF(remove_fake), target, blade), 600)
return TRUE
/datum/action/changeling/sting/false_armblade/proc/remove_fake(mob/target, obj/item/melee/arm_blade/false/blade)
@@ -222,7 +222,7 @@
/datum/action/changeling/sting/LSD/sting_action(mob/user, mob/living/carbon/target)
log_combat(user, target, "stung", "LSD sting")
- addtimer(CALLBACK(src, .proc/hallucination_time, target), rand(300,600))
+ addtimer(CALLBACK(src, PROC_REF(hallucination_time), target), rand(300,600))
return TRUE
/datum/action/changeling/sting/LSD/proc/hallucination_time(mob/living/carbon/target)
diff --git a/code/modules/antagonists/cult/blood_magic.dm b/code/modules/antagonists/cult/blood_magic.dm
index 67e6bbacdc..8b96d036e1 100644
--- a/code/modules/antagonists/cult/blood_magic.dm
+++ b/code/modules/antagonists/cult/blood_magic.dm
@@ -264,7 +264,7 @@
SEND_SOUND(ranged_ability_user, sound('sound/blank.ogg',0,1,50))
var/image/C = image('icons/effects/cult_effects.dmi',H,"bloodsparkles", ABOVE_MOB_LAYER)
add_alt_appearance(/datum/atom_hud/alternate_appearance/basic/cult, "cult_apoc", C, NONE)
- addtimer(CALLBACK(H,/atom/.proc/remove_alt_appearance,"cult_apoc",TRUE), 2400, TIMER_OVERRIDE|TIMER_UNIQUE)
+ addtimer(CALLBACK(H,TYPE_PROC_REF(/atom, remove_alt_appearance),"cult_apoc",TRUE), 2400, TIMER_OVERRIDE|TIMER_UNIQUE)
to_chat(ranged_ability_user,"[H] has been cursed with living nightmares!")
attached_action.charges--
attached_action.desc = attached_action.base_desc
@@ -425,7 +425,7 @@
L.mob_light(_range = 2, _color = LIGHT_COLOR_HOLY_MAGIC, _duration = 10 SECONDS)
var/mutable_appearance/forbearance = mutable_appearance('icons/effects/genetics.dmi', "servitude", -MUTATIONS_LAYER)
L.add_overlay(forbearance)
- addtimer(CALLBACK(L, /atom/proc/cut_overlay, forbearance), 100)
+ addtimer(CALLBACK(L, TYPE_PROC_REF(/atom, cut_overlay), forbearance), 100)
if(istype(anti_magic_source, /obj/item))
var/obj/item/ams_object = anti_magic_source
diff --git a/code/modules/antagonists/cult/cult.dm b/code/modules/antagonists/cult/cult.dm
index 1b932a9161..5fbe365a9a 100644
--- a/code/modules/antagonists/cult/cult.dm
+++ b/code/modules/antagonists/cult/cult.dm
@@ -159,9 +159,9 @@
/datum/antagonist/cult/get_admin_commands()
. = ..()
- .["Dagger"] = CALLBACK(src,.proc/admin_give_dagger)
- .["Dagger and Metal"] = CALLBACK(src,.proc/admin_give_metal)
- .["Remove Dagger and Metal"] = CALLBACK(src, .proc/admin_take_all)
+ .["Dagger"] = CALLBACK(src,PROC_REF(admin_give_dagger))
+ .["Dagger and Metal"] = CALLBACK(src,PROC_REF(admin_give_metal))
+ .["Remove Dagger and Metal"] = CALLBACK(src, PROC_REF(admin_take_all))
/datum/antagonist/cult/proc/admin_give_dagger(mob/admin)
if(!equip_cultist(metal=FALSE))
@@ -266,7 +266,7 @@
if(B.current)
SEND_SOUND(B.current, 'sound/blank.ogg')
to_chat(B.current, "The veil weakens as my cult grows, my eyes begin to glow...")
- addtimer(CALLBACK(src, .proc/rise, B.current), 200)
+ addtimer(CALLBACK(src, PROC_REF(rise), B.current), 200)
cult_risen = TRUE
if(ratio > CULT_ASCENDENT && !cult_ascendent)
@@ -274,7 +274,7 @@
if(B.current)
SEND_SOUND(B.current, 'sound/blank.ogg')
to_chat(B.current, "My cult is ascendent and the red harvest approaches - you cannot hide my true nature for much longer!!")
- addtimer(CALLBACK(src, .proc/ascend, B.current), 200)
+ addtimer(CALLBACK(src, PROC_REF(ascend), B.current), 200)
cult_ascendent = TRUE
diff --git a/code/modules/antagonists/cult/cult_comms.dm b/code/modules/antagonists/cult/cult_comms.dm
index c8329c0953..5da6a493d0 100644
--- a/code/modules/antagonists/cult/cult_comms.dm
+++ b/code/modules/antagonists/cult/cult_comms.dm
@@ -185,7 +185,7 @@
S.release_shades(owner)
B.current.setDir(SOUTH)
new /obj/effect/temp_visual/cult/blood(final)
- addtimer(CALLBACK(B.current, /mob/.proc/reckon, final), 10)
+ addtimer(CALLBACK(B.current, TYPE_PROC_REF(/mob, reckon), final), 10)
else
return
antag.cult_team.reckoning_complete = TRUE
@@ -271,7 +271,7 @@
C.cult_team.blood_target = target
var/area/A = get_area(target)
attached_action.cooldown = world.time + attached_action.base_cooldown
- addtimer(CALLBACK(attached_action.owner, /mob.proc/update_action_buttons_icon), attached_action.base_cooldown)
+ addtimer(CALLBACK(attached_action.owner, TYPE_PROC_REF(/mob, update_action_buttons_icon)), attached_action.base_cooldown)
C.cult_team.blood_target_image = image('icons/effects/cult_target.dmi', target, "glow", ABOVE_MOB_LAYER)
C.cult_team.blood_target_image.appearance_flags = RESET_COLOR
C.cult_team.blood_target_image.pixel_x = -target.pixel_x
@@ -283,7 +283,7 @@
B.current.client.images += C.cult_team.blood_target_image
attached_action.owner.update_action_buttons_icon()
remove_ranged_ability("The marking rite is complete! It will last for 90 seconds.")
- C.cult_team.blood_target_reset_timer = addtimer(CALLBACK(GLOBAL_PROC, .proc/reset_blood_target,C.cult_team), 900, TIMER_STOPPABLE)
+ C.cult_team.blood_target_reset_timer = addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(reset_blood_target),C.cult_team), 900, TIMER_STOPPABLE)
return TRUE
return FALSE
@@ -350,7 +350,7 @@
C.cult_team.blood_target = target
var/area/A = get_area(target)
cooldown = world.time + base_cooldown
- addtimer(CALLBACK(owner, /mob.proc/update_action_buttons_icon), base_cooldown)
+ addtimer(CALLBACK(owner, TYPE_PROC_REF(/mob, update_action_buttons_icon)), base_cooldown)
C.cult_team.blood_target_image = image('icons/effects/cult_target.dmi', target, "glow", ABOVE_MOB_LAYER)
C.cult_team.blood_target_image.appearance_flags = RESET_COLOR
C.cult_team.blood_target_image.pixel_x = -target.pixel_x
@@ -367,8 +367,8 @@
desc = ""
button_icon_state = "emp"
owner.update_action_buttons_icon()
- C.cult_team.blood_target_reset_timer = addtimer(CALLBACK(GLOBAL_PROC, .proc/reset_blood_target,C.cult_team), base_cooldown, TIMER_STOPPABLE)
- addtimer(CALLBACK(src, .proc/reset_button), base_cooldown)
+ C.cult_team.blood_target_reset_timer = addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(reset_blood_target),C.cult_team), base_cooldown, TIMER_STOPPABLE)
+ addtimer(CALLBACK(src, PROC_REF(reset_button)), base_cooldown)
//////// ELDRITCH PULSE /////////
@@ -458,4 +458,4 @@
attached_action.cooldown = world.time + attached_action.base_cooldown
remove_ranged_ability("A pulse of blood magic surges through you as you shift [attached_action.throwee] through time and space.")
caller.update_action_buttons_icon()
- addtimer(CALLBACK(caller, /mob.proc/update_action_buttons_icon), attached_action.base_cooldown)
+ addtimer(CALLBACK(caller, TYPE_PROC_REF(/mob, update_action_buttons_icon)), attached_action.base_cooldown)
diff --git a/code/modules/antagonists/cult/cult_items.dm b/code/modules/antagonists/cult/cult_items.dm
index 2b0fa859cc..72b62c39c3 100644
--- a/code/modules/antagonists/cult/cult_items.dm
+++ b/code/modules/antagonists/cult/cult_items.dm
@@ -229,7 +229,7 @@
sword.spinning = TRUE
sword.block_chance = 100
sword.slowdown += 1.5
- addtimer(CALLBACK(src, .proc/stop_spinning), 50)
+ addtimer(CALLBACK(src, PROC_REF(stop_spinning)), 50)
holder.update_action_buttons_icon()
/datum/action/innate/cult/spin2win/proc/stop_spinning()
@@ -782,10 +782,10 @@
qdel(src)
return
charging = TRUE
- INVOKE_ASYNC(src, .proc/charge, user)
+ INVOKE_ASYNC(src, PROC_REF(charge), user)
if(do_after(user, 90, target = user))
firing = TRUE
- INVOKE_ASYNC(src, .proc/pewpew, user, params)
+ INVOKE_ASYNC(src, PROC_REF(pewpew), user, params)
var/obj/structure/emergency_shield/invoker/N = new(user.loc)
if(do_after(user, 90, target = user))
user.Paralyze(40)
@@ -858,7 +858,7 @@
playsound(L, 'sound/blank.ogg', 50, TRUE)
L.emote("scream")
var/datum/beam/current_beam = new(user,temp_target,time=7,beam_icon_state="blood_beam",btype=/obj/effect/ebeam/blood)
- INVOKE_ASYNC(current_beam, /datum/beam.proc/Start)
+ INVOKE_ASYNC(current_beam, TYPE_PROC_REF(/datum/beam, Start))
/obj/effect/ebeam/blood
@@ -899,7 +899,7 @@
playsound(src, 'sound/blank.ogg', 100, TRUE)
if(illusions > 0)
illusions--
- addtimer(CALLBACK(src, /obj/item/shield/mirror.proc/readd), 450)
+ addtimer(CALLBACK(src, TYPE_PROC_REF(/obj/item/shield/mirror, readd)), 450)
if(prob(60))
var/mob/living/simple_animal/hostile/illusion/M = new(owner.loc)
M.faction = list("cult")
diff --git a/code/modules/antagonists/cult/rune_spawn_action.dm b/code/modules/antagonists/cult/rune_spawn_action.dm
index b7f62cca49..5373b036e4 100644
--- a/code/modules/antagonists/cult/rune_spawn_action.dm
+++ b/code/modules/antagonists/cult/rune_spawn_action.dm
@@ -57,7 +57,7 @@
cooldown = base_cooldown + world.time
owner.update_action_buttons_icon()
- addtimer(CALLBACK(owner, /mob.proc/update_action_buttons_icon), base_cooldown)
+ addtimer(CALLBACK(owner, TYPE_PROC_REF(/mob, update_action_buttons_icon)), base_cooldown)
var/list/health
if(damage_interrupt && isliving(owner))
var/mob/living/L = owner
@@ -66,7 +66,7 @@
if(istype(T, /turf/open/floor/engine/cult))
scribe_mod *= 0.5
playsound(T, 'sound/blank.ogg', 100, FALSE)
- if(do_after(owner, scribe_mod, target = owner, extra_checks = CALLBACK(owner, /mob.proc/break_do_after_checks, health, action_interrupt)))
+ if(do_after(owner, scribe_mod, target = owner, extra_checks = CALLBACK(owner, TYPE_PROC_REF(/mob, break_do_after_checks), health, action_interrupt)))
var/obj/effect/rune/new_rune = new rune_type(owner.loc)
new_rune.keyword = chosen_keyword
else
diff --git a/code/modules/antagonists/cult/runes.dm b/code/modules/antagonists/cult/runes.dm
index f3ac03d4aa..13090974e8 100644
--- a/code/modules/antagonists/cult/runes.dm
+++ b/code/modules/antagonists/cult/runes.dm
@@ -157,7 +157,7 @@ structure_check() searches for nearby cultist structures required for the invoca
var/oldcolor = color
color = rgb(255, 0, 0)
animate(src, color = oldcolor, time = 5)
- addtimer(CALLBACK(src, /atom/proc/update_atom_colour), 5)
+ addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, update_atom_colour)), 5)
//Malformed Rune: This forms if a rune is not drawn correctly. Invoking it does nothing but hurt the user.
/obj/effect/rune/malformed
@@ -221,7 +221,7 @@ structure_check() searches for nearby cultist structures required for the invoca
..()
do_sacrifice(L, invokers)
animate(src, color = oldcolor, time = 5)
- addtimer(CALLBACK(src, /atom/proc/update_atom_colour), 5)
+ addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, update_atom_colour)), 5)
Cult_team.check_size() // Triggers the eye glow or aura effects if the cult has grown large enough relative to the crew
rune_in_use = FALSE
@@ -437,7 +437,7 @@ structure_check() searches for nearby cultist structures required for the invoca
outer_portal = new(T, 600, color)
light_range = 4
update_light()
- addtimer(CALLBACK(src, .proc/close_portal), 600, TIMER_UNIQUE)
+ addtimer(CALLBACK(src, PROC_REF(close_portal)), 600, TIMER_UNIQUE)
/obj/effect/rune/teleport/proc/close_portal()
qdel(inner_portal)
@@ -654,7 +654,7 @@ structure_check() searches for nearby cultist structures required for the invoca
W.density = TRUE
W.update_state()
W.spread_density()
- density_timer = addtimer(CALLBACK(src, .proc/lose_density), 3000, TIMER_STOPPABLE)
+ density_timer = addtimer(CALLBACK(src, PROC_REF(lose_density)), 3000, TIMER_STOPPABLE)
/obj/effect/rune/wall/proc/lose_density()
if(density)
@@ -664,7 +664,7 @@ structure_check() searches for nearby cultist structures required for the invoca
var/oldcolor = color
add_atom_colour("#696969", FIXED_COLOUR_PRIORITY)
animate(src, color = oldcolor, time = 50, easing = EASE_IN)
- addtimer(CALLBACK(src, .proc/recharge), 50)
+ addtimer(CALLBACK(src, PROC_REF(recharge)), 50)
/obj/effect/rune/wall/proc/recharge()
recharging = FALSE
@@ -973,11 +973,11 @@ structure_check() searches for nearby cultist structures required for the invoca
if(ishuman(M))
if(!iscultist(M))
AH.remove_hud_from(M)
- addtimer(CALLBACK(GLOBAL_PROC, .proc/hudFix, M), duration)
+ addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(hudFix), M), duration)
var/image/A = image('icons/mob/mob.dmi',M,"cultist", ABOVE_MOB_LAYER)
A.override = 1
add_alt_appearance(/datum/atom_hud/alternate_appearance/basic/noncult, "human_apoc", A, NONE)
- addtimer(CALLBACK(M,/atom/.proc/remove_alt_appearance,"human_apoc",TRUE), duration)
+ addtimer(CALLBACK(M,TYPE_PROC_REF(/atom, remove_alt_appearance),"human_apoc",TRUE), duration)
images += A
SEND_SOUND(M, pick(sound('sound/blank.ogg')))
else
@@ -985,13 +985,13 @@ structure_check() searches for nearby cultist structures required for the invoca
var/image/B = image('icons/mob/mob.dmi',M,construct, ABOVE_MOB_LAYER)
B.override = 1
add_alt_appearance(/datum/atom_hud/alternate_appearance/basic/noncult, "mob_apoc", B, NONE)
- addtimer(CALLBACK(M,/atom/.proc/remove_alt_appearance,"mob_apoc",TRUE), duration)
+ addtimer(CALLBACK(M,TYPE_PROC_REF(/atom, remove_alt_appearance),"mob_apoc",TRUE), duration)
images += B
if(!iscultist(M))
if(M.client)
var/image/C = image('icons/effects/cult_effects.dmi',M,"bloodsparkles", ABOVE_MOB_LAYER)
add_alt_appearance(/datum/atom_hud/alternate_appearance/basic/cult, "cult_apoc", C, NONE)
- addtimer(CALLBACK(M,/atom/.proc/remove_alt_appearance,"cult_apoc",TRUE), duration)
+ addtimer(CALLBACK(M,TYPE_PROC_REF(/atom, remove_alt_appearance),"cult_apoc",TRUE), duration)
images += C
else
to_chat(M, "An Apocalypse Rune was invoked in the [place.name], it is no longer available as a summoning site!")
diff --git a/code/modules/antagonists/devil/devil.dm b/code/modules/antagonists/devil/devil.dm
index 06488f2cd1..4f5461831e 100644
--- a/code/modules/antagonists/devil/devil.dm
+++ b/code/modules/antagonists/devil/devil.dm
@@ -118,7 +118,7 @@ GLOBAL_LIST_INIT(devil_suffix, list(" the Red", " the Soulless", " the Master",
/datum/antagonist/devil/get_admin_commands()
. = ..()
- .["Toggle ascendable"] = CALLBACK(src,.proc/admin_toggle_ascendable)
+ .["Toggle ascendable"] = CALLBACK(src,PROC_REF(admin_toggle_ascendable))
/datum/antagonist/devil/proc/admin_toggle_ascendable(mob/admin)
diff --git a/code/modules/antagonists/devil/imp/imp.dm b/code/modules/antagonists/devil/imp/imp.dm
index e6d6acdaf7..010be741b5 100644
--- a/code/modules/antagonists/devil/imp/imp.dm
+++ b/code/modules/antagonists/devil/imp/imp.dm
@@ -50,7 +50,7 @@
/mob/living/simple_animal/imp/Initialize()
. = ..()
set_varspeed(1)
- addtimer(CALLBACK(src, /mob/living/simple_animal/proc/set_varspeed, 0), 30)
+ addtimer(CALLBACK(src, TYPE_PROC_REF(/mob/living/simple_animal, set_varspeed), 0), 30)
/datum/antagonist/imp
name = "Imp"
diff --git a/code/modules/antagonists/devil/true_devil/_true_devil.dm b/code/modules/antagonists/devil/true_devil/_true_devil.dm
index 57cf665c43..a7d9287799 100644
--- a/code/modules/antagonists/devil/true_devil/_true_devil.dm
+++ b/code/modules/antagonists/devil/true_devil/_true_devil.dm
@@ -60,7 +60,7 @@
stat = DEAD
..(gibbed)
drop_all_held_items()
- INVOKE_ASYNC(mind.has_antag_datum(/datum/antagonist/devil), /datum/antagonist/devil/proc/beginResurrectionCheck, src)
+ INVOKE_ASYNC(mind.has_antag_datum(/datum/antagonist/devil), TYPE_PROC_REF(/datum/antagonist/devil, beginResurrectionCheck), src)
/mob/living/carbon/true_devil/examine(mob/user)
diff --git a/code/modules/antagonists/disease/disease_event.dm b/code/modules/antagonists/disease/disease_event.dm
index 7183ed5455..370db73c2f 100644
--- a/code/modules/antagonists/disease/disease_event.dm
+++ b/code/modules/antagonists/disease/disease_event.dm
@@ -19,7 +19,7 @@
var/mob/camera/disease/virus = new /mob/camera/disease(SSmapping.get_station_center())
virus.key = selected.key
- INVOKE_ASYNC(virus, /mob/camera/disease/proc/pick_name)
+ INVOKE_ASYNC(virus, TYPE_PROC_REF(/mob/camera/disease, pick_name))
message_admins("[ADMIN_LOOKUPFLW(virus)] has been made into a sentient disease by an event.")
log_game("[key_name(virus)] was spawned as a sentient disease by an event.")
spawned_mobs += virus
diff --git a/code/modules/antagonists/disease/disease_mob.dm b/code/modules/antagonists/disease/disease_mob.dm
index 7ae719d83e..49039821b7 100644
--- a/code/modules/antagonists/disease/disease_mob.dm
+++ b/code/modules/antagonists/disease/disease_mob.dm
@@ -67,7 +67,7 @@ the new instance inside the host to be updated to the template's stats.
browser = new /datum/browser(src, "disease_menu", "Adaptation Menu", 1000, 770, src)
freemove_end = world.time + freemove_time
- freemove_end_timerid = addtimer(CALLBACK(src, .proc/infect_random_patient_zero), freemove_time, TIMER_STOPPABLE)
+ freemove_end_timerid = addtimer(CALLBACK(src, PROC_REF(infect_random_patient_zero)), freemove_time, TIMER_STOPPABLE)
/mob/camera/disease/Destroy()
. = ..()
@@ -266,7 +266,7 @@ the new instance inside the host to be updated to the template's stats.
/mob/camera/disease/proc/set_following(mob/living/L)
if(following_host)
UnregisterSignal(following_host, COMSIG_MOVABLE_MOVED)
- RegisterSignal(L, COMSIG_MOVABLE_MOVED, .proc/follow_mob)
+ RegisterSignal(L, COMSIG_MOVABLE_MOVED, PROC_REF(follow_mob))
following_host = L
follow_mob()
@@ -305,7 +305,7 @@ the new instance inside the host to be updated to the template's stats.
/mob/camera/disease/proc/adapt_cooldown()
to_chat(src, "I have altered your genetic structure. You will be unable to adapt again for [DisplayTimeText(adaptation_cooldown)].")
next_adaptation_time = world.time + adaptation_cooldown
- addtimer(CALLBACK(src, .proc/notify_adapt_ready), adaptation_cooldown)
+ addtimer(CALLBACK(src, PROC_REF(notify_adapt_ready)), adaptation_cooldown)
/mob/camera/disease/proc/notify_adapt_ready()
to_chat(src, "I are now ready to adapt again.")
diff --git a/code/modules/antagonists/nukeop/equipment/borgchameleon.dm b/code/modules/antagonists/nukeop/equipment/borgchameleon.dm
index 56795accc5..bc4abd2622 100644
--- a/code/modules/antagonists/nukeop/equipment/borgchameleon.dm
+++ b/code/modules/antagonists/nukeop/equipment/borgchameleon.dm
@@ -111,7 +111,7 @@
return
if(listeningTo)
UnregisterSignal(listeningTo, signalCache)
- RegisterSignal(user, signalCache, .proc/disrupt)
+ RegisterSignal(user, signalCache, PROC_REF(disrupt))
listeningTo = user
/obj/item/borg_chameleon/proc/deactivate(mob/living/silicon/robot/user)
diff --git a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm
index 6b640d6974..ab961ab8fd 100644
--- a/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm
+++ b/code/modules/antagonists/nukeop/equipment/nuclearbomb.dm
@@ -413,7 +413,7 @@
sound_to_playing_players('sound/blank.ogg')
if(SSticker && SSticker.mode)
SSticker.roundend_check_paused = TRUE
- addtimer(CALLBACK(src, .proc/actually_explode), 100)
+ addtimer(CALLBACK(src, PROC_REF(actually_explode)), 100)
/obj/machinery/nuclearbomb/proc/actually_explode()
if(!core)
@@ -447,8 +447,8 @@
SSticker.roundend_check_paused = FALSE
/obj/machinery/nuclearbomb/proc/really_actually_explode(off_station)
- Cinematic(get_cinematic_type(off_station),world,CALLBACK(SSticker,/datum/controller/subsystem/ticker/proc/station_explosion_detonation,src))
- INVOKE_ASYNC(GLOBAL_PROC,.proc/KillEveryoneOnZLevel, z)
+ Cinematic(get_cinematic_type(off_station),world,CALLBACK(SSticker,TYPE_PROC_REF(/datum/controller/subsystem/ticker, station_explosion_detonation),src))
+ INVOKE_ASYNC(GLOBAL_PROC, GLOBAL_PROC_REF(KillEveryoneOnZLevel), z)
/obj/machinery/nuclearbomb/proc/get_cinematic_type(off_station)
if(off_station < 2)
@@ -494,10 +494,10 @@
var/datum/round_event_control/E = locate(/datum/round_event_control/vent_clog/beer) in SSevents.control
if(E)
E.runEvent()
- addtimer(CALLBACK(src, .proc/really_actually_explode), 110)
+ addtimer(CALLBACK(src, PROC_REF(really_actually_explode)), 110)
else
visible_message("[src] fizzes ominously.")
- addtimer(CALLBACK(src, .proc/fizzbuzz), 110)
+ addtimer(CALLBACK(src, PROC_REF(fizzbuzz)), 110)
/obj/machinery/nuclearbomb/beer/proc/disarm()
detonation_timer = null
@@ -641,8 +641,8 @@ This is here to make the tiles around the station mininuke change when it's arme
user.visible_message("[user] is going delta! It looks like [user.p_theyre()] trying to commit suicide!")
playsound(src, 'sound/blank.ogg', 50, -1, TRUE)
for(var/i in 1 to 100)
- addtimer(CALLBACK(user, /atom/proc/add_atom_colour, (i % 2)? "#00FF00" : "#FF0000", ADMIN_COLOUR_PRIORITY), i)
- addtimer(CALLBACK(src, .proc/manual_suicide, user), 101)
+ addtimer(CALLBACK(user, TYPE_PROC_REF(/atom, add_atom_colour), (i % 2)? "#00FF00" : "#FF0000", ADMIN_COLOUR_PRIORITY), i)
+ addtimer(CALLBACK(src, PROC_REF(manual_suicide), user), 101)
return MANUAL_SUICIDE
/obj/item/disk/nuclear/proc/manual_suicide(mob/living/user)
diff --git a/code/modules/antagonists/nukeop/nukeop.dm b/code/modules/antagonists/nukeop/nukeop.dm
index ea1e9ef914..dd9d7a1482 100644
--- a/code/modules/antagonists/nukeop/nukeop.dm
+++ b/code/modules/antagonists/nukeop/nukeop.dm
@@ -131,8 +131,8 @@
/datum/antagonist/nukeop/get_admin_commands()
. = ..()
- .["Send to base"] = CALLBACK(src,.proc/admin_send_to_base)
- .["Tell code"] = CALLBACK(src,.proc/admin_tell_code)
+ .["Send to base"] = CALLBACK(src,PROC_REF(admin_send_to_base))
+ .["Tell code"] = CALLBACK(src,PROC_REF(admin_tell_code))
/datum/antagonist/nukeop/proc/admin_send_to_base(mob/admin)
owner.current.forceMove(pick(GLOB.nukeop_start))
@@ -181,7 +181,7 @@
to_chat(owner, "If you feel you are not up to this task, give your ID to another operative.")
to_chat(owner, "In your hand you will find a special item capable of triggering a greater challenge for your team. Examine it carefully and consult with your fellow operatives before activating it.")
owner.announce_objectives()
- addtimer(CALLBACK(src, .proc/nuketeam_name_assign), 1)
+ addtimer(CALLBACK(src, PROC_REF(nuketeam_name_assign)), 1)
/datum/antagonist/nukeop/leader/proc/nuketeam_name_assign()
diff --git a/code/modules/antagonists/revenant/revenant.dm b/code/modules/antagonists/revenant/revenant.dm
index f374d60e31..0597b67789 100644
--- a/code/modules/antagonists/revenant/revenant.dm
+++ b/code/modules/antagonists/revenant/revenant.dm
@@ -196,7 +196,7 @@
adjustBruteLoss(25) //hella effective
inhibited = TRUE
update_action_buttons_icon()
- addtimer(CALLBACK(src, .proc/reset_inhibit), 30)
+ addtimer(CALLBACK(src, PROC_REF(reset_inhibit)), 30)
/mob/living/simple_animal/revenant/proc/reset_inhibit()
inhibited = FALSE
@@ -358,7 +358,7 @@
/obj/item/ectoplasm/revenant/Initialize()
. = ..()
- addtimer(CALLBACK(src, .proc/try_reform), 600)
+ addtimer(CALLBACK(src, PROC_REF(try_reform)), 600)
/obj/item/ectoplasm/revenant/proc/scatter()
qdel(src)
diff --git a/code/modules/antagonists/revenant/revenant_abilities.dm b/code/modules/antagonists/revenant/revenant_abilities.dm
index 5f82dd4dd7..13a10c1ed7 100644
--- a/code/modules/antagonists/revenant/revenant_abilities.dm
+++ b/code/modules/antagonists/revenant/revenant_abilities.dm
@@ -194,7 +194,7 @@
/obj/effect/proc_holder/spell/aoe_turf/revenant/overload/cast(list/targets, mob/living/simple_animal/revenant/user = usr)
if(attempt_cast(user))
for(var/turf/T in targets)
- INVOKE_ASYNC(src, .proc/overload, T, user)
+ INVOKE_ASYNC(src, PROC_REF(overload), T, user)
/obj/effect/proc_holder/spell/aoe_turf/revenant/overload/proc/overload(turf/T, mob/user)
for(var/obj/machinery/light/L in T)
@@ -205,7 +205,7 @@
s.set_up(4, 0, L)
s.start()
new /obj/effect/temp_visual/revenant(get_turf(L))
- addtimer(CALLBACK(src, .proc/overload_shock, L, user), 20)
+ addtimer(CALLBACK(src, PROC_REF(overload_shock), L, user), 20)
/obj/effect/proc_holder/spell/aoe_turf/revenant/overload/proc/overload_shock(obj/machinery/light/L, mob/user)
if(!L.on) //wait, wait, don't shock me
@@ -235,7 +235,7 @@
/obj/effect/proc_holder/spell/aoe_turf/revenant/defile/cast(list/targets, mob/living/simple_animal/revenant/user = usr)
if(attempt_cast(user))
for(var/turf/T in targets)
- INVOKE_ASYNC(src, .proc/defile, T)
+ INVOKE_ASYNC(src, PROC_REF(defile), T)
/obj/effect/proc_holder/spell/aoe_turf/revenant/defile/proc/defile(turf/T)
for(var/obj/effect/blessing/B in T)
@@ -286,7 +286,7 @@
/obj/effect/proc_holder/spell/aoe_turf/revenant/malfunction/cast(list/targets, mob/living/simple_animal/revenant/user = usr)
if(attempt_cast(user))
for(var/turf/T in targets)
- INVOKE_ASYNC(src, .proc/malfunction, T, user)
+ INVOKE_ASYNC(src, PROC_REF(malfunction), T, user)
/obj/effect/proc_holder/spell/aoe_turf/revenant/malfunction/proc/malfunction(turf/T, mob/user)
for(var/mob/living/simple_animal/bot/bot in T)
@@ -332,7 +332,7 @@
/obj/effect/proc_holder/spell/aoe_turf/revenant/blight/cast(list/targets, mob/living/simple_animal/revenant/user = usr)
if(attempt_cast(user))
for(var/turf/T in targets)
- INVOKE_ASYNC(src, .proc/blight, T, user)
+ INVOKE_ASYNC(src, PROC_REF(blight), T, user)
/obj/effect/proc_holder/spell/aoe_turf/revenant/blight/proc/blight(turf/T, mob/user)
for(var/mob/living/mob in T)
diff --git a/code/modules/antagonists/revenant/revenant_blight.dm b/code/modules/antagonists/revenant/revenant_blight.dm
index 09987a803f..0dc4a8af77 100644
--- a/code/modules/antagonists/revenant/revenant_blight.dm
+++ b/code/modules/antagonists/revenant/revenant_blight.dm
@@ -62,6 +62,6 @@
affected_mob.dna.species.handle_hair(affected_mob,"#1d2953")
affected_mob.visible_message("[affected_mob] looks terrifyingly gaunt...", "I suddenly feel like your skin is wrong...")
affected_mob.add_atom_colour("#1d2953", TEMPORARY_COLOUR_PRIORITY)
- addtimer(CALLBACK(src, .proc/cure), 100)
+ addtimer(CALLBACK(src, PROC_REF(cure)), 100)
else
return
diff --git a/code/modules/antagonists/revolution/revolution.dm b/code/modules/antagonists/revolution/revolution.dm
index 1d3c481324..ca22426e45 100644
--- a/code/modules/antagonists/revolution/revolution.dm
+++ b/code/modules/antagonists/revolution/revolution.dm
@@ -88,7 +88,7 @@
/datum/antagonist/rev/get_admin_commands()
. = ..()
- .["Promote"] = CALLBACK(src,.proc/admin_promote)
+ .["Promote"] = CALLBACK(src,PROC_REF(admin_promote))
/datum/antagonist/rev/proc/admin_promote(mob/admin)
var/datum/mind/O = owner
@@ -108,10 +108,10 @@
/datum/antagonist/rev/head/get_admin_commands()
. = ..()
. -= "Promote"
- .["Take flash"] = CALLBACK(src,.proc/admin_take_flash)
- .["Give flash"] = CALLBACK(src,.proc/admin_give_flash)
- .["Repair flash"] = CALLBACK(src,.proc/admin_repair_flash)
- .["Demote"] = CALLBACK(src,.proc/admin_demote)
+ .["Take flash"] = CALLBACK(src,PROC_REF(admin_take_flash))
+ .["Give flash"] = CALLBACK(src,PROC_REF(admin_give_flash))
+ .["Repair flash"] = CALLBACK(src,PROC_REF(admin_repair_flash))
+ .["Demote"] = CALLBACK(src,PROC_REF(admin_demote))
/datum/antagonist/rev/head/proc/admin_take_flash(mob/admin)
var/list/L = owner.current.get_contents()
@@ -269,7 +269,7 @@
var/datum/antagonist/rev/R = M.has_antag_datum(/datum/antagonist/rev)
R.objectives |= objectives
- addtimer(CALLBACK(src,.proc/update_objectives),HEAD_UPDATE_PERIOD,TIMER_UNIQUE)
+ addtimer(CALLBACK(src,PROC_REF(update_objectives)),HEAD_UPDATE_PERIOD,TIMER_UNIQUE)
/datum/team/revolution/proc/head_revolutionaries()
. = list()
@@ -301,7 +301,7 @@
var/datum/antagonist/rev/rev = new_leader.has_antag_datum(/datum/antagonist/rev)
rev.promote()
- addtimer(CALLBACK(src,.proc/update_heads),HEAD_UPDATE_PERIOD,TIMER_UNIQUE)
+ addtimer(CALLBACK(src,PROC_REF(update_heads)),HEAD_UPDATE_PERIOD,TIMER_UNIQUE)
/datum/team/revolution/proc/save_members()
ex_headrevs = get_antag_minds(/datum/antagonist/rev/head, TRUE)
diff --git a/code/modules/antagonists/roguetown/villain/bandit.dm b/code/modules/antagonists/roguetown/villain/bandit.dm
index adb35f6d99..e39c011423 100644
--- a/code/modules/antagonists/roguetown/villain/bandit.dm
+++ b/code/modules/antagonists/roguetown/villain/bandit.dm
@@ -72,7 +72,7 @@
// H.real_name = H.client.prefs.pref_species.random_name(MALE,1) //set_species randomizes name
H.cmode_music = 'sound/music/combatbandit.ogg'
- addtimer(CALLBACK(H, /mob/living/carbon/human/.proc/choose_name_popup, "BANDIT"), 5 SECONDS)
+ addtimer(CALLBACK(H, TYPE_PROC_REF(/mob/living/carbon/human, choose_name_popup), "BANDIT"), 5 SECONDS)
// H.job = "Bandit"
// H.advjob = pick("Cheesemaker", "Mercenary", "Barbarian", "Ranger", "Rogue")
H.equipOutfit(/datum/outfit/job/roguetown/bandit)
diff --git a/code/modules/antagonists/roguetown/villain/peasantrebel.dm b/code/modules/antagonists/roguetown/villain/peasantrebel.dm
index 402271b7ea..6a2159e4c0 100644
--- a/code/modules/antagonists/roguetown/villain/peasantrebel.dm
+++ b/code/modules/antagonists/roguetown/villain/peasantrebel.dm
@@ -125,7 +125,7 @@
user.say(inputty, forced = "spell")
var/datum/antagonist/prebel/PR = user.mind.has_antag_datum(/datum/antagonist/prebel)
for(var/mob/living/carbon/human/L in get_hearers_in_view(6, get_turf(user)))
- addtimer(CALLBACK(L,/mob/living/carbon/human.proc/rev_ask, user,PR,inputty),1)
+ addtimer(CALLBACK(L,TYPE_PROC_REF(/mob/living/carbon/human, rev_ask), user,PR,inputty),1)
/mob/living/carbon/human/proc/rev_ask(mob/living/carbon/human/guy,datum/antagonist/prebel/mind_datum,offer)
if(!guy || !mind_datum || !offer)
@@ -182,7 +182,7 @@
R = M.has_antag_datum(/datum/antagonist/prebel/head)
R.objectives |= objectives
- addtimer(CALLBACK(src,.proc/update_objectives),INGAME_ROLE_HEAD_UPDATE_PERIOD,TIMER_UNIQUE)
+ addtimer(CALLBACK(src,PROC_REF(update_objectives)),INGAME_ROLE_HEAD_UPDATE_PERIOD,TIMER_UNIQUE)
/datum/team/prebels/roundend_report()
diff --git a/code/modules/antagonists/roguetown/villain/vampire.dm b/code/modules/antagonists/roguetown/villain/vampire.dm
index bb0f6222db..45553aaa3b 100644
--- a/code/modules/antagonists/roguetown/villain/vampire.dm
+++ b/code/modules/antagonists/roguetown/villain/vampire.dm
@@ -375,7 +375,7 @@
if(mob_timers["becoming_vampire"])
return
mob_timers["becoming_vampire"] = world.time
- addtimer(CALLBACK(src, .mob/living/carbon/human/proc/vampire_finalize), 2 MINUTES)
+ addtimer(CALLBACK(src, TYPE_PROC_REF(/mob/living/carbon/human, vampire_finalize)), 2 MINUTES)
to_chat(src, "I feel sick...")
src.playsound_local(get_turf(src), 'sound/music/horror.ogg', 80, FALSE, pressure_affected = FALSE)
flash_fullscreen("redflash3")
@@ -407,4 +407,4 @@
H.layer = SPLASHSCREEN_LAYER+0.1
client.screen += H
H.Fade()
- addtimer(CALLBACK(H, /obj/screen/gameover/proc/Fade, TRUE), 100)
+ addtimer(CALLBACK(H, TYPE_PROC_REF(/obj/screen/gameover, Fade), TRUE), 100)
diff --git a/code/modules/antagonists/roguetown/villain/vampirelord.dm b/code/modules/antagonists/roguetown/villain/vampirelord.dm
index dd0f1a06f5..0203e9dc53 100644
--- a/code/modules/antagonists/roguetown/villain/vampirelord.dm
+++ b/code/modules/antagonists/roguetown/villain/vampirelord.dm
@@ -4,6 +4,8 @@
#define VAMP_LEVEL_THREE 15000
#define VAMP_LEVEL_FOUR 20000
+GLOBAL_LIST_EMPTY(vampire_objects)
+
/datum/antagonist/vampirelord
name = "Vampire Lord"
roundend_category = "Vampires"
@@ -68,20 +70,20 @@
owner.current.verbs |= /mob/living/carbon/human/proc/disguise_button
add_objective(/datum/objective/vlordserve)
finalize_vampire_lesser()
- for(var/obj/structure/vampire/bloodpool/mansion in world)
+ for(var/obj/structure/vampire/bloodpool/mansion in GLOB.vampire_objects)
mypool = mansion
equip_spawn()
greet()
- addtimer(CALLBACK(owner.current, /mob/living/carbon/human/.proc/spawn_pick_class, "VAMPIRE SPAWN"), 5 SECONDS)
+ addtimer(CALLBACK(owner.current, TYPE_PROC_REF(/mob/living/carbon/human, spawn_pick_class), "VAMPIRE SPAWN"), 5 SECONDS)
else
forge_vampirelord_objectives()
finalize_vampire()
owner.current.verbs |= /mob/living/carbon/human/proc/demand_submission
owner.current.verbs |= /mob/living/carbon/human/proc/punish_spawn
- for(var/obj/structure/vampire/bloodpool/mansion in world)
+ for(var/obj/structure/vampire/bloodpool/mansion in GLOB.vampire_objects)
mypool = mansion
equip_lord()
- addtimer(CALLBACK(owner.current, /mob/living/carbon/human/.proc/choose_name_popup, "VAMPIRE LORD"), 5 SECONDS)
+ addtimer(CALLBACK(owner.current, TYPE_PROC_REF(/mob/living/carbon/human, choose_name_popup), "VAMPIRE LORD"), 5 SECONDS)
greet()
return ..()
// OLD AND EDITED
@@ -398,11 +400,11 @@
vamplevel = 1
batform = new
owner.current.AddSpell(batform)
- for(var/obj/structure/vampire/portalmaker/S in world)
+ for(var/obj/structure/vampire/portalmaker/S in GLOB.vampire_objects)
S.unlocked = TRUE
for(var/S in MOBSTATS)
owner.current.change_stat(S, 2)
- for(var/obj/structure/vampire/bloodpool/B in world)
+ for(var/obj/structure/vampire/bloodpool/B in GLOB.vampire_objects)
B.nextlevel = VAMP_LEVEL_TWO
to_chat(owner, "I am refreshed and have grown stronger. The visage of the bat is once again available to me. I can also once again access my portals.")
if(1)
@@ -415,12 +417,12 @@
owner.current.AddSpell(gas)
for(var/S in MOBSTATS)
owner.current.change_stat(S, 2)
- for(var/obj/structure/vampire/bloodpool/B in world)
+ for(var/obj/structure/vampire/bloodpool/B in GLOB.vampire_objects)
B.nextlevel = VAMP_LEVEL_THREE
to_chat(owner, "My power is returning. I can once again access my spells. I have also regained usage of my mist form.")
if(2)
vamplevel = 3
- for(var/obj/structure/vampire/necromanticbook/S in world)
+ for(var/obj/structure/vampire/necromanticbook/S in GLOB.vampire_objects)
S.unlocked = TRUE
owner.current.verbs |= /mob/living/carbon/human/proc/blood_strength
owner.current.verbs |= /mob/living/carbon/human/proc/blood_celerity
@@ -428,7 +430,7 @@
owner.current.AddSpell(new /obj/effect/proc_holder/spell/targeted/transfix/master)
for(var/S in MOBSTATS)
owner.current.change_stat(S, 2)
- for(var/obj/structure/vampire/bloodpool/B in world)
+ for(var/obj/structure/vampire/bloodpool/B in GLOB.vampire_objects)
B.nextlevel = VAMP_LEVEL_FOUR
to_chat(owner, "My dominion over others minds and my own body returns to me. I am nearing perfection. The armies of the dead shall now answer my call.")
if(3)
@@ -492,7 +494,7 @@
to_chat(V, "A message from [src.real_name]:[msg]")
for(var/datum/mind/D in C.deathknights)
to_chat(D, "A message from [src.real_name]:[msg]")
- for(var/mob/dead/observer/rogue/arcaneeye/A in world)
+ for(var/mob/dead/observer/rogue/arcaneeye/A in GLOB.mob_list)
to_chat(A, "A message from [src.real_name]:[msg]")
/mob/living/carbon/human/proc/punish_spawn()
@@ -530,25 +532,25 @@
/obj/structure/vampire/portal/Crossed(atom/movable/AM)
. = ..()
if(istype(AM, /mob/living))
- for(var/obj/effect/landmark/vteleport/dest in world)
+ for(var/obj/effect/landmark/vteleport/dest in GLOB.landmarks_list)
playsound(loc, 'sound/misc/portalenter.ogg', 100, FALSE, pressure_affected = FALSE)
AM.forceMove(dest.loc)
break
/obj/structure/vampire/portal/sending/Crossed(atom/movable/AM)
if(istype(AM, /mob/living))
- for(var/obj/effect/landmark/vteleportsenddest/V in world)
+ for(var/obj/effect/landmark/vteleportsenddest/V in GLOB.landmarks_list)
AM.forceMove(V.loc)
/obj/structure/vampire/portal/sending/Destroy()
- for(var/obj/effect/landmark/vteleportsenddest/V in world)
+ for(var/obj/effect/landmark/vteleportsenddest/V in GLOB.landmarks_list)
qdel(V)
- for(var/obj/structure/vampire/portalmaker/P in world)
+ for(var/obj/structure/vampire/portalmaker/P in GLOB.vampire_objects)
P.sending = FALSE
..()
/obj/structure/vampire/portalmaker/proc/create_portal_return(aname,duration)
- for(var/obj/effect/landmark/vteleportdestination/Vamp in world)
+ for(var/obj/effect/landmark/vteleportdestination/Vamp in GLOB.landmarks_list)
if(Vamp.amuletname == aname)
var/obj/structure/vampire/portal/P = new(Vamp.loc)
P.duration = duration
@@ -558,7 +560,7 @@
/obj/structure/vampire/portalmaker/proc/create_portal(choice,duration)
sending = TRUE
- for(var/obj/effect/landmark/vteleportsending/S in world)
+ for(var/obj/effect/landmark/vteleportsending/S in GLOB.landmarks_list)
var/obj/structure/vampire/portal/sending/P = new(S.loc)
P.visible_message("A sickening tear is heard as a sinister portal emerges.")
@@ -571,7 +573,7 @@
qdel(src)
/obj/structure/vampire/portal/sending/Destroy()
- for(var/obj/structure/vampire/portalmaker/PM in world)
+ for(var/obj/structure/vampire/portalmaker/PM in GLOB.vampire_objects)
PM.sending = FALSE
. = ..()
@@ -664,7 +666,7 @@
var/inputportal = input(user, "Which type of portal?", "Portal Type") as anything in choices
switch(inputportal)
if("Return")
- for(var/obj/item/clothing/neck/roguetown/portalamulet/P in world)
+ for(var/obj/item/clothing/neck/roguetown/portalamulet/P in GLOB.vampire_objects)
possibleportals += P
var/atom/choice = input(user, "Choose an area to open the portal", "Choices") as null|anything in possibleportals
if(!choice)
@@ -686,7 +688,7 @@
if(sending)
to_chat(user, "A portal is already active!")
return
- for(var/obj/item/clothing/neck/roguetown/portalamulet/P in world)
+ for(var/obj/item/clothing/neck/roguetown/portalamulet/P in GLOB.vampire_objects)
sendpossibleportals += P
var/atom/choice = input(user, "Choose an area to open the portal to", "Choices") as null|anything in sendpossibleportals
if(!choice)
@@ -713,7 +715,7 @@
uses -= 1
var/obj/effect/landmark/vteleportdestination/Vamp = new(loc)
Vamp.amuletname = name
- for(var/obj/structure/vampire/portalmaker/P in world)
+ for(var/obj/structure/vampire/portalmaker/P in GLOB.vampire_objects)
P.create_portal_return(name, 3000)
user.playsound_local(get_turf(src), 'sound/misc/portalactivate.ogg', 100, FALSE, pressure_affected = FALSE)
if(uses <= 0)
@@ -770,7 +772,7 @@
sunstolen = FALSE
priority_announce("The Sun is torn from the sky!", "Terrible Omen", 'sound/misc/astratascream.ogg')
addomen("sunsteal")
- for(var/mob/living/carbon/human/W in world)
+ for(var/mob/living/carbon/human/W in GLOB.human_list)
var/datum/patrongods/patron = W.client.prefs.selected_patron
if(patron.name == "Astrata")
if(!W.mind.antag_datums)
@@ -969,11 +971,27 @@
icon = 'icons/roguetown/clothing/neck.dmi'
var/uses = 3
+/obj/item/clothing/neck/roguetown/portalamulet/Initialize()
+ GLOB.vampire_objects |= src
+ . = ..()
+
+/obj/item/clothing/neck/roguetown/portalamulet/Destroy()
+ GLOB.vampire_objects -= src
+ return ..()
+
/obj/structure/vampire
icon = 'icons/roguetown/topadd/death/vamp-lord.dmi'
var/unlocked = FALSE
density = TRUE
+/obj/structure/vampire/Initialize()
+ GLOB.vampire_objects |= src
+ . = ..()
+
+/obj/structure/vampire/Destroy()
+ GLOB.vampire_objects -= src
+ return ..()
+
/obj/structure/vampire/bloodpool
name = "Crimson Crucible"
icon_state = "vat"
@@ -1159,7 +1177,7 @@
to_chat(V, "A message from [src.real_name]:[msg]")
for(var/datum/mind/D in C.deathknights)
to_chat(D, "A message from [src.real_name]:[msg]")
- for(var/mob/dead/observer/rogue/arcaneeye/A in world)
+ for(var/mob/dead/observer/rogue/arcaneeye/A in GLOB.mob_list)
to_chat(A, "A message from [src.real_name]:[msg]")
/mob/dead/observer/rogue/arcaneeye/proc/eye_up()
diff --git a/code/modules/antagonists/roguetown/villain/zombie.dm b/code/modules/antagonists/roguetown/villain/zombie.dm
index 1758398ac0..58e4438d23 100644
--- a/code/modules/antagonists/roguetown/villain/zombie.dm
+++ b/code/modules/antagonists/roguetown/villain/zombie.dm
@@ -83,8 +83,17 @@
for(var/X in H.bodyparts)
var/obj/item/bodypart/BP = X
BP.update_disabled()
- H.STASTR = rand(12,18)
- H.STASPD = rand(5,7)
+
+ if(prob(8))
+ H.STASTR = 18
+ else
+ H.STASTR = rand(8,11)
+
+ if(prob(8))
+ H.STASPD = 7
+ else
+ H.STASPD = rand(2,4)
+
H.STAINT = 1
@@ -176,26 +185,29 @@
//This occurs when one zombie infects a living human, going into instadeath from here is kind of shit and confusing
//We instead just transform at the end
-/mob/living/carbon/human/proc/zombie_infect()
- if(!mind)
- return
- if(mind.has_antag_datum(/datum/antagonist/vampirelord))
- return
- if(mind.has_antag_datum(/datum/antagonist/zombie))
- return
- if(mind.has_antag_datum(/datum/antagonist/werewolf))
+/mob/living/carbon/human/proc/zombie_infect_attempt()
+ if(prob(7)) // Do you prefer if(prob(93)) return?
+ if(!mind)
+ return
+ if(mind.has_antag_datum(/datum/antagonist/vampirelord))
+ return
+ if(mind.has_antag_datum(/datum/antagonist/zombie))
+ return
+ if(mind.has_antag_datum(/datum/antagonist/werewolf))
+ return
+ var/datum/antagonist/zombie/new_antag = new /datum/antagonist/zombie()
+ mind.add_antag_datum(new_antag)
+ if(stat != DEAD)
+ to_chat(src, "I feel horrible... REALLY horrible after that...")
+ if(getToxLoss() >= 75 && blood_volume)
+ mob_timers["puke"] = world.time
+ vomit(1, blood = TRUE)
+ sleep(1 MINUTES) //you get a minute
+ flash_fullscreen("redflash3")
+ to_chat(src, "It hurts... Is this really the end for me...")
+ emote("scream") // heres your warning to others bro
+ Knockdown(1)
+ new_antag.wake_zombie(TRUE)
+ //death()
+ else
return
- var/datum/antagonist/zombie/new_antag = new /datum/antagonist/zombie()
- mind.add_antag_datum(new_antag)
- if(stat != DEAD)
- to_chat(src, "I feel horrible... REALLY horrible after that...")
- if(getToxLoss() >= 75 && blood_volume)
- mob_timers["puke"] = world.time
- vomit(1, blood = TRUE)
- sleep(1 MINUTES) //you get a minute
- flash_fullscreen("redflash3")
- to_chat(src, "It hurts... Is this really the end for me...")
- emote("scream") // heres your warning to others bro
- Knockdown(1)
- new_antag.wake_zombie(TRUE)
- //death()
diff --git a/code/modules/antagonists/slaughter/slaughter.dm b/code/modules/antagonists/slaughter/slaughter.dm
index 9f51fa31a5..9d0bc70013 100644
--- a/code/modules/antagonists/slaughter/slaughter.dm
+++ b/code/modules/antagonists/slaughter/slaughter.dm
@@ -68,7 +68,7 @@
/mob/living/simple_animal/slaughter/phasein()
. = ..()
add_movespeed_modifier(MOVESPEED_ID_SLAUGHTER, update=TRUE, priority=100, multiplicative_slowdown=-1)
- addtimer(CALLBACK(src, .proc/remove_movespeed_modifier, MOVESPEED_ID_SLAUGHTER, TRUE), 6 SECONDS, TIMER_UNIQUE | TIMER_OVERRIDE)
+ addtimer(CALLBACK(src, PROC_REF(remove_movespeed_modifier), MOVESPEED_ID_SLAUGHTER, TRUE), 6 SECONDS, TIMER_UNIQUE | TIMER_OVERRIDE)
//The loot from killing a slaughter demon - can be consumed to allow the user to blood crawl
diff --git a/code/modules/antagonists/traitor/datum_traitor.dm b/code/modules/antagonists/traitor/datum_traitor.dm
index a791b881c8..a29f622680 100644
--- a/code/modules/antagonists/traitor/datum_traitor.dm
+++ b/code/modules/antagonists/traitor/datum_traitor.dm
@@ -27,7 +27,7 @@
if(give_objectives)
forge_traitor_objectives()
finalize_traitor()
- RegisterSignal(owner.current, COMSIG_MOVABLE_HEAR, .proc/handle_hearing)
+ RegisterSignal(owner.current, COMSIG_MOVABLE_HEAR, PROC_REF(handle_hearing))
return ..()
/datum/antagonist/traitor/on_removal()
@@ -38,7 +38,7 @@
A.verbs -= /mob/living/silicon/ai/proc/choose_modules
A.malf_picker.remove_malf_verbs(A)
qdel(A.malf_picker)
- UnregisterSignal(owner.current, COMSIG_MOVABLE_HEAR, .proc/handle_hearing)
+ UnregisterSignal(owner.current, COMSIG_MOVABLE_HEAR, PROC_REF(handle_hearing))
SSticker.mode.traitors -= owner
if(!silent && owner.current)
to_chat(owner.current,"I are no longer the [special_role]!")
diff --git a/code/modules/antagonists/traitor/equipment/Malf_Modules.dm b/code/modules/antagonists/traitor/equipment/Malf_Modules.dm
index 4b2774db22..d20b75d6e7 100644
--- a/code/modules/antagonists/traitor/equipment/Malf_Modules.dm
+++ b/code/modules/antagonists/traitor/equipment/Malf_Modules.dm
@@ -430,8 +430,8 @@ GLOBAL_LIST_INIT(blacklisted_malf_machines, typecacheof(list(
for(var/obj/machinery/door/D in GLOB.airlocks)
if(!is_station_level(D.z))
continue
- INVOKE_ASYNC(D, /obj/machinery/door.proc/hostile_lockdown, owner)
- addtimer(CALLBACK(D, /obj/machinery/door.proc/disable_lockdown), 900)
+ INVOKE_ASYNC(D, TYPE_PROC_REF(/obj/machinery/door, hostile_lockdown), owner)
+ addtimer(CALLBACK(D, TYPE_PROC_REF(/obj/machinery/door, disable_lockdown)), 900)
var/obj/machinery/computer/communications/C = locate() in GLOB.machines
if(C)
@@ -439,7 +439,7 @@ GLOBAL_LIST_INIT(blacklisted_malf_machines, typecacheof(list(
minor_announce("Hostile runtime detected in door controllers. Isolation lockdown protocols are now in effect. Please remain calm.","Network Alert:", TRUE)
to_chat(owner, "Lockdown initiated. Network reset in 90 seconds.")
- addtimer(CALLBACK(GLOBAL_PROC, .proc/minor_announce,
+ addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(minor_announce),
"Automatic system reboot complete. Have a secure day.",
"Network reset:"), 900)
@@ -595,7 +595,7 @@ GLOBAL_LIST_INIT(blacklisted_malf_machines, typecacheof(list(
attached_action.desc = ""
attached_action.UpdateButtonIcon()
target.audible_message("I hear a loud electrical buzzing sound coming from [target]!")
- addtimer(CALLBACK(attached_action, /datum/action/innate/ai/ranged/overload_machine.proc/detonate_machine, target), 50) //kaboom!
+ addtimer(CALLBACK(attached_action, TYPE_PROC_REF(/datum/action/innate/ai/ranged/overload_machine, detonate_machine), target), 50) //kaboom!
remove_ranged_ability("Overcharging machine...")
return TRUE
@@ -650,7 +650,7 @@ GLOBAL_LIST_INIT(blacklisted_malf_machines, typecacheof(list(
attached_action.desc = ""
attached_action.UpdateButtonIcon()
target.audible_message("I hear a loud electrical buzzing sound coming from [target]!")
- addtimer(CALLBACK(attached_action, /datum/action/innate/ai/ranged/override_machine.proc/animate_machine, target), 50) //kabeep!
+ addtimer(CALLBACK(attached_action, TYPE_PROC_REF(/datum/action/innate/ai/ranged/override_machine, animate_machine), target), 50) //kabeep!
remove_ranged_ability("Sending override signal...")
return TRUE
@@ -725,7 +725,7 @@ GLOBAL_LIST_INIT(blacklisted_malf_machines, typecacheof(list(
I.loc = T
client.images += I
I.icon_state = "[success ? "green" : "red"]Overlay" //greenOverlay and redOverlay for success and failure respectively
- addtimer(CALLBACK(src, .proc/remove_transformer_image, client, I, T), 30)
+ addtimer(CALLBACK(src, PROC_REF(remove_transformer_image), client, I, T), 30)
if(!success)
to_chat(src, "[alert_msg]")
return success
@@ -788,7 +788,7 @@ GLOBAL_LIST_INIT(blacklisted_malf_machines, typecacheof(list(
for(var/obj/machinery/light/L in GLOB.machines)
if(is_station_level(L.z))
L.no_emergency = TRUE
- INVOKE_ASYNC(L, /obj/machinery/light/.proc/update, FALSE)
+ INVOKE_ASYNC(L, TYPE_PROC_REF(/obj/machinery/light, update), FALSE)
CHECK_TICK
to_chat(owner, "Emergency light connections severed.")
owner.playsound_local(owner, 'sound/blank.ogg', 50, FALSE)
diff --git a/code/modules/antagonists/traitor/syndicate_contract.dm b/code/modules/antagonists/traitor/syndicate_contract.dm
index 788a736f7a..ea84635835 100644
--- a/code/modules/antagonists/traitor/syndicate_contract.dm
+++ b/code/modules/antagonists/traitor/syndicate_contract.dm
@@ -51,7 +51,7 @@
/datum/syndicate_contract/proc/launch_extraction_pod(turf/empty_pod_turf)
var/obj/structure/closet/supplypod/extractionpod/empty_pod = new()
- RegisterSignal(empty_pod, COMSIG_ATOM_ENTERED, .proc/enter_check)
+ RegisterSignal(empty_pod, COMSIG_ATOM_ENTERED, PROC_REF(enter_check))
empty_pod.stay_after_drop = TRUE
empty_pod.reversing = TRUE
@@ -144,7 +144,7 @@
/datum/syndicate_contract/proc/handleVictimExperience(mob/living/M)
// Ship 'em back - dead or alive, 4 minutes wait.
// Even if they weren't the target, we're still treating them the same.
- addtimer(CALLBACK(src, .proc/returnVictim, M), (60 * 10) * 4)
+ addtimer(CALLBACK(src, PROC_REF(returnVictim), M), (60 * 10) * 4)
if (M.stat != DEAD)
// Heal them up - gets them out of crit/soft crit. If omnizine is removed in the future, this needs to be replaced with a
diff --git a/code/modules/antagonists/wizard/equipment/artefact.dm b/code/modules/antagonists/wizard/equipment/artefact.dm
index cb1fbbed57..24453d2e16 100644
--- a/code/modules/antagonists/wizard/equipment/artefact.dm
+++ b/code/modules/antagonists/wizard/equipment/artefact.dm
@@ -129,7 +129,7 @@
insaneinthemembrane.sanity = 0
for(var/lore in typesof(/datum/brain_trauma/severe))
C.gain_trauma(lore)
- addtimer(CALLBACK(src, /obj/singularity/wizard.proc/deranged, C), 100)
+ addtimer(CALLBACK(src, TYPE_PROC_REF(/obj/singularity/wizard, deranged), C), 100)
/obj/singularity/wizard/proc/deranged(mob/living/carbon/C)
if(!C || C.stat == DEAD)
diff --git a/code/modules/antagonists/wizard/wizard.dm b/code/modules/antagonists/wizard/wizard.dm
index 2448e18ec1..f06eeb525a 100644
--- a/code/modules/antagonists/wizard/wizard.dm
+++ b/code/modules/antagonists/wizard/wizard.dm
@@ -164,7 +164,7 @@
/datum/antagonist/wizard/get_admin_commands()
. = ..()
- .["Send to Lair"] = CALLBACK(src,.proc/admin_send_to_lair)
+ .["Send to Lair"] = CALLBACK(src,PROC_REF(admin_send_to_lair))
/datum/antagonist/wizard/proc/admin_send_to_lair(mob/admin)
owner.current.forceMove(pick(GLOB.wizardstart))
diff --git a/code/modules/assembly/assembly.dm b/code/modules/assembly/assembly.dm
index 36d1a6b055..0936ae68d1 100644
--- a/code/modules/assembly/assembly.dm
+++ b/code/modules/assembly/assembly.dm
@@ -56,9 +56,9 @@
//Called when another assembly acts on this one, var/radio will determine where it came from for wire calcs
/obj/item/assembly/proc/pulsed(radio = FALSE)
if(wire_type & WIRE_RECEIVE)
- INVOKE_ASYNC(src, .proc/activate)
+ INVOKE_ASYNC(src, PROC_REF(activate))
if(radio && (wire_type & WIRE_RADIO_RECEIVE))
- INVOKE_ASYNC(src, .proc/activate)
+ INVOKE_ASYNC(src, PROC_REF(activate))
return TRUE
diff --git a/code/modules/assembly/doorcontrol.dm b/code/modules/assembly/doorcontrol.dm
index 947a7ef747..4f3550a37d 100644
--- a/code/modules/assembly/doorcontrol.dm
+++ b/code/modules/assembly/doorcontrol.dm
@@ -22,7 +22,7 @@
if(M.id == src.id)
if(openclose == null || !sync_doors)
openclose = M.density
- INVOKE_ASYNC(M, openclose ? /obj/machinery/door/poddoor.proc/open : /obj/machinery/door/poddoor.proc/close)
+ INVOKE_ASYNC(M, openclose ? TYPE_PROC_REF(/obj/machinery/door/poddoor, open) : TYPE_PROC_REF(/obj/machinery/door/poddoor, close))
addtimer(VARSET_CALLBACK(src, cooldown, FALSE), 10)
@@ -66,7 +66,7 @@
D.safe = !D.safe
for(var/D in open_or_close)
- INVOKE_ASYNC(D, doors_need_closing ? /obj/machinery/door/airlock.proc/close : /obj/machinery/door/airlock.proc/open)
+ INVOKE_ASYNC(D, doors_need_closing ? TYPE_PROC_REF(/obj/machinery/door/airlock, close) : TYPE_PROC_REF(/obj/machinery/door/airlock, open))
addtimer(VARSET_CALLBACK(src, cooldown, FALSE), 10)
@@ -81,7 +81,7 @@
cooldown = TRUE
for(var/obj/machinery/door/poddoor/M in GLOB.machines)
if (M.id == src.id)
- INVOKE_ASYNC(M, /obj/machinery/door/poddoor.proc/open)
+ INVOKE_ASYNC(M, TYPE_PROC_REF(/obj/machinery/door/poddoor, open))
sleep(10)
@@ -93,7 +93,7 @@
for(var/obj/machinery/door/poddoor/M in GLOB.machines)
if (M.id == src.id)
- INVOKE_ASYNC(M, /obj/machinery/door/poddoor.proc/close)
+ INVOKE_ASYNC(M, TYPE_PROC_REF(/obj/machinery/door/poddoor, close))
addtimer(VARSET_CALLBACK(src, cooldown, FALSE), 10)
@@ -108,7 +108,7 @@
cooldown = TRUE
for(var/obj/machinery/sparker/M in GLOB.machines)
if (M.id == src.id)
- INVOKE_ASYNC(M, /obj/machinery/sparker.proc/ignite)
+ INVOKE_ASYNC(M, TYPE_PROC_REF(/obj/machinery/sparker, ignite))
for(var/obj/machinery/igniter/M in GLOB.machines)
if(M.id == src.id)
@@ -128,7 +128,7 @@
cooldown = TRUE
for(var/obj/machinery/flasher/M in GLOB.machines)
if(M.id == src.id)
- INVOKE_ASYNC(M, /obj/machinery/flasher.proc/flash)
+ INVOKE_ASYNC(M, TYPE_PROC_REF(/obj/machinery/flasher, flash))
addtimer(VARSET_CALLBACK(src, cooldown, FALSE), 50)
diff --git a/code/modules/assembly/flash.dm b/code/modules/assembly/flash.dm
index 37d5e244b6..53358bd80c 100644
--- a/code/modules/assembly/flash.dm
+++ b/code/modules/assembly/flash.dm
@@ -39,7 +39,7 @@
if(flash)
add_overlay(flashing_overlay)
attached_overlays += flashing_overlay
- addtimer(CALLBACK(src, /atom/.proc/update_icon), 5)
+ addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, update_icon)), 5)
if(holder)
holder.update_icon()
@@ -232,7 +232,7 @@
to_chat(I.owner, "My photon projector implant overheats and deactivates!")
I.Retract()
overheat = TRUE
- addtimer(CALLBACK(src, .proc/cooldown), flashcd * 2)
+ addtimer(CALLBACK(src, PROC_REF(cooldown)), flashcd * 2)
/obj/item/assembly/flash/armimplant/try_use_flash(mob/user = null)
if(overheat)
@@ -240,7 +240,7 @@
to_chat(I.owner, "My photon projector is running too hot to be used again so quickly!")
return FALSE
overheat = TRUE
- addtimer(CALLBACK(src, .proc/cooldown), flashcd)
+ addtimer(CALLBACK(src, PROC_REF(cooldown)), flashcd)
playsound(src, 'sound/blank.ogg', 100, TRUE)
update_icon(1)
return TRUE
diff --git a/code/modules/assembly/infrared.dm b/code/modules/assembly/infrared.dm
index fc142e8aea..377fdbb597 100644
--- a/code/modules/assembly/infrared.dm
+++ b/code/modules/assembly/infrared.dm
@@ -25,7 +25,7 @@
ROTATION_ALTCLICK | ROTATION_CLOCKWISE | ROTATION_COUNTERCLOCKWISE | ROTATION_FLIP | ROTATION_VERBS,
null,
null,
- CALLBACK(src,.proc/after_rotation)
+ CALLBACK(src,PROC_REF(after_rotation))
)
/obj/item/assembly/infra/proc/after_rotation()
@@ -167,7 +167,7 @@
return
if(listeningTo)
UnregisterSignal(listeningTo, COMSIG_ATOM_EXITED)
- RegisterSignal(newloc, COMSIG_ATOM_EXITED, .proc/check_exit)
+ RegisterSignal(newloc, COMSIG_ATOM_EXITED, PROC_REF(check_exit))
listeningTo = newloc
/obj/item/assembly/infra/proc/check_exit(datum/source, atom/movable/offender)
diff --git a/code/modules/assembly/signaler.dm b/code/modules/assembly/signaler.dm
index 2e6e3dc537..c8a9721376 100644
--- a/code/modules/assembly/signaler.dm
+++ b/code/modules/assembly/signaler.dm
@@ -113,7 +113,7 @@ Code:
code = new_code
if(href_list["send"])
- INVOKE_ASYNC(src, .proc/signal)
+ INVOKE_ASYNC(src, PROC_REF(signal))
if(usr)
attack_self(usr)
diff --git a/code/modules/assembly/timer.dm b/code/modules/assembly/timer.dm
index e3dac25f49..08ff8602e4 100644
--- a/code/modules/assembly/timer.dm
+++ b/code/modules/assembly/timer.dm
@@ -14,7 +14,7 @@
/obj/item/assembly/timer/suicide_act(mob/living/user)
user.visible_message("[user] looks at the timer and decides [user.p_their()] fate! It looks like [user.p_theyre()] going to commit suicide!")
activate()//doesnt rely on timer_end to prevent weird metas where one person can control the timer and therefore someone's life. (maybe that should be how it works...)
- addtimer(CALLBACK(src, .proc/manual_suicide, user), time*10)//kill myself once the time runs out
+ addtimer(CALLBACK(src, PROC_REF(manual_suicide), user), time*10)//kill myself once the time runs out
return MANUAL_SUICIDE
/obj/item/assembly/timer/proc/manual_suicide(mob/living/user)
diff --git a/code/modules/assembly/voice.dm b/code/modules/assembly/voice.dm
index b21dbfda75..f8a05a06bb 100644
--- a/code/modules/assembly/voice.dm
+++ b/code/modules/assembly/voice.dm
@@ -34,7 +34,7 @@
record_speech(speaker, raw_message, message_language)
else
if(check_activation(speaker, raw_message))
- addtimer(CALLBACK(src, .proc/pulse, 0), 10)
+ addtimer(CALLBACK(src, PROC_REF(pulse), 0), 10)
/obj/item/assembly/voice/proc/record_speech(atom/movable/speaker, raw_message, datum/language/message_language)
switch(mode)
@@ -52,7 +52,7 @@
say("Your voice pattern is saved.", message_language)
if(VOICE_SENSOR_MODE)
if(length(raw_message))
- addtimer(CALLBACK(src, .proc/pulse, 0), 10)
+ addtimer(CALLBACK(src, PROC_REF(pulse), 0), 10)
/obj/item/assembly/voice/proc/check_activation(atom/movable/speaker, raw_message)
. = FALSE
diff --git a/code/modules/atmospherics/environmental/LINDA_fire.dm b/code/modules/atmospherics/environmental/LINDA_fire.dm
index a1c721ece7..321d4b8916 100644
--- a/code/modules/atmospherics/environmental/LINDA_fire.dm
+++ b/code/modules/atmospherics/environmental/LINDA_fire.dm
@@ -77,7 +77,7 @@
perform_exposure()
setDir(pick(GLOB.cardinals))
air_update_turf()
- addtimer(CALLBACK(src, .proc/trigger_weather), rand(5,20))
+ addtimer(CALLBACK(src, PROC_REF(trigger_weather)), rand(5,20))
/obj/effect/hotspot/proc/perform_exposure()
diff --git a/code/modules/atmospherics/gasmixtures/reactions.dm b/code/modules/atmospherics/gasmixtures/reactions.dm
index c28201987f..2a995575a5 100644
--- a/code/modules/atmospherics/gasmixtures/reactions.dm
+++ b/code/modules/atmospherics/gasmixtures/reactions.dm
@@ -17,7 +17,7 @@
if (!reaction_key || initial(reaction_key.rarity) > initial(req_gas.rarity))
reaction_key = req_gas
.[reaction_key] += list(reaction)
- sortTim(., /proc/cmp_gas_reactions, TRUE)
+ sortTim(., GLOBAL_PROC_REF(cmp_gas_reactions), TRUE)
/proc/cmp_gas_reactions(list/datum/gas_reaction/a, list/datum/gas_reaction/b) // compares lists of reactions by the maximum priority contained within the list
if (!length(a) || !length(b))
diff --git a/code/modules/atmospherics/machinery/components/binary_devices/dp_vent_pump.dm b/code/modules/atmospherics/machinery/components/binary_devices/dp_vent_pump.dm
index 79c51fd06d..91e55cc386 100644
--- a/code/modules/atmospherics/machinery/components/binary_devices/dp_vent_pump.dm
+++ b/code/modules/atmospherics/machinery/components/binary_devices/dp_vent_pump.dm
@@ -167,7 +167,7 @@
if("set_external_pressure" in signal.data)
external_pressure_bound = CLAMP(text2num(signal.data["set_external_pressure"]),0,ONE_ATMOSPHERE*50)
- addtimer(CALLBACK(src, .proc/broadcast_status), 2)
+ addtimer(CALLBACK(src, PROC_REF(broadcast_status)), 2)
if(!("status" in signal.data)) //do not update_icon
update_icon()
diff --git a/code/modules/atmospherics/machinery/components/binary_devices/valve.dm b/code/modules/atmospherics/machinery/components/binary_devices/valve.dm
index e79c06228c..4e3769ede4 100644
--- a/code/modules/atmospherics/machinery/components/binary_devices/valve.dm
+++ b/code/modules/atmospherics/machinery/components/binary_devices/valve.dm
@@ -49,7 +49,7 @@ It's like a regular ol' straight pipe, but you can turn it on and off.
return
update_icon_nopipes(TRUE)
switching = TRUE
- addtimer(CALLBACK(src, .proc/finish_interact), 10)
+ addtimer(CALLBACK(src, PROC_REF(finish_interact)), 10)
/obj/machinery/atmospherics/components/binary/valve/proc/finish_interact()
toggle()
diff --git a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm
index 514ff9c0e8..f4c24f4e85 100644
--- a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm
+++ b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm
@@ -161,7 +161,7 @@
occupant_overlay.pixel_y--
add_overlay(occupant_overlay)
add_overlay("cover-on")
- addtimer(CALLBACK(src, .proc/run_anim, anim_up, occupant_overlay), 7, TIMER_UNIQUE)
+ addtimer(CALLBACK(src, PROC_REF(run_anim), anim_up, occupant_overlay), 7, TIMER_UNIQUE)
/obj/machinery/atmospherics/components/unary/cryo_cell/nap_violation(mob/violator)
open_machine()
diff --git a/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm b/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm
index 17044b24c2..1021595440 100644
--- a/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm
+++ b/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm
@@ -124,7 +124,7 @@
var/datum/gas_mixture/air_contents = airs[1]
volume_rate = CLAMP(number, 0, air_contents.volume)
- addtimer(CALLBACK(src, .proc/broadcast_status), 2)
+ addtimer(CALLBACK(src, PROC_REF(broadcast_status)), 2)
if(!("status" in signal.data)) //do not update_icon
update_icon()
diff --git a/code/modules/awaymissions/capture_the_flag.dm b/code/modules/awaymissions/capture_the_flag.dm
index efa963d9a2..1b7ef1fcf5 100644
--- a/code/modules/awaymissions/capture_the_flag.dm
+++ b/code/modules/awaymissions/capture_the_flag.dm
@@ -255,7 +255,7 @@
var/turf/T = get_turf(body)
new /obj/effect/ctf/ammo(T)
recently_dead_ckeys += body.ckey
- addtimer(CALLBACK(src, .proc/clear_cooldown, body.ckey), respawn_cooldown, TIMER_UNIQUE)
+ addtimer(CALLBACK(src, PROC_REF(clear_cooldown), body.ckey), respawn_cooldown, TIMER_UNIQUE)
body.dust()
/obj/machinery/capture_the_flag/proc/clear_cooldown(ckey)
@@ -379,7 +379,7 @@
/obj/item/gun/ballistic/automatic/pistol/deagle/ctf/dropped()
. = ..()
- addtimer(CALLBACK(src, .proc/floor_vanish), 1)
+ addtimer(CALLBACK(src, PROC_REF(floor_vanish)), 1)
/obj/item/gun/ballistic/automatic/pistol/deagle/ctf/proc/floor_vanish()
if(isturf(loc))
@@ -406,7 +406,7 @@
/obj/item/gun/ballistic/automatic/laser/ctf/dropped()
. = ..()
- addtimer(CALLBACK(src, .proc/floor_vanish), 1)
+ addtimer(CALLBACK(src, PROC_REF(floor_vanish)), 1)
/obj/item/gun/ballistic/automatic/laser/ctf/proc/floor_vanish()
if(isturf(loc))
@@ -417,7 +417,7 @@
/obj/item/ammo_box/magazine/recharge/ctf/dropped()
. = ..()
- addtimer(CALLBACK(src, .proc/floor_vanish), 1)
+ addtimer(CALLBACK(src, PROC_REF(floor_vanish)), 1)
/obj/item/ammo_box/magazine/recharge/ctf/proc/floor_vanish()
if(isturf(loc))
diff --git a/code/modules/awaymissions/mission_code/Academy.dm b/code/modules/awaymissions/mission_code/Academy.dm
index f74f8d9e98..f641327d4a 100644
--- a/code/modules/awaymissions/mission_code/Academy.dm
+++ b/code/modules/awaymissions/mission_code/Academy.dm
@@ -203,7 +203,7 @@
var/turf/T = get_turf(src)
T.visible_message("[src] flares briefly.")
- addtimer(CALLBACK(src, .proc/effect, user, .), 1 SECONDS)
+ addtimer(CALLBACK(src, PROC_REF(effect), user, .), 1 SECONDS)
/obj/item/dice/d20/fate/equipped(mob/user, slot)
. = ..()
diff --git a/code/modules/awaymissions/mission_code/murderdome.dm b/code/modules/awaymissions/mission_code/murderdome.dm
index 89016ea781..8a4e139b36 100644
--- a/code/modules/awaymissions/mission_code/murderdome.dm
+++ b/code/modules/awaymissions/mission_code/murderdome.dm
@@ -33,7 +33,7 @@
/obj/effect/murderdome/dead_barricade/Initialize()
. = ..()
- addtimer(CALLBACK(src, .proc/respawn), 3 MINUTES)
+ addtimer(CALLBACK(src, PROC_REF(respawn)), 3 MINUTES)
/obj/effect/murderdome/dead_barricade/proc/respawn()
if(!QDELETED(src))
diff --git a/code/modules/buildmode/buildmode.dm b/code/modules/buildmode/buildmode.dm
index 0e1c9c8c49..33476a5ba6 100644
--- a/code/modules/buildmode/buildmode.dm
+++ b/code/modules/buildmode/buildmode.dm
@@ -27,7 +27,7 @@
mode = new /datum/buildmode_mode/basic(src)
holder = c
buttons = list()
- li_cb = CALLBACK(src, .proc/post_login)
+ li_cb = CALLBACK(src, PROC_REF(post_login))
holder.player_details.post_login_callbacks += li_cb
create_buttons()
holder.screen += buttons
diff --git a/code/modules/cargo/gondolapod.dm b/code/modules/cargo/gondolapod.dm
index 973e8e3360..3553b2da8f 100644
--- a/code/modules/cargo/gondolapod.dm
+++ b/code/modules/cargo/gondolapod.dm
@@ -64,7 +64,7 @@
/mob/living/simple_animal/pet/gondola/gondolapod/proc/setOpened()
opened = TRUE
update_icon()
- addtimer(CALLBACK(src, .proc/setClosed), 50)
+ addtimer(CALLBACK(src, PROC_REF(setClosed)), 50)
/mob/living/simple_animal/pet/gondola/gondolapod/proc/setClosed()
opened = FALSE
diff --git a/code/modules/cargo/packs.dm b/code/modules/cargo/packs.dm
index 91c1b4a149..9bb48fbc75 100644
--- a/code/modules/cargo/packs.dm
+++ b/code/modules/cargo/packs.dm
@@ -1826,7 +1826,7 @@
anomalous_box_provided = TRUE
log_game("An anomalous pizza box was provided in a pizza crate at during cargo delivery")
if(prob(50))
- addtimer(CALLBACK(src, .proc/anomalous_pizza_report), rand(300, 1800))
+ addtimer(CALLBACK(src, PROC_REF(anomalous_pizza_report)), rand(300, 1800))
else
message_admins("An anomalous pizza box was silently created with no command report in a pizza crate delivery.")
break
diff --git a/code/modules/cargo/supplypod.dm b/code/modules/cargo/supplypod.dm
index 043b2e2c09..bcf0ac9059 100644
--- a/code/modules/cargo/supplypod.dm
+++ b/code/modules/cargo/supplypod.dm
@@ -117,7 +117,7 @@
/obj/structure/closet/supplypod/proc/handleReturningClose(atom/movable/holder, returntobay)
opened = FALSE
- INVOKE_ASYNC(holder, .proc/setClosed) //Use the INVOKE_ASYNC proc to call setClosed() on whatever the holder may be, without giving the atom/movable base class a setClosed() proc definition
+ INVOKE_ASYNC(holder, PROC_REF(setClosed)) //Use the INVOKE_ASYNC proc to call setClosed() on whatever the holder may be, without giving the atom/movable base class a setClosed() proc definition
for (var/atom/movable/O in get_turf(holder))
if ((ismob(O) && !isliving(O)) || (is_type_in_typecache(O, GLOB.blacklisted_cargo_types) && !isliving(O))) //We dont want to take ghosts with us, and we don't want blacklisted items going, but we allow mobs.
continue
@@ -186,11 +186,11 @@
var/mob/living/simple_animal/pet/gondola/gondolapod/benis = new(get_turf(src), src)
benis.contents |= contents //Move the contents of this supplypod into the gondolapod mob.
moveToNullspace()
- addtimer(CALLBACK(src, .proc/open, benis), openingDelay) //After the openingDelay passes, we use the open proc from this supplyprod while referencing the contents of the "holder", in this case the gondolapod mob
+ addtimer(CALLBACK(src, PROC_REF(open), benis), openingDelay) //After the openingDelay passes, we use the open proc from this supplyprod while referencing the contents of the "holder", in this case the gondolapod mob
else if (style == STYLE_SEETHROUGH)
open(src)
else
- addtimer(CALLBACK(src, .proc/open, src), openingDelay) //After the openingDelay passes, we use the open proc from this supplypod, while referencing this supplypod's contents
+ addtimer(CALLBACK(src, PROC_REF(open), src), openingDelay) //After the openingDelay passes, we use the open proc from this supplypod, while referencing this supplypod's contents
/obj/structure/closet/supplypod/open(atom/movable/holder, broken = FALSE, forced = FALSE) //The holder var represents an atom whose contents we will be working with
if (!holder)
@@ -206,7 +206,7 @@
return
if (openingSound)
playsound(get_turf(holder), openingSound, soundVolume, FALSE, FALSE) //Special admin sound to play
- INVOKE_ASYNC(holder, .proc/setOpened) //Use the INVOKE_ASYNC proc to call setOpened() on whatever the holder may be, without giving the atom/movable base class a setOpened() proc definition
+ INVOKE_ASYNC(holder, PROC_REF(setOpened)) //Use the INVOKE_ASYNC proc to call setOpened() on whatever the holder may be, without giving the atom/movable base class a setOpened() proc definition
if (style == STYLE_SEETHROUGH)
update_icon()
for (var/atom/movable/O in holder.contents) //Go through the contents of the holder
@@ -219,7 +219,7 @@
depart(src)
else
if(!stay_after_drop) // Departing should be handled manually
- addtimer(CALLBACK(src, .proc/depart, holder), departureDelay) //Finish up the pod's duties after a certain amount of time
+ addtimer(CALLBACK(src, PROC_REF(depart), holder), departureDelay) //Finish up the pod's duties after a certain amount of time
/obj/structure/closet/supplypod/proc/depart(atom/movable/holder)
if (leavingSound)
@@ -322,8 +322,8 @@
if (soundStartTime < 0)
soundStartTime = 1
if (!pod.effectQuiet)
- addtimer(CALLBACK(src, .proc/playFallingSound), soundStartTime)
- addtimer(CALLBACK(src, .proc/beginLaunch, pod.effectCircle), pod.landingDelay)
+ addtimer(CALLBACK(src, PROC_REF(playFallingSound)), soundStartTime)
+ addtimer(CALLBACK(src, PROC_REF(beginLaunch), pod.effectCircle), pod.landingDelay)
/obj/effect/DPtarget/proc/playFallingSound()
playsound(src, pod.fallingSound, pod.soundVolume, TRUE, 6)
@@ -341,7 +341,7 @@
M.Turn(rotation) //Turn the matrix
pod.transform = M //Turn the actual pod (Won't be visible until endLaunch() proc tho)
animate(fallingPod, pixel_z = 0, pixel_x = -16, time = pod.fallDuration, , easing = LINEAR_EASING) //Make the pod fall! At an angle!
- addtimer(CALLBACK(src, .proc/endLaunch), pod.fallDuration, TIMER_CLIENT_TIME) //Go onto the last step after a very short falling animation
+ addtimer(CALLBACK(src, PROC_REF(endLaunch)), pod.fallDuration, TIMER_CLIENT_TIME) //Go onto the last step after a very short falling animation
/obj/effect/DPtarget/proc/endLaunch()
pod.update_icon()
diff --git a/code/modules/cargo/supplypod_beacon.dm b/code/modules/cargo/supplypod_beacon.dm
index 2636954ffc..29c098318c 100644
--- a/code/modules/cargo/supplypod_beacon.dm
+++ b/code/modules/cargo/supplypod_beacon.dm
@@ -23,7 +23,7 @@
launched = TRUE
playsound(src,'sound/blank.ogg',50,FALSE)
playsound(src,'sound/blank.ogg',50,FALSE)
- addtimer(CALLBACK(src, .proc/endLaunch), 33)//wait 3.3 seconds (time it takes for supplypod to land), then update icon
+ addtimer(CALLBACK(src, PROC_REF(endLaunch)), 33)//wait 3.3 seconds (time it takes for supplypod to land), then update icon
if (SP_UNLINK)
linked = FALSE
playsound(src,'sound/blank.ogg',50,FALSE)
diff --git a/code/modules/client/client_colour.dm b/code/modules/client/client_colour.dm
index 05e574fa42..3c01b0379f 100644
--- a/code/modules/client/client_colour.dm
+++ b/code/modules/client/client_colour.dm
@@ -27,7 +27,7 @@
var/datum/client_colour/CC = new colour_type()
client_colours |= CC
- sortTim(client_colours, /proc/cmp_clientcolour_priority)
+ sortTim(client_colours, GLOBAL_PROC_REF(cmp_clientcolour_priority))
update_client_colour()
diff --git a/code/modules/client/client_defines.dm b/code/modules/client/client_defines.dm
index c9683faa83..71860fd862 100644
--- a/code/modules/client/client_defines.dm
+++ b/code/modules/client/client_defines.dm
@@ -217,11 +217,11 @@
var/image/P = W
if(istype(P))
animate(P,alpha = 0, time=20)
- addtimer(CALLBACK(src,.proc/kill_weather,P),20)
+ addtimer(CALLBACK(src,PROC_REF(kill_weather),P),20)
else //screen obj
var/obj/screen/O = W
animate(O,alpha = 0, time=10)
- addtimer(CALLBACK(src,.proc/kill_weather,O),10)
+ addtimer(CALLBACK(src,PROC_REF(kill_weather),O),10)
/client/proc/kill_weather(P)
diff --git a/code/modules/client/client_procs.dm b/code/modules/client/client_procs.dm
index ddd98f8e4e..b9b77645c5 100644
--- a/code/modules/client/client_procs.dm
+++ b/code/modules/client/client_procs.dm
@@ -1010,7 +1010,7 @@ GLOBAL_LIST_EMPTY(external_rsc_urls)
var/mob/living/M = mob
M.update_damage_hud()
if (prefs.auto_fit_viewport)
- addtimer(CALLBACK(src,.verb/fit_viewport,10)) //Delayed to avoid wingets from Login calls.
+ addtimer(CALLBACK(src, VERB_REF(fit_viewport), 1 SECONDS)) //Delayed to avoid wingets from Login calls.
/client/proc/generate_clickcatcher()
if(!void)
diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm
index 1467246179..d80c5bded5 100644
--- a/code/modules/client/preferences.dm
+++ b/code/modules/client/preferences.dm
@@ -934,7 +934,7 @@ GLOBAL_LIST_EMPTY(chosen_names)
//The job before the current job. I only use this to get the previous jobs color when I'm filling in blank rows.
var/datum/job/lastJob
- for(var/datum/job/job in sortList(SSjob.occupations, /proc/cmp_job_display_asc))
+ for(var/datum/job/job in sortList(SSjob.occupations, GLOBAL_PROC_REF(cmp_job_display_asc)))
if(!job.total_positions && !job.spawn_positions)
continue
diff --git a/code/modules/clothing/chameleon.dm b/code/modules/clothing/chameleon.dm
index 79a07b0662..1490a5b47e 100644
--- a/code/modules/clothing/chameleon.dm
+++ b/code/modules/clothing/chameleon.dm
@@ -85,7 +85,7 @@
var/datum/outfit/O = path
if(initial(O.can_be_admin_equipped))
standard_outfit_options[initial(O.name)] = path
- sortTim(standard_outfit_options, /proc/cmp_text_asc)
+ sortTim(standard_outfit_options, GLOBAL_PROC_REF(cmp_text_asc))
outfit_options = standard_outfit_options
/datum/action/chameleon_outfit/Trigger()
@@ -182,7 +182,7 @@
/datum/action/item_action/chameleon/change/proc/select_look(mob/user)
var/obj/item/picked_item
var/picked_name
- picked_name = input("Select [chameleon_name] to change into", "Chameleon [chameleon_name]", picked_name) as null|anything in sortList(chameleon_list, /proc/cmp_typepaths_asc)
+ picked_name = input("Select [chameleon_name] to change into", "Chameleon [chameleon_name]", picked_name) as null|anything in sortList(chameleon_list, GLOBAL_PROC_REF(cmp_typepaths_asc))
if(!picked_name)
return
picked_item = chameleon_list[picked_name]
diff --git a/code/modules/clothing/gloves/_gloves.dm b/code/modules/clothing/gloves/_gloves.dm
index d001b9853f..dee2af0392 100644
--- a/code/modules/clothing/gloves/_gloves.dm
+++ b/code/modules/clothing/gloves/_gloves.dm
@@ -14,7 +14,7 @@
/obj/item/clothing/gloves/ComponentInitialize()
. = ..()
- RegisterSignal(src, COMSIG_COMPONENT_CLEAN_ACT, .proc/clean_blood)
+ RegisterSignal(src, COMSIG_COMPONENT_CLEAN_ACT, PROC_REF(clean_blood))
/obj/item/clothing/gloves/proc/clean_blood(datum/source, strength)
if(strength < CLEAN_STRENGTH_BLOOD)
diff --git a/code/modules/clothing/head/jobs.dm b/code/modules/clothing/head/jobs.dm
index a8b61678a2..890dc8dab2 100644
--- a/code/modules/clothing/head/jobs.dm
+++ b/code/modules/clothing/head/jobs.dm
@@ -201,7 +201,7 @@
/obj/item/clothing/head/warden/drill/equipped(mob/M, slot)
. = ..()
if (slot == SLOT_HEAD)
- RegisterSignal(M, COMSIG_MOB_SAY, .proc/handle_speech)
+ RegisterSignal(M, COMSIG_MOB_SAY, PROC_REF(handle_speech))
else
UnregisterSignal(M, COMSIG_MOB_SAY)
diff --git a/code/modules/clothing/head/misc.dm b/code/modules/clothing/head/misc.dm
index 5a47ba0804..9830e1182c 100644
--- a/code/modules/clothing/head/misc.dm
+++ b/code/modules/clothing/head/misc.dm
@@ -375,7 +375,7 @@
/obj/item/clothing/head/frenchberet/equipped(mob/M, slot)
. = ..()
if (slot == SLOT_HEAD)
- RegisterSignal(M, COMSIG_MOB_SAY, .proc/handle_speech)
+ RegisterSignal(M, COMSIG_MOB_SAY, PROC_REF(handle_speech))
else
UnregisterSignal(M, COMSIG_MOB_SAY)
diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm
index 58719978dd..90e4969853 100644
--- a/code/modules/clothing/head/misc_special.dm
+++ b/code/modules/clothing/head/misc_special.dm
@@ -310,7 +310,7 @@
/obj/item/clothing/head/foilhat/Initialize(mapload)
. = ..()
if(!warped)
- AddComponent(/datum/component/anti_magic, FALSE, FALSE, TRUE, ITEM_SLOT_HEAD, 6, TRUE, null, CALLBACK(src, .proc/warp_up))
+ AddComponent(/datum/component/anti_magic, FALSE, FALSE, TRUE, ITEM_SLOT_HEAD, 6, TRUE, null, CALLBACK(src, PROC_REF(warp_up)))
else
warp_up()
diff --git a/code/modules/clothing/masks/_masks.dm b/code/modules/clothing/masks/_masks.dm
index 8d55797bfe..24ca3ec392 100644
--- a/code/modules/clothing/masks/_masks.dm
+++ b/code/modules/clothing/masks/_masks.dm
@@ -18,7 +18,7 @@
/obj/item/clothing/mask/equipped(mob/M, slot)
. = ..()
if (slot == SLOT_WEAR_MASK && modifies_speech)
- RegisterSignal(M, COMSIG_MOB_SAY, .proc/handle_speech)
+ RegisterSignal(M, COMSIG_MOB_SAY, PROC_REF(handle_speech))
else
UnregisterSignal(M, COMSIG_MOB_SAY)
diff --git a/code/modules/clothing/rogueclothes/hats.dm b/code/modules/clothing/rogueclothes/hats.dm
index c081184f07..c7a99e507b 100644
--- a/code/modules/clothing/rogueclothes/hats.dm
+++ b/code/modules/clothing/rogueclothes/hats.dm
@@ -503,6 +503,10 @@
/obj/item/clothing/head/roguetown/wizhat/gen
icon_state = "wizardhatgen"
+/obj/item/clothing/head/roguetown/wizhat/gen/wise
+ name = "wise hat"
+ desc = "Only the wisest of nimrods wear this."
+
/obj/item/clothing/head/roguetown/nyle
name = "jewel of nyle"
icon_state = "nile"
diff --git a/code/modules/clothing/rogueclothes/rings.dm b/code/modules/clothing/rogueclothes/rings.dm
index 1fbe5e7727..64a59aa966 100644
--- a/code/modules/clothing/rogueclothes/rings.dm
+++ b/code/modules/clothing/rogueclothes/rings.dm
@@ -41,7 +41,7 @@
if(activate_sound)
playsound(user, activate_sound, 100, FALSE, -1)
cooldowny = world.time
- addtimer(CALLBACK(src, .proc/demagicify), activetime)
+ addtimer(CALLBACK(src, PROC_REF(demagicify)), activetime)
active = TRUE
update_icon()
activate(user)
@@ -62,7 +62,7 @@
name = "ring of null magic"
icon_state = "ruby"
activate_sound = 'sound/magic/antimagic.ogg'
- cdtime = 90 MINUTES
+ cdtime = 10 MINUTES
activetime = 30 SECONDS
sellprice = 100
diff --git a/code/modules/clothing/shoes/_shoes.dm b/code/modules/clothing/shoes/_shoes.dm
index a93cfccb93..51cd73ce0d 100644
--- a/code/modules/clothing/shoes/_shoes.dm
+++ b/code/modules/clothing/shoes/_shoes.dm
@@ -20,7 +20,7 @@
/obj/item/clothing/shoes/ComponentInitialize()
. = ..()
- RegisterSignal(src, COMSIG_COMPONENT_CLEAN_ACT, .proc/clean_blood)
+ RegisterSignal(src, COMSIG_COMPONENT_CLEAN_ACT, PROC_REF(clean_blood))
/obj/item/clothing/shoes/suicide_act(mob/living/carbon/user)
if(rand(2)>1)
diff --git a/code/modules/clothing/shoes/miscellaneous.dm b/code/modules/clothing/shoes/miscellaneous.dm
index a54f3a03bc..72db2b34af 100644
--- a/code/modules/clothing/shoes/miscellaneous.dm
+++ b/code/modules/clothing/shoes/miscellaneous.dm
@@ -319,13 +319,13 @@
active = TRUE
set_light_color(rgb(rand(0, 255), rand(0, 255), rand(0, 255)))
set_light_on(active)
- addtimer(CALLBACK(src, .proc/lightUp), 0.5 SECONDS)
+ addtimer(CALLBACK(src, PROC_REF(lightUp)), 0.5 SECONDS)
/obj/item/clothing/shoes/kindleKicks/proc/lightUp(mob/user)
if(lightCycle < 15)
- set_light_color(rgb(rand(0, 255), rand(0, 255), rand(0, 255)))
- lightCycle++
- addtimer(CALLBACK(src, .proc/lightUp), 0.5 SECONDS)
+ set_light(2, 3, rgb(rand(0,255),rand(0,255),rand(0,255)))
+ lightCycle += 1
+ addtimer(CALLBACK(src, .proc/lightUp), 5)
else
lightCycle = 0
active = FALSE
diff --git a/code/modules/clothing/spacesuits/chronosuit.dm b/code/modules/clothing/spacesuits/chronosuit.dm
index 64b51fb95b..c75b62695b 100644
--- a/code/modules/clothing/spacesuits/chronosuit.dm
+++ b/code/modules/clothing/spacesuits/chronosuit.dm
@@ -141,12 +141,12 @@
user.Stun(INFINITY)
animate(user, color = "#00ccee", time = 3)
- phase_timer_id = addtimer(CALLBACK(src, .proc/phase_2, user, to_turf, phase_in_ds), 3, TIMER_STOPPABLE)
+ phase_timer_id = addtimer(CALLBACK(src, PROC_REF(phase_2), user, to_turf, phase_in_ds), 3, TIMER_STOPPABLE)
/obj/item/clothing/suit/space/chronos/proc/phase_2(mob/living/carbon/human/user, turf/to_turf, phase_in_ds)
if(teleporting && activated && user)
animate(user, color = list(0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,1, 1,1,1,0), time = 2)
- phase_timer_id = addtimer(CALLBACK(src, .proc/phase_3, user, to_turf, phase_in_ds), 2, TIMER_STOPPABLE)
+ phase_timer_id = addtimer(CALLBACK(src, PROC_REF(phase_3), user, to_turf, phase_in_ds), 2, TIMER_STOPPABLE)
else
finish_chronowalk(user, to_turf)
@@ -154,14 +154,14 @@
if(teleporting && activated && user)
user.forceMove(to_turf)
animate(user, color = "#00ccee", time = phase_in_ds)
- phase_timer_id = addtimer(CALLBACK(src, .proc/phase_4, user, to_turf), phase_in_ds, TIMER_STOPPABLE)
+ phase_timer_id = addtimer(CALLBACK(src, PROC_REF(phase_4), user, to_turf), phase_in_ds, TIMER_STOPPABLE)
else
finish_chronowalk(user, to_turf)
/obj/item/clothing/suit/space/chronos/proc/phase_4(mob/living/carbon/human/user, turf/to_turf)
if(teleporting && activated && user)
animate(user, color = "#ffffff", time = 3)
- phase_timer_id = addtimer(CALLBACK(src, .proc/finish_chronowalk, user, to_turf), 3, TIMER_STOPPABLE)
+ phase_timer_id = addtimer(CALLBACK(src, PROC_REF(finish_chronowalk), user, to_turf), 3, TIMER_STOPPABLE)
else
finish_chronowalk(user, to_turf)
diff --git a/code/modules/clothing/spacesuits/hardsuit.dm b/code/modules/clothing/spacesuits/hardsuit.dm
index 55704eb284..c33b6f76e6 100644
--- a/code/modules/clothing/spacesuits/hardsuit.dm
+++ b/code/modules/clothing/spacesuits/hardsuit.dm
@@ -652,7 +652,7 @@
return
if(listeningTo)
UnregisterSignal(listeningTo, COMSIG_MOVABLE_MOVED)
- RegisterSignal(user, COMSIG_MOVABLE_MOVED, .proc/on_mob_move)
+ RegisterSignal(user, COMSIG_MOVABLE_MOVED, PROC_REF(on_mob_move))
listeningTo = user
/obj/item/clothing/suit/space/hardsuit/ancient/dropped()
diff --git a/code/modules/clothing/spacesuits/plasmamen.dm b/code/modules/clothing/spacesuits/plasmamen.dm
index cc8d537d41..a55ce465f7 100644
--- a/code/modules/clothing/spacesuits/plasmamen.dm
+++ b/code/modules/clothing/spacesuits/plasmamen.dm
@@ -119,7 +119,7 @@
/obj/item/clothing/head/helmet/space/plasmaman/ComponentInitialize()
. = ..()
- RegisterSignal(src, COMSIG_COMPONENT_CLEAN_ACT, .proc/wipe_that_smile_off_your_face)
+ RegisterSignal(src, COMSIG_COMPONENT_CLEAN_ACT, PROC_REF(wipe_that_smile_off_your_face))
///gets called when receiving the CLEAN_ACT signal from something, i.e soap or a shower. exists to remove any smiley faces drawn on the helmet.
/obj/item/clothing/head/helmet/space/plasmaman/proc/wipe_that_smile_off_your_face()
diff --git a/code/modules/detectivework/scanner.dm b/code/modules/detectivework/scanner.dm
index 9a4226016c..8400223075 100644
--- a/code/modules/detectivework/scanner.dm
+++ b/code/modules/detectivework/scanner.dm
@@ -33,7 +33,7 @@
if(log.len && !scanning)
scanning = 1
to_chat(user, "Printing report, please wait...")
- addtimer(CALLBACK(src, .proc/PrintReport), 100)
+ addtimer(CALLBACK(src, PROC_REF(PrintReport)), 100)
else
to_chat(user, "The scanner has no logs or is in use.")
diff --git a/code/modules/events/fake_virus.dm b/code/modules/events/fake_virus.dm
index fb95dc55a1..87b53cdb17 100644
--- a/code/modules/events/fake_virus.dm
+++ b/code/modules/events/fake_virus.dm
@@ -25,7 +25,7 @@
for(var/i=1; i<=rand(1,defacto_min); i++)
var/mob/living/carbon/human/onecoughman = pick(fake_virus_victims)
if(prob(25))//1/4 odds to get a spooky message instead of coughing out loud
- addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, onecoughman, "[pick("Your head hurts.", "Your head pounds.")]"), rand(30,150))
+ addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(to_chat), onecoughman, "[pick("Your head hurts.", "Your head pounds.")]"), rand(30,150))
else
- addtimer(CALLBACK(onecoughman, .mob/proc/emote, pick("cough", "sniff", "sneeze")), rand(30,150))//deliver the message with a slightly randomized time interval so there arent multiple people coughing at the exact same time
+ addtimer(CALLBACK(onecoughman, TYPE_PROC_REF(/mob, emote), pick("cough", "sniff", "sneeze")), rand(30,150))//deliver the message with a slightly randomized time interval so there arent multiple people coughing at the exact same time
fake_virus_victims -= onecoughman
diff --git a/code/modules/events/fugitive_spawning.dm b/code/modules/events/fugitive_spawning.dm
index d8eae1254c..fd7f6349ad 100644
--- a/code/modules/events/fugitive_spawning.dm
+++ b/code/modules/events/fugitive_spawning.dm
@@ -55,7 +55,7 @@
//after spawning
playsound(src, 'sound/blank.ogg', 50, TRUE)
new /obj/item/storage/toolbox/mechanical(landing_turf) //so they can actually escape maint
- addtimer(CALLBACK(src, .proc/spawn_hunters), 10 MINUTES)
+ addtimer(CALLBACK(src, PROC_REF(spawn_hunters)), 10 MINUTES)
role_name = "fugitive hunter"
return SUCCESSFUL_SPAWN
@@ -68,7 +68,7 @@
player_mind.special_role = "Fugitive"
player_mind.add_antag_datum(/datum/antagonist/fugitive)
var/datum/antagonist/fugitive/fugitiveantag = player_mind.has_antag_datum(/datum/antagonist/fugitive)
- INVOKE_ASYNC(fugitiveantag, /datum/antagonist/fugitive.proc/greet, backstory) //some fugitives have a sleep on their greet, so we don't want to stop the entire antag granting proc with fluff
+ INVOKE_ASYNC(fugitiveantag, TYPE_PROC_REF(/datum/antagonist/fugitive, greet), backstory) //some fugitives have a sleep on their greet, so we don't want to stop the entire antag granting proc with fluff
switch(backstory)
if("prisoner")
diff --git a/code/modules/events/ghost_role.dm b/code/modules/events/ghost_role.dm
index 06accdbcae..ea487c8f7e 100644
--- a/code/modules/events/ghost_role.dm
+++ b/code/modules/events/ghost_role.dm
@@ -28,7 +28,7 @@
var/waittime = 300 * (2^retry)
message_admins("The event will not spawn a [role_name] until certain \
conditions are met. Waiting [waittime/10]s and then retrying.")
- addtimer(CALLBACK(src, .proc/try_spawning, 0, ++retry), waittime)
+ addtimer(CALLBACK(src, PROC_REF(try_spawning), 0, ++retry), waittime)
return
if(status == MAP_ERROR)
diff --git a/code/modules/events/pirates.dm b/code/modules/events/pirates.dm
index 44d208f611..16601b5c9f 100644
--- a/code/modules/events/pirates.dm
+++ b/code/modules/events/pirates.dm
@@ -36,7 +36,7 @@
threat.title = "Business proposition"
threat.content = "This is [ship_name]. Pay up [payoff] credits or you'll walk the plank."
threat.possible_answers = list("We'll pay.","No way.")
- threat.answer_callback = CALLBACK(src,.proc/answered)
+ threat.answer_callback = CALLBACK(src,PROC_REF(answered))
SScommunications.send_message(threat,unique = TRUE)
/datum/round_event/pirates/proc/answered()
@@ -363,7 +363,7 @@
status_report = "Sending..."
pad.visible_message("[pad] starts charging up.")
pad.icon_state = pad.warmup_state
- sending_timer = addtimer(CALLBACK(src,.proc/send),warmup_time, TIMER_STOPPABLE)
+ sending_timer = addtimer(CALLBACK(src,PROC_REF(send)),warmup_time, TIMER_STOPPABLE)
/obj/machinery/computer/piratepad_control/proc/stop_sending()
if(!sending)
diff --git a/code/modules/events/rogue/allmig/skellysiege.dm b/code/modules/events/rogue/allmig/skellysiege.dm
index 6c206c21a1..00a3c4b644 100644
--- a/code/modules/events/rogue/allmig/skellysiege.dm
+++ b/code/modules/events/rogue/allmig/skellysiege.dm
@@ -37,7 +37,7 @@
var/datum/game_mode/chaosmode/C = SSticker.mode
if(istype(C))
C.skeletons = TRUE
- addtimer(CALLBACK(C, /datum/game_mode/chaosmode/.proc/reset_skeletons), rand(4 MINUTES, 8 MINUTES))
+ addtimer(CALLBACK(C, TYPE_PROC_REF(/datum/game_mode/chaosmode, reset_skeletons)), rand(4 MINUTES, 8 MINUTES))
for(var/mob/dead/observer/O in GLOB.player_list)
- addtimer(CALLBACK(O, /mob/dead/observer/.proc/horde_respawn), 1)
+ addtimer(CALLBACK(O, TYPE_PROC_REF(/mob/dead/observer, horde_respawn)), 1)
return
\ No newline at end of file
diff --git a/code/modules/events/rogue/skellysiege.dm b/code/modules/events/rogue/skellysiege.dm
index c748cf1299..592d018dfe 100644
--- a/code/modules/events/rogue/skellysiege.dm
+++ b/code/modules/events/rogue/skellysiege.dm
@@ -21,7 +21,7 @@
var/datum/game_mode/chaosmode/C = SSticker.mode
if(istype(C))
C.skeletons = TRUE
- addtimer(CALLBACK(C, /datum/game_mode/chaosmode/.proc/reset_skeletons), rand(4 MINUTES, 8 MINUTES))
+ addtimer(CALLBACK(C, TYPE_PROC_REF(/datum/game_mode/chaosmode, reset_skeletons)), rand(4 MINUTES, 8 MINUTES))
for(var/mob/dead/observer/O in GLOB.player_list)
- addtimer(CALLBACK(O, /mob/dead/observer/.proc/horde_respawn), 1)
+ addtimer(CALLBACK(O, TYPE_PROC_REF(/mob/dead/observer, horde_respawn)), 1)
return
diff --git a/code/modules/events/wizard/greentext.dm b/code/modules/events/wizard/greentext.dm
index 21b20a2b3f..f4d3b64364 100644
--- a/code/modules/events/wizard/greentext.dm
+++ b/code/modules/events/wizard/greentext.dm
@@ -35,7 +35,7 @@
/obj/item/greentext/Initialize(mapload)
. = ..()
GLOB.poi_list |= src
- roundend_callback = CALLBACK(src,.proc/check_winner)
+ roundend_callback = CALLBACK(src,PROC_REF(check_winner))
SSticker.OnRoundend(roundend_callback)
/obj/item/greentext/equipped(mob/living/user as mob)
diff --git a/code/modules/fields/fields.dm b/code/modules/fields/fields.dm
index d69e5cdd0a..7e292bf629 100644
--- a/code/modules/fields/fields.dm
+++ b/code/modules/fields/fields.dm
@@ -306,7 +306,7 @@
UnregisterSignal(listeningTo, COMSIG_MOVABLE_MOVED)
listeningTo = null
if(!istype(current) && operating)
- RegisterSignal(user, COMSIG_MOVABLE_MOVED, .proc/on_mob_move)
+ RegisterSignal(user, COMSIG_MOVABLE_MOVED, PROC_REF(on_mob_move))
listeningTo = user
setup_debug_field()
else if(!operating)
diff --git a/code/modules/fields/timestop.dm b/code/modules/fields/timestop.dm
index 2fc3d3268a..edf77a0a11 100644
--- a/code/modules/fields/timestop.dm
+++ b/code/modules/fields/timestop.dm
@@ -100,8 +100,8 @@
A.move_resist = INFINITY
global_frozen_atoms[A] = src
into_the_negative_zone(A)
- RegisterSignal(A, COMSIG_MOVABLE_PRE_MOVE, .proc/unfreeze_atom)
- RegisterSignal(A, COMSIG_ITEM_PICKUP, .proc/unfreeze_atom)
+ RegisterSignal(A, COMSIG_MOVABLE_PRE_MOVE, PROC_REF(unfreeze_atom))
+ RegisterSignal(A, COMSIG_ITEM_PICKUP, PROC_REF(unfreeze_atom))
return TRUE
diff --git a/code/modules/flufftext/Dreaming.dm b/code/modules/flufftext/Dreaming.dm
index 1980d01820..565d231e37 100644
--- a/code/modules/flufftext/Dreaming.dm
+++ b/code/modules/flufftext/Dreaming.dm
@@ -64,6 +64,6 @@
dream_fragments.Cut(1,2)
to_chat(src, "... [next_message] ...")
if(LAZYLEN(dream_fragments))
- addtimer(CALLBACK(src, .proc/dream_sequence, dream_fragments), rand(10,30))
+ addtimer(CALLBACK(src, PROC_REF(dream_sequence), dream_fragments), rand(10,30))
else
dreaming = FALSE
diff --git a/code/modules/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm
index 520752566f..a95d498f96 100644
--- a/code/modules/flufftext/Hallucination.dm
+++ b/code/modules/flufftext/Hallucination.dm
@@ -300,7 +300,7 @@ GLOBAL_LIST_INIT(hallucination_list, list(
target.client.images |= fakerune
target.playsound_local(wall,'sound/blank.ogg', 150, 1)
bubblegum = new(wall, target)
- addtimer(CALLBACK(src, .proc/bubble_attack, landing), 10)
+ addtimer(CALLBACK(src, PROC_REF(bubble_attack), landing), 10)
/datum/hallucination/oh_yeah/proc/bubble_attack(turf/landing)
var/charged = FALSE //only get hit once
@@ -344,10 +344,10 @@ GLOBAL_LIST_INIT(hallucination_list, list(
for(var/i in 1 to rand(5, 10))
target.playsound_local(source, 'sound/blank.ogg', 25, 1)
if(prob(50))
- addtimer(CALLBACK(target, /mob/.proc/playsound_local, source, 'sound/blank.ogg', 25, 1), rand(5,10))
+ addtimer(CALLBACK(target, TYPE_PROC_REF(/mob, playsound_local), source, 'sound/blank.ogg', 25, 1), rand(5,10))
hits++
else
- addtimer(CALLBACK(target, /mob/.proc/playsound_local, source, 'sound/blank.ogg', 25, 1), rand(5,10))
+ addtimer(CALLBACK(target, TYPE_PROC_REF(/mob, playsound_local), source, 'sound/blank.ogg', 25, 1), rand(5,10))
sleep(rand(CLICK_CD_RANGE, CLICK_CD_RANGE + 6))
if(hits >= 4 && prob(70))
target.playsound_local(source, get_sfx("bodyfall"), 25, 1)
@@ -357,10 +357,10 @@ GLOBAL_LIST_INIT(hallucination_list, list(
for(var/i in 1 to rand(5, 10))
target.playsound_local(source, 'sound/blank.ogg', 25, 1)
if(prob(50))
- addtimer(CALLBACK(target, /mob/.proc/playsound_local, source, 'sound/blank.ogg', 25, 1), rand(5,10))
+ addtimer(CALLBACK(target, TYPE_PROC_REF(/mob, playsound_local), source, 'sound/blank.ogg', 25, 1), rand(5,10))
hits++
else
- addtimer(CALLBACK(target, /mob/.proc/playsound_local, source, 'sound/blank.ogg', 25, 1), rand(5,10))
+ addtimer(CALLBACK(target, TYPE_PROC_REF(/mob, playsound_local), source, 'sound/blank.ogg', 25, 1), rand(5,10))
sleep(rand(CLICK_CD_RANGE, CLICK_CD_RANGE + 6))
if(hits >= 3 && prob(70))
target.playsound_local(source, get_sfx("bodyfall"), 25, 1)
@@ -378,10 +378,10 @@ GLOBAL_LIST_INIT(hallucination_list, list(
for(var/i in 1 to rand(3, 6))
target.playsound_local(source, "sound/weapons/gunshot.ogg", 25, TRUE)
if(prob(60))
- addtimer(CALLBACK(target, /mob/.proc/playsound_local, source, 'sound/blank.ogg', 25, 1), rand(5,10))
+ addtimer(CALLBACK(target, TYPE_PROC_REF(/mob, playsound_local), source, 'sound/blank.ogg', 25, 1), rand(5,10))
hits++
else
- addtimer(CALLBACK(target, /mob/.proc/playsound_local, source, "ricochet", 25, 1), rand(5,10))
+ addtimer(CALLBACK(target, TYPE_PROC_REF(/mob, playsound_local), source, "ricochet", 25, 1), rand(5,10))
sleep(rand(CLICK_CD_RANGE, CLICK_CD_RANGE + 6))
if(hits >= 2 && prob(80))
target.playsound_local(source, get_sfx("bodyfall"), 25, 1)
@@ -1104,7 +1104,7 @@ GLOBAL_LIST_INIT(hallucination_list, list(
return
to_chat(target, "I fall into the chasm!")
target.Paralyze(40)
- addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, target, "It's surprisingly shallow."), 15)
+ addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(to_chat), target, "It's surprisingly shallow."), 15)
QDEL_IN(src, 30)
/obj/effect/hallucination/danger/anomaly
@@ -1227,13 +1227,13 @@ GLOBAL_LIST_INIT(hallucination_list, list(
if(target.client)
target.client.images |= shock_image
target.client.images |= electrocution_skeleton_anim
- addtimer(CALLBACK(src, .proc/reset_shock_animation), 40)
+ addtimer(CALLBACK(src, PROC_REF(reset_shock_animation)), 40)
target.playsound_local(get_turf(src), "sparks", 100, 1)
target.staminaloss += 50
target.Stun(40)
target.jitteriness += 1000
target.do_jitter_animation(target.jitteriness)
- addtimer(CALLBACK(src, .proc/shock_drop), 20)
+ addtimer(CALLBACK(src, PROC_REF(shock_drop)), 20)
/datum/hallucination/shock/proc/reset_shock_animation()
if(target.client)
diff --git a/code/modules/food_and_drinks/drinks/drinks.dm b/code/modules/food_and_drinks/drinks/drinks.dm
index 32524c3bc2..da46a480e7 100644
--- a/code/modules/food_and_drinks/drinks/drinks.dm
+++ b/code/modules/food_and_drinks/drinks/drinks.dm
@@ -77,7 +77,7 @@
if(iscyborg(user)) //Cyborg modules that include drinks automatically refill themselves, but drain the borg's cell
var/mob/living/silicon/robot/bro = user
bro.cell.use(30)
- addtimer(CALLBACK(reagents, /datum/reagents.proc/add_reagent, refill, trans), 600)
+ addtimer(CALLBACK(reagents, TYPE_PROC_REF(/datum/reagents, add_reagent), refill, trans), 600)
else if(target.is_drainable()) //A dispenser. Transfer FROM it TO us.
if (!is_refillable())
diff --git a/code/modules/food_and_drinks/drinks/drinks/bottle.dm b/code/modules/food_and_drinks/drinks/drinks/bottle.dm
index 9de0b4149e..a87ee160d3 100644
--- a/code/modules/food_and_drinks/drinks/drinks/bottle.dm
+++ b/code/modules/food_and_drinks/drinks/drinks/bottle.dm
@@ -494,7 +494,7 @@
to_chat(user, "I light [src] on fire.")
add_overlay(GLOB.fire_overlay)
if(!isGlass)
- addtimer(CALLBACK(src, .proc/explode), 5 SECONDS)
+ addtimer(CALLBACK(src, PROC_REF(explode)), 5 SECONDS)
/obj/item/reagent_containers/food/drinks/bottle/molotov/proc/explode()
if(!active)
diff --git a/code/modules/food_and_drinks/food/snacks.dm b/code/modules/food_and_drinks/food/snacks.dm
index f2660d3dbe..58b553523e 100644
--- a/code/modules/food_and_drinks/food/snacks.dm
+++ b/code/modules/food_and_drinks/food/snacks.dm
@@ -104,7 +104,7 @@ All foods are distributed among various categories. Use common sense.
/obj/item/reagent_containers/food/snacks/Initialize()
if(rotprocess)
- SSticker.OnRoundstart(CALLBACK(src, .proc/begin_rotting))
+ SSticker.OnRoundstart(CALLBACK(src, PROC_REF(begin_rotting)))
if(cooked_type || fried_type)
cooktime = 30 SECONDS
..()
diff --git a/code/modules/food_and_drinks/food/snacks_other.dm b/code/modules/food_and_drinks/food/snacks_other.dm
index d514c5f267..52189ac1c5 100644
--- a/code/modules/food_and_drinks/food/snacks_other.dm
+++ b/code/modules/food_and_drinks/food/snacks_other.dm
@@ -481,7 +481,7 @@
/obj/item/reagent_containers/food/snacks/lollipop/cyborg/Initialize()
. = ..()
- addtimer(CALLBACK(src, .proc/spamcheck), 1200)
+ addtimer(CALLBACK(src, PROC_REF(spamcheck)), 1200)
/obj/item/reagent_containers/food/snacks/lollipop/cyborg/equipped(mob/living/user, slot)
. = ..(user, slot)
@@ -509,7 +509,7 @@
/obj/item/reagent_containers/food/snacks/gumball/cyborg/Initialize()
. = ..()
- addtimer(CALLBACK(src, .proc/spamcheck), 1200)
+ addtimer(CALLBACK(src, PROC_REF(spamcheck)), 1200)
/obj/item/reagent_containers/food/snacks/gumball/cyborg/equipped(mob/living/user, slot)
. = ..(user, slot)
diff --git a/code/modules/food_and_drinks/kitchen_machinery/gibber.dm b/code/modules/food_and_drinks/kitchen_machinery/gibber.dm
index 312bd1b897..b8fc4772d0 100644
--- a/code/modules/food_and_drinks/kitchen_machinery/gibber.dm
+++ b/code/modules/food_and_drinks/kitchen_machinery/gibber.dm
@@ -201,7 +201,7 @@
mob_occupant.death(1)
mob_occupant.ghostize()
qdel(src.occupant)
- addtimer(CALLBACK(src, .proc/make_meat, skin, allmeat, meat_produced, gibtype, diseases), gibtime)
+ addtimer(CALLBACK(src, PROC_REF(make_meat), skin, allmeat, meat_produced, gibtype, diseases), gibtime)
/obj/machinery/gibber/proc/make_meat(obj/item/stack/sheet/animalhide/skin, list/obj/item/reagent_containers/food/snacks/meat/slab/allmeat, meat_produced, gibtype, list/datum/disease/diseases)
playsound(src.loc, 'sound/blank.ogg', 50, TRUE)
diff --git a/code/modules/food_and_drinks/kitchen_machinery/microwave.dm b/code/modules/food_and_drinks/kitchen_machinery/microwave.dm
index 916b827041..933fc19e82 100644
--- a/code/modules/food_and_drinks/kitchen_machinery/microwave.dm
+++ b/code/modules/food_and_drinks/kitchen_machinery/microwave.dm
@@ -301,7 +301,7 @@
return
time--
use_power(500)
- addtimer(CALLBACK(src, .proc/loop, type, time, wait), wait)
+ addtimer(CALLBACK(src, PROC_REF(loop), type, time, wait), wait)
/obj/machinery/microwave/proc/loop_finish()
operating = FALSE
diff --git a/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm b/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm
index 8e3a59877c..332c61be19 100644
--- a/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm
+++ b/code/modules/food_and_drinks/kitchen_machinery/monkeyrecycler.dm
@@ -82,7 +82,7 @@ GLOBAL_LIST_EMPTY(monkey_recyclers)
use_power(500)
stored_matter += cube_production
addtimer(VARSET_CALLBACK(src, pixel_x, initial(pixel_x)))
- addtimer(CALLBACK(GLOBAL_PROC, /proc/to_chat, user, "The machine now has [stored_matter] monkey\s worth of material stored."))
+ addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(to_chat), user, "The machine now has [stored_matter] monkey\s worth of material stored."))
/obj/machinery/monkey_recycler/interact(mob/user)
if(stored_matter >= 1)
diff --git a/code/modules/holiday/halloween.dm b/code/modules/holiday/halloween.dm
index 92a0b699de..f41dcd0c76 100644
--- a/code/modules/holiday/halloween.dm
+++ b/code/modules/holiday/halloween.dm
@@ -209,7 +209,7 @@
///Adds a timer to call stalk() on Aggro
/mob/living/simple_animal/hostile/clown_insane/Aggro()
. = ..()
- timer = addtimer(CALLBACK(src, .proc/stalk), 30, TIMER_STOPPABLE|TIMER_UNIQUE)
+ timer = addtimer(CALLBACK(src, PROC_REF(stalk)), 30, TIMER_STOPPABLE|TIMER_UNIQUE)
/mob/living/simple_animal/hostile/clown_insane/LoseAggro()
. = ..()
@@ -228,8 +228,8 @@
qdel(src)
return
playsound(M, pick('sound/spookoween/scary_horn.ogg','sound/spookoween/scary_horn2.ogg', 'sound/spookoween/scary_horn3.ogg'), 100, TRUE)
- timer = addtimer(CALLBACK(src, .proc/stalk), 30, TIMER_STOPPABLE|TIMER_UNIQUE)
- addtimer(CALLBACK(src, .proc/teleport_to_target), 12, TIMER_STOPPABLE|TIMER_UNIQUE)
+ timer = addtimer(CALLBACK(src, PROC_REF(stalk)), 30, TIMER_STOPPABLE|TIMER_UNIQUE)
+ addtimer(CALLBACK(src, PROC_REF(teleport_to_target)), 12, TIMER_STOPPABLE|TIMER_UNIQUE)
///Does what's in the name. Teleports to target.loc. Called from a timer.
/mob/living/simple_animal/hostile/clown_insane/proc/teleport_to_target()
diff --git a/code/modules/holiday/holidays.dm b/code/modules/holiday/holidays.dm
index a0e388b6d7..3829ebac0f 100644
--- a/code/modules/holiday/holidays.dm
+++ b/code/modules/holiday/holidays.dm
@@ -508,7 +508,7 @@ Since Ramadan is an entire month that lasts 29.5 days on average, the start and
return "Have a merry Christmas!"
/datum/holiday/xmas/celebrate()
- SSticker.OnRoundstart(CALLBACK(src, .proc/roundstart_celebrate))
+ SSticker.OnRoundstart(CALLBACK(src, PROC_REF(roundstart_celebrate)))
GLOB.maintenance_loot += list(
/obj/item/toy/xmas_cracker = 3,
/obj/item/clothing/head/santa = 1,
diff --git a/code/modules/holodeck/computer.dm b/code/modules/holodeck/computer.dm
index 8de26136d8..206c41c990 100644
--- a/code/modules/holodeck/computer.dm
+++ b/code/modules/holodeck/computer.dm
@@ -208,7 +208,7 @@
if(toggleOn)
if(last_program && last_program != offline_program)
- addtimer(CALLBACK(src, .proc/load_program, last_program, TRUE), 25)
+ addtimer(CALLBACK(src, PROC_REF(load_program), last_program, TRUE), 25)
active = TRUE
else
last_program = program
@@ -268,7 +268,7 @@
S.flags_1 |= NODECONSTRUCT_1
effects = list()
- addtimer(CALLBACK(src, .proc/finish_spawn), 30)
+ addtimer(CALLBACK(src, PROC_REF(finish_spawn)), 30)
/obj/machinery/computer/holodeck/proc/finish_spawn()
var/list/added = list()
@@ -288,7 +288,7 @@
// Emagging a machine creates an anomaly in the derez systems.
if(O && (obj_flags & EMAGGED) && !stat && !forced)
if((ismob(O) || ismob(O.loc)) && prob(50))
- addtimer(CALLBACK(src, .proc/derez, O, silent), 50) // may last a disturbingly long time
+ addtimer(CALLBACK(src, PROC_REF(derez), O, silent), 50) // may last a disturbingly long time
return
spawned -= O
diff --git a/code/modules/holodeck/turfs.dm b/code/modules/holodeck/turfs.dm
index c43832e368..f9741958c0 100644
--- a/code/modules/holodeck/turfs.dm
+++ b/code/modules/holodeck/turfs.dm
@@ -112,7 +112,7 @@
/turf/open/floor/holofloor/carpet/Initialize()
. = ..()
- addtimer(CALLBACK(src, /atom/.proc/update_icon), 1)
+ addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, update_icon)), 1)
/turf/open/floor/holofloor/carpet/update_icon()
. = ..()
diff --git a/code/modules/hydroponics/fermenting_barrel.dm b/code/modules/hydroponics/fermenting_barrel.dm
index 055cda789e..b0335711ac 100644
--- a/code/modules/hydroponics/fermenting_barrel.dm
+++ b/code/modules/hydroponics/fermenting_barrel.dm
@@ -47,7 +47,7 @@
to_chat(user, "[I] is stuck to my hand!")
return TRUE
to_chat(user, "I place [I] into [src].")
- addtimer(CALLBACK(src, .proc/makeWine, fruit), rand(1 MINUTES, 3 MINUTES))
+ addtimer(CALLBACK(src, PROC_REF(makeWine), fruit), rand(1 MINUTES, 3 MINUTES))
return TRUE
..()
diff --git a/code/modules/hydroponics/grown/citrus.dm b/code/modules/hydroponics/grown/citrus.dm
index bc0fd6a560..88ca8c794c 100644
--- a/code/modules/hydroponics/grown/citrus.dm
+++ b/code/modules/hydroponics/grown/citrus.dm
@@ -121,7 +121,7 @@
C.throw_mode_on()
icon_state = "firelemon_active"
playsound(loc, 'sound/blank.ogg', 75, TRUE, -3)
- addtimer(CALLBACK(src, .proc/prime), rand(10, 60))
+ addtimer(CALLBACK(src, PROC_REF(prime)), rand(10, 60))
/obj/item/reagent_containers/food/snacks/grown/firelemon/burn()
prime()
diff --git a/code/modules/hydroponics/grown/melon.dm b/code/modules/hydroponics/grown/melon.dm
index 9aeb33aa2f..b225d95a51 100644
--- a/code/modules/hydroponics/grown/melon.dm
+++ b/code/modules/hydroponics/grown/melon.dm
@@ -64,7 +64,7 @@
var/uses = 1
if(seed)
uses = round(seed.potency / 20)
- AddComponent(/datum/component/anti_magic, TRUE, TRUE, FALSE, ITEM_SLOT_HANDS, uses, TRUE, CALLBACK(src, .proc/block_magic), CALLBACK(src, .proc/expire)) //deliver us from evil o melon god
+ AddComponent(/datum/component/anti_magic, TRUE, TRUE, FALSE, ITEM_SLOT_HANDS, uses, TRUE, CALLBACK(src, PROC_REF(block_magic)), CALLBACK(src, PROC_REF(expire))) //deliver us from evil o melon god
/obj/item/reagent_containers/food/snacks/grown/holymelon/proc/block_magic(mob/user, major)
if(major)
diff --git a/code/modules/hydroponics/grown/tomato.dm b/code/modules/hydroponics/grown/tomato.dm
index 1a979134ee..932e4f7b69 100644
--- a/code/modules/hydroponics/grown/tomato.dm
+++ b/code/modules/hydroponics/grown/tomato.dm
@@ -133,7 +133,7 @@
return
to_chat(user, "I begin to awaken the Killer Tomato...")
awakening = TRUE
- addtimer(CALLBACK(src, .proc/awaken), 3 SECONDS)
+ addtimer(CALLBACK(src, PROC_REF(awaken)), 3 SECONDS)
log_game("[key_name(user)] awakened a killer tomato at [AREACOORD(user)].")
/obj/item/reagent_containers/food/snacks/grown/tomato/killer/proc/awaken()
diff --git a/code/modules/hydroponics/plant_genes.dm b/code/modules/hydroponics/plant_genes.dm
index ef0dc2dd60..7d1c5bf5af 100644
--- a/code/modules/hydroponics/plant_genes.dm
+++ b/code/modules/hydroponics/plant_genes.dm
@@ -235,7 +235,7 @@
if(!istype(G, /obj/item/grown/bananapeel) && (!G.reagents || !G.reagents.has_reagent(/datum/reagent/lube)))
stun_len /= 3
- G.AddComponent(/datum/component/slippery, min(stun_len,140), NONE, CALLBACK(src, .proc/handle_slip, G))
+ G.AddComponent(/datum/component/slippery, min(stun_len,140), NONE, CALLBACK(src, PROC_REF(handle_slip), G))
/datum/plant_gene/trait/slip/proc/handle_slip(obj/item/reagent_containers/food/snacks/grown/G, mob/M)
for(var/datum/plant_gene/trait/T in G.seed.genes)
diff --git a/code/modules/jobs/job_exp.dm b/code/modules/jobs/job_exp.dm
index 71d5180a39..0ffff666fc 100644
--- a/code/modules/jobs/job_exp.dm
+++ b/code/modules/jobs/job_exp.dm
@@ -260,7 +260,7 @@ GLOBAL_PROTECT(exp_to_update)
"ckey" = "'[sanitizeSQL(ckey)]'",
"minutes" = jvalue)))
prefs.exp[jtype] += jvalue
- addtimer(CALLBACK(SSblackbox,/datum/controller/subsystem/blackbox/proc/update_exp_db),20,TIMER_OVERRIDE|TIMER_UNIQUE)
+ addtimer(CALLBACK(SSblackbox,TYPE_PROC_REF(/datum/controller/subsystem/blackbox, update_exp_db)),20,TIMER_OVERRIDE|TIMER_UNIQUE)
//ALWAYS call this at beginning to any proc touching player flags, or your database admin will probably be mad
diff --git a/code/modules/jobs/job_types/_job.dm b/code/modules/jobs/job_types/_job.dm
index fc1ab0f222..c7079bd5c9 100644
--- a/code/modules/jobs/job_types/_job.dm
+++ b/code/modules/jobs/job_types/_job.dm
@@ -248,7 +248,7 @@
/datum/job/proc/announce_head(mob/living/carbon/human/H, channels) //tells the given channel that the given mob is the new department head. See communications.dm for valid channels.
if(H && GLOB.announcement_systems.len)
//timer because these should come after the captain announcement
- SSticker.OnRoundstart(CALLBACK(GLOBAL_PROC, .proc/addtimer, CALLBACK(pick(GLOB.announcement_systems), /obj/machinery/announcement_system/proc/announce, "NEWHEAD", H.real_name, H.job, channels), 1))
+ SSticker.OnRoundstart(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(addtimer), CALLBACK(pick(GLOB.announcement_systems), TYPE_PROC_REF(/obj/machinery/announcement_system, announce), "NEWHEAD", H.real_name, H.job, channels), 1))
//If the configuration option is set to require players to be logged as old enough to play certain jobs, then this proc checks that they are, otherwise it just returns 1
/datum/job/proc/player_old_enough(client/C)
diff --git a/code/modules/jobs/job_types/old/ai.dm b/code/modules/jobs/job_types/old/ai.dm
index 6dad8a8160..2b226082c8 100644
--- a/code/modules/jobs/job_types/old/ai.dm
+++ b/code/modules/jobs/job_types/old/ai.dm
@@ -62,7 +62,7 @@
/datum/job/ai/announce(mob/living/silicon/ai/AI)
. = ..()
- SSticker.OnRoundstart(CALLBACK(GLOBAL_PROC, .proc/minor_announce, "[AI] has been downloaded to an empty bluespace-networked AI core at [AREACOORD(AI)]."))
+ SSticker.OnRoundstart(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(minor_announce), "[AI] has been downloaded to an empty bluespace-networked AI core at [AREACOORD(AI)]."))
/datum/job/ai/config_check()
return CONFIG_GET(flag/allow_ai)
diff --git a/code/modules/jobs/job_types/old/captain.dm b/code/modules/jobs/job_types/old/captain.dm
index dba4ba9471..4d036c280f 100644
--- a/code/modules/jobs/job_types/old/captain.dm
+++ b/code/modules/jobs/job_types/old/captain.dm
@@ -31,7 +31,7 @@
/datum/job/captain/announce(mob/living/carbon/human/H)
..()
-// SSticker.OnRoundstart(CALLBACK(GLOBAL_PROC, .proc/minor_announce, "Captain [H.real_name] on deck!"))
+// SSticker.OnRoundstart(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(minor_announce), "Captain [H.real_name] on deck!"))
/datum/outfit/job/captain
name = "Captain"
diff --git a/code/modules/jobs/job_types/roguetown/adventurer/adventurer.dm b/code/modules/jobs/job_types/roguetown/adventurer/adventurer.dm
index c730ba3240..9bed4f1217 100644
--- a/code/modules/jobs/job_types/roguetown/adventurer/adventurer.dm
+++ b/code/modules/jobs/job_types/roguetown/adventurer/adventurer.dm
@@ -21,11 +21,12 @@ GLOBAL_LIST_EMPTY(billagerspawns)
outfit = null
outfit_female = null
- var/isvillager = FALSE
- var/ispilgrim = FALSE
display_order = JDO_ADVENTURER
show_in_credits = FALSE
min_pq = -4
+
+ var/isvillager = FALSE
+ var/ispilgrim = FALSE
/datum/job/roguetown/adventurer/after_spawn(mob/living/L, mob/M, latejoin = TRUE)
..()
@@ -64,16 +65,14 @@ GLOBAL_LIST_EMPTY(billagerspawns)
testing("[A.name] fail9")
continue
- if(!isvillager && !ispilgrim) //adventurer
- if(A.ispilgrim || A.isvillager)
- continue
- if(isvillager) //towner
- if(!A.isvillager)
- continue
+ if((!isvillager && !ispilgrim) && (A.isvillager || A.ispilgrim)) //adventurer
+ continue
-// if(ispilgrim) //pilgrim
-// if(A.ispilgrim)
-// continue
+ if(isvillager && !A.isvillager) //towner
+ continue
+
+ if(ispilgrim && !A.ispilgrim) //pilgrim
+ continue
if(A.plevel_req > M.client.patreonlevel())
testing("[A.name] fail6")
diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/_advclass.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/_advclass.dm
index 77666ecaae..3b03c313da 100644
--- a/code/modules/jobs/job_types/roguetown/adventurer/types/_advclass.dm
+++ b/code/modules/jobs/job_types/roguetown/adventurer/types/_advclass.dm
@@ -55,5 +55,5 @@
GLOB.billagerspawns -= H
/datum/advclass/proc/post_equip(mob/living/carbon/human/H)
- addtimer(CALLBACK(H,/mob/living/carbon/human.proc/add_credit), 20)
+ addtimer(CALLBACK(H,TYPE_PROC_REF(/mob/living/carbon/human, add_credit)), 20)
return
diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/cleric.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/cleric.dm
index a925d4acbc..e6fdd23d33 100644
--- a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/cleric.dm
+++ b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/cleric.dm
@@ -58,7 +58,7 @@
H.mind.adjust_skillrank(/datum/skill/combat/axesmaces, 1, TRUE)
H.mind.adjust_skillrank(/datum/skill/magic/holy, 1, TRUE)
H.change_stat("strength", 1)
- H.change_stat("perception", -2)
+ H.change_stat("perception", 1)
H.change_stat("intelligence", 2)
H.change_stat("constitution", 2)
H.change_stat("endurance", 3)
@@ -66,5 +66,6 @@
ADD_TRAIT(H, RTRAIT_HEAVYARMOR, TRAIT_GENERIC)
var/datum/devotion/cleric_holder/C = new /datum/devotion/cleric_holder(H, H.PATRON)
C.holder_mob = H
+ C.update_devotion(50, 50)
C.grant_spells(H)
H.verbs += list(/mob/living/carbon/human/proc/devotionreport, /mob/living/carbon/human/proc/clericpray)
diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/dbomb.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/dbomb.dm
index 582110dc85..0d191e7a4a 100644
--- a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/dbomb.dm
+++ b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/dbomb.dm
@@ -1,5 +1,5 @@
/datum/advclass/dbomb
- name = "Dwarf"
+ name = "Vagrant"
tutorial = "Dwarves like to blow things up."
allowed_sexes = list("male", "female")
allowed_races = list("Dwarf","Dwarf")
@@ -33,4 +33,4 @@
H.mind.adjust_skillrank(/datum/skill/misc/athletics, 1, TRUE)
H.change_stat("strength", 1)
H.change_stat("endurance", 1)
- ADD_TRAIT(H, RTRAIT_HEAVYARMOR, TRAIT_GENERIC)
\ No newline at end of file
+ ADD_TRAIT(H, RTRAIT_HEAVYARMOR, TRAIT_GENERIC)
diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/donator/dwarfwarrior.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/donator/dwarfwarrior.dm
new file mode 100644
index 0000000000..27c483774a
--- /dev/null
+++ b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/donator/dwarfwarrior.dm
@@ -0,0 +1,41 @@
+
+/datum/advclass/dwarfwarrior
+ name = "Cavern Warrior"
+ tutorial = "Dwarf Warriors are the bread and butter of their miliary sworn to defend their mountain fortress. Armed with either a battle axe or mace, they are a force to be reckoned with."
+ allowed_sexes = list("male", "female")
+ allowed_races = list("Dwarf","Dwarf")
+ outfit = /datum/outfit/job/roguetown/adventurer/dwarfwarrior
+ maxchosen = 2
+
+/datum/outfit/job/roguetown/adventurer/dwarfwarrior/pre_equip(mob/living/carbon/human/H)
+ ..()
+ head = /obj/item/clothing/head/roguetown/helmet/winged
+ pants = /obj/item/clothing/under/roguetown/trou
+ shoes = /obj/item/clothing/shoes/roguetown/boots/leather
+ belt = /obj/item/storage/belt/rogue/leather
+ armor = /obj/item/clothing/suit/roguetown/armor/chainmail/iron
+ wrists = /obj/item/clothing/wrists/roguetown/bracers/leather
+ backr = /obj/item/rogueweapon/shield/wood
+ if(prob(25))
+ mask = /obj/item/clothing/mask/rogue/facemask
+ if(prob(25))
+ gloves = /obj/item/clothing/gloves/roguetown/chain
+ else
+ gloves = /obj/item/clothing/gloves/roguetown/angle
+ if(prob(50))
+ beltl = /obj/item/rogueweapon/mace/steel
+ else
+ beltl = /obj/item/rogueweapon/stoneaxe/battle
+
+ H.mind.adjust_skillrank(/datum/skill/combat/axesmaces, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/unarmed, 2, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/wrestling, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/craft/crafting, 1, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/climbing, 1, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/sewing, 1, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/athletics, 3, TRUE)
+ H.change_stat("constitution", 2)
+ H.change_stat("speed", -1)
+ H.change_stat("strength", 2)
+ H.change_stat("endurance", 2)
+ ADD_TRAIT(H, RTRAIT_HEAVYARMOR, TRAIT_GENERIC)
diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/donator/paladin.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/donator/paladin.dm
index 370a971856..22e55b077c 100644
--- a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/donator/paladin.dm
+++ b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/donator/paladin.dm
@@ -11,34 +11,54 @@
/datum/outfit/job/roguetown/adventurer/paladin/pre_equip(mob/living/carbon/human/H)
..()
- wrists = /obj/item/clothing/neck/roguetown/psicross/astrata
+ var/allowed_patrons = list("Astrata", "Dendor", "Necra")
+
+ var/datum/patrongods/ourpatron
+ if(istype(H.PATRON, /datum/patrongods))
+ ourpatron = H.PATRON
+
+ if(!ourpatron || !(ourpatron.name in allowed_patrons))
+ var/list/datum/patrongods/possiblegods = list()
+ for(var/datum/patrongods/P in GLOB.patronlist)
+ if(P.name in allowed_patrons)
+ possiblegods |= P
+ ourpatron = pick(possiblegods)
+ H.PATRON = ourpatron
+ to_chat(H, " My patron had not endorsed my practices in my younger years. I've since grown acustomed to [H.PATRON].")
+
+ switch(ourpatron.name)
+ if("Astrata")
+ neck = /obj/item/clothing/neck/roguetown/psicross/astrata
+ if("Dendor")
+ neck = /obj/item/clothing/neck/roguetown/psicross/dendor
+ if("Necra")
+ neck = /obj/item/clothing/neck/roguetown/psicross/necra
+
armor = /obj/item/clothing/suit/roguetown/armor/chainmail/hauberk
pants = /obj/item/clothing/under/roguetown/chainlegs
shoes = /obj/item/clothing/shoes/roguetown/boots/leather
belt = /obj/item/storage/belt/rogue/leather/hand
- beltl = /obj/item/storage/belt/rogue/pouch/coins/mid
+ beltl = /obj/item/storage/belt/rogue/pouch/coins/poor
id = /obj/item/clothing/ring/silver
cloak = /obj/item/clothing/cloak/tabard/crusader
+ backl = /obj/item/rogueweapon/sword
if(H.mind)
H.mind.adjust_skillrank(/datum/skill/combat/axesmaces, 2, TRUE)
H.mind.adjust_skillrank(/datum/skill/combat/crossbows, 2, TRUE)
H.mind.adjust_skillrank(/datum/skill/combat/bows, 2, TRUE)
- H.mind.adjust_skillrank(/datum/skill/combat/wrestling, 3, TRUE)
- H.mind.adjust_skillrank(/datum/skill/combat/unarmed, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/wrestling, 2, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/unarmed, 2, TRUE)
H.mind.adjust_skillrank(/datum/skill/combat/swords, 3, TRUE)
H.mind.adjust_skillrank(/datum/skill/misc/climbing, 1, TRUE)
H.mind.adjust_skillrank(/datum/skill/misc/athletics, 3, TRUE)
H.mind.adjust_skillrank(/datum/skill/misc/reading, 3, TRUE)
H.mind.adjust_skillrank(/datum/skill/magic/holy, 1, TRUE)
- backl = /obj/item/rogueweapon/sword/long
H.change_stat("strength", 2)
- H.change_stat("perception", 2)
+ H.change_stat("perception", 1)
H.change_stat("intelligence", 2)
H.change_stat("constitution", 2)
- H.change_stat("endurance", 3)
+ H.change_stat("endurance", 2)
H.change_stat("speed", -2)
- H.mind.AddSpell(new /obj/effect/proc_holder/spell/invoked/heal/lesser)
- H.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/burialrite)
ADD_TRAIT(H, RTRAIT_HEAVYARMOR, TRAIT_GENERIC)
if(H.dna?.species)
if(H.dna.species.id == "human")
@@ -46,6 +66,9 @@
if(H.dna.species.id == "tiefling")
cloak = /obj/item/clothing/cloak/tabard/crusader/tief
var/datum/devotion/cleric_holder/C = new /datum/devotion/cleric_holder(H, H.PATRON)
- C.update_devotion(80)
+ //Max devotion limit - Paladins are stronger but cannot pray to gain more abilities
+ C.max_devotion = 200
+ C.update_devotion(50, 50)
C.holder_mob = H
- H.verbs += list(/mob/living/carbon/human/proc/devotionreport)
+ C.grant_spells(H)
+ H.verbs += list(/mob/living/carbon/human/proc/devotionreport, /mob/living/carbon/human/proc/clericpray)
diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/warrior.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/warrior.dm
index e698f73224..ddc5022830 100644
--- a/code/modules/jobs/job_types/roguetown/adventurer/types/combat/warrior.dm
+++ b/code/modules/jobs/job_types/roguetown/adventurer/types/combat/warrior.dm
@@ -15,15 +15,19 @@
/datum/outfit/job/roguetown/adventurer/sfighter/pre_equip(mob/living/carbon/human/H)
..()
- H.mind.adjust_skillrank(/datum/skill/combat/swords, 3, TRUE)
- H.mind.adjust_skillrank(/datum/skill/combat/crossbows, 1, TRUE)
- H.mind.adjust_skillrank(/datum/skill/combat/unarmed, 2, TRUE)
- H.mind.adjust_skillrank(/datum/skill/combat/wrestling, 2, TRUE)
- H.mind.adjust_skillrank(/datum/skill/misc/swimming, 1, TRUE)
- H.mind.adjust_skillrank(/datum/skill/misc/climbing, 1, TRUE)
- H.mind.adjust_skillrank(/datum/skill/misc/sewing, 1, TRUE)
- H.mind.adjust_skillrank(/datum/skill/misc/riding, 3, TRUE)
- H.mind.adjust_skillrank(/datum/skill/misc/athletics, 3, TRUE)
+ if(H.mind)
+ H.mind.adjust_skillrank(/datum/skill/combat/swords, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/crossbows, 1, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/unarmed, 2, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/combat/wrestling, 2, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/swimming, 1, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/climbing, 1, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/sewing, 1, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/riding, 3, TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/athletics, 3, TRUE)
+ H.change_stat("strength", 2)
+ H.change_stat("endurance", 3)
+ H.change_stat("constitution", 2)
if(H.gender == MALE)
pants = /obj/item/clothing/under/roguetown/tights/black
else
@@ -45,4 +49,4 @@
H.change_stat("perception", 1)
H.change_stat("speed", 2)
- ADD_TRAIT(H, RTRAIT_HEAVYARMOR, TRAIT_GENERIC)
\ No newline at end of file
+ ADD_TRAIT(H, RTRAIT_HEAVYARMOR, TRAIT_GENERIC)
diff --git a/code/modules/jobs/job_types/roguetown/adventurer/types/pilgrim/blacksmith.dm b/code/modules/jobs/job_types/roguetown/adventurer/types/pilgrim/blacksmith.dm
index 43a7fbb513..2ec5a43f7c 100644
--- a/code/modules/jobs/job_types/roguetown/adventurer/types/pilgrim/blacksmith.dm
+++ b/code/modules/jobs/job_types/roguetown/adventurer/types/pilgrim/blacksmith.dm
@@ -18,7 +18,7 @@
..()
beltr = /obj/item/rogueweapon/hammer
backl = /obj/item/storage/backpack/rogue/satchel
- backpack_contents = list(/obj/item/rogueweapon/tongs=1)
+ backpack_contents = list(/obj/item/rogueweapon/tongs=1, /obj/item/rogueore/coal=1, /obj/item/rogueore/iron=1)
if(H.gender == MALE)
pants = /obj/item/clothing/under/roguetown/trou
shoes = /obj/item/clothing/shoes/roguetown/boots/leather
diff --git a/code/modules/jobs/job_types/roguetown/adventurer/villager.dm b/code/modules/jobs/job_types/roguetown/adventurer/villager.dm
index 62a49776e4..23c7faf968 100644
--- a/code/modules/jobs/job_types/roguetown/adventurer/villager.dm
+++ b/code/modules/jobs/job_types/roguetown/adventurer/villager.dm
@@ -20,6 +20,7 @@
display_order = JDO_VILLAGER
isvillager = TRUE
give_bank_account = TRUE
+
/*
/datum/job/roguetown/adventurer/villager/New()
. = ..()
diff --git a/code/modules/jobs/job_types/roguetown/church/monk.dm b/code/modules/jobs/job_types/roguetown/church/monk.dm
index 1ec926676e..ceecefcb9f 100644
--- a/code/modules/jobs/job_types/roguetown/church/monk.dm
+++ b/code/modules/jobs/job_types/roguetown/church/monk.dm
@@ -69,5 +69,6 @@
var/datum/devotion/cleric_holder/C = new /datum/devotion/cleric_holder(H, H.PATRON)
C.holder_mob = H
- H.verbs += list(/mob/living/carbon/human/proc/devotionreport, /mob/living/carbon/human/proc/clericpray)
+ C.update_devotion(50, 50)
C.grant_spells(H)
+ H.verbs += list(/mob/living/carbon/human/proc/devotionreport, /mob/living/carbon/human/proc/clericpray)
diff --git a/code/modules/jobs/job_types/roguetown/church/puritan.dm b/code/modules/jobs/job_types/roguetown/church/puritan.dm
index 2d0cb5a31a..f511a43442 100644
--- a/code/modules/jobs/job_types/roguetown/church/puritan.dm
+++ b/code/modules/jobs/job_types/roguetown/church/puritan.dm
@@ -97,7 +97,7 @@
to_chat(src, "Not ready to speak yet.")
/mob/living/carbon/human/proc/confession_time()
- var/timerid = addtimer(CALLBACK(src, .proc/confess_sins), 6 SECONDS, TIMER_STOPPABLE)
+ var/timerid = addtimer(CALLBACK(src, PROC_REF(confess_sins)), 6 SECONDS, TIMER_STOPPABLE)
var/responsey = alert("Resist torture? (1 TRI)","Yes","No")
if(!responsey)
responsey = "No"
diff --git a/code/modules/jobs/job_types/roguetown/church/templar.dm b/code/modules/jobs/job_types/roguetown/church/templar.dm
index 448cad207d..a852dc45fa 100644
--- a/code/modules/jobs/job_types/roguetown/church/templar.dm
+++ b/code/modules/jobs/job_types/roguetown/church/templar.dm
@@ -10,7 +10,7 @@
"Tiefling",
"Aasimar")
outfit = /datum/outfit/job/roguetown/templar
- min_pq = 5
+ min_pq = 2
total_positions = 2
spawn_positions = 2
spells = list(/obj/effect/proc_holder/spell/invoked/heal/lesser, /obj/effect/proc_holder/spell/targeted/churn, /obj/effect/proc_holder/spell/targeted/burialrite)
@@ -19,15 +19,22 @@
/datum/outfit/job/roguetown/templar/pre_equip(mob/living/carbon/human/H)
..()
- wrists = /obj/item/clothing/neck/roguetown/psicross/astrata
+ neck = /obj/item/clothing/neck/roguetown/chaincoif
armor = /obj/item/clothing/suit/roguetown/armor/chainmail/hauberk
- pants = /obj/item/clothing/under/roguetown/chainlegs
- shoes = /obj/item/clothing/shoes/roguetown/boots/leather
+ shirt = /obj/item/clothing/suit/roguetown/shirt/undershirt/black
+ pants = /obj/item/clothing/under/roguetown/tights/black
+ shoes = /obj/item/clothing/shoes/roguetown/boots
head = /obj/item/clothing/head/roguetown/helmet/heavy/bucket
- belt = /obj/item/storage/belt/rogue/leather/hand
- beltl = /obj/item/storage/belt/rogue/pouch/coins/mid
+ backr = /obj/item/rogueweapon/shield/tower/metal
+ backl = /obj/item/storage/backpack/rogue/satchel
+ belt = /obj/item/storage/belt/rogue/leather/black
+ beltl = /obj/item/roguekey/church
+ beltr = /obj/item/rogueweapon/sword/long
id = /obj/item/clothing/ring/silver
- cloak = /obj/item/clothing/cloak/tabard/crusader
+ cloak = /obj/item/clothing/cloak/tabard/crusader/tief
+ gloves = /obj/item/clothing/gloves/roguetown/chain
+ wrists = /obj/item/clothing/wrists/roguetown/bracers
+ backpack_contents = list(/obj/item/storage/belt/rogue/pouch/coins/mid = 1, /obj/item/clothing/neck/roguetown/psicross/astrata = 1)
if(H.mind)
H.mind.adjust_skillrank(/datum/skill/combat/axesmaces, 2, TRUE)
H.mind.adjust_skillrank(/datum/skill/combat/crossbows, 3, TRUE)
@@ -50,9 +57,9 @@
if(H.dna?.species)
if(H.dna.species.id == "human")
H.dna.species.soundpack_m = new /datum/voicepack/male/knight()
- if(H.dna.species.id == "tiefling")
- cloak = /obj/item/clothing/cloak/tabard/crusader/tief
var/datum/devotion/cleric_holder/C = new /datum/devotion/cleric_holder(H, H.PATRON)
- C.update_devotion(80)
+ //Max devotion limit - Templars are stronger but cannot pray to gain more abilities
+ C.max_devotion = 200
+ C.update_devotion(50, 50)
C.holder_mob = H
- H.verbs += list(/mob/living/carbon/human/proc/devotionreport)
+ H.verbs += list(/mob/living/carbon/human/proc/devotionreport, /mob/living/carbon/human/proc/clericpray)
diff --git a/code/modules/jobs/job_types/roguetown/nobility/knight.dm b/code/modules/jobs/job_types/roguetown/nobility/knight.dm
index 8092f47e71..de743c697c 100644
--- a/code/modules/jobs/job_types/roguetown/nobility/knight.dm
+++ b/code/modules/jobs/job_types/roguetown/nobility/knight.dm
@@ -22,11 +22,10 @@
..()
if(ishuman(L))
var/mob/living/carbon/human/H = L
- var/prev_name = H.name
var/prev_real_name = H.real_name
- H.name = "Sir [prev_name]"
+ var/prev_name = H.name
H.real_name = "Sir [prev_real_name]"
-
+ H.name = "Sir [prev_name]"
/datum/outfit/job/roguetown/knight/pre_equip(mob/living/carbon/human/H)
..()
diff --git a/code/modules/jobs/job_types/roguetown/nobility/lady.dm b/code/modules/jobs/job_types/roguetown/nobility/lady.dm
index 1956664c57..09ecfa8938 100644
--- a/code/modules/jobs/job_types/roguetown/nobility/lady.dm
+++ b/code/modules/jobs/job_types/roguetown/nobility/lady.dm
@@ -62,4 +62,4 @@
SSticker.select_ruler()
if(L)
to_chat(world, "[L.real_name] is Queen of Rockhill.")
- addtimer(CALLBACK(L, /mob/.proc/lord_color_choice), 50)
+ addtimer(CALLBACK(L, TYPE_PROC_REF(/mob, lord_color_choice)), 50)
diff --git a/code/modules/jobs/job_types/roguetown/nobility/lord.dm b/code/modules/jobs/job_types/roguetown/nobility/lord.dm
index 33ee8239ad..404904f6c7 100644
--- a/code/modules/jobs/job_types/roguetown/nobility/lord.dm
+++ b/code/modules/jobs/job_types/roguetown/nobility/lord.dm
@@ -23,7 +23,7 @@
if(L)
SSticker.select_ruler()
to_chat(world, "[L.real_name] is King of Rockhill.")
- addtimer(CALLBACK(L, /mob/.proc/lord_color_choice), 50)
+ addtimer(CALLBACK(L, TYPE_PROC_REF(/mob, lord_color_choice)), 50)
/datum/outfit/job/roguetown/lord/pre_equip(mob/living/carbon/human/H)
diff --git a/code/modules/jobs/job_types/roguetown/peasants/beggar.dm b/code/modules/jobs/job_types/roguetown/peasants/beggar.dm
index af5b24b01d..6fed88c4cb 100644
--- a/code/modules/jobs/job_types/roguetown/peasants/beggar.dm
+++ b/code/modules/jobs/job_types/roguetown/peasants/beggar.dm
@@ -1,4 +1,3 @@
-
/datum/job/roguetown/vagrant
title = "Beggar"
flag = APPRENTICE
@@ -27,21 +26,70 @@
. = ..()
peopleknowme = list()
+/datum/outfit/job/roguetown/vagrant
+ /// Chance to become a wise beggar, if we still have space for more wise beggars
+ var/wise_chance = 10
+ /// Amount of wise beggars spawned as of now
+ var/wise_amount = 0
+ /// Maximum amount of wise beggars that can be spawned
+ var/wise_max = 3
+
/datum/outfit/job/roguetown/vagrant/pre_equip(mob/living/carbon/human/H)
..()
+ // wise beggar!!!
+ // guaranteed full beggar gear + random stats
+ if((wise_amount < wise_max) && prob(wise_chance))
+ head = /obj/item/clothing/head/roguetown/wizhat/gen/wise //wise hat
+ beltr = /obj/item/reagent_containers/powder/moondust
+ beltl = /obj/item/clothing/mask/cigarette/rollie/cannabis
+ cloak = /obj/item/clothing/cloak/raincloak/brown
+ gloves = /obj/item/clothing/gloves/roguetown/fingerless
+ armor = /obj/item/clothing/suit/roguetown/shirt/rags
+ shirt = /obj/item/clothing/suit/roguetown/shirt/undershirt/vagrant
+ pants = /obj/item/clothing/under/roguetown/tights/vagrant
+ r_hand = /obj/item/rogueweapon/woodstaff/wise // dog beating staff
+ if(H.mind)
+ H.mind.adjust_skillrank(/datum/skill/misc/sneaking, rand(2,5), TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/stealing, rand(2,5), TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/climbing, rand(2,5), TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/reading, 4, TRUE) //very good reading he is wise
+ H.mind.adjust_skillrank(/datum/skill/combat/polearms, rand(2,5), TRUE) // dog beating staff
+ H.STASTR = rand(1, 20)
+ H.STAINT = rand(5, 20)
+ H.STALUC = rand(1, 20)
+ H.change_stat("constitution", -rand(0, 3))
+ H.change_stat("endurance", -rand(0, 3))
+ H.real_name = "[H.real_name] the Wise"
+ H.name = "[H.name] the Wise"
+ H.facial_hairstyle = "Knowledge"
+ H.update_hair()
+ H.age = AGE_OLD
+ wise_amount++
+ return
if(prob(20))
head = /obj/item/clothing/head/roguetown/knitcap
+ else
+ head = null
if(prob(5))
beltr = /obj/item/reagent_containers/powder/moondust
+ else
+ beltr = null
if(prob(10))
beltl = /obj/item/clothing/mask/cigarette/rollie/cannabis
+ else
+ beltl = null
if(prob(10))
cloak = /obj/item/clothing/cloak/raincloak/brown
+ else
+ cloak = null
if(prob(10))
gloves = /obj/item/clothing/gloves/roguetown/fingerless
+ else
+ gloves = null
if(H.gender == FEMALE)
armor = /obj/item/clothing/suit/roguetown/shirt/rags
else
+ armor = null
pants = /obj/item/clothing/under/roguetown/tights/vagrant
if(prob(50))
pants = /obj/item/clothing/under/roguetown/tights/vagrant/l
@@ -49,14 +97,18 @@
if(prob(50))
shirt = /obj/item/clothing/suit/roguetown/shirt/undershirt/vagrant/l
if(H.mind)
- H.mind.adjust_skillrank(/datum/skill/misc/sneaking, pick(1,2,3,4,5), TRUE)
- H.mind.adjust_skillrank(/datum/skill/misc/stealing, pick(1,2,3,4,5), TRUE)
- H.mind.adjust_skillrank(/datum/skill/misc/climbing, pick(1,2,3,4,5), TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/sneaking, rand(1,5), TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/stealing, rand(1,5), TRUE)
+ H.mind.adjust_skillrank(/datum/skill/misc/climbing, rand(1,5), TRUE)
H.STALUC = rand(1, 20)
if(prob(5))
r_hand = /obj/item/rogueweapon/mace/woodclub
+ else
+ r_hand = null
if(prob(5))
l_hand = /obj/item/rogueweapon/mace/woodclub
+ else
+ l_hand = null
H.change_stat("strength", -1)
H.change_stat("intelligence", -4)
H.change_stat("constitution", -3)
diff --git a/code/modules/library/lib_codex_gigas.dm b/code/modules/library/lib_codex_gigas.dm
index 78e50f4573..7807225011 100644
--- a/code/modules/library/lib_codex_gigas.dm
+++ b/code/modules/library/lib_codex_gigas.dm
@@ -71,7 +71,7 @@
return FALSE
if(action == "search")
SStgui.close_uis(src)
- addtimer(CALLBACK(src, .proc/perform_research, usr, currentName), 0)
+ addtimer(CALLBACK(src, PROC_REF(perform_research), usr, currentName), 0)
currentName = ""
currentSection = PRE_TITLE
return FALSE
diff --git a/code/modules/lighting/lighting_atom.dm b/code/modules/lighting/lighting_atom.dm
index 6413eba45e..2db46e2874 100644
--- a/code/modules/lighting/lighting_atom.dm
+++ b/code/modules/lighting/lighting_atom.dm
@@ -139,11 +139,18 @@
new /obj/effect/dummy/lighting_obj (src, _range, _power, _color, _duration)
-/obj/flash_lighting_fx(_range = FLASH_LIGHT_RANGE, _power = FLASH_LIGHT_POWER, _color = COLOR_WHITE, _duration = FLASH_LIGHT_DURATION)
+/obj/flash_lighting_fx(_range = FLASH_LIGHT_RANGE, _power = FLASH_LIGHT_POWER, _color = LIGHT_COLOR_WHITE, _duration = FLASH_LIGHT_DURATION, _reset_lighting = TRUE)
if(!_duration)
stack_trace("Lighting FX obj created on a obj without a duration")
- new /obj/effect/dummy/lighting_obj (get_turf(src), _range, _power, _color, _duration)
-
+ var/temp_color
+ var/temp_power
+ var/temp_range
+ if(!_reset_lighting) //incase the obj already has a lighting color that you don't want cleared out after, ie computer monitors.
+ temp_color = light_color
+ temp_power = light_power
+ temp_range = light_range
+ set_light(_range, _power, _color)
+ addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, set_light), _reset_lighting ? initial(light_range) : temp_range, _reset_lighting ? initial(light_power) : temp_power, _reset_lighting ? initial(light_color) : temp_color), _duration, TIMER_OVERRIDE|TIMER_UNIQUE)
/mob/living/flash_lighting_fx(_range = FLASH_LIGHT_RANGE, _power = FLASH_LIGHT_POWER, _color = COLOR_WHITE, _duration = FLASH_LIGHT_DURATION)
mob_light(_range, _power, _color, _duration)
diff --git a/code/modules/mining/aux_base.dm b/code/modules/mining/aux_base.dm
index 14f67fbe31..544c68d3be 100644
--- a/code/modules/mining/aux_base.dm
+++ b/code/modules/mining/aux_base.dm
@@ -285,7 +285,7 @@ interface with the mining shuttle at the landing site if a mobile beacon is also
return
anti_spam_cd = 1
- addtimer(CALLBACK(src, .proc/clear_cooldown), 50)
+ addtimer(CALLBACK(src, PROC_REF(clear_cooldown)), 50)
var/turf/landing_spot = get_turf(src)
diff --git a/code/modules/mining/equipment/kinetic_crusher.dm b/code/modules/mining/equipment/kinetic_crusher.dm
index 89a6193919..993279ed26 100644
--- a/code/modules/mining/equipment/kinetic_crusher.dm
+++ b/code/modules/mining/equipment/kinetic_crusher.dm
@@ -94,7 +94,7 @@
D.fire()
charged = FALSE
update_icon()
- addtimer(CALLBACK(src, .proc/Recharge), charge_time)
+ addtimer(CALLBACK(src, PROC_REF(Recharge)), charge_time)
return
if(proximity_flag && isliving(target))
var/mob/living/L = target
@@ -344,7 +344,7 @@
continue
playsound(L, 'sound/blank.ogg', 20, TRUE)
new /obj/effect/temp_visual/fire(L.loc)
- addtimer(CALLBACK(src, .proc/pushback, L, user), 1) //no free backstabs, we push AFTER module stuff is done
+ addtimer(CALLBACK(src, PROC_REF(pushback), L, user), 1) //no free backstabs, we push AFTER module stuff is done
L.adjustFireLoss(bonus_value, forced = TRUE)
/obj/item/crusher_trophy/tail_spike/proc/pushback(mob/living/target, mob/living/user)
@@ -410,7 +410,7 @@
/obj/item/crusher_trophy/blaster_tubes/on_mark_detonation(mob/living/target, mob/living/user)
deadly_shot = TRUE
- addtimer(CALLBACK(src, .proc/reset_deadly_shot), 300, TIMER_UNIQUE|TIMER_OVERRIDE)
+ addtimer(CALLBACK(src, PROC_REF(reset_deadly_shot)), 300, TIMER_UNIQUE|TIMER_OVERRIDE)
/obj/item/crusher_trophy/blaster_tubes/proc/reset_deadly_shot()
deadly_shot = FALSE
diff --git a/code/modules/mining/equipment/regenerative_core.dm b/code/modules/mining/equipment/regenerative_core.dm
index 4d104a8a64..26f12f694f 100644
--- a/code/modules/mining/equipment/regenerative_core.dm
+++ b/code/modules/mining/equipment/regenerative_core.dm
@@ -33,7 +33,7 @@
/obj/item/organ/regenerative_core/Initialize()
. = ..()
- addtimer(CALLBACK(src, .proc/inert_check), 2400)
+ addtimer(CALLBACK(src, PROC_REF(inert_check)), 2400)
/obj/item/organ/regenerative_core/proc/inert_check()
if(!preserved)
diff --git a/code/modules/mining/equipment/resonator.dm b/code/modules/mining/equipment/resonator.dm
index 628ff4750d..0308cba738 100644
--- a/code/modules/mining/equipment/resonator.dm
+++ b/code/modules/mining/equipment/resonator.dm
@@ -70,7 +70,7 @@
transform = matrix()*0.75
animate(src, transform = matrix()*1.5, time = duration)
deltimer(timerid)
- timerid = addtimer(CALLBACK(src, .proc/burst), duration, TIMER_STOPPABLE)
+ timerid = addtimer(CALLBACK(src, PROC_REF(burst)), duration, TIMER_STOPPABLE)
/obj/effect/temp_visual/resonance/Destroy()
if(res)
diff --git a/code/modules/mining/equipment/wormhole_jaunter.dm b/code/modules/mining/equipment/wormhole_jaunter.dm
index d515a0a2e3..ece3521c0b 100644
--- a/code/modules/mining/equipment/wormhole_jaunter.dm
+++ b/code/modules/mining/equipment/wormhole_jaunter.dm
@@ -96,4 +96,4 @@
L.Paralyze(60)
if(ishuman(L))
shake_camera(L, 20, 1)
- addtimer(CALLBACK(L, /mob/living/carbon.proc/vomit), 20)
+ addtimer(CALLBACK(L, TYPE_PROC_REF(/mob/living/carbon, vomit)), 20)
diff --git a/code/modules/mining/laborcamp/laborstacker.dm b/code/modules/mining/laborcamp/laborstacker.dm
index 6e7ed78c36..14f73fb692 100644
--- a/code/modules/mining/laborcamp/laborstacker.dm
+++ b/code/modules/mining/laborcamp/laborstacker.dm
@@ -30,7 +30,7 @@ GLOBAL_LIST(labor_sheet_values)
if(!initial(sheet.point_value) || (initial(sheet.merge_type) && initial(sheet.merge_type) != sheet_type)) //ignore no-value sheets and x/fifty subtypes
continue
sheet_list += list(list("ore" = initial(sheet.name), "value" = initial(sheet.point_value)))
- GLOB.labor_sheet_values = sortList(sheet_list, /proc/cmp_sheet_list)
+ GLOB.labor_sheet_values = sortList(sheet_list, GLOBAL_PROC_REF(cmp_sheet_list))
/proc/cmp_sheet_list(list/a, list/b)
return a["value"] - b["value"]
diff --git a/code/modules/mining/lavaland/ash_flora.dm b/code/modules/mining/lavaland/ash_flora.dm
index 66a7fffa38..5d736cbc98 100644
--- a/code/modules/mining/lavaland/ash_flora.dm
+++ b/code/modules/mining/lavaland/ash_flora.dm
@@ -48,7 +48,7 @@
name = harvested_name
desc = harvested_desc
harvested = TRUE
- addtimer(CALLBACK(src, .proc/regrow), rand(regrowth_time_low, regrowth_time_high))
+ addtimer(CALLBACK(src, PROC_REF(regrow)), rand(regrowth_time_low, regrowth_time_high))
return 1
/obj/structure/flora/ash/proc/regrow()
diff --git a/code/modules/mining/lavaland/necropolis_chests.dm b/code/modules/mining/lavaland/necropolis_chests.dm
index 6f280978e8..7e47709bf2 100644
--- a/code/modules/mining/lavaland/necropolis_chests.dm
+++ b/code/modules/mining/lavaland/necropolis_chests.dm
@@ -308,7 +308,7 @@
/obj/effect/wisp/orbit(atom/thing)
. = ..()
// if(ismob(thing))
-// RegisterSignal(thing, COMSIG_MOB_UPDATE_SIGHT, .proc/update_user_sight)
+// RegisterSignal(thing, COMSIG_MOB_UPDATE_SIGHT, PROC_REF(update_user_sight))
// var/mob/being = thing
// being.update_sight()
// to_chat(thing, "The wisp enhances my vision.")
@@ -506,7 +506,7 @@
can_destroy = FALSE
- addtimer(CALLBACK(src, .proc/unvanish, user), 10 SECONDS)
+ addtimer(CALLBACK(src, PROC_REF(unvanish), user), 10 SECONDS)
/obj/effect/immortality_talisman/proc/unvanish(mob/user)
user.status_flags &= ~GODMODE
@@ -1013,7 +1013,7 @@
/obj/item/mayhem/attack_self(mob/user)
for(var/mob/living/carbon/human/H in range(7,user))
var/obj/effect/mine/pickup/bloodbath/B = new(H)
- INVOKE_ASYNC(B, /obj/effect/mine/pickup/bloodbath/.proc/mineEffect, H)
+ INVOKE_ASYNC(B, TYPE_PROC_REF(/obj/effect/mine/pickup/bloodbath, mineEffect), H)
to_chat(user, "I shatter the bottle!")
playsound(user.loc, 'sound/blank.ogg', 100, TRUE)
message_admins("[ADMIN_LOOKUPFLW(user)] has activated a bottle of mayhem!")
@@ -1140,11 +1140,11 @@
calculate_anger_mod(user)
timer = world.time + CLICK_CD_MELEE //by default, melee attacks only cause melee blasts, and have an accordingly short cooldown
if(proximity_flag)
- INVOKE_ASYNC(src, .proc/aoe_burst, T, user)
+ INVOKE_ASYNC(src, PROC_REF(aoe_burst), T, user)
log_combat(user, target, "fired 3x3 blast at", src)
else
if(ismineralturf(target) && get_dist(user, target) < 6) //target is minerals, we can hit it(even if we can't see it)
- INVOKE_ASYNC(src, .proc/cardinal_blasts, T, user)
+ INVOKE_ASYNC(src, PROC_REF(cardinal_blasts), T, user)
timer = world.time + cooldown_time
else if(target in view(5, get_turf(user))) //if the target is in view, hit it
timer = world.time + cooldown_time
@@ -1155,12 +1155,12 @@
C.monster_damage_boost = FALSE
log_combat(user, target, "fired a chaser at", src)
else
- INVOKE_ASYNC(src, .proc/cardinal_blasts, T, user) //otherwise, just do cardinal blast
+ INVOKE_ASYNC(src, PROC_REF(cardinal_blasts), T, user) //otherwise, just do cardinal blast
log_combat(user, target, "fired cardinal blast at", src)
else
to_chat(user, "That target is out of range!" )
timer = world.time
- INVOKE_ASYNC(src, .proc/prepare_icon_update)
+ INVOKE_ASYNC(src, PROC_REF(prepare_icon_update))
/obj/item/hierophant_club/proc/calculate_anger_mod(mob/user) //we get stronger as the user loses health
chaser_cooldown = initial(chaser_cooldown)
@@ -1203,7 +1203,7 @@
user.visible_message("[user] starts fiddling with [src]'s pommel...", \
"I start detaching the hierophant beacon...")
timer = world.time + 51
- INVOKE_ASYNC(src, .proc/prepare_icon_update)
+ INVOKE_ASYNC(src, PROC_REF(prepare_icon_update))
if(do_after(user, 50, target = user) && !beacon)
var/turf/T = get_turf(user)
playsound(T,'sound/blank.ogg', 200, TRUE, -4)
@@ -1215,7 +1215,7 @@
I can remove the beacon to place it again by striking it with the club.")
else
timer = world.time
- INVOKE_ASYNC(src, .proc/prepare_icon_update)
+ INVOKE_ASYNC(src, PROC_REF(prepare_icon_update))
else
to_chat(user, "I need to be on solid ground to detach the beacon!")
return
@@ -1232,7 +1232,7 @@
user.update_action_buttons_icon()
user.visible_message("[user] starts to glow faintly...")
timer = world.time + 50
- INVOKE_ASYNC(src, .proc/prepare_icon_update)
+ INVOKE_ASYNC(src, PROC_REF(prepare_icon_update))
beacon.icon_state = "hierophant_tele_on"
var/obj/effect/temp_visual/hierophant/telegraph/edge/TE1 = new /obj/effect/temp_visual/hierophant/telegraph/edge(user.loc)
var/obj/effect/temp_visual/hierophant/telegraph/edge/TE2 = new /obj/effect/temp_visual/hierophant/telegraph/edge(beacon.loc)
@@ -1244,7 +1244,7 @@
to_chat(user, "The beacon is blocked by something, preventing teleportation!")
user.update_action_buttons_icon()
timer = world.time
- INVOKE_ASYNC(src, .proc/prepare_icon_update)
+ INVOKE_ASYNC(src, PROC_REF(prepare_icon_update))
beacon.icon_state = "hierophant_tele_off"
return
new /obj/effect/temp_visual/hierophant/telegraph(T, user)
@@ -1256,7 +1256,7 @@
if(user)
user.update_action_buttons_icon()
timer = world.time
- INVOKE_ASYNC(src, .proc/prepare_icon_update)
+ INVOKE_ASYNC(src, PROC_REF(prepare_icon_update))
if(beacon)
beacon.icon_state = "hierophant_tele_off"
return
@@ -1265,7 +1265,7 @@
to_chat(user, "The beacon is blocked by something, preventing teleportation!")
user.update_action_buttons_icon()
timer = world.time
- INVOKE_ASYNC(src, .proc/prepare_icon_update)
+ INVOKE_ASYNC(src, PROC_REF(prepare_icon_update))
beacon.icon_state = "hierophant_tele_off"
return
user.log_message("teleported self from [AREACOORD(source)] to [beacon]", LOG_GAME)
@@ -1278,7 +1278,7 @@
var/obj/effect/temp_visual/hierophant/blast/B = new /obj/effect/temp_visual/hierophant/blast(t, user, TRUE) //but absolutely will hurt enemies
B.damage = 30
for(var/mob/living/L in range(1, source))
- INVOKE_ASYNC(src, .proc/teleport_mob, source, L, T, user) //regardless, take all mobs near us along
+ INVOKE_ASYNC(src, PROC_REF(teleport_mob), source, L, T, user) //regardless, take all mobs near us along
sleep(6) //at this point the blasts detonate
if(beacon)
beacon.icon_state = "hierophant_tele_off"
@@ -1286,7 +1286,7 @@
qdel(TE1)
qdel(TE2)
timer = world.time
- INVOKE_ASYNC(src, .proc/prepare_icon_update)
+ INVOKE_ASYNC(src, PROC_REF(prepare_icon_update))
if(beacon)
beacon.icon_state = "hierophant_tele_off"
teleporting = FALSE
@@ -1327,7 +1327,7 @@
B.damage = HIEROPHANT_CLUB_CARDINAL_DAMAGE
B.monster_damage_boost = FALSE
for(var/d in GLOB.cardinals)
- INVOKE_ASYNC(src, .proc/blast_wall, T, d, user)
+ INVOKE_ASYNC(src, PROC_REF(blast_wall), T, d, user)
/obj/item/hierophant_club/proc/blast_wall(turf/T, dir, mob/living/user) //make a wall of blasts blast_range tiles long
if(!T)
diff --git a/code/modules/mining/ores_coins.dm b/code/modules/mining/ores_coins.dm
index a6d0f1bfa3..8b03c6df5b 100644
--- a/code/modules/mining/ores_coins.dm
+++ b/code/modules/mining/ores_coins.dm
@@ -286,7 +286,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\
else
user.visible_message("[user] strikes \the [src], causing a chain reaction!", "I strike \the [src], causing a chain reaction.")
log_bomber(user, "has primed a", src, "for detonation", notify_admins)
- det_timer = addtimer(CALLBACK(src, .proc/detonate, notify_admins), det_time, TIMER_STOPPABLE)
+ det_timer = addtimer(CALLBACK(src, PROC_REF(detonate), notify_admins), det_time, TIMER_STOPPABLE)
/obj/item/twohanded/required/gibtonite/proc/detonate(notify_admins)
if(primed)
@@ -354,7 +354,7 @@ GLOBAL_LIST_INIT(sand_recipes, list(\
if (!attack_self(user))
user.visible_message("[user] couldn't flip \the [src]!")
return SHAME
- addtimer(CALLBACK(src, .proc/manual_suicide, user), 10)//10 = time takes for flip animation
+ addtimer(CALLBACK(src, PROC_REF(manual_suicide), user), 10)//10 = time takes for flip animation
return MANUAL_SUICIDE_NONLETHAL
/obj/item/coin/proc/manual_suicide(mob/living/user)
diff --git a/code/modules/mob/dead/dead.dm b/code/modules/mob/dead/dead.dm
index c7344fa819..ca491b212a 100644
--- a/code/modules/mob/dead/dead.dm
+++ b/code/modules/mob/dead/dead.dm
@@ -21,6 +21,10 @@ INITIALIZE_IMMEDIATE(/mob/dead)
set_focus(src)
return INITIALIZE_HINT_NORMAL
+/mob/dead/Destroy()
+ GLOB.mob_list -= src
+ return ..()
+
/mob/dead/canUseStorage()
return FALSE
diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm
index 85ffa1cbcd..30c6a7fdbd 100644
--- a/code/modules/mob/dead/observer/observer.dm
+++ b/code/modules/mob/dead/observer/observer.dm
@@ -247,7 +247,7 @@ GLOBAL_VAR_INIT(observer_default_invisibility, INVISIBILITY_OBSERVER)
var/old_color = color
color = "#960000"
animate(src, color = old_color, time = 10, flags = ANIMATION_PARALLEL)
- addtimer(CALLBACK(src, /atom/proc/update_atom_colour), 10)
+ addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, update_atom_colour)), 10)
/mob/dead/observer/Destroy()
GLOB.ghost_images_default -= ghostimage_default
diff --git a/code/modules/mob/living/blood.dm b/code/modules/mob/living/blood.dm
index a207ca18ed..2939b45e48 100644
--- a/code/modules/mob/living/blood.dm
+++ b/code/modules/mob/living/blood.dm
@@ -7,7 +7,7 @@
return
else
bleedsuppress = TRUE
- addtimer(CALLBACK(src, .proc/resume_bleeding), amount)
+ addtimer(CALLBACK(src, PROC_REF(resume_bleeding)), amount)
/mob/living/proc/resume_bleeding()
bleedsuppress = 0
diff --git a/code/modules/mob/living/bloodcrawl.dm b/code/modules/mob/living/bloodcrawl.dm
index 665442fe1a..1e6eb71d69 100644
--- a/code/modules/mob/living/bloodcrawl.dm
+++ b/code/modules/mob/living/bloodcrawl.dm
@@ -38,7 +38,7 @@
C.regenerate_icons()
notransform = TRUE
- INVOKE_ASYNC(src, .proc/bloodpool_sink, B)
+ INVOKE_ASYNC(src, PROC_REF(bloodpool_sink), B)
return TRUE
@@ -155,7 +155,7 @@
newcolor = rgb(43, 186, 0)
add_atom_colour(newcolor, TEMPORARY_COLOUR_PRIORITY)
// but only for a few seconds
- addtimer(CALLBACK(src, /atom/.proc/remove_atom_colour, TEMPORARY_COLOUR_PRIORITY, newcolor), 6 SECONDS)
+ addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, remove_atom_colour), TEMPORARY_COLOUR_PRIORITY, newcolor), 6 SECONDS)
/mob/living/proc/phasein(obj/effect/decal/cleanable/B)
if(notransform)
diff --git a/code/modules/mob/living/brain/posibrain.dm b/code/modules/mob/living/brain/posibrain.dm
index 6d262d2956..e50e7064e2 100644
--- a/code/modules/mob/living/brain/posibrain.dm
+++ b/code/modules/mob/living/brain/posibrain.dm
@@ -55,7 +55,7 @@ GLOBAL_VAR(posibrain_notify_cooldown)
next_ask = world.time + askDelay
searching = TRUE
update_icon()
- addtimer(CALLBACK(src, .proc/check_success), askDelay)
+ addtimer(CALLBACK(src, PROC_REF(check_success)), askDelay)
/obj/item/mmi/posibrain/proc/check_success()
searching = FALSE
diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm
index 55c329611e..156ee78719 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm
@@ -47,7 +47,7 @@
leaping = 1
weather_immunities += "lava"
update_icons()
- throw_at(A, MAX_ALIEN_LEAP_DIST, 1, src, FALSE, TRUE, callback = CALLBACK(src, .proc/leap_end))
+ throw_at(A, MAX_ALIEN_LEAP_DIST, 1, src, FALSE, TRUE, callback = CALLBACK(src, PROC_REF(leap_end)))
/mob/living/carbon/alien/humanoid/hunter/proc/leap_end()
leaping = 0
diff --git a/code/modules/mob/living/carbon/alien/organs.dm b/code/modules/mob/living/carbon/alien/organs.dm
index 56009fa14f..1463b0fe07 100644
--- a/code/modules/mob/living/carbon/alien/organs.dm
+++ b/code/modules/mob/living/carbon/alien/organs.dm
@@ -145,7 +145,7 @@
recent_queen_death = 1
owner.throw_alert("alien_noqueen", /obj/screen/alert/alien_vulnerable)
- addtimer(CALLBACK(src, .proc/clear_queen_death), QUEEN_DEATH_DEBUFF_DURATION)
+ addtimer(CALLBACK(src, PROC_REF(clear_queen_death)), QUEEN_DEATH_DEBUFF_DURATION)
/obj/item/organ/alien/hivenode/proc/clear_queen_death()
diff --git a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm
index 19c1278947..ade4924a5f 100644
--- a/code/modules/mob/living/carbon/alien/special/alien_embryo.dm
+++ b/code/modules/mob/living/carbon/alien/special/alien_embryo.dm
@@ -53,7 +53,7 @@
/obj/item/organ/body_egg/alien_embryo/egg_process()
if(stage < 5 && prob(3))
stage++
- INVOKE_ASYNC(src, .proc/RefreshInfectionImage)
+ INVOKE_ASYNC(src, PROC_REF(RefreshInfectionImage))
if(stage == 5 && prob(50))
for(var/datum/surgery/S in owner.surgeries)
diff --git a/code/modules/mob/living/carbon/alien/special/facehugger.dm b/code/modules/mob/living/carbon/alien/special/facehugger.dm
index ba1517d090..1d33d09a7f 100644
--- a/code/modules/mob/living/carbon/alien/special/facehugger.dm
+++ b/code/modules/mob/living/carbon/alien/special/facehugger.dm
@@ -107,7 +107,7 @@
return
if(stat == CONSCIOUS)
icon_state = "[initial(icon_state)]_thrown"
- addtimer(CALLBACK(src, .proc/clear_throw_icon_state), 15)
+ addtimer(CALLBACK(src, PROC_REF(clear_throw_icon_state)), 15)
/obj/item/clothing/mask/facehugger/proc/clear_throw_icon_state()
if(icon_state == "[initial(icon_state)]_thrown")
@@ -179,7 +179,7 @@
// early returns and validity checks done: attach.
attached++
//ensure we detach once we no longer need to be attached
- addtimer(CALLBACK(src, .proc/detach), MAX_IMPREGNATION_TIME)
+ addtimer(CALLBACK(src, PROC_REF(detach)), MAX_IMPREGNATION_TIME)
if(!sterile)
@@ -188,7 +188,7 @@
GoIdle() //so it doesn't jump the people that tear it off
- addtimer(CALLBACK(src, .proc/Impregnate, M), rand(MIN_IMPREGNATION_TIME, MAX_IMPREGNATION_TIME))
+ addtimer(CALLBACK(src, PROC_REF(Impregnate), M), rand(MIN_IMPREGNATION_TIME, MAX_IMPREGNATION_TIME))
/obj/item/clothing/mask/facehugger/proc/detach()
attached = 0
@@ -233,7 +233,7 @@
stat = UNCONSCIOUS
icon_state = "[initial(icon_state)]_inactive"
- addtimer(CALLBACK(src, .proc/GoActive), rand(MIN_ACTIVE_TIME, MAX_ACTIVE_TIME))
+ addtimer(CALLBACK(src, PROC_REF(GoActive)), rand(MIN_ACTIVE_TIME, MAX_ACTIVE_TIME))
/obj/item/clothing/mask/facehugger/proc/Die()
if(stat == DEAD)
diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index e6af650a97..bd0a61486a 100644
--- a/code/modules/mob/living/carbon/carbon.dm
+++ b/code/modules/mob/living/carbon/carbon.dm
@@ -552,7 +552,7 @@
mob_timers["puke"] = world.time
if(getorgan(/obj/item/organ/stomach))
to_chat(src, "I'm going to puke...")
- addtimer(CALLBACK(src, .proc/vomit, 50), rand(8 SECONDS, 15 SECONDS))
+ addtimer(CALLBACK(src, PROC_REF(vomit), 50), rand(8 SECONDS, 15 SECONDS))
else
if(prob(3))
to_chat(src, "I feel sick...")
@@ -560,7 +560,7 @@
if(getorgan(/obj/item/organ/stomach))
mob_timers["puke"] = world.time
to_chat(src, "I'm going to puke...")
- addtimer(CALLBACK(src, .proc/vomit, 50), rand(8 SECONDS, 15 SECONDS))
+ addtimer(CALLBACK(src, PROC_REF(vomit), 50), rand(8 SECONDS, 15 SECONDS))
add_nausea(-1)
@@ -1234,7 +1234,7 @@
if(!check_rights(NONE))
return
var/list/traumas = subtypesof(/datum/brain_trauma)
- var/result = input(usr, "Choose the brain trauma to apply","Traumatize") as null|anything in sortList(traumas, /proc/cmp_typepaths_asc)
+ var/result = input(usr, "Choose the brain trauma to apply","Traumatize") as null|anything in sortList(traumas, GLOBAL_PROC_REF(cmp_typepaths_asc))
if(!usr)
return
if(QDELETED(src))
@@ -1256,7 +1256,7 @@
if(!check_rights(NONE))
return
var/list/hallucinations = subtypesof(/datum/hallucination)
- var/result = input(usr, "Choose the hallucination to apply","Send Hallucination") as null|anything in sortList(hallucinations, /proc/cmp_typepaths_asc)
+ var/result = input(usr, "Choose the hallucination to apply","Send Hallucination") as null|anything in sortList(hallucinations, GLOBAL_PROC_REF(cmp_typepaths_asc))
if(!usr)
return
if(QDELETED(src))
diff --git a/code/modules/mob/living/carbon/carbon_defense.dm b/code/modules/mob/living/carbon/carbon_defense.dm
index 0a19f12f28..fa9227e7c7 100644
--- a/code/modules/mob/living/carbon/carbon_defense.dm
+++ b/code/modules/mob/living/carbon/carbon_defense.dm
@@ -390,7 +390,7 @@
do_jitter_animation(jitteriness)
stuttering += 2
emote("painscream")
- addtimer(CALLBACK(src, .proc/secondary_shock, should_stun), 20)
+ addtimer(CALLBACK(src, PROC_REF(secondary_shock), should_stun), 20)
return shock_damage
///Called slightly after electrocute act to reduce jittering and apply a secondary stun.
diff --git a/code/modules/mob/living/carbon/death.dm b/code/modules/mob/living/carbon/death.dm
index 8448704a62..fdab56ced1 100644
--- a/code/modules/mob/living/carbon/death.dm
+++ b/code/modules/mob/living/carbon/death.dm
@@ -29,7 +29,7 @@
return ..()
/mob/living/carbon/proc/inflate_gib() // Plays an animation that makes mobs appear to inflate before finally gibbing
- addtimer(CALLBACK(src, .proc/gib, null, null, TRUE, TRUE), 25)
+ addtimer(CALLBACK(src, PROC_REF(gib), null, null, TRUE, TRUE), 25)
var/matrix/M = matrix()
M.Scale(1.8, 1.2)
animate(src, time = 40, transform = M, easing = SINE_EASING)
diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm
index 4cf4a8573d..10049a23e5 100644
--- a/code/modules/mob/living/carbon/human/death.dm
+++ b/code/modules/mob/living/carbon/human/death.dm
@@ -125,7 +125,7 @@
SSblackbox.ReportDeath(src)
log_message("has died (BRUTE: [src.getBruteLoss()], BURN: [src.getFireLoss()], TOX: [src.getToxLoss()], OXY: [src.getOxyLoss()], CLONE: [src.getCloneLoss()])", LOG_ATTACK)
if(is_devil(src))
- INVOKE_ASYNC(is_devil(src), /datum/antagonist/devil.proc/beginResurrectionCheck, src)
+ INVOKE_ASYNC(is_devil(src), TYPE_PROC_REF(/datum/antagonist/devil, beginResurrectionCheck), src)
/mob/living/carbon/human/proc/zombie_check()
if(mind && ckey)
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index d4f3c4a447..c88a67815a 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -18,7 +18,7 @@
. = ..()
- RegisterSignal(src, COMSIG_COMPONENT_CLEAN_ACT, .proc/clean_blood)
+ RegisterSignal(src, COMSIG_COMPONENT_CLEAN_ACT, PROC_REF(clean_blood))
AddComponent(/datum/component/personal_crafting)
AddComponent(/datum/component/footstep, footstep_type, 1, 2)
GLOB.human_list += src
@@ -850,7 +850,7 @@
electrocution_skeleton_anim = mutable_appearance(icon, "electrocuted_base")
electrocution_skeleton_anim.appearance_flags |= RESET_COLOR|KEEP_APART
add_overlay(electrocution_skeleton_anim)
- addtimer(CALLBACK(src, .proc/end_electrocution_animation, electrocution_skeleton_anim), anim_duration)
+ addtimer(CALLBACK(src, PROC_REF(end_electrocution_animation), electrocution_skeleton_anim), anim_duration)
else //or just do a generic animation
flick_overlay_view(image(icon,src,"electrocuted_generic",ABOVE_MOB_LAYER), src, anim_duration)
diff --git a/code/modules/mob/living/carbon/human/npc/_npc.dm b/code/modules/mob/living/carbon/human/npc/_npc.dm
index 697ee30e29..e2b34a9083 100644
--- a/code/modules/mob/living/carbon/human/npc/_npc.dm
+++ b/code/modules/mob/living/carbon/human/npc/_npc.dm
@@ -193,7 +193,7 @@
// else if(istype(I, /obj/item/clothing))
// var/obj/item/clothing/C = I
// monkeyDrop(C)
-// addtimer(CALLBACK(src, .proc/pickup_and_wear, C), 5)
+// addtimer(CALLBACK(src, PROC_REF(pickup_and_wear), C), 5)
// return TRUE
// EVERYTHING ELSE
@@ -208,7 +208,7 @@
/mob/living/carbon/human/proc/pickup_and_wear(obj/item/clothing/C)
if(!equip_to_appropriate_slot(C))
monkeyDrop(get_item_by_slot(C)) // remove the existing item if worn
- addtimer(CALLBACK(src, .proc/equip_to_appropriate_slot, C), 5)
+ addtimer(CALLBACK(src, PROC_REF(equip_to_appropriate_slot), C), 5)
/mob/living/carbon/human/proc/monkeyDrop(obj/item/A)
if(A)
@@ -268,7 +268,7 @@
back_to_idle()
return TRUE
m_intent = MOVE_INTENT_WALK
- INVOKE_ASYNC(src, .proc/walk2derpless, target)
+ INVOKE_ASYNC(src, PROC_REF(walk2derpless), target)
if(!get_active_held_item() && !get_inactive_held_item())
// pickup any nearby weapon
diff --git a/code/modules/mob/living/carbon/human/npc/bum.dm b/code/modules/mob/living/carbon/human/npc/bum.dm
index 9f5ae1f882..64ca8f23bd 100644
--- a/code/modules/mob/living/carbon/human/npc/bum.dm
+++ b/code/modules/mob/living/carbon/human/npc/bum.dm
@@ -37,7 +37,7 @@ GLOBAL_LIST_INIT(bum_aggro, world.file2list("strings/rt/bumaggrolines.txt"))
set_species(/datum/species/human/northern)
spawn(10)
after_creation()
- //addtimer(CALLBACK(src, .proc/after_creation), 10)
+ //addtimer(CALLBACK(src, PROC_REF(after_creation)), 10)
/mob/living/carbon/human/species/human/northern/bum/after_creation()
..()
diff --git a/code/modules/mob/living/carbon/human/npc/goblin.dm b/code/modules/mob/living/carbon/human/npc/goblin.dm
index 52ed5b6da5..1dac3b27cc 100644
--- a/code/modules/mob/living/carbon/human/npc/goblin.dm
+++ b/code/modules/mob/living/carbon/human/npc/goblin.dm
@@ -184,7 +184,7 @@
. = ..()
spawn(10)
after_creation()
- //addtimer(CALLBACK(src, .proc/after_creation), 10)
+ //addtimer(CALLBACK(src, PROC_REF(after_creation)), 10)
/mob/living/carbon/human/species/goblin/handle_combat()
if(mode == AI_HUNT)
@@ -402,7 +402,7 @@
update_icon()
spawn(2 SECONDS)
creategob()
- //addtimer(CALLBACK(src, .proc/creategob), 4 SECONDS)
+ //addtimer(CALLBACK(src, PROC_REF(creategob)), 4 SECONDS)
/obj/structure/gob_portal/Destroy()
soundloop.stop()
diff --git a/code/modules/mob/living/carbon/human/npc/skeleton.dm b/code/modules/mob/living/carbon/human/npc/skeleton.dm
index 91fe0f6cbf..33e5f39304 100644
--- a/code/modules/mob/living/carbon/human/npc/skeleton.dm
+++ b/code/modules/mob/living/carbon/human/npc/skeleton.dm
@@ -26,7 +26,7 @@
spawn(10)
after_creation()
- addtimer(CALLBACK(src, .proc/after_creation), 10)
+ addtimer(CALLBACK(src, PROC_REF(after_creation)), 10)
/mob/living/carbon/human/species/skeleton/after_creation()
..()
diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm
index 80e08cece6..f3de48561d 100644
--- a/code/modules/mob/living/carbon/human/species.dm
+++ b/code/modules/mob/living/carbon/human/species.dm
@@ -1708,7 +1708,7 @@ GLOBAL_LIST_EMPTY(roundstart_races)
if(radiation > RAD_MOB_HAIRLOSS)
if(prob(15) && !(H.hairstyle == "Bald") && (HAIR in species_traits))
to_chat(H, "My hair starts to fall out in clumps...")
- addtimer(CALLBACK(src, .proc/go_bald, H), 50)
+ addtimer(CALLBACK(src, PROC_REF(go_bald), H), 50)
/datum/species/proc/go_bald(mob/living/carbon/human/H)
if(QDELETED(H)) //may be called from a timer
@@ -1955,7 +1955,7 @@ GLOBAL_LIST_EMPTY(roundstart_races)
target.visible_message("[user.name] kicks [target.name] onto their side!",
"You're kicked onto my side by [user.name]!", "I hear aggressive shuffling followed by a loud thud!", COMBAT_MESSAGE_RANGE, user)
to_chat(user, "I kick [target.name] onto their side!")
- addtimer(CALLBACK(target, /mob/living/proc/SetKnockdown, 0), SHOVE_CHAIN_PARALYZE)
+ addtimer(CALLBACK(target, TYPE_PROC_REF(/mob/living, SetKnockdown), 0), SHOVE_CHAIN_PARALYZE)
log_combat(user, target, "kicks", "onto their side (paralyzing)")*/
if(shove_blocked && !target.is_shove_knockdown_blocked() && !target.buckled)
@@ -2004,7 +2004,7 @@ GLOBAL_LIST_EMPTY(roundstart_races)
if(target_held_item)
target.visible_message("[target.name]'s grip on \the [target_held_item] loosens!",
"My grip on \the [target_held_item] loosens!", null, COMBAT_MESSAGE_RANGE)
- addtimer(CALLBACK(target, /mob/living/carbon/human/proc/clear_shove_slowdown), SHOVE_SLOWDOWN_LENGTH)
+ addtimer(CALLBACK(target, TYPE_PROC_REF(/mob/living/carbon/human, clear_shove_slowdown)), SHOVE_SLOWDOWN_LENGTH)
else if(target_held_item)
target.dropItemToGround(target_held_item)
knocked_item = TRUE
@@ -2737,7 +2737,7 @@ GLOBAL_LIST_EMPTY(roundstart_races)
buckled_obj.unbuckle_mob(H)
step(buckled_obj, olddir)
else
- new /datum/forced_movement(H, get_ranged_target_turf(H, olddir, 4), 1, FALSE, CALLBACK(H, /mob/living/carbon/.proc/spin, 1, 1))
+ new /datum/forced_movement(H, get_ranged_target_turf(H, olddir, 4), 1, FALSE, CALLBACK(H, TYPE_PROC_REF(/mob/living/carbon, spin), 1, 1))
return TRUE
//UNSAFE PROC, should only be called through the Activate or other sources that check for CanFly
@@ -2794,7 +2794,7 @@ GLOBAL_LIST_EMPTY(roundstart_races)
user, \
spin = FALSE, \
force = target.move_force, \
- callback = CALLBACK(target, /mob/living/proc/handle_knockback, get_turf(target)))
+ callback = CALLBACK(target, TYPE_PROC_REF(/mob/living, handle_knockback), get_turf(target)))
else
if(!I.force)
return
@@ -2816,7 +2816,7 @@ GLOBAL_LIST_EMPTY(roundstart_races)
user, \
spin = FALSE, \
force = target.move_force, \
- callback = CALLBACK(target, /mob/living/proc/handle_knockback, get_turf(target)))
+ callback = CALLBACK(target, TYPE_PROC_REF(/mob/living, handle_knockback), get_turf(target)))
/mob/living/proc/handle_knockback(turf/starting_turf)
var/distance = 0
diff --git a/code/modules/mob/living/carbon/human/species_types/ethereal.dm b/code/modules/mob/living/carbon/human/species_types/ethereal.dm
index 8823280003..89da3ee1a0 100644
--- a/code/modules/mob/living/carbon/human/species_types/ethereal.dm
+++ b/code/modules/mob/living/carbon/human/species_types/ethereal.dm
@@ -39,8 +39,8 @@
g1 = GetGreenPart(default_color)
b1 = GetBluePart(default_color)
spec_updatehealth(H)
- RegisterSignal(C, COMSIG_ATOM_EMAG_ACT, .proc/on_emag_act)
- RegisterSignal(C, COMSIG_ATOM_EMP_ACT, .proc/on_emp_act)
+ RegisterSignal(C, COMSIG_ATOM_EMAG_ACT, PROC_REF(on_emag_act))
+ RegisterSignal(C, COMSIG_ATOM_EMP_ACT, PROC_REF(on_emp_act))
/datum/species/ethereal/on_species_loss(mob/living/carbon/human/C, datum/species/new_species, pref_load)
.=..()
@@ -75,9 +75,9 @@
to_chat(H, "I feel the light of your body leave you.")
switch(severity)
if(EMP_LIGHT)
- addtimer(CALLBACK(src, .proc/stop_emp, H), 10 SECONDS, TIMER_UNIQUE|TIMER_OVERRIDE) //We're out for 10 seconds
+ addtimer(CALLBACK(src, PROC_REF(stop_emp), H), 10 SECONDS, TIMER_UNIQUE|TIMER_OVERRIDE) //We're out for 10 seconds
if(EMP_HEAVY)
- addtimer(CALLBACK(src, .proc/stop_emp, H), 20 SECONDS, TIMER_UNIQUE|TIMER_OVERRIDE) //We're out for 20 seconds
+ addtimer(CALLBACK(src, PROC_REF(stop_emp), H), 20 SECONDS, TIMER_UNIQUE|TIMER_OVERRIDE) //We're out for 20 seconds
/datum/species/ethereal/proc/on_emag_act(mob/living/carbon/human/H, mob/user)
if(emageffect)
@@ -87,7 +87,7 @@
to_chat(user, "I tap [H] on the back with your card.")
H.visible_message("[H] starts flickering in an array of colors!")
handle_emag(H)
- addtimer(CALLBACK(src, .proc/stop_emag, H), 30 SECONDS) //Disco mode for 30 seconds! This doesn't affect the ethereal at all besides either annoying some players, or making someone look badass.
+ addtimer(CALLBACK(src, PROC_REF(stop_emag), H), 30 SECONDS) //Disco mode for 30 seconds! This doesn't affect the ethereal at all besides either annoying some players, or making someone look badass.
/datum/species/ethereal/spec_life(mob/living/carbon/human/H)
@@ -106,7 +106,7 @@
return
current_color = pick(ETHEREAL_COLORS)
spec_updatehealth(H)
- addtimer(CALLBACK(src, .proc/handle_emag, H), 5) //Call ourselves every 0.5 seconds to change color
+ addtimer(CALLBACK(src, PROC_REF(handle_emag), H), 5) //Call ourselves every 0.5 seconds to change color
/datum/species/ethereal/proc/stop_emag(mob/living/carbon/human/H)
emageffect = FALSE
diff --git a/code/modules/mob/living/carbon/human/species_types/golems.dm b/code/modules/mob/living/carbon/human/species_types/golems.dm
index 61bc44154b..4973a46f66 100644
--- a/code/modules/mob/living/carbon/human/species_types/golems.dm
+++ b/code/modules/mob/living/carbon/human/species_types/golems.dm
@@ -478,7 +478,7 @@
var/mob/living/carbon/human/H = owner
H.visible_message("[H] starts vibrating!", "I start charging my bluespace core...")
playsound(get_turf(H), 'sound/blank.ogg', 25, TRUE)
- addtimer(CALLBACK(src, .proc/teleport, H), 15)
+ addtimer(CALLBACK(src, PROC_REF(teleport), H), 15)
/datum/action/innate/unstable_teleport/proc/teleport(mob/living/carbon/human/H)
H.visible_message("[H] disappears in a shower of sparks!", "I teleport!")
@@ -490,7 +490,7 @@
last_teleport = world.time
UpdateButtonIcon() //action icon looks unavailable
//action icon looks available again
- addtimer(CALLBACK(src, .proc/UpdateButtonIcon), cooldown + 5)
+ addtimer(CALLBACK(src, PROC_REF(UpdateButtonIcon)), cooldown + 5)
//honk
@@ -519,7 +519,7 @@
..()
last_banana = world.time
last_honk = world.time
- RegisterSignal(C, COMSIG_MOB_SAY, .proc/handle_speech)
+ RegisterSignal(C, COMSIG_MOB_SAY, PROC_REF(handle_speech))
/datum/species/golem/bananium/on_species_loss(mob/living/carbon/C)
. = ..()
@@ -703,7 +703,7 @@
H.forceMove(src)
cloth_golem = H
to_chat(cloth_golem, "I start gathering my life energy, preparing to rise again...")
- addtimer(CALLBACK(src, .proc/revive), revive_time)
+ addtimer(CALLBACK(src, PROC_REF(revive)), revive_time)
else
return INITIALIZE_HINT_QDEL
@@ -991,7 +991,7 @@
badtime.appearance_flags = RESET_COLOR
H.overlays_standing[FIRE_LAYER+0.5] = badtime
H.apply_overlay(FIRE_LAYER+0.5)
- addtimer(CALLBACK(H, /mob/living/carbon/.proc/remove_overlay, FIRE_LAYER+0.5), 25)
+ addtimer(CALLBACK(H, TYPE_PROC_REF(/mob/living/carbon, remove_overlay), FIRE_LAYER+0.5), 25)
else
playsound(get_turf(owner),'sound/blank.ogg', 100)
for(var/mob/living/L in orange(7, get_turf(owner)))
@@ -1078,7 +1078,7 @@
SEND_SOUND(C, sound('sound/blank.ogg'))
C.AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/knock ())
- RegisterSignal(C, COMSIG_MOB_SAY, .proc/handle_speech)
+ RegisterSignal(C, COMSIG_MOB_SAY, PROC_REF(handle_speech))
/datum/species/golem/capitalist/on_species_loss(mob/living/carbon/C)
. = ..()
@@ -1120,13 +1120,13 @@
SEND_SOUND(C, sound('sound/blank.ogg'))
C.AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/knock ())
- RegisterSignal(C, COMSIG_MOB_SAY, .proc/handle_speech)
+ RegisterSignal(C, COMSIG_MOB_SAY, PROC_REF(handle_speech))
/datum/species/golem/soviet/on_species_loss(mob/living/carbon/C)
. = ..()
for(var/obj/effect/proc_holder/spell/aoe_turf/knock/spell in C.mob_spell_list)
C.RemoveSpell(spell)
- UnregisterSignal(C, COMSIG_MOB_SAY, .proc/handle_speech)
+ UnregisterSignal(C, COMSIG_MOB_SAY, PROC_REF(handle_speech))
/datum/species/golem/soviet/spec_unarmedattacked(mob/living/carbon/human/user, mob/living/carbon/human/target)
..()
diff --git a/code/modules/mob/living/carbon/human/species_types/roguetown/dwarf/_dwarf.dm b/code/modules/mob/living/carbon/human/species_types/roguetown/dwarf/_dwarf.dm
index a4a0eb2d0d..7585773567 100644
--- a/code/modules/mob/living/carbon/human/species_types/roguetown/dwarf/_dwarf.dm
+++ b/code/modules/mob/living/carbon/human/species_types/roguetown/dwarf/_dwarf.dm
@@ -8,7 +8,7 @@
/datum/species/dwarf/on_species_gain(mob/living/carbon/C, datum/species/old_species)
..()
- RegisterSignal(C, COMSIG_MOB_SAY, .proc/handle_speech)
+ RegisterSignal(C, COMSIG_MOB_SAY, PROC_REF(handle_speech))
C.grant_language(/datum/language/common)
C.grant_language(/datum/language/dwarvish)
diff --git a/code/modules/mob/living/carbon/human/species_types/roguetown/elf/_elf.dm b/code/modules/mob/living/carbon/human/species_types/roguetown/elf/_elf.dm
index ed61905e4d..5d6d04ad28 100644
--- a/code/modules/mob/living/carbon/human/species_types/roguetown/elf/_elf.dm
+++ b/code/modules/mob/living/carbon/human/species_types/roguetown/elf/_elf.dm
@@ -9,7 +9,7 @@
/datum/species/elf/on_species_gain(mob/living/carbon/C, datum/species/old_species)
..()
- RegisterSignal(C, COMSIG_MOB_SAY, .proc/handle_speech)
+ RegisterSignal(C, COMSIG_MOB_SAY, PROC_REF(handle_speech))
C.grant_language(/datum/language/common)
C.grant_language(/datum/language/elvish)
diff --git a/code/modules/mob/living/carbon/human/species_types/roguetown/human/_human.dm b/code/modules/mob/living/carbon/human/species_types/roguetown/human/_human.dm
index 6b0bb7b772..475959daf5 100644
--- a/code/modules/mob/living/carbon/human/species_types/roguetown/human/_human.dm
+++ b/code/modules/mob/living/carbon/human/species_types/roguetown/human/_human.dm
@@ -7,7 +7,7 @@
/datum/species/human/on_species_gain(mob/living/carbon/C, datum/species/old_species)
. = ..()
- RegisterSignal(C, COMSIG_MOB_SAY, .proc/handle_speech)
+ RegisterSignal(C, COMSIG_MOB_SAY, PROC_REF(handle_speech))
C.grant_language(/datum/language/common)
var/mob/living/carbon/human/H = C
diff --git a/code/modules/mob/living/carbon/human/species_types/roguetown/other/aasimar.dm b/code/modules/mob/living/carbon/human/species_types/roguetown/other/aasimar.dm
index 42215b63c1..da880e8b3b 100644
--- a/code/modules/mob/living/carbon/human/species_types/roguetown/other/aasimar.dm
+++ b/code/modules/mob/living/carbon/human/species_types/roguetown/other/aasimar.dm
@@ -52,7 +52,7 @@
/datum/species/aasimar/on_species_gain(mob/living/carbon/C, datum/species/old_species)
..()
- RegisterSignal(C, COMSIG_MOB_SAY, .proc/handle_speech)
+ RegisterSignal(C, COMSIG_MOB_SAY, PROC_REF(handle_speech))
C.grant_language(/datum/language/common)
/datum/species/aasimar/after_creation(mob/living/carbon/C)
diff --git a/code/modules/mob/living/carbon/human/species_types/roguetown/other/tiefling.dm b/code/modules/mob/living/carbon/human/species_types/roguetown/other/tiefling.dm
index b5d4683456..62b1ff0fb8 100644
--- a/code/modules/mob/living/carbon/human/species_types/roguetown/other/tiefling.dm
+++ b/code/modules/mob/living/carbon/human/species_types/roguetown/other/tiefling.dm
@@ -56,7 +56,7 @@
/datum/species/tieberian/on_species_gain(mob/living/carbon/C, datum/species/old_species)
..()
- RegisterSignal(C, COMSIG_MOB_SAY, .proc/handle_speech)
+ RegisterSignal(C, COMSIG_MOB_SAY, PROC_REF(handle_speech))
C.grant_language(/datum/language/common)
C.grant_language(/datum/language/hellspeak)
diff --git a/code/modules/mob/living/carbon/human/species_types/roguetown/other/werewolf.dm b/code/modules/mob/living/carbon/human/species_types/roguetown/other/werewolf.dm
index ae8a1ccade..ee4772d39e 100644
--- a/code/modules/mob/living/carbon/human/species_types/roguetown/other/werewolf.dm
+++ b/code/modules/mob/living/carbon/human/species_types/roguetown/other/werewolf.dm
@@ -38,7 +38,7 @@
/datum/species/werewolf/on_species_gain(mob/living/carbon/C, datum/species/old_species)
. = ..()
- RegisterSignal(C, COMSIG_MOB_SAY, .proc/handle_speech)
+ RegisterSignal(C, COMSIG_MOB_SAY, PROC_REF(handle_speech))
C.remove_all_languages()
C.grant_language(/datum/language/beast)
diff --git a/code/modules/mob/living/carbon/human/species_types/synths.dm b/code/modules/mob/living/carbon/human/species_types/synths.dm
index 9dc4f11c19..217a81f6cd 100644
--- a/code/modules/mob/living/carbon/human/species_types/synths.dm
+++ b/code/modules/mob/living/carbon/human/species_types/synths.dm
@@ -33,7 +33,7 @@
/datum/species/synth/on_species_gain(mob/living/carbon/human/H, datum/species/old_species)
..()
assume_disguise(old_species, H)
- RegisterSignal(H, COMSIG_MOB_SAY, .proc/handle_speech)
+ RegisterSignal(H, COMSIG_MOB_SAY, PROC_REF(handle_speech))
/datum/species/synth/on_species_loss(mob/living/carbon/human/H)
. = ..()
diff --git a/code/modules/mob/living/carbon/life.dm b/code/modules/mob/living/carbon/life.dm
index b175e32d33..67302e6424 100644
--- a/code/modules/mob/living/carbon/life.dm
+++ b/code/modules/mob/living/carbon/life.dm
@@ -160,8 +160,8 @@
Immobilize(10)
emote("painscream")
stuttering += 5
- addtimer(CALLBACK(src, .proc/Stun, 110), 10)
- addtimer(CALLBACK(src, .proc/Knockdown, 110), 10)
+ addtimer(CALLBACK(src, PROC_REF(Stun), 110), 10)
+ addtimer(CALLBACK(src, PROC_REF(Knockdown), 110), 10)
mob_timers["painstun"] = world.time + 160
else
emote("painmoan")
diff --git a/code/modules/mob/living/carbon/monkey/combat.dm b/code/modules/mob/living/carbon/monkey/combat.dm
index 92ff0d7805..cfb9f12741 100644
--- a/code/modules/mob/living/carbon/monkey/combat.dm
+++ b/code/modules/mob/living/carbon/monkey/combat.dm
@@ -88,7 +88,7 @@
else if(istype(I, /obj/item/clothing))
var/obj/item/clothing/C = I
monkeyDrop(C)
- addtimer(CALLBACK(src, .proc/pickup_and_wear, C), 5)
+ addtimer(CALLBACK(src, PROC_REF(pickup_and_wear), C), 5)
return TRUE
// EVERYTHING ELSE
@@ -103,7 +103,7 @@
/mob/living/carbon/monkey/proc/pickup_and_wear(obj/item/clothing/C)
if(!equip_to_appropriate_slot(C))
monkeyDrop(get_item_by_slot(C)) // remove the existing item if worn
- addtimer(CALLBACK(src, .proc/equip_to_appropriate_slot, C), 5)
+ addtimer(CALLBACK(src, PROC_REF(equip_to_appropriate_slot), C), 5)
/mob/living/carbon/monkey/resist_restraints()
var/obj/item/I = null
@@ -140,7 +140,7 @@
pickupTarget = null
pickupTimer = 0
else
- INVOKE_ASYNC(src, .proc/walk2derpless, pickupTarget.loc)
+ INVOKE_ASYNC(src, PROC_REF(walk2derpless), pickupTarget.loc)
if(Adjacent(pickupTarget) || Adjacent(pickupTarget.loc)) // next to target
drop_all_held_items() // who cares about these items, i want that one!
if(isturf(pickupTarget.loc)) // on floor
@@ -152,7 +152,7 @@
if(!pickpocketing)
pickpocketing = TRUE
M.visible_message("[src] starts trying to take [pickupTarget] from [M]!", "[src] tries to take [pickupTarget]!")
- INVOKE_ASYNC(src, .proc/pickpocket, M)
+ INVOKE_ASYNC(src, PROC_REF(pickpocket), M)
return TRUE
switch(mode)
@@ -188,7 +188,7 @@
return TRUE
if(target != null)
- INVOKE_ASYNC(src, .proc/walk2derpless, target)
+ INVOKE_ASYNC(src, PROC_REF(walk2derpless), target)
// pickup any nearby weapon
if(!pickupTarget && prob(MONKEY_WEAPON_PROB))
@@ -273,7 +273,7 @@
if(target.pulledby != src && !istype(target.pulledby, /mob/living/carbon/monkey/))
- INVOKE_ASYNC(src, .proc/walk2derpless, target.loc)
+ INVOKE_ASYNC(src, PROC_REF(walk2derpless), target.loc)
if(Adjacent(target) && isturf(target.loc))
a_intent = INTENT_GRAB
@@ -286,11 +286,11 @@
frustration = 0
else if(!disposing_body)
- INVOKE_ASYNC(src, .proc/walk2derpless, bodyDisposal.loc)
+ INVOKE_ASYNC(src, PROC_REF(walk2derpless), bodyDisposal.loc)
if(Adjacent(bodyDisposal))
disposing_body = TRUE
- addtimer(CALLBACK(src, .proc/stuff_mob_in), 5)
+ addtimer(CALLBACK(src, PROC_REF(stuff_mob_in)), 5)
else
var/turf/olddist = get_dist(src, bodyDisposal)
diff --git a/code/modules/mob/living/carbon/rogfatstam.dm b/code/modules/mob/living/carbon/rogfatstam.dm
index 24c400ac45..563f89f624 100644
--- a/code/modules/mob/living/carbon/rogfatstam.dm
+++ b/code/modules/mob/living/carbon/rogfatstam.dm
@@ -71,8 +71,8 @@
changeNext_move(CLICK_CD_EXHAUSTED)
flash_fullscreen("blackflash")
if(rogstam <= 0)
- addtimer(CALLBACK(src, .proc/Knockdown, 30), 10)
- addtimer(CALLBACK(src, .proc/Immobilize, 30), 10)
+ addtimer(CALLBACK(src, PROC_REF(Knockdown), 30), 10)
+ addtimer(CALLBACK(src, PROC_REF(Immobilize), 30), 10)
if(iscarbon(src))
var/mob/living/carbon/C = src
if(C.stress >= 30)
@@ -100,7 +100,7 @@
var/stuffy = list("ZIZO GRABS MY WEARY HEART!","ARGH! MY HEART BEATS NO MORE!","NO... MY HEART HAS BEAT IT'S LAST!","MY HEART HAS GIVEN UP!","MY HEART BETRAYS ME!","THE METRONOME OF MY LIFE STILLS!")
to_chat(src, "[pick(stuffy)]")
emote("breathgasp", forced = TRUE)
- addtimer(CALLBACK(src, .proc/adjustOxyLoss, 110), 30)
+ addtimer(CALLBACK(src, PROC_REF(adjustOxyLoss), 110), 30)
/mob/living/proc/freak_out()
return
@@ -123,7 +123,7 @@
else
emote("fatigue", forced = TRUE)
if(stress > 15)
- addtimer(CALLBACK(src, /mob/.proc/do_freakout_scream), rand(30,50))
+ addtimer(CALLBACK(src, TYPE_PROC_REF(/mob, do_freakout_scream)), rand(30,50))
if(hud_used)
// var/list/screens = list(hud_used.plane_masters["[OPENSPACE_BACKDROP_PLANE]"],hud_used.plane_masters["[BLACKNESS_PLANE]"],hud_used.plane_masters["[GAME_PLANE_UPPER]"],hud_used.plane_masters["[GAME_PLANE_FOV_HIDDEN]"], hud_used.plane_masters["[FLOOR_PLANE]"], hud_used.plane_masters["[GAME_PLANE]"], hud_used.plane_masters["[LIGHTING_PLANE]"])
var/matrix/skew = matrix()
diff --git a/code/modules/mob/living/carbon/spirit/combat.dm b/code/modules/mob/living/carbon/spirit/combat.dm
index 33a7024aed..591631ef93 100644
--- a/code/modules/mob/living/carbon/spirit/combat.dm
+++ b/code/modules/mob/living/carbon/spirit/combat.dm
@@ -81,7 +81,7 @@
else if(istype(I, /obj/item/clothing))
var/obj/item/clothing/C = I
monkeyDrop(C)
- addtimer(CALLBACK(src, .proc/pickup_and_wear, C), 5)
+ addtimer(CALLBACK(src, PROC_REF(pickup_and_wear), C), 5)
return TRUE
// EVERYTHING ELSE
@@ -96,7 +96,7 @@
/mob/living/carbon/spirit/proc/pickup_and_wear(obj/item/clothing/C)
if(!equip_to_appropriate_slot(C))
monkeyDrop(get_item_by_slot(C)) // remove the existing item if worn
- addtimer(CALLBACK(src, .proc/equip_to_appropriate_slot, C), 5)
+ addtimer(CALLBACK(src, PROC_REF(equip_to_appropriate_slot), C), 5)
/mob/living/carbon/spirit/resist_restraints()
var/obj/item/I = null
diff --git a/code/modules/mob/living/carbon/spirit/spirit.dm b/code/modules/mob/living/carbon/spirit/spirit.dm
index 72f2e08890..7e434b935f 100644
--- a/code/modules/mob/living/carbon/spirit/spirit.dm
+++ b/code/modules/mob/living/carbon/spirit/spirit.dm
@@ -11,6 +11,7 @@
bodyparts = list(/obj/item/bodypart/chest/spirit, /obj/item/bodypart/head/spirit, /obj/item/bodypart/l_arm/spirit,
/obj/item/bodypart/r_arm/spirit, /obj/item/bodypart/r_leg/spirit, /obj/item/bodypart/l_leg/spirit)
hud_type = /datum/hud/spirit
+ density = FALSE // ghosts can pass through other mobs
var/paid = FALSE
var/beingmoved = FALSE
var/livingname = null
@@ -54,6 +55,20 @@
var/L = new /obj/item/flashlight/lantern/shrunken(src.loc)
put_in_hands(L)
AddComponent(/datum/component/footstep, FOOTSTEP_MOB_BAREFOOT, 1, 2)
+ addtimer(CALLBACK(src, PROC_REF(give_patron_toll)), 15 MINUTES)
+
+/mob/living/carbon/spirit/proc/give_patron_toll()
+ if(QDELETED(src) || paid)
+ return
+ for(var/item in held_items)
+ if(istype(item, /obj/item/underworld/coin))
+ return
+ put_in_hands(new /obj/item/underworld/coin/notracking(get_turf(src)))
+ if(PATRON)
+ to_chat(src, "Your suffering has not gone unnoticed, [PATRON] has rewarded you with your toll.")
+ else
+ to_chat(src, "Your suffering has not gone unnoticed, your patron has rewarded you with your toll.")
+ playsound(src, 'sound/combat/caught.ogg', 80, TRUE, -1)
/mob/living/carbon/spirit/create_internal_organs()
internal_organs += new /obj/item/organ/lungs
@@ -127,6 +142,6 @@
beingmoved = TRUE
to_chat(src, "Your soul is dragged to an infathomably cruel place where it endures severe torment. You've all but given up hope when you feel a presence drag you back to that Forest.")
playsound(src, 'sound/combat/caught.ogg', 80, TRUE, -1)
- for(var/obj/effect/landmark/underworld/A in world)
+ for(var/obj/effect/landmark/underworld/A in GLOB.landmarks_list)
forceMove(A.loc)
beingmoved = FALSE
diff --git a/code/modules/mob/living/carbon/spirit/spirit_defense.dm b/code/modules/mob/living/carbon/spirit/spirit_defense.dm
index 34cbab0b43..f02e8233a6 100644
--- a/code/modules/mob/living/carbon/spirit/spirit_defense.dm
+++ b/code/modules/mob/living/carbon/spirit/spirit_defense.dm
@@ -37,6 +37,13 @@
if(INTENT_GRAB)
grabbedby(M)
if(INTENT_HARM)
+ if(HAS_TRAIT(M, TRAIT_PACIFISM))
+ playsound(loc, 'sound/combat/shove.ogg', 100, TRUE, -1)
+ M.do_attack_animation(src, ATTACK_EFFECT_DISARM)
+ visible_message("[M]'s punch goes through [name]!", \
+ "[M]'s punch goes through you!", "I hear the sound of scuffling of the damned!", COMBAT_MESSAGE_RANGE, M)
+ to_chat(M, "My punch goes through [name]!")
+ return
M.do_attack_animation(src, ATTACK_EFFECT_PUNCH)
if (prob(75))
visible_message("[M] punches [name]!", \
@@ -64,6 +71,12 @@
"I avoid [M]'s punch!", "I hear a swoosh!", COMBAT_MESSAGE_RANGE, M)
to_chat(M, "My punch misses [name]!")
if(INTENT_DISARM)
+ if(HAS_TRAIT(M, TRAIT_PACIFISM))
+ playsound(loc, 'sound/combat/shove.ogg', 100, TRUE, -1)
+ M.do_attack_animation(src, ATTACK_EFFECT_DISARM)
+ visible_message("[M]'s shove goes through [name]!", \
+ "[M]'s shove goes through you!", "I hear the sound scuffling of the damned!", COMBAT_MESSAGE_RANGE, M)
+ to_chat(M, "My shove goes through [name]!")
if(!IsUnconscious())
M.do_attack_animation(src, ATTACK_EFFECT_DISARM)
if (prob(25))
diff --git a/code/modules/mob/living/death.dm b/code/modules/mob/living/death.dm
index b811eb39de..f286db496a 100644
--- a/code/modules/mob/living/death.dm
+++ b/code/modules/mob/living/death.dm
@@ -89,7 +89,7 @@
med_hud_set_health()
med_hud_set_status()
if(!gibbed && !QDELETED(src))
- addtimer(CALLBACK(src, .proc/med_hud_set_status), (DEFIB_TIME_LIMIT * 10) + 1)
+ addtimer(CALLBACK(src, PROC_REF(med_hud_set_status)), (DEFIB_TIME_LIMIT * 10) + 1)
stop_pulling()
. = ..()
@@ -100,11 +100,11 @@
H.layer = SPLASHSCREEN_LAYER+0.1
client.screen += H
// flick("gameover",H)
-// addtimer(CALLBACK(H, /obj/screen/gameover/proc/Fade), 29)
+// addtimer(CALLBACK(H, TYPE_PROC_REF(/obj/screen/gameover, Fade)), 29)
H.Fade()
mob_timers["lastdied"] = world.time
- addtimer(CALLBACK(H, /obj/screen/gameover/proc/Fade, TRUE), 100)
-// addtimer(CALLBACK(client, .proc/ghostize, 1, src), 150)
+ addtimer(CALLBACK(H, TYPE_PROC_REF(/obj/screen/gameover, Fade), TRUE), 100)
+// addtimer(CALLBACK(client, PROC_REF(ghostize), 1, src), 150)
add_client_colour(/datum/client_colour/monochrome)
client.verbs += /client/proc/descend
diff --git a/code/modules/mob/living/emote.dm b/code/modules/mob/living/emote.dm
index 0eefa47294..0396942294 100644
--- a/code/modules/mob/living/emote.dm
+++ b/code/modules/mob/living/emote.dm
@@ -319,7 +319,7 @@
H.CloseWings()
else
H.OpenWings()
- addtimer(CALLBACK(H, open ? /mob/living/carbon/human.proc/OpenWings : /mob/living/carbon/human.proc/CloseWings), wing_time)
+ addtimer(CALLBACK(H, open ? TYPE_PROC_REF(/mob/living/carbon/human, OpenWings) : TYPE_PROC_REF(/mob/living/carbon/human, CloseWings)), wing_time)
/datum/emote/living/flap/aflap
key = "aflap"
diff --git a/code/modules/mob/living/grabbing.dm b/code/modules/mob/living/grabbing.dm
index 5f89557063..cfe97b87e3 100644
--- a/code/modules/mob/living/grabbing.dm
+++ b/code/modules/mob/living/grabbing.dm
@@ -409,12 +409,11 @@
var/mob/living/carbon/human/H = C
if(prob(25) && H)
H.werewolf_infect()
- //addtimer(CALLBACK(C, .mob/living/carbon/human/proc/werewolf_infect), 3 MINUTES)
+ //addtimer(CALLBACK(C, TYPE_PROC_REF(/mob/living/carbon/human, werewolf_infect)), 3 MINUTES)
if(user.mind.has_antag_datum(/datum/antagonist/zombie))
var/mob/living/carbon/human/H = C
- if(prob(25)) //Delay is handled in zombie infect anyways
- H.zombie_infect()
- //addtimer(CALLBACK(C, .mob/living/carbon/human/proc/zombie_infect), 3 MINUTES)
+ H.zombie_infect_attempt()
+ //addtimer(CALLBACK(C, TYPE_PROC_REF(/mob/living/carbon/human, zombie_infect)), 3 MINUTES)
if(C.stat)
if(istype(limb_grabbed, /obj/item/bodypart/head))
var/obj/item/bodypart/head/HE = limb_grabbed
@@ -473,7 +472,7 @@
if(VDrinker)
if(zomwerewolf)
to_chat(user, "I'm going to puke...")
- addtimer(CALLBACK(user, .mob/living/carbon/proc/vomit, 0, TRUE), rand(8 SECONDS, 15 SECONDS))
+ addtimer(CALLBACK(user, TYPE_PROC_REF(/mob/living/carbon, vomit), 0, TRUE), rand(8 SECONDS, 15 SECONDS))
else
if(VVictim)
to_chat(user, "It's vitae, just like mine.")
@@ -485,7 +484,7 @@
VDrinker.handle_vitae(500)
else
to_chat(user, "I'm going to puke...")
- addtimer(CALLBACK(user, .mob/living/carbon/proc/vomit, 0, TRUE), rand(8 SECONDS, 15 SECONDS))
+ addtimer(CALLBACK(user, TYPE_PROC_REF(/mob/living/carbon, vomit), 0, TRUE), rand(8 SECONDS, 15 SECONDS))
else
if(user.mind)
if(user.mind.has_antag_datum(/datum/antagonist/vampirelord))
diff --git a/code/modules/mob/living/life.dm b/code/modules/mob/living/life.dm
index ee5badde80..2753a66b78 100644
--- a/code/modules/mob/living/life.dm
+++ b/code/modules/mob/living/life.dm
@@ -178,7 +178,7 @@
/mob/living/proc/gravity_animate()
if(!get_filter("gravity"))
add_filter("gravity",1,list("type"="motion_blur", "x"=0, "y"=0))
- INVOKE_ASYNC(src, .proc/gravity_pulse_animation)
+ INVOKE_ASYNC(src, PROC_REF(gravity_pulse_animation))
/mob/living/proc/gravity_pulse_animation()
animate(get_filter("gravity"), y = 1, time = 10)
diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm
index 8ffa66f7b9..795bf9c11d 100644
--- a/code/modules/mob/living/living.dm
+++ b/code/modules/mob/living/living.dm
@@ -1898,7 +1898,7 @@
return
reset_perspective(ceiling)
update_cone_show()
-// RegisterSignal(src, COMSIG_MOVABLE_PRE_MOVE, .proc/stop_looking) //We stop looking up if we move.
+// RegisterSignal(src, COMSIG_MOVABLE_PRE_MOVE, PROC_REF(stop_looking)) //We stop looking up if we move.
/mob/living/proc/look_further(turf/T)
@@ -1929,7 +1929,7 @@
if(m_intent != MOVE_INTENT_SNEAK)
visible_message("[src] looks into the distance.")
animate(client, pixel_x = world.icon_size*_x, pixel_y = world.icon_size*_y, ttime)
-// RegisterSignal(src, COMSIG_MOVABLE_PRE_MOVE, .proc/stop_looking)
+// RegisterSignal(src, COMSIG_MOVABLE_PRE_MOVE, PROC_REF(stop_looking))
update_cone_show()
/mob/proc/look_down(turf/T)
@@ -1966,7 +1966,7 @@
changeNext_move(CLICK_CD_MELEE)
reset_perspective(OS)
update_cone_show()
-// RegisterSignal(src, COMSIG_MOVABLE_PRE_MOVE, .proc/stop_looking)
+// RegisterSignal(src, COMSIG_MOVABLE_PRE_MOVE, PROC_REF(stop_looking))
/mob/living/proc/stop_looking()
// animate(client, pixel_x = 0, pixel_y = 0, 2, easing = SINE_EASING)
diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm
index f7ab2eb2ba..b1dd8354f1 100644
--- a/code/modules/mob/living/living_defense.dm
+++ b/code/modules/mob/living/living_defense.dm
@@ -543,8 +543,8 @@
if((GLOB.cult_narsie.souls == GLOB.cult_narsie.soul_goal) && (GLOB.cult_narsie.resolved == FALSE))
GLOB.cult_narsie.resolved = TRUE
sound_to_playing_players('sound/blank.ogg')
- addtimer(CALLBACK(GLOBAL_PROC, .proc/cult_ending_helper, 1), 120)
- addtimer(CALLBACK(GLOBAL_PROC, .proc/ending_helper), 270)
+ addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(cult_ending_helper), 1), 120)
+ addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(ending_helper)), 270)
if(client)
makeNewConstruct(/mob/living/simple_animal/hostile/construct/harvester, src, cultoverride = TRUE)
else
@@ -565,7 +565,7 @@
return FALSE
if(get_eye_protection() < intensity && (override_blindness_check || !(HAS_TRAIT(src, TRAIT_BLIND))))
overlay_fullscreen("flash", type)
- addtimer(CALLBACK(src, .proc/clear_fullscreen, "flash", 25), 25)
+ addtimer(CALLBACK(src, PROC_REF(clear_fullscreen), "flash", 25), 25)
return TRUE
return FALSE
diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm
index 30a62c1616..c9225d561c 100644
--- a/code/modules/mob/living/say.dm
+++ b/code/modules/mob/living/say.dm
@@ -330,7 +330,7 @@ GLOBAL_LIST_INIT(department_radio_keys, list(
speech_bubble_recipients.Add(M.client)
var/image/I = image('icons/mob/talk.dmi', src, "[bubble_type][say_test(message)]", FLY_LAYER)
I.appearance_flags = APPEARANCE_UI_IGNORE_ALPHA
- INVOKE_ASYNC(GLOBAL_PROC, /.proc/flick_overlay, I, speech_bubble_recipients, 30)
+ INVOKE_ASYNC(GLOBAL_PROC, GLOBAL_PROC_REF(flick_overlay), I, speech_bubble_recipients, 30)
/mob/proc/binarycheck()
return FALSE
diff --git a/code/modules/mob/living/silicon/ai/death.dm b/code/modules/mob/living/silicon/ai/death.dm
index b42f6cfa30..03b7015a6a 100644
--- a/code/modules/mob/living/silicon/ai/death.dm
+++ b/code/modules/mob/living/silicon/ai/death.dm
@@ -28,7 +28,7 @@
ShutOffDoomsdayDevice()
if(explosive)
- addtimer(CALLBACK(GLOBAL_PROC, .proc/explosion, loc, 3, 6, 12, 15), 1 SECONDS)
+ addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(explosion), loc, 3, 6, 12, 15), 1 SECONDS)
if(src.key)
for(var/each in GLOB.ai_status_displays) //change status
diff --git a/code/modules/mob/living/silicon/ai/freelook/chunk.dm b/code/modules/mob/living/silicon/ai/freelook/chunk.dm
index 4591720b79..1240280091 100644
--- a/code/modules/mob/living/silicon/ai/freelook/chunk.dm
+++ b/code/modules/mob/living/silicon/ai/freelook/chunk.dm
@@ -50,7 +50,7 @@
/datum/camerachunk/proc/hasChanged(update_now = 0)
if(seenby.len || update_now)
- addtimer(CALLBACK(src, .proc/update), UPDATE_BUFFER, TIMER_UNIQUE)
+ addtimer(CALLBACK(src, PROC_REF(update)), UPDATE_BUFFER, TIMER_UNIQUE)
else
changed = 1
diff --git a/code/modules/mob/living/silicon/ai/life.dm b/code/modules/mob/living/silicon/ai/life.dm
index 44e1b40dd5..894036b576 100644
--- a/code/modules/mob/living/silicon/ai/life.dm
+++ b/code/modules/mob/living/silicon/ai/life.dm
@@ -172,7 +172,7 @@
blind_eyes(1)
update_sight()
to_chat(src, "You've lost power!")
- addtimer(CALLBACK(src, .proc/start_RestorePowerRoutine), 20)
+ addtimer(CALLBACK(src, PROC_REF(start_RestorePowerRoutine)), 20)
#undef POWER_RESTORATION_OFF
#undef POWER_RESTORATION_START
diff --git a/code/modules/mob/living/silicon/laws.dm b/code/modules/mob/living/silicon/laws.dm
index 3522b1b8b7..d7a798b3b1 100644
--- a/code/modules/mob/living/silicon/laws.dm
+++ b/code/modules/mob/living/silicon/laws.dm
@@ -9,7 +9,7 @@
throw_alert("newlaw", /obj/screen/alert/newlaw)
if(announce && last_lawchange_announce != world.time)
to_chat(src, "My laws have been changed.")
- addtimer(CALLBACK(src, .proc/show_laws), 0)
+ addtimer(CALLBACK(src, PROC_REF(show_laws)), 0)
last_lawchange_announce = world.time
/mob/living/silicon/proc/set_law_sixsixsix(law, announce = TRUE)
diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm
index 86d39f1387..782d245f3b 100644
--- a/code/modules/mob/living/silicon/pai/pai.dm
+++ b/code/modules/mob/living/silicon/pai/pai.dm
@@ -119,12 +119,12 @@
aicamera = new /obj/item/camera/siliconcam/ai_camera(src)
aicamera.flash_enabled = TRUE
- addtimer(CALLBACK(src, .proc/pdaconfig), 5)
+ addtimer(CALLBACK(src, PROC_REF(pdaconfig)), 5)
. = ..()
emittersemicd = TRUE
- addtimer(CALLBACK(src, .proc/emittercool), 600)
+ addtimer(CALLBACK(src, PROC_REF(emittercool)), 600)
/mob/living/silicon/pai/proc/pdaconfig()
//PDA
diff --git a/code/modules/mob/living/silicon/pai/pai_shell.dm b/code/modules/mob/living/silicon/pai/pai_shell.dm
index 321438d086..7eac606a04 100644
--- a/code/modules/mob/living/silicon/pai/pai_shell.dm
+++ b/code/modules/mob/living/silicon/pai/pai_shell.dm
@@ -17,7 +17,7 @@
return FALSE
emittersemicd = TRUE
- addtimer(CALLBACK(src, .proc/emittercool), emittercd)
+ addtimer(CALLBACK(src, PROC_REF(emittercool)), emittercd)
mobility_flags = MOBILITY_FLAGS_DEFAULT
density = TRUE
if(istype(card.loc, /obj/item/pda))
@@ -45,9 +45,9 @@
/mob/living/silicon/pai/proc/fold_in(force = FALSE)
emittersemicd = TRUE
if(!force)
- addtimer(CALLBACK(src, .proc/emittercool), emittercd)
+ addtimer(CALLBACK(src, PROC_REF(emittercool)), emittercd)
else
- addtimer(CALLBACK(src, .proc/emittercool), emitteroverloadcd)
+ addtimer(CALLBACK(src, PROC_REF(emittercool)), emitteroverloadcd)
icon_state = "[chassis]"
if(!holoform)
. = fold_out(force)
diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm
index 1ca558c3c1..f4b7695c09 100644
--- a/code/modules/mob/living/silicon/robot/robot.dm
+++ b/code/modules/mob/living/silicon/robot/robot.dm
@@ -98,7 +98,7 @@
wires = new /datum/wires/robot(src)
AddComponent(/datum/component/empprotection, EMP_PROTECT_WIRES)
- RegisterSignal(src, COMSIG_PROCESS_BORGCHARGER_OCCUPANT, .proc/charge)
+ RegisterSignal(src, COMSIG_PROCESS_BORGCHARGER_OCCUPANT, PROC_REF(charge))
robot_modules_background = new()
robot_modules_background.icon_state = "block"
@@ -821,7 +821,7 @@
/mob/living/silicon/robot/modules/syndicate/Initialize()
. = ..()
laws = new /datum/ai_laws/syndicate_override()
- addtimer(CALLBACK(src, .proc/show_playstyle), 5)
+ addtimer(CALLBACK(src, PROC_REF(show_playstyle)), 5)
/mob/living/silicon/robot/modules/syndicate/proc/show_playstyle()
if(playstyle_string)
diff --git a/code/modules/mob/living/silicon/robot/robot_defense.dm b/code/modules/mob/living/silicon/robot/robot_defense.dm
index 102089632d..42127279a0 100644
--- a/code/modules/mob/living/silicon/robot/robot_defense.dm
+++ b/code/modules/mob/living/silicon/robot/robot_defense.dm
@@ -78,7 +78,7 @@ GLOBAL_LIST_INIT(blacklisted_borg_hats, typecacheof(list( //Hats that don't real
return
spark_system.start()
step_away(src, user, 15)
- addtimer(CALLBACK(GLOBAL_PROC, .proc/_step_away, src, get_turf(user), 15), 3)
+ addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(_step_away), src, get_turf(user), 15), 3)
/mob/living/silicon/robot/fire_act()
if(!on_fire) //Silicons don't gain stacks from hotspots, but hotspots can ignite them
diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm
index a5967d182d..497dd44488 100644
--- a/code/modules/mob/living/silicon/robot/robot_modules.dm
+++ b/code/modules/mob/living/silicon/robot/robot_modules.dm
@@ -184,7 +184,7 @@
R.module = RM
R.update_module_innate()
RM.rebuild_modules()
- INVOKE_ASYNC(RM, .proc/do_transform_animation)
+ INVOKE_ASYNC(RM, PROC_REF(do_transform_animation))
qdel(src)
return RM
diff --git a/code/modules/mob/living/silicon/silicon_movement.dm b/code/modules/mob/living/silicon/silicon_movement.dm
index 590326eda1..cc0a01aa37 100644
--- a/code/modules/mob/living/silicon/silicon_movement.dm
+++ b/code/modules/mob/living/silicon/silicon_movement.dm
@@ -18,5 +18,5 @@
oldLoc = get_turf(oldLoc)
if(!QDELETED(builtInCamera) && !updating && oldLoc != get_turf(src))
updating = TRUE
- addtimer(CALLBACK(src, .proc/do_camera_update, oldLoc), SILICON_CAMERA_BUFFER)
+ addtimer(CALLBACK(src, PROC_REF(do_camera_update), oldLoc), SILICON_CAMERA_BUFFER)
#undef SILICON_CAMERA_BUFFER
diff --git a/code/modules/mob/living/simple_animal/bot/SuperBeepsky.dm b/code/modules/mob/living/simple_animal/bot/SuperBeepsky.dm
index d6de709404..6c5a03c03d 100644
--- a/code/modules/mob/living/simple_animal/bot/SuperBeepsky.dm
+++ b/code/modules/mob/living/simple_animal/bot/SuperBeepsky.dm
@@ -51,7 +51,7 @@
weapon.attack(C, src)
playsound(src, 'sound/blank.ogg', 50, TRUE, -1)
if(C.stat == DEAD)
- addtimer(CALLBACK(src, /atom/.proc/update_icon), 2)
+ addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, update_icon)), 2)
back_to_idle()
@@ -107,7 +107,7 @@
if((C.name == oldtarget_name) && (world.time < last_found + 100))
continue
- threatlevel = C.assess_threat(judgement_criteria, weaponcheck=CALLBACK(src, .proc/check_for_weapons))
+ threatlevel = C.assess_threat(judgement_criteria, weaponcheck=CALLBACK(src, PROC_REF(check_for_weapons)))
if(!threatlevel)
continue
@@ -122,7 +122,7 @@
icon_state = "grievous-c"
visible_message("[src] points at [C.name]!")
mode = BOT_HUNT
- INVOKE_ASYNC(src, .proc/handle_automated_action)
+ INVOKE_ASYNC(src, PROC_REF(handle_automated_action))
break
else
continue
diff --git a/code/modules/mob/living/simple_animal/bot/bot.dm b/code/modules/mob/living/simple_animal/bot/bot.dm
index f8c04f32b3..dc71e1f04a 100644
--- a/code/modules/mob/living/simple_animal/bot/bot.dm
+++ b/code/modules/mob/living/simple_animal/bot/bot.dm
@@ -490,7 +490,7 @@ Pass a positive integer as an argument to override a bot's default speed.
if(step_count >= 1 && tries < BOT_STEP_MAX_RETRIES)
for(var/step_number = 0, step_number < step_count,step_number++)
- addtimer(CALLBACK(src, .proc/bot_step, dest), BOT_STEP_DELAY*step_number)
+ addtimer(CALLBACK(src, PROC_REF(bot_step), dest), BOT_STEP_DELAY*step_number)
else
return FALSE
return TRUE
@@ -535,7 +535,7 @@ Pass a positive integer as an argument to override a bot's default speed.
turn_on() //Saves the AI the hassle of having to activate a bot manually.
access_card = all_access //Give the bot all-access while under the AI's command.
if(client)
- reset_access_timer_id = addtimer(CALLBACK (src, .proc/bot_reset), 600, TIMER_UNIQUE|TIMER_OVERRIDE|TIMER_STOPPABLE) //if the bot is player controlled, they get the extra access for a limited time
+ reset_access_timer_id = addtimer(CALLBACK(src, PROC_REF(bot_reset)), 600, TIMER_UNIQUE|TIMER_OVERRIDE|TIMER_STOPPABLE) //if the bot is player controlled, they get the extra access for a limited time
to_chat(src, "Priority waypoint set by [icon2html(calling_ai, src)] [caller]. Proceed to [end_area].
[path.len-1] meters to destination. You have been granted additional door access for 60 seconds.")
if(message)
to_chat(calling_ai, "[icon2html(src, calling_ai)] [name] called to [end_area]. [path.len-1] meters to destination.")
@@ -601,7 +601,7 @@ Pass a positive integer as an argument to override a bot's default speed.
return
if(patrol_target) // has patrol target
- INVOKE_ASYNC(src, .proc/target_patrol)
+ INVOKE_ASYNC(src, PROC_REF(target_patrol))
else // no patrol target, so need a new one
speak("Engaging patrol mode.")
find_patrol_target()
diff --git a/code/modules/mob/living/simple_animal/bot/construction.dm b/code/modules/mob/living/simple_animal/bot/construction.dm
index cd4ac25044..92cc3d1e6c 100644
--- a/code/modules/mob/living/simple_animal/bot/construction.dm
+++ b/code/modules/mob/living/simple_animal/bot/construction.dm
@@ -278,7 +278,7 @@
var/mob/living/simple_animal/bot/honkbot/S = new(drop_location())
S.name = created_name
S.spam_flag = TRUE // only long enough to hear the first ping.
- addtimer(CALLBACK (S, .mob/living/simple_animal/bot/honkbot/proc/react_ping), 5)
+ addtimer(CALLBACK(S, TYPE_PROC_REF(/mob/living/simple_animal/bot/honkbot, react_ping)), 5)
S.bikehorn = I.type
qdel(I)
qdel(src)
diff --git a/code/modules/mob/living/simple_animal/bot/ed209bot.dm b/code/modules/mob/living/simple_animal/bot/ed209bot.dm
index c4bd6ab9b1..7f6c092fab 100644
--- a/code/modules/mob/living/simple_animal/bot/ed209bot.dm
+++ b/code/modules/mob/living/simple_animal/bot/ed209bot.dm
@@ -44,7 +44,7 @@
var/threatlevel = 0
if(C.incapacitated())
continue
- threatlevel = C.assess_threat(judgement_criteria, weaponcheck=CALLBACK(src, .proc/check_for_weapons))
+ threatlevel = C.assess_threat(judgement_criteria, weaponcheck=CALLBACK(src, PROC_REF(check_for_weapons)))
//speak(C.real_name + text(": threat: []", threatlevel))
if(threatlevel < 4 )
continue
diff --git a/code/modules/mob/living/simple_animal/bot/floorbot.dm b/code/modules/mob/living/simple_animal/bot/floorbot.dm
index 20750584cd..36b6c96192 100644
--- a/code/modules/mob/living/simple_animal/bot/floorbot.dm
+++ b/code/modules/mob/living/simple_animal/bot/floorbot.dm
@@ -239,7 +239,7 @@
mode = BOT_REPAIRING
F.ReplaceWithLattice()
audible_message("[src] makes an excited booping sound.")
- addtimer(CALLBACK(src, .proc/go_idle), 0.5 SECONDS)
+ addtimer(CALLBACK(src, PROC_REF(go_idle)), 0.5 SECONDS)
path = list()
return
if(path.len == 0)
diff --git a/code/modules/mob/living/simple_animal/bot/honkbot.dm b/code/modules/mob/living/simple_animal/bot/honkbot.dm
index 3dd6ffcd5b..1f4e1b172b 100644
--- a/code/modules/mob/living/simple_animal/bot/honkbot.dm
+++ b/code/modules/mob/living/simple_animal/bot/honkbot.dm
@@ -50,14 +50,14 @@
/mob/living/simple_animal/bot/honkbot/proc/sensor_blink()
icon_state = "honkbot-c"
- addtimer(CALLBACK(src, /atom/.proc/update_icon), 5, TIMER_OVERRIDE|TIMER_UNIQUE)
+ addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, update_icon)), 5, TIMER_OVERRIDE|TIMER_UNIQUE)
//honkbots react with sounds.
/mob/living/simple_animal/bot/honkbot/proc/react_ping()
playsound(src, 'sound/blank.ogg', 50, TRUE, -1) //the first sound upon creation!
spam_flag = TRUE
sensor_blink()
- addtimer(CALLBACK(src, .proc/spam_flag_false), 18) // calibrates before starting the honk
+ addtimer(CALLBACK(src, PROC_REF(spam_flag_false)), 18) // calibrates before starting the honk
/mob/living/simple_animal/bot/honkbot/proc/react_buzz()
playsound(src, 'sound/blank.ogg', 50, TRUE, -1)
@@ -115,14 +115,14 @@ Maintenance panel panel is [open ? "opened" : "closed"]"},
/mob/living/simple_animal/bot/honkbot/attack_hand(mob/living/carbon/human/H)
if(H.used_intent.type == INTENT_HARM)
retaliate(H)
- addtimer(CALLBACK(src, .proc/react_buzz), 5)
+ addtimer(CALLBACK(src, PROC_REF(react_buzz)), 5)
return ..()
/mob/living/simple_animal/bot/honkbot/attackby(obj/item/W, mob/user, params)
if(W.tool_behaviour != TOOL_SCREWDRIVER && (W.force) && (!target) && (W.damtype != STAMINA) )
retaliate(user)
- addtimer(CALLBACK(src, .proc/react_buzz), 5)
+ addtimer(CALLBACK(src, PROC_REF(react_buzz)), 5)
..()
/mob/living/simple_animal/bot/honkbot/emag_act(mob/user)
@@ -170,21 +170,21 @@ Maintenance panel panel is [open ? "opened" : "closed"]"},
playsound(src, honksound, 50, TRUE, -1)
spam_flag = TRUE //prevent spam
sensor_blink()
- addtimer(CALLBACK(src, .proc/spam_flag_false), cooldowntimehorn)
+ addtimer(CALLBACK(src, PROC_REF(spam_flag_false)), cooldowntimehorn)
else if (emagged == 2) //emagged honkbots will spam short and memorable sounds.
if (!spam_flag)
playsound(src, "honkbot_e", 50, FALSE)
spam_flag = TRUE // prevent spam
icon_state = "honkbot-e"
- addtimer(CALLBACK(src, /atom/.proc/update_icon), 30, TIMER_OVERRIDE|TIMER_UNIQUE)
- addtimer(CALLBACK(src, .proc/spam_flag_false), cooldowntimehorn)
+ addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, update_icon)), 30, TIMER_OVERRIDE|TIMER_UNIQUE)
+ addtimer(CALLBACK(src, PROC_REF(spam_flag_false)), cooldowntimehorn)
/mob/living/simple_animal/bot/honkbot/proc/honk_attack(mob/living/carbon/C) // horn attack
if(!spam_flag)
playsound(loc, honksound, 50, TRUE, -1)
spam_flag = TRUE // prevent spam
sensor_blink()
- addtimer(CALLBACK(src, .proc/spam_flag_false), cooldowntimehorn)
+ addtimer(CALLBACK(src, PROC_REF(spam_flag_false)), cooldowntimehorn)
/mob/living/simple_animal/bot/honkbot/proc/stun_attack(mob/living/carbon/C) // airhorn stun
if(!spam_flag)
@@ -206,7 +206,7 @@ Maintenance panel panel is [open ? "opened" : "closed"]"},
target = oldtarget_name
else // you really don't want to hit an emagged honkbot
threatlevel = 6 // will never let you go
- addtimer(CALLBACK(src, .proc/spam_flag_false), cooldowntime)
+ addtimer(CALLBACK(src, PROC_REF(spam_flag_false)), cooldowntime)
log_combat(src,C,"honked")
@@ -215,7 +215,7 @@ Maintenance panel panel is [open ? "opened" : "closed"]"},
else
C.stuttering = 20
C.Paralyze(80)
- addtimer(CALLBACK(src, .proc/spam_flag_false), cooldowntime)
+ addtimer(CALLBACK(src, PROC_REF(spam_flag_false)), cooldowntime)
/mob/living/simple_animal/bot/honkbot/handle_automated_action()
@@ -279,13 +279,13 @@ Maintenance panel panel is [open ? "opened" : "closed"]"},
target = null
last_found = world.time
frustration = 0
- INVOKE_ASYNC(src, .proc/handle_automated_action) //responds quickly
+ INVOKE_ASYNC(src, PROC_REF(handle_automated_action)) //responds quickly
/mob/living/simple_animal/bot/honkbot/proc/back_to_hunt()
anchored = FALSE
frustration = 0
mode = BOT_HUNT
- INVOKE_ASYNC(src, .proc/handle_automated_action) // responds quickly
+ INVOKE_ASYNC(src, PROC_REF(handle_automated_action)) // responds quickly
/mob/living/simple_animal/bot/honkbot/proc/look_for_perp()
anchored = FALSE
@@ -315,7 +315,7 @@ Maintenance panel panel is [open ? "opened" : "closed"]"},
speak("Honk!")
visible_message("[src] starts chasing [C.name]!")
mode = BOT_HUNT
- INVOKE_ASYNC(src, .proc/handle_automated_action)
+ INVOKE_ASYNC(src, PROC_REF(handle_automated_action))
break
else
continue
diff --git a/code/modules/mob/living/simple_animal/bot/mulebot.dm b/code/modules/mob/living/simple_animal/bot/mulebot.dm
index b0a85133d6..c2f802a9f1 100644
--- a/code/modules/mob/living/simple_animal/bot/mulebot.dm
+++ b/code/modules/mob/living/simple_animal/bot/mulebot.dm
@@ -455,8 +455,8 @@
process_bot()
num_steps--
if(mode != BOT_IDLE)
- var/process_timer = addtimer(CALLBACK(src, .proc/process_bot), 2, TIMER_LOOP|TIMER_STOPPABLE)
- addtimer(CALLBACK(GLOBAL_PROC, /proc/deltimer, process_timer), (num_steps*2) + 1)
+ var/process_timer = addtimer(CALLBACK(src, PROC_REF(process_bot)), 2, TIMER_LOOP|TIMER_STOPPABLE)
+ addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(deltimer), process_timer), (num_steps*2) + 1)
/mob/living/simple_animal/bot/mulebot/proc/process_bot()
if(!on || client)
@@ -520,7 +520,7 @@
buzz(SIGH)
mode = BOT_WAIT_FOR_NAV
blockcount = 0
- addtimer(CALLBACK(src, .proc/process_blocked, next), 2 SECONDS)
+ addtimer(CALLBACK(src, PROC_REF(process_blocked), next), 2 SECONDS)
return
return
else
@@ -533,7 +533,7 @@
if(BOT_NAV) // calculate new path
mode = BOT_WAIT_FOR_NAV
- INVOKE_ASYNC(src, .proc/process_nav)
+ INVOKE_ASYNC(src, PROC_REF(process_nav))
/mob/living/simple_animal/bot/mulebot/proc/process_blocked(turf/next)
calc_path(avoid=next)
@@ -582,7 +582,7 @@
/mob/living/simple_animal/bot/mulebot/proc/start_home()
if(!on)
return
- INVOKE_ASYNC(src, .proc/do_start_home)
+ INVOKE_ASYNC(src, PROC_REF(do_start_home))
update_icon()
/mob/living/simple_animal/bot/mulebot/proc/do_start_home()
@@ -799,7 +799,7 @@
update_icon()
if(istype(AM, /mob/dead/observer))
ghost_rider = TRUE
- RegisterSignal(AM, COMSIG_MOVABLE_MOVED, .proc/ghostmoved)
+ RegisterSignal(AM, COMSIG_MOVABLE_MOVED, PROC_REF(ghostmoved))
/mob/living/simple_animal/bot/mulebot/paranormal/update_icon()
if(load && isobserver(load) && isnull(ghost_overlay))//there are issues with adding a ghost as an overlay, and this prevents metagaming to see who is dead
diff --git a/code/modules/mob/living/simple_animal/bot/secbot.dm b/code/modules/mob/living/simple_animal/bot/secbot.dm
index 4d95ca8fdb..2f32bac03d 100644
--- a/code/modules/mob/living/simple_animal/bot/secbot.dm
+++ b/code/modules/mob/living/simple_animal/bot/secbot.dm
@@ -172,7 +172,7 @@ Auto Patrol: []"},
/mob/living/simple_animal/bot/secbot/proc/retaliate(mob/living/carbon/human/H)
var/judgement_criteria = judgement_criteria()
- threatlevel = H.assess_threat(judgement_criteria, weaponcheck=CALLBACK(src, .proc/check_for_weapons))
+ threatlevel = H.assess_threat(judgement_criteria, weaponcheck=CALLBACK(src, PROC_REF(check_for_weapons)))
threatlevel += 6
if(threatlevel >= 4)
target = H
@@ -257,7 +257,7 @@ Auto Patrol: []"},
playsound(src, 'sound/blank.ogg', 30, TRUE, -2)
C.visible_message("[src] is trying to put zipties on [C]!",\
"[src] is trying to put zipties on you!")
- addtimer(CALLBACK(src, .proc/attempt_handcuff, C), 60)
+ addtimer(CALLBACK(src, PROC_REF(attempt_handcuff), C), 60)
/mob/living/simple_animal/bot/secbot/proc/attempt_handcuff(mob/living/carbon/C)
if( !on || !Adjacent(C) || !isturf(C.loc) ) //if he's in a closet or not adjacent, we cancel cuffing.
@@ -272,7 +272,7 @@ Auto Patrol: []"},
var/judgement_criteria = judgement_criteria()
playsound(src, 'sound/blank.ogg', 50, TRUE, -1)
icon_state = "[initial(icon_state)]-c"
- addtimer(CALLBACK(src, /atom/.proc/update_icon), 2)
+ addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, update_icon)), 2)
var/threat = 5
if(harm)
@@ -281,11 +281,11 @@ Auto Patrol: []"},
C.stuttering = 5
C.Paralyze(100)
var/mob/living/carbon/human/H = C
- threat = H.assess_threat(judgement_criteria, weaponcheck=CALLBACK(src, .proc/check_for_weapons))
+ threat = H.assess_threat(judgement_criteria, weaponcheck=CALLBACK(src, PROC_REF(check_for_weapons)))
else
C.Paralyze(100)
C.stuttering = 5
- threat = C.assess_threat(judgement_criteria, weaponcheck=CALLBACK(src, .proc/check_for_weapons))
+ threat = C.assess_threat(judgement_criteria, weaponcheck=CALLBACK(src, PROC_REF(check_for_weapons)))
log_combat(src,C,"stunned")
if(declare_arrests)
@@ -394,13 +394,13 @@ Auto Patrol: []"},
target = null
last_found = world.time
frustration = 0
- INVOKE_ASYNC(src, .proc/handle_automated_action)
+ INVOKE_ASYNC(src, PROC_REF(handle_automated_action))
/mob/living/simple_animal/bot/secbot/proc/back_to_hunt()
anchored = FALSE
frustration = 0
mode = BOT_HUNT
- INVOKE_ASYNC(src, .proc/handle_automated_action)
+ INVOKE_ASYNC(src, PROC_REF(handle_automated_action))
// look for a criminal in view of the bot
/mob/living/simple_animal/bot/secbot/proc/look_for_perp()
@@ -413,7 +413,7 @@ Auto Patrol: []"},
if((C.name == oldtarget_name) && (world.time < last_found + 100))
continue
- threatlevel = C.assess_threat(judgement_criteria, weaponcheck=CALLBACK(src, .proc/check_for_weapons))
+ threatlevel = C.assess_threat(judgement_criteria, weaponcheck=CALLBACK(src, PROC_REF(check_for_weapons)))
if(!threatlevel)
continue
@@ -428,7 +428,7 @@ Auto Patrol: []"},
playsound(src, pick('sound/blank.ogg'), 50, FALSE)
visible_message("[src] points at [C.name]!")
mode = BOT_HUNT
- INVOKE_ASYNC(src, .proc/handle_automated_action)
+ INVOKE_ASYNC(src, PROC_REF(handle_automated_action))
break
else
continue
diff --git a/code/modules/mob/living/simple_animal/friendly/dog.dm b/code/modules/mob/living/simple_animal/friendly/dog.dm
index d71a9c591f..3c735019be 100644
--- a/code/modules/mob/living/simple_animal/friendly/dog.dm
+++ b/code/modules/mob/living/simple_animal/friendly/dog.dm
@@ -70,7 +70,7 @@
if(prob(1))
emote("me", 1, pick("dances around.","chases its tail!"))
- INVOKE_ASYNC(GLOBAL_PROC, .proc/dance_rotate, src)
+ INVOKE_ASYNC(GLOBAL_PROC, GLOBAL_PROC_REF(dance_rotate), src)
//Corgis and pugs are now under one dog subtype
diff --git a/code/modules/mob/living/simple_animal/guardian/types/charger.dm b/code/modules/mob/living/simple_animal/guardian/types/charger.dm
index e0d4ad98fd..8a9d0b1b11 100644
--- a/code/modules/mob/living/simple_animal/guardian/types/charger.dm
+++ b/code/modules/mob/living/simple_animal/guardian/types/charger.dm
@@ -33,7 +33,7 @@
/mob/living/simple_animal/hostile/guardian/charger/Shoot(atom/targeted_atom)
charging = 1
- throw_at(targeted_atom, range, 1, src, FALSE, TRUE, callback = CALLBACK(src, .proc/charging_end))
+ throw_at(targeted_atom, range, 1, src, FALSE, TRUE, callback = CALLBACK(src, PROC_REF(charging_end)))
/mob/living/simple_animal/hostile/guardian/charger/proc/charging_end()
charging = 0
diff --git a/code/modules/mob/living/simple_animal/guardian/types/explosive.dm b/code/modules/mob/living/simple_animal/guardian/types/explosive.dm
index 79d70a9f41..f85834b383 100644
--- a/code/modules/mob/living/simple_animal/guardian/types/explosive.dm
+++ b/code/modules/mob/living/simple_animal/guardian/types/explosive.dm
@@ -47,9 +47,9 @@
if(bomb_cooldown <= world.time && !stat)
to_chat(src, "Success! Bomb armed!")
bomb_cooldown = world.time + 200
- RegisterSignal(A, COMSIG_PARENT_EXAMINE, .proc/display_examine)
- RegisterSignal(A, boom_signals, .proc/kaboom)
- addtimer(CALLBACK(src, .proc/disable, A), 600, TIMER_UNIQUE|TIMER_OVERRIDE)
+ RegisterSignal(A, COMSIG_PARENT_EXAMINE, PROC_REF(display_examine))
+ RegisterSignal(A, boom_signals, PROC_REF(kaboom))
+ addtimer(CALLBACK(src, PROC_REF(disable), A), 600, TIMER_UNIQUE|TIMER_OVERRIDE)
else
to_chat(src, "My powers are on cooldown! You must wait 20 seconds between bombs.")
diff --git a/code/modules/mob/living/simple_animal/guardian/types/gravitokinetic.dm b/code/modules/mob/living/simple_animal/guardian/types/gravitokinetic.dm
index 9a1c356bf8..eb978f6a1c 100644
--- a/code/modules/mob/living/simple_animal/guardian/types/gravitokinetic.dm
+++ b/code/modules/mob/living/simple_animal/guardian/types/gravitokinetic.dm
@@ -49,7 +49,7 @@
/mob/living/simple_animal/hostile/guardian/gravitokinetic/proc/add_gravity(atom/A, new_gravity = 2)
var/datum/component/C = A.AddComponent(/datum/component/forced_gravity,new_gravity)
- RegisterSignal(A, COMSIG_MOVABLE_MOVED, .proc/__distance_check)
+ RegisterSignal(A, COMSIG_MOVABLE_MOVED, PROC_REF(__distance_check))
gravito_targets.Add(C)
playsound(src, 'sound/blank.ogg', 100, TRUE)
diff --git a/code/modules/mob/living/simple_animal/hostile/bees.dm b/code/modules/mob/living/simple_animal/hostile/bees.dm
index 231b49aa24..9e957a1197 100644
--- a/code/modules/mob/living/simple_animal/hostile/bees.dm
+++ b/code/modules/mob/living/simple_animal/hostile/bees.dm
@@ -315,4 +315,4 @@
/mob/living/simple_animal/hostile/poison/bees/short/Initialize(mapload, timetolive=50 SECONDS)
. = ..()
- addtimer(CALLBACK(src, .proc/death), timetolive)
+ addtimer(CALLBACK(src, PROC_REF(death)), timetolive)
diff --git a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm
index a2900df4e3..03f9674845 100644
--- a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm
+++ b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm
@@ -246,7 +246,7 @@
if(!busy && prob(1))
stop_automated_movement = TRUE
Goto(pick(urange(20, src, 1)), move_to_delay)
- addtimer(CALLBACK(src, .proc/do_action), 5 SECONDS)
+ addtimer(CALLBACK(src, PROC_REF(do_action)), 5 SECONDS)
return 1
/mob/living/simple_animal/hostile/poison/giant_spider/proc/do_action()
@@ -271,7 +271,7 @@
busy = MOVING_TO_TARGET
Goto(C, move_to_delay)
//give up if we can't reach them after 10 seconds
- addtimer(CALLBACK(src, .proc/GiveUp, C), 10 SECONDS)
+ addtimer(CALLBACK(src, PROC_REF(GiveUp), C), 10 SECONDS)
return
//second, spin a sticky spiderweb on this tile
@@ -295,7 +295,7 @@
stop_automated_movement = 1
Goto(O, move_to_delay)
//give up if we can't reach them after 10 seconds
- addtimer(CALLBACK(src, .proc/GiveUp, O), 10 SECONDS)
+ addtimer(CALLBACK(src, PROC_REF(GiveUp), O), 10 SECONDS)
else if(busy == MOVING_TO_TARGET && cocoon_target)
if(get_dist(src, cocoon_target) <= 1)
@@ -430,7 +430,7 @@
if(target_atom.anchored)
return
user.cocoon_target = target_atom
- INVOKE_ASYNC(user, /mob/living/simple_animal/hostile/poison/giant_spider/nurse/.proc/cocoon)
+ INVOKE_ASYNC(user, TYPE_PROC_REF(/mob/living/simple_animal/hostile/poison/giant_spider/nurse, cocoon))
remove_ranged_ability()
return TRUE
diff --git a/code/modules/mob/living/simple_animal/hostile/goose.dm b/code/modules/mob/living/simple_animal/hostile/goose.dm
index 6fdbf6fc2d..dff1107a56 100644
--- a/code/modules/mob/living/simple_animal/hostile/goose.dm
+++ b/code/modules/mob/living/simple_animal/hostile/goose.dm
@@ -66,7 +66,7 @@
. = ..()
goosevomit = new
goosevomit.Grant(src)
- RegisterSignal(src, COMSIG_MOVABLE_MOVED, .proc/goosement)
+ RegisterSignal(src, COMSIG_MOVABLE_MOVED, PROC_REF(goosement))
// 5% chance every round to have anarchy mode deadchat control on birdboat.
if(prob(5))
desc = ""
@@ -136,13 +136,13 @@
/mob/living/simple_animal/hostile/retaliate/goose/vomit/proc/vomit_prestart(duration)
flick("vomit_start",src)
- addtimer(CALLBACK(src, .proc/vomit_start, duration), 13) //13 is the length of the vomit_start animation in gooseloose.dmi
+ addtimer(CALLBACK(src, PROC_REF(vomit_start), duration), 13) //13 is the length of the vomit_start animation in gooseloose.dmi
/mob/living/simple_animal/hostile/retaliate/goose/vomit/proc/vomit_start(duration)
vomiting = TRUE
icon_state = "vomit"
vomit()
- addtimer(CALLBACK(src, .proc/vomit_preend), duration)
+ addtimer(CALLBACK(src, PROC_REF(vomit_preend)), duration)
/mob/living/simple_animal/hostile/retaliate/goose/vomit/proc/vomit_preend()
for (var/obj/item/consumed in contents) //Get rid of any food left in the poor thing
@@ -178,11 +178,11 @@
/mob/living/simple_animal/hostile/retaliate/goose/vomit/proc/deadchat_plays_goose()
stop_automated_movement = TRUE
AddComponent(/datum/component/deadchat_control, ANARCHY_MODE, list(
- "up" = CALLBACK(GLOBAL_PROC, .proc/_step, src, NORTH),
- "down" = CALLBACK(GLOBAL_PROC, .proc/_step, src, SOUTH),
- "left" = CALLBACK(GLOBAL_PROC, .proc/_step, src, WEST),
- "right" = CALLBACK(GLOBAL_PROC, .proc/_step, src, EAST),
- "vomit" = CALLBACK(src, .proc/vomit_prestart, 25)), 12 SECONDS, 4 SECONDS)
+ "up" = CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(_step), src, NORTH),
+ "down" = CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(_step), src, SOUTH),
+ "left" = CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(_step), src, WEST),
+ "right" = CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(_step), src, EAST),
+ "vomit" = CALLBACK(src, PROC_REF(vomit_prestart), 25)), 12 SECONDS, 4 SECONDS)
/datum/action/cooldown/vomit
name = "Vomit"
diff --git a/code/modules/mob/living/simple_animal/hostile/headcrab.dm b/code/modules/mob/living/simple_animal/hostile/headcrab.dm
index ef48938175..0f4c1b3835 100644
--- a/code/modules/mob/living/simple_animal/hostile/headcrab.dm
+++ b/code/modules/mob/living/simple_animal/hostile/headcrab.dm
@@ -48,7 +48,7 @@
return
Infect(target)
to_chat(src, "With our egg laid, our death approaches rapidly...")
- addtimer(CALLBACK(src, .proc/death), 100)
+ addtimer(CALLBACK(src, PROC_REF(death)), 100)
/obj/item/organ/body_egg/changeling_egg
name = "changeling egg"
diff --git a/code/modules/mob/living/simple_animal/hostile/hostile.dm b/code/modules/mob/living/simple_animal/hostile/hostile.dm
index 5f0336ace4..e9809afbde 100644
--- a/code/modules/mob/living/simple_animal/hostile/hostile.dm
+++ b/code/modules/mob/living/simple_animal/hostile/hostile.dm
@@ -125,7 +125,7 @@
/mob/living/simple_animal/hostile/handle_automated_movement()
. = ..()
if(dodging && target && in_melee && isturf(loc) && isturf(target.loc))
- var/datum/cb = CALLBACK(src,.proc/sidestep)
+ var/datum/cb = CALLBACK(src,PROC_REF(sidestep))
if(sidestep_per_cycle > 1) //For more than one just spread them equally - this could changed to some sensible distribution later
var/sidestep_delay = SSnpcpool.wait / sidestep_per_cycle
for(var/i in 1 to sidestep_per_cycle)
@@ -287,7 +287,7 @@
//What we do after closing in
/mob/living/simple_animal/hostile/proc/MeleeAction(patience = TRUE)
if(rapid_melee > 1)
- var/datum/callback/cb = CALLBACK(src, .proc/CheckAndAttack)
+ var/datum/callback/cb = CALLBACK(src, PROC_REF(CheckAndAttack))
var/delay = SSnpcpool.wait / rapid_melee
for(var/i in 1 to rapid_melee)
addtimer(cb, (i - 1)*delay)
@@ -433,7 +433,7 @@
if(rapid > 1)
- var/datum/callback/cb = CALLBACK(src, .proc/Shoot, A)
+ var/datum/callback/cb = CALLBACK(src, PROC_REF(Shoot), A)
for(var/i in 1 to rapid)
addtimer(cb, (i - 1)*rapid_fire_delay)
else
@@ -575,7 +575,7 @@ mob/living/simple_animal/hostile/proc/DestroySurroundings() // for use with mega
/mob/living/simple_animal/hostile/proc/GainPatience()
if(lose_patience_timeout)
LosePatience()
- lose_patience_timer_id = addtimer(CALLBACK(src, .proc/LoseTarget), lose_patience_timeout, TIMER_STOPPABLE)
+ lose_patience_timer_id = addtimer(CALLBACK(src, PROC_REF(LoseTarget)), lose_patience_timeout, TIMER_STOPPABLE)
/mob/living/simple_animal/hostile/proc/LosePatience()
@@ -586,7 +586,7 @@ mob/living/simple_animal/hostile/proc/DestroySurroundings() // for use with mega
/mob/living/simple_animal/hostile/proc/LoseSearchObjects()
search_objects = 0
deltimer(search_objects_timer_id)
- search_objects_timer_id = addtimer(CALLBACK(src, .proc/RegainSearchObjects), search_objects_regain_time, TIMER_STOPPABLE)
+ search_objects_timer_id = addtimer(CALLBACK(src, PROC_REF(RegainSearchObjects)), search_objects_regain_time, TIMER_STOPPABLE)
/mob/living/simple_animal/hostile/proc/RegainSearchObjects(value)
diff --git a/code/modules/mob/living/simple_animal/hostile/jungle/leaper.dm b/code/modules/mob/living/simple_animal/hostile/jungle/leaper.dm
index 54c83d12ba..0c3514311d 100644
--- a/code/modules/mob/living/simple_animal/hostile/jungle/leaper.dm
+++ b/code/modules/mob/living/simple_animal/hostile/jungle/leaper.dm
@@ -204,7 +204,7 @@
if(AIStatus == AI_ON && ranged_cooldown <= world.time)
projectile_ready = TRUE
update_icons()
- throw_at(new_turf, max(3,get_dist(src,new_turf)), 1, src, FALSE, callback = CALLBACK(src, .proc/FinishHop))
+ throw_at(new_turf, max(3,get_dist(src,new_turf)), 1, src, FALSE, callback = CALLBACK(src, PROC_REF(FinishHop)))
/mob/living/simple_animal/hostile/jungle/leaper/proc/FinishHop()
density = TRUE
@@ -214,18 +214,18 @@
playsound(src.loc, 'sound/blank.ogg', 100, TRUE)
if(target && AIStatus == AI_ON && projectile_ready && !ckey)
face_atom(target)
- addtimer(CALLBACK(src, .proc/OpenFire, target), 5)
+ addtimer(CALLBACK(src, PROC_REF(OpenFire), target), 5)
/mob/living/simple_animal/hostile/jungle/leaper/proc/BellyFlop()
var/turf/new_turf = get_turf(target)
hopping = TRUE
notransform = TRUE
new /obj/effect/temp_visual/leaper_crush(new_turf)
- addtimer(CALLBACK(src, .proc/BellyFlopHop, new_turf), 30)
+ addtimer(CALLBACK(src, PROC_REF(BellyFlopHop), new_turf), 30)
/mob/living/simple_animal/hostile/jungle/leaper/proc/BellyFlopHop(turf/T)
density = FALSE
- throw_at(T, get_dist(src,T),1,src, FALSE, callback = CALLBACK(src, .proc/Crush))
+ throw_at(T, get_dist(src,T),1,src, FALSE, callback = CALLBACK(src, PROC_REF(Crush)))
/mob/living/simple_animal/hostile/jungle/leaper/proc/Crush()
hopping = FALSE
diff --git a/code/modules/mob/living/simple_animal/hostile/jungle/mook.dm b/code/modules/mob/living/simple_animal/hostile/jungle/mook.dm
index d429013592..962d304641 100644
--- a/code/modules/mob/living/simple_animal/hostile/jungle/mook.dm
+++ b/code/modules/mob/living/simple_animal/hostile/jungle/mook.dm
@@ -71,9 +71,9 @@
walk(src,0)
update_icons()
if(prob(50) && get_dist(src,target) <= 3 || forced_slash_combo)
- addtimer(CALLBACK(src, .proc/SlashCombo), ATTACK_INTERMISSION_TIME)
+ addtimer(CALLBACK(src, PROC_REF(SlashCombo)), ATTACK_INTERMISSION_TIME)
return
- addtimer(CALLBACK(src, .proc/LeapAttack), ATTACK_INTERMISSION_TIME + rand(0,3))
+ addtimer(CALLBACK(src, PROC_REF(LeapAttack)), ATTACK_INTERMISSION_TIME + rand(0,3))
return
attack_state = MOOK_ATTACK_RECOVERY
ResetNeutral()
@@ -83,9 +83,9 @@
attack_state = MOOK_ATTACK_ACTIVE
update_icons()
SlashAttack()
- addtimer(CALLBACK(src, .proc/SlashAttack), 3)
- addtimer(CALLBACK(src, .proc/SlashAttack), 6)
- addtimer(CALLBACK(src, .proc/AttackRecovery), 9)
+ addtimer(CALLBACK(src, PROC_REF(SlashAttack)), 3)
+ addtimer(CALLBACK(src, PROC_REF(SlashAttack)), 6)
+ addtimer(CALLBACK(src, PROC_REF(AttackRecovery)), 9)
/mob/living/simple_animal/hostile/jungle/mook/proc/SlashAttack()
if(target && !stat && attack_state == MOOK_ATTACK_ACTIVE)
@@ -113,7 +113,7 @@
playsound(src, 'sound/blank.ogg', 25, TRUE)
playsound(src, 'sound/blank.ogg', 100, TRUE)
var/target_turf = get_turf(target)
- throw_at(target_turf, 7, 1, src, FALSE, callback = CALLBACK(src, .proc/AttackRecovery))
+ throw_at(target_turf, 7, 1, src, FALSE, callback = CALLBACK(src, PROC_REF(AttackRecovery)))
return
attack_state = MOOK_ATTACK_RECOVERY
ResetNeutral()
@@ -132,11 +132,11 @@
if(isliving(target))
var/mob/living/L = target
if(L.incapacitated() && L.stat != DEAD)
- addtimer(CALLBACK(src, .proc/WarmupAttack, TRUE), ATTACK_INTERMISSION_TIME)
+ addtimer(CALLBACK(src, PROC_REF(WarmupAttack), TRUE), ATTACK_INTERMISSION_TIME)
return
- addtimer(CALLBACK(src, .proc/WarmupAttack), ATTACK_INTERMISSION_TIME)
+ addtimer(CALLBACK(src, PROC_REF(WarmupAttack)), ATTACK_INTERMISSION_TIME)
return
- addtimer(CALLBACK(src, .proc/ResetNeutral), ATTACK_INTERMISSION_TIME)
+ addtimer(CALLBACK(src, PROC_REF(ResetNeutral)), ATTACK_INTERMISSION_TIME)
/mob/living/simple_animal/hostile/jungle/mook/proc/ResetNeutral()
if(attack_state == MOOK_ATTACK_RECOVERY)
diff --git a/code/modules/mob/living/simple_animal/hostile/jungle/seedling.dm b/code/modules/mob/living/simple_animal/hostile/jungle/seedling.dm
index 8263ae958f..4e7e61fadc 100644
--- a/code/modules/mob/living/simple_animal/hostile/jungle/seedling.dm
+++ b/code/modules/mob/living/simple_animal/hostile/jungle/seedling.dm
@@ -131,7 +131,7 @@
if(get_dist(src,target) >= 4 && prob(40))
SolarBeamStartup(target)
return
- addtimer(CALLBACK(src, .proc/Volley), 5)
+ addtimer(CALLBACK(src, PROC_REF(Volley)), 5)
/mob/living/simple_animal/hostile/jungle/seedling/proc/SolarBeamStartup(mob/living/living_target)//It's more like requiem than final spark
if(combatant_state == SEEDLING_STATE_WARMUP && target)
@@ -142,7 +142,7 @@
if(get_dist(src,living_target) > 7)
playsound(living_target,'sound/blank.ogg', 100, FALSE)
solar_beam_identifier = world.time
- addtimer(CALLBACK(src, .proc/Beamu, living_target, solar_beam_identifier), 35)
+ addtimer(CALLBACK(src, PROC_REF(Beamu), living_target, solar_beam_identifier), 35)
/mob/living/simple_animal/hostile/jungle/seedling/proc/Beamu(mob/living/living_target, beam_id = 0)
if(combatant_state == SEEDLING_STATE_ACTIVE && living_target && beam_id == solar_beam_identifier)
@@ -162,7 +162,7 @@
living_target.adjust_fire_stacks(0.2)//Just here for the showmanship
living_target.IgniteMob()
playsound(living_target,'sound/blank.ogg', 50, TRUE)
- addtimer(CALLBACK(src, .proc/AttackRecovery), 5)
+ addtimer(CALLBACK(src, PROC_REF(AttackRecovery)), 5)
return
AttackRecovery()
@@ -170,10 +170,10 @@
if(combatant_state == SEEDLING_STATE_WARMUP && target)
combatant_state = SEEDLING_STATE_ACTIVE
update_icons()
- var/datum/callback/cb = CALLBACK(src, .proc/InaccurateShot)
+ var/datum/callback/cb = CALLBACK(src, PROC_REF(InaccurateShot))
for(var/i in 1 to 13)
addtimer(cb, i)
- addtimer(CALLBACK(src, .proc/AttackRecovery), 14)
+ addtimer(CALLBACK(src, PROC_REF(AttackRecovery)), 14)
/mob/living/simple_animal/hostile/jungle/seedling/proc/InaccurateShot()
if(!QDELETED(target) && combatant_state == SEEDLING_STATE_ACTIVE && !stat)
@@ -193,7 +193,7 @@
ranged_cooldown = world.time + ranged_cooldown_time
if(target)
face_atom(target)
- addtimer(CALLBACK(src, .proc/ResetNeutral), 10)
+ addtimer(CALLBACK(src, PROC_REF(ResetNeutral)), 10)
/mob/living/simple_animal/hostile/jungle/seedling/proc/ResetNeutral()
combatant_state = SEEDLING_STATE_NEUTRAL
diff --git a/code/modules/mob/living/simple_animal/hostile/mecha_pilot.dm b/code/modules/mob/living/simple_animal/hostile/mecha_pilot.dm
index df823f0380..07335141a1 100644
--- a/code/modules/mob/living/simple_animal/hostile/mecha_pilot.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mecha_pilot.dm
@@ -232,13 +232,13 @@
if(mecha.defense_action && mecha.defense_action.owner && !mecha.defense_mode)
mecha.leg_overload_mode = 0
mecha.defense_action.Activate(TRUE)
- addtimer(CALLBACK(mecha.defense_action, /datum/action/innate/mecha/mech_defense_mode.proc/Activate, FALSE), 100) //10 seconds of defense, then toggle off
+ addtimer(CALLBACK(mecha.defense_action, TYPE_PROC_REF(/datum/action/innate/mecha/mech_defense_mode, Activate), FALSE), 100) //10 seconds of defense, then toggle off
else if(prob(retreat_chance))
//Speed boost if possible
if(mecha.overload_action && mecha.overload_action.owner && !mecha.leg_overload_mode)
mecha.overload_action.Activate(TRUE)
- addtimer(CALLBACK(mecha.overload_action, /datum/action/innate/mecha/mech_defense_mode.proc/Activate, FALSE), 100) //10 seconds of speeeeed, then toggle off
+ addtimer(CALLBACK(mecha.overload_action, TYPE_PROC_REF(/datum/action/innate/mecha/mech_defense_mode, Activate), FALSE), 100) //10 seconds of speeeeed, then toggle off
retreat_distance = 50
addtimer(VARSET_CALLBACK(src, retreat_distance, 0), 10 SECONDS)
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm
index 84eff9feac..e0d41c8cc1 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner.dm
@@ -180,7 +180,7 @@ Difficulty: Medium
wander = TRUE
/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/proc/dash_attack()
- INVOKE_ASYNC(src, .proc/dash, target)
+ INVOKE_ASYNC(src, PROC_REF(dash), target)
shoot_ka()
/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/proc/shoot_ka()
@@ -262,7 +262,7 @@ Difficulty: Medium
/obj/effect/temp_visual/dir_setting/miner_death/Initialize(mapload, set_dir)
. = ..()
- INVOKE_ASYNC(src, .proc/fade_out)
+ INVOKE_ASYNC(src, PROC_REF(fade_out))
/obj/effect/temp_visual/dir_setting/miner_death/proc/fade_out()
var/matrix/M = new
@@ -283,6 +283,6 @@ Difficulty: Medium
/mob/living/simple_animal/hostile/megafauna/blood_drunk_miner/hunter/AttackingTarget()
. = ..()
if(. && prob(12))
- INVOKE_ASYNC(src, .proc/dash)
+ INVOKE_ASYNC(src, PROC_REF(dash))
#undef MINER_DASH_RANGE
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm
index e3a4373cdc..bb13d4309a 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/bubblegum.dm
@@ -152,7 +152,7 @@ Difficulty: Hard
/mob/living/simple_animal/hostile/megafauna/bubblegum/proc/surround_with_hallucinations()
for(var/i = 1 to 5)
- INVOKE_ASYNC(src, .proc/hallucination_charge_around, 2, 8, 2, 0, 4)
+ INVOKE_ASYNC(src, PROC_REF(hallucination_charge_around), 2, 8, 2, 0, 4)
if(ismob(target))
charge(delay = 6)
else
@@ -197,7 +197,7 @@ Difficulty: Hard
/mob/living/simple_animal/hostile/megafauna/bubblegum/proc/try_bloodattack()
var/list/targets = get_mobs_on_blood()
if(targets.len)
- INVOKE_ASYNC(src, .proc/bloodattack, targets, prob(50))
+ INVOKE_ASYNC(src, PROC_REF(bloodattack), targets, prob(50))
return TRUE
return FALSE
@@ -263,7 +263,7 @@ Difficulty: Hard
var/turf/targetturf = get_step(src, dir)
L.forceMove(targetturf)
playsound(targetturf, 'sound/blank.ogg', 100, TRUE, -1)
- addtimer(CALLBACK(src, .proc/devour, L), 2)
+ addtimer(CALLBACK(src, PROC_REF(devour), L), 2)
SLEEP_CHECK_DEATH(1)
/mob/living/simple_animal/hostile/megafauna/bubblegum/proc/blood_warp()
@@ -330,7 +330,7 @@ Difficulty: Hard
change_move_delay(3.75)
var/newcolor = rgb(149, 10, 10)
add_atom_colour(newcolor, TEMPORARY_COLOUR_PRIORITY)
- var/datum/callback/cb = CALLBACK(src, .proc/blood_enrage_end)
+ var/datum/callback/cb = CALLBACK(src, PROC_REF(blood_enrage_end))
addtimer(cb, enrage_time)
/mob/living/simple_animal/hostile/megafauna/bubblegum/proc/blood_enrage_end(newcolor = rgb(149, 10, 10))
@@ -377,7 +377,7 @@ Difficulty: Hard
continue
var/mob/living/simple_animal/hostile/megafauna/bubblegum/hallucination/B = new /mob/living/simple_animal/hostile/megafauna/bubblegum/hallucination(src.loc)
B.forceMove(place)
- INVOKE_ASYNC(B, .proc/charge, chargeat, delay, chargepast)
+ INVOKE_ASYNC(B, PROC_REF(charge), chargeat, delay, chargepast)
if(useoriginal)
charge(chargeat, delay, chargepast)
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
index 5da54d36e8..f3f8084360 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
@@ -151,8 +151,8 @@ Difficulty: Very Hard
visible_message("\"Die.\"")
SLEEP_CHECK_DEATH(10)
- INVOKE_ASYNC(src, .proc/spiral_shoot, FALSE)
- INVOKE_ASYNC(src, .proc/spiral_shoot, TRUE)
+ INVOKE_ASYNC(src, PROC_REF(spiral_shoot), FALSE)
+ INVOKE_ASYNC(src, PROC_REF(spiral_shoot), TRUE)
/mob/living/simple_animal/hostile/megafauna/colossus/proc/spiral_shoot(negative = pick(TRUE, FALSE), counter_start = 8)
var/turf/start_turf = get_step(src, pick(GLOB.alldirs))
@@ -234,7 +234,7 @@ Difficulty: Very Hard
/obj/effect/temp_visual/at_shield/Initialize(mapload, new_target)
. = ..()
target = new_target
- INVOKE_ASYNC(src, /atom/movable/proc/orbit, target, 0, FALSE, 0, 0, FALSE, TRUE)
+ INVOKE_ASYNC(src, TYPE_PROC_REF(/atom/movable, orbit), target, 0, FALSE, 0, 0, FALSE, TRUE)
/mob/living/simple_animal/hostile/megafauna/colossus/bullet_act(obj/projectile/P)
if(!stat)
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm
index c5df852547..6b724ab191 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/drake.dm
@@ -155,7 +155,7 @@ Difficulty: Medium
/mob/living/simple_animal/hostile/megafauna/dragon/proc/lava_swoop(amount = 30)
if(health < maxHealth * 0.5)
return swoop_attack(lava_arena = TRUE, swoop_cooldown = 60)
- INVOKE_ASYNC(src, .proc/lava_pools, amount)
+ INVOKE_ASYNC(src, PROC_REF(lava_pools), amount)
swoop_attack(FALSE, target, 1000) // longer cooldown until it gets reset below
SLEEP_CHECK_DEATH(0)
fire_cone()
@@ -174,7 +174,7 @@ Difficulty: Medium
var/increment = 360 / spiral_count
for(var/j = 1 to spiral_count)
var/list/turfs = line_target(j * increment + i * increment / 2, range, src)
- INVOKE_ASYNC(src, .proc/fire_line, turfs)
+ INVOKE_ASYNC(src, PROC_REF(fire_line), turfs)
SLEEP_CHECK_DEATH(25)
SetRecoveryTime(30)
@@ -241,15 +241,15 @@ Difficulty: Medium
playsound(get_turf(src),'sound/blank.ogg', 200, TRUE)
SLEEP_CHECK_DEATH(0)
if(prob(50) && meteors)
- INVOKE_ASYNC(src, .proc/fire_rain)
+ INVOKE_ASYNC(src, PROC_REF(fire_rain))
var/range = 15
var/list/turfs = list()
turfs = line_target(-40, range, at)
- INVOKE_ASYNC(src, .proc/fire_line, turfs)
+ INVOKE_ASYNC(src, PROC_REF(fire_line), turfs)
turfs = line_target(0, range, at)
- INVOKE_ASYNC(src, .proc/fire_line, turfs)
+ INVOKE_ASYNC(src, PROC_REF(fire_line), turfs)
turfs = line_target(40, range, at)
- INVOKE_ASYNC(src, .proc/fire_line, turfs)
+ INVOKE_ASYNC(src, PROC_REF(fire_line), turfs)
/mob/living/simple_animal/hostile/megafauna/dragon/proc/line_target(offset, range, atom/at = target)
if(!at)
@@ -425,7 +425,7 @@ Difficulty: Medium
/obj/effect/temp_visual/lava_warning/Initialize(mapload, reset_time = 10)
. = ..()
- INVOKE_ASYNC(src, .proc/fall, reset_time)
+ INVOKE_ASYNC(src, PROC_REF(fall), reset_time)
src.alpha = 63.75
animate(src, alpha = 255, time = duration)
@@ -450,7 +450,7 @@ Difficulty: Medium
var/lava_turf = /turf/open/lava/smooth
var/reset_turf = T.type
T.ChangeTurf(lava_turf, flags = CHANGETURF_INHERIT_AIR)
- addtimer(CALLBACK(T, /turf.proc/ChangeTurf, reset_turf, null, CHANGETURF_INHERIT_AIR), reset_time, TIMER_OVERRIDE|TIMER_UNIQUE)
+ addtimer(CALLBACK(T, TYPE_PROC_REF(/turf, ChangeTurf), reset_turf, null, CHANGETURF_INHERIT_AIR), reset_time, TIMER_OVERRIDE|TIMER_UNIQUE)
/obj/effect/temp_visual/drakewall
desc = ""
@@ -492,7 +492,7 @@ Difficulty: Medium
/obj/effect/temp_visual/dragon_flight/Initialize(mapload, negative)
. = ..()
- INVOKE_ASYNC(src, .proc/flight, negative)
+ INVOKE_ASYNC(src, PROC_REF(flight), negative)
/obj/effect/temp_visual/dragon_flight/proc/flight(negative)
if(negative)
@@ -544,7 +544,7 @@ obj/effect/temp_visual/fireball
/obj/effect/temp_visual/target/Initialize(mapload, list/flame_hit)
. = ..()
- INVOKE_ASYNC(src, .proc/fall, flame_hit)
+ INVOKE_ASYNC(src, PROC_REF(fall), flame_hit)
/obj/effect/temp_visual/target/proc/fall(list/flame_hit)
var/turf/T = get_turf(src)
@@ -635,7 +635,7 @@ obj/effect/temp_visual/fireball
var/range = 20
var/list/turfs = list()
turfs = line_target(0, range, at)
- INVOKE_ASYNC(src, .proc/fire_line, turfs)
+ INVOKE_ASYNC(src, PROC_REF(fire_line), turfs)
/mob/living/simple_animal/hostile/megafauna/dragon/space_dragon/OpenFire()
if(swooping)
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm
index 488aea4984..50181193a7 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/hierophant.dm
@@ -189,13 +189,13 @@ Difficulty: Hard
else if(prob(70 - anger_modifier)) //a cross blast of some type
if(prob(anger_modifier * (2 / target_slowness)) && health < maxHealth * 0.5) //we're super angry do it at all dirs
- INVOKE_ASYNC(src, .proc/blasts, target, GLOB.alldirs)
+ INVOKE_ASYNC(src, PROC_REF(blasts), target, GLOB.alldirs)
else if(prob(60))
- INVOKE_ASYNC(src, .proc/blasts, target, GLOB.cardinals)
+ INVOKE_ASYNC(src, PROC_REF(blasts), target, GLOB.cardinals)
else
- INVOKE_ASYNC(src, .proc/blasts, target, GLOB.diagonals)
+ INVOKE_ASYNC(src, PROC_REF(blasts), target, GLOB.diagonals)
else //just release a burst of power
- INVOKE_ASYNC(src, .proc/burst, get_turf(src))
+ INVOKE_ASYNC(src, PROC_REF(burst), get_turf(src))
/mob/living/simple_animal/hostile/megafauna/hierophant/proc/blink_spam(blink_counter, target_slowness, cross_counter)
ranged_cooldown = world.time + max(5, major_attack_cooldown - anger_modifier * 0.75)
@@ -213,7 +213,7 @@ Difficulty: Hard
blinking = TRUE
SLEEP_CHECK_DEATH(4 + target_slowness)
animate(src, color = oldcolor, time = 8)
- addtimer(CALLBACK(src, /atom/proc/update_atom_colour), 8)
+ addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, update_atom_colour)), 8)
SLEEP_CHECK_DEATH(8)
blinking = FALSE
else
@@ -229,12 +229,12 @@ Difficulty: Hard
while(!QDELETED(target) && cross_counter)
cross_counter--
if(prob(60))
- INVOKE_ASYNC(src, .proc/blasts, target, GLOB.cardinals)
+ INVOKE_ASYNC(src, PROC_REF(blasts), target, GLOB.cardinals)
else
- INVOKE_ASYNC(src, .proc/blasts, target, GLOB.diagonals)
+ INVOKE_ASYNC(src, PROC_REF(blasts), target, GLOB.diagonals)
SLEEP_CHECK_DEATH(6 + target_slowness)
animate(src, color = oldcolor, time = 8)
- addtimer(CALLBACK(src, /atom/proc/update_atom_colour), 8)
+ addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, update_atom_colour)), 8)
SLEEP_CHECK_DEATH(8)
blinking = FALSE
@@ -262,7 +262,7 @@ Difficulty: Hard
SLEEP_CHECK_DEATH(8 + target_slowness)
chaser_cooldown = world.time + initial(chaser_cooldown)
animate(src, color = oldcolor, time = 8)
- addtimer(CALLBACK(src, /atom/proc/update_atom_colour), 8)
+ addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, update_atom_colour)), 8)
SLEEP_CHECK_DEATH(8)
blinking = FALSE
@@ -280,7 +280,7 @@ Difficulty: Hard
SLEEP_CHECK_DEATH(2)
new /obj/effect/temp_visual/hierophant/blast(T, src, FALSE)
for(var/d in directions)
- INVOKE_ASYNC(src, .proc/blast_wall, T, d)
+ INVOKE_ASYNC(src, PROC_REF(blast_wall), T, d)
/mob/living/simple_animal/hostile/megafauna/hierophant/proc/blast_wall(turf/T, set_dir) //make a wall of blasts beam_range tiles long
var/range = beam_range
@@ -299,13 +299,13 @@ Difficulty: Hard
return
arena_cooldown = world.time + initial(arena_cooldown)
for(var/d in GLOB.cardinals)
- INVOKE_ASYNC(src, .proc/arena_squares, T, d)
+ INVOKE_ASYNC(src, PROC_REF(arena_squares), T, d)
for(var/t in RANGE_TURFS(11, T))
if(t && get_dist(t, T) == 11)
new /obj/effect/temp_visual/hierophant/wall(t, src)
new /obj/effect/temp_visual/hierophant/blast(t, src, FALSE)
if(get_dist(src, T) >= 11) //hey you're out of range I need to get closer to you!
- INVOKE_ASYNC(src, .proc/blink, T)
+ INVOKE_ASYNC(src, PROC_REF(blink), T)
/mob/living/simple_animal/hostile/megafauna/hierophant/proc/arena_squares(turf/T, set_dir) //make a fancy effect extending from the arena target
var/turf/previousturf = T
@@ -451,10 +451,10 @@ Difficulty: Hard
if(ranged_cooldown <= world.time)
calculate_rage()
ranged_cooldown = world.time + max(5, ranged_cooldown_time - anger_modifier * 0.75)
- INVOKE_ASYNC(src, .proc/burst, get_turf(src))
+ INVOKE_ASYNC(src, PROC_REF(burst), get_turf(src))
else
burst_range = 3
- INVOKE_ASYNC(src, .proc/burst, get_turf(src), 0.25) //melee attacks on living mobs cause it to release a fast burst if on cooldown
+ INVOKE_ASYNC(src, PROC_REF(burst), get_turf(src), 0.25) //melee attacks on living mobs cause it to release a fast burst if on cooldown
else
devour(L)
else
@@ -563,7 +563,7 @@ Difficulty: Hard
friendly_fire_check = is_friendly_fire
if(new_speed)
speed = new_speed
- addtimer(CALLBACK(src, .proc/seek_target), 1)
+ addtimer(CALLBACK(src, PROC_REF(seek_target)), 1)
/obj/effect/temp_visual/hierophant/chaser/proc/get_target_dir()
. = get_cardinal_dir(src, targetturf)
@@ -646,7 +646,7 @@ Difficulty: Hard
if(ismineralturf(loc)) //drill mineral turfs
var/turf/closed/mineral/M = loc
M.gets_drilled(caster)
- INVOKE_ASYNC(src, .proc/blast)
+ INVOKE_ASYNC(src, PROC_REF(blast))
/obj/effect/temp_visual/hierophant/blast/proc/blast()
var/turf/T = get_turf(src)
@@ -719,7 +719,7 @@ Difficulty: Hard
if(H.beacon == src)
to_chat(user, "I start removing my hierophant beacon...")
H.timer = world.time + 51
- INVOKE_ASYNC(H, /obj/item/hierophant_club.proc/prepare_icon_update)
+ INVOKE_ASYNC(H, TYPE_PROC_REF(/obj/item/hierophant_club, prepare_icon_update))
if(do_after(user, 50, target = src))
playsound(src,'sound/blank.ogg', 200, TRUE, -4)
new /obj/effect/temp_visual/hierophant/telegraph/teleport(get_turf(src), user)
@@ -729,7 +729,7 @@ Difficulty: Hard
qdel(src)
else
H.timer = world.time
- INVOKE_ASYNC(H, /obj/item/hierophant_club.proc/prepare_icon_update)
+ INVOKE_ASYNC(H, TYPE_PROC_REF(/obj/item/hierophant_club, prepare_icon_update))
else
to_chat(user, "I touch the beacon with the club, but nothing happens.")
else
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm
index 88047fc469..8d92b068c3 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm
@@ -120,15 +120,15 @@
minimum_distance = 0
set_varspeed(0)
charging = TRUE
- addtimer(CALLBACK(src, .proc/reset_charge), 60)
+ addtimer(CALLBACK(src, PROC_REF(reset_charge)), 60)
var/mob/living/L = target
if(!istype(L) || L.stat != DEAD) //I know, weird syntax, but it just works.
- addtimer(CALLBACK(src, .proc/throw_thyself), 20)
+ addtimer(CALLBACK(src, PROC_REF(throw_thyself)), 20)
///This is the proc that actually does the throwing. Charge only adds a timer for this.
/mob/living/simple_animal/hostile/megafauna/legion/proc/throw_thyself()
playsound(src, 'sound/blank.ogg', 50, TRUE)
- throw_at(target, 7, 1.1, src, FALSE, FALSE, CALLBACK(GLOBAL_PROC, .proc/playsound, src, 'sound/blank.ogg', 50 * size, TRUE, 2), INFINITY)
+ throw_at(target, 7, 1.1, src, FALSE, FALSE, CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(playsound), src, 'sound/blank.ogg', 50 * size, TRUE, 2), INFINITY)
///Deals some extra damage on throw impact.
/mob/living/simple_animal/hostile/megafauna/legion/throw_impact(mob/living/hit_atom, datum/thrownthing/throwingdatum)
@@ -329,7 +329,7 @@
/obj/structure/legionturret/Initialize()
. = ..()
- addtimer(CALLBACK(src, .proc/set_up_shot), initial_firing_time)
+ addtimer(CALLBACK(src, PROC_REF(set_up_shot)), initial_firing_time)
///Handles an extremely basic AI
/obj/structure/legionturret/proc/set_up_shot()
@@ -353,7 +353,7 @@
var/datum/point/vector/V = new(T1.x, T1.y, T1.z, 0, 0, angle)
generate_tracer_between_points(V, V.return_vector_after_increments(6), /obj/effect/projectile/tracer/legion/tracer, 0, shot_delay, 0, 0, 0, null)
playsound(src, 'sound/blank.ogg', 100, TRUE)
- addtimer(CALLBACK(src, .proc/fire_beam, angle), shot_delay)
+ addtimer(CALLBACK(src, PROC_REF(fire_beam), angle), shot_delay)
///Called shot_delay after the turret shot the tracer. Shoots a projectile into the same direction.
/obj/structure/legionturret/proc/fire_beam(angle)
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/swarmer.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/swarmer.dm
index 184431a185..bccdbc5e90 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/swarmer.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/swarmer.dm
@@ -148,7 +148,7 @@ GLOBAL_LIST_INIT(AISwarmerCapsByType, list(/mob/living/simple_animal/hostile/swa
/mob/living/simple_animal/hostile/swarmer/ai/proc/StartAction(deci = 0)
stop_automated_movement = TRUE
AIStatus = AI_OFF
- addtimer(CALLBACK(src, .proc/EndAction), deci)
+ addtimer(CALLBACK(src, PROC_REF(EndAction)), deci)
/mob/living/simple_animal/hostile/swarmer/ai/proc/EndAction()
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm
index 6e59ef0cda..ab3e326c20 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/elite.dm
@@ -150,15 +150,15 @@ While using this makes the system rely on OnFire, it still gives options for tim
if(boosted)
mychild.playsound_local(get_turf(mychild), 'sound/blank.ogg', 40, 0)
to_chat(mychild, "Someone has activated my tumor. You will be returned to fight shortly, get ready!")
- addtimer(CALLBACK(src, .proc/return_elite), 30)
- INVOKE_ASYNC(src, .proc/arena_checks)
+ addtimer(CALLBACK(src, PROC_REF(return_elite)), 30)
+ INVOKE_ASYNC(src, PROC_REF(arena_checks))
if(TUMOR_INACTIVE)
activity = TUMOR_ACTIVE
var/mob/dead/observer/elitemind = null
visible_message("[src] begins to convulse. Your instincts tell you to step back.")
activator = user
if(!boosted)
- addtimer(CALLBACK(src, .proc/spawn_elite), 30)
+ addtimer(CALLBACK(src, PROC_REF(spawn_elite)), 30)
return
visible_message("Something within [src] stirs...")
var/list/candidates = pollCandidatesForMob("Do you want to play as a lavaland elite?", ROLE_SENTIENCE, null, ROLE_SENTIENCE, 50, src, POLL_IGNORE_SENTIENCE_POTION)
@@ -167,7 +167,7 @@ While using this makes the system rely on OnFire, it still gives options for tim
elitemind = pick(candidates)
elitemind.playsound_local(get_turf(elitemind), 'sound/blank.ogg', 40, 0)
to_chat(elitemind, "I have been chosen to play as a Lavaland Elite.\nIn a few seconds, you will be summoned on Lavaland as a monster to fight my activator, in a fight to the death.\nYour attacks can be switched using the buttons on the top left of the HUD, and used by clicking on targets or tiles similar to a gun.\nWhile the opponent might have an upper hand with powerful mining equipment and tools, you have great power normally limited by AI mobs.\nIf you want to win, you'll have to use my powers in creative ways to ensure the kill. It's suggested you try using them all as soon as possible.\nShould you win, you'll receive extra information regarding what to do after. Good luck!")
- addtimer(CALLBACK(src, .proc/spawn_elite, elitemind), 100)
+ addtimer(CALLBACK(src, PROC_REF(spawn_elite), elitemind), 100)
else
visible_message("The stirring stops, and nothing emerges. Perhaps try again later.")
activity = TUMOR_INACTIVE
@@ -183,7 +183,7 @@ obj/structure/elite_tumor/proc/spawn_elite(var/mob/dead/observer/elitemind)
mychild.key = elitemind.key
mychild.sentience_act()
icon_state = "tumor_popped"
- INVOKE_ASYNC(src, .proc/arena_checks)
+ INVOKE_ASYNC(src, PROC_REF(arena_checks))
obj/structure/elite_tumor/proc/return_elite()
mychild.forceMove(loc)
@@ -230,10 +230,10 @@ obj/structure/elite_tumor/proc/return_elite()
/obj/structure/elite_tumor/proc/arena_checks()
if(activity != TUMOR_ACTIVE || QDELETED(src))
return
- INVOKE_ASYNC(src, .proc/fighters_check) //Checks to see if our fighters died.
- INVOKE_ASYNC(src, .proc/arena_trap) //Gets another arena trap queued up for when this one runs out.
- INVOKE_ASYNC(src, .proc/border_check) //Checks to see if our fighters got out of the arena somehow.
- addtimer(CALLBACK(src, .proc/arena_checks), 50)
+ INVOKE_ASYNC(src, PROC_REF(fighters_check)) //Checks to see if our fighters died.
+ INVOKE_ASYNC(src, PROC_REF(arena_trap)) //Gets another arena trap queued up for when this one runs out.
+ INVOKE_ASYNC(src, PROC_REF(border_check)) //Checks to see if our fighters got out of the arena somehow.
+ addtimer(CALLBACK(src, PROC_REF(arena_checks)), 50)
/obj/structure/elite_tumor/proc/fighters_check()
if(activator != null && activator.stat == DEAD || activity == TUMOR_ACTIVE && QDELETED(activator))
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/goliath_broodmother.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/goliath_broodmother.dm
index 1117fd5cc1..25880f180c 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/goliath_broodmother.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/goliath_broodmother.dm
@@ -136,7 +136,7 @@
color = "#FF0000"
set_varspeed(0)
move_to_delay = 3
- addtimer(CALLBACK(src, .proc/reset_rage), 65)
+ addtimer(CALLBACK(src, PROC_REF(reset_rage)), 65)
/mob/living/simple_animal/hostile/asteroid/elite/broodmother/proc/reset_rage()
color = "#FFFFFF"
@@ -213,7 +213,7 @@
retract()
else
deltimer(timerid)
- timerid = addtimer(CALLBACK(src, .proc/retract), 10, TIMER_STOPPABLE)
+ timerid = addtimer(CALLBACK(src, PROC_REF(retract)), 10, TIMER_STOPPABLE)
/obj/effect/temp_visual/goliath_tentacle/broodmother/patch/Initialize(mapload, new_spawner)
. = ..()
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/herald.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/herald.dm
index 35b70fdcc6..e4c1d8ff46 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/herald.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/herald.dm
@@ -52,7 +52,7 @@
/mob/living/simple_animal/hostile/asteroid/elite/herald/death()
. = ..()
if(!is_mirror)
- addtimer(CALLBACK(src, .proc/become_ghost), 8)
+ addtimer(CALLBACK(src, PROC_REF(become_ghost)), 8)
if(my_mirror != null)
qdel(my_mirror)
@@ -141,13 +141,13 @@
var/target_turf = get_turf(target)
var/angle_to_target = Get_Angle(src, target_turf)
shoot_projectile(target_turf, angle_to_target, FALSE)
- addtimer(CALLBACK(src, .proc/shoot_projectile, target_turf, angle_to_target, FALSE), 2)
- addtimer(CALLBACK(src, .proc/shoot_projectile, target_turf, angle_to_target, FALSE), 4)
+ addtimer(CALLBACK(src, PROC_REF(shoot_projectile), target_turf, angle_to_target, FALSE), 2)
+ addtimer(CALLBACK(src, PROC_REF(shoot_projectile), target_turf, angle_to_target, FALSE), 4)
if(health < maxHealth * 0.5)
playsound(get_turf(src), 'sound/blank.ogg', 20, TRUE)
- addtimer(CALLBACK(src, .proc/shoot_projectile, target_turf, angle_to_target, FALSE), 10)
- addtimer(CALLBACK(src, .proc/shoot_projectile, target_turf, angle_to_target, FALSE), 12)
- addtimer(CALLBACK(src, .proc/shoot_projectile, target_turf, angle_to_target, FALSE), 14)
+ addtimer(CALLBACK(src, PROC_REF(shoot_projectile), target_turf, angle_to_target, FALSE), 10)
+ addtimer(CALLBACK(src, PROC_REF(shoot_projectile), target_turf, angle_to_target, FALSE), 12)
+ addtimer(CALLBACK(src, PROC_REF(shoot_projectile), target_turf, angle_to_target, FALSE), 14)
/mob/living/simple_animal/hostile/asteroid/elite/herald/proc/herald_circleshot()
var/static/list/directional_shot_angles = list(0, 45, 90, 135, 180, 225, 270, 315)
@@ -164,11 +164,11 @@
if(!is_mirror)
icon_state = "herald_enraged"
playsound(get_turf(src), 'sound/blank.ogg', 20, TRUE)
- addtimer(CALLBACK(src, .proc/herald_circleshot), 5)
+ addtimer(CALLBACK(src, PROC_REF(herald_circleshot)), 5)
if(health < maxHealth * 0.5)
playsound(get_turf(src), 'sound/blank.ogg', 20, TRUE)
- addtimer(CALLBACK(src, .proc/herald_circleshot), 15)
- addtimer(CALLBACK(src, .proc/unenrage), 20)
+ addtimer(CALLBACK(src, PROC_REF(herald_circleshot)), 15)
+ addtimer(CALLBACK(src, PROC_REF(unenrage)), 20)
/mob/living/simple_animal/hostile/asteroid/elite/herald/proc/herald_teleshot(target)
ranged_cooldown = world.time + 30
@@ -271,4 +271,4 @@
owner.visible_message("[owner]'s [src] emits a loud noise as [owner] is struck!")
var/static/list/directional_shot_angles = list(0, 45, 90, 135, 180, 225, 270, 315)
playsound(get_turf(owner), 'sound/blank.ogg', 20, TRUE)
- addtimer(CALLBACK(src, .proc/reactionshot, owner), 10)
+ addtimer(CALLBACK(src, PROC_REF(reactionshot), owner), 10)
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/legionnaire.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/legionnaire.dm
index 8ed84c145d..bb16c3a910 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/legionnaire.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/legionnaire.dm
@@ -104,7 +104,7 @@
T = get_step(T, dir_to_target)
playsound(src,'sound/blank.ogg', 200, 1)
visible_message("[src] prepares to charge!")
- addtimer(CALLBACK(src, .proc/legionnaire_charge_2, dir_to_target, 0), 5)
+ addtimer(CALLBACK(src, PROC_REF(legionnaire_charge_2), dir_to_target, 0), 5)
/mob/living/simple_animal/hostile/asteroid/elite/legionnaire/proc/legionnaire_charge_2(move_dir, times_ran)
if(times_ran >= 4)
@@ -132,7 +132,7 @@
L.safe_throw_at(throwtarget, 10, 1, src)
L.Paralyze(20)
L.adjustBruteLoss(50)
- addtimer(CALLBACK(src, .proc/legionnaire_charge_2, move_dir, (times_ran + 1)), 2)
+ addtimer(CALLBACK(src, PROC_REF(legionnaire_charge_2), move_dir, (times_ran + 1)), 2)
/mob/living/simple_animal/hostile/asteroid/elite/legionnaire/proc/head_detach(target)
ranged_cooldown = world.time + 10
@@ -160,7 +160,7 @@
/mob/living/simple_animal/hostile/asteroid/elite/legionnaire/proc/onHeadDeath()
myhead = null
- addtimer(CALLBACK(src, .proc/regain_head), 50)
+ addtimer(CALLBACK(src, PROC_REF(regain_head)), 50)
/mob/living/simple_animal/hostile/asteroid/elite/legionnaire/proc/regain_head()
has_head = TRUE
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/pandora.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/pandora.dm
index 89db93428a..782d9dacc8 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/pandora.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/elites/pandora.dm
@@ -117,7 +117,7 @@
new /obj/effect/temp_visual/hierophant/blast/pandora(T, src)
T = get_step(T, angleused)
procsleft = procsleft - 1
- addtimer(CALLBACK(src, .proc/singular_shot_line, procsleft, angleused, T), 2)
+ addtimer(CALLBACK(src, PROC_REF(singular_shot_line), procsleft, angleused, T), 2)
/mob/living/simple_animal/hostile/asteroid/elite/pandora/proc/magic_box(target)
ranged_cooldown = world.time + cooldown_time
@@ -133,7 +133,7 @@
new /obj/effect/temp_visual/hierophant/telegraph(T, src)
new /obj/effect/temp_visual/hierophant/telegraph(source, src)
playsound(source,'sound/blank.ogg', 200, 1)
- addtimer(CALLBACK(src, .proc/pandora_teleport_2, T, source), 2)
+ addtimer(CALLBACK(src, PROC_REF(pandora_teleport_2), T, source), 2)
/mob/living/simple_animal/hostile/asteroid/elite/pandora/proc/pandora_teleport_2(turf/T, turf/source)
new /obj/effect/temp_visual/hierophant/telegraph/teleport(T, src)
@@ -145,7 +145,7 @@
animate(src, alpha = 0, time = 2, easing = EASE_OUT) //fade out
visible_message("[src] fades out!")
density = FALSE
- addtimer(CALLBACK(src, .proc/pandora_teleport_3, T), 2)
+ addtimer(CALLBACK(src, PROC_REF(pandora_teleport_3), T), 2)
/mob/living/simple_animal/hostile/asteroid/elite/pandora/proc/pandora_teleport_3(turf/T)
forceMove(T)
@@ -158,7 +158,7 @@
var/turf/T = get_turf(target)
new /obj/effect/temp_visual/hierophant/blast/pandora(T, src)
var/max_size = 2
- addtimer(CALLBACK(src, .proc/aoe_squares_2, T, 0, max_size), 2)
+ addtimer(CALLBACK(src, PROC_REF(aoe_squares_2), T, 0, max_size), 2)
/mob/living/simple_animal/hostile/asteroid/elite/pandora/proc/aoe_squares_2(turf/T, ring, max_size)
if(ring > max_size)
@@ -166,7 +166,7 @@
for(var/t in spiral_range_turfs(ring, T))
if(get_dist(t, T) == ring)
new /obj/effect/temp_visual/hierophant/blast/pandora(t, src)
- addtimer(CALLBACK(src, .proc/aoe_squares_2, T, (ring + 1), max_size), 2)
+ addtimer(CALLBACK(src, PROC_REF(aoe_squares_2), T, (ring + 1), max_size), 2)
//The specific version of hiero's squares pandora uses
/obj/effect/temp_visual/hierophant/blast/pandora
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/goldgrub.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/goldgrub.dm
index 2879de0c8f..90448e245a 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/goldgrub.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/goldgrub.dm
@@ -52,7 +52,7 @@
retreat_distance = 10
minimum_distance = 10
if(will_burrow)
- addtimer(CALLBACK(src, .proc/Burrow), chase_time)
+ addtimer(CALLBACK(src, PROC_REF(Burrow)), chase_time)
/mob/living/simple_animal/hostile/asteroid/goldgrub/AttackingTarget()
if(istype(target, /obj/item/stack/ore))
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm
index 06cb0b2bf2..e9dd0d6aad 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/goliath.dm
@@ -167,7 +167,7 @@
var/turf/closed/mineral/M = loc
M.gets_drilled()
deltimer(timerid)
- timerid = addtimer(CALLBACK(src, .proc/tripanim), 7, TIMER_STOPPABLE)
+ timerid = addtimer(CALLBACK(src, PROC_REF(tripanim)), 7, TIMER_STOPPABLE)
/obj/effect/temp_visual/goliath_tentacle/original/Initialize(mapload, new_spawner)
. = ..()
@@ -181,7 +181,7 @@
/obj/effect/temp_visual/goliath_tentacle/proc/tripanim()
icon_state = "Goliath_tentacle_wiggle"
deltimer(timerid)
- timerid = addtimer(CALLBACK(src, .proc/trip), 3, TIMER_STOPPABLE)
+ timerid = addtimer(CALLBACK(src, PROC_REF(trip)), 3, TIMER_STOPPABLE)
/obj/effect/temp_visual/goliath_tentacle/proc/trip()
var/latched = FALSE
@@ -196,7 +196,7 @@
retract()
else
deltimer(timerid)
- timerid = addtimer(CALLBACK(src, .proc/retract), 10, TIMER_STOPPABLE)
+ timerid = addtimer(CALLBACK(src, PROC_REF(retract)), 10, TIMER_STOPPABLE)
/obj/effect/temp_visual/goliath_tentacle/proc/retract()
icon_state = "Goliath_tentacle_retract"
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm
index b3bf760432..8c1d0d9f05 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs/hivelord.dm
@@ -90,7 +90,7 @@
/mob/living/simple_animal/hostile/asteroid/hivelordbrood/Initialize()
. = ..()
- addtimer(CALLBACK(src, .proc/death), 100)
+ addtimer(CALLBACK(src, PROC_REF(death)), 100)
AddComponent(/datum/component/swarming)
//Legion
diff --git a/code/modules/mob/living/simple_animal/hostile/mushroom.dm b/code/modules/mob/living/simple_animal/hostile/mushroom.dm
index d51facf037..8e7de20c8b 100644
--- a/code/modules/mob/living/simple_animal/hostile/mushroom.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mushroom.dm
@@ -88,7 +88,7 @@
/mob/living/simple_animal/hostile/mushroom/adjustHealth(amount, updating_health = TRUE, forced = FALSE) //Possibility to flee from a fight just to make it more visually interesting
if(!retreat_distance && prob(33))
retreat_distance = 5
- addtimer(CALLBACK(src, .proc/stop_retreat), 30)
+ addtimer(CALLBACK(src, PROC_REF(stop_retreat)), 30)
. = ..()
/mob/living/simple_animal/hostile/mushroom/proc/stop_retreat()
@@ -137,7 +137,7 @@
revive(full_heal = TRUE, admin_revive = FALSE)
UpdateMushroomCap()
recovery_cooldown = 1
- addtimer(CALLBACK(src, .proc/recovery_recharge), 300)
+ addtimer(CALLBACK(src, PROC_REF(recovery_recharge)), 300)
/mob/living/simple_animal/hostile/mushroom/proc/recovery_recharge()
recovery_cooldown = 0
diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/ghost.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/ghost.dm
index c97517f63d..32d2d780a6 100644
--- a/code/modules/mob/living/simple_animal/hostile/retaliate/ghost.dm
+++ b/code/modules/mob/living/simple_animal/hostile/retaliate/ghost.dm
@@ -103,7 +103,7 @@
/mob/living/simple_animal/hostile/retaliate/gaseousform/Initialize()
. = ..()
set_light(1, 2)
- addtimer(CALLBACK(src, /mob/living/simple_animal/hostile/retaliate/gaseousform/.proc/revert, "VAMPIRE LORD"), 10 SECONDS)
+ addtimer(CALLBACK(src, TYPE_PROC_REF(/mob/living/simple_animal/hostile/retaliate/gaseousform, revert), "VAMPIRE LORD"), 10 SECONDS)
/mob/living/simple_animal/hostile/retaliate/gaseousform/proc/revert()
qdel()
diff --git a/code/modules/mob/living/simple_animal/hostile/roguetown/haunt.dm b/code/modules/mob/living/simple_animal/hostile/roguetown/haunt.dm
index 0e185842f5..025e99d514 100644
--- a/code/modules/mob/living/simple_animal/hostile/roguetown/haunt.dm
+++ b/code/modules/mob/living/simple_animal/hostile/roguetown/haunt.dm
@@ -144,7 +144,7 @@
return
spawning = TRUE
update_icon()
- addtimer(CALLBACK(src, .proc/createhaunt), 4 SECONDS)
+ addtimer(CALLBACK(src, PROC_REF(createhaunt)), 4 SECONDS)
/obj/structure/bonepile/Destroy()
soundloop.stop()
diff --git a/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm b/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm
index 8eb9e80245..44b7a9df99 100644
--- a/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm
+++ b/code/modules/mob/living/simple_animal/hostile/venus_human_trap.dm
@@ -23,7 +23,7 @@
for(var/turf/T in anchors)
var/datum/beam/B = Beam(T, "vine", time=INFINITY, maxdistance=5, beam_type=/obj/effect/ebeam/vine)
B.sleep_time = 10 //these shouldn't move, so let's slow down updates to 1 second (any slower and the deletion of the vines would be too slow)
- addtimer(CALLBACK(src, .proc/bear_fruit), growth_time)
+ addtimer(CALLBACK(src, PROC_REF(bear_fruit)), growth_time)
/obj/structure/alien/resin/flower_bud_enemy/proc/bear_fruit()
visible_message("the plant has borne fruit!")
diff --git a/code/modules/mob/living/simple_animal/hostile/wumborian_fugu.dm b/code/modules/mob/living/simple_animal/hostile/wumborian_fugu.dm
index 8c5e5469db..8f388f9a3e 100644
--- a/code/modules/mob/living/simple_animal/hostile/wumborian_fugu.dm
+++ b/code/modules/mob/living/simple_animal/hostile/wumborian_fugu.dm
@@ -93,7 +93,7 @@
F.environment_smash = ENVIRONMENT_SMASH_WALLS
F.mob_size = MOB_SIZE_LARGE
F.speed = 1
- addtimer(CALLBACK(F, /mob/living/simple_animal/hostile/asteroid/fugu/proc/Deflate), 100)
+ addtimer(CALLBACK(F, TYPE_PROC_REF(/mob/living/simple_animal/hostile/asteroid/fugu, Deflate)), 100)
/mob/living/simple_animal/hostile/asteroid/fugu/proc/Deflate()
if(wumbo)
diff --git a/code/modules/mob/living/simple_animal/rogue/farm/chicken.dm b/code/modules/mob/living/simple_animal/rogue/farm/chicken.dm
index 1cc94898ed..2092e159d5 100644
--- a/code/modules/mob/living/simple_animal/rogue/farm/chicken.dm
+++ b/code/modules/mob/living/simple_animal/rogue/farm/chicken.dm
@@ -147,11 +147,11 @@
if(foundchaff.len)
stop_automated_movement = TRUE
Goto(pick(foundchaff),move_to_delay)
- addtimer(CALLBACK(src, .proc/return_action), 15 SECONDS)
+ addtimer(CALLBACK(src, PROC_REF(return_action)), 15 SECONDS)
else
stop_automated_movement = TRUE
Goto(pick(foundnests),move_to_delay)
- addtimer(CALLBACK(src, .proc/return_action), 15 SECONDS)
+ addtimer(CALLBACK(src, PROC_REF(return_action)), 15 SECONDS)
/obj/structure/fluff/nest
diff --git a/code/modules/mob/living/simple_animal/rogue/rogueanimals.dm b/code/modules/mob/living/simple_animal/rogue/rogueanimals.dm
index 992f5a8cb0..1197437c77 100644
--- a/code/modules/mob/living/simple_animal/rogue/rogueanimals.dm
+++ b/code/modules/mob/living/simple_animal/rogue/rogueanimals.dm
@@ -255,7 +255,7 @@
if(tame && !stop_automated_movement)
stop_automated_movement = TRUE
Goto(user,move_to_delay)
- addtimer(CALLBACK(src, .proc/return_action), 3 SECONDS)
+ addtimer(CALLBACK(src, PROC_REF(return_action)), 3 SECONDS)
/mob/living/simple_animal/hostile/retaliate/rogue/food_tempted(obj/item/O, mob/user)
testing("tempted")
@@ -263,4 +263,4 @@
testing("infoodtype")
stop_automated_movement = TRUE
Goto(user,move_to_delay)
- addtimer(CALLBACK(src, .proc/return_action), 3 SECONDS)
+ addtimer(CALLBACK(src, PROC_REF(return_action)), 3 SECONDS)
diff --git a/code/modules/mob/living/simple_animal/slime/life.dm b/code/modules/mob/living/simple_animal/slime/life.dm
index 870e789978..67ca7a8a27 100644
--- a/code/modules/mob/living/simple_animal/slime/life.dm
+++ b/code/modules/mob/living/simple_animal/slime/life.dm
@@ -395,7 +395,7 @@
else if((mobility_flags & MOBILITY_MOVE) && isturf(loc) && prob(33))
step(src, pick(GLOB.cardinals))
else if(!AIproc)
- INVOKE_ASYNC(src, .proc/AIprocess)
+ INVOKE_ASYNC(src, PROC_REF(AIprocess))
/mob/living/simple_animal/slime/handle_automated_movement()
return //slime random movement is currently handled in handle_targets()
diff --git a/code/modules/mob/living/simple_animal/slime/slime.dm b/code/modules/mob/living/simple_animal/slime/slime.dm
index a89f88469b..b76a40db87 100644
--- a/code/modules/mob/living/simple_animal/slime/slime.dm
+++ b/code/modules/mob/living/simple_animal/slime/slime.dm
@@ -500,7 +500,7 @@
if(user)
step_away(src,user,15)
- addtimer(CALLBACK(src, .proc/slime_move, user), 3)
+ addtimer(CALLBACK(src, PROC_REF(slime_move), user), 3)
/mob/living/simple_animal/slime/proc/slime_move(mob/user)
if(user)
diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm
index 07653737c4..50c764479d 100644
--- a/code/modules/mob/transform_procs.dm
+++ b/code/modules/mob/transform_procs.dm
@@ -552,7 +552,7 @@
/mob/living/carbon/human/Animalize()
var/list/mobtypes = typesof(/mob/living/simple_animal)
- var/mobpath = input("Which type of mob should [src] turn into?", "Choose a type") in sortList(mobtypes, /proc/cmp_typepaths_asc)
+ var/mobpath = input("Which type of mob should [src] turn into?", "Choose a type") in sortList(mobtypes, GLOBAL_PROC_REF(cmp_typepaths_asc))
if(!safe_animal(mobpath))
to_chat(usr, "Sorry but this mob type is currently unavailable.")
@@ -586,7 +586,7 @@
/mob/proc/Animalize()
var/list/mobtypes = typesof(/mob/living/simple_animal)
- var/mobpath = input("Which type of mob should [src] turn into?", "Choose a type") in sortList(mobtypes, /proc/cmp_typepaths_asc)
+ var/mobpath = input("Which type of mob should [src] turn into?", "Choose a type") in sortList(mobtypes, GLOBAL_PROC_REF(cmp_typepaths_asc))
if(!safe_animal(mobpath))
to_chat(usr, "Sorry but this mob type is currently unavailable.")
diff --git a/code/modules/modular_computers/file_system/programs/card.dm b/code/modules/modular_computers/file_system/programs/card.dm
index 8debb2d7eb..8e8cbac81c 100644
--- a/code/modules/modular_computers/file_system/programs/card.dm
+++ b/code/modules/modular_computers/file_system/programs/card.dm
@@ -41,7 +41,7 @@
/datum/computer_file/program/card_mod/New()
..()
- addtimer(CALLBACK(src, .proc/SetConfigCooldown), 0)
+ addtimer(CALLBACK(src, PROC_REF(SetConfigCooldown)), 0)
/datum/computer_file/program/card_mod/proc/SetConfigCooldown()
change_position_cooldown = CONFIG_GET(number/id_console_jobslot_delay)
diff --git a/code/modules/modular_computers/laptop_vendor.dm b/code/modules/modular_computers/laptop_vendor.dm
index df9ea3cf7e..12c6a2e84f 100644
--- a/code/modules/modular_computers/laptop_vendor.dm
+++ b/code/modules/modular_computers/laptop_vendor.dm
@@ -306,6 +306,6 @@
credits -= total_price
say("Enjoy your new product!")
state = 3
- addtimer(CALLBACK(src, .proc/reset_order), 100)
+ addtimer(CALLBACK(src, PROC_REF(reset_order)), 100)
return TRUE
return FALSE
diff --git a/code/modules/ninja/suit/n_suit_verbs/ninja_adrenaline.dm b/code/modules/ninja/suit/n_suit_verbs/ninja_adrenaline.dm
index 0b2c98cdeb..b87eb85427 100644
--- a/code/modules/ninja/suit/n_suit_verbs/ninja_adrenaline.dm
+++ b/code/modules/ninja/suit/n_suit_verbs/ninja_adrenaline.dm
@@ -18,7 +18,7 @@
a_boost--
to_chat(H, "There are [a_boost] adrenaline boosts remaining.")
s_coold = 3
- addtimer(CALLBACK(src, .proc/ninjaboost_after), 70)
+ addtimer(CALLBACK(src, PROC_REF(ninjaboost_after)), 70)
/obj/item/clothing/suit/space/space_ninja/proc/ninjaboost_after()
var/mob/living/carbon/human/H = affecting
diff --git a/code/modules/ninja/suit/suit_initialisation.dm b/code/modules/ninja/suit/suit_initialisation.dm
index 1e624561ee..20118ea48f 100644
--- a/code/modules/ninja/suit/suit_initialisation.dm
+++ b/code/modules/ninja/suit/suit_initialisation.dm
@@ -13,18 +13,18 @@
return //Not sure how this could happen.
s_busy = TRUE
to_chat(U, "Now initializing...")
- addtimer(CALLBACK(src, .proc/ninitialize_two, delay, U), delay)
+ addtimer(CALLBACK(src, PROC_REF(ninitialize_two), delay, U), delay)
/obj/item/clothing/suit/space/space_ninja/proc/ninitialize_two(delay, mob/living/carbon/human/U)
if(!lock_suit(U))//To lock the suit onto wearer.
s_busy = FALSE
return
to_chat(U, "Securing external locking mechanism...\nNeural-net established.")
- addtimer(CALLBACK(src, .proc/ninitialize_three, delay, U), delay)
+ addtimer(CALLBACK(src, PROC_REF(ninitialize_three), delay, U), delay)
/obj/item/clothing/suit/space/space_ninja/proc/ninitialize_three(delay, mob/living/carbon/human/U)
to_chat(U, "Extending neural-net interface...\nNow monitoring brain wave pattern...")
- addtimer(CALLBACK(src, .proc/ninitialize_four, delay, U), delay)
+ addtimer(CALLBACK(src, PROC_REF(ninitialize_four), delay, U), delay)
/obj/item/clothing/suit/space/space_ninja/proc/ninitialize_four(delay, mob/living/carbon/human/U)
if(U.stat == DEAD|| U.health <= 0)
@@ -35,15 +35,15 @@
lockIcons(U)//Check for icons.
U.regenerate_icons()
to_chat(U, "Linking neural-net interface...\nPattern\green GREEN, continuing operation.")
- addtimer(CALLBACK(src, .proc/ninitialize_five, delay, U), delay)
+ addtimer(CALLBACK(src, PROC_REF(ninitialize_five), delay, U), delay)
/obj/item/clothing/suit/space/space_ninja/proc/ninitialize_five(delay, mob/living/carbon/human/U)
to_chat(U, "VOID-shift device status: ONLINE.\nCLOAK-tech device status: ONLINE.")
- addtimer(CALLBACK(src, .proc/ninitialize_six, delay, U), delay)
+ addtimer(CALLBACK(src, PROC_REF(ninitialize_six), delay, U), delay)
/obj/item/clothing/suit/space/space_ninja/proc/ninitialize_six(delay, mob/living/carbon/human/U)
to_chat(U, "Primary system status: ONLINE.\nBackup system status: ONLINE.\nCurrent energy capacity: [DisplayEnergy(cell.charge)].")
- addtimer(CALLBACK(src, .proc/ninitialize_seven, delay, U), delay)
+ addtimer(CALLBACK(src, PROC_REF(ninitialize_seven), delay, U), delay)
/obj/item/clothing/suit/space/space_ninja/proc/ninitialize_seven(delay, mob/living/carbon/human/U)
to_chat(U, "All systems operational. Welcome to SpiderOS, [U.real_name].")
@@ -59,32 +59,32 @@
if(alert("Are you certain you wish to remove the suit? This will take time and remove all abilities.",,"Yes","No")=="No")
return
s_busy = TRUE
- addtimer(CALLBACK(src, .proc/deinitialize_two, delay, U), delay)
+ addtimer(CALLBACK(src, PROC_REF(deinitialize_two), delay, U), delay)
/obj/item/clothing/suit/space/space_ninja/proc/deinitialize_two(delay, mob/living/carbon/human/U)
to_chat(U, "Now de-initializing...")
- addtimer(CALLBACK(src, .proc/deinitialize_three, delay, U), delay)
+ addtimer(CALLBACK(src, PROC_REF(deinitialize_three), delay, U), delay)
/obj/item/clothing/suit/space/space_ninja/proc/deinitialize_three(delay, mob/living/carbon/human/U)
to_chat(U, "Logging off, [U.real_name]. Shutting down SpiderOS.")
- addtimer(CALLBACK(src, .proc/deinitialize_four, delay, U), delay)
+ addtimer(CALLBACK(src, PROC_REF(deinitialize_four), delay, U), delay)
/obj/item/clothing/suit/space/space_ninja/proc/deinitialize_four(delay, mob/living/carbon/human/U)
to_chat(U, "Primary system status: OFFLINE.\nBackup system status: OFFLINE.")
- addtimer(CALLBACK(src, .proc/deinitialize_five, delay, U), delay)
+ addtimer(CALLBACK(src, PROC_REF(deinitialize_five), delay, U), delay)
/obj/item/clothing/suit/space/space_ninja/proc/deinitialize_five(delay, mob/living/carbon/human/U)
to_chat(U, "VOID-shift device status: OFFLINE.\nCLOAK-tech device status: OFFLINE.")
cancel_stealth()//Shutdowns stealth.
- addtimer(CALLBACK(src, .proc/deinitialize_six, delay, U), delay)
+ addtimer(CALLBACK(src, PROC_REF(deinitialize_six), delay, U), delay)
/obj/item/clothing/suit/space/space_ninja/proc/deinitialize_six(delay, mob/living/carbon/human/U)
to_chat(U, "Disconnecting neural-net interface...\greenSuccess.")
- addtimer(CALLBACK(src, .proc/deinitialize_seven, delay, U), delay)
+ addtimer(CALLBACK(src, PROC_REF(deinitialize_seven), delay, U), delay)
/obj/item/clothing/suit/space/space_ninja/proc/deinitialize_seven(delay, mob/living/carbon/human/U)
to_chat(U, "Disengaging neural-net interface...\greenSuccess.")
- addtimer(CALLBACK(src, .proc/deinitialize_eight, delay, U), delay)
+ addtimer(CALLBACK(src, PROC_REF(deinitialize_eight), delay, U), delay)
/obj/item/clothing/suit/space/space_ninja/proc/deinitialize_eight(delay, mob/living/carbon/human/U)
to_chat(U, "Unsecuring external locking mechanism...\nNeural-net abolished.\nOperation status: FINISHED.")
diff --git a/code/modules/paperwork/contract.dm b/code/modules/paperwork/contract.dm
index 4df48df50f..32680c1c5d 100644
--- a/code/modules/paperwork/contract.dm
+++ b/code/modules/paperwork/contract.dm
@@ -239,7 +239,7 @@
user.visible_message("With a sudden blaze, [H] stands back up.")
H.fakefire()
fulfillContract(H, TRUE)//Revival contracts are always signed in blood
- addtimer(CALLBACK(H, /mob/living/carbon/human.proc/fakefireextinguish), 5, TIMER_UNIQUE)
+ addtimer(CALLBACK(H, TYPE_PROC_REF(/mob/living/carbon/human, fakefireextinguish)), 5, TIMER_UNIQUE)
addtimer(CALLBACK(src, "resetcooldown"), 300, TIMER_UNIQUE)
else
..()
diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm
index e4c1f5d7d2..f29a918fea 100644
--- a/code/modules/paperwork/paper.dm
+++ b/code/modules/paperwork/paper.dm
@@ -218,7 +218,7 @@
if(!spam_flag)
spam_flag = TRUE
playsound(loc, 'sound/blank.ogg', 50, TRUE)
- addtimer(CALLBACK(src, .proc/reset_spamflag), 20)
+ addtimer(CALLBACK(src, PROC_REF(reset_spamflag)), 20)
/obj/item/paper/attack_ai(mob/living/silicon/ai/user)
diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm
index 0547e1927a..090248b920 100644
--- a/code/modules/paperwork/photocopier.dm
+++ b/code/modules/paperwork/photocopier.dm
@@ -86,7 +86,7 @@
c.copy_overlays(copy, TRUE)
toner--
busy = TRUE
- addtimer(CALLBACK(src, .proc/reset_busy), 1.5 SECONDS)
+ addtimer(CALLBACK(src, PROC_REF(reset_busy)), 1.5 SECONDS)
else
break
updateUsrDialog()
@@ -95,7 +95,7 @@
if(toner >= 5 && !busy && photocopy) //Was set to = 0, but if there was say 3 toner left and this ran, you would get -2 which would be weird for ink
new /obj/item/photo (loc, photocopy.picture.Copy(greytoggle == "Greyscale"? TRUE : FALSE))
busy = TRUE
- addtimer(CALLBACK(src, .proc/reset_busy), 1.5 SECONDS)
+ addtimer(CALLBACK(src, PROC_REF(reset_busy)), 1.5 SECONDS)
else
break
else if(doccopy)
@@ -104,7 +104,7 @@
new /obj/item/documents/photocopy(loc, doccopy)
toner-= 6 // the sprite shows 6 papers, yes I checked
busy = TRUE
- addtimer(CALLBACK(src, .proc/reset_busy), 1.5 SECONDS)
+ addtimer(CALLBACK(src, PROC_REF(reset_busy)), 1.5 SECONDS)
else
break
updateUsrDialog()
@@ -172,7 +172,7 @@
photo.pixel_y = rand(-10, 10)
toner -= 5 //AI prints color pictures only, thus they can do it more efficiently
busy = TRUE
- addtimer(CALLBACK(src, .proc/reset_busy), 1.5 SECONDS)
+ addtimer(CALLBACK(src, PROC_REF(reset_busy)), 1.5 SECONDS)
updateUsrDialog()
else if(href_list["colortoggle"])
if(greytoggle == "Greyscale")
diff --git a/code/modules/paperwork/ticketmachine.dm b/code/modules/paperwork/ticketmachine.dm
index cb18fb009b..8b011752f2 100644
--- a/code/modules/paperwork/ticketmachine.dm
+++ b/code/modules/paperwork/ticketmachine.dm
@@ -186,7 +186,7 @@
tickets += theirticket
if(obj_flags & EMAGGED) //Emag the machine to destroy the HOP's life.
ready = FALSE
- addtimer(CALLBACK(src, .proc/reset_cooldown), cooldown)//Small cooldown to prevent piles of flaming tickets
+ addtimer(CALLBACK(src, PROC_REF(reset_cooldown)), cooldown)//Small cooldown to prevent piles of flaming tickets
theirticket.fire_act()
user.dropItemToGround(theirticket)
user.adjust_fire_stacks(1)
diff --git a/code/modules/photography/camera/camera.dm b/code/modules/photography/camera/camera.dm
index 419a17a48f..47f06a356e 100644
--- a/code/modules/photography/camera/camera.dm
+++ b/code/modules/photography/camera/camera.dm
@@ -139,11 +139,11 @@
var/mob/living/carbon/human/H = user
if (HAS_TRAIT(H, TRAIT_PHOTOGRAPHER))
realcooldown *= 0.5
- addtimer(CALLBACK(src, .proc/cooldown), realcooldown)
+ addtimer(CALLBACK(src, PROC_REF(cooldown)), realcooldown)
icon_state = state_off
- INVOKE_ASYNC(src, .proc/captureimage, target, user, flag, picture_size_x - 1, picture_size_y - 1)
+ INVOKE_ASYNC(src, PROC_REF(captureimage), target, user, flag, picture_size_x - 1, picture_size_y - 1)
/obj/item/camera/proc/cooldown()
diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm
index 109cf4a954..168732128e 100644
--- a/code/modules/power/apc.dm
+++ b/code/modules/power/apc.dm
@@ -191,7 +191,7 @@
name = "\improper [get_area_name(area, TRUE)] APC"
stat |= MAINT
update_icon()
- addtimer(CALLBACK(src, .proc/update), 5)
+ addtimer(CALLBACK(src, PROC_REF(update)), 5)
/obj/machinery/power/apc/Destroy()
GLOB.apcs_list -= src
@@ -253,7 +253,7 @@
make_terminal()
- addtimer(CALLBACK(src, .proc/update), 5)
+ addtimer(CALLBACK(src, PROC_REF(update)), 5)
/obj/machinery/power/apc/examine(mob/user)
. = ..()
@@ -980,7 +980,7 @@
for(var/obj/machinery/light/L in area)
if(!initial(L.no_emergency)) //If there was an override set on creation, keep that override
L.no_emergency = emergency_lights
- INVOKE_ASYNC(L, /obj/machinery/light/.proc/update, FALSE)
+ INVOKE_ASYNC(L, TYPE_PROC_REF(/obj/machinery/light, update), FALSE)
CHECK_TICK
return 1
@@ -1003,7 +1003,7 @@
return
to_chat(malf, "Beginning override of APC systems. This takes some time, and you cannot perform other actions during the process.")
malf.malfhack = src
- malf.malfhacking = addtimer(CALLBACK(malf, /mob/living/silicon/ai/.proc/malfhacked, src), 600, TIMER_STOPPABLE)
+ malf.malfhacking = addtimer(CALLBACK(malf, TYPE_PROC_REF(/mob/living/silicon/ai, malfhacked), src), 600, TIMER_STOPPABLE)
var/obj/screen/alert/hackingapc/A
A = malf.throw_alert("hackingapc", /obj/screen/alert/hackingapc)
@@ -1321,7 +1321,7 @@
environ = 0
update_icon()
update()
- addtimer(CALLBACK(src, .proc/reset, APC_RESET_EMP), 600)
+ addtimer(CALLBACK(src, PROC_REF(reset), APC_RESET_EMP), 600)
/obj/machinery/power/apc/blob_act(obj/structure/blob/B)
set_broken()
@@ -1347,7 +1347,7 @@
return
if( cell && cell.charge>=20)
cell.use(20)
- INVOKE_ASYNC(src, .proc/break_lights)
+ INVOKE_ASYNC(src, PROC_REF(break_lights))
/obj/machinery/power/apc/proc/break_lights()
for(var/obj/machinery/light/L in area)
diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm
index 1f245be24d..3557ffa2e4 100644
--- a/code/modules/power/cable.dm
+++ b/code/modules/power/cable.dm
@@ -366,7 +366,7 @@ GLOBAL_LIST_INIT(wire_node_generating_types, typecacheof(list(/obj/structure/gri
if(first)
first = FALSE
continue
- addtimer(CALLBACK(O, .proc/auto_propogate_cut_cable, O), 0) //so we don't rebuild the network X times when singulo/explosion destroys a line of X cables
+ addtimer(CALLBACK(O, PROC_REF(auto_propogate_cut_cable), O), 0) //so we don't rebuild the network X times when singulo/explosion destroys a line of X cables
///////////////////////////////////////////////
// The cable coil object, used for laying cable
@@ -441,7 +441,7 @@ GLOBAL_LIST_INIT(cable_coil_recipes, list(new/datum/stack_recipe("cable restrain
"Layer 2" = image(icon = 'icons/mob/radial.dmi', icon_state = "coil-yellow"),
"Layer 3" = image(icon = 'icons/mob/radial.dmi', icon_state = "coil-blue")
)
- var/layer_result = show_radial_menu(user, src, layer_list, custom_check = CALLBACK(src, .proc/check_menu, user), require_near = TRUE, tooltips = TRUE)
+ var/layer_result = show_radial_menu(user, src, layer_list, custom_check = CALLBACK(src, PROC_REF(check_menu), user), require_near = TRUE, tooltips = TRUE)
if(!check_menu(user))
return
switch(layer_result)
diff --git a/code/modules/power/lanternpost.dm b/code/modules/power/lanternpost.dm
index 4737f44709..f8feceeb29 100644
--- a/code/modules/power/lanternpost.dm
+++ b/code/modules/power/lanternpost.dm
@@ -23,7 +23,7 @@
update_icon()
if(soundloop)
soundloop.start()
- addtimer(CALLBACK(src, .proc/trigger_weather), rand(5,20))
+ addtimer(CALLBACK(src, PROC_REF(trigger_weather)), rand(5,20))
return TRUE
/obj/machinery/light/rogue/lanternpost/Initialize()
@@ -83,7 +83,7 @@
on = TRUE
update()
update_icon()
- addtimer(CALLBACK(src, .proc/trigger_weather), rand(5,20))
+ addtimer(CALLBACK(src, PROC_REF(trigger_weather)), rand(5,20))
return
if(!LR.on && on)
if(LR.fuel > 0)
@@ -97,7 +97,7 @@
on = TRUE
update()
update_icon()
- addtimer(CALLBACK(src, .proc/trigger_weather), rand(5,20))
+ addtimer(CALLBACK(src, PROC_REF(trigger_weather)), rand(5,20))
else
LR.forceMove(src)
torchy = LR
diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm
index e82ec06cd4..37697b6251 100644
--- a/code/modules/power/lighting.dm
+++ b/code/modules/power/lighting.dm
@@ -317,7 +317,7 @@
// brightness = 4
// if(prob(5))
// break_light_tube(1)
- addtimer(CALLBACK(src, .proc/update, 0), 1)
+ addtimer(CALLBACK(src, PROC_REF(update), 0), 1)
/obj/machinery/light/Destroy()
var/area/A = get_area(src)
@@ -429,7 +429,7 @@
if(!start_only)
do_sparks(3, TRUE, src)
var/delay = rand(BROKEN_SPARKS_MIN, BROKEN_SPARKS_MAX)
- addtimer(CALLBACK(src, .proc/broken_sparks), delay, TIMER_UNIQUE | TIMER_NO_HASH_WAIT)
+ addtimer(CALLBACK(src, PROC_REF(broken_sparks)), delay, TIMER_UNIQUE | TIMER_NO_HASH_WAIT)
/obj/machinery/light/process()
if(on)
diff --git a/code/modules/power/multiz.dm b/code/modules/power/multiz.dm
index bafc5dbde6..222902ebc1 100644
--- a/code/modules/power/multiz.dm
+++ b/code/modules/power/multiz.dm
@@ -38,13 +38,13 @@
icon_state = "cablerelay-off"
to_chat(user, "Powernet connection lost. Attempting to re-establish. Ensure the relays below this one are connected too.")
find_relays()
- addtimer(CALLBACK(src, .proc/refresh), 20) //Wait a bit so we can find the one below, then get powering
+ addtimer(CALLBACK(src, PROC_REF(refresh)), 20) //Wait a bit so we can find the one below, then get powering
return TRUE
/obj/machinery/power/deck_relay/Initialize()
. = ..()
- addtimer(CALLBACK(src, .proc/find_relays), 30)
- addtimer(CALLBACK(src, .proc/refresh), 50) //Wait a bit so we can find the one below, then get powering
+ addtimer(CALLBACK(src, PROC_REF(find_relays)), 30)
+ addtimer(CALLBACK(src, PROC_REF(refresh)), 50) //Wait a bit so we can find the one below, then get powering
///Handles re-acquiring + merging powernets found by find_relays()
/obj/machinery/power/deck_relay/proc/refresh()
diff --git a/code/modules/power/power.dm b/code/modules/power/power.dm
index 64bd835a92..528a101f30 100644
--- a/code/modules/power/power.dm
+++ b/code/modules/power/power.dm
@@ -18,7 +18,7 @@
/obj/machinery/power/Destroy()
disconnect_from_network()
- addtimer(CALLBACK(GLOBAL_PROC, .proc/update_cable_icons_on_turf, get_turf(src)), 3)
+ addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(update_cable_icons_on_turf), get_turf(src)), 3)
return ..()
///////////////////////////////
diff --git a/code/modules/power/roguelighting.dm b/code/modules/power/roguelighting.dm
index a173d3c4d3..1b367aefcc 100644
--- a/code/modules/power/roguelighting.dm
+++ b/code/modules/power/roguelighting.dm
@@ -108,7 +108,7 @@
on = FALSE
set_light(0)
update_icon()
- addtimer(CALLBACK(src, .proc/lights_on), 5 MINUTES)
+ addtimer(CALLBACK(src, PROC_REF(lights_on)), 5 MINUTES)
/obj/machinery/light/roguestreet/proc/lights_on()
on = TRUE
@@ -238,7 +238,7 @@
update_icon()
if(soundloop)
soundloop.start()
- addtimer(CALLBACK(src, .proc/trigger_weather), rand(5,20))
+ addtimer(CALLBACK(src, PROC_REF(trigger_weather)), rand(5,20))
return TRUE
/obj/proc/trigger_weather()
@@ -502,7 +502,7 @@
update_icon()
if(soundloop)
soundloop.start()
- addtimer(CALLBACK(src, .proc/trigger_weather), rand(5,20))
+ addtimer(CALLBACK(src, PROC_REF(trigger_weather)), rand(5,20))
return TRUE
/obj/machinery/light/rogue/torchholder/Initialize()
@@ -562,7 +562,7 @@
on = TRUE
update()
update_icon()
- addtimer(CALLBACK(src, .proc/trigger_weather), rand(5,20))
+ addtimer(CALLBACK(src, PROC_REF(trigger_weather)), rand(5,20))
return
if(!LR.on && on)
if(LR.fuel > 0)
@@ -576,7 +576,7 @@
on = TRUE
update()
update_icon()
- addtimer(CALLBACK(src, .proc/trigger_weather), rand(5,20))
+ addtimer(CALLBACK(src, PROC_REF(trigger_weather)), rand(5,20))
else
LR.forceMove(src)
torchy = LR
diff --git a/code/modules/power/rtg.dm b/code/modules/power/rtg.dm
index 1f4bc0b033..cc0c294b22 100644
--- a/code/modules/power/rtg.dm
+++ b/code/modules/power/rtg.dm
@@ -76,7 +76,7 @@
"I hear a loud electrical crack!")
playsound(src.loc, 'sound/blank.ogg', 100, TRUE, extrarange = 5)
tesla_zap(src, 5, power_gen * 0.05)
- addtimer(CALLBACK(GLOBAL_PROC, .proc/explosion, get_turf(src), 2, 3, 4, 8), 100) // Not a normal explosion.
+ addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(explosion), get_turf(src), 2, 3, 4, 8), 100) // Not a normal explosion.
/obj/machinery/power/rtg/abductor/bullet_act(obj/projectile/Proj)
. = ..()
diff --git a/code/modules/power/singularity/boh_tear.dm b/code/modules/power/singularity/boh_tear.dm
index 437d757758..a3679401b0 100644
--- a/code/modules/power/singularity/boh_tear.dm
+++ b/code/modules/power/singularity/boh_tear.dm
@@ -39,4 +39,4 @@
to_chat(user, "I don't feel like you are real anymore.")
user.dust_animation()
user.spawn_dust()
- addtimer(CALLBACK(src, .proc/consume, user), 5)
+ addtimer(CALLBACK(src, PROC_REF(consume), user), 5)
diff --git a/code/modules/power/singularity/containment_field.dm b/code/modules/power/singularity/containment_field.dm
index f5f6be21c9..5d239f6ee3 100644
--- a/code/modules/power/singularity/containment_field.dm
+++ b/code/modules/power/singularity/containment_field.dm
@@ -139,4 +139,4 @@
do_sparks(5, TRUE, AM.loc)
var/atom/target = get_edge_target_turf(AM, get_dir(src, get_step_away(AM, src)))
AM.throw_at(target, 200, 4)
- addtimer(CALLBACK(src, .proc/clear_shock), 5)
+ addtimer(CALLBACK(src, PROC_REF(clear_shock)), 5)
diff --git a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm
index dcf291658f..0e0bb62937 100644
--- a/code/modules/power/singularity/emitter.dm
+++ b/code/modules/power/singularity/emitter.dm
@@ -96,7 +96,7 @@
/obj/machinery/power/emitter/ComponentInitialize()
. = ..()
- AddComponent(/datum/component/simple_rotation, ROTATION_ALTCLICK | ROTATION_CLOCKWISE | ROTATION_COUNTERCLOCKWISE | ROTATION_VERBS, null, CALLBACK(src, .proc/can_be_rotated))
+ AddComponent(/datum/component/simple_rotation, ROTATION_ALTCLICK | ROTATION_CLOCKWISE | ROTATION_COUNTERCLOCKWISE | ROTATION_VERBS, null, CALLBACK(src, PROC_REF(can_be_rotated)))
/obj/machinery/power/emitter/proc/can_be_rotated(mob/user,rotation_type)
if (anchored)
diff --git a/code/modules/power/singularity/field_generator.dm b/code/modules/power/singularity/field_generator.dm
index 38bf7e256c..3eb79df5a4 100644
--- a/code/modules/power/singularity/field_generator.dm
+++ b/code/modules/power/singularity/field_generator.dm
@@ -182,8 +182,8 @@ field_generator power level display
active = FG_OFFLINE
CanAtmosPass = ATMOS_PASS_YES
air_update_turf(TRUE)
- INVOKE_ASYNC(src, .proc/cleanup)
- addtimer(CALLBACK(src, .proc/cool_down), 50)
+ INVOKE_ASYNC(src, PROC_REF(cleanup))
+ addtimer(CALLBACK(src, PROC_REF(cool_down)), 50)
/obj/machinery/field/generator/proc/cool_down()
if(active || warming_up <= 0)
@@ -191,11 +191,11 @@ field_generator power level display
warming_up--
update_icon()
if(warming_up > 0)
- addtimer(CALLBACK(src, .proc/cool_down), 50)
+ addtimer(CALLBACK(src, PROC_REF(cool_down)), 50)
/obj/machinery/field/generator/proc/turn_on()
active = FG_CHARGING
- addtimer(CALLBACK(src, .proc/warm_up), 50)
+ addtimer(CALLBACK(src, PROC_REF(warm_up)), 50)
/obj/machinery/field/generator/proc/warm_up()
if(!active)
@@ -205,7 +205,7 @@ field_generator power level display
if(warming_up >= 3)
start_fields()
else
- addtimer(CALLBACK(src, .proc/warm_up), 50)
+ addtimer(CALLBACK(src, PROC_REF(warm_up)), 50)
/obj/machinery/field/generator/proc/calc_power(set_power_draw)
var/power_draw = 2 + fields.len
@@ -260,10 +260,10 @@ field_generator power level display
move_resist = INFINITY
CanAtmosPass = ATMOS_PASS_NO
air_update_turf(TRUE)
- addtimer(CALLBACK(src, .proc/setup_field, 1), 1)
- addtimer(CALLBACK(src, .proc/setup_field, 2), 2)
- addtimer(CALLBACK(src, .proc/setup_field, 4), 3)
- addtimer(CALLBACK(src, .proc/setup_field, 8), 4)
+ addtimer(CALLBACK(src, PROC_REF(setup_field), 1), 1)
+ addtimer(CALLBACK(src, PROC_REF(setup_field), 2), 2)
+ addtimer(CALLBACK(src, PROC_REF(setup_field), 4), 3)
+ addtimer(CALLBACK(src, PROC_REF(setup_field), 8), 4)
addtimer(VARSET_CALLBACK(src, active, FG_ONLINE), 5)
/obj/machinery/field/generator/proc/setup_field(NSEW)
@@ -337,7 +337,7 @@ field_generator power level display
//This is here to help fight the "hurr durr, release singulo cos nobody will notice before the
//singulo eats the evidence". It's not fool-proof but better than nothing.
//I want to avoid using global variables.
- INVOKE_ASYNC(src, .proc/notify_admins)
+ INVOKE_ASYNC(src, PROC_REF(notify_admins))
move_resist = initial(move_resist)
diff --git a/code/modules/power/singularity/narsie.dm b/code/modules/power/singularity/narsie.dm
index 083eeb997a..02ce96ecfe 100644
--- a/code/modules/power/singularity/narsie.dm
+++ b/code/modules/power/singularity/narsie.dm
@@ -35,7 +35,7 @@
if(A)
var/mutable_appearance/alert_overlay = mutable_appearance('icons/effects/cult_effects.dmi', "ghostalertsie")
notify_ghosts("Nar'Sie has risen in \the [A.name]. Reach out to the Geometer to be given a new shell for your soul.", source = src, alert_overlay = alert_overlay, action=NOTIFY_ATTACK)
- INVOKE_ASYNC(src, .proc/narsie_spawn_animation)
+ INVOKE_ASYNC(src, PROC_REF(narsie_spawn_animation))
UnregisterSignal(src, COMSIG_ATOM_BSA_BEAM) //set up in /singularity/Initialize()
/obj/singularity/narsie/large/cult // For the new cult ending, guaranteed to end the round within 3 minutes
@@ -66,7 +66,7 @@
if(player.stat != DEAD && player.loc && is_station_level(player.loc.z) && !iscultist(player) && !isanimal(player))
souls_needed[player] = TRUE
soul_goal = round(1 + LAZYLEN(souls_needed) * 0.75)
- INVOKE_ASYNC(src, .proc/begin_the_end)
+ INVOKE_ASYNC(src, PROC_REF(begin_the_end))
/obj/singularity/narsie/large/cult/proc/begin_the_end()
sleep(50)
@@ -81,7 +81,7 @@
if(resolved == FALSE)
resolved = TRUE
sound_to_playing_players('sound/blank.ogg')
- addtimer(CALLBACK(GLOBAL_PROC, .proc/cult_ending_helper), 120)
+ addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(cult_ending_helper)), 120)
/obj/singularity/narsie/large/cult/Destroy()
GLOB.cult_narsie = null
@@ -92,9 +92,9 @@
/proc/cult_ending_helper(no_explosion = 0)
if(no_explosion)
- Cinematic(CINEMATIC_CULT,world,CALLBACK(GLOBAL_PROC,/proc/ending_helper))
+ Cinematic(CINEMATIC_CULT,world,CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(ending_helper)))
else
- Cinematic(CINEMATIC_CULT_NUKE,world,CALLBACK(GLOBAL_PROC,/proc/ending_helper))
+ Cinematic(CINEMATIC_CULT_NUKE,world,CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(ending_helper)))
//ATTACK GHOST IGNORING PARENT RETURN VALUE
/obj/singularity/narsie/large/attack_ghost(mob/dead/observer/user as mob)
diff --git a/code/modules/power/singularity/particle_accelerator/particle.dm b/code/modules/power/singularity/particle_accelerator/particle.dm
index 037d399bd2..c8cc4ce981 100644
--- a/code/modules/power/singularity/particle_accelerator/particle.dm
+++ b/code/modules/power/singularity/particle_accelerator/particle.dm
@@ -25,7 +25,7 @@
/obj/effect/accelerated_particle/New(loc)
..()
- addtimer(CALLBACK(src, .proc/move), 1)
+ addtimer(CALLBACK(src, PROC_REF(move)), 1)
/obj/effect/accelerated_particle/Bump(atom/A)
diff --git a/code/modules/power/singularity/singularity.dm b/code/modules/power/singularity/singularity.dm
index b9b007d3ae..145a54188c 100644
--- a/code/modules/power/singularity/singularity.dm
+++ b/code/modules/power/singularity/singularity.dm
@@ -44,7 +44,7 @@
target = singubeacon
break
AddElement(/datum/element/bsa_blocker)
- RegisterSignal(src, COMSIG_ATOM_BSA_BEAM, .proc/bluespace_reaction)
+ RegisterSignal(src, COMSIG_ATOM_BSA_BEAM, PROC_REF(bluespace_reaction))
/obj/singularity/Destroy()
STOP_PROCESSING(SSobj, src)
@@ -458,7 +458,7 @@
/obj/singularity/deadchat_controlled/Initialize(mapload, starting_energy)
. = ..()
AddComponent(/datum/component/deadchat_control, DEMOCRACY_MODE, list(
- "up" = CALLBACK(GLOBAL_PROC, .proc/_step, src, NORTH),
- "down" = CALLBACK(GLOBAL_PROC, .proc/_step, src, SOUTH),
- "left" = CALLBACK(GLOBAL_PROC, .proc/_step, src, WEST),
- "right" = CALLBACK(GLOBAL_PROC, .proc/_step, src, EAST)))
+ "up" = CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(_step), src, NORTH),
+ "down" = CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(_step), src, SOUTH),
+ "left" = CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(_step), src, WEST),
+ "right" = CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(_step), src, EAST)))
diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm
index 2a88349c4b..932746a217 100644
--- a/code/modules/power/supermatter/supermatter.dm
+++ b/code/modules/power/supermatter/supermatter.dm
@@ -180,7 +180,7 @@ GLOBAL_DATUM(main_supermatter_engine, /obj/machinery/power/supermatter_crystal)
GLOB.main_supermatter_engine = src
AddElement(/datum/element/bsa_blocker)
- RegisterSignal(src, COMSIG_ATOM_BSA_BEAM, .proc/call_explode)
+ RegisterSignal(src, COMSIG_ATOM_BSA_BEAM, PROC_REF(call_explode))
soundloop = new(list(src), TRUE)
diff --git a/code/modules/power/tesla/coil.dm b/code/modules/power/tesla/coil.dm
index 3075756442..393af06a4c 100644
--- a/code/modules/power/tesla/coil.dm
+++ b/code/modules/power/tesla/coil.dm
@@ -93,7 +93,7 @@
D.adjust_money(min(power_produced, 1))
if(istype(linked_techweb))
linked_techweb.add_point_type(TECHWEB_POINT_TYPE_DEFAULT, min(power_produced, 1)) // x4 coils = ~240/m point bonus for R&D
- addtimer(CALLBACK(src, .proc/reset_shocked), 10)
+ addtimer(CALLBACK(src, PROC_REF(reset_shocked)), 10)
tesla_buckle_check(power)
else
..()
@@ -131,7 +131,7 @@
D.adjust_money(min(power_produced, 3))
if(istype(linked_techweb))
linked_techweb.add_point_type(TECHWEB_POINT_TYPE_DEFAULT, min(power_produced, 3)) // x4 coils with a pulse per second or so = ~720/m point bonus for R&D
- addtimer(CALLBACK(src, .proc/reset_shocked), 10)
+ addtimer(CALLBACK(src, PROC_REF(reset_shocked)), 10)
tesla_buckle_check(power)
else
..()
diff --git a/code/modules/power/tesla/energy_ball.dm b/code/modules/power/tesla/energy_ball.dm
index fcf2dd6756..31d59e69f1 100644
--- a/code/modules/power/tesla/energy_ball.dm
+++ b/code/modules/power/tesla/energy_ball.dm
@@ -97,7 +97,7 @@
energy_to_raise = energy_to_raise * 1.25
playsound(src.loc, 'sound/blank.ogg', 100, TRUE, extrarange = 30)
- addtimer(CALLBACK(src, .proc/new_mini_ball), 100)
+ addtimer(CALLBACK(src, PROC_REF(new_mini_ball)), 100)
else if(energy < energy_to_lower && orbiting_balls.len)
energy_to_raise = energy_to_raise / 1.25
diff --git a/code/modules/procedural_mapping/mapGenerator.dm b/code/modules/procedural_mapping/mapGenerator.dm
index ca7c2576b5..b2c73cc2f7 100644
--- a/code/modules/procedural_mapping/mapGenerator.dm
+++ b/code/modules/procedural_mapping/mapGenerator.dm
@@ -110,7 +110,7 @@
if(!modules || !modules.len)
return
for(var/datum/mapGeneratorModule/mod in modules)
- INVOKE_ASYNC(mod, /datum/mapGeneratorModule.proc/generate)
+ INVOKE_ASYNC(mod, TYPE_PROC_REF(/datum/mapGeneratorModule, generate))
//Requests the mapGeneratorModule(s) to (re)generate this one turf
@@ -121,7 +121,7 @@
if(!modules || !modules.len)
return
for(var/datum/mapGeneratorModule/mod in modules)
- INVOKE_ASYNC(mod, /datum/mapGeneratorModule.proc/place, T)
+ INVOKE_ASYNC(mod, TYPE_PROC_REF(/datum/mapGeneratorModule, place), T)
//Replaces all paths in the module list with actual module datums
diff --git a/code/modules/projectiles/ammunition/_ammunition.dm b/code/modules/projectiles/ammunition/_ammunition.dm
index c962bd010e..38d02e853b 100644
--- a/code/modules/projectiles/ammunition/_ammunition.dm
+++ b/code/modules/projectiles/ammunition/_ammunition.dm
@@ -83,6 +83,6 @@
SpinAnimation(10, 1)
var/turf/T = get_turf(src)
if(still_warm && T && T.bullet_sizzle)
- addtimer(CALLBACK(GLOBAL_PROC, .proc/playsound, src, 'sound/blank.ogg', 20, 1), bounce_delay) //If the turf is made of water and the shell casing is still hot, make a sizzling sound when it's ejected.
+ addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(playsound), src, 'sound/blank.ogg', 20, 1), bounce_delay) //If the turf is made of water and the shell casing is still hot, make a sizzling sound when it's ejected.
else if(T && T.bullet_bounce_sound)
- addtimer(CALLBACK(GLOBAL_PROC, .proc/playsound, src, T.bullet_bounce_sound, 20, 1), bounce_delay) //Soft / non-solid turfs that shouldn't make a sound when a shell casing is ejected over them.
+ addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(playsound), src, T.bullet_bounce_sound, 20, 1), bounce_delay) //Soft / non-solid turfs that shouldn't make a sound when a shell casing is ejected over them.
diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm
index a7ead11aca..6c5c4d0187 100644
--- a/code/modules/projectiles/gun.dm
+++ b/code/modules/projectiles/gun.dm
@@ -246,7 +246,7 @@
else if(G.can_trigger_gun(user))
bonus_spread += dual_wield_spread
loop_counter++
- addtimer(CALLBACK(G, /obj/item/gun.proc/process_fire, target, user, TRUE, params, null, bonus_spread), loop_counter)
+ addtimer(CALLBACK(G, TYPE_PROC_REF(/obj/item/gun, process_fire), target, user, TRUE, params, null, bonus_spread), loop_counter)
return process_fire(target, user, TRUE, params, null, bonus_spread)
@@ -326,7 +326,7 @@
if(burst_size > 1)
firing_burst = TRUE
for(var/i = 1 to burst_size)
- addtimer(CALLBACK(src, .proc/process_burst, user, target, message, params, zone_override, sprd, randomized_gun_spread, randomized_bonus_spread, rand_spr, i), fire_delay * (i - 1))
+ addtimer(CALLBACK(src, PROC_REF(process_burst), user, target, message, params, zone_override, sprd, randomized_gun_spread, randomized_bonus_spread, rand_spr, i), fire_delay * (i - 1))
else
if(chambered)
if(HAS_TRAIT(user, TRAIT_PACIFISM)) // If the user has the pacifist trait, then they won't be able to fire [src] if the round chambered inside of [src] is lethal.
@@ -349,7 +349,7 @@
process_chamber()
update_icon()
semicd = TRUE
- addtimer(CALLBACK(src, .proc/reset_semicd), fire_delay)
+ addtimer(CALLBACK(src, PROC_REF(reset_semicd)), fire_delay)
if(user)
user.update_inv_hands()
diff --git a/code/modules/projectiles/guns/ballistic.dm b/code/modules/projectiles/guns/ballistic.dm
index 82cd5844ab..314ae86f01 100644
--- a/code/modules/projectiles/guns/ballistic.dm
+++ b/code/modules/projectiles/guns/ballistic.dm
@@ -416,7 +416,7 @@
var/turf/target = get_ranged_target_turf(user, turn(user.dir, 180), BRAINS_BLOWN_THROW_RANGE)
B.Remove(user)
B.forceMove(T)
- var/datum/callback/gibspawner = CALLBACK(GLOBAL_PROC, /proc/spawn_atom_to_turf, /obj/effect/gibspawner/generic, B, 1, FALSE, user)
+ var/datum/callback/gibspawner = CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(spawn_atom_to_turf), /obj/effect/gibspawner/generic, B, 1, FALSE, user)
B.throw_at(target, BRAINS_BLOWN_THROW_RANGE, BRAINS_BLOWN_THROW_SPEED, callback=gibspawner)
return(BRUTELOSS)
else
diff --git a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm
index f215619cc5..07c78850b3 100644
--- a/code/modules/projectiles/guns/energy/kinetic_accelerator.dm
+++ b/code/modules/projectiles/guns/energy/kinetic_accelerator.dm
@@ -103,7 +103,7 @@
if(!QDELING(src) && !holds_charge)
// Put it on a delay because moving item from slot to hand
// calls dropped().
- addtimer(CALLBACK(src, .proc/empty_if_not_held), 2)
+ addtimer(CALLBACK(src, PROC_REF(empty_if_not_held)), 2)
/obj/item/gun/energy/kinetic_accelerator/proc/empty_if_not_held()
if(!ismob(loc))
@@ -141,7 +141,7 @@
if(H.mind)
skill_modifier = H.mind.get_skill_speed_modifier(/datum/skill/mining)
- recharge_timerid = addtimer(CALLBACK(src, .proc/reload), recharge_time * carried * skill_modifier, TIMER_STOPPABLE)
+ recharge_timerid = addtimer(CALLBACK(src, PROC_REF(reload)), recharge_time * carried * skill_modifier, TIMER_STOPPABLE)
/obj/item/gun/energy/kinetic_accelerator/emp_act(severity)
return
diff --git a/code/modules/projectiles/guns/misc/beam_rifle.dm b/code/modules/projectiles/guns/misc/beam_rifle.dm
index 0a55ae294d..c41dd72314 100644
--- a/code/modules/projectiles/guns/misc/beam_rifle.dm
+++ b/code/modules/projectiles/guns/misc/beam_rifle.dm
@@ -272,7 +272,7 @@
current_user = null
if(istype(user))
current_user = user
- RegisterSignal(user, COMSIG_MOVABLE_MOVED, .proc/on_mob_move)
+ RegisterSignal(user, COMSIG_MOVABLE_MOVED, PROC_REF(on_mob_move))
listeningTo = user
/obj/item/gun/energy/beam_rifle/onMouseDrag(src_object, over_object, src_location, over_location, params, mob)
diff --git a/code/modules/projectiles/guns/misc/grenade_launcher.dm b/code/modules/projectiles/guns/misc/grenade_launcher.dm
index ab0b189d49..5966dffe11 100644
--- a/code/modules/projectiles/guns/misc/grenade_launcher.dm
+++ b/code/modules/projectiles/guns/misc/grenade_launcher.dm
@@ -43,4 +43,4 @@
F.active = 1
F.icon_state = initial(F.icon_state) + "_active"
playsound(user.loc, 'sound/blank.ogg', 75, TRUE, -3)
- addtimer(CALLBACK(F, /obj/item/grenade.proc/prime), 15)
+ addtimer(CALLBACK(F, TYPE_PROC_REF(/obj/item/grenade, prime)), 15)
diff --git a/code/modules/projectiles/guns/misc/medbeam.dm b/code/modules/projectiles/guns/misc/medbeam.dm
index 489d81c05c..e76cad800b 100644
--- a/code/modules/projectiles/guns/misc/medbeam.dm
+++ b/code/modules/projectiles/guns/misc/medbeam.dm
@@ -53,7 +53,7 @@
current_target = target
active = TRUE
current_beam = new(user,current_target,time=6000,beam_icon_state="medbeam",btype=/obj/effect/ebeam/medical)
- INVOKE_ASYNC(current_beam, /datum/beam.proc/Start)
+ INVOKE_ASYNC(current_beam, TYPE_PROC_REF(/datum/beam, Start))
SSblackbox.record_feedback("tally", "gun_fired", 1, type)
diff --git a/code/modules/projectiles/projectile/energy/net_snare.dm b/code/modules/projectiles/projectile/energy/net_snare.dm
index f851f94fa9..3c0f67ec68 100644
--- a/code/modules/projectiles/projectile/energy/net_snare.dm
+++ b/code/modules/projectiles/projectile/energy/net_snare.dm
@@ -37,7 +37,7 @@
if(com.power_station && com.power_station.teleporter_hub && com.power_station.engaged)
teletarget = com.target
- addtimer(CALLBACK(src, .proc/pop, teletarget), 30)
+ addtimer(CALLBACK(src, PROC_REF(pop), teletarget), 30)
/obj/effect/nettingportal/proc/pop(teletarget)
if(teletarget)
diff --git a/code/modules/projectiles/projectile/energy/stun.dm b/code/modules/projectiles/projectile/energy/stun.dm
index e9119865ba..69872af62a 100644
--- a/code/modules/projectiles/projectile/energy/stun.dm
+++ b/code/modules/projectiles/projectile/energy/stun.dm
@@ -23,7 +23,7 @@
if(C.dna && C.dna.check_mutation(HULK))
C.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" ), forced = "hulk")
else if((C.status_flags & CANKNOCKDOWN) && !HAS_TRAIT(C, TRAIT_STUNIMMUNE))
- addtimer(CALLBACK(C, /mob/living/carbon.proc/do_jitter_animation, jitter), 5)
+ addtimer(CALLBACK(C, TYPE_PROC_REF(/mob/living/carbon, do_jitter_animation), jitter), 5)
/obj/projectile/energy/electrode/on_range() //to ensure the bolt sparks when it reaches the end of its range if it didn't hit a target yet
do_sparks(1, TRUE, src)
diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm
index 2a1278a2c8..471ccfd288 100644
--- a/code/modules/projectiles/projectile/magic.dm
+++ b/code/modules/projectiles/projectile/magic.dm
@@ -438,8 +438,8 @@
/obj/structure/closet/decay/Initialize()
. = ..()
if(auto_destroy)
- addtimer(CALLBACK(src, .proc/bust_open), 5 MINUTES)
- addtimer(CALLBACK(src, .proc/magicly_lock), 5)
+ addtimer(CALLBACK(src, PROC_REF(bust_open)), 5 MINUTES)
+ addtimer(CALLBACK(src, PROC_REF(magicly_lock)), 5)
/obj/structure/closet/decay/proc/magicly_lock()
if(!welded)
@@ -453,7 +453,7 @@
/obj/structure/closet/decay/proc/decay()
animate(src, alpha = 0, time = 30)
- addtimer(CALLBACK(GLOBAL_PROC, .proc/qdel, src), 30)
+ addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(qdel), src), 30)
/obj/structure/closet/decay/open(mob/living/user)
. = ..()
@@ -461,12 +461,12 @@
if(icon_state == magic_icon) //check if we used the magic icon at all before giving it the lesser magic icon
unmagify()
else
- addtimer(CALLBACK(src, .proc/decay), 15 SECONDS)
+ addtimer(CALLBACK(src, PROC_REF(decay)), 15 SECONDS)
/obj/structure/closet/decay/proc/unmagify()
icon_state = weakened_icon
update_icon()
- addtimer(CALLBACK(src, .proc/decay), 15 SECONDS)
+ addtimer(CALLBACK(src, PROC_REF(decay)), 15 SECONDS)
icon_welded = "welded"
/obj/projectile/magic/flying
@@ -706,7 +706,7 @@
return BULLET_ACT_BLOCK
var/turf/T = get_turf(target)
for(var/i=0, i<50, i+=10)
- addtimer(CALLBACK(GLOBAL_PROC, .proc/explosion, T, -1, exp_heavy, exp_light, exp_flash, FALSE, FALSE, exp_fire), i)
+ addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(explosion), T, -1, exp_heavy, exp_light, exp_flash, FALSE, FALSE, exp_fire), i)
//still magic related, but a different path
diff --git a/code/modules/projectiles/projectile/special/hallucination.dm b/code/modules/projectiles/projectile/special/hallucination.dm
index aaabeec605..0acb9503ca 100644
--- a/code/modules/projectiles/projectile/special/hallucination.dm
+++ b/code/modules/projectiles/projectile/special/hallucination.dm
@@ -100,7 +100,7 @@
layer = ABOVE_MOB_LAYER
hal_target.client.images += blood
animate(blood, pixel_x = target_pixel_x, pixel_y = target_pixel_y, alpha = 0, time = 5)
- addtimer(CALLBACK(src, .proc/cleanup_blood), 5)
+ addtimer(CALLBACK(src, PROC_REF(cleanup_blood)), 5)
/obj/projectile/hallucination/proc/cleanup_blood(image/blood)
hal_target.client.images -= blood
@@ -171,7 +171,7 @@
if(hal_target.dna && hal_target.dna.check_mutation(HULK))
hal_target.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" ), forced = "hulk")
else if((hal_target.status_flags & CANKNOCKDOWN) && !HAS_TRAIT(hal_target, TRAIT_STUNIMMUNE))
- addtimer(CALLBACK(hal_target, /mob/living/carbon.proc/do_jitter_animation, 20), 5)
+ addtimer(CALLBACK(hal_target, TYPE_PROC_REF(/mob/living/carbon, do_jitter_animation), 20), 5)
/obj/projectile/hallucination/disabler
name = "disabler beam"
diff --git a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm
index 66a83f83ab..3d2c9c95d3 100644
--- a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm
+++ b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm
@@ -87,11 +87,11 @@
/obj/machinery/chem_dispenser/Initialize()
. = ..()
- dispensable_reagents = sortList(dispensable_reagents, /proc/cmp_reagents_asc)
+ dispensable_reagents = sortList(dispensable_reagents, GLOBAL_PROC_REF(cmp_reagents_asc))
if(emagged_reagents)
- emagged_reagents = sortList(emagged_reagents, /proc/cmp_reagents_asc)
+ emagged_reagents = sortList(emagged_reagents, GLOBAL_PROC_REF(cmp_reagents_asc))
if(upgrade_reagents)
- upgrade_reagents = sortList(upgrade_reagents, /proc/cmp_reagents_asc)
+ upgrade_reagents = sortList(upgrade_reagents, GLOBAL_PROC_REF(cmp_reagents_asc))
update_icon()
/obj/machinery/chem_dispenser/Destroy()
diff --git a/code/modules/reagents/chemistry/machinery/pandemic.dm b/code/modules/reagents/chemistry/machinery/pandemic.dm
index 8cd7628830..1199bf8403 100644
--- a/code/modules/reagents/chemistry/machinery/pandemic.dm
+++ b/code/modules/reagents/chemistry/machinery/pandemic.dm
@@ -224,7 +224,7 @@
update_icon()
var/turf/source_turf = get_turf(src)
log_virus("A culture bottle was printed for the virus [A.admin_details()] at [loc_name(source_turf)] by [key_name(usr)]")
- addtimer(CALLBACK(src, .proc/reset_replicator_cooldown), 50)
+ addtimer(CALLBACK(src, PROC_REF(reset_replicator_cooldown)), 50)
. = TRUE
if("create_vaccine_bottle")
if (wait)
@@ -236,7 +236,7 @@
B.reagents.add_reagent(/datum/reagent/vaccine, 15, list(id))
wait = TRUE
update_icon()
- addtimer(CALLBACK(src, .proc/reset_replicator_cooldown), 200)
+ addtimer(CALLBACK(src, PROC_REF(reset_replicator_cooldown)), 200)
. = TRUE
if("symptom_details")
var/picked_symptom_index = text2num(params["picked_symptom"])
diff --git a/code/modules/reagents/chemistry/machinery/reagentgrinder.dm b/code/modules/reagents/chemistry/machinery/reagentgrinder.dm
index c5cfbbdace..8be16aa832 100644
--- a/code/modules/reagents/chemistry/machinery/reagentgrinder.dm
+++ b/code/modules/reagents/chemistry/machinery/reagentgrinder.dm
@@ -228,7 +228,7 @@
var/offset = prob(50) ? -2 : 2
var/old_pixel_x = pixel_x
animate(src, pixel_x = pixel_x + offset, time = 0.2, loop = -1) //start shaking
- addtimer(CALLBACK(src, .proc/stop_shaking, old_pixel_x), duration)
+ addtimer(CALLBACK(src, PROC_REF(stop_shaking), old_pixel_x), duration)
/obj/machinery/reagentgrinder/proc/stop_shaking(old_px)
animate(src)
@@ -242,7 +242,7 @@
playsound(src, 'sound/blank.ogg', 50, TRUE)
else
playsound(src, 'sound/blank.ogg', 20, TRUE)
- addtimer(CALLBACK(src, .proc/stop_operating), time / speed)
+ addtimer(CALLBACK(src, PROC_REF(stop_operating)), time / speed)
/obj/machinery/reagentgrinder/proc/stop_operating()
operating = FALSE
@@ -301,7 +301,7 @@
if(!beaker || stat & (NOPOWER|BROKEN))
return
operate_for(50, juicing = TRUE)
- addtimer(CALLBACK(src, /obj/machinery/reagentgrinder/proc/mix_complete), 50)
+ addtimer(CALLBACK(src, TYPE_PROC_REF(/obj/machinery/reagentgrinder, mix_complete)), 50)
/obj/machinery/reagentgrinder/proc/mix_complete()
if(beaker?.reagents.total_volume)
diff --git a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm
index bb0ab3c48a..d797af7a26 100644
--- a/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/alcohol_reagents.dm
@@ -1863,7 +1863,7 @@ All effects don't start immediately, but rather get worse over time; the rate is
var/minimum_name_percent = 0.35
name = ""
- var/list/names_in_order = sortTim(names, /proc/cmp_numeric_dsc, TRUE)
+ var/list/names_in_order = sortTim(names, GLOBAL_PROC_REF(cmp_numeric_dsc), TRUE)
var/named = FALSE
for(var/fruit_name in names)
if(names[fruit_name] >= minimum_name_percent)
diff --git a/code/modules/reagents/chemistry/reagents/food_reagents.dm b/code/modules/reagents/chemistry/reagents/food_reagents.dm
index fee552ef9c..5ced6c0add 100644
--- a/code/modules/reagents/chemistry/reagents/food_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/food_reagents.dm
@@ -141,7 +141,7 @@
M.emote("scream")
playsound(M, 'sound/blank.ogg', 25, TRUE)
ADD_TRAIT(M, TRAIT_OIL_FRIED, "cooking_oil_react")
- addtimer(CALLBACK(M, /mob/living/proc/unfry_mob), 3)
+ addtimer(CALLBACK(M, TYPE_PROC_REF(/mob/living, unfry_mob)), 3)
if(FryLoss)
M.adjustFireLoss(FryLoss)
return TRUE
@@ -296,7 +296,7 @@
victim.confused = max(M.confused, 5) // 10 seconds
victim.Knockdown(3 SECONDS)
victim.add_movespeed_modifier(MOVESPEED_ID_PEPPER_SPRAY, update=TRUE, priority=100, multiplicative_slowdown=0.25, blacklisted_movetypes=(FLYING|FLOATING))
- addtimer(CALLBACK(victim, /mob.proc/remove_movespeed_modifier, MOVESPEED_ID_PEPPER_SPRAY), 10 SECONDS)
+ addtimer(CALLBACK(victim, TYPE_PROC_REF(/mob, remove_movespeed_modifier), MOVESPEED_ID_PEPPER_SPRAY), 10 SECONDS)
victim.update_damage_hud()
/datum/reagent/consumable/condensedcapsaicin/on_mob_life(mob/living/carbon/M)
diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm
index 0ad926a0e8..fdeb413940 100644
--- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm
@@ -717,8 +717,8 @@
M.visible_message("[M]'s body starts convulsing!")
M.notify_ghost_cloning(source = M)
M.do_jitter_animation(10)
- addtimer(CALLBACK(M, /mob/living/carbon.proc/do_jitter_animation, 10), 40) //jitter immediately, then again after 4 and 8 seconds
- addtimer(CALLBACK(M, /mob/living/carbon.proc/do_jitter_animation, 10), 80)
+ addtimer(CALLBACK(M, TYPE_PROC_REF(/mob/living/carbon, do_jitter_animation), 10), 40) //jitter immediately, then again after 4 and 8 seconds
+ addtimer(CALLBACK(M, TYPE_PROC_REF(/mob/living/carbon, do_jitter_animation), 10), 80)
sleep(100) //so the ghost has time to re-enter
diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm
index 7ace706a0f..a2fc0dccce 100644
--- a/code/modules/reagents/chemistry/reagents/other_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm
@@ -996,7 +996,7 @@
to_chat(M, "I feel unstable...")
M.Jitter(2)
current_cycle = 1
- addtimer(CALLBACK(M, /mob/living/proc/bluespace_shuffle), 30)
+ addtimer(CALLBACK(M, TYPE_PROC_REF(/mob/living, bluespace_shuffle)), 30)
..()
/mob/living/proc/bluespace_shuffle()
@@ -1651,7 +1651,7 @@
var/can_colour_mobs = TRUE
/datum/reagent/colorful_reagent/New()
- SSticker.OnRoundstart(CALLBACK(src,.proc/UpdateColor))
+ SSticker.OnRoundstart(CALLBACK(src,PROC_REF(UpdateColor)))
/datum/reagent/colorful_reagent/proc/UpdateColor()
color = pick(random_color_list)
@@ -1685,7 +1685,7 @@
taste_description = "sourness"
/datum/reagent/hair_dye/New()
- SSticker.OnRoundstart(CALLBACK(src,.proc/UpdateColor))
+ SSticker.OnRoundstart(CALLBACK(src,PROC_REF(UpdateColor)))
/datum/reagent/hair_dye/proc/UpdateColor()
color = pick(potential_colors)
diff --git a/code/modules/reagents/chemistry/recipes.dm b/code/modules/reagents/chemistry/recipes.dm
index 6a1e58ab89..c39d925792 100644
--- a/code/modules/reagents/chemistry/recipes.dm
+++ b/code/modules/reagents/chemistry/recipes.dm
@@ -70,7 +70,7 @@
else
if(setting_type)
if(step_away(X, T) && moving_power > 1) //Can happen twice at most. So this is fine.
- addtimer(CALLBACK(GLOBAL_PROC, .proc/_step_away, X, T), 2)
+ addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(_step_away), X, T), 2)
else
if(step_towards(X, T) && moving_power > 1)
- addtimer(CALLBACK(GLOBAL_PROC, .proc/_step_towards, X, T), 2)
+ addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(_step_towards), X, T), 2)
diff --git a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm
index 494aaa5b9b..61edf8ca32 100644
--- a/code/modules/reagents/chemistry/recipes/pyrotechnics.dm
+++ b/code/modules/reagents/chemistry/recipes/pyrotechnics.dm
@@ -104,7 +104,7 @@
strengthdiv = 3
/datum/chemical_reaction/reagent_explosion/tatp/New()
- SSticker.OnRoundstart(CALLBACK(src,.proc/UpdateInfo)) //method used by secret sauce.
+ SSticker.OnRoundstart(CALLBACK(src,PROC_REF(UpdateInfo))) //method used by secret sauce.
/datum/chemical_reaction/reagent_explosion/tatp/proc/UpdateInfo()
required_temp = 450 + rand(-49,49) //this gets loaded only on round start
@@ -124,7 +124,7 @@
strengthdiv = 3
/datum/chemical_reaction/reagent_explosion/tatp_explosion/New()
- SSticker.OnRoundstart(CALLBACK(src,.proc/UpdateInfo))
+ SSticker.OnRoundstart(CALLBACK(src,PROC_REF(UpdateInfo)))
/datum/chemical_reaction/reagent_explosion/tatp_explosion/proc/UpdateInfo()
diff --git a/code/modules/reagents/chemistry/recipes/slime_extracts.dm b/code/modules/reagents/chemistry/recipes/slime_extracts.dm
index 021d1d9935..f2df3fc5cd 100644
--- a/code/modules/reagents/chemistry/recipes/slime_extracts.dm
+++ b/code/modules/reagents/chemistry/recipes/slime_extracts.dm
@@ -112,11 +112,11 @@
var/obj/item/slime_extract/M = holder.my_atom
deltimer(M.qdel_timer)
..()
- M.qdel_timer = addtimer(CALLBACK(src, .proc/delete_extract, holder), 55, TIMER_STOPPABLE)
+ M.qdel_timer = addtimer(CALLBACK(src, PROC_REF(delete_extract), holder), 55, TIMER_STOPPABLE)
/datum/chemical_reaction/slime/slimemobspawn/proc/summon_mobs(datum/reagents/holder, turf/T)
T.visible_message("The slime extract begins to vibrate violently!")
- addtimer(CALLBACK(src, .proc/chemical_mob_spawn, holder, 5, "Gold Slime", HOSTILE_SPAWN), 50)
+ addtimer(CALLBACK(src, PROC_REF(chemical_mob_spawn), holder, 5, "Gold Slime", HOSTILE_SPAWN), 50)
/datum/chemical_reaction/slime/slimemobspawn/lesser
name = "Slime Crit Lesser"
@@ -125,7 +125,7 @@
/datum/chemical_reaction/slime/slimemobspawn/lesser/summon_mobs(datum/reagents/holder, turf/T)
T.visible_message("The slime extract begins to vibrate violently!")
- addtimer(CALLBACK(src, .proc/chemical_mob_spawn, holder, 3, "Lesser Gold Slime", HOSTILE_SPAWN, "neutral"), 50)
+ addtimer(CALLBACK(src, PROC_REF(chemical_mob_spawn), holder, 3, "Lesser Gold Slime", HOSTILE_SPAWN, "neutral"), 50)
/datum/chemical_reaction/slime/slimemobspawn/friendly
name = "Slime Crit Friendly"
@@ -134,7 +134,7 @@
/datum/chemical_reaction/slime/slimemobspawn/friendly/summon_mobs(datum/reagents/holder, turf/T)
T.visible_message("The slime extract begins to vibrate adorably!")
- addtimer(CALLBACK(src, .proc/chemical_mob_spawn, holder, 1, "Friendly Gold Slime", FRIENDLY_SPAWN, "neutral"), 50)
+ addtimer(CALLBACK(src, PROC_REF(chemical_mob_spawn), holder, 1, "Friendly Gold Slime", FRIENDLY_SPAWN, "neutral"), 50)
/datum/chemical_reaction/slime/slimemobspawn/spider
name = "Slime Crit Traitor Spider"
@@ -143,7 +143,7 @@
/datum/chemical_reaction/slime/slimemobspawn/spider/summon_mobs(datum/reagents/holder, turf/T)
T.visible_message("The slime extract begins to vibrate crikey-ingly!")
- addtimer(CALLBACK(src, .proc/chemical_mob_spawn, holder, 3, "Traitor Spider Slime", /mob/living/simple_animal/hostile/poison/giant_spider/nurse/midwife, "neutral", FALSE), 50)
+ addtimer(CALLBACK(src, PROC_REF(chemical_mob_spawn), holder, 3, "Traitor Spider Slime", /mob/living/simple_animal/hostile/poison/giant_spider/nurse/midwife, "neutral", FALSE), 50)
//Silver
@@ -229,11 +229,11 @@
/datum/chemical_reaction/slime/slimefreeze/on_reaction(datum/reagents/holder)
var/turf/T = get_turf(holder.my_atom)
T.visible_message("The slime extract starts to feel extremely cold!")
- addtimer(CALLBACK(src, .proc/freeze, holder), 50)
+ addtimer(CALLBACK(src, PROC_REF(freeze), holder), 50)
var/obj/item/slime_extract/M = holder.my_atom
deltimer(M.qdel_timer)
..()
- M.qdel_timer = addtimer(CALLBACK(src, .proc/delete_extract, holder), 55, TIMER_STOPPABLE)
+ M.qdel_timer = addtimer(CALLBACK(src, PROC_REF(delete_extract), holder), 55, TIMER_STOPPABLE)
/datum/chemical_reaction/slime/slimefreeze/proc/freeze(datum/reagents/holder)
if(holder && holder.my_atom)
@@ -273,11 +273,11 @@
/datum/chemical_reaction/slime/slimefire/on_reaction(datum/reagents/holder)
var/turf/T = get_turf(holder.my_atom)
T.visible_message("The slime extract begins to vibrate adorably!")
- addtimer(CALLBACK(src, .proc/slime_burn, holder), 50)
+ addtimer(CALLBACK(src, PROC_REF(slime_burn), holder), 50)
var/obj/item/slime_extract/M = holder.my_atom
deltimer(M.qdel_timer)
..()
- M.qdel_timer = addtimer(CALLBACK(src, .proc/delete_extract, holder), 55, TIMER_STOPPABLE)
+ M.qdel_timer = addtimer(CALLBACK(src, PROC_REF(delete_extract), holder), 55, TIMER_STOPPABLE)
/datum/chemical_reaction/slime/slimefire/proc/slime_burn(datum/reagents/holder)
if(holder && holder.my_atom)
@@ -454,11 +454,11 @@
message_admins("Slime Explosion reaction started at [ADMIN_VERBOSEJMP(T)]. Last Fingerprint: [touch_msg]")
log_game("Slime Explosion reaction started at [AREACOORD(T)]. Last Fingerprint: [lastkey ? lastkey : "N/A"].")
T.visible_message("The slime extract begins to vibrate violently !")
- addtimer(CALLBACK(src, .proc/boom, holder), 50)
+ addtimer(CALLBACK(src, PROC_REF(boom), holder), 50)
var/obj/item/slime_extract/M = holder.my_atom
deltimer(M.qdel_timer)
..()
- M.qdel_timer = addtimer(CALLBACK(src, .proc/delete_extract, holder), 55, TIMER_STOPPABLE)
+ M.qdel_timer = addtimer(CALLBACK(src, PROC_REF(delete_extract), holder), 55, TIMER_STOPPABLE)
/datum/chemical_reaction/slime/slimeexplosion/proc/boom(datum/reagents/holder)
if(holder && holder.my_atom)
@@ -651,7 +651,7 @@
S.visible_message("Infused with plasma, the core begins to expand uncontrollably!")
S.icon_state = "[S.base_state]_active"
S.active = TRUE
- addtimer(CALLBACK(S, /obj/item/grenade.proc/prime), rand(15,60))
+ addtimer(CALLBACK(S, TYPE_PROC_REF(/obj/item/grenade, prime)), rand(15,60))
else
var/mob/living/simple_animal/slime/random/S = new (get_turf(holder.my_atom))
S.visible_message("Infused with plasma, the core begins to quiver and grow, and a new baby slime emerges from it!")
@@ -670,7 +670,7 @@
S.visible_message("Infused with slime jelly, the core begins to expand uncontrollably!")
S.icon_state = "[S.base_state]_active"
S.active = TRUE
- addtimer(CALLBACK(S, /obj/item/grenade.proc/prime), rand(15,60))
+ addtimer(CALLBACK(S, TYPE_PROC_REF(/obj/item/grenade, prime)), rand(15,60))
var/lastkey = holder.my_atom.fingerprintslast
var/touch_msg = "N/A"
if(lastkey)
diff --git a/code/modules/reagents/chemistry/recipes/special.dm b/code/modules/reagents/chemistry/recipes/special.dm
index 891d75962d..a9fe816fce 100644
--- a/code/modules/reagents/chemistry/recipes/special.dm
+++ b/code/modules/reagents/chemistry/recipes/special.dm
@@ -180,7 +180,7 @@ GLOBAL_LIST_INIT(food_reagents, build_reagents_to_food()) //reagentid = related
if(SSpersistence.initialized)
UpdateInfo()
else
- SSticker.OnRoundstart(CALLBACK(src,.proc/UpdateInfo))
+ SSticker.OnRoundstart(CALLBACK(src,PROC_REF(UpdateInfo)))
/obj/item/paper/secretrecipe/proc/UpdateInfo()
var/datum/chemical_reaction/recipe = get_chemical_reaction(recipe_id)
diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm
index 3a33e468f5..d3f8b0fc7f 100644
--- a/code/modules/reagents/reagent_containers/glass.dm
+++ b/code/modules/reagents/reagent_containers/glass.dm
@@ -77,7 +77,7 @@
log_combat(user, M, "fed", reagents.log_list())
else
to_chat(user, "I swallow a gulp of [src].")
- addtimer(CALLBACK(reagents, /datum/reagents.proc/trans_to, M, min(amount_per_transfer_from_this,5), TRUE, TRUE, FALSE, user, FALSE, INGEST), 5)
+ addtimer(CALLBACK(reagents, TYPE_PROC_REF(/datum/reagents, trans_to), M, min(amount_per_transfer_from_this,5), TRUE, TRUE, FALSE, user, FALSE, INGEST), 5)
playsound(M.loc,pick(drinksounds), 100, TRUE)
return
/obj/item/reagent_containers/glass/attack_obj(obj/target, mob/living/user)
diff --git a/code/modules/reagents/reagent_containers/pill.dm b/code/modules/reagents/reagent_containers/pill.dm
index 83fb1efb40..3da872c688 100644
--- a/code/modules/reagents/reagent_containers/pill.dm
+++ b/code/modules/reagents/reagent_containers/pill.dm
@@ -47,7 +47,7 @@
"[user] forces you to [apply_method] [src].")
if(icon_state == "pill4" && prob(5)) //you take the red pill - you stay in Wonderland, and I show you how deep the rabbit hole goes
- addtimer(CALLBACK(GLOBAL_PROC, .proc/to_chat, M, "[pick(strings(REDPILL_FILE, "redpill_questions"))]"), 50)
+ addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(to_chat), M, "[pick(strings(REDPILL_FILE, "redpill_questions"))]"), 50)
if(reagents.total_volume)
reagents.trans_to(M, reagents.total_volume, transfered_by = user, method = apply_type)
diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm
index e254a0ef0f..8e62ea3351 100644
--- a/code/modules/reagents/reagent_containers/syringes.dm
+++ b/code/modules/reagents/reagent_containers/syringes.dm
@@ -81,7 +81,7 @@
target.visible_message("[user] is trying to take a blood sample from [target]!", \
"[user] is trying to take a blood sample from you!")
busy = TRUE
- if(!do_mob(user, target, extra_checks=CALLBACK(L, /mob/living/proc/can_inject, user, TRUE)))
+ if(!do_mob(user, target, extra_checks=CALLBACK(L, TYPE_PROC_REF(/mob/living, can_inject), user, TRUE)))
busy = FALSE
return
if(reagents.total_volume >= reagents.maximum_volume)
@@ -131,7 +131,7 @@
if(L != user)
L.visible_message("[user] is trying to inject [L]!", \
"[user] is trying to inject you!")
- if(!do_mob(user, L, extra_checks=CALLBACK(L, /mob/living/proc/can_inject, user, TRUE)))
+ if(!do_mob(user, L, extra_checks=CALLBACK(L, TYPE_PROC_REF(/mob/living, can_inject), user, TRUE)))
return
if(!reagents.total_volume)
return
diff --git a/code/modules/reagents/roguespill.dm b/code/modules/reagents/roguespill.dm
index b503216210..b78358be9b 100644
--- a/code/modules/reagents/roguespill.dm
+++ b/code/modules/reagents/roguespill.dm
@@ -2,7 +2,7 @@
. = ..()
for(var/obj/item/reagent_containers/I in contents)
if(I.reagents && I.spillable)
- RegisterSignal(user, COMSIG_MOVABLE_MOVED, .proc/check_spill, override = TRUE)
+ RegisterSignal(user, COMSIG_MOVABLE_MOVED, PROC_REF(check_spill), override = TRUE)
break
/obj/item/storage/proc/check_spill()
@@ -26,4 +26,4 @@
var/obj/item/storage/I = real_location
if(ismob(I.loc))
var/mob/M = I.loc
- I.RegisterSignal(M, COMSIG_MOVABLE_MOVED, /obj/item/storage/.proc/check_spill, override = TRUE)
\ No newline at end of file
+ I.RegisterSignal(M, COMSIG_MOVABLE_MOVED, TYPE_PROC_REF(/obj/item/storage, check_spill), override = TRUE)
diff --git a/code/modules/recycling/conveyor2.dm b/code/modules/recycling/conveyor2.dm
index 8853b92c8d..91c404aafb 100644
--- a/code/modules/recycling/conveyor2.dm
+++ b/code/modules/recycling/conveyor2.dm
@@ -131,7 +131,7 @@ GLOBAL_LIST_EMPTY(conveyors_by_id)
return
use_power(6)
affecting = loc.contents - src // moved items will be all in loc
- addtimer(CALLBACK(src, .proc/convey, affecting), 1)
+ addtimer(CALLBACK(src, PROC_REF(convey), affecting), 1)
/obj/machinery/conveyor/proc/convey(list/affecting)
for(var/atom/movable/A in affecting)
diff --git a/code/modules/recycling/disposal/construction.dm b/code/modules/recycling/disposal/construction.dm
index 1e80a4d389..ee813f9d2d 100644
--- a/code/modules/recycling/disposal/construction.dm
+++ b/code/modules/recycling/disposal/construction.dm
@@ -89,7 +89,7 @@
/obj/structure/disposalconstruct/ComponentInitialize()
. = ..()
- AddComponent(/datum/component/simple_rotation,ROTATION_ALTCLICK | ROTATION_CLOCKWISE | ROTATION_FLIP | ROTATION_VERBS ,null,CALLBACK(src, .proc/can_be_rotated), CALLBACK(src, .proc/after_rot))
+ AddComponent(/datum/component/simple_rotation,ROTATION_ALTCLICK | ROTATION_CLOCKWISE | ROTATION_FLIP | ROTATION_VERBS ,null,CALLBACK(src, PROC_REF(can_be_rotated)), CALLBACK(src, PROC_REF(after_rot)))
/obj/structure/disposalconstruct/proc/after_rot(mob/user,rotation_type)
if(rotation_type == ROTATION_FLIP)
diff --git a/code/modules/recycling/disposal/outlet.dm b/code/modules/recycling/disposal/outlet.dm
index c98586c803..eccb39f7cb 100644
--- a/code/modules/recycling/disposal/outlet.dm
+++ b/code/modules/recycling/disposal/outlet.dm
@@ -44,9 +44,9 @@
if((start_eject + 30) < world.time)
start_eject = world.time
playsound(src, 'sound/blank.ogg', 50, FALSE, FALSE)
- addtimer(CALLBACK(src, .proc/expel_holder, H, TRUE), 20)
+ addtimer(CALLBACK(src, PROC_REF(expel_holder), H, TRUE), 20)
else
- addtimer(CALLBACK(src, .proc/expel_holder, H), 20)
+ addtimer(CALLBACK(src, PROC_REF(expel_holder), H), 20)
/obj/structure/disposaloutlet/proc/expel_holder(obj/structure/disposalholder/H, playsound=FALSE)
if(playsound)
diff --git a/code/modules/research/destructive_analyzer.dm b/code/modules/research/destructive_analyzer.dm
index 91b93a16d7..a1539d4353 100644
--- a/code/modules/research/destructive_analyzer.dm
+++ b/code/modules/research/destructive_analyzer.dm
@@ -43,7 +43,7 @@ Note: Must be placed within 3 tiles of the R&D Console
loaded_item = O
to_chat(user, "I add the [O.name] to the [src.name]!")
flick("d_analyzer_la", src)
- addtimer(CALLBACK(src, .proc/finish_loading), 10)
+ addtimer(CALLBACK(src, PROC_REF(finish_loading)), 10)
if (linked_console)
linked_console.updateUsrDialog()
@@ -74,7 +74,7 @@ Note: Must be placed within 3 tiles of the R&D Console
if(!innermode)
flick("d_analyzer_process", src)
busy = TRUE
- addtimer(CALLBACK(src, .proc/reset_busy), 24)
+ addtimer(CALLBACK(src, PROC_REF(reset_busy)), 24)
use_power(250)
if(thing == loaded_item)
loaded_item = null
diff --git a/code/modules/research/experimentor.dm b/code/modules/research/experimentor.dm
index dee816860c..a562e47303 100644
--- a/code/modules/research/experimentor.dm
+++ b/code/modules/research/experimentor.dm
@@ -522,7 +522,7 @@
use_power(500000)
investigate_log("Experimentor has drained power from its APC", INVESTIGATE_EXPERIMENTOR)
- addtimer(CALLBACK(src, .proc/reset_exp), resetTime)
+ addtimer(CALLBACK(src, PROC_REF(reset_exp)), resetTime)
/obj/machinery/rnd/experimentor/proc/reset_exp()
update_icon()
@@ -587,7 +587,7 @@
else if(loc == user)
cooldown = TRUE
call(src,realProc)(user)
- addtimer(CALLBACK(src, .proc/cd), cooldownMax)
+ addtimer(CALLBACK(src, PROC_REF(cd)), cooldownMax)
else
to_chat(user, "I aren't quite sure what to do with this yet.")
@@ -604,7 +604,7 @@
/obj/item/relic/proc/corgicannon(mob/user)
playsound(src, "sparks", rand(25,50), TRUE)
var/mob/living/simple_animal/pet/dog/corgi/C = new/mob/living/simple_animal/pet/dog/corgi(get_turf(user))
- C.throw_at(pick(oview(10,user)), 10, rand(3,8), callback = CALLBACK(src, .proc/throwSmoke, C))
+ C.throw_at(pick(oview(10,user)), 10, rand(3,8), callback = CALLBACK(src, PROC_REF(throwSmoke), C))
warn_admins(user, "Corgi Cannon", 0)
/obj/item/relic/proc/clean(mob/user)
@@ -654,7 +654,7 @@
/obj/item/relic/proc/explode(mob/user)
to_chat(user, "[src] begins to heat up!")
- addtimer(CALLBACK(src, .proc/do_explode, user), rand(35, 100))
+ addtimer(CALLBACK(src, PROC_REF(do_explode), user), rand(35, 100))
/obj/item/relic/proc/do_explode(mob/user)
if(loc == user)
@@ -665,7 +665,7 @@
/obj/item/relic/proc/teleport(mob/user)
to_chat(user, "[src] begins to vibrate!")
- addtimer(CALLBACK(src, .proc/do_the_teleport, user), rand(10, 30))
+ addtimer(CALLBACK(src, PROC_REF(do_the_teleport), user), rand(10, 30))
/obj/item/relic/proc/do_the_teleport(mob/user)
var/turf/userturf = get_turf(user)
diff --git a/code/modules/research/machinery/_production.dm b/code/modules/research/machinery/_production.dm
index b4be71685a..16fbd6f6cc 100644
--- a/code/modules/research/machinery/_production.dm
+++ b/code/modules/research/machinery/_production.dm
@@ -160,8 +160,8 @@
if(production_animation)
flick(production_animation, src)
var/timecoeff = D.lathe_time_factor / efficiency_coeff
- addtimer(CALLBACK(src, .proc/reset_busy), (30 * timecoeff * amount) ** 0.5)
- addtimer(CALLBACK(src, .proc/do_print, D.build_path, amount, efficient_mats, D.dangerous_construction), (32 * timecoeff * amount) ** 0.8)
+ addtimer(CALLBACK(src, PROC_REF(reset_busy)), (30 * timecoeff * amount) ** 0.5)
+ addtimer(CALLBACK(src, PROC_REF(do_print), D.build_path, amount, efficient_mats, D.dangerous_construction), (32 * timecoeff * amount) ** 0.8)
return TRUE
/obj/machinery/rnd/production/proc/search(string)
diff --git a/code/modules/research/nanites/nanite_chamber.dm b/code/modules/research/nanites/nanite_chamber.dm
index 9225883d68..a28eb24c77 100644
--- a/code/modules/research/nanites/nanite_chamber.dm
+++ b/code/modules/research/nanites/nanite_chamber.dm
@@ -63,11 +63,11 @@
//TODO OMINOUS MACHINE SOUNDS
set_busy(TRUE, "Initializing injection protocol...", "[initial(icon_state)]_raising")
- addtimer(CALLBACK(src, .proc/set_busy, TRUE, "Analyzing host bio-structure...", "[initial(icon_state)]_active"),20)
- addtimer(CALLBACK(src, .proc/set_busy, TRUE, "Priming nanites...", "[initial(icon_state)]_active"),40)
- addtimer(CALLBACK(src, .proc/set_busy, TRUE, "Injecting...", "[initial(icon_state)]_active"),70)
- addtimer(CALLBACK(src, .proc/set_busy, TRUE, "Activating nanites...", "[initial(icon_state)]_falling"),110)
- addtimer(CALLBACK(src, .proc/complete_injection, locked_state),130)
+ addtimer(CALLBACK(src, PROC_REF(set_busy), TRUE, "Analyzing host bio-structure...", "[initial(icon_state)]_active"),20)
+ addtimer(CALLBACK(src, PROC_REF(set_busy), TRUE, "Priming nanites...", "[initial(icon_state)]_active"),40)
+ addtimer(CALLBACK(src, PROC_REF(set_busy), TRUE, "Injecting...", "[initial(icon_state)]_active"),70)
+ addtimer(CALLBACK(src, PROC_REF(set_busy), TRUE, "Activating nanites...", "[initial(icon_state)]_falling"),110)
+ addtimer(CALLBACK(src, PROC_REF(complete_injection), locked_state),130)
/obj/machinery/nanite_chamber/proc/complete_injection(locked_state)
//TODO MACHINE DING
@@ -90,11 +90,11 @@
//TODO OMINOUS MACHINE SOUNDS
set_busy(TRUE, "Initializing cleanup protocol...", "[initial(icon_state)]_raising")
- addtimer(CALLBACK(src, .proc/set_busy, TRUE, "Analyzing host bio-structure...", "[initial(icon_state)]_active"),20)
- addtimer(CALLBACK(src, .proc/set_busy, TRUE, "Pinging nanites...", "[initial(icon_state)]_active"),40)
- addtimer(CALLBACK(src, .proc/set_busy, TRUE, "Initiating graceful self-destruct sequence...", "[initial(icon_state)]_active"),70)
- addtimer(CALLBACK(src, .proc/set_busy, TRUE, "Removing debris...", "[initial(icon_state)]_falling"),110)
- addtimer(CALLBACK(src, .proc/complete_removal, locked_state),130)
+ addtimer(CALLBACK(src, PROC_REF(set_busy), TRUE, "Analyzing host bio-structure...", "[initial(icon_state)]_active"),20)
+ addtimer(CALLBACK(src, PROC_REF(set_busy), TRUE, "Pinging nanites...", "[initial(icon_state)]_active"),40)
+ addtimer(CALLBACK(src, PROC_REF(set_busy), TRUE, "Initiating graceful self-destruct sequence...", "[initial(icon_state)]_active"),70)
+ addtimer(CALLBACK(src, PROC_REF(set_busy), TRUE, "Removing debris...", "[initial(icon_state)]_falling"),110)
+ addtimer(CALLBACK(src, PROC_REF(complete_removal), locked_state),130)
/obj/machinery/nanite_chamber/proc/complete_removal(locked_state)
//TODO MACHINE DING
diff --git a/code/modules/research/nanites/nanite_programs/healing.dm b/code/modules/research/nanites/nanite_programs/healing.dm
index 105ec3fd62..9bab9c78fb 100644
--- a/code/modules/research/nanites/nanite_programs/healing.dm
+++ b/code/modules/research/nanites/nanite_programs/healing.dm
@@ -219,7 +219,7 @@
return
host_mob.notify_ghost_cloning("Your heart is being defibrillated by nanites. Re-enter your corpse if you want to be revived!")
- addtimer(CALLBACK(src, .proc/zap), 50)
+ addtimer(CALLBACK(src, PROC_REF(zap)), 50)
/datum/nanite_program/triggered/defib/proc/check_revivable()
if(!iscarbon(host_mob)) //nonstandard biology
diff --git a/code/modules/research/nanites/nanite_programs/sensor.dm b/code/modules/research/nanites/nanite_programs/sensor.dm
index 8bc43f5ba8..06b4b7c3de 100644
--- a/code/modules/research/nanites/nanite_programs/sensor.dm
+++ b/code/modules/research/nanites/nanite_programs/sensor.dm
@@ -69,7 +69,7 @@
/datum/nanite_program/sensor/repeat/trigger()
if(!..())
return
- addtimer(CALLBACK(src, .proc/send_code), delay)
+ addtimer(CALLBACK(src, PROC_REF(send_code)), delay)
/datum/nanite_program/sensor/relay_repeat
name = "Relay Signal Repeater"
@@ -115,7 +115,7 @@
/datum/nanite_program/sensor/relay_repeat/trigger()
if(!..())
return
- addtimer(CALLBACK(src, .proc/send_code), delay)
+ addtimer(CALLBACK(src, PROC_REF(send_code)), delay)
/datum/nanite_program/sensor/relay_repeat/send_code()
if(activated && relay_channel)
@@ -382,10 +382,10 @@
/datum/nanite_program/sensor/voice/on_mob_add()
. = ..()
- RegisterSignal(host_mob, COMSIG_MOVABLE_HEAR, .proc/on_hear)
+ RegisterSignal(host_mob, COMSIG_MOVABLE_HEAR, PROC_REF(on_hear))
/datum/nanite_program/sensor/voice/on_mob_remove()
- UnregisterSignal(host_mob, COMSIG_MOVABLE_HEAR, .proc/on_hear)
+ UnregisterSignal(host_mob, COMSIG_MOVABLE_HEAR, PROC_REF(on_hear))
/datum/nanite_program/sensor/voice/set_extra_setting(user, setting)
if(setting == NES_SENT_CODE)
diff --git a/code/modules/research/nanites/nanite_programs/suppression.dm b/code/modules/research/nanites/nanite_programs/suppression.dm
index 55596c6c1d..51eb0eb092 100644
--- a/code/modules/research/nanites/nanite_programs/suppression.dm
+++ b/code/modules/research/nanites/nanite_programs/suppression.dm
@@ -12,7 +12,7 @@
return
to_chat(host_mob, "I start to feel very sleepy...")
host_mob.drowsyness += 20
- addtimer(CALLBACK(host_mob, /mob/living.proc/Sleeping, 200), rand(60,200))
+ addtimer(CALLBACK(host_mob, TYPE_PROC_REF(/mob/living, Sleeping), 200), rand(60,200))
/datum/nanite_program/paralyzing
name = "Paralysis"
diff --git a/code/modules/research/nanites/nanite_programs/weapon.dm b/code/modules/research/nanites/nanite_programs/weapon.dm
index a0deb51894..fef75ebe3f 100644
--- a/code/modules/research/nanites/nanite_programs/weapon.dm
+++ b/code/modules/research/nanites/nanite_programs/weapon.dm
@@ -85,7 +85,7 @@
return
host_mob.visible_message("[host_mob] starts emitting a high-pitched buzzing, and [host_mob.p_their()] skin begins to glow...",\
"I start emitting a high-pitched buzzing, and my skin begins to glow...")
- addtimer(CALLBACK(src, .proc/boom), CLAMP((nanites.nanite_volume * 0.35), 25, 150))
+ addtimer(CALLBACK(src, PROC_REF(boom)), CLAMP((nanites.nanite_volume * 0.35), 25, 150))
/datum/nanite_program/triggered/explosive/proc/boom()
var/nanite_amount = nanites.nanite_volume
@@ -203,7 +203,7 @@
sent_directive = directive
brainwash(host_mob, sent_directive)
log_game("A mind control nanite program brainwashed [key_name(host_mob)] with the objective '[directive]'.")
- addtimer(CALLBACK(src, .proc/end_brainwashing), 600)
+ addtimer(CALLBACK(src, PROC_REF(end_brainwashing)), 600)
/datum/nanite_program/triggered/comm/mind_control/proc/end_brainwashing()
if(host_mob.mind && host_mob.mind.has_antag_datum(/datum/antagonist/brainwashed))
diff --git a/code/modules/research/nanites/public_chamber.dm b/code/modules/research/nanites/public_chamber.dm
index de10a43c0d..3dd60be2f4 100644
--- a/code/modules/research/nanites/public_chamber.dm
+++ b/code/modules/research/nanites/public_chamber.dm
@@ -45,9 +45,9 @@
//TODO OMINOUS MACHINE SOUNDS
set_busy(TRUE, "[initial(icon_state)]_raising")
- addtimer(CALLBACK(src, .proc/set_busy, TRUE, "[initial(icon_state)]_active"),20)
- addtimer(CALLBACK(src, .proc/set_busy, TRUE, "[initial(icon_state)]_falling"),60)
- addtimer(CALLBACK(src, .proc/complete_injection, locked_state, attacker),80)
+ addtimer(CALLBACK(src, PROC_REF(set_busy), TRUE, "[initial(icon_state)]_active"),20)
+ addtimer(CALLBACK(src, PROC_REF(set_busy), TRUE, "[initial(icon_state)]_falling"),60)
+ addtimer(CALLBACK(src, PROC_REF(complete_injection), locked_state, attacker),80)
/obj/machinery/public_nanite_chamber/proc/complete_injection(locked_state, mob/living/attacker)
//TODO MACHINE DING
@@ -72,9 +72,9 @@
locked = TRUE
set_busy(TRUE, "[initial(icon_state)]_raising")
- addtimer(CALLBACK(src, .proc/set_busy, TRUE, "[initial(icon_state)]_active"),20)
- addtimer(CALLBACK(src, .proc/set_busy, TRUE, "[initial(icon_state)]_falling"),40)
- addtimer(CALLBACK(src, .proc/complete_cloud_change, locked_state, attacker),60)
+ addtimer(CALLBACK(src, PROC_REF(set_busy), TRUE, "[initial(icon_state)]_active"),20)
+ addtimer(CALLBACK(src, PROC_REF(set_busy), TRUE, "[initial(icon_state)]_falling"),40)
+ addtimer(CALLBACK(src, PROC_REF(complete_cloud_change), locked_state, attacker),60)
/obj/machinery/public_nanite_chamber/proc/complete_cloud_change(locked_state, mob/living/attacker)
locked = locked_state
@@ -154,7 +154,7 @@
. = TRUE
- addtimer(CALLBACK(src, .proc/try_inject_nanites, attacker), 30) //If someone is shoved in give them a chance to get out before the injection starts
+ addtimer(CALLBACK(src, PROC_REF(try_inject_nanites), attacker), 30) //If someone is shoved in give them a chance to get out before the injection starts
/obj/machinery/public_nanite_chamber/proc/try_inject_nanites(mob/living/attacker)
if(occupant)
diff --git a/code/modules/research/rdmachines.dm b/code/modules/research/rdmachines.dm
index 55dcbcb951..0dc56cd5b1 100644
--- a/code/modules/research/rdmachines.dm
+++ b/code/modules/research/rdmachines.dm
@@ -103,4 +103,4 @@
stack_name = S.name
use_power(min(1000, (amount_inserted / 100)))
add_overlay("protolathe_[stack_name]")
- addtimer(CALLBACK(src, /atom/proc/cut_overlay, "protolathe_[stack_name]"), 10)
+ addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, cut_overlay), "protolathe_[stack_name]"), 10)
diff --git a/code/modules/research/server.dm b/code/modules/research/server.dm
index 0481b580ae..b0f9371dd3 100644
--- a/code/modules/research/server.dm
+++ b/code/modules/research/server.dm
@@ -64,7 +64,7 @@
if(. & EMP_PROTECT_SELF)
return
stat |= EMPED
- addtimer(CALLBACK(src, .proc/unemp), 600)
+ addtimer(CALLBACK(src, PROC_REF(unemp)), 600)
refresh_working()
/obj/machinery/rnd/server/proc/unemp()
diff --git a/code/modules/research/xenobiology/crossbreeding/_status_effects.dm b/code/modules/research/xenobiology/crossbreeding/_status_effects.dm
index f4aae84b78..27ba3e090f 100644
--- a/code/modules/research/xenobiology/crossbreeding/_status_effects.dm
+++ b/code/modules/research/xenobiology/crossbreeding/_status_effects.dm
@@ -66,7 +66,7 @@
var/icon/bluespace
/datum/status_effect/slimerecall/on_apply()
- RegisterSignal(owner, COMSIG_LIVING_RESIST, .proc/resistField)
+ RegisterSignal(owner, COMSIG_LIVING_RESIST, PROC_REF(resistField))
to_chat(owner, "I feel a sudden tug from an unknown force, and feel a pull to bluespace!")
to_chat(owner, "Resist if you wish avoid the force!")
bluespace = icon('icons/effects/effects.dmi',"chronofield")
@@ -98,7 +98,7 @@
var/obj/structure/ice_stasis/cube
/datum/status_effect/frozenstasis/on_apply()
- RegisterSignal(owner, COMSIG_LIVING_RESIST, .proc/breakCube)
+ RegisterSignal(owner, COMSIG_LIVING_RESIST, PROC_REF(breakCube))
cube = new /obj/structure/ice_stasis(get_turf(owner))
owner.forceMove(cube)
owner.status_flags |= GODMODE
diff --git a/code/modules/research/xenobiology/crossbreeding/burning.dm b/code/modules/research/xenobiology/crossbreeding/burning.dm
index d226a0d9e4..02316e519b 100644
--- a/code/modules/research/xenobiology/crossbreeding/burning.dm
+++ b/code/modules/research/xenobiology/crossbreeding/burning.dm
@@ -260,7 +260,7 @@ Burning extracts:
/obj/item/slimecross/burning/oil/do_effect(mob/user)
user.visible_message("[user] activates [src]. It's going to explode!", "I activate [src]. It crackles in anticipation")
- addtimer(CALLBACK(src, .proc/boom), 50)
+ addtimer(CALLBACK(src, PROC_REF(boom)), 50)
/obj/item/slimecross/burning/oil/proc/boom()
var/turf/T = get_turf(src)
diff --git a/code/modules/research/xenobiology/crossbreeding/charged.dm b/code/modules/research/xenobiology/crossbreeding/charged.dm
index c30f6d1d91..07c589943e 100644
--- a/code/modules/research/xenobiology/crossbreeding/charged.dm
+++ b/code/modules/research/xenobiology/crossbreeding/charged.dm
@@ -168,7 +168,7 @@ Charged extracts:
if(!istype(H))
to_chat(user, "I must be a humanoid to use this!")
return
- var/racechoice = input(H, "Choose your slime subspecies.", "Slime Selection") as null|anything in sortList(subtypesof(/datum/species/jelly), /proc/cmp_typepaths_asc)
+ var/racechoice = input(H, "Choose your slime subspecies.", "Slime Selection") as null|anything in sortList(subtypesof(/datum/species/jelly), GLOBAL_PROC_REF(cmp_typepaths_asc))
if(!racechoice)
to_chat(user, "I decide not to become a slime for now.")
return
@@ -195,7 +195,7 @@ Charged extracts:
/obj/item/slimecross/charged/gold/do_effect(mob/user)
user.visible_message("[src] starts shuddering violently!")
- addtimer(CALLBACK(src, .proc/startTimer), 50)
+ addtimer(CALLBACK(src, PROC_REF(startTimer)), 50)
/obj/item/slimecross/charged/gold/proc/startTimer()
START_PROCESSING(SSobj, src)
@@ -220,7 +220,7 @@ Charged extracts:
/obj/item/slimecross/charged/oil/do_effect(mob/user)
user.visible_message("[src] begins to shake with rapidly increasing force!")
- addtimer(CALLBACK(src, .proc/boom), 50)
+ addtimer(CALLBACK(src, PROC_REF(boom)), 50)
/obj/item/slimecross/charged/oil/proc/boom()
explosion(get_turf(src), 2, 3, 4) //Much smaller effect than normal oils, but devastatingly strong where it does hit.
diff --git a/code/modules/research/xenobiology/crossbreeding/chilling.dm b/code/modules/research/xenobiology/crossbreeding/chilling.dm
index 388af5384d..4ba81b0baa 100644
--- a/code/modules/research/xenobiology/crossbreeding/chilling.dm
+++ b/code/modules/research/xenobiology/crossbreeding/chilling.dm
@@ -284,7 +284,7 @@ Chilling extracts:
/obj/item/slimecross/chilling/oil/do_effect(mob/user)
user.visible_message("[src] begins to shake with muted intensity!")
- addtimer(CALLBACK(src, .proc/boom), 50)
+ addtimer(CALLBACK(src, PROC_REF(boom)), 50)
/obj/item/slimecross/chilling/oil/proc/boom()
explosion(get_turf(src), -1, -1, 10, 0) //Large radius, but mostly light damage, and no flash.
diff --git a/code/modules/research/xenobiology/crossbreeding/selfsustaining.dm b/code/modules/research/xenobiology/crossbreeding/selfsustaining.dm
index 6f56740e47..d3f8a4772a 100644
--- a/code/modules/research/xenobiology/crossbreeding/selfsustaining.dm
+++ b/code/modules/research/xenobiology/crossbreeding/selfsustaining.dm
@@ -32,7 +32,7 @@ Self-sustaining extracts:
return ..()
/obj/item/autoslime/attack_self(mob/user)
- var/reagentselect = input(user, "Choose the reagent the extract will produce.", "Self-sustaining Reaction") as null|anything in sortList(extract.activate_reagents, /proc/cmp_typepaths_asc)
+ var/reagentselect = input(user, "Choose the reagent the extract will produce.", "Self-sustaining Reaction") as null|anything in sortList(extract.activate_reagents, GLOBAL_PROC_REF(cmp_typepaths_asc))
var/amount = 5
var/secondary
diff --git a/code/modules/research/xenobiology/xenobio_camera.dm b/code/modules/research/xenobiology/xenobio_camera.dm
index 842c59060f..9a955d1b74 100644
--- a/code/modules/research/xenobiology/xenobio_camera.dm
+++ b/code/modules/research/xenobiology/xenobio_camera.dm
@@ -119,12 +119,12 @@
hotkey_help.Grant(user)
actions += hotkey_help
- RegisterSignal(user, COMSIG_XENO_SLIME_CLICK_CTRL, .proc/XenoSlimeClickCtrl)
- RegisterSignal(user, COMSIG_XENO_SLIME_CLICK_ALT, .proc/XenoSlimeClickAlt)
- RegisterSignal(user, COMSIG_XENO_SLIME_CLICK_SHIFT, .proc/XenoSlimeClickShift)
- RegisterSignal(user, COMSIG_XENO_TURF_CLICK_SHIFT, .proc/XenoTurfClickShift)
- RegisterSignal(user, COMSIG_XENO_TURF_CLICK_CTRL, .proc/XenoTurfClickCtrl)
- RegisterSignal(user, COMSIG_XENO_MONKEY_CLICK_CTRL, .proc/XenoMonkeyClickCtrl)
+ RegisterSignal(user, COMSIG_XENO_SLIME_CLICK_CTRL, PROC_REF(XenoSlimeClickCtrl))
+ RegisterSignal(user, COMSIG_XENO_SLIME_CLICK_ALT, PROC_REF(XenoSlimeClickAlt))
+ RegisterSignal(user, COMSIG_XENO_SLIME_CLICK_SHIFT, PROC_REF(XenoSlimeClickShift))
+ RegisterSignal(user, COMSIG_XENO_TURF_CLICK_SHIFT, PROC_REF(XenoTurfClickShift))
+ RegisterSignal(user, COMSIG_XENO_TURF_CLICK_CTRL, PROC_REF(XenoTurfClickCtrl))
+ RegisterSignal(user, COMSIG_XENO_MONKEY_CLICK_CTRL, PROC_REF(XenoMonkeyClickCtrl))
//Checks for recycler on every interact, prevents issues with load order on certain maps.
if(!connected_recycler)
diff --git a/code/modules/research/xenobiology/xenobiology.dm b/code/modules/research/xenobiology/xenobiology.dm
index 0655970650..1f7d252e8e 100644
--- a/code/modules/research/xenobiology/xenobiology.dm
+++ b/code/modules/research/xenobiology/xenobiology.dm
@@ -252,7 +252,7 @@
to_chat(user, "My glow is already enhanced!")
return
species.update_glow(user, 5)
- addtimer(CALLBACK(species, /datum/species/jelly/luminescent.proc/update_glow, user, LUMINESCENT_DEFAULT_GLOW), 600)
+ addtimer(CALLBACK(species, TYPE_PROC_REF(/datum/species/jelly/luminescent, update_glow), user, LUMINESCENT_DEFAULT_GLOW), 600)
to_chat(user, "I start glowing brighter.")
if(SLIME_ACTIVATE_MAJOR)
@@ -459,7 +459,7 @@
return
to_chat(user, "I feel my skin harden and become more resistant.")
species.armor += 25
- addtimer(CALLBACK(src, .proc/reset_armor, species), 1200)
+ addtimer(CALLBACK(src, PROC_REF(reset_armor), species), 1200)
return 450
if(SLIME_ACTIVATE_MAJOR)
diff --git a/code/modules/roguetown/roguecrafting/turfs.dm b/code/modules/roguetown/roguecrafting/turfs.dm
index 3dfc4714be..20544dcc04 100644
--- a/code/modules/roguetown/roguecrafting/turfs.dm
+++ b/code/modules/roguetown/roguecrafting/turfs.dm
@@ -10,10 +10,9 @@
/datum/crafting_recipe/roguetown/turfs/woodfloor/TurfCheck(mob/user, turf/T)
if(isclosedturf(T))
return
- if(!istype(T, /turf/open/floor/rogue/dirt))
+ if(!istype(T, /turf/open/floor/rogue))
if(!istype(T, /turf/open/transparent/openspace))
- if(!istype(T, /turf/open/floor/rogue/grass))
- return
+ return
return TRUE
/datum/crafting_recipe/roguetown/turfs/woodwall
@@ -52,10 +51,9 @@
/datum/crafting_recipe/roguetown/turfs/stonefloor/TurfCheck(mob/user, turf/T)
if(isclosedturf(T))
return
- if(!istype(T, /turf/open/floor/rogue/dirt))
+ if(!istype(T, /turf/open/floor/rogue))
if(!istype(T, /turf/open/transparent/openspace))
- if(!istype(T, /turf/open/floor/rogue/grass))
- return
+ return
return TRUE
/datum/crafting_recipe/roguetown/turfs/stonewall
@@ -130,4 +128,4 @@
return
if(!istype(T, /turf/open/floor/rogue))
return
- return ..()
\ No newline at end of file
+ return ..()
diff --git a/code/modules/roguetown/roguejobs/alchemist/recipe/reagents.dm b/code/modules/roguetown/roguejobs/alchemist/recipe/reagents.dm
index 755464e5fc..f5b5f103d0 100644
--- a/code/modules/roguetown/roguejobs/alchemist/recipe/reagents.dm
+++ b/code/modules/roguetown/roguejobs/alchemist/recipe/reagents.dm
@@ -73,7 +73,7 @@
else
if(setting_type)
if(step_away(X, T) && moving_power > 1)
- addtimer(CALLBACK(GLOBAL_PROC, .proc/_step_away, X, T), 2)
+ addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(_step_away), X, T), 2)
else
if(step_towards(X, T) && moving_power > 1)
- addtimer(CALLBACK(GLOBAL_PROC, .proc/_step_towards, X, T), 2)
+ addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(_step_towards), X, T), 2)
diff --git a/code/modules/roguetown/roguejobs/blacksmith/forge.dm b/code/modules/roguetown/roguejobs/blacksmith/forge.dm
index 62b43651b2..dc343358e0 100644
--- a/code/modules/roguetown/roguejobs/blacksmith/forge.dm
+++ b/code/modules/roguetown/roguejobs/blacksmith/forge.dm
@@ -16,7 +16,7 @@
if(T.hingot)
var/tyme = world.time
T.hott = tyme
- addtimer(CALLBACK(T, /obj/item/rogueweapon/tongs.proc/make_unhot, tyme), 100)
+ addtimer(CALLBACK(T, TYPE_PROC_REF(/obj/item/rogueweapon/tongs, make_unhot), tyme), 100)
T.update_icon()
user.visible_message("[user] heats the bar.")
return
diff --git a/code/modules/roguetown/roguejobs/blacksmith/smelter.dm b/code/modules/roguetown/roguejobs/blacksmith/smelter.dm
index 767dab8af7..abae497db0 100644
--- a/code/modules/roguetown/roguejobs/blacksmith/smelter.dm
+++ b/code/modules/roguetown/roguejobs/blacksmith/smelter.dm
@@ -31,7 +31,7 @@
if(on)
var/tyme = world.time
T.hott = tyme
- addtimer(CALLBACK(T, /obj/item/rogueweapon/tongs.proc/make_unhot, tyme), 50)
+ addtimer(CALLBACK(T, TYPE_PROC_REF(/obj/item/rogueweapon/tongs, make_unhot), tyme), 50)
T.update_icon()
return
if(on)
diff --git a/code/modules/roguetown/roguejobs/gravedigger/gravemarker.dm b/code/modules/roguetown/roguejobs/gravedigger/gravemarker.dm
index a422ff8bf0..bca254fdcf 100644
--- a/code/modules/roguetown/roguejobs/gravedigger/gravemarker.dm
+++ b/code/modules/roguetown/roguejobs/gravedigger/gravemarker.dm
@@ -45,29 +45,46 @@
to_chat(src, "My soul finds peace buried in creation.")
-/obj/structure/gravemarker/OnCrafted(dir)
+/obj/structure/gravemarker/OnCrafted(dir, user)
icon_state = "gravemarker[rand(1,3)]"
for(var/obj/structure/closet/dirthole/D in loc)
- bodysearch(D)
+ bodysearch(D, user)
for(var/obj/structure/closet/burial_shroud/B in D)
- bodysearch(B)
+ bodysearch(B, user)
..()
-/obj/structure/gravemarker/proc/bodysearch(atom/movable/AM)
+/obj/structure/gravemarker/proc/bodysearch(atom/movable/AM, mob/user)
if(!AM)
return
for(var/mob/living/L in AM)
if(L.stat == DEAD)
+ if(ishuman(L) && !HAS_TRAIT(L, TRAIT_BURIED_COIN_GIVEN))
+ var/mob/living/carbon/human/H = L
+ if(istype(H.mouth, /obj/item/roguecoin))
+ var/obj/item/roguecoin/coin = H.mouth
+ if(coin.quantity == 1) // no fucking stuffing their mouth full of a fuck ton of coins
+ for(var/obj/effect/landmark/underworld/A in GLOB.landmarks_list)
+ var/turf/T = get_turf(A)
+ T = locate(T.x + rand(-3, 3), T.y + rand(-3, 3), T.z)
+ new /obj/item/underworld/coin/notracking(T)
+ T.visible_message("A coin falls from above.")
+ ADD_TRAIT(H, TRAIT_BURIED_COIN_GIVEN, TRAIT_GENERIC)
+ if(user?.ckey)
+ adjust_playerquality(0.1, user.ckey)
+ qdel(H.mouth)
+ H.update_inv_mouth()
+ break
if(L.mind && L.mind.has_antag_datum(/datum/antagonist/zombie))
L.mind.remove_antag_datum(/datum/antagonist/zombie)
var/mob/dead/observer/O
//We probably went to the underworld
if(!L.client)
- var/client/friendo = GLOB.directory[lowertext(L.mind.key)]
- if(friendo && istype(friendo.mob, /mob/living/carbon/spirit))
- var/mob/living/carbon/spirit/lost_soul = friendo.mob
- lost_soul = L.ghostize(force_respawn = TRUE)
- qdel(lost_soul)
+ if(L.mind)
+ var/client/friendo = GLOB.directory[lowertext(L.mind.key)]
+ if(friendo && istype(friendo.mob, /mob/living/carbon/spirit))
+ var/mob/living/carbon/spirit/lost_soul = friendo.mob
+ lost_soul = L.ghostize(force_respawn = TRUE)
+ qdel(lost_soul)
else
O = L.ghostize(force_respawn = TRUE)
if(O)
diff --git a/code/modules/roguetown/roguemachine/steward.dm b/code/modules/roguetown/roguemachine/steward.dm
index e5d3d5e216..9c82df03a8 100644
--- a/code/modules/roguetown/roguemachine/steward.dm
+++ b/code/modules/roguetown/roguemachine/steward.dm
@@ -62,7 +62,7 @@
SStreasury.log_to_steward("-[amt] imported [D.name]")
scom_announce("Rockhill imports [D.name] for [amt] mammon.", )
D.raise_demand()
- addtimer(CALLBACK(src, .proc/do_import, D.type), 10 SECONDS)
+ addtimer(CALLBACK(src, PROC_REF(do_import), D.type), 10 SECONDS)
if(href_list["export"])
var/datum/roguestock/D = locate(href_list["export"]) in SStreasury.stockpile_datums
if(!D)
@@ -196,7 +196,7 @@
playsound(T, 'sound/misc/hiss.ogg', 100, FALSE, -1)
number += 1
testing("number2 is [number]")
- addtimer(CALLBACK(src, .proc/do_import, D.type, number), 3 SECONDS)
+ addtimer(CALLBACK(src, PROC_REF(do_import), D.type, number), 3 SECONDS)
/obj/structure/roguemachine/steward/attack_hand(mob/living/user)
. = ..()
diff --git a/code/modules/ruins/objects_and_mobs/necropolis_gate.dm b/code/modules/ruins/objects_and_mobs/necropolis_gate.dm
index 2230a0d779..b6c518505f 100644
--- a/code/modules/ruins/objects_and_mobs/necropolis_gate.dm
+++ b/code/modules/ruins/objects_and_mobs/necropolis_gate.dm
@@ -297,7 +297,7 @@ GLOBAL_DATUM(necropolis_gate, /obj/structure/necropolis_gate/legion_gate)
if(break_that_sucker)
QDEL_IN(src, 10)
else
- addtimer(CALLBACK(src, .proc/rebuild), 55)
+ addtimer(CALLBACK(src, PROC_REF(rebuild)), 55)
/obj/structure/stone_tile/proc/rebuild()
pixel_x = initial(pixel_x)
diff --git a/code/modules/ruins/objects_and_mobs/sin_ruins.dm b/code/modules/ruins/objects_and_mobs/sin_ruins.dm
index 50bf9b3e11..7f07ea7697 100644
--- a/code/modules/ruins/objects_and_mobs/sin_ruins.dm
+++ b/code/modules/ruins/objects_and_mobs/sin_ruins.dm
@@ -24,7 +24,7 @@
know it'll be worth it.")
icon_state = "slots2"
playsound(src, 'sound/blank.ogg', 50, FALSE)
- addtimer(CALLBACK(src, .proc/determine_victor, user), 50)
+ addtimer(CALLBACK(src, PROC_REF(determine_victor), user), 50)
/obj/structure/cursed_slot_machine/proc/determine_victor(mob/living/user)
icon_state = "slots1"
@@ -50,7 +50,7 @@
/obj/structure/cursed_money/Initialize()
. = ..()
- addtimer(CALLBACK(src, .proc/collapse), 600)
+ addtimer(CALLBACK(src, PROC_REF(collapse)), 600)
/obj/structure/cursed_money/proc/collapse()
visible_message("[src] falls in on itself, \
diff --git a/code/modules/security_levels/keycard_authentication.dm b/code/modules/security_levels/keycard_authentication.dm
index 16a038e4b3..9a573be60b 100644
--- a/code/modules/security_levels/keycard_authentication.dm
+++ b/code/modules/security_levels/keycard_authentication.dm
@@ -26,7 +26,7 @@ GLOBAL_DATUM_INIT(keycard_events, /datum/events, new)
/obj/machinery/keycard_auth/Initialize()
. = ..()
- ev = GLOB.keycard_events.addEvent("triggerEvent", CALLBACK(src, .proc/triggerEvent))
+ ev = GLOB.keycard_events.addEvent("triggerEvent", CALLBACK(src, PROC_REF(triggerEvent)))
/obj/machinery/keycard_auth/Destroy()
GLOB.keycard_events.clearEvent("triggerEvent", ev)
@@ -84,7 +84,7 @@ GLOBAL_DATUM_INIT(keycard_events, /datum/events, new)
event = event_type
waiting = 1
GLOB.keycard_events.fireEvent("triggerEvent", src)
- addtimer(CALLBACK(src, .proc/eventSent), 20)
+ addtimer(CALLBACK(src, PROC_REF(eventSent)), 20)
/obj/machinery/keycard_auth/proc/eventSent()
triggerer = null
@@ -94,7 +94,7 @@ GLOBAL_DATUM_INIT(keycard_events, /datum/events, new)
/obj/machinery/keycard_auth/proc/triggerEvent(source)
icon_state = "auth_on"
event_source = source
- addtimer(CALLBACK(src, .proc/eventTriggered), 20)
+ addtimer(CALLBACK(src, PROC_REF(eventTriggered)), 20)
/obj/machinery/keycard_auth/proc/eventTriggered()
icon_state = "auth_off"
diff --git a/code/modules/shuttle/arrivals.dm b/code/modules/shuttle/arrivals.dm
index 6afa840703..29de97c994 100644
--- a/code/modules/shuttle/arrivals.dm
+++ b/code/modules/shuttle/arrivals.dm
@@ -194,7 +194,7 @@
if(mode != SHUTTLE_CALL)
AnnounceArrival(mob, rank)
else
- LAZYADD(queued_announces, CALLBACK(GLOBAL_PROC, .proc/AnnounceArrival, mob, rank))
+ LAZYADD(queued_announces, CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(AnnounceArrival), mob, rank))
/obj/docking_port/mobile/arrivals/vv_edit_var(var_name, var_value)
switch(var_name)
diff --git a/code/modules/shuttle/navigation_computer.dm b/code/modules/shuttle/navigation_computer.dm
index 31c8bbdba6..c02edb8023 100644
--- a/code/modules/shuttle/navigation_computer.dm
+++ b/code/modules/shuttle/navigation_computer.dm
@@ -118,7 +118,7 @@
if(designate_time && (landing_clear != SHUTTLE_DOCKER_BLOCKED))
to_chat(current_user, "Targeting transit location, please wait [DisplayTimeText(designate_time)]...")
designating_target_loc = the_eye.loc
- var/wait_completed = do_after(current_user, designate_time, FALSE, designating_target_loc, TRUE, CALLBACK(src, /obj/machinery/computer/camera_advanced/shuttle_docker/proc/canDesignateTarget))
+ var/wait_completed = do_after(current_user, designate_time, FALSE, designating_target_loc, TRUE, CALLBACK(src, TYPE_PROC_REF(/obj/machinery/computer/camera_advanced/shuttle_docker, canDesignateTarget)))
designating_target_loc = null
if(!current_user)
return
diff --git a/code/modules/shuttle/on_move.dm b/code/modules/shuttle/on_move.dm
index d7f598131f..ddbfab9331 100644
--- a/code/modules/shuttle/on_move.dm
+++ b/code/modules/shuttle/on_move.dm
@@ -179,7 +179,7 @@ All ShuttleMove procs go here
for(var/obj/machinery/door/airlock/A in range(1, src)) // includes src
A.shuttledocked = FALSE
A.air_tight = TRUE
- INVOKE_ASYNC(A, /obj/machinery/door/.proc/close)
+ INVOKE_ASYNC(A, TYPE_PROC_REF(/obj/machinery/door, close))
/obj/machinery/door/airlock/afterShuttleMove(turf/oldT, list/movement_force, shuttle_dir, shuttle_preferred_direction, move_dir, rotation)
. = ..()
@@ -393,4 +393,4 @@ All ShuttleMove procs go here
/obj/effect/abstract/proximity_checker/onShuttleMove(turf/newT, turf/oldT, list/movement_force, move_dir, obj/docking_port/stationary/old_dock, obj/docking_port/mobile/moving_dock)
//timer so it only happens once
- addtimer(CALLBACK(monitor, /datum/proximity_monitor/proc/SetRange, monitor.current_range, TRUE), 0, TIMER_UNIQUE)
+ addtimer(CALLBACK(monitor, TYPE_PROC_REF(/datum/proximity_monitor, SetRange), monitor.current_range, TRUE), 0, TIMER_UNIQUE)
diff --git a/code/modules/shuttle/ripple.dm b/code/modules/shuttle/ripple.dm
index ff1e8f32f2..68f39dfc25 100644
--- a/code/modules/shuttle/ripple.dm
+++ b/code/modules/shuttle/ripple.dm
@@ -12,7 +12,7 @@
/obj/effect/abstract/ripple/Initialize(mapload, time_left)
. = ..()
animate(src, alpha=255, time=time_left)
- addtimer(CALLBACK(src, .proc/stop_animation), 8, TIMER_CLIENT_TIME)
+ addtimer(CALLBACK(src, PROC_REF(stop_animation)), 8, TIMER_CLIENT_TIME)
/obj/effect/abstract/ripple/proc/stop_animation()
icon_state = "shieldsparkles"
diff --git a/code/modules/shuttle/special.dm b/code/modules/shuttle/special.dm
index 14bd657f7e..80b2f6d0ef 100644
--- a/code/modules/shuttle/special.dm
+++ b/code/modules/shuttle/special.dm
@@ -94,7 +94,7 @@
L.visible_message("A strange purple glow wraps itself around [L] as [L.p_they()] suddenly fall[L.p_s()] unconscious.",
"[desc]")
// Don't let them sit suround unconscious forever
- addtimer(CALLBACK(src, .proc/sleeper_dreams, L), 100)
+ addtimer(CALLBACK(src, PROC_REF(sleeper_dreams), L), 100)
// Existing sleepers
for(var/i in found)
@@ -146,7 +146,7 @@
/mob/living/simple_animal/drone/snowflake/bardrone/Initialize()
. = ..()
access_card.access |= ACCESS_CENT_BAR
- RegisterSignal(src, COMSIG_ENTER_AREA, .proc/check_barstaff_godmode)
+ RegisterSignal(src, COMSIG_ENTER_AREA, PROC_REF(check_barstaff_godmode))
check_barstaff_godmode()
/mob/living/simple_animal/hostile/alien/maid/barmaid
@@ -166,7 +166,7 @@
access_card.access = C.get_access()
access_card.access |= ACCESS_CENT_BAR
ADD_TRAIT(access_card, TRAIT_NODROP, ABSTRACT_ITEM_TRAIT)
- RegisterSignal(src, COMSIG_ENTER_AREA, .proc/check_barstaff_godmode)
+ RegisterSignal(src, COMSIG_ENTER_AREA, PROC_REF(check_barstaff_godmode))
check_barstaff_godmode()
/mob/living/simple_animal/hostile/alien/maid/barmaid/Destroy()
diff --git a/code/modules/shuttle/supply.dm b/code/modules/shuttle/supply.dm
index eabfbaef2e..db9f504b4c 100644
--- a/code/modules/shuttle/supply.dm
+++ b/code/modules/shuttle/supply.dm
@@ -86,7 +86,7 @@ GLOBAL_LIST_INIT(blacklisted_cargo_types, typecacheof(list(
testing("docked away")
sell()
buy()
- addtimer(CALLBACK(SSshuttle, /datum/controller/subsystem/shuttle/.proc/moveShuttle, "supply", "supply_home", TRUE), 100)
+ addtimer(CALLBACK(SSshuttle, TYPE_PROC_REF(/datum/controller/subsystem/shuttle, moveShuttle), "supply", "supply_home", TRUE), 100)
/obj/docking_port/mobile/supply/proc/buy()
var/list/obj/cat_boxes = list()
diff --git a/code/modules/spells/roguetown/cleric.dm b/code/modules/spells/roguetown/cleric.dm
index 90ae0a83ca..e50d053b4e 100644
--- a/code/modules/spells/roguetown/cleric.dm
+++ b/code/modules/spells/roguetown/cleric.dm
@@ -177,7 +177,7 @@
return FALSE
L.adjust_fire_stacks(5)
L.IgniteMob()
- addtimer(CALLBACK(L, /mob/living/proc/ExtinguishMob), 4 SECONDS)
+ addtimer(CALLBACK(L, TYPE_PROC_REF(/mob/living, ExtinguishMob)), 4 SECONDS)
return TRUE
// Spell interaction with ignitable objects (burn wooden things, light torches up)
@@ -357,12 +357,12 @@
var/mob/living/carbon/spirit/capturedsoul = null
var/list/souloptions = list()
var/list/itemstorestore = list()
- for(var/mob/living/carbon/spirit/S in world)
+ for(var/mob/living/carbon/spirit/S in GLOB.mob_list)
souloptions += S.livingname
var/pickedsoul = input(user, "Which soul should I commune with?", "Available Souls") as null|anything in souloptions
if(!pickedsoul)
return
- for(var/mob/living/carbon/spirit/P in world)
+ for(var/mob/living/carbon/spirit/P in GLOB.mob_list)
if(P.livingname == pickedsoul)
to_chat(P, "You feel yourself being pulled out of the underworld.")
sleep(20)
@@ -383,7 +383,7 @@
spawn(1200)
to_chat(user, "The soul returns to the underworld.")
to_chat(capturedsoul, "You feel yourself being pulled back to the underworld.")
- for(var/obj/effect/landmark/underworld/A in world)
+ for(var/obj/effect/landmark/underworld/A in GLOB.landmarks_list)
capturedsoul.loc = A.loc
capturedsoul.invisibility = initial(capturedsoul.invisibility)
for(var/I in itemstorestore)
diff --git a/code/modules/spells/spell_types/aimed.dm b/code/modules/spells/spell_types/aimed.dm
index ddeba652b5..4ae996b1d9 100644
--- a/code/modules/spells/spell_types/aimed.dm
+++ b/code/modules/spells/spell_types/aimed.dm
@@ -169,7 +169,7 @@
/obj/effect/proc_holder/spell/aimed/spell_cards/on_activation(mob/M)
QDEL_NULL(lockon_component)
- lockon_component = M.AddComponent(/datum/component/lockon_aiming, 5, typecacheof(list(/mob/living)), 1, null, CALLBACK(src, .proc/on_lockon_component))
+ lockon_component = M.AddComponent(/datum/component/lockon_aiming, 5, typecacheof(list(/mob/living)), 1, null, CALLBACK(src, PROC_REF(on_lockon_component)))
/obj/effect/proc_holder/spell/aimed/spell_cards/proc/on_lockon_component(list/locked_weakrefs)
if(!length(locked_weakrefs))
diff --git a/code/modules/spells/spell_types/area_teleport.dm b/code/modules/spells/spell_types/area_teleport.dm
index fee0c3e947..c7ca962a1d 100644
--- a/code/modules/spells/spell_types/area_teleport.dm
+++ b/code/modules/spells/spell_types/area_teleport.dm
@@ -17,7 +17,7 @@
return
invocation(thearea,user)
if(charge_type == "recharge" && recharge)
- INVOKE_ASYNC(src, .proc/start_recharge)
+ INVOKE_ASYNC(src, PROC_REF(start_recharge))
cast(targets,thearea,user)
after_cast(targets)
diff --git a/code/modules/spells/spell_types/construct_spells.dm b/code/modules/spells/spell_types/construct_spells.dm
index 817a9c275f..3dd6db25fa 100644
--- a/code/modules/spells/spell_types/construct_spells.dm
+++ b/code/modules/spells/spell_types/construct_spells.dm
@@ -216,7 +216,7 @@
target.playsound_local(get_turf(target), 'sound/blank.ogg', 50, 1)
user.playsound_local(get_turf(user), 'sound/blank.ogg', 50, 1)
target.become_blind(ABYSSAL_GAZE_BLIND)
- addtimer(CALLBACK(src, .proc/cure_blindness, target), 40)
+ addtimer(CALLBACK(src, PROC_REF(cure_blindness), target), 40)
target.adjust_bodytemperature(-200)
/obj/effect/proc_holder/spell/targeted/abyssal_gaze/proc/cure_blindness(mob/target)
diff --git a/code/modules/spells/spell_types/devil.dm b/code/modules/spells/spell_types/devil.dm
index 4683363cf9..3879b3e503 100644
--- a/code/modules/spells/spell_types/devil.dm
+++ b/code/modules/spells/spell_types/devil.dm
@@ -161,7 +161,7 @@
client.eye = src
visible_message("[src] appears in a fiery blaze!")
playsound(get_turf(src), 'sound/blank.ogg', 100, TRUE, -1)
- addtimer(CALLBACK(src, .proc/fakefireextinguish), 15, TIMER_UNIQUE)
+ addtimer(CALLBACK(src, PROC_REF(fakefireextinguish)), 15, TIMER_UNIQUE)
/obj/effect/proc_holder/spell/targeted/sintouch
name = "Sin Touch"
diff --git a/code/modules/spells/spell_types/ethereal_jaunt.dm b/code/modules/spells/spell_types/ethereal_jaunt.dm
index d4c36fc85d..6661c76bae 100644
--- a/code/modules/spells/spell_types/ethereal_jaunt.dm
+++ b/code/modules/spells/spell_types/ethereal_jaunt.dm
@@ -20,7 +20,7 @@
/obj/effect/proc_holder/spell/targeted/ethereal_jaunt/cast(list/targets,mob/user = usr) //magnets, so mostly hardcoded
playsound(get_turf(user), 'sound/blank.ogg', 50, TRUE, -1)
for(var/mob/living/target in targets)
- INVOKE_ASYNC(src, .proc/do_jaunt, target)
+ INVOKE_ASYNC(src, PROC_REF(do_jaunt), target)
/obj/effect/proc_holder/spell/targeted/ethereal_jaunt/proc/do_jaunt(mob/living/target)
target.notransform = 1
diff --git a/code/modules/spells/spell_types/genetic.dm b/code/modules/spells/spell_types/genetic.dm
index 17480ee622..9b6e16540f 100644
--- a/code/modules/spells/spell_types/genetic.dm
+++ b/code/modules/spells/spell_types/genetic.dm
@@ -29,7 +29,7 @@
ADD_TRAIT(target, A, GENETICS_SPELL)
active_on += target
if(duration < charge_max)
- addtimer(CALLBACK(src, .proc/remove, target), duration, TIMER_OVERRIDE|TIMER_UNIQUE)
+ addtimer(CALLBACK(src, PROC_REF(remove), target), duration, TIMER_OVERRIDE|TIMER_UNIQUE)
/obj/effect/proc_holder/spell/targeted/genetic/Destroy()
. = ..()
diff --git a/code/modules/spells/spell_types/knock.dm b/code/modules/spells/spell_types/knock.dm
index 1e54f5ee55..341eae2ec2 100644
--- a/code/modules/spells/spell_types/knock.dm
+++ b/code/modules/spells/spell_types/knock.dm
@@ -16,9 +16,9 @@
SEND_SOUND(user, sound('sound/blank.ogg'))
for(var/turf/T in targets)
for(var/obj/machinery/door/door in T.contents)
- INVOKE_ASYNC(src, .proc/open_door, door)
+ INVOKE_ASYNC(src, PROC_REF(open_door), door)
for(var/obj/structure/closet/C in T.contents)
- INVOKE_ASYNC(src, .proc/open_closet, C)
+ INVOKE_ASYNC(src, PROC_REF(open_closet), C)
/obj/effect/proc_holder/spell/aoe_turf/knock/proc/open_door(obj/machinery/door/door)
if(istype(door, /obj/machinery/door/airlock))
diff --git a/code/modules/spells/spell_types/lichdom.dm b/code/modules/spells/spell_types/lichdom.dm
index 770c05984a..ee6aa7eabd 100644
--- a/code/modules/spells/spell_types/lichdom.dm
+++ b/code/modules/spells/spell_types/lichdom.dm
@@ -115,7 +115,7 @@
return
if(!mind.current || (mind.current && mind.current.stat == DEAD))
- addtimer(CALLBACK(src, .proc/rise), respawn_time, TIMER_UNIQUE)
+ addtimer(CALLBACK(src, PROC_REF(rise)), respawn_time, TIMER_UNIQUE)
/obj/item/phylactery/proc/rise()
if(mind.current && mind.current.stat != DEAD)
diff --git a/code/modules/spells/spell_types/mime.dm b/code/modules/spells/spell_types/mime.dm
index e4d16007d4..e763d78cc8 100644
--- a/code/modules/spells/spell_types/mime.dm
+++ b/code/modules/spells/spell_types/mime.dm
@@ -92,7 +92,7 @@
for (var/obj/item/storage/box/mime/B in T)
user.put_in_hands(B)
B.alpha = 255
- addtimer(CALLBACK(B, /obj/item/storage/box/mime/.proc/emptyStorage, FALSE), (summon_lifespan - 1))
+ addtimer(CALLBACK(B, TYPE_PROC_REF(/obj/item/storage/box/mime, emptyStorage), FALSE), (summon_lifespan - 1))
/obj/effect/proc_holder/spell/aoe_turf/conjure/mime_box/Click()
if(usr && usr.mind)
diff --git a/code/modules/spells/spell_types/spacetime_distortion.dm b/code/modules/spells/spell_types/spacetime_distortion.dm
index 4b355a25d0..4901d5728b 100644
--- a/code/modules/spells/spell_types/spacetime_distortion.dm
+++ b/code/modules/spells/spell_types/spacetime_distortion.dm
@@ -36,7 +36,7 @@
perform(turf_steps,user=user)
/obj/effect/proc_holder/spell/spacetime_dist/after_cast(list/targets)
- addtimer(CALLBACK(src, .proc/clean_turfs), duration)
+ addtimer(CALLBACK(src, PROC_REF(clean_turfs)), duration)
/obj/effect/proc_holder/spell/spacetime_dist/cast(list/targets, mob/user = usr)
effects = list()
diff --git a/code/modules/surgery/bodyparts/bodyparts.dm b/code/modules/surgery/bodyparts/bodyparts.dm
index 06e31d6e58..ed9bac7d5a 100644
--- a/code/modules/surgery/bodyparts/bodyparts.dm
+++ b/code/modules/surgery/bodyparts/bodyparts.dm
@@ -422,7 +422,8 @@
if(!animal_origin)
var/mob/living/carbon/human/H = C
should_draw_greyscale = FALSE
-
+ if(!H.dna || !H.dna.species)
+ return
var/datum/species/S = H.dna.species
species_id = S.limbs_id
if(H.gender == MALE)
diff --git a/code/modules/surgery/bodyparts/head.dm b/code/modules/surgery/bodyparts/head.dm
index a72e73703a..1468054ddb 100644
--- a/code/modules/surgery/bodyparts/head.dm
+++ b/code/modules/surgery/bodyparts/head.dm
@@ -170,6 +170,8 @@
else if(!animal_origin)
var/mob/living/carbon/human/H = C
+ if(!H.dna || !H.dna.species)
+ return ..()
var/datum/species/S = H.dna.species
//Facial hair
diff --git a/code/modules/surgery/organs/augments_chest.dm b/code/modules/surgery/organs/augments_chest.dm
index 0a5f1f4ffe..11f6dae890 100644
--- a/code/modules/surgery/organs/augments_chest.dm
+++ b/code/modules/surgery/organs/augments_chest.dm
@@ -23,7 +23,7 @@
synthesizing = TRUE
to_chat(owner, "I feel less hungry...")
owner.adjust_nutrition(50)
- addtimer(CALLBACK(src, .proc/synth_cool), 50)
+ addtimer(CALLBACK(src, PROC_REF(synth_cool)), 50)
/obj/item/organ/cyberimp/chest/nutriment/proc/synth_cool()
synthesizing = FALSE
@@ -57,7 +57,7 @@
/obj/item/organ/cyberimp/chest/reviver/on_life()
if(reviving)
if(owner.stat == UNCONSCIOUS)
- addtimer(CALLBACK(src, .proc/heal), 30)
+ addtimer(CALLBACK(src, PROC_REF(heal)), 30)
else
cooldown = revive_cost + world.time
reviving = FALSE
@@ -104,7 +104,7 @@
if(H.stat != DEAD && prob(50 / severity) && H.can_heartattack())
H.set_heartattack(TRUE)
to_chat(H, "I feel a horrible agony in my chest!")
- addtimer(CALLBACK(src, .proc/undo_heart_attack), 600 / severity)
+ addtimer(CALLBACK(src, PROC_REF(undo_heart_attack)), 600 / severity)
/obj/item/organ/cyberimp/chest/reviver/proc/undo_heart_attack()
var/mob/living/carbon/human/H = owner
@@ -151,7 +151,7 @@
on = TRUE
if(allow_thrust(0.01))
ion_trail.start()
- RegisterSignal(owner, COMSIG_MOVABLE_MOVED, .proc/move_react)
+ RegisterSignal(owner, COMSIG_MOVABLE_MOVED, PROC_REF(move_react))
owner.add_movespeed_modifier(MOVESPEED_ID_CYBER_THRUSTER, priority=100, multiplicative_slowdown=-2, movetypes=FLOATING, conflict=MOVE_CONFLICT_JETPACK)
if(!silent)
to_chat(owner, "I turn my thrusters set on.")
diff --git a/code/modules/surgery/organs/augments_internal.dm b/code/modules/surgery/organs/augments_internal.dm
index f14ffd952a..e6ea9d50b1 100644
--- a/code/modules/surgery/organs/augments_internal.dm
+++ b/code/modules/surgery/organs/augments_internal.dm
@@ -115,11 +115,11 @@
/obj/item/organ/cyberimp/brain/anti_stun/Insert()
. = ..()
- RegisterSignal(owner, signalCache, .proc/on_signal)
+ RegisterSignal(owner, signalCache, PROC_REF(on_signal))
/obj/item/organ/cyberimp/brain/anti_stun/proc/on_signal(datum/source, amount)
if(!(organ_flags & ORGAN_FAILING) && amount > 0)
- addtimer(CALLBACK(src, .proc/clear_stuns), stun_cap_amount, TIMER_UNIQUE|TIMER_OVERRIDE)
+ addtimer(CALLBACK(src, PROC_REF(clear_stuns)), stun_cap_amount, TIMER_UNIQUE|TIMER_OVERRIDE)
/obj/item/organ/cyberimp/brain/anti_stun/proc/clear_stuns()
if(owner || !(organ_flags & ORGAN_FAILING))
@@ -133,7 +133,7 @@
if((organ_flags & ORGAN_FAILING) || . & EMP_PROTECT_SELF)
return
organ_flags |= ORGAN_FAILING
- addtimer(CALLBACK(src, .proc/reboot), 90 / severity)
+ addtimer(CALLBACK(src, PROC_REF(reboot)), 90 / severity)
/obj/item/organ/cyberimp/brain/anti_stun/proc/reboot()
organ_flags &= ~ORGAN_FAILING
diff --git a/code/modules/surgery/organs/eyes.dm b/code/modules/surgery/organs/eyes.dm
index 396a53d1d5..6f2fd3b291 100644
--- a/code/modules/surgery/organs/eyes.dm
+++ b/code/modules/surgery/organs/eyes.dm
@@ -300,7 +300,7 @@
/obj/item/organ/eyes/robotic/glow/Insert(mob/living/carbon/M, special = FALSE, drop_if_replaced = FALSE)
. = ..()
- RegisterSignal(M, COMSIG_ATOM_DIR_CHANGE, .proc/update_visuals)
+ RegisterSignal(M, COMSIG_ATOM_DIR_CHANGE, PROC_REF(update_visuals))
/obj/item/organ/eyes/robotic/glow/Remove(mob/living/carbon/M, special = FALSE)
. = ..()
diff --git a/code/modules/surgery/organs/heart.dm b/code/modules/surgery/organs/heart.dm
index 4f221ab3c0..b08402772d 100644
--- a/code/modules/surgery/organs/heart.dm
+++ b/code/modules/surgery/organs/heart.dm
@@ -30,7 +30,7 @@
/obj/item/organ/heart/Remove(mob/living/carbon/M, special = 0)
..()
if(!special)
- addtimer(CALLBACK(src, .proc/stop_if_unowned), 120)
+ addtimer(CALLBACK(src, PROC_REF(stop_if_unowned)), 120)
/obj/item/organ/heart/proc/stop_if_unowned()
if(!owner)
@@ -42,7 +42,7 @@
user.visible_message("[user] squeezes [src] to \
make it beat again!","I squeeze [src] to make it beat again!")
Restart()
- addtimer(CALLBACK(src, .proc/stop_if_unowned), 80)
+ addtimer(CALLBACK(src, PROC_REF(stop_if_unowned)), 80)
/obj/item/organ/heart/proc/Stop()
beating = 0
@@ -199,7 +199,7 @@
if(. & EMP_PROTECT_SELF)
return
Stop()
- addtimer(CALLBACK(src, .proc/Restart), 20/severity SECONDS)
+ addtimer(CALLBACK(src, PROC_REF(Restart)), 20/severity SECONDS)
damage += 100/severity
/obj/item/organ/heart/cybernetic/on_life()
diff --git a/code/modules/surgery/organs/stomach.dm b/code/modules/surgery/organs/stomach.dm
index f61b300078..bf97455f44 100644
--- a/code/modules/surgery/organs/stomach.dm
+++ b/code/modules/surgery/organs/stomach.dm
@@ -106,8 +106,8 @@
/obj/item/organ/stomach/ethereal/Insert(mob/living/carbon/M, special = 0)
..()
- RegisterSignal(owner, COMSIG_PROCESS_BORGCHARGER_OCCUPANT, .proc/charge)
- RegisterSignal(owner, COMSIG_LIVING_ELECTROCUTE_ACT, .proc/on_electrocute)
+ RegisterSignal(owner, COMSIG_PROCESS_BORGCHARGER_OCCUPANT, PROC_REF(charge))
+ RegisterSignal(owner, COMSIG_LIVING_ELECTROCUTE_ACT, PROC_REF(on_electrocute))
/obj/item/organ/stomach/ethereal/Remove(mob/living/carbon/M, special = 0)
UnregisterSignal(owner, COMSIG_PROCESS_BORGCHARGER_OCCUPANT)
diff --git a/code/modules/surgery/organs/tongue.dm b/code/modules/surgery/organs/tongue.dm
index 73050f6438..82b6593df2 100644
--- a/code/modules/surgery/organs/tongue.dm
+++ b/code/modules/surgery/organs/tongue.dm
@@ -29,15 +29,15 @@
if(say_mod && M.dna && M.dna.species)
M.dna.species.say_mod = say_mod
if (modifies_speech)
- RegisterSignal(M, COMSIG_MOB_SAY, .proc/handle_speech)
+ RegisterSignal(M, COMSIG_MOB_SAY, PROC_REF(handle_speech))
M.UnregisterSignal(M, COMSIG_MOB_SAY)
/obj/item/organ/tongue/Remove(mob/living/carbon/M, special = 0)
..()
if(say_mod && M.dna && M.dna.species)
M.dna.species.say_mod = initial(M.dna.species.say_mod)
- UnregisterSignal(M, COMSIG_MOB_SAY, .proc/handle_speech)
- M.RegisterSignal(M, COMSIG_MOB_SAY, /mob/living/carbon/.proc/handle_tongueless_speech)
+ UnregisterSignal(M, COMSIG_MOB_SAY, PROC_REF(handle_speech))
+ M.RegisterSignal(M, COMSIG_MOB_SAY, TYPE_PROC_REF(/mob/living/carbon, handle_tongueless_speech))
/obj/item/organ/tongue/could_speak_in_language(datum/language/dt)
return is_type_in_typecache(dt, languages_possible)
diff --git a/code/modules/surgery/organs/vocal_cords.dm b/code/modules/surgery/organs/vocal_cords.dm
index 9de4745ede..9405e2b5b5 100644
--- a/code/modules/surgery/organs/vocal_cords.dm
+++ b/code/modules/surgery/organs/vocal_cords.dm
@@ -406,7 +406,7 @@
for(var/iter in 1 to 5 * power_multiplier)
for(var/V in listeners)
var/mob/living/L = V
- addtimer(CALLBACK(GLOBAL_PROC, .proc/_step, L, direction? direction : pick(GLOB.cardinals)), 10 * (iter - 1))
+ addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(_step), L, direction? direction : pick(GLOB.cardinals)), 10 * (iter - 1))
//WALK
else if((findtext(message, walk_words)))
@@ -428,32 +428,32 @@
else if((findtext(message, helpintent_words)))
cooldown = COOLDOWN_MEME
for(var/mob/living/carbon/human/H in listeners)
- addtimer(CALLBACK(H, /mob/verb/a_intent_change, INTENT_HELP), i * 2)
- addtimer(CALLBACK(H, /mob/proc/click_random_mob), i * 2)
+ addtimer(CALLBACK(H, TYPE_VERB_REF(/mob, a_intent_change), INTENT_HELP), i * 2)
+ addtimer(CALLBACK(H, TYPE_PROC_REF(/mob, click_random_mob)), i * 2)
i++
//DISARM INTENT
else if((findtext(message, disarmintent_words)))
cooldown = COOLDOWN_MEME
for(var/mob/living/carbon/human/H in listeners)
- addtimer(CALLBACK(H, /mob/verb/a_intent_change, INTENT_DISARM), i * 2)
- addtimer(CALLBACK(H, /mob/proc/click_random_mob), i * 2)
+ addtimer(CALLBACK(H, TYPE_VERB_REF(/mob, a_intent_change), INTENT_DISARM), i * 2)
+ addtimer(CALLBACK(H, TYPE_PROC_REF(/mob, click_random_mob)), i * 2)
i++
//GRAB INTENT
else if((findtext(message, grabintent_words)))
cooldown = COOLDOWN_MEME
for(var/mob/living/carbon/human/H in listeners)
- addtimer(CALLBACK(H, /mob/verb/a_intent_change, INTENT_GRAB), i * 2)
- addtimer(CALLBACK(H, /mob/proc/click_random_mob), i * 2)
+ addtimer(CALLBACK(H, TYPE_VERB_REF(/mob, a_intent_change), INTENT_GRAB), i * 2)
+ addtimer(CALLBACK(H, TYPE_PROC_REF(/mob, click_random_mob)), i * 2)
i++
//HARM INTENT
else if((findtext(message, harmintent_words)))
cooldown = COOLDOWN_MEME
for(var/mob/living/carbon/human/H in listeners)
- addtimer(CALLBACK(H, /mob/verb/a_intent_change, INTENT_HARM), i * 2)
- addtimer(CALLBACK(H, /mob/proc/click_random_mob), i * 2)
+ addtimer(CALLBACK(H, TYPE_VERB_REF(/mob, a_intent_change), INTENT_HARM), i * 2)
+ addtimer(CALLBACK(H, TYPE_PROC_REF(/mob, click_random_mob)), i * 2)
i++
//THROW/CATCH
@@ -507,7 +507,7 @@
cooldown = COOLDOWN_MEME
for(var/V in listeners)
var/mob/living/L = V
- addtimer(CALLBACK(L, /mob/living/.proc/emote, "dance"), 5 * i)
+ addtimer(CALLBACK(L, TYPE_PROC_REF(/mob/living, emote), "dance"), 5 * i)
i++
//JUMP
@@ -517,7 +517,7 @@
var/mob/living/L = V
if(prob(25))
addtimer(CALLBACK(L, /atom/movable/, "HOW HIGH?!!"), 5 * i)
- addtimer(CALLBACK(L, /mob/living/.proc/emote, "jump"), 5 * i)
+ addtimer(CALLBACK(L, TYPE_PROC_REF(/mob/living, emote), "jump"), 5 * i)
i++
//SALUTE
@@ -525,7 +525,7 @@
cooldown = COOLDOWN_MEME
for(var/V in listeners)
var/mob/living/L = V
- addtimer(CALLBACK(L, /mob/living/.proc/emote, "salute"), 5 * i)
+ addtimer(CALLBACK(L, TYPE_PROC_REF(/mob/living, emote), "salute"), 5 * i)
i++
//PLAY DEAD
@@ -533,7 +533,7 @@
cooldown = COOLDOWN_MEME
for(var/V in listeners)
var/mob/living/L = V
- addtimer(CALLBACK(L, /mob/living/.proc/emote, "deathgasp"), 5 * i)
+ addtimer(CALLBACK(L, TYPE_PROC_REF(/mob/living, emote), "deathgasp"), 5 * i)
i++
//PLEASE CLAP
@@ -541,13 +541,13 @@
cooldown = COOLDOWN_MEME
for(var/V in listeners)
var/mob/living/L = V
- addtimer(CALLBACK(L, /mob/living/.proc/emote, "clap"), 5 * i)
+ addtimer(CALLBACK(L, TYPE_PROC_REF(/mob/living, emote), "clap"), 5 * i)
i++
//HONK
else if((findtext(message, honk_words)))
cooldown = COOLDOWN_MEME
- addtimer(CALLBACK(GLOBAL_PROC, .proc/playsound, get_turf(user), 'sound/blank.ogg', 300, 1), 25)
+ addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(playsound), get_turf(user), 'sound/blank.ogg', 300, 1), 25)
if(user.mind && user.mind.assigned_role == "Clown")
for(var/mob/living/carbon/C in listeners)
C.slip(140 * power_multiplier)
diff --git a/code/modules/tooltip/tooltip.dm b/code/modules/tooltip/tooltip.dm
index 216b21bda4..af54b797e9 100644
--- a/code/modules/tooltip/tooltip.dm
+++ b/code/modules/tooltip/tooltip.dm
@@ -88,7 +88,7 @@ Notes:
/datum/tooltip/proc/hide()
if (queueHide)
- addtimer(CALLBACK(src, .proc/do_hide), 1)
+ addtimer(CALLBACK(src, PROC_REF(do_hide)), 1)
else
do_hide()
diff --git a/code/modules/underworld/underworld.dm b/code/modules/underworld/underworld.dm
index 4c966edaba..6159a27f2d 100644
--- a/code/modules/underworld/underworld.dm
+++ b/code/modules/underworld/underworld.dm
@@ -10,7 +10,7 @@
if(D.buried && D.funeral)
D.returntolobby()
return
- for(var/obj/effect/landmark/underworld/A in world)
+ for(var/obj/effect/landmark/underworld/A in GLOB.landmarks_list)
var/mob/living/carbon/spirit/O = new /mob/living/carbon/spirit(A.loc)
O.livingname = mob.name
O.ckey = ckey
@@ -57,15 +57,6 @@
qdel(src)
return
-/proc/coin_upkeep()
- var/amountinworld = 0
- for(var/obj/item/underworld/coin/A in world)
- amountinworld += 1
- if(amountinworld < 3)
- for(var/obj/effect/landmark/underworldcoin/B in world)
- new /obj/item/underworld/coin(B.loc)
-
-
// shit that eventually will need moved elsewhere
/obj/item/flashlight/lantern/shrunken
name = "shrunken lamp"
@@ -157,20 +148,48 @@
else
to_chat(user, "It's LOCKED.")
+GLOBAL_LIST_EMPTY(underworld_coins)
+
/obj/item/underworld/coin
name = "The Toll"
desc = "This is more than just a coin."
icon = 'icons/roguetown/underworld/enigma_husks.dmi'
icon_state = "soultoken_floor"
+ var/should_track = TRUE
+
+/obj/item/underworld/coin/Initialize()
+ . = ..()
+ if(should_track)
+ GLOB.underworld_coins |= src
+
+/obj/item/underworld/coin/Destroy()
+ if(should_track)
+ GLOB.underworld_coins -= src
+ coin_upkeep()
+ return ..()
/obj/item/underworld/coin/pickup(mob/user)
..()
+ if(should_track)
+ GLOB.underworld_coins -= src
+ coin_upkeep()
icon_state = "soultoken"
/obj/item/underworld/coin/dropped(mob/user)
..()
+ if(should_track)
+ GLOB.underworld_coins |= src
icon_state = "soultoken_floor"
+/obj/item/underworld/coin/notracking
+ should_track = FALSE
+
+/proc/coin_upkeep()
+ if(length(GLOB.underworld_coins) < 3)
+ for(var/obj/effect/landmark/underworldcoin/B in GLOB.landmarks_list)
+ new /obj/item/underworld/coin(B.loc)
+
+
// why not also some mob stuff too
/mob/living/simple_animal/hostile/rogue/demon
name = "demon"
diff --git a/code/modules/vehicles/cars/car.dm b/code/modules/vehicles/cars/car.dm
index 20965de170..edda57a304 100644
--- a/code/modules/vehicles/cars/car.dm
+++ b/code/modules/vehicles/cars/car.dm
@@ -80,7 +80,7 @@
if(occupant_amount() >= max_occupants)
return FALSE
var/atom/old_loc = loc
- if(do_mob(forcer, M, get_enter_delay(M), extra_checks=CALLBACK(src, /obj/vehicle/sealed/car/proc/is_car_stationary, old_loc)))
+ if(do_mob(forcer, M, get_enter_delay(M), extra_checks=CALLBACK(src, TYPE_PROC_REF(/obj/vehicle/sealed/car, is_car_stationary), old_loc)))
mob_forced_enter(M, silent)
return TRUE
return FALSE
diff --git a/code/modules/vehicles/cars/clowncar.dm b/code/modules/vehicles/cars/clowncar.dm
index 600b7569ed..420cab5761 100644
--- a/code/modules/vehicles/cars/clowncar.dm
+++ b/code/modules/vehicles/cars/clowncar.dm
@@ -27,7 +27,7 @@
var/mob/living/carbon/human/H = M
if(H.mind && H.mind.assigned_role == "Clown") //Ensures only clowns can drive the car. (Including more at once)
add_control_flags(H, VEHICLE_CONTROL_DRIVE|VEHICLE_CONTROL_PERMISSION)
- RegisterSignal(H, COMSIG_MOB_CLICKON, .proc/FireCannon)
+ RegisterSignal(H, COMSIG_MOB_CLICKON, PROC_REF(FireCannon))
M.log_message("has entered [src] as a possible driver", LOG_ATTACK)
return
add_control_flags(M, VEHICLE_CONTROL_KIDNAPPED)
@@ -125,7 +125,7 @@
visible_message("[user] presses one of the colorful buttons on [src], and the clown car turns on its singularity disguise system.")
icon = 'icons/obj/singularity.dmi'
icon_state = "singularity_s1"
- addtimer(CALLBACK(src, .proc/ResetIcon), 100)
+ addtimer(CALLBACK(src, PROC_REF(ResetIcon)), 100)
if(4)
visible_message("[user] presses one of the colorful buttons on [src], and the clown car spews out a cloud of laughing gas.")
var/datum/reagents/R = new/datum/reagents(300)
@@ -138,7 +138,7 @@
if(5)
visible_message("[user] presses one of the colorful buttons on [src], and the clown car starts dropping an oil trail.")
droppingoil = TRUE
- addtimer(CALLBACK(src, .proc/StopDroppingOil), 30)
+ addtimer(CALLBACK(src, PROC_REF(StopDroppingOil)), 30)
if(6)
visible_message("[user] presses one of the colorful buttons on [src], and the clown car lets out a comedic toot.")
playsound(src, 'sound/blank.ogg', 100)
@@ -160,7 +160,7 @@
cannonmode = FALSE
flick("clowncar_fromfire", src)
icon_state = "clowncar"
- addtimer(CALLBACK(src, .proc/LeaveCannonMode), 20)
+ addtimer(CALLBACK(src, PROC_REF(LeaveCannonMode)), 20)
playsound(src, 'sound/blank.ogg', 75)
visible_message("The [src] starts going back into mobile mode.")
else
@@ -168,7 +168,7 @@
flick("clowncar_tofire", src)
icon_state = "clowncar_fire"
visible_message("The [src] opens up and reveals a large cannon.")
- addtimer(CALLBACK(src, .proc/EnterCannonMode), 20)
+ addtimer(CALLBACK(src, PROC_REF(EnterCannonMode)), 20)
playsound(src, 'sound/blank.ogg', 75)
diff --git a/code/modules/vehicles/scooter.dm b/code/modules/vehicles/scooter.dm
index 969ccedf5c..751b3393fd 100644
--- a/code/modules/vehicles/scooter.dm
+++ b/code/modules/vehicles/scooter.dm
@@ -141,7 +141,7 @@
if(location)
location.hotspot_expose(1000,1000)
sparks.start() //the most radical way to start plasma fires
- addtimer(CALLBACK(src, .proc/grind), 2)
+ addtimer(CALLBACK(src, PROC_REF(grind)), 2)
return
else
grinding = FALSE
diff --git a/code/modules/vehicles/vehicle_actions.dm b/code/modules/vehicles/vehicle_actions.dm
index 872b04cf18..f2de97759c 100644
--- a/code/modules/vehicles/vehicle_actions.dm
+++ b/code/modules/vehicles/vehicle_actions.dm
@@ -226,5 +226,5 @@
if(locate(/obj/structure/table) in V.loc.contents)
V.grinding = TRUE
V.icon_state = "[V.board_icon]-grind"
- addtimer(CALLBACK(V, /obj/vehicle/ridden/scooter/skateboard/.proc/grind), 2)
+ addtimer(CALLBACK(V, TYPE_PROC_REF(/obj/vehicle/ridden/scooter/skateboard, grind)), 2)
next_ollie = world.time + 5
diff --git a/code/modules/vehicles/wheelchair.dm b/code/modules/vehicles/wheelchair.dm
index 726043c82d..47efe81e2e 100644
--- a/code/modules/vehicles/wheelchair.dm
+++ b/code/modules/vehicles/wheelchair.dm
@@ -23,7 +23,7 @@
/obj/vehicle/ridden/wheelchair/ComponentInitialize() //Since it's technically a chair I want it to have chair properties
. = ..()
- AddComponent(/datum/component/simple_rotation,ROTATION_ALTCLICK | ROTATION_CLOCKWISE, CALLBACK(src, .proc/can_user_rotate),CALLBACK(src, .proc/can_be_rotated),null)
+ AddComponent(/datum/component/simple_rotation,ROTATION_ALTCLICK | ROTATION_CLOCKWISE, CALLBACK(src, PROC_REF(can_user_rotate)),CALLBACK(src, PROC_REF(can_be_rotated)),null)
/obj/vehicle/ridden/wheelchair/obj_destruction(damage_flag)
new /obj/item/stack/rods(drop_location(), 1)
diff --git a/code/modules/zombie/organs.dm b/code/modules/zombie/organs.dm
index cb19a1ff8b..b606b34199 100644
--- a/code/modules/zombie/organs.dm
+++ b/code/modules/zombie/organs.dm
@@ -65,7 +65,7 @@
not even death can stop, you will rise again!")
var/revive_time = rand(revive_time_min, revive_time_max)
var/flags = TIMER_STOPPABLE
- timer_id = addtimer(CALLBACK(src, .proc/zombify), revive_time, flags)
+ timer_id = addtimer(CALLBACK(src, PROC_REF(zombify)), revive_time, flags)
/obj/item/organ/zombie_infection/proc/zombify()
timer_id = null
diff --git a/roguetown.dme b/roguetown.dme
index 40358b082b..e92ee575d5 100644
--- a/roguetown.dme
+++ b/roguetown.dme
@@ -8,6 +8,7 @@
// END_PREFERENCES
// BEGIN_INCLUDE
#include "_maps\_basemap.dm"
+#include "code\__byond_version_compat.dm"
#include "code\_compile_options.dm"
#include "code\rt.dm"
#include "code\world.dm"
@@ -2104,6 +2105,7 @@
#include "code\modules\jobs\job_types\roguetown\adventurer\types\combat\rogue.dm"
#include "code\modules\jobs\job_types\roguetown\adventurer\types\combat\sorceress.dm"
#include "code\modules\jobs\job_types\roguetown\adventurer\types\combat\warrior.dm"
+#include "code\modules\jobs\job_types\roguetown\adventurer\types\combat\donator\dwarfwarrior.dm"
#include "code\modules\jobs\job_types\roguetown\adventurer\types\combat\donator\grenzelhoft.dm"
#include "code\modules\jobs\job_types\roguetown\adventurer\types\combat\donator\paladin.dm"
#include "code\modules\jobs\job_types\roguetown\adventurer\types\combat\donator\vaquero.dm"