diff --git a/code/game/gamemodes/devil/true_devil/_true_devil.dm b/code/game/gamemodes/devil/true_devil/_true_devil.dm
index 9b24d096c4..10f0b3393f 100644
--- a/code/game/gamemodes/devil/true_devil/_true_devil.dm
+++ b/code/game/gamemodes/devil/true_devil/_true_devil.dm
@@ -17,6 +17,7 @@
var/ascended = FALSE
sight = (SEE_TURFS | SEE_OBJS)
status_flags = CANPUSH
+ spacewalk = TRUE
mob_size = MOB_SIZE_LARGE
var/mob/living/oldform
var/list/devil_overlays[DEVIL_TOTAL_LAYERS]
@@ -135,9 +136,6 @@
"[attack_message]", null, COMBAT_MESSAGE_RANGE)
return TRUE
-/mob/living/carbon/true_devil/Process_Spacemove(movement_dir = 0)
- return 1
-
/mob/living/carbon/true_devil/singularity_act()
if(ascended)
return 0
diff --git a/code/game/gamemodes/miniantags/revenant/revenant.dm b/code/game/gamemodes/miniantags/revenant/revenant.dm
index e72babc5b0..04a5f4d2be 100644
--- a/code/game/gamemodes/miniantags/revenant/revenant.dm
+++ b/code/game/gamemodes/miniantags/revenant/revenant.dm
@@ -21,6 +21,7 @@
maxHealth = INFINITY
layer = GHOST_LAYER
healable = FALSE
+ spacewalk = TRUE
sight = SEE_SELF
see_in_dark = 8
@@ -153,8 +154,6 @@
//Immunities
-/mob/living/simple_animal/revenant/Process_Spacemove(movement_dir = 0)
- return 1
/mob/living/simple_animal/revenant/ex_act(severity, target)
return 1 //Immune to the effects of explosions.
diff --git a/code/modules/mob/living/simple_animal/bot/floorbot.dm b/code/modules/mob/living/simple_animal/bot/floorbot.dm
index 1c3adb1dfe..a0008b83b9 100644
--- a/code/modules/mob/living/simple_animal/bot/floorbot.dm
+++ b/code/modules/mob/living/simple_animal/bot/floorbot.dm
@@ -8,6 +8,7 @@
anchored = FALSE
health = 25
maxHealth = 25
+ spacewalk = TRUE
radio_key = /obj/item/device/encryptionkey/headset_eng
radio_channel = "Engineering"
@@ -45,9 +46,6 @@
access_card.access += J.get_access()
prev_access = access_card.access
-/mob/living/simple_animal/bot/floorbot/Process_Spacemove(movement_dir = 0)
- return 1
-
/mob/living/simple_animal/bot/floorbot/turn_on()
. = ..()
update_icon()
diff --git a/code/modules/mob/living/simple_animal/constructs.dm b/code/modules/mob/living/simple_animal/constructs.dm
index 5f216b7903..0e6ecf1672 100644
--- a/code/modules/mob/living/simple_animal/constructs.dm
+++ b/code/modules/mob/living/simple_animal/constructs.dm
@@ -10,6 +10,7 @@
speak_chance = 1
icon = 'icons/mob/mob.dmi'
speed = 0
+ spacewalk = TRUE
a_intent = INTENT_HARM
stop_automated_movement = 1
status_flags = CANPUSH
@@ -85,9 +86,6 @@
else if(src != M)
return ..()
-/mob/living/simple_animal/hostile/construct/Process_Spacemove(movement_dir = 0)
- return 1
-
/mob/living/simple_animal/hostile/construct/narsie_act()
return
diff --git a/code/modules/mob/living/simple_animal/hostile/bear.dm b/code/modules/mob/living/simple_animal/hostile/bear.dm
index 6b08d041c0..ef662c8f5a 100644
--- a/code/modules/mob/living/simple_animal/hostile/bear.dm
+++ b/code/modules/mob/living/simple_animal/hostile/bear.dm
@@ -20,6 +20,7 @@
response_harm = "hits"
maxHealth = 60
health = 60
+ spacewalk = TRUE
var/armored = FALSE
obj_damage = 60
@@ -67,9 +68,6 @@
maxHealth = 120
armored = TRUE
-/mob/living/simple_animal/hostile/bear/Process_Spacemove(movement_dir = 0)
- return 1 //No drifting in space for space bears!
-
/mob/living/simple_animal/hostile/bear/update_icons()
..()
if(armored)
diff --git a/code/modules/mob/living/simple_animal/hostile/bees.dm b/code/modules/mob/living/simple_animal/hostile/bees.dm
index 0213a79e4a..02252254c9 100644
--- a/code/modules/mob/living/simple_animal/hostile/bees.dm
+++ b/code/modules/mob/living/simple_animal/hostile/bees.dm
@@ -28,6 +28,7 @@
response_harm = "squashes"
maxHealth = 10
health = 10
+ spacewalk = TRUE
faction = list("hostile")
move_to_delay = 0
obj_damage = 0
@@ -52,11 +53,6 @@
var/static/beehometypecache = typecacheof(/obj/structure/beebox)
var/static/hydroponicstypecache = typecacheof(/obj/machinery/hydroponics)
-
-/mob/living/simple_animal/hostile/poison/bees/Process_Spacemove(movement_dir = 0)
- return 1
-
-
/mob/living/simple_animal/hostile/poison/bees/Initialize()
. = ..()
generate_bee_visuals()
diff --git a/code/modules/mob/living/simple_animal/hostile/carp.dm b/code/modules/mob/living/simple_animal/hostile/carp.dm
index 806a916421..4be394e2b5 100644
--- a/code/modules/mob/living/simple_animal/hostile/carp.dm
+++ b/code/modules/mob/living/simple_animal/hostile/carp.dm
@@ -18,6 +18,7 @@
speed = 0
maxHealth = 25
health = 25
+ spacewalk = TRUE
harm_intent_damage = 8
obj_damage = 50
@@ -36,9 +37,6 @@
pressure_resistance = 200
gold_core_spawnable = 1
-/mob/living/simple_animal/hostile/carp/Process_Spacemove(movement_dir = 0)
- return 1 //No drifting in space for space carp! //original comments do not steal
-
/mob/living/simple_animal/hostile/carp/AttackingTarget()
. = ..()
if(. && ishuman(target))
diff --git a/code/modules/mob/living/simple_animal/hostile/faithless.dm b/code/modules/mob/living/simple_animal/hostile/faithless.dm
index 1807e39a71..2406335915 100644
--- a/code/modules/mob/living/simple_animal/hostile/faithless.dm
+++ b/code/modules/mob/living/simple_animal/hostile/faithless.dm
@@ -1,3 +1,4 @@
+<<<<<<< HEAD
/mob/living/simple_animal/hostile/faithless
name = "The Faithless"
desc = "The Wish Granter's faith in humanity, incarnate."
@@ -42,3 +43,47 @@
C.Knockdown(60)
C.visible_message("\The [src] knocks down \the [C]!", \
"\The [src] knocks you down!")
+=======
+/mob/living/simple_animal/hostile/faithless
+ name = "The Faithless"
+ desc = "The Wish Granter's faith in humanity, incarnate."
+ icon_state = "faithless"
+ icon_living = "faithless"
+ icon_dead = "faithless_dead"
+ gender = MALE
+ speak_chance = 0
+ turns_per_move = 5
+ response_help = "passes through"
+ response_disarm = "shoves"
+ response_harm = "hits"
+ emote_taunt = list("wails")
+ taunt_chance = 25
+ speed = 0
+ maxHealth = 80
+ health = 80
+ spacewalk = TRUE
+ stat_attack = UNCONSCIOUS
+ robust_searching = 1
+
+ harm_intent_damage = 10
+ obj_damage = 50
+ melee_damage_lower = 15
+ melee_damage_upper = 15
+ attacktext = "grips"
+ attack_sound = 'sound/hallucinations/growl1.ogg'
+ speak_emote = list("growls")
+
+ atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
+ minbodytemp = 0
+
+ faction = list("faithless")
+ gold_core_spawnable = 1
+
+/mob/living/simple_animal/hostile/faithless/AttackingTarget()
+ . = ..()
+ if(. && prob(12) && iscarbon(target))
+ var/mob/living/carbon/C = target
+ C.Knockdown(60)
+ C.visible_message("\The [src] knocks down \the [C]!", \
+ "\The [src] knocks you down!")
+>>>>>>> 3a36c13... Process_Spacemove proc improvement (#32515)
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm
index 791021d42b..7f12e684e8 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/dragon.dm
@@ -36,6 +36,7 @@ Difficulty: Medium
desc = "Guardians of the necropolis."
health = 2500
maxHealth = 2500
+ spacewalk = TRUE
attacktext = "chomps"
attack_sound = 'sound/magic/demon_attack1.ogg'
icon_state = "dragon"
@@ -97,9 +98,6 @@ Difficulty: Medium
if(!swooping)
..()
-/mob/living/simple_animal/hostile/megafauna/dragon/Process_Spacemove(movement_dir = 0)
- return 1
-
/mob/living/simple_animal/hostile/megafauna/dragon/OpenFire()
if(swooping)
return
diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm
index 5b987edc0e..ee0c16a768 100644
--- a/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm
+++ b/code/modules/mob/living/simple_animal/hostile/megafauna/legion.dm
@@ -21,6 +21,7 @@ Difficulty: Medium
name = "Legion"
health = 800
maxHealth = 800
+ spacewalk = TRUE
icon_state = "legion"
icon_living = "legion"
desc = "One of many."
@@ -139,9 +140,6 @@ Difficulty: Medium
loot = list(/obj/structure/closet/crate/necropolis/tendril)
..()
-/mob/living/simple_animal/hostile/megafauna/legion/Process_Spacemove(movement_dir = 0)
- return 1
-
/obj/item/device/gps/internal/legion
icon_state = null
gpstag = "Echoing Signal"
diff --git a/code/modules/mob/living/simple_animal/hostile/pirate.dm b/code/modules/mob/living/simple_animal/hostile/pirate.dm
index f058464981..6237b22748 100644
--- a/code/modules/mob/living/simple_animal/hostile/pirate.dm
+++ b/code/modules/mob/living/simple_animal/hostile/pirate.dm
@@ -1,3 +1,4 @@
+<<<<<<< HEAD
/mob/living/simple_animal/hostile/pirate
name = "Pirate"
desc = "Does what he wants cause a pirate is free."
@@ -66,3 +67,72 @@
/mob/living/simple_animal/hostile/pirate/space/Process_Spacemove(movement_dir = 0)
return 1
+=======
+/mob/living/simple_animal/hostile/pirate
+ name = "Pirate"
+ desc = "Does what he wants cause a pirate is free."
+ icon = 'icons/mob/simple_human.dmi'
+ icon_state = "piratemelee"
+ icon_living = "piratemelee"
+ icon_dead = "piratemelee_dead"
+ speak_chance = 0
+ turns_per_move = 5
+ response_help = "pushes"
+ response_disarm = "shoves"
+ response_harm = "hits"
+ speed = 0
+ maxHealth = 100
+ health = 100
+ spacewalk = TRUE
+
+ harm_intent_damage = 5
+ obj_damage = 60
+ melee_damage_lower = 30
+ melee_damage_upper = 30
+ attacktext = "slashes"
+ attack_sound = 'sound/weapons/bladeslice.ogg'
+
+ atmos_requirements = list("min_oxy" = 5, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 1, "min_co2" = 0, "max_co2" = 5, "min_n2" = 0, "max_n2" = 0)
+ unsuitable_atmos_damage = 15
+ speak_emote = list("yarrs")
+ loot = list(/obj/effect/mob_spawn/human/corpse/pirate,
+ /obj/item/melee/transforming/energy/sword/pirate)
+ del_on_death = 1
+ faction = list("pirate")
+
+/mob/living/simple_animal/hostile/pirate/ranged
+ name = "Pirate Gunner"
+ icon_state = "pirateranged"
+ icon_living = "pirateranged"
+ icon_dead = "piratemelee_dead"
+ projectilesound = 'sound/weapons/laser.ogg'
+ ranged = 1
+ rapid = 1
+ retreat_distance = 5
+ minimum_distance = 5
+ projectiletype = /obj/item/projectile/beam/laser
+ loot = list(/obj/effect/mob_spawn/human/corpse/pirate/ranged,
+ /obj/item/gun/energy/laser)
+
+/mob/living/simple_animal/hostile/pirate/space
+ name = "Space Pirate"
+ icon_state = "piratespace"
+ icon_living = "piratespace"
+ atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
+ minbodytemp = 0
+ speed = 1
+
+/mob/living/simple_animal/hostile/pirate/space/ranged
+ name = "Space Pirate Gunner"
+ icon_state = "piratespaceranged"
+ icon_living = "piratespaceranged"
+ projectilesound = 'sound/weapons/laser.ogg'
+ ranged = 1
+ rapid = 1
+ retreat_distance = 5
+ minimum_distance = 5
+ projectiletype = /obj/item/projectile/beam/laser
+ loot = list(/obj/effect/mob_spawn/human/corpse/pirate/ranged,
+ /obj/item/gun/energy/laser)
+
+>>>>>>> 3a36c13... Process_Spacemove proc improvement (#32515)
diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/bat.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/bat.dm
index d75e4acbc5..2fb4eb61bd 100644
--- a/code/modules/mob/living/simple_animal/hostile/retaliate/bat.dm
+++ b/code/modules/mob/living/simple_animal/hostile/retaliate/bat.dm
@@ -12,6 +12,7 @@
speak_chance = 0
maxHealth = 15
health = 15
+ spacewalk = TRUE
see_in_dark = 10
harm_intent_damage = 6
melee_damage_lower = 6
@@ -36,5 +37,3 @@
atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
minbodytemp = 0
-/mob/living/simple_animal/hostile/retaliate/bat/Process_Spacemove(movement_dir = 0)
- return 1
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_animal/hostile/syndicate.dm b/code/modules/mob/living/simple_animal/hostile/syndicate.dm
index 11331e7ab7..a17ec0ff66 100644
--- a/code/modules/mob/living/simple_animal/hostile/syndicate.dm
+++ b/code/modules/mob/living/simple_animal/hostile/syndicate.dm
@@ -55,6 +55,7 @@
status_flags = 0
maxHealth = 170
health = 170
+ spacewalk = TRUE
/mob/living/simple_animal/hostile/syndicate/melee/bullet_act(obj/item/projectile/Proj)
if(!Proj)
@@ -75,9 +76,6 @@
loot = list(/obj/effect/gibspawner/human)
speed = 1
-/mob/living/simple_animal/hostile/syndicate/melee/space/Process_Spacemove(movement_dir = 0)
- return 1
-
/mob/living/simple_animal/hostile/syndicate/melee/space/stormtrooper
icon_state = "syndicatemeleestormtrooper"
icon_living = "syndicatemeleestormtrooper"
@@ -106,11 +104,9 @@
atmos_requirements = list("min_oxy" = 0, "max_oxy" = 0, "min_tox" = 0, "max_tox" = 0, "min_co2" = 0, "max_co2" = 0, "min_n2" = 0, "max_n2" = 0)
minbodytemp = 0
speed = 1
+ spacewalk = TRUE
loot = list(/obj/effect/gibspawner/human)
-/mob/living/simple_animal/hostile/syndicate/ranged/space/Process_Spacemove(movement_dir = 0)
- return 1
-
/mob/living/simple_animal/hostile/syndicate/ranged/space/stormtrooper
icon_state = "syndicaterangedstormtrooper"
icon_living = "syndicaterangedstormtrooper"
diff --git a/code/modules/mob/living/simple_animal/shade.dm b/code/modules/mob/living/simple_animal/shade.dm
index d7c4f0cb03..ab2126e7b9 100644
--- a/code/modules/mob/living/simple_animal/shade.dm
+++ b/code/modules/mob/living/simple_animal/shade.dm
@@ -8,6 +8,7 @@
icon_living = "shade"
maxHealth = 50
health = 50
+ spacewalk = TRUE
healable = 0
speak_emote = list("hisses")
emote_hear = list("wails.","screeches.")
@@ -40,9 +41,6 @@
return 0
return ..()
-/mob/living/simple_animal/shade/Process_Spacemove(movement_dir = 0)
- return TRUE //this doesn't make much sense; you'd thing TRUE would mean it'd process spacemove but it means it doesn't
-
/mob/living/simple_animal/shade/attack_animal(mob/living/simple_animal/M)
if(isconstruct(M))
var/mob/living/simple_animal/hostile/construct/C = M
diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm
index 5260ace246..497f0536a0 100644
--- a/code/modules/mob/mob_defines.dm
+++ b/code/modules/mob/mob_defines.dm
@@ -46,6 +46,7 @@
var/slurring = 0 //Carbon
var/cultslurring = 0 //Carbon
var/real_name = null
+ var/spacewalk = FALSE
var/druggy = 0 //Carbon
var/confused = 0 //Carbon
var/resting = 0 //Carbon
diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm
index e99a4e0ae8..ad38ba98ac 100644
--- a/code/modules/mob/mob_movement.dm
+++ b/code/modules/mob/mob_movement.dm
@@ -297,7 +297,7 @@
///For moving in space
///return TRUE for movement 0 for none
/mob/Process_Spacemove(movement_dir = 0)
- if(..())
+ if(spacewalk || ..())
return TRUE
var/atom/movable/backup = get_spacemove_backup()
if(backup)