diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm
index 61aa9962d6b..558538d97ef 100644
--- a/code/__DEFINES/misc.dm
+++ b/code/__DEFINES/misc.dm
@@ -97,6 +97,7 @@
//used by canUseTopic()
//Sizes of mobs, used by mob/living/var/mob_size
+#define MOB_SIZE_TINY 0
#define MOB_SIZE_SMALL 1
#define MOB_SIZE_HUMAN 2
#define MOB_SIZE_LARGE 3
diff --git a/code/game/objects/items/weapons/handcuffs.dm b/code/game/objects/items/weapons/handcuffs.dm
index 17c514f8ffe..e12f568c694 100644
--- a/code/game/objects/items/weapons/handcuffs.dm
+++ b/code/game/objects/items/weapons/handcuffs.dm
@@ -1,3 +1,7 @@
+
+/obj/item/weapon/restraints
+ var/breakouttime = 600
+
//Handcuffs
/obj/item/weapon/restraints/handcuffs
@@ -14,7 +18,7 @@
throw_range = 5
m_amt = 500
origin_tech = "materials=1"
- var/breakouttime = 600 //Deciseconds = 60s = 1 minute
+ breakouttime = 600 //Deciseconds = 60s = 1 minute
var/cuffsound = 'sound/weapons/handcuffs.ogg'
var/trashtype = null //for disposable cuffs
@@ -144,7 +148,7 @@
w_class = 3.0
origin_tech = "materials=1"
slowdown = 7
- var/breakouttime = 300 //Deciseconds = 30s = 0.5 minute
+ breakouttime = 300 //Deciseconds = 30s = 0.5 minute
/obj/item/weapon/restraints/legcuffs/beartrap
name = "bear trap"
@@ -169,26 +173,29 @@
/obj/item/weapon/restraints/legcuffs/beartrap/Crossed(AM as mob|obj)
if(armed && isturf(src.loc))
- if( (iscarbon(AM) || isanimal(AM)) && !istype(AM, /mob/living/simple_animal/parrot) && !istype(AM, /mob/living/simple_animal/construct) && !istype(AM, /mob/living/simple_animal/shade) && !istype(AM, /mob/living/simple_animal/hostile/viscerator))
+ if(isliving(AM))
var/mob/living/L = AM
- armed = 0
- icon_state = "beartrap0"
- playsound(src.loc, 'sound/effects/snap.ogg', 50, 1)
- L.visible_message("[L] triggers \the [src].", \
- "You trigger \the [src]!")
-
- if(ishuman(AM))
- var/mob/living/carbon/H = AM
- if(H.lying)
- H.apply_damage(20,BRUTE,"chest")
- else
- H.apply_damage(20,BRUTE,(pick("l_leg", "r_leg")))
- if(!H.legcuffed) //beartrap can't cuff you leg if there's already a beartrap or legcuffs.
- H.legcuffed = src
- src.loc = H
- H.update_inv_legcuffed(0)
- feedback_add_details("handcuffs","B") //Yes, I know they're legcuffs. Don't change this, no need for an extra variable. The "B" is used to tell them apart.
-
- else
- L.apply_damage(20,BRUTE)
+ var/snap = 0
+ var/def_zone = "chest"
+ if(iscarbon(L))
+ var/mob/living/carbon/C = L
+ snap = 1
+ if(!C.lying)
+ def_zone = pick("l_leg", "r_leg")
+ if(!C.legcuffed) //beartrap can't cuff your leg if there's already a beartrap or legcuffs.
+ C.legcuffed = src
+ src.loc = C
+ C.update_inv_legcuffed(0)
+ feedback_add_details("handcuffs","B") //Yes, I know they're legcuffs. Don't change this, no need for an extra variable. The "B" is used to tell them apart.
+ else if(isanimal(L))
+ var/mob/living/simple_animal/SA = L
+ if(!SA.flying && SA.mob_size > MOB_SIZE_TINY)
+ snap = 1
+ if(snap)
+ armed = 0
+ icon_state = "beartrap0"
+ playsound(src.loc, 'sound/effects/snap.ogg', 50, 1)
+ L.visible_message("[L] triggers \the [src].", \
+ "You trigger \the [src]!")
+ L.apply_damage(20,BRUTE, def_zone)
..()
\ No newline at end of file
diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm
index d657f0e1b25..d2d654d66f6 100644
--- a/code/game/objects/structures/crates_lockers/closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets.dm
@@ -86,7 +86,7 @@
var/mob/living/L = AM
if(L.buckled || L.mob_size > max_mob_size) //buckled mobs and mobs too big for the container don't get inside closets.
return 0
- if(L.mob_size > 0)
+ if(L.mob_size > MOB_SIZE_TINY) //decently sized mobs take more space than objects.
var/mobs_stored = 0
for(var/mob/living/M in contents)
mobs_stored++
diff --git a/code/modules/mob/living/carbon/alien/alien.dm b/code/modules/mob/living/carbon/alien/alien.dm
index da83251d5ce..ffbdc85641b 100644
--- a/code/modules/mob/living/carbon/alien/alien.dm
+++ b/code/modules/mob/living/carbon/alien/alien.dm
@@ -158,10 +158,6 @@
/mob/living/carbon/alien/getTrail()
return "xltrails"
-/mob/living/carbon/alien/cuff_break(obj/item/I, mob/living/carbon/C)
- playsound(C, 'sound/voice/hiss5.ogg', 40, 1, 1) //Alien roars when breaking free.
- ..()
-
/mob/living/carbon/alien/verb/nightvisiontoggle()
set name = "Toggle Night Vision"
set category = "Alien"
diff --git a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm
index 337f05ebbff..1367cad23e0 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm
@@ -116,4 +116,8 @@
unEquip(l_store)
/mob/living/carbon/alien/humanoid/reagent_check(var/datum/reagent/R)
- return 0
\ No newline at end of file
+ return 0
+
+/mob/living/carbon/alien/humanoid/cuff_resist(obj/item/I)
+ playsound(src, 'sound/voice/hiss5.ogg', 40, 1, 1) //Alien roars when starting to break free
+ ..(I, cuff_break = 1)
\ No newline at end of file
diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index 22a879adae3..a673cb37fec 100644
--- a/code/modules/mob/living/carbon/carbon.dm
+++ b/code/modules/mob/living/carbon/carbon.dm
@@ -382,3 +382,111 @@ var/const/GALOSHES_DONT_HELP = 8
else
show_message("The blob attacks!")
adjustBruteLoss(10)
+
+/mob/living/carbon/proc/spin(spintime, speed)
+ spawn()
+ var/D = dir
+ while(spintime >= speed)
+ sleep(speed)
+ switch(D)
+ if(NORTH)
+ D = EAST
+ if(SOUTH)
+ D = WEST
+ if(EAST)
+ D = SOUTH
+ if(WEST)
+ D = NORTH
+ dir = D
+ spintime -= speed
+ return
+
+/mob/living/carbon/resist_buckle()
+ if(handcuffed)
+ changeNext_move(CLICK_CD_BREAKOUT)
+ last_special = world.time + CLICK_CD_BREAKOUT
+ visible_message("[src] attempts to unbuckle themself!", \
+ "You attempt to unbuckle yourself. (This will take around one minute and you need to stay still.)")
+ if(do_after(src, 600))
+ if(!buckled)
+ return
+ buckled.user_unbuckle_mob(src,src)
+ else
+ if(src && buckled)
+ src << "You fail to unbuckle yourself!"
+ else
+ buckled.user_unbuckle_mob(src,src)
+
+/mob/living/carbon/resist_fire()
+ fire_stacks -= 5
+ Weaken(3,1)
+ spin(32,2)
+ visible_message("[src] rolls on the floor, trying to put themselves out!", \
+ "You stop, drop, and roll!")
+ sleep(30)
+ if(fire_stacks <= 0)
+ visible_message("[src] has successfully extinguished themselves!", \
+ "You extinguish yourself.")
+ ExtinguishMob()
+ return
+
+/mob/living/carbon/resist_restraints()
+ var/obj/item/I = null
+ if(handcuffed)
+ I = handcuffed
+ else if(legcuffed)
+ I = legcuffed
+ if(I)
+ changeNext_move(CLICK_CD_BREAKOUT)
+ last_special = world.time + CLICK_CD_BREAKOUT
+ cuff_resist(I)
+
+
+/mob/living/carbon/proc/cuff_resist(obj/item/I, var/breakouttime = 600, cuff_break = 0)
+ if(istype(I, /obj/item/weapon/restraints))
+ var/obj/item/weapon/restraints/R = I
+ breakouttime = R.breakouttime
+ var/displaytime = breakouttime / 600
+ if(!cuff_break)
+ visible_message("[src] attempts to remove [I]!")
+ src << "You attempt to remove [I]. (This will take around [displaytime] minutes and you need to stand still.)"
+ if(do_after(src, breakouttime, 10))
+ if(I.loc != src || buckled)
+ return
+ visible_message("[src] manages to remove [I]!")
+ src << "You successfully remove [I]."
+
+ if(handcuffed)
+ handcuffed.loc = loc
+ handcuffed = null
+ if(buckled && buckled.buckle_requires_restraints)
+ buckled.unbuckle_mob()
+ update_inv_handcuffed(0)
+ return
+ if(legcuffed)
+ legcuffed.loc = loc
+ legcuffed = null
+ update_inv_legcuffed(0)
+ else
+ src << "You fail to remove [I]!"
+
+ else
+ breakouttime = 50
+ visible_message("[src] is trying to break [I]!")
+ src << "You attempt to break [I]. (This will take around 5 seconds and you need to stand still.)"
+ if(do_after(src, breakouttime))
+ if(!I.loc || buckled)
+ return
+ visible_message("[src] manages to break [I]!")
+ src << "You successfully break [I]."
+ qdel(I)
+
+ if(handcuffed)
+ handcuffed = null
+ update_inv_handcuffed(0)
+ return
+ else
+ legcuffed = null
+ update_inv_legcuffed(0)
+ else
+ src << "You fail to break [I]!"
\ No newline at end of file
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index 00f54308178..a8683a1f49c 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -743,4 +743,9 @@
staticOverlay.override = 1
staticOverlays["letter"] = staticOverlay
-
+/mob/living/carbon/human/cuff_resist(obj/item/I)
+ if(dna && dna.check_mutation(HULK))
+ say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" ))
+ ..(I, cuff_break = 1)
+ else
+ ..()
diff --git a/code/modules/mob/living/life.dm b/code/modules/mob/living/life.dm
index 598054d0c1d..e2f440bcfb5 100644
--- a/code/modules/mob/living/life.dm
+++ b/code/modules/mob/living/life.dm
@@ -38,6 +38,8 @@
update_gravity(mob_has_gravity())
+ update_pulling()
+
for(var/obj/item/weapon/grab/G in src)
G.process()
@@ -75,6 +77,11 @@
/mob/living/proc/handle_stomach()
return
+/mob/living/proc/update_pulling()
+ if(pulling)
+ if(incapacitated())
+ stop_pulling()
+
//This updates the health and status of the mob (conscious, unconscious, dead)
/mob/living/proc/handle_regular_status_updates()
diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm
index be727c966ac..7c75e10a5f4 100644
--- a/code/modules/mob/living/living.dm
+++ b/code/modules/mob/living/living.dm
@@ -161,7 +161,7 @@ Sorry Giacom. Please don't be mad :(
return 0
if(!..())
return 0
- usr.visible_message("[src] points to [A]")
+ visible_message("[src] points to [A]")
return 1
/mob/living/verb/succumb(var/whispered as null)
@@ -320,12 +320,12 @@ Sorry Giacom. Please don't be mad :(
set name = "Sleep"
set category = "IC"
- if(usr.sleeping)
- usr << "You are already sleeping."
+ if(sleeping)
+ src << "You are already sleeping."
return
else
if(alert(src, "You sure you want to sleep for a while?", "Sleep", "Yes", "No") == "Yes")
- usr.sleeping = 20 //Short nap
+ sleeping = 20 //Short nap
/mob/proc/get_contents()
@@ -469,11 +469,11 @@ Sorry Giacom. Please don't be mad :(
if(config.allow_Metadata)
if(client)
- usr << "[src]'s Metainfo:
[client.prefs.metadata]"
+ src << "[src]'s Metainfo:
[client.prefs.metadata]"
else
- usr << "[src] does not have any stored infomation!"
+ src << "[src] does not have any stored infomation!"
else
- usr << "OOC Metadata is not supported by this server!"
+ src << "OOC Metadata is not supported by this server!"
return
@@ -585,172 +585,62 @@ Sorry Giacom. Please don't be mad :(
/mob/living/proc/getTrail() //silicon and simple_animals don't get blood trails
return null
-/mob/living/proc/cuff_break(obj/item/weapon/restraints/I, mob/living/carbon/C)
-
- if(C.dna.check_mutation(HULK))
- C.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" ))
-
- C.visible_message("[C] manages to break [I]!")
- C << "You successfully break [I]."
- qdel(I)
-
- if(C.handcuffed)
- C.handcuffed = null
- C.update_inv_handcuffed(0)
- return
- else
- C.legcuffed = null
- C.update_inv_legcuffed(0)
-
-
-/mob/living/proc/cuff_resist(obj/item/weapon/restraints/I, mob/living/carbon/C)
- var/breakouttime = 600
- var/displaytime = 1
- if(istype(I, /obj/item/weapon/restraints/handcuffs))
- var/obj/item/weapon/restraints/handcuffs/HC = C.handcuffed
- breakouttime = HC.breakouttime
- else if(istype(I, /obj/item/weapon/restraints/legcuffs))
- var/obj/item/weapon/restraints/legcuffs/LC = C.legcuffed
- breakouttime = LC.breakouttime
- displaytime = breakouttime / 600
-
- if(isalienadult(C) || C.dna.check_mutation(HULK))
- C.visible_message("[C] is trying to break [I]!")
- C << "You attempt to break [I]. (This will take around 5 seconds and you need to stand still.)"
- spawn(0)
- if(do_after(C, 50))
- if(!I || C.buckled)
- return
- cuff_break(I, C)
- else
- C << "You fail to break [I]!"
- else
-
- C.visible_message("[C] attempts to remove [I]!")
- C << "You attempt to remove [I]. (This will take around [displaytime] minutes and you need to stand still.)"
- spawn(0)
- if(do_after(C, breakouttime, 10))
- if(!I || C.buckled)
- return
- C.visible_message("[C] manages to remove [I]!")
- C << "You successfully remove [I]."
-
- if(C.handcuffed)
- C.handcuffed.loc = C.loc
- C.handcuffed = null
- if(C.buckled && C.buckled.buckle_requires_restraints)
- C.buckled.unbuckle_mob()
- C.update_inv_handcuffed(0)
- return
- if(C.legcuffed)
- C.legcuffed.loc = C.loc
- C.legcuffed = null
- C.update_inv_legcuffed(0)
- else
- C << "You fail to remove [I]!"
-
/mob/living/verb/resist()
set name = "Resist"
set category = "IC"
- if(!isliving(usr) || usr.next_move > world.time)
+ if(!isliving(src) || next_move > world.time)
return
- usr.changeNext_move(CLICK_CD_RESIST)
-
- var/mob/living/L = usr
+ changeNext_move(CLICK_CD_RESIST)
//resisting grabs (as if it helps anyone...)
- if(!L.stat && L.canmove && !L.restrained())
+ if(!stat && canmove && !restrained())
var/resisting = 0
- for(var/obj/O in L.requests)
+ for(var/obj/O in requests)
qdel(O)
resisting++
- for(var/obj/item/weapon/grab/G in usr.grabbed_by)
+ for(var/obj/item/weapon/grab/G in grabbed_by)
resisting++
if(G.state == GRAB_PASSIVE)
qdel(G)
else
if(G.state == GRAB_AGGRESSIVE)
if(prob(25))
- L.visible_message("[L] has broken free of [G.assailant]'s grip!")
+ visible_message("[src] has broken free of [G.assailant]'s grip!")
qdel(G)
else
if(G.state == GRAB_NECK)
if(prob(5))
- L.visible_message("[L] has broken free of [G.assailant]'s headlock!")
+ visible_message("[src] has broken free of [G.assailant]'s headlock!")
qdel(G)
if(resisting)
- L.visible_message("[L] resists!")
+ visible_message("[src] resists!")
return
//unbuckling yourself
- if(L.buckled && L.last_special <= world.time)
- if(iscarbon(L))
- var/mob/living/carbon/C = L
- if(C.handcuffed)
- C.changeNext_move(CLICK_CD_BREAKOUT)
- C.last_special = world.time + CLICK_CD_BREAKOUT
- C.visible_message("[C] attempts to unbuckle themself!", \
- "You attempt to unbuckle yourself. (This will take around one minute and you need to stay still.)")
- spawn(0)
- if(do_after(usr, 600))
- if(!C.buckled)
- return
- C.buckled.user_unbuckle_mob(C,C)
- else
- if(C && C.buckled)
- C << "You fail to unbuckle yourself!"
- else
- C.buckled.user_unbuckle_mob(C,C)
- else
- L.buckled.user_unbuckle_mob(L,L)
+ if(buckled && last_special <= world.time)
+ resist_buckle()
//Breaking out of a container (Locker, sleeper, cryo...)
else if(loc && istype(loc, /obj) && !isturf(loc))
- if(L.stat == CONSCIOUS && !L.stunned && !L.weakened && !L.paralysis)
+ if(stat == CONSCIOUS && !stunned && !weakened && !paralysis)
var/obj/C = loc
- C.container_resist(L)
+ C.container_resist(src)
- //Stop drop and roll & Handcuffs
- else if(iscarbon(L))
- var/mob/living/carbon/CM = L
- if(CM.on_fire && CM.canmove)
- CM.fire_stacks -= 5
- CM.Weaken(3,1)
- CM.spin(32,2)
- CM.visible_message("[CM] rolls on the floor, trying to put themselves out!", \
- "You stop, drop, and roll!")
- sleep(30)
- if(fire_stacks <= 0)
- CM.visible_message("[CM] has successfully extinguished themselves!", \
- "You extinguish yourself.")
- ExtinguishMob()
- return
- if(CM.canmove && (CM.last_special <= world.time))
- if(CM.handcuffed || CM.legcuffed)
- CM.changeNext_move(CLICK_CD_BREAKOUT)
- CM.last_special = world.time + CLICK_CD_BREAKOUT
- if(CM.handcuffed)
- cuff_resist(CM.handcuffed, CM)
- else
- cuff_resist(CM.legcuffed, CM)
+ else if(canmove)
+ if(on_fire)
+ resist_fire() //stop, drop, and roll
+ else if(last_special <= world.time)
+ resist_restraints() //trying to remove cuffs.
-/mob/living/carbon/proc/spin(spintime, speed)
- spawn()
- var/D = dir
- while(spintime >= speed)
- sleep(speed)
- switch(D)
- if(NORTH)
- D = EAST
- if(SOUTH)
- D = WEST
- if(EAST)
- D = SOUTH
- if(WEST)
- D = NORTH
- dir = D
- spintime -= speed
+
+/mob/living/proc/resist_buckle()
+ buckled.user_unbuckle_mob(src,src)
+
+/mob/living/proc/resist_fire()
+ return
+
+/mob/living/proc/resist_restraints()
return
/mob/living/proc/get_visible_name()
diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm
index 8e0c98192a7..c2062b46546 100644
--- a/code/modules/mob/living/silicon/pai/pai.dm
+++ b/code/modules/mob/living/silicon/pai/pai.dm
@@ -3,7 +3,7 @@
icon = 'icons/obj/status_display.dmi' //invisibility!
mouse_opacity = 0
density = 0
- mob_size = MOB_SIZE_SMALL
+ mob_size = MOB_SIZE_TINY
var/network = "SS13"
var/obj/machinery/camera/current = null
diff --git a/code/modules/mob/living/simple_animal/constructs.dm b/code/modules/mob/living/simple_animal/constructs.dm
index 4005451ecc9..62e5211dd77 100644
--- a/code/modules/mob/living/simple_animal/constructs.dm
+++ b/code/modules/mob/living/simple_animal/constructs.dm
@@ -16,6 +16,7 @@
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("cult")
+ flying = 1
var/list/construct_spells = list()
var/playstyle_string = "You are a generic construct! Your job is to not exist."
@@ -86,7 +87,7 @@
environment_smash = 2
attack_sound = 'sound/weapons/punch3.ogg'
status_flags = 0
- mob_size = MOB_SIZE_SMALL
+ mob_size = MOB_SIZE_LARGE
force_threshold = 11
construct_spells = list(/obj/effect/proc_holder/spell/aoe_turf/conjure/lesserforcewall)
playstyle_string = "You are a Juggernaut. Though slow, your shell can withstand extreme punishment, \
diff --git a/code/modules/mob/living/simple_animal/friendly/butterfly.dm b/code/modules/mob/living/simple_animal/friendly/butterfly.dm
index e4f9e562e37..d361cfb978c 100644
--- a/code/modules/mob/living/simple_animal/friendly/butterfly.dm
+++ b/code/modules/mob/living/simple_animal/friendly/butterfly.dm
@@ -16,7 +16,7 @@
friendly = "nudges"
pass_flags = PASSTABLE
ventcrawler = 2
- mob_size = MOB_SIZE_SMALL
+ mob_size = MOB_SIZE_TINY
/mob/living/simple_animal/butterfly/New()
..()
diff --git a/code/modules/mob/living/simple_animal/friendly/cat.dm b/code/modules/mob/living/simple_animal/friendly/cat.dm
index 16d35c5a486..8308bf698f8 100644
--- a/code/modules/mob/living/simple_animal/friendly/cat.dm
+++ b/code/modules/mob/living/simple_animal/friendly/cat.dm
@@ -79,4 +79,3 @@
icon_living = "kitten"
icon_dead = "kitten_dead"
gender = NEUTER
- mob_size = MOB_SIZE_SMALL
diff --git a/code/modules/mob/living/simple_animal/friendly/corgi.dm b/code/modules/mob/living/simple_animal/friendly/corgi.dm
index 25ec1dcb6fe..4733bf988bb 100644
--- a/code/modules/mob/living/simple_animal/friendly/corgi.dm
+++ b/code/modules/mob/living/simple_animal/friendly/corgi.dm
@@ -1,6 +1,7 @@
//Corgi
/mob/living/simple_animal/pet
icon = 'icons/mob/pets.dmi'
+ mob_size = MOB_SIZE_SMALL
var/obj/item/clothing/tie/petcollar/pcollar = null
var/image/collar = null
var/image/pettag = null
@@ -524,7 +525,6 @@
icon_living = "puppy"
icon_dead = "puppy_dead"
shaved = 0
- mob_size = MOB_SIZE_SMALL
//puppies cannot wear anything.
/mob/living/simple_animal/pet/corgi/puppy/Topic(href, href_list)
diff --git a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm
index 8ade1262914..59511795d57 100644
--- a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm
+++ b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm
@@ -168,7 +168,7 @@
ventcrawler = 2
var/amount_grown = 0
pass_flags = PASSTABLE | PASSGRILLE
- mob_size = MOB_SIZE_SMALL
+ mob_size = MOB_SIZE_TINY
/mob/living/simple_animal/chick/New()
..()
diff --git a/code/modules/mob/living/simple_animal/friendly/lizard.dm b/code/modules/mob/living/simple_animal/friendly/lizard.dm
index 3e97c6d41e9..68b8702a403 100644
--- a/code/modules/mob/living/simple_animal/friendly/lizard.dm
+++ b/code/modules/mob/living/simple_animal/friendly/lizard.dm
@@ -15,4 +15,4 @@
response_disarm = "shoos"
response_harm = "stomps on"
ventcrawler = 2
- mob_size = MOB_SIZE_SMALL
\ No newline at end of file
+ mob_size = MOB_SIZE_TINY
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_animal/friendly/mouse.dm b/code/modules/mob/living/simple_animal/friendly/mouse.dm
index 38e9f399ae1..ad493cebe4c 100644
--- a/code/modules/mob/living/simple_animal/friendly/mouse.dm
+++ b/code/modules/mob/living/simple_animal/friendly/mouse.dm
@@ -21,7 +21,7 @@
density = 0
ventcrawler = 2
pass_flags = PASSTABLE | PASSGRILLE
- mob_size = MOB_SIZE_SMALL
+ mob_size = MOB_SIZE_TINY
var/body_color //brown, gray and white, leave blank for random
/mob/living/simple_animal/mouse/New()
diff --git a/code/modules/mob/living/simple_animal/hostile/bees.dm b/code/modules/mob/living/simple_animal/hostile/bees.dm
index 31316587039..fddf591b929 100644
--- a/code/modules/mob/living/simple_animal/hostile/bees.dm
+++ b/code/modules/mob/living/simple_animal/hostile/bees.dm
@@ -20,6 +20,7 @@
environment_smash = 0
mouse_opacity = 2
pass_flags = PASSTABLE
+ flying = 1
//Spaceborn beings don't get hurt by space
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)
diff --git a/code/modules/mob/living/simple_animal/hostile/eyeballs.dm b/code/modules/mob/living/simple_animal/hostile/eyeballs.dm
index 313798c6b22..84886c63dae 100644
--- a/code/modules/mob/living/simple_animal/hostile/eyeballs.dm
+++ b/code/modules/mob/living/simple_animal/hostile/eyeballs.dm
@@ -19,6 +19,7 @@
melee_damage_upper = 25
attacktext = "blinks at"
attack_sound = 'sound/weapons/pierce.ogg'
+ flying = 1
faction = list("spooky")
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 bf79c041a63..3a1a96688f3 100644
--- a/code/modules/mob/living/simple_animal/hostile/retaliate/bat.dm
+++ b/code/modules/mob/living/simple_animal/hostile/retaliate/bat.dm
@@ -23,7 +23,8 @@
attack_sound = 'sound/weapons/bite.ogg'
environment_smash = 0
ventcrawler = 2
- mob_size = MOB_SIZE_SMALL
+ mob_size = MOB_SIZE_TINY
+ flying = 1
var/max_co2 = 0 //to be removed once metastation map no longer use those for Sgt Araneus
var/min_oxy = 0
var/max_tox = 0
diff --git a/code/modules/mob/living/simple_animal/hostile/syndicate.dm b/code/modules/mob/living/simple_animal/hostile/syndicate.dm
index bfd39fc4f7c..2c9a0f390b6 100644
--- a/code/modules/mob/living/simple_animal/hostile/syndicate.dm
+++ b/code/modules/mob/living/simple_animal/hostile/syndicate.dm
@@ -130,7 +130,8 @@
faction = list("syndicate")
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_size = MOB_SIZE_SMALL
+ mob_size = MOB_SIZE_TINY
+ flying
/mob/living/simple_animal/hostile/viscerator/death(gibbed)
..(gibbed)
diff --git a/code/modules/mob/living/simple_animal/parrot.dm b/code/modules/mob/living/simple_animal/parrot.dm
index bc1e35d3b6a..83590e4bc90 100644
--- a/code/modules/mob/living/simple_animal/parrot.dm
+++ b/code/modules/mob/living/simple_animal/parrot.dm
@@ -55,6 +55,7 @@
attacktext = "chomps"
friendly = "grooms"
mob_size = MOB_SIZE_SMALL
+ flying = 1
var/parrot_damage_upper = 10
var/parrot_state = PARROT_WANDER //Hunt for a perch when created
diff --git a/code/modules/mob/living/simple_animal/shade.dm b/code/modules/mob/living/simple_animal/shade.dm
index a1982d4d0bd..c88c07f4570 100644
--- a/code/modules/mob/living/simple_animal/shade.dm
+++ b/code/modules/mob/living/simple_animal/shade.dm
@@ -23,6 +23,7 @@
status_flags = 0
faction = list("cult")
status_flags = CANPUSH
+ flying = 1
/mob/living/simple_animal/shade/death()
diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm
index 8a957080878..3b4a7ecc0c9 100644
--- a/code/modules/mob/living/simple_animal/simple_animal.dm
+++ b/code/modules/mob/living/simple_animal/simple_animal.dm
@@ -57,7 +57,7 @@
//simple_animal access
var/obj/item/weapon/card/id/access_card = null //innate access uses an internal ID card
-
+ var/flying = 0 //whether it's flying or touching the ground.
/mob/living/simple_animal/New()
..()