diff --git a/code/game/objects/effects/decals/Cleanable/humans.dm b/code/game/objects/effects/decals/Cleanable/humans.dm
index 0369b91d63..bb2adfeb39 100644
--- a/code/game/objects/effects/decals/Cleanable/humans.dm
+++ b/code/game/objects/effects/decals/Cleanable/humans.dm
@@ -74,6 +74,8 @@ var/global/list/image/splatter_cache=list()
return
if(amount < 1)
return
+ if(perp.flying) //Flap flap. Chomp edit. Thanks KasparoVy
+ return
var/obj/item/organ/external/l_foot = perp.get_organ("l_foot")
var/obj/item/organ/external/r_foot = perp.get_organ("r_foot")
diff --git a/code/game/objects/items/weapons/material/shards.dm b/code/game/objects/items/weapons/material/shards.dm
index ba7438a685..8e365a118a 100644
--- a/code/game/objects/items/weapons/material/shards.dm
+++ b/code/game/objects/items/weapons/material/shards.dm
@@ -69,6 +69,9 @@
if(M.buckled) //wheelchairs, office chairs, rollerbeds
return
+ if(M.flying) //Flap flap. Chomp edit. Thanks KasparoVy This is before the sound so you can fly stealthly. Plus why would there be a noise if you didn't touch.
+ return
+
playsound(src.loc, 'sound/effects/glass_step.ogg', 50, 1) // not sure how to handle metal shards with sounds
if(ishuman(M))
var/mob/living/carbon/human/H = M
diff --git a/code/game/objects/stumble_into_vr.dm b/code/game/objects/stumble_into_vr.dm
index f1612be040..5c5f32480e 100644
--- a/code/game/objects/stumble_into_vr.dm
+++ b/code/game/objects/stumble_into_vr.dm
@@ -7,6 +7,8 @@
M.stop_flying()
/obj/structure/table/stumble_into(mob/living/M)
+ if(M.flying && !(M.confused || M.is_blind())) //If you're not flying, or you're flying confused/blind, take the tumble.
+ return
var/obj/occupied = turf_is_crowded()
if(occupied)
return ..()
@@ -45,6 +47,7 @@
M.Weaken(5)
M.stop_flying()
+//Morgue thing.
/obj/structure/m_tray/stumble_into(mob/living/M)
playsound(get_turf(src), 'sound/weapons/tablehit1.ogg', 25, 1, -1)
visible_message("[M] flopped onto \the [src]!")
@@ -69,6 +72,8 @@
M.stop_flying()
/obj/structure/railing/stumble_into(mob/living/M)
+ if(M.flying && !(M.confused || M.is_blind())) //If you're not flying, or you're flying confused/blind, take the tumble.
+ return
var/obj/occupied = turf_is_crowded()
if(occupied)
return ..()
diff --git a/code/game/turfs/simulated/water.dm b/code/game/turfs/simulated/water.dm
index e4b762d733..4d6368bdcb 100644
--- a/code/game/turfs/simulated/water.dm
+++ b/code/game/turfs/simulated/water.dm
@@ -97,7 +97,7 @@
return ..()
/mob/living/proc/check_submerged()
- if(buckled)
+ if(buckled || flying) //Chomp edit. Thanks kasparoVy
return 0
var/turf/simulated/floor/water/T = loc
if(istype(T))
diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index f821a2466d..1c8a7a48d0 100644
--- a/code/modules/mob/living/carbon/carbon.dm
+++ b/code/modules/mob/living/carbon/carbon.dm
@@ -361,6 +361,8 @@
/mob/living/carbon/slip(var/slipped_on,stun_duration=8)
if(buckled)
return 0
+ if(flying) //chomp edit. Thanks Kasparo
+ return 0
stop_pulling()
src << "You slipped on [slipped_on]!"
playsound(src.loc, 'sound/misc/slip.ogg', 50, 1, -3)
diff --git a/code/modules/mob/living/carbon/human/emote_vr.dm b/code/modules/mob/living/carbon/human/emote_vr.dm
index 7f96f0bba4..41157dfc7b 100644
--- a/code/modules/mob/living/carbon/human/emote_vr.dm
+++ b/code/modules/mob/living/carbon/human/emote_vr.dm
@@ -25,7 +25,13 @@
if ("nme")
nme()
return TRUE
-
+ if ("airflip")
+ if(!flying)
+ to_chat(src, "You can't *flip when you are on the ground!")
+ else
+ src.SpinAnimation(-7,1)
+ message = "flips backwards in the air!"
+ m_type = 1
if ("flip")
var/danger = 1 //Base 1% chance to break something.
var/list/involved_parts = list(BP_L_LEG, BP_R_LEG, BP_L_FOOT, BP_R_FOOT)
diff --git a/code/modules/mob/living/carbon/human/human_movement.dm b/code/modules/mob/living/carbon/human/human_movement.dm
index ebf6facf68..e2e438c9c3 100644
--- a/code/modules/mob/living/carbon/human/human_movement.dm
+++ b/code/modules/mob/living/carbon/human/human_movement.dm
@@ -210,7 +210,7 @@
if(!has_organ(BP_L_FOOT) && !has_organ(BP_R_FOOT))
return // no feet = no footsteps
- if(buckled || lying || throwing)
+ if(buckled || lying || throwing || flying)
return // people flying, lying down or sitting do not step
if(!has_gravity(src) && prob(75))
diff --git a/code/modules/mob/living/carbon/human/species/station/station_special_abilities_vr.dm b/code/modules/mob/living/carbon/human/species/station/station_special_abilities_vr.dm
index 6d98a820e5..d14d4db279 100644
--- a/code/modules/mob/living/carbon/human/species/station/station_special_abilities_vr.dm
+++ b/code/modules/mob/living/carbon/human/species/station/station_special_abilities_vr.dm
@@ -769,13 +769,17 @@
if(C.nutrition < 25 && !C.flying) //Don't have any food in you?" You can't fly.
to_chat(C, "You lack the nutrition to fly.")
return
- if(C.nutrition > 1000 && !C.flying)
+ if(C.nutrition > 2200 && !C.flying) //Chomp edit. 1000 -> 2200
to_chat(C, "You have eaten too much to fly! You need to lose some nutrition.")
return
-
+ if(C.weight > 325 && !C.flying) //Referencing the 'very fat' range from examine_weight() in examine_vr.dm.
+ to_chat(C, "You are too heavy to fly! You need to shed some weight.")
+ return
C.flying = !C.flying
update_floating()
to_chat(C, "You have [C.flying?"started":"stopped"] flying.")
+ visible_message("[C] [C.flying?"started":"stopped"] flying!")
+ playsound(usr.loc, 'sound/effects/wing2.ogg', 60, 1)
//Proc to stop inertial_drift. Exchange nutrition in order to stop gliding around.
/mob/living/proc/start_wings_hovering()
@@ -802,8 +806,8 @@
if(!C.anchored && !C.pulledby) //Not currently anchored, and not pulled by anyone.
C.anchored = 1 //This is the only way to stop the inertial_drift.
- C.nutrition -= 25
- update_floating()
+ C.nutrition -= 15 //Chomp edit. 25 -> 15
+ start_floating() //You do the floating animation when you toggle flight but don't move. Force it here for hovering as well. Chomp edit.
to_chat(C, "You hover in place.")
spawn(6) //.6 seconds.
C.anchored = 0
diff --git a/code/modules/mob/living/carbon/human/species/station/traits_vr/positive.dm b/code/modules/mob/living/carbon/human/species/station/traits_vr/positive.dm
index 900ca7b867..d802e8abad 100644
--- a/code/modules/mob/living/carbon/human/species/station/traits_vr/positive.dm
+++ b/code/modules/mob/living/carbon/human/species/station/traits_vr/positive.dm
@@ -97,7 +97,7 @@
/datum/trait/winged_flight
name = "Winged Flight"
desc = "Allows you to fly by using your wings."
- cost = 2 //Some in game value.
+ cost = 3
/datum/trait/winged_flight/apply(var/datum/species/S,var/mob/living/carbon/human/H)
..(S,H)
diff --git a/code/modules/multiz/movement.dm b/code/modules/multiz/movement.dm
index 6cbef8586b..5c1d835687 100644
--- a/code/modules/multiz/movement.dm
+++ b/code/modules/multiz/movement.dm
@@ -62,6 +62,7 @@
H.audible_message("[H] begins to flap \his wings, preparing to move upwards!")
if(do_after(H, fly_time) && H.flying)
to_chat(src, "You fly upwards.")
+ playsound(src, 'sound/effects/wing2.ogg', 30, 1)
else
to_chat(src, "You stopped flying upwards.")
return 0
@@ -188,11 +189,12 @@
var/mob/H = src //VOREStation Edit Start. Flight on mobs.
if(H.flying) //Some other checks are done in the wings_toggle proc
if(H.nutrition > 2)
- H.nutrition -= 2 //You use up 2 nutrition per TILE and tick of flying above open spaces. If people wanna flap their wings in the hallways, shouldn't penalize them for it.
+ H.nutrition -= 1 //You use up 1 nutrition per TILE and tick of flying above open spaces.
+ playsound(H.loc, 'sound/effects/wing1.ogg', 25, 1)
if(H.incapacitated(INCAPACITATION_ALL))
H.stop_flying()
//Just here to see if the person is KO'd, stunned, etc. If so, it'll move onto can_fall.
- else if (H.nutrition > 1000) //Eat too much while flying? Get fat and fall.
+ else if (H.nutrition > 2000) //Eat too much while flying? Get fat and fall.
to_chat(H, "You're too heavy! Your wings give out and you plummit to the ground!")
H.stop_flying() //womp womp.
else if(H.nutrition < 300 && H.nutrition > 289) //290 would be risky, as metabolism could mess it up. Let's do 289.
diff --git a/code/modules/tables/interactions.dm b/code/modules/tables/interactions.dm
index 19764b2997..925fc5c487 100644
--- a/code/modules/tables/interactions.dm
+++ b/code/modules/tables/interactions.dm
@@ -10,6 +10,10 @@
return 1
if(istype(mover) && mover.checkpass(PASSTABLE))
return 1
+ var/mob/M = mover //Chomp edit
+ if(istype(M) && M.flying)
+ playsound(M, 'sound/effects/wing1.ogg', 20, 1)
+ return 1
if(locate(/obj/structure/table/bench) in get_turf(mover))
return 0
var/obj/structure/table/table = locate(/obj/structure/table) in get_turf(mover)
diff --git a/sound/effects/wing1.ogg b/sound/effects/wing1.ogg
new file mode 100644
index 0000000000..75b78a94f3
Binary files /dev/null and b/sound/effects/wing1.ogg differ
diff --git a/sound/effects/wing2.ogg b/sound/effects/wing2.ogg
new file mode 100644
index 0000000000..dc00b2c1cf
Binary files /dev/null and b/sound/effects/wing2.ogg differ