mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-11 18:53:06 +00:00
Merge pull request #4779 from CHOMPStation2/upstream-merge-13573
[MIRROR] Changes "Water Breather" to "Aquatic" and reworks the trait to make it more vore-centric
This commit is contained in:
33
code/modules/mob/_modifiers/modifiers_vr.dm
Normal file
33
code/modules/mob/_modifiers/modifiers_vr.dm
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
/datum/modifier/underwater_stealth
|
||||||
|
name = "underwater stealth"
|
||||||
|
desc = "You are currently underwater, rendering it more difficult to see you and enabling you to move quicker, thanks to your aquatic nature."
|
||||||
|
|
||||||
|
on_created_text = "<span class='warning'>You sink under the water.</span>"
|
||||||
|
on_expired_text = "<span class='notice'>You come out from the water.</span>"
|
||||||
|
|
||||||
|
stacks = MODIFIER_STACK_FORBID
|
||||||
|
|
||||||
|
slowdown = -1.5 //A bit faster when actually submerged fully in water, as you're not waddling through it.
|
||||||
|
siemens_coefficient = 1.5 //You are, however, underwater. Getting shocked will hurt.
|
||||||
|
|
||||||
|
outgoing_melee_damage_percent = 0.75 //You are swinging a sword under water...Good luck.
|
||||||
|
accuracy = -50 //You're underwater. Good luck shooting a gun. (Makes shots as if you were 3.33 tiles further.)
|
||||||
|
evasion = 30 //You're underwater and a bit harder to hit.
|
||||||
|
|
||||||
|
/datum/modifier/underwater_stealth/on_applied()
|
||||||
|
holder.alpha = 50
|
||||||
|
return
|
||||||
|
|
||||||
|
/datum/modifier/underwater_stealth/on_expire()
|
||||||
|
holder.alpha = 255
|
||||||
|
return
|
||||||
|
|
||||||
|
/datum/modifier/underwater_stealth/tick()
|
||||||
|
if(holder.stat == DEAD)
|
||||||
|
expire(silent = TRUE) //If you're dead you float to the top.
|
||||||
|
if(istype(holder.loc, /turf/simulated/floor/water))
|
||||||
|
var/turf/simulated/floor/water/water_floor = holder.loc
|
||||||
|
if(water_floor.depth < 1) //You're not in deep enough water anymore.
|
||||||
|
expire(silent = FALSE)
|
||||||
|
else
|
||||||
|
expire(silent = FALSE)
|
||||||
@@ -1065,3 +1065,91 @@
|
|||||||
C.update_transform()
|
C.update_transform()
|
||||||
//egg_contents -= src
|
//egg_contents -= src
|
||||||
C.contents -= src
|
C.contents -= src
|
||||||
|
|
||||||
|
/mob/living/carbon/human/proc/water_stealth()
|
||||||
|
set name = "Dive under water / Resurface"
|
||||||
|
set desc = "Dive under water, allowing for you to be stealthy and move faster."
|
||||||
|
set category = "Abilities"
|
||||||
|
|
||||||
|
if(last_special > world.time)
|
||||||
|
return
|
||||||
|
last_special = world.time + 50 //No spamming!
|
||||||
|
|
||||||
|
if(has_modifier_of_type(/datum/modifier/underwater_stealth))
|
||||||
|
to_chat(src, "You resurface!")
|
||||||
|
remove_modifiers_of_type(/datum/modifier/underwater_stealth)
|
||||||
|
return
|
||||||
|
|
||||||
|
if(!isturf(loc)) //We have no turf.
|
||||||
|
to_chat(src, "There is no water for you to dive into!")
|
||||||
|
return
|
||||||
|
|
||||||
|
if(istype(src.loc, /turf/simulated/floor/water))
|
||||||
|
var/turf/simulated/floor/water/water_floor = src.loc
|
||||||
|
if(water_floor.depth >= 1) //Is it deep enough?
|
||||||
|
add_modifier(/datum/modifier/underwater_stealth) //No duration. It'll remove itself when they exit the water!
|
||||||
|
to_chat(src, "You dive into the water!")
|
||||||
|
visible_message("[src] dives into the water!")
|
||||||
|
else
|
||||||
|
to_chat(src, "The water here is not deep enough to dive into!")
|
||||||
|
return
|
||||||
|
|
||||||
|
else
|
||||||
|
to_chat(src, "There is no water for you to dive into!")
|
||||||
|
return
|
||||||
|
|
||||||
|
/mob/living/carbon/human/proc/underwater_devour()
|
||||||
|
set name = "Devour From Water"
|
||||||
|
set desc = "Grab something in the water with you and devour them with your selected stomach."
|
||||||
|
set category = "Abilities"
|
||||||
|
|
||||||
|
if(last_special > world.time)
|
||||||
|
return
|
||||||
|
last_special = world.time + 50 //No spamming!
|
||||||
|
|
||||||
|
if(stat == DEAD || paralysis || weakened || stunned)
|
||||||
|
to_chat(src, "<span class='notice'>You cannot do that while in your current state.</span>")
|
||||||
|
return
|
||||||
|
|
||||||
|
if(!(src.vore_selected))
|
||||||
|
to_chat(src, "<span class='notice'>No selected belly found.</span>")
|
||||||
|
return
|
||||||
|
|
||||||
|
|
||||||
|
if(!has_modifier_of_type(/datum/modifier/underwater_stealth))
|
||||||
|
to_chat(src, "You must be underwater to do this!!")
|
||||||
|
return
|
||||||
|
|
||||||
|
var/list/targets = list() //Shameless copy and paste. If it ain't broke don't fix it!
|
||||||
|
|
||||||
|
for(var/turf/T in range(1, src))
|
||||||
|
if(istype(T, /turf/simulated/floor/water))
|
||||||
|
for(var/mob/living/L in T)
|
||||||
|
if(L == src) //no eating yourself. 1984.
|
||||||
|
continue
|
||||||
|
if(L.devourable)
|
||||||
|
targets += L
|
||||||
|
|
||||||
|
if(!(targets.len))
|
||||||
|
to_chat(src, "<span class='notice'>No eligible targets found.</span>")
|
||||||
|
return
|
||||||
|
|
||||||
|
var/mob/living/target = tgui_input_list(src, "Please select a target.", "Victim", targets)
|
||||||
|
|
||||||
|
if(!target)
|
||||||
|
return
|
||||||
|
|
||||||
|
to_chat(target, "<span class='critical'>Something begins to circle around you in the water!</span>") //Dun dun...
|
||||||
|
var/starting_loc = target.loc
|
||||||
|
|
||||||
|
if(do_after(src, 50))
|
||||||
|
if(target.loc != starting_loc)
|
||||||
|
to_chat(target, "<span class='warning'>You got away from whatever that was...</span>")
|
||||||
|
to_chat(src, "<span class='notice'>They got away.</span>")
|
||||||
|
return
|
||||||
|
if(target.buckled) //how are you buckled in the water?!
|
||||||
|
target.buckled.unbuckle_mob()
|
||||||
|
target.visible_message("<span class='warning'>\The [target] suddenly disappears, being dragged into the water!</span>",\
|
||||||
|
"<span class='danger'>You are dragged below the water and feel yourself slipping directly into \the [src]'s [vore_selected]!</span>")
|
||||||
|
to_chat(src, "<span class='notice'>You successfully drag \the [target] into the water, slipping them into your [vore_selected].</span>")
|
||||||
|
target.forceMove(src.vore_selected)
|
||||||
|
|||||||
@@ -26,9 +26,6 @@
|
|||||||
/mob/living/carbon/human/proc/reconstitute_form,
|
/mob/living/carbon/human/proc/reconstitute_form,
|
||||||
/mob/living/carbon/human/proc/sonar_ping,
|
/mob/living/carbon/human/proc/sonar_ping,
|
||||||
/mob/living/carbon/human/proc/tie_hair,
|
/mob/living/carbon/human/proc/tie_hair,
|
||||||
/mob/living/proc/flying_toggle,
|
|
||||||
/mob/living/proc/flying_vore_toggle,
|
|
||||||
/mob/living/proc/start_wings_hovering,
|
|
||||||
/mob/living/carbon/human/proc/lick_wounds) //Xenochimera get all the special verbs since they can't select traits.
|
/mob/living/carbon/human/proc/lick_wounds) //Xenochimera get all the special verbs since they can't select traits.
|
||||||
// CHOMPEdit: Lick Wounds Verb
|
// CHOMPEdit: Lick Wounds Verb
|
||||||
|
|
||||||
|
|||||||
@@ -85,7 +85,7 @@
|
|||||||
name_language = LANGUAGE_SKRELLIAN
|
name_language = LANGUAGE_SKRELLIAN
|
||||||
color_mult = 1
|
color_mult = 1
|
||||||
assisted_langs = list(LANGUAGE_EAL, LANGUAGE_ROOTLOCAL, LANGUAGE_ROOTGLOBAL, LANGUAGE_VOX)
|
assisted_langs = list(LANGUAGE_EAL, LANGUAGE_ROOTLOCAL, LANGUAGE_ROOTGLOBAL, LANGUAGE_VOX)
|
||||||
inherent_verbs = list(/mob/living/carbon/human/proc/tie_hair)
|
inherent_verbs = list(/mob/living/carbon/human/proc/tie_hair, /mob/living/carbon/human/proc/water_stealth, /mob/living/carbon/human/proc/underwater_devour)
|
||||||
min_age = 18
|
min_age = 18
|
||||||
max_age = 110
|
max_age = 110
|
||||||
|
|
||||||
@@ -113,6 +113,7 @@
|
|||||||
appearance_flags = HAS_HAIR_COLOR | HAS_LIPS | HAS_UNDERWEAR | HAS_SKIN_COLOR | HAS_EYE_COLOR
|
appearance_flags = HAS_HAIR_COLOR | HAS_LIPS | HAS_UNDERWEAR | HAS_SKIN_COLOR | HAS_EYE_COLOR
|
||||||
|
|
||||||
water_breather = TRUE
|
water_breather = TRUE
|
||||||
|
water_movement = -4 //Negates shallow. Halves deep.
|
||||||
|
|
||||||
flesh_color = "#AFA59E"
|
flesh_color = "#AFA59E"
|
||||||
base_color = "#777777"
|
base_color = "#777777"
|
||||||
@@ -311,7 +312,7 @@
|
|||||||
deform = 'icons/mob/human_races/r_def_skrell_vr.dmi'
|
deform = 'icons/mob/human_races/r_def_skrell_vr.dmi'
|
||||||
color_mult = 1
|
color_mult = 1
|
||||||
min_age = 18
|
min_age = 18
|
||||||
inherent_verbs = list(/mob/living/carbon/human/proc/tie_hair)
|
inherent_verbs = list(/mob/living/carbon/human/proc/tie_hair, /mob/living/carbon/human/proc/water_stealth, /mob/living/carbon/human/proc/underwater_devour)
|
||||||
reagent_tag = null
|
reagent_tag = null
|
||||||
allergens = null
|
allergens = null
|
||||||
assisted_langs = list(LANGUAGE_EAL, LANGUAGE_ROOTLOCAL, LANGUAGE_ROOTGLOBAL, LANGUAGE_VOX)
|
assisted_langs = list(LANGUAGE_EAL, LANGUAGE_ROOTLOCAL, LANGUAGE_ROOTGLOBAL, LANGUAGE_VOX)
|
||||||
@@ -320,6 +321,9 @@
|
|||||||
wikilink="https://wiki.chompstation13.net/index.php?title=Skrell"
|
wikilink="https://wiki.chompstation13.net/index.php?title=Skrell"
|
||||||
genders = list(MALE, FEMALE, PLURAL, NEUTER)
|
genders = list(MALE, FEMALE, PLURAL, NEUTER)
|
||||||
|
|
||||||
|
water_breather = TRUE
|
||||||
|
water_movement = -4 //Negates shallow. Halves deep.
|
||||||
|
|
||||||
/datum/species/zaddat
|
/datum/species/zaddat
|
||||||
spawn_flags = SPECIES_CAN_JOIN
|
spawn_flags = SPECIES_CAN_JOIN
|
||||||
min_age = 18
|
min_age = 18
|
||||||
|
|||||||
@@ -175,11 +175,16 @@
|
|||||||
H.verbs |= /mob/living/carbon/human/proc/weave_item
|
H.verbs |= /mob/living/carbon/human/proc/weave_item
|
||||||
H.verbs |= /mob/living/carbon/human/proc/set_silk_color
|
H.verbs |= /mob/living/carbon/human/proc/set_silk_color
|
||||||
|
|
||||||
/datum/trait/positive/water_breather
|
/datum/trait/positive/aquatic
|
||||||
name = "Water Breather"
|
name = "Aquatic"
|
||||||
desc = "You can breathe under water."
|
desc = "You can breathe under water and can traverse water more efficiently. Additionally, you can eat others in the water."
|
||||||
cost = 1
|
cost = 1
|
||||||
var_changes = list("water_breather" = 1)
|
var_changes = list("water_breather" = 1, "water_movement" = -4) //Negate shallow water. Half the speed in deep water.
|
||||||
|
|
||||||
|
/datum/trait/positive/aquatic/apply(var/datum/species/S,var/mob/living/carbon/human/H)
|
||||||
|
..(S,H)
|
||||||
|
H.verbs |= /mob/living/carbon/human/proc/water_stealth
|
||||||
|
H.verbs |= /mob/living/carbon/human/proc/underwater_devour
|
||||||
|
|
||||||
/datum/trait/positive/cocoon_tf
|
/datum/trait/positive/cocoon_tf
|
||||||
name = "Cocoon Spinner"
|
name = "Cocoon Spinner"
|
||||||
|
|||||||
@@ -54,13 +54,21 @@
|
|||||||
category = 0
|
category = 0
|
||||||
custom_only = FALSE
|
custom_only = FALSE
|
||||||
|
|
||||||
/datum/trait/positive/water_breather/xenochimera
|
/datum/trait/positive/aquatic/xenochimera
|
||||||
sort = TRAIT_SORT_SPECIES
|
sort = TRAIT_SORT_SPECIES
|
||||||
allowed_species = list(SPECIES_XENOCHIMERA)
|
allowed_species = list(SPECIES_XENOCHIMERA)
|
||||||
name = "Xenochimera: Water Breather"
|
name = "Xenochimera: Aquatic"
|
||||||
desc = "You can breathe under water."
|
desc = "You can breathe under water and can traverse water more efficiently. Additionally, you can eat others in the water."
|
||||||
cost = 0
|
cost = 0
|
||||||
category = 0
|
category = 0
|
||||||
|
excludes = list(/datum/trait/positive/winged_flight/xenochimera)
|
||||||
|
custom_only = FALSE
|
||||||
|
|
||||||
|
/datum/trait/positive/winged_flight/xenochimera
|
||||||
|
name = "Xenochhimera: Winged Flight"
|
||||||
|
desc = "Allows you to fly by using your wings. Don't forget to bring them!"
|
||||||
|
cost = 0
|
||||||
|
excludes = list(/datum/trait/positive/aquatic/xenochimera)
|
||||||
custom_only = FALSE
|
custom_only = FALSE
|
||||||
|
|
||||||
/* // Commented out in lieu of finding a better solution.
|
/* // Commented out in lieu of finding a better solution.
|
||||||
|
|||||||
@@ -2858,6 +2858,7 @@
|
|||||||
#include "code\modules\mob\_modifiers\medical.dm"
|
#include "code\modules\mob\_modifiers\medical.dm"
|
||||||
#include "code\modules\mob\_modifiers\modifiers.dm"
|
#include "code\modules\mob\_modifiers\modifiers.dm"
|
||||||
#include "code\modules\mob\_modifiers\modifiers_misc.dm"
|
#include "code\modules\mob\_modifiers\modifiers_misc.dm"
|
||||||
|
#include "code\modules\mob\_modifiers\modifiers_vr.dm"
|
||||||
#include "code\modules\mob\_modifiers\traits.dm"
|
#include "code\modules\mob\_modifiers\traits.dm"
|
||||||
#include "code\modules\mob\_modifiers\traits_phobias.dm"
|
#include "code\modules\mob\_modifiers\traits_phobias.dm"
|
||||||
#include "code\modules\mob\_modifiers\unholy.dm"
|
#include "code\modules\mob\_modifiers\unholy.dm"
|
||||||
|
|||||||
Reference in New Issue
Block a user