diff --git a/code/__DEFINES/admin.dm b/code/__DEFINES/admin.dm
index d43addf25a..21024e78f7 100644
--- a/code/__DEFINES/admin.dm
+++ b/code/__DEFINES/admin.dm
@@ -38,7 +38,7 @@
#define R_DEFAULT R_AUTOLOGIN
-#define R_MAXPERMISSION 4096 //This holds the maximum value for a permission. It is used in iteration, so keep it updated.
+#define R_EVERYTHING (1<<15)-1 //the sum of all other rank permissions, used for +EVERYTHING
#define ADMIN_QUE(user) "(?)"
#define ADMIN_FLW(user) "(FLW)"
diff --git a/code/__DEFINES/antagonists.dm b/code/__DEFINES/antagonists.dm
index 97d4126e35..4c454aa61a 100644
--- a/code/__DEFINES/antagonists.dm
+++ b/code/__DEFINES/antagonists.dm
@@ -26,4 +26,12 @@
#define ERT_ENG "eng"
#define ERT_LEADER "leader"
#define DEATHSQUAD "ds"
-#define DEATHSQUAD_LEADER "ds_leader"
\ No newline at end of file
+#define DEATHSQUAD_LEADER "ds_leader"
+
+//Shuttle hijacking
+#define HIJACK_NEUTRAL 0 //Does not stop hijacking but itself won't hijack
+#define HIJACK_HIJACKER 1 //Needs to be present for shuttle to be hijacked
+#define HIJACK_PREVENT 2 //Prevents hijacking same way as non-antags
+
+//Overthrow time to update heads obj
+#define OBJECTIVE_UPDATING_TIME 300
diff --git a/code/__DEFINES/combat.dm b/code/__DEFINES/combat.dm
index 1bc601d6fd..9a29829c2b 100644
--- a/code/__DEFINES/combat.dm
+++ b/code/__DEFINES/combat.dm
@@ -161,3 +161,6 @@
#define BODY_ZONE_PRECISE_R_HAND "r_hand"
#define BODY_ZONE_PRECISE_L_FOOT "l_foot"
#define BODY_ZONE_PRECISE_R_FOOT "r_foot"
+
+//We will round to this value in damage calculations.
+#define DAMAGE_PRECISION 0.1
\ No newline at end of file
diff --git a/code/__DEFINES/components.dm b/code/__DEFINES/components.dm
index ff51e2312e..8eabc4e52b 100644
--- a/code/__DEFINES/components.dm
+++ b/code/__DEFINES/components.dm
@@ -1,4 +1,4 @@
-#define SEND_SIGNAL(target, sigtype, arguments...) ( !target.comp_lookup || !target.comp_lookup[sigtype] ? NONE : target._SendSignal(sigtype, list(##arguments)) )
+#define SEND_SIGNAL(target, sigtype, arguments...) ( !target.comp_lookup || !target.comp_lookup[sigtype] ? NONE : target._SendSignal(sigtype, list(target, ##arguments)) )
#define SEND_GLOBAL_SIGNAL(sigtype, arguments...) ( SEND_SIGNAL(SSdcs, sigtype, ##arguments) )
@@ -17,6 +17,7 @@
// All signals. Format:
// When the signal is called: (signal arguments)
+// All signals send the source datum of the signal as the first argument
// global signals
// These are signals which can be listened to by any component on any parent
@@ -70,6 +71,7 @@
#define COMSIG_ATOM_RAD_WAVE_PASSING "atom_rad_wave_pass" //from base of datum/radiation_wave/check_obstructions(): (datum/radiation_wave, width)
#define COMSIG_ATOM_CANREACH "atom_can_reach" //from internal loop in atom/movable/proc/CanReach(): (list/next)
#define COMPONENT_BLOCK_REACH 1
+#define COMSIG_ATOM_SCREWDRIVER_ACT "atom_screwdriver_act" //from base of atom/screwdriver_act(): (mob/living/user, obj/item/I)
/////////////////
#define COMSIG_ATOM_ATTACK_GHOST "atom_attack_ghost" //from base of atom/attack_ghost(): (mob/dead/observer/ghost)
#define COMSIG_ATOM_ATTACK_HAND "atom_attack_hand" //from base of atom/attack_hand(): (mob/user)
@@ -104,7 +106,7 @@
#define COMSIG_MOVABLE_UNCROSS "movable_uncross" //from base of atom/movable/Uncross(): (/atom/movable)
#define COMPONENT_MOVABLE_BLOCK_UNCROSS 1
#define COMSIG_MOVABLE_UNCROSSED "movable_uncrossed" //from base of atom/movable/Uncrossed(): (/atom/movable)
-#define COMSIG_MOVABLE_COLLIDE "movable_bump" //from base of atom/movable/Bump(): (/atom) //CIT EDITED BACK TO COLLIDE PENDING SYNC
+#define COMSIG_MOVABLE_BUMP "movable_bump" //from base of atom/movable/Bump(): (/atom)
#define COMSIG_MOVABLE_IMPACT "movable_impact" //from base of atom/movable/throw_impact(): (/atom/hit_atom, /datum/thrownthing/throwingdatum)
#define COMSIG_MOVABLE_IMPACT_ZONE "item_impact_zone" //from base of mob/living/hitby(): (mob/living/target, hit_zone)
#define COMSIG_MOVABLE_BUCKLE "buckle" //from base of atom/movable/buckle_mob(): (mob, force)
diff --git a/code/__DEFINES/construction.dm b/code/__DEFINES/construction.dm
index 0d088c903a..aab49720f6 100644
--- a/code/__DEFINES/construction.dm
+++ b/code/__DEFINES/construction.dm
@@ -53,7 +53,7 @@
//other construction-related things
-//windows affected by nar-sie turn this color.
+//windows affected by Nar'Sie turn this color.
#define NARSIE_WINDOW_COLOUR "#7D1919"
//let's just pretend fulltile windows being children of border windows is fine
diff --git a/code/__DEFINES/cult.dm b/code/__DEFINES/cult.dm
index 73ec1bc8d7..198291f0ae 100644
--- a/code/__DEFINES/cult.dm
+++ b/code/__DEFINES/cult.dm
@@ -10,5 +10,14 @@
#define RUNE_COLOR_SUMMON "#00FF00"
//blood magic
-#define MAX_BLOODCHARGE 5
-#define RUNELESS_MAX_BLOODCHARGE 2
\ No newline at end of file
+#define MAX_BLOODCHARGE 4
+#define RUNELESS_MAX_BLOODCHARGE 1
+#define CULT_RISEN 0.2 //percent before rise
+#define CULT_ASCENDENT 0.4 //percent before ascend
+//screen locations
+#define DEFAULT_BLOODSPELLS "6:-29,4:-2"
+#define DEFAULT_BLOODTIP "14:6,14:27"
+#define DEFAULT_TOOLTIP "6:-29,5:-2"
+//misc
+#define SOULS_TO_REVIVE 3
+#define BLOODCULT_EYE "f00"
\ No newline at end of file
diff --git a/code/__DEFINES/exports.dm b/code/__DEFINES/exports.dm
new file mode 100644
index 0000000000..9e0caf417f
--- /dev/null
+++ b/code/__DEFINES/exports.dm
@@ -0,0 +1,4 @@
+#define EXPORT_CARGO 1
+#define EXPORT_EMAG 2
+#define EXPORT_CONTRABAND 4
+#define EXPORT_PIRATE 8
\ No newline at end of file
diff --git a/code/__DEFINES/food.dm b/code/__DEFINES/food.dm
index a68d29c14c..2c7a66ce40 100644
--- a/code/__DEFINES/food.dm
+++ b/code/__DEFINES/food.dm
@@ -11,3 +11,8 @@
#define GROSS (1<<10)
#define TOXIC (1<<11)
#define PINEAPPLE (1<<12)
+
+#define DRINK_NICE 1
+#define DRINK_GOOD 2
+#define DRINK_VERYGOOD 3
+#define DRINK_FANTASTIC 4
diff --git a/code/__DEFINES/footsteps.dm b/code/__DEFINES/footsteps.dm
new file mode 100644
index 0000000000..e66d518644
--- /dev/null
+++ b/code/__DEFINES/footsteps.dm
@@ -0,0 +1,66 @@
+#define FOOTSTEP_WOOD "wood"
+#define FOOTSTEP_FLOOR "floor"
+#define FOOTSTEP_PLATING "plating"
+#define FOOTSTEP_CARPET "carpet"
+#define FOOTSTEP_SAND "sand"
+#define FOOTSTEP_GRASS "grass"
+#define FOOTSTEP_WATER "water"
+#define FOOTSTEP_LAVA "lava"
+
+/*
+
+id = list(
+list(sounds),
+base volume,
+extra range addition
+)
+
+
+*/
+
+GLOBAL_LIST_INIT(footstep, list(
+ FOOTSTEP_WOOD = list(list(
+ 'sound/effects/footstep/wood1.ogg',
+ 'sound/effects/footstep/wood2.ogg',
+ 'sound/effects/footstep/wood3.ogg',
+ 'sound/effects/footstep/wood4.ogg',
+ 'sound/effects/footstep/wood5.ogg'), 100, 0),
+ FOOTSTEP_FLOOR = list(list(
+ 'sound/effects/footstep/floor1.ogg',
+ 'sound/effects/footstep/floor2.ogg',
+ 'sound/effects/footstep/floor3.ogg',
+ 'sound/effects/footstep/floor4.ogg',
+ 'sound/effects/footstep/floor5.ogg'), 75, -1),
+ FOOTSTEP_PLATING = list(list(
+ 'sound/effects/footstep/plating1.ogg',
+ 'sound/effects/footstep/plating2.ogg',
+ 'sound/effects/footstep/plating3.ogg',
+ 'sound/effects/footstep/plating4.ogg',
+ 'sound/effects/footstep/plating5.ogg'), 100, 1),
+ FOOTSTEP_CARPET = list(list(
+ 'sound/effects/footstep/carpet1.ogg',
+ 'sound/effects/footstep/carpet2.ogg',
+ 'sound/effects/footstep/carpet3.ogg',
+ 'sound/effects/footstep/carpet4.ogg',
+ 'sound/effects/footstep/carpet5.ogg'), 75, -1),
+ FOOTSTEP_SAND = list(list(
+ 'sound/effects/footstep/asteroid1.ogg',
+ 'sound/effects/footstep/asteroid2.ogg',
+ 'sound/effects/footstep/asteroid3.ogg',
+ 'sound/effects/footstep/asteroid4.ogg',
+ 'sound/effects/footstep/asteroid5.ogg'), 75, 0),
+ FOOTSTEP_GRASS = list(list(
+ 'sound/effects/footstep/grass1.ogg',
+ 'sound/effects/footstep/grass2.ogg',
+ 'sound/effects/footstep/grass3.ogg',
+ 'sound/effects/footstep/grass4.ogg'), 75, 0),
+ FOOTSTEP_WATER = list(list(
+ 'sound/effects/footstep/water1.ogg',
+ 'sound/effects/footstep/water2.ogg',
+ 'sound/effects/footstep/water3.ogg',
+ 'sound/effects/footstep/water4.ogg'), 100, 1),
+ FOOTSTEP_LAVA = list(list(
+ 'sound/effects/footstep/lava1.ogg',
+ 'sound/effects/footstep/lava2.ogg',
+ 'sound/effects/footstep/lava3.ogg'), 100, 0),
+))
\ No newline at end of file
diff --git a/code/__DEFINES/integrated_electronics.dm b/code/__DEFINES/integrated_electronics.dm
index 3647a61d77..727314abc6 100644
--- a/code/__DEFINES/integrated_electronics.dm
+++ b/code/__DEFINES/integrated_electronics.dm
@@ -40,6 +40,7 @@
#define IC_PINTYPE_REF /datum/integrated_io/ref
#define IC_PINTYPE_LIST /datum/integrated_io/lists
#define IC_PINTYPE_INDEX /datum/integrated_io/index
+#define IC_PINTYPE_SELFREF /datum/integrated_io/selfref
#define IC_PINTYPE_PULSE_IN /datum/integrated_io/activate
#define IC_PINTYPE_PULSE_OUT /datum/integrated_io/activate/out
diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm
index 1584021089..15eaadb2f2 100644
--- a/code/__DEFINES/is_helpers.dm
+++ b/code/__DEFINES/is_helpers.dm
@@ -56,10 +56,9 @@
#define isslimeperson(A) (is_species(A, /datum/species/jelly/slime))
#define isluminescent(A) (is_species(A, /datum/species/jelly/luminescent))
#define iszombie(A) (is_species(A, /datum/species/zombie))
+#define ismoth(A) (is_species(A, /datum/species/moth))
#define ishumanbasic(A) (is_species(A, /datum/species/human))
-
-//why arent catpeople a subspecies
-#define iscatperson(A) (ishumanbasic(A) && ( A.dna.features["ears"] == "Cat" || A.dna.features["tail_human"] == "Cat") )
+#define iscatperson(A) (ishumanbasic(A) && istype(A.dna.species, /datum/species/human/felinid) )
//more carbon mobs
#define ismonkey(A) (istype(A, /mob/living/carbon/monkey))
diff --git a/code/__DEFINES/layers.dm b/code/__DEFINES/layers.dm
index 9f0fdc27b2..8891c06f75 100644
--- a/code/__DEFINES/layers.dm
+++ b/code/__DEFINES/layers.dm
@@ -85,20 +85,22 @@
#define BYOND_LIGHTING_PLANE 17
#define BYOND_LIGHTING_LAYER 17
+#define CAMERA_STATIC_PLANE 18
+#define CAMERA_STATIC_LAYER 18
//HUD layer defines
-#define FULLSCREEN_PLANE 18
-#define FLASH_LAYER 18
-#define FULLSCREEN_LAYER 18.1
-#define UI_DAMAGE_LAYER 18.2
-#define BLIND_LAYER 18.3
-#define CRIT_LAYER 18.4
-#define CURSE_LAYER 18.5
+#define FULLSCREEN_PLANE 19
+#define FLASH_LAYER 19
+#define FULLSCREEN_LAYER 19.1
+#define UI_DAMAGE_LAYER 19.2
+#define BLIND_LAYER 19.3
+#define CRIT_LAYER 19.4
+#define CURSE_LAYER 19.5
-#define HUD_PLANE 19
-#define HUD_LAYER 19
-#define ABOVE_HUD_PLANE 20
-#define ABOVE_HUD_LAYER 20
+#define HUD_PLANE 20
+#define HUD_LAYER 20
+#define ABOVE_HUD_PLANE 21
+#define ABOVE_HUD_LAYER 21
-#define SPLASHSCREEN_LAYER 21
-#define SPLASHSCREEN_PLANE 21
+#define SPLASHSCREEN_LAYER 22
+#define SPLASHSCREEN_PLANE 22
diff --git a/code/__DEFINES/logging.dm b/code/__DEFINES/logging.dm
index f4e5c6eb55..55131a26ed 100644
--- a/code/__DEFINES/logging.dm
+++ b/code/__DEFINES/logging.dm
@@ -14,15 +14,34 @@
#define INVESTIGATE_HALLUCINATIONS "hallucinations"
#define INVESTIGATE_RADIATION "radiation"
#define INVESTIGATE_EXONET "exonet"
-#define INVESTIGATE_CIRCUIT "circuit"
#define INVESTIGATE_NANITES "nanites"
+#define INVESTIGATE_CIRCUIT "circuit"
+
+// Logging types for log_message()
+#define LOG_ATTACK (1 << 0)
+#define LOG_SAY (1 << 1)
+#define LOG_WHISPER (1 << 2)
+#define LOG_EMOTE (1 << 3)
+#define LOG_DSAY (1 << 4)
+#define LOG_PDA (1 << 5)
+#define LOG_CHAT (1 << 6)
+#define LOG_COMMENT (1 << 7)
+#define LOG_TELECOMMS (1 << 8)
+#define LOG_OOC (1 << 9)
+#define LOG_ADMIN (1 << 10)
+#define LOG_OWNERSHIP (1 << 11)
+#define LOG_GAME (1 << 12)
+#define LOG_ADMIN_PRIVATE (1 << 13)
+#define LOG_ASAY (1 << 14)
+
+//Individual logging panel pages
+#define INDIVIDUAL_ATTACK_LOG (LOG_ATTACK)
+#define INDIVIDUAL_SAY_LOG (LOG_SAY | LOG_WHISPER | LOG_DSAY)
+#define INDIVIDUAL_EMOTE_LOG (LOG_EMOTE)
+#define INDIVIDUAL_COMMS_LOG (LOG_PDA | LOG_CHAT | LOG_COMMENT | LOG_TELECOMMS)
+#define INDIVIDUAL_OOC_LOG (LOG_OOC | LOG_ADMIN)
+#define INDIVIDUAL_OWNERSHIP_LOG (LOG_OWNERSHIP)
+#define INDIVIDUAL_SHOW_ALL_LOG (LOG_ATTACK | LOG_SAY | LOG_WHISPER | LOG_EMOTE | LOG_DSAY | LOG_PDA | LOG_CHAT | LOG_COMMENT | LOG_TELECOMMS | LOG_OOC | LOG_ADMIN | LOG_OWNERSHIP | LOG_GAME)
-//Individual logging defines
-#define INDIVIDUAL_ATTACK_LOG "Attack log"
-#define INDIVIDUAL_SAY_LOG "Say log"
-#define INDIVIDUAL_EMOTE_LOG "Emote log"
-#define INDIVIDUAL_OOC_LOG "OOC log"
-#define INDIVIDUAL_OWNERSHIP_LOG "Ownership log"
-#define INDIVIDUAL_SHOW_ALL_LOG "All logs"
#define LOGSRC_CLIENT "Client"
#define LOGSRC_MOB "Mob"
diff --git a/code/__DEFINES/maps.dm b/code/__DEFINES/maps.dm
index 1defe2bc39..be1e671756 100644
--- a/code/__DEFINES/maps.dm
+++ b/code/__DEFINES/maps.dm
@@ -37,6 +37,8 @@ require only minor tweaks.
#define ZTRAIT_AWAY "Away Mission"
#define ZTRAIT_SPACE_RUINS "Space Ruins"
#define ZTRAIT_LAVA_RUINS "Lava Ruins"
+// prevents certain turfs from being stripped by a singularity
+#define ZTRAIT_PLANET "Planet"
// number - bombcap is multiplied by this before being applied to bombs
#define ZTRAIT_BOMBCAP_MULTIPLIER "Bombcap Multiplier"
diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm
index c463370aa7..fac666700f 100644
--- a/code/__DEFINES/misc.dm
+++ b/code/__DEFINES/misc.dm
@@ -173,6 +173,7 @@ GLOBAL_LIST_EMPTY(bloody_footprints_cache)
#define BLOOD_STATE_XENO "xeno"
#define BLOOD_STATE_OIL "oil"
#define BLOOD_STATE_NOT_BLOODY "no blood whatsoever"
+#define BLOOD_AMOUNT_PER_DECAL 20
//suit sensors: sensor_mode defines
@@ -448,6 +449,8 @@ GLOBAL_LIST_INIT(pda_styles, list(MONO, VT, ORBITRON, SHARE))
#define OVERRIDE_LOG_DIRECTORY_PARAMETER "log-directory"
//Prevent the master controller from starting automatically, overrides TEST_RUN_PARAMETER
#define NO_INIT_PARAMETER "no-init"
+//Force the config directory to be something other than "config"
+#define OVERRIDE_CONFIG_DIRECTORY_PARAMETER "config-directory"
#define EGG_LAYING_MESSAGES list("lays an egg.","squats down and croons.","begins making a huge racket.","begins clucking raucously.")
@@ -465,3 +468,5 @@ GLOBAL_LIST_INIT(pda_styles, list(MONO, VT, ORBITRON, SHARE))
#define CAMERA_NO_GHOSTS 0
#define CAMERA_SEE_GHOSTS_BASIC 1
#define CAMERA_SEE_GHOSTS_ORBIT 2
+
+#define CLIENT_FROM_VAR(I) (ismob(I) ? I:client : (istype(I, /client) ? I : (istype(I, /datum/mind) ? I:current?:client : null)))
diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm
index 34c7efab35..b7d467c385 100644
--- a/code/__DEFINES/mobs.dm
+++ b/code/__DEFINES/mobs.dm
@@ -138,14 +138,6 @@
#define SANITY_CRAZY 25
#define SANITY_INSANE 0
-//Beauty levels of areas for carbons
-#define BEAUTY_LEVEL_HORRID -100
-#define BEAUTY_LEVEL_BAD -66
-#define BEAUTY_LEVEL_MEH -33
-#define BEAUTY_LEVEL_DECENT 33
-#define BEAUTY_LEVEL_GOOD 66
-#define BEAUTY_LEVEL_GREAT 100
-
//Nutrition levels for humans
#define NUTRITION_LEVEL_FAT 600
#define NUTRITION_LEVEL_FULL 550
@@ -263,3 +255,6 @@
// AI Toggles
#define AI_CAMERA_LUMINOSITY 5
#define AI_VOX // Comment out if you don't want VOX to be enabled and have players download the voice sounds.
+
+// /obj/item/bodypart on_mob_life() retval flag
+#define BODYPART_LIFE_UPDATE_HEALTH (1<<0)
diff --git a/code/__DEFINES/movespeed_modification.dm b/code/__DEFINES/movespeed_modification.dm
new file mode 100644
index 0000000000..9f8d310193
--- /dev/null
+++ b/code/__DEFINES/movespeed_modification.dm
@@ -0,0 +1,31 @@
+#define MOVESPEED_DATA_INDEX_PRIORITY 1
+#define MOVESPEED_DATA_INDEX_FLAGS 2
+#define MOVESPEED_DATA_INDEX_MULTIPLICATIVE_SLOWDOWN 3
+
+#define MOVESPEED_DATA_INDEX_MAX 3
+
+//flags
+#define IGNORE_NOSLOW (1 << 0)
+
+//ids
+
+#define MOVESPEED_ID_MOB_WALK_RUN_CONFIG_SPEED "MOB_WALK_RUN"
+#define MOVESPEED_ID_CONFIG_SPEEDMOD "MOB_CONFIG_MODIFIER"
+
+#define MOVESPEED_ID_SLIME_REAGENTMOD "SLIME_REAGENT_MODIFIER"
+#define MOVESPEED_ID_SLIME_HEALTHMOD "SLIME_HEALTH_MODIFIER"
+#define MOVESPEED_ID_SLIME_TEMPMOD "SLIME_TEMPERATURE_MODIFIER"
+
+#define MOVESPEED_ID_LIVING_TURF_SPEEDMOD "LIVING_TURF_SPEEDMOD"
+
+#define MOVESPEED_ID_CARBON_SOFTCRIT "CARBON_SOFTCRIT"
+#define MOVESPEED_ID_CARBON_OLDSPEED "CARBON_DEPRECATED_SPEED"
+
+#define MOVESPEED_ID_MONKEY_REAGENT_SPEEDMOD "MONKEY_REAGENT_SPEEDMOD"
+#define MOVESPEED_ID_MONKEY_TEMPERATURE_SPEEDMOD "MONKEY_TEMPERATURE_SPEEDMOD"
+#define MOVESPEED_ID_MONKEY_HEALTH_SPEEDMOD "MONKEY_HEALTH_SPEEDMOD"
+
+#define MOVESPEED_ID_SIMPLEMOB_VARSPEED "SIMPLEMOB_VARSPEED_MODIFIER"
+#define MOVESPEED_ID_ADMIN_VAREDIT "ADMIN_VAREDIT_MODIFIER"
+
+#define MOVESPEED_ID_PAI_SPACEWALK_SPEEDMOD "PAI_SPACEWALK_MODIFIER"
\ No newline at end of file
diff --git a/code/__DEFINES/role_preferences.dm b/code/__DEFINES/role_preferences.dm
index 57cdfe3880..6773d55e53 100644
--- a/code/__DEFINES/role_preferences.dm
+++ b/code/__DEFINES/role_preferences.dm
@@ -6,27 +6,34 @@
//These are synced with the Database, if you change the values of the defines
//then you MUST update the database!
-#define ROLE_SYNDICATE "Syndicate"
-#define ROLE_TRAITOR "traitor"
-#define ROLE_OPERATIVE "operative"
-#define ROLE_CHANGELING "changeling"
-#define ROLE_WIZARD "wizard"
-#define ROLE_MALF "malf AI"
-#define ROLE_REV "revolutionary"
-#define ROLE_REV_HEAD "Head Revolutionary"
-#define ROLE_ALIEN "xenomorph"
-#define ROLE_PAI "pAI"
-#define ROLE_CULTIST "cultist"
-#define ROLE_BLOB "blob"
-#define ROLE_NINJA "space ninja"
-#define ROLE_MONKEY "monkey"
-#define ROLE_ABDUCTOR "abductor"
-#define ROLE_REVENANT "revenant"
-#define ROLE_DEVIL "devil"
-#define ROLE_SERVANT_OF_RATVAR "servant of Ratvar"
-#define ROLE_BROTHER "blood brother"
-#define ROLE_BRAINWASHED "brainwashed victim"
-#define ROLE_MISCREANT "miscreant"
+#define ROLE_SYNDICATE "Syndicate"
+#define ROLE_TRAITOR "traitor"
+#define ROLE_OPERATIVE "operative"
+#define ROLE_CHANGELING "changeling"
+#define ROLE_WIZARD "wizard"
+#define ROLE_MALF "malf AI"
+#define ROLE_REV "revolutionary"
+#define ROLE_REV_HEAD "Head Revolutionary"
+#define ROLE_ALIEN "xenomorph"
+#define ROLE_PAI "pAI"
+#define ROLE_CULTIST "cultist"
+#define ROLE_BLOB "blob"
+#define ROLE_NINJA "space ninja"
+#define ROLE_MONKEY "monkey"
+#define ROLE_ABDUCTOR "abductor"
+#define ROLE_REVENANT "revenant"
+#define ROLE_DEVIL "devil"
+#define ROLE_SERVANT_OF_RATVAR "servant of Ratvar"
+#define ROLE_BROTHER "blood brother"
+#define ROLE_BRAINWASHED "brainwashed victim"
+#define ROLE_OVERTHROW "syndicate mutineer"
+#define ROLE_SENTIENCE "sentience potion spawn"
+#define ROLE_MIND_TRANSFER "mind transfer potion"
+#define ROLE_POSIBRAIN "posibrain"
+#define ROLE_DRONE "drone"
+#define ROLE_DEATHSQUAD "deathsquad"
+#define ROLE_LAVALAND "lavaland"
+#define ROLE_INTERNAL_AFFAIRS "internal affairs agent"
//Missing assignment means it's not a gamemode specific role, IT'S NOT A BUG OR ERROR.
//The gamemode specific ones are just so the gamemodes can query whether a player is old enough
@@ -49,7 +56,9 @@ GLOBAL_LIST_INIT(special_roles, list(
ROLE_ABDUCTOR,
ROLE_DEVIL = /datum/game_mode/devil,
ROLE_SERVANT_OF_RATVAR = /datum/game_mode/clockwork_cult,
- ROLE_MISCREANT
+ ROLE_OVERTHROW = /datum/game_mode/overthrow,
+ ROLE_INTERNAL_AFFAIRS = /datum/game_mode/traitor/internal_affairs,
+ ROLE_SENTIENCE
))
//Job defines for what happens when you fail to qualify for any job during job selection
diff --git a/code/__DEFINES/say.dm b/code/__DEFINES/say.dm
index c5708034fe..102cc94fac 100644
--- a/code/__DEFINES/say.dm
+++ b/code/__DEFINES/say.dm
@@ -42,17 +42,6 @@
#define TURF_LINK(alice, turfy) "(T)"
#define FOLLOW_OR_TURF_LINK(alice, bob, turfy) "(F)"
-#define LOGSAY "say"
-#define LOGWHISPER "whisper"
-#define LOGEMOTE "emote"
-#define LOGDSAY "dsay"
-#define LOGPDA "pda"
-#define LOGCHAT "chat"
-#define LOGASAY "adminsay"
-#define LOGCOMMENT "comment"
-#define LOGOOC "ooc"
-
-
#define LINGHIVE_NONE 0
#define LINGHIVE_OUTSIDER 1
#define LINGHIVE_LING 2
diff --git a/code/__DEFINES/shuttles.dm b/code/__DEFINES/shuttles.dm
index 056c5a4565..c8a583a55e 100644
--- a/code/__DEFINES/shuttles.dm
+++ b/code/__DEFINES/shuttles.dm
@@ -14,13 +14,13 @@
// Shuttle return values
#define SHUTTLE_CAN_DOCK "can_dock"
-#define SHUTTLE_NOT_A_DOCKING_PORT "not_a_docking_port"
-#define SHUTTLE_DWIDTH_TOO_LARGE "docking_width_too_large"
-#define SHUTTLE_WIDTH_TOO_LARGE "width_too_large"
-#define SHUTTLE_DHEIGHT_TOO_LARGE "docking_height_too_large"
-#define SHUTTLE_HEIGHT_TOO_LARGE "height_too_large"
-#define SHUTTLE_ALREADY_DOCKED "we_are_already_docked"
-#define SHUTTLE_SOMEONE_ELSE_DOCKED "someone_else_docked"
+#define SHUTTLE_NOT_A_DOCKING_PORT "not a docking port"
+#define SHUTTLE_DWIDTH_TOO_LARGE "docking width too large"
+#define SHUTTLE_WIDTH_TOO_LARGE "width too large"
+#define SHUTTLE_DHEIGHT_TOO_LARGE "docking height too large"
+#define SHUTTLE_HEIGHT_TOO_LARGE "height too large"
+#define SHUTTLE_ALREADY_DOCKED "we are already docked"
+#define SHUTTLE_SOMEONE_ELSE_DOCKED "someone else docked"
//Launching Shuttles to CentCom
#define NOLAUNCH -1
diff --git a/code/__DEFINES/sight.dm b/code/__DEFINES/sight.dm
index b7643fc5b1..5cac290082 100644
--- a/code/__DEFINES/sight.dm
+++ b/code/__DEFINES/sight.dm
@@ -28,3 +28,8 @@
#define VISOR_VISIONFLAGS (1<<2) //all following flags only matter for glasses
#define VISOR_DARKNESSVIEW (1<<3)
#define VISOR_INVISVIEW (1<<4)
+
+//for whether AI eyes see static, and whether it is mouse-opaque or not
+#define USE_STATIC_NONE 0
+#define USE_STATIC_TRANSPARENT 1
+#define USE_STATIC_OPAQUE 2
diff --git a/code/__DEFINES/sound.dm b/code/__DEFINES/sound.dm
index 384b857978..5afd705420 100644
--- a/code/__DEFINES/sound.dm
+++ b/code/__DEFINES/sound.dm
@@ -3,12 +3,12 @@
#define CHANNEL_ADMIN 1023
#define CHANNEL_VOX 1022
#define CHANNEL_JUKEBOX 1021
-#define CHANNEL_JUKEBOX_START 1016
-#define CHANNEL_JUSTICAR_ARK 1015
-#define CHANNEL_HEARTBEAT 1014 //sound channel for heartbeats
-#define CHANNEL_AMBIENCE 1013
-#define CHANNEL_BUZZ 1012
-#define CHANNEL_BICYCLE 1011
+#define CHANNEL_JUKEBOX_START 1020
+#define CHANNEL_JUSTICAR_ARK 1019
+#define CHANNEL_HEARTBEAT 1018 //sound channel for heartbeats
+#define CHANNEL_AMBIENCE 1017
+#define CHANNEL_BUZZ 1016
+#define CHANNEL_BICYCLE 1015
//CIT CHANNELS - TRY NOT TO REGRESS
#define CHANNEL_PRED 1010
diff --git a/code/__DEFINES/subsystems.dm b/code/__DEFINES/subsystems.dm
index 06a70a4f49..b60894edea 100644
--- a/code/__DEFINES/subsystems.dm
+++ b/code/__DEFINES/subsystems.dm
@@ -1,7 +1,7 @@
//Update this whenever the db schema changes
//make sure you add an update to the schema_version stable in the db changelog
#define DB_MAJOR_VERSION 4
-#define DB_MINOR_VERSION 5
+#define DB_MINOR_VERSION 7
//Timing subsystem
//Don't run if there is an identical unique timer active
@@ -18,6 +18,9 @@
//To be used with TIMER_UNIQUE
//prevents distinguishing identical timers with the wait variable
#define TIMER_NO_HASH_WAIT (1<<4)
+//Loops the timer repeatedly until qdeleted
+//In most cases you want a subsystem instead
+#define TIMER_LOOP (1<<5)
#define TIMER_NO_INVOKE_WARNING 600 //number of byond ticks that are allowed to pass before the timer subsystem thinks it hung on something
@@ -48,37 +51,38 @@
// Subsystems shutdown in the reverse of the order they initialize in
// The numbers just define the ordering, they are meaningless otherwise.
-#define INIT_ORDER_GARBAGE 19
-#define INIT_ORDER_DBCORE 18
-#define INIT_ORDER_BLACKBOX 17
-#define INIT_ORDER_SERVER_MAINT 16
-#define INIT_ORDER_INPUT 15
-#define INIT_ORDER_RESEARCH 14
-#define INIT_ORDER_EVENTS 13
-#define INIT_ORDER_JOBS 12
-#define INIT_ORDER_QUIRKS 11
-#define INIT_ORDER_TICKER 10
-#define INIT_ORDER_MAPPING 9
-#define INIT_ORDER_NETWORKS 8
-#define INIT_ORDER_ATOMS 7
-#define INIT_ORDER_LANGUAGE 6
-#define INIT_ORDER_MACHINES 5
-#define INIT_ORDER_CIRCUIT 4
-#define INIT_ORDER_TIMER 1
-#define INIT_ORDER_DEFAULT 0
-#define INIT_ORDER_AIR -1
-#define INIT_ORDER_AIR_TURFS -2
-#define INIT_ORDER_MINIMAP -3
-#define INIT_ORDER_ASSETS -4
-#define INIT_ORDER_ICON_SMOOTHING -5
-#define INIT_ORDER_OVERLAY -6
-#define INIT_ORDER_XKEYSCORE -10
-#define INIT_ORDER_STICKY_BAN -10
-#define INIT_ORDER_LIGHTING -20
-#define INIT_ORDER_SHUTTLE -21
-#define INIT_ORDER_SQUEAK -40
-#define INIT_ORDER_PATH -50
-#define INIT_ORDER_PERSISTENCE -100
+#define INIT_ORDER_GARBAGE 19
+#define INIT_ORDER_DBCORE 18
+#define INIT_ORDER_BLACKBOX 17
+#define INIT_ORDER_SERVER_MAINT 16
+#define INIT_ORDER_INPUT 15
+#define INIT_ORDER_VIS 14
+#define INIT_ORDER_RESEARCH 13
+#define INIT_ORDER_EVENTS 12
+#define INIT_ORDER_JOBS 11
+#define INIT_ORDER_QUIRKS 10
+#define INIT_ORDER_TICKER 9
+#define INIT_ORDER_MAPPING 8
+#define INIT_ORDER_NETWORKS 7
+#define INIT_ORDER_ATOMS 6
+#define INIT_ORDER_LANGUAGE 5
+#define INIT_ORDER_MACHINES 4
+#define INIT_ORDER_CIRCUIT 3
+#define INIT_ORDER_TIMER 1
+#define INIT_ORDER_DEFAULT 0
+#define INIT_ORDER_AIR -1
+#define INIT_ORDER_AIR_TURFS -2
+#define INIT_ORDER_MINIMAP -3
+#define INIT_ORDER_ASSETS -4
+#define INIT_ORDER_ICON_SMOOTHING -5
+#define INIT_ORDER_OVERLAY -6
+#define INIT_ORDER_XKEYSCORE -10
+#define INIT_ORDER_STICKY_BAN -10
+#define INIT_ORDER_LIGHTING -20
+#define INIT_ORDER_SHUTTLE -21
+#define INIT_ORDER_SQUEAK -40
+#define INIT_ORDER_PATH -50
+#define INIT_ORDER_PERSISTENCE -100
// Subsystem fire priority, from lowest to highest priority
// If the subsystem isn't listed here it's either DEFAULT or PROCESS (if it's a processing subsystem child)
@@ -87,6 +91,7 @@
#define FIRE_PRIORITY_IDLE_NPC 10
#define FIRE_PRIORITY_SERVER_MAINT 10
#define FIRE_PRIORITY_RESEARCH 10
+#define FIRE_PRIORITY_VIS 10
#define FIRE_PRIORITY_GARBAGE 15
#define FIRE_PRIORITY_WET_FLOORS 20
#define FIRE_PRIORITY_AIR 20
@@ -101,7 +106,7 @@
#define FIRE_PRIORITY_OBJ 40
#define FIRE_PRIORITY_ACID 40
#define FIRE_PRIOTITY_BURNING 40
-#define FIRE_PRIORITY_AIR_TURFS 40
+#define FIRE_PRIORITY_AIR_TURFS 40
#define FIRE_PRIORITY_DEFAULT 50
#define FIRE_PRIORITY_PARALLAX 65
#define FIRE_PRIORITY_FLIGHTPACKS 80
diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm
index c645420162..2455d373ab 100644
--- a/code/__DEFINES/traits.dm
+++ b/code/__DEFINES/traits.dm
@@ -14,7 +14,8 @@
#define TRAIT_IGNORESLOWDOWN "ignoreslow"
#define TRAIT_GOTTAGOFAST "fast"
#define TRAIT_GOTTAGOREALLYFAST "2fast"
-#define TRAIT_FAKEDEATH "fakedeath"
+#define TRAIT_DEATHCOMA "deathcoma" //Causes death-like unconsciousness
+#define TRAIT_FAKEDEATH "fakedeath" //Makes the owner appear as dead to most forms of medical examination
#define TRAIT_DISFIGURED "disfigured"
#define TRAIT_XENO_HOST "xeno_host" //Tracks whether we're gonna be a baby alien's mummy.
#define TRAIT_STUNIMMUNE "stun_immunity"
@@ -64,6 +65,9 @@
#define TRAIT_POOR_AIM "poor_aim"
#define TRAIT_PROSOPAGNOSIA "prosopagnosia"
#define TRAIT_DRUNK_HEALING "drunk_healing"
+#define TRAIT_TAGGER "tagger"
+#define TRAIT_PHOTOGRAPHER "photographer"
+#define TRAIT_MUSICIAN "musician"
// common trait sources
#define TRAIT_GENERIC "generic"
@@ -86,3 +90,4 @@
#define STASIS_MUTE "stasis"
#define GENETICS_SPELL "genetics_spell"
#define EYES_COVERED "eyes_covered"
+#define CULT_EYES "cult_eyes"
\ No newline at end of file
diff --git a/code/__DEFINES/vehicles.dm b/code/__DEFINES/vehicles.dm
new file mode 100644
index 0000000000..0bcc14d0d7
--- /dev/null
+++ b/code/__DEFINES/vehicles.dm
@@ -0,0 +1,9 @@
+//Vehicle control flags
+
+#define VEHICLE_CONTROL_PERMISSION 1
+#define VEHICLE_CONTROL_DRIVE 2
+#define VEHICLE_CONTROL_KIDNAPPED 4 //Can't leave vehicle voluntarily, has to resist.
+
+
+//Car trait flags
+#define CAN_KIDNAP 1
\ No newline at end of file