diff --git a/_maps/RandomRuins/LavaRuins/lavaland_biodome_clown_planet.dmm b/_maps/RandomRuins/LavaRuins/lavaland_biodome_clown_planet.dmm
index 9b7ca819cc..639d63772c 100644
--- a/_maps/RandomRuins/LavaRuins/lavaland_biodome_clown_planet.dmm
+++ b/_maps/RandomRuins/LavaRuins/lavaland_biodome_clown_planet.dmm
@@ -49,7 +49,7 @@
},
/turf/open/indestructible{
icon_state = "darkfull";
- wet = 8
+ wet = 16
},
/area/ruin/powered/clownplanet)
"as" = (
@@ -70,7 +70,7 @@
},
/turf/open/indestructible{
icon_state = "darkfull";
- wet = 8
+ wet = 16
},
/area/ruin/powered/clownplanet)
"at" = (
@@ -89,7 +89,7 @@
},
/turf/open/indestructible{
icon_state = "darkfull";
- wet = 8
+ wet = 16
},
/area/ruin/powered/clownplanet)
"au" = (
@@ -129,7 +129,7 @@
},
/turf/open/indestructible{
icon_state = "darkfull";
- wet = 8
+ wet = 16
},
/area/ruin/powered/clownplanet)
"ay" = (
@@ -149,7 +149,7 @@
},
/turf/open/indestructible{
icon_state = "darkfull";
- wet = 8
+ wet = 16
},
/area/ruin/powered/clownplanet)
"az" = (
@@ -170,7 +170,7 @@
},
/turf/open/indestructible{
icon_state = "darkfull";
- wet = 8
+ wet = 16
},
/area/ruin/powered/clownplanet)
"aA" = (
@@ -190,7 +190,7 @@
},
/turf/open/indestructible{
icon_state = "darkfull";
- wet = 8
+ wet = 16
},
/area/ruin/powered/clownplanet)
"aB" = (
@@ -209,7 +209,7 @@
},
/turf/open/indestructible{
icon_state = "darkfull";
- wet = 8
+ wet = 16
},
/area/ruin/powered/clownplanet)
"aC" = (
@@ -225,7 +225,7 @@
},
/turf/open/indestructible{
icon_state = "darkfull";
- wet = 8
+ wet = 16
},
/area/ruin/powered/clownplanet)
"aD" = (
@@ -242,7 +242,7 @@
},
/turf/open/indestructible{
icon_state = "darkfull";
- wet = 8
+ wet = 16
},
/area/ruin/powered/clownplanet)
"aE" = (
@@ -261,7 +261,7 @@
},
/turf/open/indestructible{
icon_state = "darkfull";
- wet = 8
+ wet = 16
},
/area/ruin/powered/clownplanet)
"aF" = (
@@ -282,7 +282,7 @@
},
/turf/open/indestructible{
icon_state = "darkfull";
- wet = 8
+ wet = 16
},
/area/ruin/powered/clownplanet)
"aG" = (
@@ -301,7 +301,7 @@
},
/turf/open/indestructible{
icon_state = "darkfull";
- wet = 8
+ wet = 16
},
/area/ruin/powered/clownplanet)
"aH" = (
@@ -321,7 +321,7 @@
},
/turf/open/indestructible{
icon_state = "darkfull";
- wet = 8
+ wet = 16
},
/area/ruin/powered/clownplanet)
"aI" = (
@@ -341,7 +341,7 @@
},
/turf/open/indestructible{
icon_state = "darkfull";
- wet = 8
+ wet = 16
},
/area/ruin/powered/clownplanet)
"aJ" = (
@@ -368,7 +368,7 @@
},
/turf/open/indestructible{
icon_state = "darkfull";
- wet = 8
+ wet = 16
},
/area/ruin/powered/clownplanet)
"aL" = (
@@ -394,7 +394,7 @@
},
/turf/open/indestructible{
icon_state = "darkfull";
- wet = 8
+ wet = 16
},
/area/ruin/powered/clownplanet)
"aO" = (
@@ -415,7 +415,7 @@
},
/turf/open/indestructible{
icon_state = "darkfull";
- wet = 8
+ wet = 16
},
/area/ruin/powered/clownplanet)
"aP" = (
@@ -448,7 +448,7 @@
},
/turf/open/indestructible{
icon_state = "darkfull";
- wet = 8
+ wet = 16
},
/area/ruin/powered/clownplanet)
"aU" = (
@@ -472,7 +472,7 @@
},
/turf/open/indestructible{
icon_state = "darkfull";
- wet = 8
+ wet = 16
},
/area/ruin/powered/clownplanet)
"aW" = (
@@ -493,7 +493,7 @@
},
/turf/open/indestructible{
icon_state = "darkfull";
- wet = 8
+ wet = 16
},
/area/ruin/powered/clownplanet)
"aX" = (
@@ -522,7 +522,7 @@
},
/turf/open/indestructible{
icon_state = "darkfull";
- wet = 8
+ wet = 16
},
/area/ruin/powered/clownplanet)
"aZ" = (
@@ -542,7 +542,7 @@
},
/turf/open/indestructible{
icon_state = "darkfull";
- wet = 8
+ wet = 16
},
/area/ruin/powered/clownplanet)
"ba" = (
@@ -559,7 +559,7 @@
},
/turf/open/indestructible{
icon_state = "darkfull";
- wet = 8
+ wet = 16
},
/area/ruin/powered/clownplanet)
"bb" = (
@@ -588,7 +588,7 @@
},
/turf/open/indestructible{
icon_state = "darkfull";
- wet = 8
+ wet = 16
},
/area/ruin/powered/clownplanet)
"bd" = (
@@ -631,7 +631,7 @@
},
/turf/open/indestructible{
icon_state = "darkfull";
- wet = 8
+ wet = 16
},
/area/ruin/powered/clownplanet)
"bg" = (
@@ -732,7 +732,7 @@
},
/turf/open/indestructible{
icon_state = "darkfull";
- wet = 8
+ wet = 16
},
/area/ruin/powered/clownplanet)
"bt" = (
@@ -758,7 +758,7 @@
},
/turf/open/indestructible{
icon_state = "darkfull";
- wet = 8
+ wet = 16
},
/area/ruin/powered/clownplanet)
"bx" = (
@@ -775,7 +775,7 @@
},
/turf/open/indestructible{
icon_state = "darkfull";
- wet = 8
+ wet = 16
},
/area/ruin/powered/clownplanet)
"by" = (
@@ -792,7 +792,7 @@
},
/turf/open/indestructible{
icon_state = "darkfull";
- wet = 8
+ wet = 16
},
/area/ruin/powered/clownplanet)
"bz" = (
@@ -817,7 +817,7 @@
},
/turf/open/indestructible{
icon_state = "darkfull";
- wet = 8
+ wet = 16
},
/area/ruin/powered/clownplanet)
"bB" = (
@@ -825,7 +825,7 @@
icon_state = "bananium";
name = "bananium floor";
sound = 'sound/effects/clownstep1.ogg';
- wet = 8
+ wet = 16
},
/area/ruin/powered/clownplanet)
"bC" = (
@@ -846,7 +846,7 @@
},
/turf/open/indestructible{
icon_state = "darkfull";
- wet = 8
+ wet = 16
},
/area/ruin/powered/clownplanet)
"bD" = (
@@ -872,7 +872,7 @@
icon_state = "bananium";
name = "bananium floor";
sound = 'sound/effects/clownstep1.ogg';
- wet = 8
+ wet = 16
},
/area/ruin/powered/clownplanet)
"bH" = (
@@ -881,7 +881,7 @@
icon_state = "bananium";
name = "bananium floor";
sound = 'sound/effects/clownstep1.ogg';
- wet = 8
+ wet = 16
},
/area/ruin/powered/clownplanet)
"bI" = (
@@ -899,7 +899,7 @@
},
/turf/open/indestructible{
icon_state = "darkfull";
- wet = 8
+ wet = 16
},
/area/ruin/powered/clownplanet)
"bK" = (
@@ -918,7 +918,7 @@
},
/turf/open/indestructible{
icon_state = "darkfull";
- wet = 8
+ wet = 16
},
/area/ruin/powered/clownplanet)
"bL" = (
@@ -942,7 +942,7 @@
icon_state = "bananium";
name = "bananium floor";
sound = 'sound/effects/clownstep1.ogg';
- wet = 8
+ wet = 16
},
/area/ruin/powered/clownplanet)
"bP" = (
@@ -970,8 +970,8 @@
/turf/open/floor/carpet,
/area/ruin/powered/clownplanet)
"bT" = (
-/obj/item/slime_extract/rainbow,
/obj/structure/table/glass,
+/obj/item/reagent_containers/spray/waterflower/superlube,
/turf/open/floor/carpet,
/area/ruin/powered/clownplanet)
"bU" = (
@@ -989,7 +989,7 @@
icon_state = "bananium";
name = "bananium floor";
sound = 'sound/effects/clownstep1.ogg';
- wet = 8
+ wet = 16
},
/area/ruin/powered/clownplanet)
"bY" = (
@@ -999,7 +999,7 @@
icon_state = "bananium";
name = "bananium floor";
sound = 'sound/effects/clownstep1.ogg';
- wet = 8
+ wet = 16
},
/area/ruin/powered/clownplanet)
"bZ" = (
@@ -1008,7 +1008,7 @@
icon_state = "bananium";
name = "bananium floor";
sound = 'sound/effects/clownstep1.ogg';
- wet = 8
+ wet = 16
},
/area/ruin/powered/clownplanet)
"ca" = (
@@ -1018,7 +1018,7 @@
icon_state = "bananium";
name = "bananium floor";
sound = 'sound/effects/clownstep1.ogg';
- wet = 8
+ wet = 16
},
/area/ruin/powered/clownplanet)
"cc" = (
@@ -1052,7 +1052,7 @@
},
/turf/open/indestructible{
icon_state = "darkfull";
- wet = 8
+ wet = 16
},
/area/ruin/powered/clownplanet)
"dC" = (
@@ -1075,7 +1075,7 @@
},
/turf/open/indestructible{
icon_state = "darkfull";
- wet = 8
+ wet = 16
},
/area/ruin/powered/clownplanet)
"dD" = (
@@ -1097,7 +1097,7 @@
},
/turf/open/indestructible{
icon_state = "darkfull";
- wet = 8
+ wet = 16
},
/area/ruin/powered/clownplanet)
"dE" = (
@@ -1120,7 +1120,7 @@
},
/turf/open/indestructible{
icon_state = "darkfull";
- wet = 8
+ wet = 16
},
/area/ruin/powered/clownplanet)
"dF" = (
@@ -1175,7 +1175,7 @@
},
/turf/open/indestructible{
icon_state = "darkfull";
- wet = 8
+ wet = 16
},
/area/ruin/powered/clownplanet)
"dK" = (
@@ -1202,7 +1202,7 @@
icon_state = "bananium";
name = "bananium floor";
sound = 'sound/effects/clownstep1.ogg';
- wet = 8
+ wet = 16
},
/area/ruin/powered/clownplanet)
"dO" = (
@@ -1211,7 +1211,7 @@
icon_state = "bananium";
name = "bananium floor";
sound = 'sound/effects/clownstep1.ogg';
- wet = 8
+ wet = 16
},
/area/ruin/powered/clownplanet)
"eX" = (
@@ -1260,7 +1260,7 @@
/obj/effect/turf_decal/tile/yellow,
/turf/open/indestructible{
icon_state = "darkfull";
- wet = 8
+ wet = 16
},
/area/ruin/powered/clownplanet)
"KX" = (
diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm
index 2e29497a02..bd322c9b2d 100644
--- a/code/__DEFINES/misc.dm
+++ b/code/__DEFINES/misc.dm
@@ -203,11 +203,12 @@ GLOBAL_LIST_EMPTY(bloody_footprints_cache)
#define LOCKED_SENSORS 2
//Wet floor type flags. Stronger ones should be higher in number.
-#define TURF_DRY 0
-#define TURF_WET_WATER 1
-#define TURF_WET_PERMAFROST 2
-#define TURF_WET_ICE 4
-#define TURF_WET_LUBE 8
+#define TURF_DRY (0)
+#define TURF_WET_WATER (1<<0)
+#define TURF_WET_PERMAFROST (1<<1)
+#define TURF_WET_ICE (1<<2)
+#define TURF_WET_LUBE (1<<3)
+#define TURF_WET_SUPERLUBE (1<<4)
#define IS_WET_OPEN_TURF(O) O.GetComponent(/datum/component/wet_floor)
@@ -515,3 +516,5 @@ GLOBAL_LIST_INIT(pda_reskins, list(PDA_SKIN_CLASSIC = 'icons/obj/pda.dmi', PDA_S
//Misc text define. Does 4 spaces. Used as a makeshift tabulator.
#define FOURSPACES " "
+
+#define CRYOMOBS 'icons/obj/cryo_mobs.dmi'
diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm
index 5bd0ee5b3b..8d2913629a 100644
--- a/code/__DEFINES/mobs.dm
+++ b/code/__DEFINES/mobs.dm
@@ -201,6 +201,8 @@
#define SLIDE (1<<1)
#define GALOSHES_DONT_HELP (1<<2)
#define SLIDE_ICE (1<<3)
+#define SLIP_WHEN_CRAWLING (1<<4) //clown planet ruin
+#define SLIP_WHEN_JOGGING (1<<5) //slips prevented by walking are also dodged if the mob is not sprinting or fatigued... unless this flag is on.
#define MAX_CHICKENS 50
diff --git a/code/__DEFINES/procpath.dm b/code/__DEFINES/procpath.dm
new file mode 100644
index 0000000000..1180058358
--- /dev/null
+++ b/code/__DEFINES/procpath.dm
@@ -0,0 +1,24 @@
+/// Represents a proc or verb path.
+///
+/// Despite having no DM-defined static type, proc paths have some variables,
+/// listed below. These are not modifiable, but for a given procpath P,
+/// `new P(null, "Name", "Desc")` can be used to create a new procpath with the
+/// same code but new `name` and `desc` values. The other variables cannot be
+/// changed in this way.
+///
+/// This type exists only to act as an annotation, providing reasonable static
+/// typing for procpaths. Previously, types like `/atom/verb` were used, with
+/// the `name` and `desc` vars of `/atom` thus being accessible. Proc and verb
+/// paths will fail `istype` and `ispath` checks against `/procpath`.
+/procpath
+ // Although these variables are effectively const, if they are marked const
+ // below, their accesses are optimized away.
+
+ /// A text string of the verb's name.
+ var/name as text
+ /// The verb's help text or description.
+ var/desc as text
+ /// The category or tab the verb will appear in.
+ var/category as text
+ /// Only clients/mobs with `see_invisibility` higher can use the verb.
+ var/invisibility as num
diff --git a/code/__DEFINES/spaceman_dmm.dm b/code/__DEFINES/spaceman_dmm.dm
new file mode 100644
index 0000000000..e590a30ff9
--- /dev/null
+++ b/code/__DEFINES/spaceman_dmm.dm
@@ -0,0 +1,13 @@
+// Interfaces for the SpacemanDMM linter, define'd to nothing when the linter
+// is not in use.
+
+// The SPACEMAN_DMM define is set by the linter and other tooling when it runs.
+#ifdef SPACEMAN_DMM
+ #define RETURN_TYPE(X) set SpacemanDMM_return_type = X
+ #define SHOULD_CALL_PARENT(X) set SpacemanDMM_should_call_parent = X
+ #define UNLINT(X) SpacemanDMM_unlint(X)
+#else
+ #define RETURN_TYPE(X)
+ #define SHOULD_CALL_PARENT(X)
+ #define UNLINT(X) X
+#endif
diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm
index f96337f691..2382e0e444 100644
--- a/code/__DEFINES/traits.dm
+++ b/code/__DEFINES/traits.dm
@@ -192,7 +192,6 @@
#define STASIS_MUTE "stasis"
#define GENETICS_SPELL "genetics_spell"
#define EYES_COVERED "eyes_covered"
-#define CULT_TRAIT "cult"
#define CLOWN_NUKE_TRAIT "clown-nuke"
#define STICKY_MOUSTACHE_TRAIT "sticky-moustache"
#define CHAINSAW_FRENZY_TRAIT "chainsaw-frenzy"
@@ -214,4 +213,4 @@
#define NINJA_SUIT_TRAIT "ninja-suit"
#define ANTI_DROP_IMPLANT_TRAIT "anti-drop-implant"
#define ABDUCTOR_ANTAGONIST "abductor-antagonist"
-#define MADE_UNCLONEABLE "made-uncloneable"
\ No newline at end of file
+#define MADE_UNCLONEABLE "made-uncloneable"
diff --git a/code/__HELPERS/_lists.dm b/code/__HELPERS/_lists.dm
index 917615d095..7ea845720d 100644
--- a/code/__HELPERS/_lists.dm
+++ b/code/__HELPERS/_lists.dm
@@ -124,6 +124,7 @@
//returns a new list with only atoms that are in typecache L
/proc/typecache_filter_list(list/atoms, list/typecache)
+ RETURN_TYPE(/list)
. = list()
for(var/thing in atoms)
var/atom/A = thing
@@ -131,6 +132,7 @@
. += A
/proc/typecache_filter_list_reverse(list/atoms, list/typecache)
+ RETURN_TYPE(/list)
. = list()
for(var/thing in atoms)
var/atom/A = thing
@@ -257,6 +259,7 @@
//Pick a random element from the list and remove it from the list.
/proc/pick_n_take(list/L)
+ RETURN_TYPE(L[_].type)
if(L.len)
var/picked = rand(1,L.len)
. = L[picked]
diff --git a/code/__HELPERS/_logging.dm b/code/__HELPERS/_logging.dm
index c19a7a64b0..c259831f94 100644
--- a/code/__HELPERS/_logging.dm
+++ b/code/__HELPERS/_logging.dm
@@ -7,7 +7,7 @@
#define WRITE_LOG(log, text) rustg_log_write(log, text)
//print a warning message to world.log
-#define WARNING(MSG) warning("[MSG] in [__FILE__] at line [__LINE__] src: [src] usr: [usr].")
+#define WARNING(MSG) warning("[MSG] in [__FILE__] at line [__LINE__] src: [UNLINT(src)] usr: [usr].")
/proc/warning(msg)
msg = "## WARNING: [msg]"
log_world(msg)
diff --git a/code/_onclick/adjacent.dm b/code/_onclick/adjacent.dm
index ddff0b6bd3..9485ea3374 100644
--- a/code/_onclick/adjacent.dm
+++ b/code/_onclick/adjacent.dm
@@ -68,9 +68,10 @@
/atom/movable/Adjacent(var/atom/neighbor)
if(neighbor == loc)
return TRUE
- if(!isturf(loc))
+ var/turf/T = loc
+ if(!istype(T))
return FALSE
- if(loc.Adjacent(neighbor,target = neighbor, mover = src))
+ if(T.Adjacent(neighbor, neighbor, src))
return TRUE
return FALSE
diff --git a/code/controllers/configuration/configuration.dm b/code/controllers/configuration/configuration.dm
index ea2919f342..a5d27819b8 100644
--- a/code/controllers/configuration/configuration.dm
+++ b/code/controllers/configuration/configuration.dm
@@ -34,7 +34,7 @@
if(_directory)
directory = _directory
if(entries)
- CRASH("[THIS_PROC_TYPE_WEIRD] called more than once!")
+ CRASH("/datum/controller/configuration/Load() called more than once!")
InitEntries()
LoadModes()
if(fexists("[directory]/config.txt") && LoadEntries("config.txt") <= 1)
diff --git a/code/controllers/subsystem/traumas.dm b/code/controllers/subsystem/traumas.dm
index ee1f5b8c3d..a525eea0b2 100644
--- a/code/controllers/subsystem/traumas.dm
+++ b/code/controllers/subsystem/traumas.dm
@@ -166,7 +166,7 @@ SUBSYSTEM_DEF(traumas)
"syndicate" = typecacheof(list(/obj/item/stack/tile/mineral/plastitanium, /obj/machinery/computer/shuttle/syndicate, /obj/machinery/computer/shuttle/syndicate/recall, /obj/machinery/computer/shuttle/syndicate/drop_pod, /obj/machinery/computer/camera_advanced/shuttle_docker/syndicate, /obj/machinery/recharge_station,
/obj/machinery/porta_turret/syndicate, /obj/structure/closet/syndicate, /obj/machinery/suit_storage_unit/syndicate, /obj/item/clothing/under/syndicate, /obj/item/folder/syndicate, /obj/item/documents/syndicate, /obj/item/clothing/glasses/phantomthief/syndicate, /obj/item/antag_spawner/nuke_ops, /obj/item/storage/box/syndicate,
- /obj/structure/fluff/empty_sleeper/syndicate, /obj/item/implant/radio/syndicate, /obj/item/clothing/head/helmet/space/syndicate, /obj/machinery/nuclearbomb/syndicate, /obj/item/grenade/syndieminibomb, /obj/item/storage/backpack/duffelbag/syndie, /obj/item/gun/ballistic/automatic/pistol, /obj/item/gun/ballistic/revolver/syndie,
+ /obj/structure/fluff/empty_sleeper/syndicate, /obj/item/implant/radio/syndicate, /obj/item/clothing/head/helmet/space/syndicate, /obj/machinery/nuclearbomb/syndicate, /obj/item/grenade/syndieminibomb, /obj/item/storage/backpack/duffelbag/syndie, /obj/item/gun/ballistic/automatic/pistol, /obj/item/gun/ballistic/revolver,
/obj/item/gun/ballistic/automatic/shotgun/bulldog, /obj/item/gun/ballistic/automatic/c20r, /obj/item/gun/ballistic/automatic/m90, /obj/item/gun/ballistic/automatic/l6_saw, /obj/item/storage/belt/grenade/full, /obj/item/gun/ballistic/automatic/sniper_rifle/syndicate, /obj/item/gun/energy/kinetic_accelerator/crossbow,
/obj/item/melee/transforming/energy/sword/saber, /obj/item/twohanded/dualsaber, /obj/item/melee/powerfist, /obj/item/storage/box/syndie_kit, /obj/item/grenade/spawnergrenade/manhacks, /obj/item/grenade/chem_grenade/bioterrorfoam, /obj/item/reagent_containers/spray/chemsprayer/bioterror, /obj/item/ammo_box/magazine/m10mm,
/obj/item/ammo_box/magazine/pistolm9mm, /obj/item/ammo_box/a357, /obj/item/ammo_box/magazine/m12g, /obj/item/ammo_box/magazine/mm195x129, /obj/item/antag_spawner/nuke_ops, /obj/mecha/combat/gygax/dark, /obj/mecha/combat/marauder/mauler, /obj/item/soap/syndie, /obj/item/gun/syringe/syndicate, /obj/item/cartridge/virus/syndicate,
diff --git a/code/datums/browser.dm b/code/datums/browser.dm
index 4c501a3e7f..60434d2766 100644
--- a/code/datums/browser.dm
+++ b/code/datums/browser.dm
@@ -194,7 +194,7 @@
.=..()
opentime = 0
-/datum/browser/modal/open()
+/datum/browser/modal/open(use_onclose = 1)
set waitfor = 0
opentime = world.time
diff --git a/code/datums/components/mood.dm b/code/datums/components/mood.dm
index 8c6013aeab..a3a9d96a55 100644
--- a/code/datums/components/mood.dm
+++ b/code/datums/components/mood.dm
@@ -8,7 +8,7 @@
var/mood_level = 5 //To track what stage of moodies they're on
var/sanity_level = 5 //To track what stage of sanity they're on
var/mood_modifier = 1 //Modifier to allow certain mobs to be less affected by moodlets
- var/datum/mood_event/list/mood_events = list()
+ var/list/datum/mood_event/mood_events = list()
var/insanity_effect = 0 //is the owner being punished for low mood? If so, how much?
var/obj/screen/mood/screen_obj
diff --git a/code/datums/components/storage/concrete/special.dm b/code/datums/components/storage/concrete/special.dm
index 556e9e9fc9..9f2c435642 100644
--- a/code/datums/components/storage/concrete/special.dm
+++ b/code/datums/components/storage/concrete/special.dm
@@ -1,5 +1,5 @@
-/datum/component/storage/concrete/secret_satchel/can_be_inserted(I,msg,user)
+/datum/component/storage/concrete/secret_satchel/can_be_inserted(obj/item/I, stop_messages = FALSE, mob/M)
if(SSpersistence.spawned_objects[I])
- to_chat(user, "[I] is unstable after its journey through space and time, it wouldn't survive another trip.")
+ to_chat(M, "[I] is unstable after its journey through space and time, it wouldn't survive another trip.")
return FALSE
return ..()
diff --git a/code/datums/components/wet_floor.dm b/code/datums/components/wet_floor.dm
index 84b0320375..38b17993d8 100644
--- a/code/datums/components/wet_floor.dm
+++ b/code/datums/components/wet_floor.dm
@@ -88,6 +88,9 @@
if(TURF_WET_PERMAFROST)
intensity = 120
lube_flags = SLIDE_ICE | GALOSHES_DONT_HELP
+ if(TURF_WET_SUPERLUBE)
+ intensity = 120
+ lube_flags = SLIDE | GALOSHES_DONT_HELP | SLIP_WHEN_CRAWLING
else
qdel(parent.GetComponent(/datum/component/slippery))
return
@@ -159,7 +162,7 @@
//NB it's possible we get deleted after this, due to inherit
/datum/component/wet_floor/proc/add_wet(type, duration_minimum = 0, duration_add = 0, duration_maximum = MAXIMUM_WET_TIME, _permanent = FALSE)
- var/static/list/allowed_types = list(TURF_WET_WATER, TURF_WET_LUBE, TURF_WET_ICE, TURF_WET_PERMAFROST)
+ var/static/list/allowed_types = list(TURF_WET_WATER, TURF_WET_LUBE, TURF_WET_ICE, TURF_WET_PERMAFROST, TURF_WET_SUPERLUBE)
if(duration_minimum <= 0 || !type)
return FALSE
if(type in allowed_types)
diff --git a/code/datums/datum.dm b/code/datums/datum.dm
index cdb195dd82..8737cd8feb 100644
--- a/code/datums/datum.dm
+++ b/code/datums/datum.dm
@@ -4,7 +4,7 @@
var/list/datum_components //for /datum/components
var/list/status_traits
var/list/comp_lookup //it used to be for looking up components which had registered a signal but now anything can register
- var/list/signal_procs
+ var/list/list/datum/callback/signal_procs
var/signal_enabled = FALSE
var/datum_flags = NONE
var/datum/weakref/weak_reference
diff --git a/code/datums/martial/wrestling.dm b/code/datums/martial/wrestling.dm
index e07fa27ef5..81ec0bf977 100644
--- a/code/datums/martial/wrestling.dm
+++ b/code/datums/martial/wrestling.dm
@@ -192,7 +192,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/.Knockdown, 20))
+ D.throw_at(T, 10, 4, A, TRUE, TRUE, callback = CALLBACK(D, /mob/living/carbon/human.proc/Knockdown, 20))
log_combat(A, D, "has thrown with wrestling")
return 0
diff --git a/code/datums/status_effects/buffs.dm b/code/datums/status_effects/buffs.dm
index 563d06ca57..5c4fc61827 100644
--- a/code/datums/status_effects/buffs.dm
+++ b/code/datums/status_effects/buffs.dm
@@ -170,7 +170,7 @@
tick_interval = 4
alert_type = /obj/screen/alert/status_effect/his_grace
var/bloodlust = 0
-
+
/obj/screen/alert/status_effect/his_grace
name = "His Grace"
desc = "His Grace hungers, and you must feed Him."
@@ -356,7 +356,7 @@
var/new_staminaloss = owner.getStaminaLoss()
if(new_staminaloss < last_staminaloss)
var/heal_amount = -5 // CIT CHANGE - makes blood drunk status effect not exhaust you
- owner.adjustStaminaLoss(heal_amount, updating_health = FALSE)
+ owner.adjustStaminaLoss(heal_amount, FALSE)
new_staminaloss = owner.getStaminaLoss()
needs_health_update = TRUE
last_staminaloss = new_staminaloss
diff --git a/code/datums/verbs.dm b/code/datums/verbs.dm
index 79fe256bb4..d8d7ee7433 100644
--- a/code/datums/verbs.dm
+++ b/code/datums/verbs.dm
@@ -11,7 +11,7 @@
//do things for each entry in Generate_list
//return value sets Generate_list[verbpath]
-/datum/verbs/proc/HandleVerb(list/entry, atom/verb/verbpath, ...)
+/datum/verbs/proc/HandleVerb(list/entry, procpath/verbpath, ...)
return entry
/datum/verbs/New()
@@ -82,7 +82,7 @@
. += childlist
for (var/thing in verblist)
- var/atom/verb/verbpath = thing
+ var/procpath/verbpath = thing
if (!verbpath)
stack_trace("Bad VERB in [type] verblist: [english_list(verblist)]")
var/list/entry = list()
diff --git a/code/game/atoms.dm b/code/game/atoms.dm
index 68f22242e1..64ff2437d3 100644
--- a/code/game/atoms.dm
+++ b/code/game/atoms.dm
@@ -266,7 +266,7 @@
if(SEND_SIGNAL(src, COMSIG_ATOM_GET_EXAMINE_NAME, user, override) & COMPONENT_EXNAME_CHANGED)
should_override = TRUE
-
+
if(blood_DNA && !istype(src, /obj/effect/decal))
override[EXAMINE_POSITION_BEFORE] = " blood-stained "
should_override = TRUE
@@ -563,7 +563,7 @@
//Hook for running code when a dir change occurs
-/atom/proc/setDir(newdir)
+/atom/proc/setDir(newdir, ismousemovement=FALSE)
SEND_SIGNAL(src, COMSIG_ATOM_DIR_CHANGE, dir, newdir)
dir = newdir
diff --git a/code/game/gamemodes/clown_ops/clown_weapons.dm b/code/game/gamemodes/clown_ops/clown_weapons.dm
index 79890e4cdd..ee96d1fa10 100644
--- a/code/game/gamemodes/clown_ops/clown_weapons.dm
+++ b/code/game/gamemodes/clown_ops/clown_weapons.dm
@@ -138,7 +138,7 @@
var/datum/component/slippery/slipper = GetComponent(/datum/component/slippery)
slipper.signal_enabled = active
-/obj/item/shield/energy/bananium/throw_at(atom/target, range, speed, mob/thrower, spin=1)
+/obj/item/shield/energy/bananium/throw_at(atom/target, range, speed, mob/thrower, spin=1, diagonals_first = 0, datum/callback/callback)
if(active)
if(iscarbon(thrower))
var/mob/living/carbon/C = thrower
diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm
index 17e26e66af..4d7b346241 100644
--- a/code/game/gamemodes/game_mode.dm
+++ b/code/game/gamemodes/game_mode.dm
@@ -31,7 +31,7 @@
var/recommended_enemies = 0
var/antag_flag = null //preferences flag such as BE_WIZARD that need to be turned on for players to be antag
var/mob/living/living_antag_player = null
- var/list/datum/game_mode/replacementmode = null
+ var/datum/game_mode/replacementmode = null
var/round_converted = 0 //0: round not converted, 1: round going to convert, 2: round converted
var/reroll_friendly //During mode conversion only these are in the running
var/continuous_sanity_checked //Catches some cases where config options could be used to suggest that modes without antagonists should end when all antagonists die
diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm
index 89c5e56b71..f6655acfc4 100644
--- a/code/game/machinery/cloning.dm
+++ b/code/game/machinery/cloning.dm
@@ -474,8 +474,6 @@
flesh_number = unattached_flesh.len
-#define CRYOMOBS 'icons/obj/cryo_mobs.dmi'
-
/obj/machinery/clonepod/update_icon()
cut_overlays()
diff --git a/code/game/machinery/computer/telecrystalconsoles.dm b/code/game/machinery/computer/telecrystalconsoles.dm
index 67407d220e..75e4a866f0 100644
--- a/code/game/machinery/computer/telecrystalconsoles.dm
+++ b/code/game/machinery/computer/telecrystalconsoles.dm
@@ -148,7 +148,6 @@ GLOBAL_LIST_INIT(possible_uplinker_IDs, list("Alfa","Bravo","Charlie","Delta","E
virgin = 0
/obj/machinery/computer/telecrystals/boss/proc/getDangerous()//This scales the TC assigned with the round population.
- ..()
var/list/nukeops = get_antag_minds(/datum/antagonist/nukeop)
var/danger = GLOB.joined_player_list.len - nukeops.len
danger = CEILING(danger, 10)
diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm
index 4d252f1a46..3ff515f4f5 100644
--- a/code/game/machinery/cryopod.dm
+++ b/code/game/machinery/cryopod.dm
@@ -307,7 +307,6 @@
//Handle Borg stuff first
if(iscyborg(mob_occupant))
var/mob/living/silicon/robot/R = mob_occupant
- if(!istype(R)) return ..()
R.contents -= R.mmi
qdel(R.mmi)
diff --git a/code/game/objects/items/body_egg.dm b/code/game/objects/items/body_egg.dm
index f0d20afbbd..59a5c50bf6 100644
--- a/code/game/objects/items/body_egg.dm
+++ b/code/game/objects/items/body_egg.dm
@@ -14,7 +14,7 @@
src.Insert(loc)
return ..()
-/obj/item/organ/body_egg/Insert(var/mob/living/carbon/M, special = 0)
+/obj/item/organ/body_egg/Insert(var/mob/living/carbon/M, special = 0, drop_if_replaced = TRUE)
..()
ADD_TRAIT(owner, TRAIT_XENO_HOST, TRAIT_GENERIC)
owner.med_hud_set_status()
diff --git a/code/game/objects/items/devices/PDA/PDA_types.dm b/code/game/objects/items/devices/PDA/PDA_types.dm
index 54b82d8e07..2da47d481e 100644
--- a/code/game/objects/items/devices/PDA/PDA_types.dm
+++ b/code/game/objects/items/devices/PDA/PDA_types.dm
@@ -10,7 +10,7 @@
/obj/item/pda/clown/Initialize()
. = ..()
- AddComponent(/datum/component/slippery, 120, NO_SLIP_WHEN_WALKING, CALLBACK(src, .proc/AfterSlip))
+ AddComponent(/datum/component/slippery, 120, NO_SLIP_WHEN_WALKING|SLIP_WHEN_JOGGING, CALLBACK(src, .proc/AfterSlip))
/obj/item/pda/clown/proc/AfterSlip(mob/living/carbon/human/M)
if (istype(M) && (M.real_name != owner))
diff --git a/code/game/objects/items/devices/PDA/cart.dm b/code/game/objects/items/devices/PDA/cart.dm
index 3885a1f4d9..8be18a5f61 100644
--- a/code/game/objects/items/devices/PDA/cart.dm
+++ b/code/game/objects/items/devices/PDA/cart.dm
@@ -697,7 +697,7 @@ Code:
if(href_list["mule"]) //MULEbots are special snowflakes, and need different args due to how they work.
- active_bot.bot_control(command= href_list["mule"], user= usr, pda= 1)
+ active_bot.bot_control(href_list["mule"], usr, TRUE)
if(!host_pda)
return
@@ -772,4 +772,4 @@ Code:
return ""
//This is called for special abilities of cartridges
-/obj/item/cartridge/proc/special(mov/living/user, list/params)
+/obj/item/cartridge/proc/special(mob/living/user, list/params)
diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm
index 5ad5b41e95..d6737b94e9 100644
--- a/code/game/objects/items/devices/scanners.dm
+++ b/code/game/objects/items/devices/scanners.dm
@@ -651,7 +651,7 @@ SLIME SCANNER
/proc/atmosanalyzer_scan(mixture, mob/living/user, atom/target = src)
var/icon = target
- user.visible_message("[user] has used the analyzer on [icon2html(icon, viewers(src))] [target].", "You use the analyzer on [icon2html(icon, user)] [target].")
+ user.visible_message("[user] has used the analyzer on [icon2html(icon, viewers(user))] [target].", "You use the analyzer on [icon2html(icon, user)] [target].")
to_chat(user, "Results of analysis of [icon2html(icon, user)] [target].")
var/list/airs = islist(mixture) ? mixture : list(mixture)
diff --git a/code/game/objects/items/storage/toolbox.dm b/code/game/objects/items/storage/toolbox.dm
index 251703f907..ca7f7fe31a 100644
--- a/code/game/objects/items/storage/toolbox.dm
+++ b/code/game/objects/items/storage/toolbox.dm
@@ -288,7 +288,6 @@ GLOBAL_LIST_EMPTY(rubber_toolbox_icons)
generate_rubber_toolbox_icon()
icon = GLOB.rubber_toolbox_icons[icon_state]
AddComponent(/datum/component/bouncy)
- . = ..()
/obj/item/storage/toolbox/proc/generate_rubber_toolbox_icon()
var/icon/new_icon = icon(icon, icon_state)
diff --git a/code/game/objects/items/stunbaton.dm b/code/game/objects/items/stunbaton.dm
index ee126971a7..47d9af2795 100644
--- a/code/game/objects/items/stunbaton.dm
+++ b/code/game/objects/items/stunbaton.dm
@@ -191,7 +191,7 @@
L.Knockdown(stunpwr)
- L.adjustStaminaLoss(stunpwr*0.1, affected_zone = (istype(user) ? user.zone_selected : BODY_ZONE_CHEST))//CIT CHANGE - makes stunbatons deal extra staminaloss. Todo: make this also deal pain when pain gets implemented.
+ L.adjustStaminaLoss(stunpwr*0.1)//CIT CHANGE - makes stunbatons deal extra staminaloss. Todo: make this also deal pain when pain gets implemented.
L.apply_effect(EFFECT_STUTTER, stunforce)
SEND_SIGNAL(L, COMSIG_LIVING_MINOR_SHOCK)
if(user)
diff --git a/code/game/turfs/open.dm b/code/game/turfs/open.dm
index bd24e0ff93..96c43c4106 100644
--- a/code/game/turfs/open.dm
+++ b/code/game/turfs/open.dm
@@ -267,14 +267,15 @@
if(!(lube&GALOSHES_DONT_HELP)) //can't slip while buckled unless it's lube.
return 0
else
- if(C.lying || !(C.status_flags & CANKNOCKDOWN)) // can't slip unbuckled mob if they're lying or can't fall.
+ if(!(lube&SLIP_WHEN_CRAWLING) && (C.lying || !(C.status_flags & CANKNOCKDOWN))) // can't slip unbuckled mob if they're lying or can't fall.
return 0
- if(C.m_intent == MOVE_INTENT_WALK && (lube&NO_SLIP_WHEN_WALKING))
- return 0
- if(ishuman(C) && (lube&NO_SLIP_WHEN_WALKING))
- var/mob/living/carbon/human/H = C
- if(!H.sprinting && H.getStaminaLoss() <= 20)
+ if(lube & NO_SLIP_WHEN_WALKING)
+ if(C.m_intent == MOVE_INTENT_WALK)
return 0
+ if(ishuman(C) && !(lube & SLIP_WHEN_JOGGING))
+ var/mob/living/carbon/human/H = C
+ if(!H.sprinting && H.getStaminaLoss() <= 20)
+ return 0
if(!(lube&SLIDE_ICE))
to_chat(C, "You slipped[ O ? " on the [O.name]" : ""]!")
playsound(C.loc, 'sound/misc/slip.ogg', 50, 1, -3)
diff --git a/code/game/turfs/simulated/floor/plating.dm b/code/game/turfs/simulated/floor/plating.dm
index 036f54c710..191d9b0242 100644
--- a/code/game/turfs/simulated/floor/plating.dm
+++ b/code/game/turfs/simulated/floor/plating.dm
@@ -144,5 +144,5 @@
..()
ScrapeAway()
-/turf/open/floor/plating/foam/tool_act(mob/living/user, obj/tool/I, tool_type)
+/turf/open/floor/plating/foam/tool_act(mob/living/user, obj/item/I, tool_type)
return
diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm
index a9b3b9208c..5900847ef5 100644
--- a/code/modules/admin/admin_verbs.dm
+++ b/code/modules/admin/admin_verbs.dm
@@ -1,7 +1,7 @@
//admin verb groups - They can overlap if you so wish. Only one of each verb will exist in the verbs list regardless
//the procs are cause you can't put the comments in the GLOB var define
-GLOBAL_PROTECT(admin_verbs_default)
GLOBAL_LIST_INIT(admin_verbs_default, world.AVerbsDefault())
+GLOBAL_PROTECT(admin_verbs_default)
/world/proc/AVerbsDefault()
return list(
/client/proc/deadmin, /*destroys our own admin datum so we can play as a regular player*/
@@ -13,8 +13,8 @@ GLOBAL_LIST_INIT(admin_verbs_default, world.AVerbsDefault())
/client/proc/toggleprayers,
/client/proc/toggleadminhelpsound
)
-GLOBAL_PROTECT(admin_verbs_admin)
GLOBAL_LIST_INIT(admin_verbs_admin, world.AVerbsAdmin())
+GLOBAL_PROTECT(admin_verbs_admin)
/world/proc/AVerbsAdmin()
return list(
/client/proc/invisimin, /*allows our mob to go invisible/visible*/
@@ -78,11 +78,10 @@ GLOBAL_LIST_INIT(admin_verbs_admin, world.AVerbsAdmin())
/client/proc/hide_most_verbs, /*hides all our hideable adminverbs*/
/datum/admins/proc/open_borgopanel
)
-GLOBAL_PROTECT(admin_verbs_ban)
GLOBAL_LIST_INIT(admin_verbs_ban, list(/client/proc/unban_panel, /client/proc/DB_ban_panel, /client/proc/stickybanpanel))
-GLOBAL_PROTECT(admin_verbs_sounds)
+GLOBAL_PROTECT(admin_verbs_ban)
GLOBAL_LIST_INIT(admin_verbs_sounds, list(/client/proc/play_local_sound, /client/proc/play_sound, /client/proc/set_round_end_sound))
-GLOBAL_PROTECT(admin_verbs_fun)
+GLOBAL_PROTECT(admin_verbs_sounds)
GLOBAL_LIST_INIT(admin_verbs_fun, list(
/client/proc/cmd_admin_dress,
/client/proc/cmd_admin_gib_self,
@@ -108,9 +107,9 @@ GLOBAL_LIST_INIT(admin_verbs_fun, list(
/client/proc/admin_away,
/client/proc/roll_dices //CIT CHANGE - Adds dice verb
))
-GLOBAL_PROTECT(admin_verbs_spawn)
+GLOBAL_PROTECT(admin_verbs_fun)
GLOBAL_LIST_INIT(admin_verbs_spawn, list(/datum/admins/proc/spawn_atom, /datum/admins/proc/spawn_cargo, /datum/admins/proc/spawn_objasmob, /client/proc/respawn_character))
-GLOBAL_PROTECT(admin_verbs_server)
+GLOBAL_PROTECT(admin_verbs_spawn)
GLOBAL_LIST_INIT(admin_verbs_server, world.AVerbsServer())
/world/proc/AVerbsServer()
return list(
@@ -130,7 +129,7 @@ GLOBAL_LIST_INIT(admin_verbs_server, world.AVerbsServer())
/client/proc/adminchangemap,
/client/proc/toggle_hub
)
-GLOBAL_PROTECT(admin_verbs_debug)
+GLOBAL_PROTECT(admin_verbs_server)
GLOBAL_LIST_INIT(admin_verbs_debug, world.AVerbsDebug())
/world/proc/AVerbsDebug()
return list(
@@ -172,15 +171,15 @@ GLOBAL_LIST_INIT(admin_verbs_debug, world.AVerbsDebug())
/datum/admins/proc/create_or_modify_area,
/client/proc/generate_wikichem_list //DO NOT PRESS UNLESS YOU WANT SUPERLAG
)
-GLOBAL_PROTECT(admin_verbs_possess)
+GLOBAL_PROTECT(admin_verbs_debug)
GLOBAL_LIST_INIT(admin_verbs_possess, list(/proc/possess, /proc/release))
-GLOBAL_PROTECT(admin_verbs_permissions)
+GLOBAL_PROTECT(admin_verbs_possess)
GLOBAL_LIST_INIT(admin_verbs_permissions, list(/client/proc/edit_admin_permissions))
-GLOBAL_PROTECT(admin_verbs_poll)
+GLOBAL_PROTECT(admin_verbs_permissions)
GLOBAL_LIST_INIT(admin_verbs_poll, list(/client/proc/create_poll))
//verbs which can be hidden - needs work
-GLOBAL_PROTECT(admin_verbs_hideable)
+GLOBAL_PROTECT(admin_verbs_poll)
GLOBAL_LIST_INIT(admin_verbs_hideable, list(
/client/proc/set_ooc,
/client/proc/reset_ooc,
@@ -248,6 +247,7 @@ GLOBAL_LIST_INIT(admin_verbs_hideable, list(
/client/proc/cmd_admin_man_up, //CIT CHANGE - adds man up verb
/client/proc/cmd_admin_man_up_global //CIT CHANGE - ditto
))
+GLOBAL_PROTECT(admin_verbs_hideable)
/client/proc/add_admin_verbs()
if(holder)
diff --git a/code/modules/admin/sql_message_system.dm b/code/modules/admin/sql_message_system.dm
index 72ec3da8f9..7b59e72403 100644
--- a/code/modules/admin/sql_message_system.dm
+++ b/code/modules/admin/sql_message_system.dm
@@ -504,7 +504,7 @@
output += ruler
var/datum/browser/browser = new(usr, "Note panel", "Manage player notes", 1000, 500)
var/datum/asset/notes_assets = get_asset_datum(/datum/asset/simple/notes)
- notes_assets.send(src)
+ notes_assets.send(usr.client)
browser.set_content(jointext(output, ""))
browser.open()
@@ -556,7 +556,7 @@
/proc/convert_notes_sql(ckey)
if(!fexists(NOTESFILE))
return
-
+
var/savefile/notesfile = new(NOTESFILE)
if(!notesfile)
log_game("Error: Cannot access [NOTESFILE]")
diff --git a/code/modules/admin/verbs/diagnostics.dm b/code/modules/admin/verbs/diagnostics.dm
index b19b2a91d8..072fbaa123 100644
--- a/code/modules/admin/verbs/diagnostics.dm
+++ b/code/modules/admin/verbs/diagnostics.dm
@@ -61,7 +61,7 @@
var/output = "Radio Report
"
for (var/fq in SSradio.frequencies)
output += "Freq: [fq]
"
- var/list/datum/radio_frequency/fqs = SSradio.frequencies[fq]
+ var/datum/radio_frequency/fqs = SSradio.frequencies[fq]
if (!fqs)
output += " ERROR
"
continue
diff --git a/code/modules/admin/verbs/mapping.dm b/code/modules/admin/verbs/mapping.dm
index 8559a3235e..2b8d365e15 100644
--- a/code/modules/admin/verbs/mapping.dm
+++ b/code/modules/admin/verbs/mapping.dm
@@ -19,7 +19,6 @@
//- Identify how hard it is to break into the area and where the weak points are
//- Check if the area has too much empty space. If so, make it smaller and replace the rest with maintenance tunnels.
-GLOBAL_PROTECT(admin_verbs_debug_mapping)
GLOBAL_LIST_INIT(admin_verbs_debug_mapping, list(
/client/proc/camera_view, //-errorage
/client/proc/sec_camera_report, //-errorage
@@ -50,6 +49,7 @@ GLOBAL_LIST_INIT(admin_verbs_debug_mapping, list(
/client/proc/debug_z_levels,
/client/proc/place_ruin
))
+GLOBAL_PROTECT(admin_verbs_debug_mapping)
/obj/effect/debugging/mapfix_marker
name = "map fix marker"
diff --git a/code/modules/antagonists/abductor/equipment/gland.dm b/code/modules/antagonists/abductor/equipment/gland.dm
index a35cbbf0e4..e9a815ac38 100644
--- a/code/modules/antagonists/abductor/equipment/gland.dm
+++ b/code/modules/antagonists/abductor/equipment/gland.dm
@@ -73,7 +73,7 @@
clear_mind_control()
..()
-/obj/item/organ/heart/gland/Insert(mob/living/carbon/M, special = 0)
+/obj/item/organ/heart/gland/Insert(mob/living/carbon/M, special = 0, drop_if_replaced = TRUE)
..()
if(special != 2 && uses) // Special 2 means abductor surgery
Start()
@@ -124,7 +124,7 @@
mind_control_uses = 1
mind_control_duration = 2400
-/obj/item/organ/heart/gland/slime/Insert(mob/living/carbon/M, special = 0)
+/obj/item/organ/heart/gland/slime/Insert(mob/living/carbon/M, special = 0, drop_if_replaced = TRUE)
..()
owner.faction |= "slime"
owner.grant_language(/datum/language/slime)
@@ -286,7 +286,7 @@
mind_control_uses = 2
mind_control_duration = 900
-/obj/item/organ/heart/gland/electric/Insert(mob/living/carbon/M, special = 0)
+/obj/item/organ/heart/gland/electric/Insert(mob/living/carbon/M, special = 0, drop_if_replaced = TRUE)
..()
ADD_TRAIT(owner, TRAIT_SHOCKIMMUNE, ORGAN_TRAIT)
diff --git a/code/modules/antagonists/devil/true_devil/_true_devil.dm b/code/modules/antagonists/devil/true_devil/_true_devil.dm
index df761ac183..06200073bb 100644
--- a/code/modules/antagonists/devil/true_devil/_true_devil.dm
+++ b/code/modules/antagonists/devil/true_devil/_true_devil.dm
@@ -106,7 +106,7 @@
/mob/living/carbon/true_devil/assess_threat(judgement_criteria, lasercolor = "", datum/callback/weaponcheck=null)
return 666
-/mob/living/carbon/true_devil/flash_act(intensity = 1, override_blindness_check = 0, affect_silicon = 0)
+/mob/living/carbon/true_devil/flash_act(intensity = 1, override_blindness_check = 0, affect_silicon = 0, visual = 0)
if(mind && has_bane(BANE_LIGHT))
mind.disrupt_spells(-500)
return ..() //flashes don't stop devils UNLESS it's their bane.
diff --git a/code/modules/antagonists/slaughter/slaughter.dm b/code/modules/antagonists/slaughter/slaughter.dm
index f45555a6ee..f27da5f667 100644
--- a/code/modules/antagonists/slaughter/slaughter.dm
+++ b/code/modules/antagonists/slaughter/slaughter.dm
@@ -94,7 +94,7 @@
user.temporarilyRemoveItemFromInventory(src, TRUE)
src.Insert(user) //Consuming the heart literally replaces your heart with a demon heart. H A R D C O R E
-/obj/item/organ/heart/demon/Insert(mob/living/carbon/M, special = 0)
+/obj/item/organ/heart/demon/Insert(mob/living/carbon/M, special = 0, drop_if_replaced = TRUE)
..()
if(M.mind)
M.mind.AddSpell(new /obj/effect/proc_holder/spell/bloodcrawl(null))
diff --git a/code/modules/antagonists/traitor/IAA/internal_affairs.dm b/code/modules/antagonists/traitor/IAA/internal_affairs.dm
index b05750305a..caf2f644df 100644
--- a/code/modules/antagonists/traitor/IAA/internal_affairs.dm
+++ b/code/modules/antagonists/traitor/IAA/internal_affairs.dm
@@ -223,8 +223,6 @@
special_role = TRAITOR_AGENT_ROLE
syndicate = TRUE
forge_single_objective()
- else
- ..() // Give them standard objectives.
return
/datum/antagonist/traitor/internal_affairs/forge_traitor_objectives()
diff --git a/code/modules/antagonists/traitor/equipment/Malf_Modules.dm b/code/modules/antagonists/traitor/equipment/Malf_Modules.dm
index e1d607c34b..56954f8718 100644
--- a/code/modules/antagonists/traitor/equipment/Malf_Modules.dm
+++ b/code/modules/antagonists/traitor/equipment/Malf_Modules.dm
@@ -208,7 +208,7 @@ GLOBAL_LIST_INIT(blacklisted_malf_machines, typecacheof(list(
var/unlock_text = "Hello World!" //Text shown when an ability is unlocked
var/unlock_sound //Sound played when an ability is unlocked
-/datum/AI_Module/proc/upgrade(mob/living/silicon/AI/AI) //Apply upgrades!
+/datum/AI_Module/proc/upgrade(mob/living/silicon/ai/AI) //Apply upgrades!
return
/datum/AI_Module/large //Big, powerful stuff that can only be used once.
@@ -397,7 +397,7 @@ GLOBAL_LIST_INIT(blacklisted_malf_machines, typecacheof(list(
unlock_text = "You establish a power diversion to your turrets, upgrading their health and damage."
unlock_sound = 'sound/items/rped.ogg'
-/datum/AI_Module/large/upgrade_turrets/upgrade(mob/living/silicon/AI/AI)
+/datum/AI_Module/large/upgrade_turrets/upgrade(mob/living/silicon/ai/AI)
for(var/obj/machinery/porta_turret/ai/turret in GLOB.machines)
turret.obj_integrity += 30
turret.lethal_projectile = /obj/item/projectile/beam/laser/heavylaser //Once you see it, you will know what it means to FEAR.
diff --git a/code/modules/assembly/infrared.dm b/code/modules/assembly/infrared.dm
index 7405549b3d..caa8418fc9 100644
--- a/code/modules/assembly/infrared.dm
+++ b/code/modules/assembly/infrared.dm
@@ -138,7 +138,7 @@
. = ..()
setDir(t)
-/obj/item/assembly/infra/throw_at()
+/obj/item/assembly/infra/throw_at(atom/target, range, speed, mob/thrower, spin=1, diagonals_first = 0, datum/callback/callback)
. = ..()
olddir = dir
diff --git a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm
index ccd13d8d4a..5d31e3eaff 100644
--- a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm
+++ b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm
@@ -1,5 +1,3 @@
-#define CRYOMOBS 'icons/obj/cryo_mobs.dmi'
-
/obj/machinery/atmospherics/components/unary/cryo_cell
name = "cryo cell"
icon = 'icons/obj/cryogenics.dmi'
diff --git a/code/modules/awaymissions/corpse.dm b/code/modules/awaymissions/corpse.dm
index a0927a2578..34905fe3c7 100644
--- a/code/modules/awaymissions/corpse.dm
+++ b/code/modules/awaymissions/corpse.dm
@@ -257,7 +257,7 @@
//Non-human spawners
-/obj/effect/mob_spawn/AICorpse/create() //Creates a corrupted AI
+/obj/effect/mob_spawn/AICorpse/create(ckey, name) //Creates a corrupted AI
var/A = locate(/mob/living/silicon/ai) in loc
if(A)
return
@@ -277,7 +277,7 @@
/obj/effect/mob_spawn/slime/equip(mob/living/simple_animal/slime/S)
S.colour = mobcolour
-/obj/effect/mob_spawn/human/facehugger/create() //Creates a squashed facehugger
+/obj/effect/mob_spawn/human/facehugger/create(ckey, name) //Creates a squashed facehugger
var/obj/item/clothing/mask/facehugger/O = new(src.loc) //variable O is a new facehugger at the location of the landmark
O.name = src.name
O.Die() //call the facehugger's death proc
diff --git a/code/modules/bsql/core/library.dm b/code/modules/bsql/core/library.dm
index 1b62cf3b6a..9b58ba314b 100644
--- a/code/modules/bsql/core/library.dm
+++ b/code/modules/bsql/core/library.dm
@@ -1,6 +1,6 @@
/world/proc/_BSQL_Internal_Call(func, ...)
var/list/call_args = args.Copy(2)
- BSQL_Debug("[.....]: [args[1]]([call_args.Join(", ")])")
+ BSQL_Debug("_BSQL_Internal_Call(): [args[1]]([call_args.Join(", ")])")
. = call(_BSQL_Library_Path(), func)(arglist(call_args))
BSQL_Debug("Result: [. == null ? "NULL" : "\"[.]\""]")
diff --git a/code/modules/cargo/centcom_podlauncher.dm b/code/modules/cargo/centcom_podlauncher.dm
index e482aa00b5..f57374db7c 100644
--- a/code/modules/cargo/centcom_podlauncher.dm
+++ b/code/modules/cargo/centcom_podlauncher.dm
@@ -2,7 +2,7 @@
//This was originally created as a way to get adminspawned items to the station in an IC manner. It's evolved to contain a few more
//features such as item removal, smiting, controllable delivery mobs, and more.
-//This works by creating a supplypod (refered to as temp_pod) in a special room in the centcom map.
+//This works by creating a supplypod (refered to as temp_pod) in a special room in the centcom map.
//IMPORTANT: Even though we call it a supplypod for our purposes, it can take on the appearance and function of many other things: Eg. cruise missiles, boxes, or walking, living gondolas.
//When the user launched the pod, items from special "bays" on the centcom map are taken and put into the supplypod
@@ -33,7 +33,7 @@
var/launchCounter = 1 //Used with the "Ordered" launch mode (launchChoice = 1) to see what item is launched
var/specificTarget //Do we want to target a specific mob instead of where we click? Also used for smiting
var/list/orderedArea = list() //Contains an ordered list of turfs in an area (filled in the createOrderedArea() proc), read top-left to bottom-right. Used for the "ordered" launch mode (launchChoice = 1)
- var/list/acceptableTurfs = list() //Contians a list of turfs (in the "bay" area on centcom) that have items that can be launched. Taken from orderedArea
+ var/list/turf/acceptableTurfs = list() //Contians a list of turfs (in the "bay" area on centcom) that have items that can be launched. Taken from orderedArea
var/list/launchList = list() //Contains whatever is going to be put in the supplypod and fired. Taken from acceptableTurfs
var/obj/effect/supplypod_selector/selector = new() //An effect used for keeping track of what item is going to be launched when in "ordered" mode (launchChoice = 1)
var/obj/structure/closet/supplypod/centcompod/temp_pod //The temporary pod that is modified by this datum, then cloned. The buildObject() clone of this pod is what is launched
@@ -69,7 +69,7 @@ force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.adm
data["landingDelay"] = temp_pod.landingDelay //How long the pod takes to land after launching
data["openingDelay"] = temp_pod.openingDelay //How long the pod takes to open after landing
data["departureDelay"] = temp_pod.departureDelay //How long the pod takes to leave after opening (if bluespace=true, it deletes. if reversing=true, it flies back to centcom)
- data["styleChoice"] = temp_pod.style //Style is a variable that keeps track of what the pod is supposed to look like. It acts as an index to the POD_STYLES list in cargo.dm defines to get the proper icon/name/desc for the pod.
+ data["styleChoice"] = temp_pod.style //Style is a variable that keeps track of what the pod is supposed to look like. It acts as an index to the POD_STYLES list in cargo.dm defines to get the proper icon/name/desc for the pod.
data["effectStun"] = temp_pod.effectStun //If true, stuns anyone under the pod when it launches until it lands, forcing them to get hit by the pod. Devilish!
data["effectLimb"] = temp_pod.effectLimb //If true, pops off a limb (if applicable) from anyone caught under the pod when it lands
data["effectBluespace"] = temp_pod.bluespace //If true, the pod deletes (in a shower of sparks) after landing
@@ -150,7 +150,7 @@ force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.adm
if("launchRandom") //Pick random turfs from the supplypod bay at centcom to launch
if (launchChoice == 2)
launchChoice = 0
- updateSelector()
+ updateSelector()
return
launchChoice = 2
updateSelector()
@@ -326,7 +326,7 @@ force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.adm
temp_pod.soundVolume = 50
. = TRUE
////////////////////////////STYLE CHANGES//////////////////
- //Style is a value that is used to keep track of what the pod is supposed to look like. It can be used with the POD_STYLES list (in cargo.dm defines)
+ //Style is a value that is used to keep track of what the pod is supposed to look like. It can be used with the POD_STYLES list (in cargo.dm defines)
//as a way to get the proper icon state, name, and description of the pod.
if("styleStandard")
temp_pod.setStyle(STYLE_STANDARD)
@@ -367,7 +367,7 @@ force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.adm
if("refresh") //Refresh the Pod bay. User should press this if they spawn something new in the centcom bay. Automatically called whenever the user launches a pod
refreshBay()
. = TRUE
- if("giveLauncher") //Enters the "Launch Mode". When the launcher is activated, temp_pod is cloned, and the result it filled and launched anywhere the user clicks (unless specificTarget is true)
+ if("giveLauncher") //Enters the "Launch Mode". When the launcher is activated, temp_pod is cloned, and the result it filled and launched anywhere the user clicks (unless specificTarget is true)
launcherActivated = !launcherActivated
updateCursor(launcherActivated) //Update the cursor of the user to a cool looking target icon
. = TRUE
@@ -436,7 +436,7 @@ force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.adm
orderedArea = list()
if (!isemptylist(A.contents)) //Go through the area passed into the proc, and figure out the top left and bottom right corners by calculating max and min values
var/startX = A.contents[1].x //Create the four values (we do it off a.contents[1] so they have some sort of arbitrary initial value. They should be overwritten in a few moments)
- var/endX = A.contents[1].x
+ var/endX = A.contents[1].x
var/startY = A.contents[1].y
var/endY = A.contents[1].y
for (var/turf/T in A) //For each turf in the area, go through and find:
@@ -453,7 +453,7 @@ force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.adm
orderedArea.Add(locate(j,startY - (i - endY),1)) //After gathering the start/end x and y, go through locating each turf from top left to bottom right, like one would read a book
return orderedArea //Return the filled list
-/datum/centcom_podlauncher/proc/preLaunch() //Creates a list of acceptable items,
+/datum/centcom_podlauncher/proc/preLaunch() //Creates a list of acceptable items,
numTurfs = 0 //Counts the number of turfs that can be launched (remember, supplypods either launch all at once or one turf-worth of items at a time)
acceptableTurfs = list()
for (var/turf/T in orderedArea) //Go through the orderedArea list
@@ -478,7 +478,7 @@ force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.adm
//UpdateSelector() is here (instead if the if(1) switch block) because it also moves the selector to nullspace (to hide it) if needed
/datum/centcom_podlauncher/proc/launch(turf/A) //Game time started
- if (isnull(A))
+ if (isnull(A))
return
var/obj/structure/closet/supplypod/centcompod/toLaunch = DuplicateObject(temp_pod) //Duplicate the temp_pod (which we have been varediting or configuring with the UI) and store the result
toLaunch.bay = bay //Bay is currently a nonstatic expression, so it cant go into toLaunch using DuplicateObject
@@ -487,7 +487,7 @@ force_open = FALSE, datum/tgui/master_ui = null, datum/ui_state/state = GLOB.adm
for (var/atom/movable/O in launchList)
DuplicateObject(O).forceMove(toLaunch) //Duplicate each atom/movable in launchList and forceMove them into the supplypod
new /obj/effect/DPtarget(A, toLaunch) //Create the DPTarget, which will eventually forceMove the temp_pod to it's location
- else
+ else
for (var/atom/movable/O in launchList) //If we aren't cloning the objects, just go through the launchList
O.forceMove(toLaunch) //and forceMove any atom/moveable into the supplypod
new /obj/effect/DPtarget(A, toLaunch) //Then, create the DPTarget effect, which will eventually forceMove the temp_pod to it's location
diff --git a/code/modules/cargo/exports/weapons.dm b/code/modules/cargo/exports/weapons.dm
index 97dd9c10aa..1904be4f53 100644
--- a/code/modules/cargo/exports/weapons.dm
+++ b/code/modules/cargo/exports/weapons.dm
@@ -211,7 +211,8 @@
/datum/export/weapon/revolver
cost = 200
unit_name = "large handgun"
- export_types = list(/obj/item/gun/ballistic/revolver/syndie)
+ export_types = list(/obj/item/gun/ballistic/revolver)
+ exclude_types = list(/obj/item/gun/ballistic/revolver/russian, /obj/item/gun/ballistic/revolver/doublebarrel)
/datum/export/weapon/rocketlauncher
cost = 1000
@@ -353,4 +354,4 @@
cost = 30
unit_name = "unlisted weapon"
export_types = list(/obj/item/gun)
- include_subtypes = TRUE
\ No newline at end of file
+ include_subtypes = TRUE
diff --git a/code/modules/cargo/gondolapod.dm b/code/modules/cargo/gondolapod.dm
index f36ff0ce33..b507b617c3 100644
--- a/code/modules/cargo/gondolapod.dm
+++ b/code/modules/cargo/gondolapod.dm
@@ -39,14 +39,14 @@
set name = "Release Contents"
set category = "Gondola"
set desc = "Release any contents stored within your vast belly."
- linked_pod.open(src, manual = TRUE)
+ linked_pod.open(src)
/mob/living/simple_animal/pet/gondola/gondolapod/verb/check()
set name = "Count Contents"
set category = "Gondola"
set desc = "Take a deep look inside youself, and count up what's inside"
var/total = contents.len
- if (total)
+ if (total)
to_chat(src, "You detect [total] object[total > 1 ? "s" : ""] within your incredibly vast belly.")
else
to_chat(src, "A closer look inside yourself reveals... nothing.")
diff --git a/code/modules/client/client_procs.dm b/code/modules/client/client_procs.dm
index 5442fcb932..7e466caf8a 100644
--- a/code/modules/client/client_procs.dm
+++ b/code/modules/client/client_procs.dm
@@ -410,7 +410,7 @@ GLOBAL_LIST_EMPTY(external_rsc_urls)
for (var/child in entries)
winset(src, "[child]", "[entries[child]]")
if (!ispath(child, /datum/verbs/menu))
- var/atom/verb/verbpath = child
+ var/procpath/verbpath = child
if (copytext(verbpath.name,1,2) != "@")
new child(src)
diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm
index e133ca933b..5aaf589393 100644
--- a/code/modules/client/preferences.dm
+++ b/code/modules/client/preferences.dm
@@ -2338,9 +2338,10 @@ GLOBAL_LIST_EMPTY(preferences_datums)
character.Digitigrade_Leg_Swap(TRUE)
//let's be sure the character updates
- character.update_body()
- character.update_hair()
- character.update_body_parts()
+ if(icon_updates)
+ character.update_body()
+ character.update_hair()
+ character.update_body_parts()
/datum/preferences/proc/get_default_name(name_id)
switch(name_id)
diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm
index 1793bd8f4b..7e7f8b4285 100644
--- a/code/modules/clothing/clothing.dm
+++ b/code/modules/clothing/clothing.dm
@@ -223,7 +223,6 @@ BLIND // can't see anything
if(H.w_uniform == src)
H.update_suit_sensors()
- ..()
/obj/item/clothing/under/CtrlClick(mob/user)
. = ..()
diff --git a/code/modules/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm
index 48704d7623..52293c7042 100644
--- a/code/modules/flufftext/Hallucination.dm
+++ b/code/modules/flufftext/Hallucination.dm
@@ -672,7 +672,7 @@ GLOBAL_LIST_INIT(hallucination_list, list(
"AI [pick("rogue", "is dead")]!!")
var/list/mob/living/carbon/people = list()
- var/list/mob/living/carbon/person = null
+ var/mob/living/carbon/person = null
var/datum/language/understood_language = target.get_random_understood_language()
for(var/mob/living/carbon/H in view(target))
if(H == target)
diff --git a/code/modules/holodeck/area_copy.dm b/code/modules/holodeck/area_copy.dm
index efe7418e44..5068ce09f5 100644
--- a/code/modules/holodeck/area_copy.dm
+++ b/code/modules/holodeck/area_copy.dm
@@ -5,6 +5,7 @@ GLOBAL_LIST_INIT(duplicate_forbidden_vars,list(
))
/proc/DuplicateObject(atom/original, perfectcopy = TRUE, sameloc = FALSE, atom/newloc = null, nerf = FALSE, holoitem=FALSE)
+ RETURN_TYPE(original.type)
if(!original)
return
var/atom/O
diff --git a/code/modules/hydroponics/growninedible.dm b/code/modules/hydroponics/growninedible.dm
index c0e3beaf79..19049c8e6c 100644
--- a/code/modules/hydroponics/growninedible.dm
+++ b/code/modules/hydroponics/growninedible.dm
@@ -54,7 +54,7 @@
for(var/datum/plant_gene/trait/T in seed.genes)
T.on_throw_impact(src, hit_atom)
-/obj/item/grown/microwave_act(obj/machine/microwave/M)
+/obj/item/grown/microwave_act(obj/machinery/microwave/M)
return
/obj/item/grown/on_grind()
diff --git a/code/modules/integrated_electronics/core/special_pins/list_pin.dm b/code/modules/integrated_electronics/core/special_pins/list_pin.dm
index 9e4731ac36..3532d68d70 100644
--- a/code/modules/integrated_electronics/core/special_pins/list_pin.dm
+++ b/code/modules/integrated_electronics/core/special_pins/list_pin.dm
@@ -7,7 +7,6 @@
interact(user)
/datum/integrated_io/lists/proc/interact(mob/user)
- . = ..()
var/list/my_list = data
var/t = "[src]
"
t += "List length: [my_list.len]
"
diff --git a/code/modules/integrated_electronics/subtypes/atmospherics.dm b/code/modules/integrated_electronics/subtypes/atmospherics.dm
index 230d1ce154..aed99fac24 100644
--- a/code/modules/integrated_electronics/subtypes/atmospherics.dm
+++ b/code/modules/integrated_electronics/subtypes/atmospherics.dm
@@ -2,7 +2,6 @@
#define TARGET_TO_SOURCE 1
#define PUMP_EFFICIENCY 0.6
#define TANK_FAILURE_PRESSURE (ONE_ATMOSPHERE*25)
-#define PUMP_MAX_PRESSURE (ONE_ATMOSPHERE*24)
#define PUMP_MAX_VOLUME 100
diff --git a/code/modules/integrated_electronics/subtypes/smart.dm b/code/modules/integrated_electronics/subtypes/smart.dm
index 1959fb55c7..d4c565c49a 100644
--- a/code/modules/integrated_electronics/subtypes/smart.dm
+++ b/code/modules/integrated_electronics/subtypes/smart.dm
@@ -199,7 +199,6 @@
set_pin_data(IC_OUTPUT, 1, WEAKREF(null))
if(installed_brain.brainmob)
installed_brain.brainmob.remote_control = null
- ..()
//Brain changes
@@ -238,7 +237,7 @@
brainholder.do_work(6)
-/mob/living/brain/canUseTopic()
+/mob/living/brain/canUseTopic(atom/movable/M, be_close=FALSE, no_dextery=FALSE, no_tk=FALSE)
return check_bot_self
/obj/item/integrated_circuit/smart/advanced_pathfinder/proc/hippie_xor_decrypt()
@@ -329,7 +328,6 @@
installed_pai.forceMove(drop_location())
set_pin_data(IC_OUTPUT, 1, WEAKREF(null))
installed_pai.pai.remote_control = null
- ..()
//pAI changes
@@ -371,5 +369,5 @@
paiholder.do_work(6)
-/mob/living/silicon/pai/canUseTopic()
- return check_bot_self
\ No newline at end of file
+/mob/living/silicon/pai/canUseTopic(atom/movable/M, be_close=FALSE, no_dextery=FALSE, no_tk=FALSE)
+ return check_bot_self
diff --git a/code/modules/mining/machine_silo.dm b/code/modules/mining/machine_silo.dm
index c42f1b9f4e..d0232fc4f0 100644
--- a/code/modules/mining/machine_silo.dm
+++ b/code/modules/mining/machine_silo.dm
@@ -171,7 +171,7 @@ GLOBAL_LIST_EMPTY(silo_access_logs)
return
var/datum/ore_silo_log/entry = new(M, action, amount, noun, mats)
- var/list/logs = GLOB.silo_access_logs[REF(src)]
+ var/list/datum/ore_silo_log/logs = GLOB.silo_access_logs[REF(src)]
if(!LAZYLEN(logs))
GLOB.silo_access_logs[REF(src)] = logs = list(entry)
else if(!logs[1].merge(entry))
diff --git a/code/modules/mob/living/brain/brain_item.dm b/code/modules/mob/living/brain/brain_item.dm
index 4192c2235b..decf8d24eb 100644
--- a/code/modules/mob/living/brain/brain_item.dm
+++ b/code/modules/mob/living/brain/brain_item.dm
@@ -24,7 +24,7 @@
var/list/datum/brain_trauma/traumas = list()
-/obj/item/organ/brain/Insert(mob/living/carbon/C, special = 0,no_id_transfer = FALSE)
+/obj/item/organ/brain/Insert(mob/living/carbon/C, special = 0,no_id_transfer = FALSE, drop_if_replaced = TRUE)
..()
name = "brain"
diff --git a/code/modules/mob/living/carbon/alien/organs.dm b/code/modules/mob/living/carbon/alien/organs.dm
index 7b6962794a..e4e8f06cfa 100644
--- a/code/modules/mob/living/carbon/alien/organs.dm
+++ b/code/modules/mob/living/carbon/alien/organs.dm
@@ -14,7 +14,7 @@
QDEL_LIST(alien_powers)
return ..()
-/obj/item/organ/alien/Insert(mob/living/carbon/M, special = 0)
+/obj/item/organ/alien/Insert(mob/living/carbon/M, special = 0, drop_if_replaced = TRUE)
..()
for(var/obj/effect/proc_holder/alien/P in alien_powers)
M.AddAbility(P)
@@ -94,7 +94,7 @@
else
owner.adjustPlasma(plasma_rate * 0.1)
-/obj/item/organ/alien/plasmavessel/Insert(mob/living/carbon/M, special = 0)
+/obj/item/organ/alien/plasmavessel/Insert(mob/living/carbon/M, special = 0, drop_if_replaced = TRUE)
..()
if(isalien(M))
var/mob/living/carbon/alien/A = M
@@ -117,7 +117,7 @@
var/recent_queen_death = 0 //Indicates if the queen died recently, aliens are heavily weakened while this is active.
alien_powers = list(/obj/effect/proc_holder/alien/whisper)
-/obj/item/organ/alien/hivenode/Insert(mob/living/carbon/M, special = 0)
+/obj/item/organ/alien/hivenode/Insert(mob/living/carbon/M, special = 0, drop_if_replaced = TRUE)
..()
M.faction |= ROLE_ALIEN
diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm
index 8445f340e6..cdbc23d4d6 100644
--- a/code/modules/mob/living/carbon/human/species.dm
+++ b/code/modules/mob/living/carbon/human/species.dm
@@ -81,7 +81,7 @@ GLOBAL_LIST_EMPTY(roundstart_race_names)
var/sound/attack_sound = 'sound/weapons/punch1.ogg'
var/sound/miss_sound = 'sound/weapons/punchmiss.ogg'
- var/mob/living/list/ignored_by = list() // list of mobs that will ignore this species
+ var/list/mob/living/ignored_by = list() // list of mobs that will ignore this species
//Breathing!
var/obj/item/organ/lungs/mutantlungs = null
var/breathid = "o2"
diff --git a/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm b/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm
index 09fc26d04f..90f63467a0 100644
--- a/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm
+++ b/code/modules/mob/living/carbon/human/species_types/shadowpeople.dm
@@ -78,7 +78,7 @@
icon_state = "brain-x-d"
var/obj/effect/proc_holder/spell/targeted/shadowwalk/shadowwalk
-/obj/item/organ/brain/nightmare/Insert(mob/living/carbon/M, special = 0)
+/obj/item/organ/brain/nightmare/Insert(mob/living/carbon/M, special = 0, drop_if_replaced = TRUE)
..()
if(M.dna.species.id != "nightmare")
M.set_species(/datum/species/shadow/nightmare)
@@ -118,7 +118,7 @@
user.temporarilyRemoveItemFromInventory(src, TRUE)
Insert(user)
-/obj/item/organ/heart/nightmare/Insert(mob/living/carbon/M, special = 0)
+/obj/item/organ/heart/nightmare/Insert(mob/living/carbon/M, special = 0, drop_if_replaced = TRUE)
..()
if(special != HEART_SPECIAL_SHADOWIFY)
blade = new/obj/item/light_eater
diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm
index 1b1eb1a805..5cc0d1b2ea 100644
--- a/code/modules/mob/living/silicon/ai/ai.dm
+++ b/code/modules/mob/living/silicon/ai/ai.dm
@@ -783,7 +783,7 @@
/mob/living/silicon/ai/can_buckle()
return 0
-/mob/living/silicon/ai/incapacitated()
+/mob/living/silicon/ai/incapacitated(ignore_restraints, ignore_grab)
if(aiRestorePowerRoutine)
return TRUE
return ..()
diff --git a/code/modules/mob/living/silicon/ai/say.dm b/code/modules/mob/living/silicon/ai/say.dm
index f757203237..112add367f 100644
--- a/code/modules/mob/living/silicon/ai/say.dm
+++ b/code/modules/mob/living/silicon/ai/say.dm
@@ -49,7 +49,7 @@
else
padloc = "(UNKNOWN)"
src.log_talk(message, LOG_SAY, tag="HOLOPAD in [padloc]")
- send_speech(message, 7, T, "robot", message_language = language)
+ send_speech(message, 7, T, "robot", language)
to_chat(src, "Holopad transmitted, [real_name] \"[message]\"")
else
to_chat(src, "No holopad connected.")
diff --git a/code/modules/mob/living/simple_animal/bot/mulebot.dm b/code/modules/mob/living/simple_animal/bot/mulebot.dm
index 94283f82da..72f255137d 100644
--- a/code/modules/mob/living/simple_animal/bot/mulebot.dm
+++ b/code/modules/mob/living/simple_animal/bot/mulebot.dm
@@ -218,7 +218,7 @@
bot_control(action, usr) // Kill this later.
. = TRUE
-/mob/living/simple_animal/bot/mulebot/bot_control(command, mob/user, pda = 0)
+/mob/living/simple_animal/bot/mulebot/bot_control(command, mob/user, pda = 0, turf/user_turf, list/user_access = list())
if(pda && wires.is_cut(WIRE_RX)) // MULE wireless is controlled by wires.
return
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 c21166276a..f5a532d1eb 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/colossus.dm
@@ -728,7 +728,7 @@ Difficulty: Very Hard
holder_animal.mind.AddSpell(P)
holder_animal.verbs -= /mob/living/verb/pulled
-/obj/structure/closet/stasis/dump_contents(var/kill = 1)
+/obj/structure/closet/stasis/dump_contents(override = TRUE, kill = 1)
STOP_PROCESSING(SSobj, src)
for(var/mob/living/L in src)
REMOVE_TRAIT(L, TRAIT_MUTE, STASIS_MUTE)
@@ -774,7 +774,7 @@ Difficulty: Very Hard
for(var/i in user)
if(istype(i, /obj/structure/closet/stasis))
var/obj/structure/closet/stasis/S = i
- S.dump_contents(0)
+ S.dump_contents(kill=0)
qdel(S)
break
user.gib()
diff --git a/code/modules/paperwork/contract.dm b/code/modules/paperwork/contract.dm
index 3009a3ebfd..5f7db07190 100644
--- a/code/modules/paperwork/contract.dm
+++ b/code/modules/paperwork/contract.dm
@@ -100,7 +100,7 @@
/obj/item/paper/contract/infernal/suicide_act(mob/user)
if(signed && (user == target.current) && istype(user, /mob/living/carbon/human/))
var/mob/living/carbon/human/H = user
- H.forcesay("OH GREAT INFERNO! I DEMAND YOU COLLECT YOUR BOUNTY IMMEDIATELY!", forced = "infernal contract suicide")
+ H.forcesay("OH GREAT INFERNO! I DEMAND YOU COLLECT YOUR BOUNTY IMMEDIATELY!")
H.visible_message("[H] holds up a contract claiming [user.p_their()] soul, then immediately catches fire. It looks like [user.p_theyre()] trying to commit suicide!")
H.adjust_fire_stacks(20)
H.IgniteMob()
diff --git a/code/modules/projectiles/guns/ballistic/revolver.dm b/code/modules/projectiles/guns/ballistic/revolver.dm
index a5fb8a85aa..25a50f3e03 100644
--- a/code/modules/projectiles/guns/ballistic/revolver.dm
+++ b/code/modules/projectiles/guns/ballistic/revolver.dm
@@ -167,6 +167,7 @@
/obj/item/gun/ballistic/revolver/russian
name = "\improper Russian revolver"
desc = "A Russian-made revolver for drinking games. Uses .357 ammo, and has a mechanism requiring you to spin the chamber before each trigger pull."
+ icon_state = "russianrevolver"
mag_type = /obj/item/ammo_box/magazine/internal/cylinder/rus357
var/spun = FALSE
diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm
index 5b84608fad..6f42b67750 100644
--- a/code/modules/projectiles/projectile/magic.dm
+++ b/code/modules/projectiles/projectile/magic.dm
@@ -221,7 +221,7 @@
new_mob =new hooman(M.loc)
var/datum/preferences/A = new() //Randomize appearance for the human
- A.copy_to(new_mob, icon_updates=0)
+ A.copy_to(new_mob, FALSE)
var/mob/living/carbon/human/H = new_mob
H.update_body()
diff --git a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm
index b5bfa06786..1eb75e042b 100644
--- a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm
+++ b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm
@@ -114,7 +114,6 @@
recharge_counter++
/obj/machinery/chem_dispenser/proc/display_beaker()
- ..()
var/mutable_appearance/b_o = beaker_overlay || mutable_appearance(icon, "disp_beaker")
b_o.pixel_y = -4
b_o.pixel_x = -7
diff --git a/code/modules/reagents/chemistry/machinery/smoke_machine.dm b/code/modules/reagents/chemistry/machinery/smoke_machine.dm
index 4d60655488..c0d453de54 100644
--- a/code/modules/reagents/chemistry/machinery/smoke_machine.dm
+++ b/code/modules/reagents/chemistry/machinery/smoke_machine.dm
@@ -15,7 +15,7 @@
var/setting = 1 // displayed range is 3 * setting
var/max_range = 3 // displayed max range is 3 * max range
-/datum/effect_system/smoke_spread/chem/smoke_machine/set_up(datum/reagents/carry, setting=1, efficiency=10, loc)
+/datum/effect_system/smoke_spread/chem/smoke_machine/set_up(datum/reagents/carry, setting=1, efficiency=10, loc, silent=FALSE)
amount = setting
carry.copy_to(chemholder, 20)
carry.remove_any(amount * 16 / efficiency)
diff --git a/code/modules/reagents/chemistry/reagents/drug_reagents.dm b/code/modules/reagents/chemistry/reagents/drug_reagents.dm
index 15d517a0f5..5b6c798daf 100644
--- a/code/modules/reagents/chemistry/reagents/drug_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/drug_reagents.dm
@@ -162,7 +162,7 @@
/datum/reagent/drug/methamphetamine
name = "Methamphetamine"
id = "methamphetamine"
- description = "Reduces stun times by about 300%, speeds the user up, and allows the user to quickly recover stamina while dealing a small amount of Brain damage. If overdosed the subject will move randomly, laugh randomly, drop items and suffer from Toxin and Brain damage. If addicted the subject will constantly jitter and drool, before becoming dizzy and losing motor control and eventually suffer heavy toxin damage."
+ description = "Reduces stun times by about 300%, and allows the user to quickly recover stamina while dealing a small amount of Brain damage. If overdosed the subject will move randomly, laugh randomly, drop items and suffer from Toxin and Brain damage. If addicted the subject will constantly jitter and drool, before becoming dizzy and losing motor control and eventually suffer heavy toxin damage."
reagent_state = LIQUID
color = "#FAFAFA"
overdose_threshold = 20
diff --git a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm
index 592f7bc592..005cf4268f 100644
--- a/code/modules/reagents/chemistry/reagents/medicine_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/medicine_reagents.dm
@@ -629,7 +629,7 @@ datum/reagent/medicine/styptic_powder/overdose_start(mob/living/M)
/datum/reagent/medicine/ephedrine
name = "Ephedrine"
id = "ephedrine"
- description = "Increases stun resistance and movement speed. Overdose deals toxin damage and inhibits breathing."
+ description = "Increases stun resistance. Overdose deals toxin damage and inhibits breathing."
reagent_state = LIQUID
color = "#D2FFFA"
metabolization_rate = 0.5 * REAGENTS_METABOLISM
diff --git a/code/modules/reagents/chemistry/reagents/other_reagents.dm b/code/modules/reagents/chemistry/reagents/other_reagents.dm
index af6a65ebe1..ecd200f639 100644
--- a/code/modules/reagents/chemistry/reagents/other_reagents.dm
+++ b/code/modules/reagents/chemistry/reagents/other_reagents.dm
@@ -503,12 +503,19 @@
description = "Lubricant is a substance introduced between two moving surfaces to reduce the friction and wear between them. giggity."
color = "#009CA8" // rgb: 0, 156, 168
taste_description = "cherry" // by popular demand
+ var/lube_kind = TURF_WET_LUBE ///What kind of slipperiness gets added to turfs.
/datum/reagent/lube/reaction_turf(turf/open/T, reac_volume)
if (!istype(T))
return
if(reac_volume >= 1)
- T.MakeSlippery(TURF_WET_LUBE, 15 SECONDS, min(reac_volume * 2 SECONDS, 120))
+ T.MakeSlippery(lube_kind, 15 SECONDS, min(reac_volume * 2 SECONDS, 120))
+
+///Stronger kind of lube. Applies TURF_WET_SUPERLUBE.
+/datum/reagent/lube/superlube
+ name = "Super Duper Lube"
+ description = "This \[REDACTED\] has been outlawed after the incident on \[DATA EXPUNGED\]."
+ lube_kind = TURF_WET_SUPERLUBE
/datum/reagent/spraytan
name = "Spray Tan"
diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm
index 424d7b9ed0..b3f9ef8202 100644
--- a/code/modules/reagents/reagent_containers/spray.dm
+++ b/code/modules/reagents/reagent_containers/spray.dm
@@ -223,6 +223,15 @@
/obj/item/reagent_containers/spray/waterflower/attack_self(mob/user) //Don't allow changing how much the flower sprays
return
+///Subtype used for the lavaland clown ruin.
+/obj/item/reagent_containers/spray/waterflower/superlube
+ name = "clown flower"
+ desc = "A delightly devilish flower... you got a feeling where this is going."
+ icon = 'icons/obj/chemical.dmi'
+ icon_state = "clownflower"
+ volume = 30
+ list_reagents = list(/datum/reagent/lube/superlube = 30)
+
/obj/item/reagent_containers/spray/waterflower/cyborg
reagent_flags = NONE
volume = 100
diff --git a/code/modules/spells/spell_types/area_teleport.dm b/code/modules/spells/spell_types/area_teleport.dm
index 7bede9f8be..747a10e769 100644
--- a/code/modules/spells/spell_types/area_teleport.dm
+++ b/code/modules/spells/spell_types/area_teleport.dm
@@ -83,6 +83,6 @@
else
playsound(user.loc, pick('sound/misc/null.ogg','sound/misc/null.ogg'), 100, 1)
if("whisper")
- user.whisper("[invocation] [uppertext(chosenarea.name)]", forced = "spell")
+ user.whisper("[invocation] [uppertext(chosenarea.name)]")
return
diff --git a/code/modules/spells/spell_types/inflict_handler.dm b/code/modules/spells/spell_types/inflict_handler.dm
index 25bdc7c9d2..3ccc039285 100644
--- a/code/modules/spells/spell_types/inflict_handler.dm
+++ b/code/modules/spells/spell_types/inflict_handler.dm
@@ -46,7 +46,7 @@
if(!amt_knockdown && amt_dam_stam)
target.adjustStaminaLoss(amt_dam_stam)
else
- target.Knockdown(amt_knockdown, override_hardstun = amt_hardstun, amt_dam_stam)
+ target.Knockdown(amt_knockdown, override_hardstun = amt_hardstun, override_stamdmg = amt_dam_stam)
target.Unconscious(amt_unconscious)
target.Stun(amt_stun)
diff --git a/code/modules/surgery/organs/appendix.dm b/code/modules/surgery/organs/appendix.dm
index 1f3f2fff5b..0a4bd270a8 100644
--- a/code/modules/surgery/organs/appendix.dm
+++ b/code/modules/surgery/organs/appendix.dm
@@ -34,7 +34,7 @@
update_icon()
..()
-/obj/item/organ/appendix/Insert(mob/living/carbon/M, special = 0)
+/obj/item/organ/appendix/Insert(mob/living/carbon/M, special = 0, drop_if_replaced = TRUE)
..()
if(inflamed)
M.ForceContractDisease(new /datum/disease/appendicitis(), FALSE, TRUE)
diff --git a/code/modules/surgery/organs/augments_chest.dm b/code/modules/surgery/organs/augments_chest.dm
index 8af52abc47..81627104e8 100644
--- a/code/modules/surgery/organs/augments_chest.dm
+++ b/code/modules/surgery/organs/augments_chest.dm
@@ -128,7 +128,7 @@
var/on = FALSE
var/datum/effect_system/trail_follow/ion/ion_trail
-/obj/item/organ/cyberimp/chest/thrusters/Insert(mob/living/carbon/M, special = 0)
+/obj/item/organ/cyberimp/chest/thrusters/Insert(mob/living/carbon/M, special = 0, drop_if_replaced = TRUE)
. = ..()
if(!ion_trail)
ion_trail = new
diff --git a/code/modules/surgery/organs/heart.dm b/code/modules/surgery/organs/heart.dm
index 82fbf932e9..a9830f36df 100644
--- a/code/modules/surgery/organs/heart.dm
+++ b/code/modules/surgery/organs/heart.dm
@@ -135,7 +135,7 @@ obj/item/organ/heart/slime
else
last_pump = world.time //lets be extra fair *sigh*
-/obj/item/organ/heart/cursed/Insert(mob/living/carbon/M, special = 0)
+/obj/item/organ/heart/cursed/Insert(mob/living/carbon/M, special = 0, drop_if_replaced = TRUE)
..()
if(owner)
to_chat(owner, "Your heart has been replaced with a cursed one, you have to pump this one manually otherwise you'll die!")
diff --git a/code/modules/surgery/organs/tongue.dm b/code/modules/surgery/organs/tongue.dm
index a9e2b331bb..6b435f282f 100644
--- a/code/modules/surgery/organs/tongue.dm
+++ b/code/modules/surgery/organs/tongue.dm
@@ -62,7 +62,7 @@
to_chat(owner, "Your tongue is really starting to hurt.")
-/obj/item/organ/tongue/Insert(mob/living/carbon/M, special = 0)
+/obj/item/organ/tongue/Insert(mob/living/carbon/M, special = 0, drop_if_replaced = TRUE)
..()
if(say_mod && M.dna && M.dna.species)
M.dna.species.say_mod = say_mod
diff --git a/code/modules/surgery/organs/vocal_cords.dm b/code/modules/surgery/organs/vocal_cords.dm
index a555010567..72925b854e 100644
--- a/code/modules/surgery/organs/vocal_cords.dm
+++ b/code/modules/surgery/organs/vocal_cords.dm
@@ -140,7 +140,7 @@
user.say(message, spans = span_list, sanitize = FALSE)
message = lowertext(message)
- var/mob/living/list/listeners = list()
+ var/list/mob/living/listeners = list()
for(var/mob/living/L in get_hearers_in_view(8, user))
if(L.can_hear() && !L.anti_magic_check(FALSE, TRUE) && L.stat != DEAD)
if(L == user && !include_speaker)
@@ -663,7 +663,7 @@
//FIND THRALLS
message = lowertext(message)
- var/mob/living/list/listeners = list()
+ var/list/mob/living/listeners = list()
for(var/mob/living/L in get_hearers_in_view(8, user))
if(L.can_hear() && !L.anti_magic_check(FALSE, TRUE) && L.stat != DEAD)
if(L.has_status_effect(/datum/status_effect/chem/enthrall))//Check to see if they have the status
diff --git a/code/modules/uplink/uplink_items.dm b/code/modules/uplink/uplink_items.dm
index 280740688e..16a5346503 100644
--- a/code/modules/uplink/uplink_items.dm
+++ b/code/modules/uplink/uplink_items.dm
@@ -302,7 +302,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
/datum/uplink_item/dangerous/revolver
name = "Syndicate Revolver"
desc = "A brutally simple syndicate revolver that fires .357 Magnum rounds and has 7 chambers."
- item = /obj/item/gun/ballistic/revolver/syndie
+ item = /obj/item/gun/ballistic/revolver
cost = 13
surplus = 50
exclude_modes = list(/datum/game_mode/nuclear/clown_ops)
diff --git a/code/modules/zombie/organs.dm b/code/modules/zombie/organs.dm
index 329cc127ab..ccadca56e5 100644
--- a/code/modules/zombie/organs.dm
+++ b/code/modules/zombie/organs.dm
@@ -23,7 +23,7 @@
GLOB.zombie_infection_list -= src
. = ..()
-/obj/item/organ/zombie_infection/Insert(var/mob/living/carbon/M, special = 0)
+/obj/item/organ/zombie_infection/Insert(var/mob/living/carbon/M, special = 0, drop_if_replaced = TRUE)
. = ..()
START_PROCESSING(SSobj, src)
diff --git a/html/changelogs/AutoChangeLog-pr-9764.yml b/html/changelogs/AutoChangeLog-pr-9764.yml
new file mode 100644
index 0000000000..a3ad009e81
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-9764.yml
@@ -0,0 +1,4 @@
+author: "AffectedArc07"
+delete-after: True
+changes:
+ - code_imp: "Fixes a LOT of code edge cases"
diff --git a/html/changelogs/AutoChangeLog-pr-9775.yml b/html/changelogs/AutoChangeLog-pr-9775.yml
new file mode 100644
index 0000000000..07ed8efdbe
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-9775.yml
@@ -0,0 +1,7 @@
+author: "nemvar"
+delete-after: True
+changes:
+ - tweak: "The lavaland clown ruin has some new pranks ready."
+ - rscadd: "Added a new loot item to the lavaland clown ruin."
+ - rscdel: "Removed the slime core from said ruin."
+ - balance: "The clown PDA now properly slips people on jogging move intent regardless of fatigue. Honkmother's will."
diff --git a/html/changelogs/AutoChangeLog-pr-9791.yml b/html/changelogs/AutoChangeLog-pr-9791.yml
new file mode 100644
index 0000000000..587fbce481
--- /dev/null
+++ b/html/changelogs/AutoChangeLog-pr-9791.yml
@@ -0,0 +1,4 @@
+author: "kappa-sama"
+delete-after: True
+changes:
+ - imageadd: "added TG's icons for traitor, russian, and golden revolver"
diff --git a/icons/obj/chemical.dmi b/icons/obj/chemical.dmi
index 89acf0645e..701c3a2467 100644
Binary files a/icons/obj/chemical.dmi and b/icons/obj/chemical.dmi differ
diff --git a/icons/obj/guns/projectile.dmi b/icons/obj/guns/projectile.dmi
index 6b2d9e5c06..6d5365f7fa 100644
Binary files a/icons/obj/guns/projectile.dmi and b/icons/obj/guns/projectile.dmi differ
diff --git a/interface/menu.dm b/interface/menu.dm
index eca97d669d..547c2edfc1 100644
--- a/interface/menu.dm
+++ b/interface/menu.dm
@@ -65,10 +65,10 @@ GLOBAL_LIST_EMPTY(menulist)
/datum/verbs/menu/Icon/Load_checked(client/C) //So we can be lazy, we invoke the "checked" menu item on menu load.
- var/atom/verb/verbpath = Get_checked(C)
+ var/procpath/verbpath = Get_checked(C)
if (!verbpath || !(verbpath in typesof("[type]/verb")))
return
-
+
if (copytext(verbpath.name,1,2) == "@")
winset(C, null, list2params(list("command" = copytext(verbpath.name,2))))
else
diff --git a/modular_citadel/code/game/gamemodes/gangs/gangtool.dm b/modular_citadel/code/game/gamemodes/gangs/gangtool.dm
index 9e828a7042..e99455bcd5 100644
--- a/modular_citadel/code/game/gamemodes/gangs/gangtool.dm
+++ b/modular_citadel/code/game/gamemodes/gangs/gangtool.dm
@@ -130,7 +130,7 @@
/obj/item/device/gangtool/proc/ping_gang(mob/user)
if(!can_use(user))
return
- var/message = stripped_input(user,"Discreetly send a gang-wide message.","Send Message") as null|text
+ var/message = stripped_input(user,"Discreetly send a gang-wide message.","Send Message")
if(!message || !can_use(user))
return
if(!is_station_level(user.z))
diff --git a/modular_citadel/code/modules/mentor/mentor_verbs.dm b/modular_citadel/code/modules/mentor/mentor_verbs.dm
index b8797e3ef9..716a484ee2 100644
--- a/modular_citadel/code/modules/mentor/mentor_verbs.dm
+++ b/modular_citadel/code/modules/mentor/mentor_verbs.dm
@@ -1,8 +1,8 @@
-GLOBAL_PROTECT(mentor_verbs)
GLOBAL_LIST_INIT(mentor_verbs, list(
/client/proc/cmd_mentor_say,
/client/proc/show_mentor_memo
))
+GLOBAL_PROTECT(mentor_verbs)
/client/proc/add_mentor_verbs()
if(mentor_datum)
diff --git a/modular_citadel/code/modules/projectiles/guns/ballistic/revolver.dm b/modular_citadel/code/modules/projectiles/guns/ballistic/revolver.dm
deleted file mode 100644
index 6fa18be0e7..0000000000
--- a/modular_citadel/code/modules/projectiles/guns/ballistic/revolver.dm
+++ /dev/null
@@ -1,11 +0,0 @@
-/*
-// REVOLVER THINGS GO HERE
-*/
-
-/obj/item/gun/ballistic/revolver //regular, classic sprite
- name = "\improper .357 revolver"
- desc = "A typical revolver. Uses .357 ammo."
-
-/obj/item/gun/ballistic/revolver/syndie //New and improved 100% syndicate technology!
- desc = "A suspicious revolver. Uses .357 ammo."
- icon = 'modular_citadel/icons/obj/guns/revolver.dmi'
\ No newline at end of file
diff --git a/modular_citadel/icons/obj/guns/revolver.dmi b/modular_citadel/icons/obj/guns/revolver.dmi
deleted file mode 100644
index 2a14066a6a..0000000000
Binary files a/modular_citadel/icons/obj/guns/revolver.dmi and /dev/null differ
diff --git a/tgstation.dme b/tgstation.dme
index b448f0e386..96200528e6 100755
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -76,6 +76,7 @@
#include "code\__DEFINES\pinpointers.dm"
#include "code\__DEFINES\pipe_construction.dm"
#include "code\__DEFINES\preferences.dm"
+#include "code\__DEFINES\procpath.dm"
#include "code\__DEFINES\profile.dm"
#include "code\__DEFINES\qdel.dm"
#include "code\__DEFINES\radiation.dm"
@@ -92,6 +93,7 @@
#include "code\__DEFINES\shuttles.dm"
#include "code\__DEFINES\sight.dm"
#include "code\__DEFINES\sound.dm"
+#include "code\__DEFINES\spaceman_dmm.dm"
#include "code\__DEFINES\stat.dm"
#include "code\__DEFINES\stat_tracking.dm"
#include "code\__DEFINES\status_effects.dm"
@@ -1746,7 +1748,6 @@
#include "code\modules\holiday\easter.dm"
#include "code\modules\holiday\holidays.dm"
#include "code\modules\holiday\halloween\bartholomew.dm"
-#include "code\modules\holiday\halloween\halloween.dm"
#include "code\modules\holiday\halloween\jacqueen.dm"
#include "code\modules\holodeck\area_copy.dm"
#include "code\modules\holodeck\computer.dm"
@@ -3118,7 +3119,6 @@
#include "modular_citadel\code\modules\projectiles\guns\ballistic\handguns.dm"
#include "modular_citadel\code\modules\projectiles\guns\ballistic\magweapon.dm"
#include "modular_citadel\code\modules\projectiles\guns\ballistic\magweapon_energy.dm"
-#include "modular_citadel\code\modules\projectiles\guns\ballistic\revolver.dm"
#include "modular_citadel\code\modules\projectiles\guns\ballistic\rifles.dm"
#include "modular_citadel\code\modules\projectiles\guns\ballistic\spinfusor.dm"
#include "modular_citadel\code\modules\projectiles\guns\energy\energy_gun.dm"