From 801a8be0c28a76ebcabd857f4d709c8b57e5fc9d Mon Sep 17 00:00:00 2001 From: lbnesquik Date: Sun, 20 Jan 2019 17:02:37 +0100 Subject: [PATCH 1/4] Buff flying - Flying now takes half the nutrition per tick or per tile flown. - You can now fly off the ground with more food in yourself. - Hover costs less nutrition to trigger. I was considering lowering or outright damage received when hitting things such as windows or tables. Thoughts? --- .../human/species/station/station_special_abilities_vr.dm | 4 ++-- code/modules/multiz/movement.dm | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) 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..d93b558ec3 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,7 +769,7 @@ 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 @@ -802,7 +802,7 @@ 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 + C.nutrition -= 15 //Chomp edit. 25 -> 15 update_floating() to_chat(C, "You hover in place.") spawn(6) //.6 seconds. diff --git a/code/modules/multiz/movement.dm b/code/modules/multiz/movement.dm index 6cbef8586b..9c89cacd3e 100644 --- a/code/modules/multiz/movement.dm +++ b/code/modules/multiz/movement.dm @@ -187,8 +187,8 @@ if(ismob(src)) 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. + if(H.nutrition > 1) + H.nutrition -= 1 //You use up 1 nutrition per TILE and tick of flying above open spaces. 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. @@ -202,7 +202,7 @@ else if(H.nutrition < 100 && H.nutrition > 89) to_chat(H, "You're seriously fatigued! You need to get to the ground immediately and eat before you fall!") return - else if(H.nutrition < 2) //Should have listened to the warnings! + else if(H.nutrition < 1) //Should have listened to the warnings! to_chat(H, "You lack the strength to keep yourself up in the air...") H.stop_flying() else From 2d0fff4687fb95fafc70678b61b6731c3351f664 Mon Sep 17 00:00:00 2001 From: lbnesquik Date: Sun, 20 Jan 2019 21:58:18 +0100 Subject: [PATCH 2/4] Tweaks winged further --- code/modules/mob/living/carbon/human/emote_vr.dm | 8 +++++++- .../station/station_special_abilities_vr.dm | 16 ++++++++++++++++ .../human/species/station/traits_vr/positive.dm | 3 ++- .../mob/living/carbon/human/update_icons_vr.dm | 1 + code/modules/multiz/movement.dm | 4 ++-- 5 files changed, 28 insertions(+), 4 deletions(-) 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/species/station/station_special_abilities_vr.dm b/code/modules/mob/living/carbon/human/species/station/station_special_abilities_vr.dm index d93b558ec3..91072c8dfd 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 @@ -810,6 +810,22 @@ else return +//chomp addition. +/mob/living/proc/toggle_wings_agility() + set name = "Trigger flight agility" + set desc = "Allows you to start/stop flying over tables and other low obstacles. This will take a fair amount of nutrition to perform." + set category = "Abilities" + + var/mob/living/carbon/human/C = src + if(C.flying) + pass_flags ^= PASSTABLE//This is a bit lazy but it should work for most things. + to_chat(C, "You [pass_flags&PASSTABLE ? "will" : "will NOT"] move over tables/railings/trays!") + return + else + to_chat(C, "You must be flying to trigger agility!") + return + + /mob/living/proc/toggle_pass_table() set name = "Toggle Agility" //Dunno a better name for this. You have to be pretty agile to hop over stuff!!! set desc = "Allows you to start/stop hopping over things such as hydroponics trays, tables, and railings." 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..29a6c9c078 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,12 +97,13 @@ /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) H.verbs |= /mob/living/proc/flying_toggle H.verbs |= /mob/living/proc/start_wings_hovering + H.verbs |= /mob/living/proc/toggle_wings_agility //Chomp addition. Allows you to fly over tables and stuff. /datum/trait/hardfeet name = "Hard Feet" diff --git a/code/modules/mob/living/carbon/human/update_icons_vr.dm b/code/modules/mob/living/carbon/human/update_icons_vr.dm index 436f76d774..f5bac1b108 100644 --- a/code/modules/mob/living/carbon/human/update_icons_vr.dm +++ b/code/modules/mob/living/carbon/human/update_icons_vr.dm @@ -67,6 +67,7 @@ if(QDESTROYING(src)) return flying = FALSE + pass_flags = 0 return 1 /mob/living/carbon/human/stop_flying() diff --git a/code/modules/multiz/movement.dm b/code/modules/multiz/movement.dm index 9c89cacd3e..144eed733c 100644 --- a/code/modules/multiz/movement.dm +++ b/code/modules/multiz/movement.dm @@ -187,7 +187,7 @@ if(ismob(src)) 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 > 1) + if(H.nutrition > 2) H.nutrition -= 1 //You use up 1 nutrition per TILE and tick of flying above open spaces. if(H.incapacitated(INCAPACITATION_ALL)) H.stop_flying() @@ -202,7 +202,7 @@ else if(H.nutrition < 100 && H.nutrition > 89) to_chat(H, "You're seriously fatigued! You need to get to the ground immediately and eat before you fall!") return - else if(H.nutrition < 1) //Should have listened to the warnings! + else if(H.nutrition < 2) //Should have listened to the warnings! to_chat(H, "You lack the strength to keep yourself up in the air...") H.stop_flying() else From 3e4f3806703ae112a8785322d42ea0723f626476 Mon Sep 17 00:00:00 2001 From: lbnesquik Date: Mon, 21 Jan 2019 19:24:52 +0100 Subject: [PATCH 3/4] Implements improvements to winged flight Most of these came from kasparo. --- .../effects/decals/Cleanable/humans.dm | 2 ++ .../objects/items/weapons/material/shards.dm | 3 +++ code/game/objects/stumble_into_vr.dm | 5 +++++ code/game/turfs/simulated/water.dm | 2 +- code/modules/mob/living/carbon/carbon.dm | 2 ++ .../mob/living/carbon/human/human_movement.dm | 2 +- .../station/station_special_abilities_vr.dm | 22 ++++--------------- .../species/station/traits_vr/positive.dm | 1 - .../living/carbon/human/update_icons_vr.dm | 1 - code/modules/tables/interactions.dm | 3 +++ 10 files changed, 21 insertions(+), 22 deletions(-) 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/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 91072c8dfd..f3b90486e4 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 @@ -772,7 +772,9 @@ 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.") @@ -803,29 +805,13 @@ 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 -= 15 //Chomp edit. 25 -> 15 - update_floating() + 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 else return -//chomp addition. -/mob/living/proc/toggle_wings_agility() - set name = "Trigger flight agility" - set desc = "Allows you to start/stop flying over tables and other low obstacles. This will take a fair amount of nutrition to perform." - set category = "Abilities" - - var/mob/living/carbon/human/C = src - if(C.flying) - pass_flags ^= PASSTABLE//This is a bit lazy but it should work for most things. - to_chat(C, "You [pass_flags&PASSTABLE ? "will" : "will NOT"] move over tables/railings/trays!") - return - else - to_chat(C, "You must be flying to trigger agility!") - return - - /mob/living/proc/toggle_pass_table() set name = "Toggle Agility" //Dunno a better name for this. You have to be pretty agile to hop over stuff!!! set desc = "Allows you to start/stop hopping over things such as hydroponics trays, tables, and railings." 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 29a6c9c078..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 @@ -103,7 +103,6 @@ ..(S,H) H.verbs |= /mob/living/proc/flying_toggle H.verbs |= /mob/living/proc/start_wings_hovering - H.verbs |= /mob/living/proc/toggle_wings_agility //Chomp addition. Allows you to fly over tables and stuff. /datum/trait/hardfeet name = "Hard Feet" diff --git a/code/modules/mob/living/carbon/human/update_icons_vr.dm b/code/modules/mob/living/carbon/human/update_icons_vr.dm index f5bac1b108..436f76d774 100644 --- a/code/modules/mob/living/carbon/human/update_icons_vr.dm +++ b/code/modules/mob/living/carbon/human/update_icons_vr.dm @@ -67,7 +67,6 @@ if(QDESTROYING(src)) return flying = FALSE - pass_flags = 0 return 1 /mob/living/carbon/human/stop_flying() diff --git a/code/modules/tables/interactions.dm b/code/modules/tables/interactions.dm index 19764b2997..6e17765b38 100644 --- a/code/modules/tables/interactions.dm +++ b/code/modules/tables/interactions.dm @@ -10,6 +10,9 @@ return 1 if(istype(mover) && mover.checkpass(PASSTABLE)) return 1 + var/mob/M = mover //Chomp edit + if(istype(M) && M.flying) + 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) From 2e10d797308f4128dfc8b11ec5faf971a104e1e8 Mon Sep 17 00:00:00 2001 From: lbnesquik Date: Mon, 21 Jan 2019 20:30:02 +0100 Subject: [PATCH 4/4] Add wings sounds. --- .../station/station_special_abilities_vr.dm | 2 ++ code/modules/multiz/movement.dm | 4 +++- code/modules/tables/interactions.dm | 1 + sound/effects/wing1.ogg | Bin 0 -> 6669 bytes sound/effects/wing2.ogg | Bin 0 -> 9464 bytes 5 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 sound/effects/wing1.ogg create mode 100644 sound/effects/wing2.ogg 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 f3b90486e4..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 @@ -778,6 +778,8 @@ 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() diff --git a/code/modules/multiz/movement.dm b/code/modules/multiz/movement.dm index 144eed733c..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 @@ -189,10 +190,11 @@ if(H.flying) //Some other checks are done in the wings_toggle proc if(H.nutrition > 2) 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 6e17765b38..925fc5c487 100644 --- a/code/modules/tables/interactions.dm +++ b/code/modules/tables/interactions.dm @@ -12,6 +12,7 @@ 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 diff --git a/sound/effects/wing1.ogg b/sound/effects/wing1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..75b78a94f3a37df01aa1079e2c2acd0740fc140f GIT binary patch literal 6669 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 literal 0 HcmV?d00001 diff --git a/sound/effects/wing2.ogg b/sound/effects/wing2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..dc00b2c1cfcf8327ef7ebad5d059e59dc95fac54 GIT binary patch literal 9464 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 literal 0 HcmV?d00001