Merge branch 'master' into patch-16

This commit is contained in:
Verkister
2018-04-22 15:41:18 +03:00
committed by GitHub
148 changed files with 7118 additions and 2670 deletions
@@ -0,0 +1,423 @@
/datum/riding/taur
keytype = /obj/item/weapon/material/twohanded/fluff/riding_crop // Crack!
nonhuman_key_exemption = FALSE // If true, nonhumans who can't hold keys don't need them, like borgs and simplemobs.
key_name = "a riding crop" // What the 'keys' for the thing being rided on would be called.
only_one_driver = TRUE // If true, only the person in 'front' (first on list of riding mobs) can drive.
/datum/riding/taur/handle_vehicle_layer()
if(ridden.has_buckled_mobs())
if(ridden.dir != NORTH)
ridden.layer = ABOVE_MOB_LAYER
else
ridden.layer = initial(ridden.layer)
else
ridden.layer = initial(ridden.layer)
/datum/riding/taur/ride_check(mob/living/M)
var/mob/living/L = ridden
if(L.stat)
force_dismount(M)
return FALSE
return TRUE
/datum/riding/taur/force_dismount(mob/M)
. =..()
ridden.visible_message("<span class='notice'>[M] stops riding [ridden]!</span>")
//Hoooo boy.
/datum/riding/taur/get_offsets(pass_index) // list(dir = x, y, layer)
var/mob/living/L = ridden
var/scale = L.size_multiplier
var/list/values = list(
"[NORTH]" = list(0, 8*scale, ABOVE_MOB_LAYER),
"[SOUTH]" = list(0, 8*scale, BELOW_MOB_LAYER),
"[EAST]" = list(-10*scale, 8*scale, BELOW_MOB_LAYER),
"[WEST]" = list(10*scale, 8*scale, BELOW_MOB_LAYER))
return values
//Human overrides for taur riding
/mob/living/carbon/human
max_buckled_mobs = 1 //Yeehaw
can_buckle = TRUE
buckle_movable = TRUE
buckle_lying = FALSE
/mob/living/carbon/human/New()
..()
riding_datum = new /datum/riding/taur(src)
/mob/living/carbon/human/buckle_mob(mob/living/M, forced = FALSE, check_loc = TRUE)
if(!isTaurTail(tail_style))
return FALSE
if(lying)
return FALSE
if(!ishuman(M))
return FALSE
if(M.size_multiplier > size_multiplier)
to_chat(M,"<span class='warning'>This isn't a pony show! They need to be bigger to ride.</span>")
return FALSE
var/mob/living/carbon/human/H = M
if(isTaurTail(H.tail_style))
to_chat(H,"<span class='warning'>Too many legs. TOO MANY LEGS!!</span>")
return FALSE
. = ..()
/mob/living/carbon/human/MouseDrop_T(mob/living/M, mob/living/user)
if(can_buckle && istype(M))
if(user_buckle_mob(M, user, silent = TRUE))
visible_message("<span class='notice'>[M] starts riding [name]!</span>")
return TRUE
/mob/living/carbon/human/attack_hand(mob/user as mob)
if(LAZYLEN(buckled_mobs))
//We're getting off!
if(user in buckled_mobs)
riding_datum.force_dismount(user)
//We're kicking everyone off!
if(user == src)
for(var/rider in buckled_mobs)
riding_datum.force_dismount(rider)
else
. = ..()
/*
////////////////////////////
/ =--------------------= /
/ == Taur Definitions == /
/ =--------------------= /
////////////////////////////
*/
// Taur sprites are now a subtype of tail since they are mutually exclusive anyway.
/datum/sprite_accessory/tail/taur
name = "You should not see this..."
icon = 'icons/mob/vore/taurs_vr.dmi'
do_colouration = 1 // Yes color, using tail color
color_blend_mode = ICON_MULTIPLY // The sprites for taurs are designed for ICON_MULTIPLY
//Could do nested lists but it started becoming a nightmare. It'd be more fun for lookups of a_intent and m_intent, but then subtypes need to
//duplicate all the messages, and it starts getting awkward. These are singletons, anyway!
//Messages to owner when stepping on/over
var/msg_owner_help_walk = "You carefully step over %prey."
var/msg_owner_help_run = "You carefully step over %prey."
var/msg_owner_harm_walk = "You methodically place your foot down upon %prey's body, slowly applying pressure, crushing them against the floor below!"
var/msg_owner_harm_run = "You carelessly step down onto %prey, crushing them!"
var/msg_owner_disarm_walk = "You firmly push your foot down on %prey, painfully but harmlessly pinning them to the ground!"
var/msg_owner_disarm_run = "You quickly push %prey to the ground with your foot!"
var/msg_owner_grab_fail = "You step down onto %prey, squishing them and forcing them down to the ground!"
var/msg_owner_grab_success = "You pin %prey down onto the floor with your foot and curl your toes up around their body, trapping them inbetween them!"
//Messages to prey when stepping on/over
var/msg_prey_help_walk = "%owner steps over you carefully!"
var/msg_prey_help_run = "%owner steps over you carefully!"
var/msg_prey_harm_walk = "%owner methodically places their foot upon your body, slowly applying pressure, crushing you against the floor below!"
var/msg_prey_harm_run = "%owner steps carelessly on your body, crushing you!"
var/msg_prey_disarm_walk = "%owner firmly pushes their foot down on you, quite painfully but harmlessly pinning you to the ground!"
var/msg_prey_disarm_run = "%owner pushes you down to the ground with their foot!"
var/msg_prey_grab_fail = "%owner steps down and squishes you with their foot, forcing you down to the ground!"
var/msg_prey_grab_success = "%owner pins you down to the floor with their foot and curls their toes up around your body, trapping you inbetween them!"
//Messages for smalls moving under larges
var/msg_owner_stepunder = "%owner runs between your legs." //Weird becuase in the case this is used, %owner is the 'bumper' (src)
var/msg_prey_stepunder = "You run between %prey's legs." //Same, inverse
/datum/sprite_accessory/tail/taur/roiz_long_lizard // Not ACTUALLY a taur, but it uses 32x64 so it wouldn't fit in tails.dmi, and having it as a tail bugs up the sprite.
name = "Long Lizard Tail (Roiz Lizden)"
icon_state = "roiz_tail_s"
do_colouration = 0
ckeys_allowed = list("spoopylizz")
/datum/sprite_accessory/tail/taur/wolf
name = "Wolf (Taur)"
icon_state = "wolf_s"
/datum/sprite_accessory/tail/taur/wolf/wolf_2c
name = "Wolf dual-color (Taur)"
icon_state = "wolf_s"
extra_overlay = "wolf_markings"
/datum/sprite_accessory/tail/taur/wolf/synthwolf
name = "SynthWolf dual-color (Taur)"
icon_state = "synthwolf_s"
extra_overlay = "synthwolf_markings"
/datum/sprite_accessory/tail/taur/naga
name = "Naga (Taur)"
icon_state = "naga_s"
msg_owner_help_walk = "You carefully slither around %prey."
msg_prey_help_walk = "%owner's huge tail slithers past beside you!"
msg_owner_help_run = "You carefully slither around %prey."
msg_prey_help_run = "%owner's huge tail slithers past beside you!"
msg_owner_disarm_run = "Your tail slides over %prey, pushing them down to the ground!"
msg_prey_disarm_run = "%owner's tail slides over you, forcing you down to the ground!"
msg_owner_disarm_walk = "You push down on %prey with your tail, pinning them down under you!"
msg_prey_disarm_walk = "%owner pushes down on you with their tail, pinning you down below them!"
msg_owner_harm_run = "Your heavy tail carelessly slides past %prey, crushing them!"
msg_prey_harm_run = "%owner quickly goes over your body, carelessly crushing you with their heavy tail!"
msg_owner_harm_walk = "Your heavy tail slowly and methodically slides down upon %prey, crushing against the floor below!"
msg_prey_harm_walk = "%owner's thick, heavy tail slowly and methodically slides down upon your body, mercilessly crushing you into the floor below!"
msg_owner_grab_success = "You slither over %prey with your large, thick tail, smushing them against the ground before coiling up around them, trapping them within the tight confines of your tail!"
msg_prey_grab_success = "%owner slithers over you with their large, thick tail, smushing you against the ground before coiling up around you, trapping you within the tight confines of their tail!"
msg_owner_grab_fail = "You squish %prey under your large, thick tail, forcing them onto the ground!"
msg_prey_grab_fail = "%owner pins you under their large, thick tail, forcing you onto the ground!"
msg_prey_stepunder = "You jump over %prey's thick tail."
msg_owner_stepunder = "%owner bounds over your tail."
/datum/sprite_accessory/tail/taur/naga/naga_2c
name = "Naga dual-color (Taur)"
icon_state = "naga_s"
extra_overlay = "naga_markings"
/datum/sprite_accessory/tail/taur/horse
name = "Horse (Taur)"
icon_state = "horse_s"
msg_owner_disarm_run = "You quickly push %prey to the ground with your hoof!"
msg_prey_disarm_run = "%owner pushes you down to the ground with their hoof!"
msg_owner_disarm_walk = "You firmly push your hoof down on %prey, painfully but harmlessly pinning them to the ground!"
msg_prey_disarm_walk = "%owner firmly pushes their hoof down on you, quite painfully but harmlessly pinning you to the ground!"
msg_owner_harm_walk = "You methodically place your hoof down upon %prey's body, slowly applying pressure, crushing them against the floor below!"
msg_prey_harm_walk = "%owner methodically places their hoof upon your body, slowly applying pressure, crushing you against the floor below!"
msg_owner_grab_success = "You pin %prey to the ground before scooping them up with your hooves!"
msg_prey_grab_success = "%owner pins you to the ground before scooping you up with their hooves!"
msg_owner_grab_fail = "You step down onto %prey, squishing them and forcing them down to the ground!"
msg_prey_grab_fail = "%owner steps down and squishes you with their hoof, forcing you down to the ground!"
/datum/sprite_accessory/tail/taur/horse/synthhorse
name = "SynthHorse dual-color (Taur)"
icon_state = "synthhorse_s"
extra_overlay = "synthhorse_markings"
/datum/sprite_accessory/tail/taur/cow
name = "Cow (Taur)"
icon_state = "cow_s"
msg_owner_disarm_run = "You quickly push %prey to the ground with your hoof!"
msg_prey_disarm_run = "%owner pushes you down to the ground with their hoof!"
msg_owner_disarm_walk = "You firmly push your hoof down on %prey, painfully but harmlessly pinning them to the ground!"
msg_prey_disarm_walk = "%owner firmly pushes their hoof down on you, quite painfully but harmlessly pinning you to the ground!"
msg_owner_harm_walk = "You methodically place your hoof down upon %prey's body, slowly applying pressure, crushing them against the floor below!"
msg_prey_harm_walk = "%owner methodically places their hoof upon your body, slowly applying pressure, crushing you against the floor below!"
msg_owner_grab_success = "You pin %prey to the ground before scooping them up with your hooves!"
msg_prey_grab_success = "%owner pins you to the ground before scooping you up with their hooves!"
msg_owner_grab_fail = "You step down onto %prey, squishing them and forcing them down to the ground!"
msg_prey_grab_fail = "%owner steps down and squishes you with their hoof, forcing you down to the ground!"
/datum/sprite_accessory/tail/taur/deer
name = "Deer dual-color (Taur)"
icon_state = "deer_s"
extra_overlay = "deer_markings"
msg_owner_disarm_run = "You quickly push %prey to the ground with your hoof!"
msg_prey_disarm_run = "%owner pushes you down to the ground with their hoof!"
msg_owner_disarm_walk = "You firmly push your hoof down on %prey, painfully but harmlessly pinning them to the ground!"
msg_prey_disarm_walk = "%owner firmly pushes their hoof down on you, quite painfully but harmlessly pinning you to the ground!"
msg_owner_harm_walk = "You methodically place your hoof down upon %prey's body, slowly applying pressure, crushing them against the floor below!"
msg_prey_harm_walk = "%owner methodically places their hoof upon your body, slowly applying pressure, crushing you against the floor below!"
msg_owner_grab_success = "You pin %prey to the ground before scooping them up with your hooves!"
msg_prey_grab_success = "%owner pins you to the ground before scooping you up with their hooves!"
msg_owner_grab_fail = "You step down onto %prey, squishing them and forcing them down to the ground!"
msg_prey_grab_fail = "%owner steps down and squishes you with their hoof, forcing you down to the ground!"
/datum/sprite_accessory/tail/taur/lizard
name = "Lizard (Taur)"
icon_state = "lizard_s"
/datum/sprite_accessory/tail/taur/lizard/lizard_2c
name = "Lizard dual-color (Taur)"
icon_state = "lizard_s"
extra_overlay = "lizard_markings"
/datum/sprite_accessory/tail/taur/lizard/synthlizard
name = "SynthLizard dual-color (Taur)"
icon_state = "synthlizard_s"
extra_overlay = "synthlizard_markings"
/datum/sprite_accessory/tail/taur/spider
name = "Spider (Taur)"
icon_state = "spider_s"
msg_owner_disarm_run = "You quickly push %prey to the ground with your leg!"
msg_prey_disarm_run = "%owner pushes you down to the ground with their leg!"
msg_owner_disarm_walk = "You firmly push your leg down on %prey, painfully but harmlessly pinning them to the ground!"
msg_prey_disarm_walk = "%owner firmly pushes their leg down on you, quite painfully but harmlessly pinning you to the ground!"
msg_owner_harm_walk = "You methodically place your leg down upon %prey's body, slowly applying pressure, crushing them against the floor below!"
msg_prey_harm_walk = "%owner methodically places their leg upon your body, slowly applying pressure, crushing you against the floor below!"
msg_owner_grab_success = "You pin %prey down on the ground with your front leg before using your other leg to pick them up, trapping them between two of your front legs!"
msg_prey_grab_success = "%owner pins you down on the ground with their front leg before using their other leg to pick you up, trapping you between two of their front legs!"
msg_owner_grab_fail = "You step down onto %prey, squishing them and forcing them down to the ground!"
msg_prey_grab_fail = "%owner steps down and squishes you with their leg, forcing you down to the ground!"
/datum/sprite_accessory/tail/taur/tents
name = "Tentacles (Taur)"
icon_state = "tent_s"
msg_prey_stepunder = "You run between %prey's tentacles."
msg_owner_stepunder = "%owner runs between your tentacles."
msg_owner_disarm_run = "You quickly push %prey to the ground with some of your tentacles!"
msg_prey_disarm_run = "%owner pushes you down to the ground with some of their tentacles!"
msg_owner_disarm_walk = "You push down on %prey with some of your tentacles, pinning them down firmly under you!"
msg_prey_disarm_walk = "%owner pushes down on you with some of their tentacles, pinning you down firmly below them!"
msg_owner_harm_run = "Your tentacles carelessly slide past %prey, crushing them!"
msg_prey_harm_run = "%owner quickly goes over your body, carelessly crushing you with their tentacles!"
msg_owner_harm_walk = "Your tentacles methodically apply pressure on %prey's body, crushing them against the floor below!"
msg_prey_harm_walk = "%owner's thick tentacles methodically apply pressure on your body, crushing you into the floor below!"
msg_owner_grab_success = "You slide over %prey with your tentacles, smushing them against the ground before wrapping one up around them, trapping them within the tight confines of your tentacles!"
msg_prey_grab_success = "%owner slides over you with their tentacles, smushing you against the ground before wrapping one up around you, trapping you within the tight confines of their tentacles!"
msg_owner_grab_fail = "You step down onto %prey with one of your tentacles, forcing them onto the ground!"
msg_prey_grab_fail = "%owner steps down onto you with one of their tentacles, squishing you and forcing you onto the ground!"
/datum/sprite_accessory/tail/taur/feline
name = "Feline (Taur)"
icon_state = "feline_s"
/datum/sprite_accessory/tail/taur/feline/feline_2c
name = "Feline dual-color (Taur)"
icon_state = "feline_s"
extra_overlay = "feline_markings"
/datum/sprite_accessory/tail/taur/feline/synthfeline
name = "SynthFeline dual-color (Taur)"
icon_state = "synthfeline_s"
extra_overlay = "synthfeline_markings"
/datum/sprite_accessory/tail/taur/slug
name = "Slug (Taur)"
icon_state = "slug_s"
msg_owner_help_walk = "You carefully slither around %prey."
msg_prey_help_walk = "%owner's huge tail slithers past beside you!"
msg_owner_help_run = "You carefully slither around %prey."
msg_prey_help_run = "%owner's huge tail slithers past beside you!"
msg_owner_disarm_run = "Your tail slides over %prey, pushing them down to the ground!"
msg_prey_disarm_run = "%owner's tail slides over you, forcing you down to the ground!"
msg_owner_disarm_walk = "You push down on %prey with your tail, pinning them down under you!"
msg_prey_disarm_walk = "%owner pushes down on you with their tail, pinning you down below them!"
msg_owner_harm_run = "Your heavy tail carelessly slides past %prey, crushing them!"
msg_prey_harm_run = "%owner quickly goes over your body, carelessly crushing you with their heavy tail!"
msg_owner_harm_walk = "Your heavy tail slowly and methodically slides down upon %prey, crushing against the floor below!"
msg_prey_harm_walk = "%owner's thick, heavy tail slowly and methodically slides down upon your body, mercilessly crushing you into the floor below!"
msg_owner_grab_success = "You slither over %prey with your large, thick tail, smushing them against the ground before coiling up around them, trapping them within the tight confines of your tail!"
msg_prey_grab_success = "%owner slithers over you with their large, thick tail, smushing you against the ground before coiling up around you, trapping you within the tight confines of their tail!"
msg_owner_grab_fail = "You squish %prey under your large, thick tail, forcing them onto the ground!"
msg_prey_grab_fail = "%owner pins you under their large, thick tail, forcing you onto the ground!"
msg_prey_stepunder = "You jump over %prey's thick tail."
msg_owner_stepunder = "%owner bounds over your tail."
/datum/sprite_accessory/tail/taur/frog
name = "Frog (Taur)"
icon_state = "frog_s"
/datum/sprite_accessory/tail/taur/drake //Enabling on request, no suit compatibility but then again see 2 above.
name = "Drake (Taur)"
icon_state = "drake_s"
extra_overlay = "drake_markings"
/datum/sprite_accessory/tail/taur/otie
name = "Otie (Taur)"
icon_state = "otie_s"
extra_overlay = "otie_markings"
//wickedtemp: Chakat Tempest
/datum/sprite_accessory/tail/taur/feline/tempest
name = "Feline (wickedtemp) (Taur)"
icon_state = "tempest_s"
ckeys_allowed = list("wickedtemp")
//silencedmp5a5: Serdykov Antoz
/datum/sprite_accessory/tail/taur/wolf/serdy
name = "CyberSerdy (silencedmp5a5) (Taur)"
icon_state = "serdy_s"
ckeys_allowed = list("silencedmp5a5")
//liquidfirefly: Ariana Scol
/datum/sprite_accessory/tail/taur/centipede
name = "Centipede (liquidfirefly) (Taur)"
icon_state = "ariana_s"
ckeys_allowed = list("liquidfirefly")
do_colouration = 0
msg_owner_disarm_run = "You quickly push %prey to the ground with your leg!"
msg_prey_disarm_run = "%owner pushes you down to the ground with their leg!"
msg_owner_disarm_walk = "You firmly push your leg down on %prey, painfully but harmlessly pinning them to the ground!"
msg_prey_disarm_walk = "%owner firmly pushes their leg down on you, quite painfully but harmlessly pinning you to the ground!"
msg_owner_harm_walk = "You methodically place your leg down upon %prey's body, slowly applying pressure, crushing them against the floor below!"
msg_prey_harm_walk = "%owner methodically places their leg upon your body, slowly applying pressure, crushing you against the floor below!"
msg_owner_grab_success = "You pin %prey down on the ground with your front leg before using your other leg to pick them up, trapping them between two of your front legs!"
msg_prey_grab_success = "%owner pins you down on the ground with their front leg before using their other leg to pick you up, trapping you between two of their front legs!"
msg_owner_grab_fail = "You step down onto %prey, squishing them and forcing them down to the ground!"
msg_prey_grab_fail = "%owner steps down and squishes you with their leg, forcing you down to the ground!"
//liquidfirefly: Ariana Scol
/datum/sprite_accessory/tail/taur/alraune
name = "Alraune (natje) (Taur)"
icon_state = "alraune_s"
ani_state = "alraune_closed_s"
ckeys_allowed = list("natje")
do_colouration = 0
msg_owner_disarm_run = "You quickly push %prey to the ground with your leg!"
msg_prey_disarm_run = "%owner pushes you down to the ground with their leg!"
msg_owner_disarm_walk = "You firmly push your leg down on %prey, painfully but harmlessly pinning them to the ground!"
msg_prey_disarm_walk = "%owner firmly pushes their leg down on you, quite painfully but harmlessly pinning you to the ground!"
msg_owner_harm_walk = "You methodically place your leg down upon %prey's body, slowly applying pressure, crushing them against the floor below!"
msg_prey_harm_walk = "%owner methodically places their leg upon your body, slowly applying pressure, crushing you against the floor below!"
msg_owner_grab_success = "You pin %prey down on the ground with your front leg before using your other leg to pick them up, trapping them between two of your front legs!"
msg_prey_grab_success = "%owner pins you down on the ground with their front leg before using their other leg to pick you up, trapping you between two of their front legs!"
msg_owner_grab_fail = "You step down onto %prey, squishing them and forcing them down to the ground!"
msg_prey_grab_fail = "%owner steps down and squishes you with their leg, forcing you down to the ground!"
@@ -270,6 +270,31 @@
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
/datum/sprite_accessory/ears/teshari
name = "Teshari (colorable fluff)"
desc = ""
icon_state = "teshari"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
extra_overlay = "teshariinner"
/datum/sprite_accessory/ears/tesharihigh
name = "Teshari upper ears (colorable fluff)"
desc = ""
icon_state = "tesharihigh"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
extra_overlay = "tesharihighinner"
/datum/sprite_accessory/ears/tesharilow
name = "Teshari lower ears (colorable fluff)"
desc = ""
icon_state = "tesharilow"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
extra_overlay = "tesharilowinner"
// Special snowflake ears go below here.
/datum/sprite_accessory/ears/molenar_kitsune
@@ -896,6 +921,14 @@
color_blend_mode = ICON_MULTIPLY
extra_overlay = "deertail_mark"
/datum/sprite_accessory/tail/teshari_fluffytail
name = "Teshari alternative, colorable"
desc = ""
icon_state = "teshari_fluffytail"
extra_overlay = "teshari_fluffytail_mark"
do_colouration = 1
color_blend_mode = ICON_MULTIPLY
//For all species tails. Includes haircolored tails.
/datum/sprite_accessory/tail/special
name = "Blank tail. Do not select."
@@ -1093,338 +1126,4 @@
desc = ""
icon_state = "zenghu_taj"
/*
////////////////////////////
/ =--------------------= /
/ == Taur Definitions == /
/ =--------------------= /
////////////////////////////
*/
// Taur sprites are now a subtype of tail since they are mutually exclusive anyway.
/datum/sprite_accessory/tail/taur
name = "You should not see this..."
icon = 'icons/mob/vore/taurs_vr.dmi'
do_colouration = 1 // Yes color, using tail color
color_blend_mode = ICON_MULTIPLY // The sprites for taurs are designed for ICON_MULTIPLY
//Could do nested lists but it started becoming a nightmare. It'd be more fun for lookups of a_intent and m_intent, but then subtypes need to
//duplicate all the messages, and it starts getting awkward. These are singletons, anyway!
//Messages to owner when stepping on/over
var/msg_owner_help_walk = "You carefully step over %prey."
var/msg_owner_help_run = "You carefully step over %prey."
var/msg_owner_harm_walk = "You methodically place your foot down upon %prey's body, slowly applying pressure, crushing them against the floor below!"
var/msg_owner_harm_run = "You carelessly step down onto %prey, crushing them!"
var/msg_owner_disarm_walk = "You firmly push your foot down on %prey, painfully but harmlessly pinning them to the ground!"
var/msg_owner_disarm_run = "You quickly push %prey to the ground with your foot!"
var/msg_owner_grab_fail = "You step down onto %prey, squishing them and forcing them down to the ground!"
var/msg_owner_grab_success = "You pin %prey down onto the floor with your foot and curl your toes up around their body, trapping them inbetween them!"
//Messages to prey when stepping on/over
var/msg_prey_help_walk = "%owner steps over you carefully!"
var/msg_prey_help_run = "%owner steps over you carefully!"
var/msg_prey_harm_walk = "%owner methodically places their foot upon your body, slowly applying pressure, crushing you against the floor below!"
var/msg_prey_harm_run = "%owner steps carelessly on your body, crushing you!"
var/msg_prey_disarm_walk = "%owner firmly pushes their foot down on you, quite painfully but harmlessly pinning you to the ground!"
var/msg_prey_disarm_run = "%owner pushes you down to the ground with their foot!"
var/msg_prey_grab_fail = "%owner steps down and squishes you with their foot, forcing you down to the ground!"
var/msg_prey_grab_success = "%owner pins you down to the floor with their foot and curls their toes up around your body, trapping you inbetween them!"
//Messages for smalls moving under larges
var/msg_owner_stepunder = "%owner runs between your legs." //Weird becuase in the case this is used, %owner is the 'bumper' (src)
var/msg_prey_stepunder = "You run between %prey's legs." //Same, inverse
/datum/sprite_accessory/tail/taur/roiz_long_lizard // Not ACTUALLY a taur, but it uses 32x64 so it wouldn't fit in tails.dmi, and having it as a tail bugs up the sprite.
name = "Long Lizard Tail (Roiz Lizden)"
icon_state = "roiz_tail_s"
do_colouration = 0
ckeys_allowed = list("spoopylizz")
/datum/sprite_accessory/tail/taur/wolf
name = "Wolf (Taur)"
icon_state = "wolf_s"
/datum/sprite_accessory/tail/taur/wolf/wolf_2c
name = "Wolf dual-color (Taur)"
icon_state = "wolf_s"
extra_overlay = "wolf_markings"
/datum/sprite_accessory/tail/taur/wolf/synthwolf
name = "SynthWolf dual-color (Taur)"
icon_state = "synthwolf_s"
extra_overlay = "synthwolf_markings"
/datum/sprite_accessory/tail/taur/naga
name = "Naga (Taur)"
icon_state = "naga_s"
msg_owner_help_walk = "You carefully slither around %prey."
msg_prey_help_walk = "%owner's huge tail slithers past beside you!"
msg_owner_help_run = "You carefully slither around %prey."
msg_prey_help_run = "%owner's huge tail slithers past beside you!"
msg_owner_disarm_run = "Your tail slides over %prey, pushing them down to the ground!"
msg_prey_disarm_run = "%owner's tail slides over you, forcing you down to the ground!"
msg_owner_disarm_walk = "You push down on %prey with your tail, pinning them down under you!"
msg_prey_disarm_walk = "%owner pushes down on you with their tail, pinning you down below them!"
msg_owner_harm_run = "Your heavy tail carelessly slides past %prey, crushing them!"
msg_prey_harm_run = "%owner quickly goes over your body, carelessly crushing you with their heavy tail!"
msg_owner_harm_walk = "Your heavy tail slowly and methodically slides down upon %prey, crushing against the floor below!"
msg_prey_harm_walk = "%owner's thick, heavy tail slowly and methodically slides down upon your body, mercilessly crushing you into the floor below!"
msg_owner_grab_success = "You slither over %prey with your large, thick tail, smushing them against the ground before coiling up around them, trapping them within the tight confines of your tail!"
msg_prey_grab_success = "%owner slithers over you with their large, thick tail, smushing you against the ground before coiling up around you, trapping you within the tight confines of their tail!"
msg_owner_grab_fail = "You squish %prey under your large, thick tail, forcing them onto the ground!"
msg_prey_grab_fail = "%owner pins you under their large, thick tail, forcing you onto the ground!"
msg_prey_stepunder = "You jump over %prey's thick tail."
msg_owner_stepunder = "%owner bounds over your tail."
/datum/sprite_accessory/tail/taur/naga/naga_2c
name = "Naga dual-color (Taur)"
icon_state = "naga_s"
extra_overlay = "naga_markings"
/datum/sprite_accessory/tail/taur/horse
name = "Horse (Taur)"
icon_state = "horse_s"
msg_owner_disarm_run = "You quickly push %prey to the ground with your hoof!"
msg_prey_disarm_run = "%owner pushes you down to the ground with their hoof!"
msg_owner_disarm_walk = "You firmly push your hoof down on %prey, painfully but harmlessly pinning them to the ground!"
msg_prey_disarm_walk = "%owner firmly pushes their hoof down on you, quite painfully but harmlessly pinning you to the ground!"
msg_owner_harm_walk = "You methodically place your hoof down upon %prey's body, slowly applying pressure, crushing them against the floor below!"
msg_prey_harm_walk = "%owner methodically places their hoof upon your body, slowly applying pressure, crushing you against the floor below!"
msg_owner_grab_success = "You pin %prey to the ground before scooping them up with your hooves!"
msg_prey_grab_success = "%owner pins you to the ground before scooping you up with their hooves!"
msg_owner_grab_fail = "You step down onto %prey, squishing them and forcing them down to the ground!"
msg_prey_grab_fail = "%owner steps down and squishes you with their hoof, forcing you down to the ground!"
/datum/sprite_accessory/tail/taur/horse/synthhorse
name = "SynthHorse dual-color (Taur)"
icon_state = "synthhorse_s"
extra_overlay = "synthhorse_markings"
/datum/sprite_accessory/tail/taur/cow
name = "Cow (Taur)"
icon_state = "cow_s"
msg_owner_disarm_run = "You quickly push %prey to the ground with your hoof!"
msg_prey_disarm_run = "%owner pushes you down to the ground with their hoof!"
msg_owner_disarm_walk = "You firmly push your hoof down on %prey, painfully but harmlessly pinning them to the ground!"
msg_prey_disarm_walk = "%owner firmly pushes their hoof down on you, quite painfully but harmlessly pinning you to the ground!"
msg_owner_harm_walk = "You methodically place your hoof down upon %prey's body, slowly applying pressure, crushing them against the floor below!"
msg_prey_harm_walk = "%owner methodically places their hoof upon your body, slowly applying pressure, crushing you against the floor below!"
msg_owner_grab_success = "You pin %prey to the ground before scooping them up with your hooves!"
msg_prey_grab_success = "%owner pins you to the ground before scooping you up with their hooves!"
msg_owner_grab_fail = "You step down onto %prey, squishing them and forcing them down to the ground!"
msg_prey_grab_fail = "%owner steps down and squishes you with their hoof, forcing you down to the ground!"
/datum/sprite_accessory/tail/taur/deer
name = "Deer dual-color (Taur)"
icon_state = "deer_s"
extra_overlay = "deer_markings"
msg_owner_disarm_run = "You quickly push %prey to the ground with your hoof!"
msg_prey_disarm_run = "%owner pushes you down to the ground with their hoof!"
msg_owner_disarm_walk = "You firmly push your hoof down on %prey, painfully but harmlessly pinning them to the ground!"
msg_prey_disarm_walk = "%owner firmly pushes their hoof down on you, quite painfully but harmlessly pinning you to the ground!"
msg_owner_harm_walk = "You methodically place your hoof down upon %prey's body, slowly applying pressure, crushing them against the floor below!"
msg_prey_harm_walk = "%owner methodically places their hoof upon your body, slowly applying pressure, crushing you against the floor below!"
msg_owner_grab_success = "You pin %prey to the ground before scooping them up with your hooves!"
msg_prey_grab_success = "%owner pins you to the ground before scooping you up with their hooves!"
msg_owner_grab_fail = "You step down onto %prey, squishing them and forcing them down to the ground!"
msg_prey_grab_fail = "%owner steps down and squishes you with their hoof, forcing you down to the ground!"
/datum/sprite_accessory/tail/taur/lizard
name = "Lizard (Taur)"
icon_state = "lizard_s"
/datum/sprite_accessory/tail/taur/lizard/lizard_2c
name = "Lizard dual-color (Taur)"
icon_state = "lizard_s"
extra_overlay = "lizard_markings"
/datum/sprite_accessory/tail/taur/lizard/synthlizard
name = "SynthLizard dual-color (Taur)"
icon_state = "synthlizard_s"
extra_overlay = "synthlizard_markings"
/datum/sprite_accessory/tail/taur/spider
name = "Spider (Taur)"
icon_state = "spider_s"
msg_owner_disarm_run = "You quickly push %prey to the ground with your leg!"
msg_prey_disarm_run = "%owner pushes you down to the ground with their leg!"
msg_owner_disarm_walk = "You firmly push your leg down on %prey, painfully but harmlessly pinning them to the ground!"
msg_prey_disarm_walk = "%owner firmly pushes their leg down on you, quite painfully but harmlessly pinning you to the ground!"
msg_owner_harm_walk = "You methodically place your leg down upon %prey's body, slowly applying pressure, crushing them against the floor below!"
msg_prey_harm_walk = "%owner methodically places their leg upon your body, slowly applying pressure, crushing you against the floor below!"
msg_owner_grab_success = "You pin %prey down on the ground with your front leg before using your other leg to pick them up, trapping them between two of your front legs!"
msg_prey_grab_success = "%owner pins you down on the ground with their front leg before using their other leg to pick you up, trapping you between two of their front legs!"
msg_owner_grab_fail = "You step down onto %prey, squishing them and forcing them down to the ground!"
msg_prey_grab_fail = "%owner steps down and squishes you with their leg, forcing you down to the ground!"
/datum/sprite_accessory/tail/taur/tents
name = "Tentacles (Taur)"
icon_state = "tent_s"
msg_prey_stepunder = "You run between %prey's tentacles."
msg_owner_stepunder = "%owner runs between your tentacles."
msg_owner_disarm_run = "You quickly push %prey to the ground with some of your tentacles!"
msg_prey_disarm_run = "%owner pushes you down to the ground with some of their tentacles!"
msg_owner_disarm_walk = "You push down on %prey with some of your tentacles, pinning them down firmly under you!"
msg_prey_disarm_walk = "%owner pushes down on you with some of their tentacles, pinning you down firmly below them!"
msg_owner_harm_run = "Your tentacles carelessly slide past %prey, crushing them!"
msg_prey_harm_run = "%owner quickly goes over your body, carelessly crushing you with their tentacles!"
msg_owner_harm_walk = "Your tentacles methodically apply pressure on %prey's body, crushing them against the floor below!"
msg_prey_harm_walk = "%owner's thick tentacles methodically apply pressure on your body, crushing you into the floor below!"
msg_owner_grab_success = "You slide over %prey with your tentacles, smushing them against the ground before wrapping one up around them, trapping them within the tight confines of your tentacles!"
msg_prey_grab_success = "%owner slides over you with their tentacles, smushing you against the ground before wrapping one up around you, trapping you within the tight confines of their tentacles!"
msg_owner_grab_fail = "You step down onto %prey with one of your tentacles, forcing them onto the ground!"
msg_prey_grab_fail = "%owner steps down onto you with one of their tentacles, squishing you and forcing you onto the ground!"
/datum/sprite_accessory/tail/taur/feline
name = "Feline (Taur)"
icon_state = "feline_s"
/datum/sprite_accessory/tail/taur/feline/feline_2c
name = "Feline dual-color (Taur)"
icon_state = "feline_s"
extra_overlay = "feline_markings"
/datum/sprite_accessory/tail/taur/feline/synthfeline
name = "SynthFeline dual-color (Taur)"
icon_state = "synthfeline_s"
extra_overlay = "synthfeline_markings"
/datum/sprite_accessory/tail/taur/slug
name = "Slug (Taur)"
icon_state = "slug_s"
msg_owner_help_walk = "You carefully slither around %prey."
msg_prey_help_walk = "%owner's huge tail slithers past beside you!"
msg_owner_help_run = "You carefully slither around %prey."
msg_prey_help_run = "%owner's huge tail slithers past beside you!"
msg_owner_disarm_run = "Your tail slides over %prey, pushing them down to the ground!"
msg_prey_disarm_run = "%owner's tail slides over you, forcing you down to the ground!"
msg_owner_disarm_walk = "You push down on %prey with your tail, pinning them down under you!"
msg_prey_disarm_walk = "%owner pushes down on you with their tail, pinning you down below them!"
msg_owner_harm_run = "Your heavy tail carelessly slides past %prey, crushing them!"
msg_prey_harm_run = "%owner quickly goes over your body, carelessly crushing you with their heavy tail!"
msg_owner_harm_walk = "Your heavy tail slowly and methodically slides down upon %prey, crushing against the floor below!"
msg_prey_harm_walk = "%owner's thick, heavy tail slowly and methodically slides down upon your body, mercilessly crushing you into the floor below!"
msg_owner_grab_success = "You slither over %prey with your large, thick tail, smushing them against the ground before coiling up around them, trapping them within the tight confines of your tail!"
msg_prey_grab_success = "%owner slithers over you with their large, thick tail, smushing you against the ground before coiling up around you, trapping you within the tight confines of their tail!"
msg_owner_grab_fail = "You squish %prey under your large, thick tail, forcing them onto the ground!"
msg_prey_grab_fail = "%owner pins you under their large, thick tail, forcing you onto the ground!"
msg_prey_stepunder = "You jump over %prey's thick tail."
msg_owner_stepunder = "%owner bounds over your tail."
/datum/sprite_accessory/tail/taur/frog
name = "Frog (Taur)"
icon_state = "frog_s"
/datum/sprite_accessory/tail/taur/drake //Enabling on request, no suit compatibility but then again see 2 above.
name = "Drake (Taur)"
icon_state = "drake_s"
extra_overlay = "drake_markings"
/datum/sprite_accessory/tail/taur/otie
name = "Otie (Taur)"
icon_state = "otie_s"
extra_overlay = "otie_markings"
//wickedtemp: Chakat Tempest
/datum/sprite_accessory/tail/taur/feline/tempest
name = "Feline (wickedtemp) (Taur)"
icon_state = "tempest_s"
ckeys_allowed = list("wickedtemp")
//silencedmp5a5: Serdykov Antoz
/datum/sprite_accessory/tail/taur/wolf/serdy
name = "CyberSerdy (silencedmp5a5) (Taur)"
icon_state = "serdy_s"
ckeys_allowed = list("silencedmp5a5")
//liquidfirefly: Ariana Scol
/datum/sprite_accessory/tail/taur/centipede
name = "Centipede (liquidfirefly) (Taur)"
icon_state = "ariana_s"
ckeys_allowed = list("liquidfirefly")
do_colouration = 0
msg_owner_disarm_run = "You quickly push %prey to the ground with your leg!"
msg_prey_disarm_run = "%owner pushes you down to the ground with their leg!"
msg_owner_disarm_walk = "You firmly push your leg down on %prey, painfully but harmlessly pinning them to the ground!"
msg_prey_disarm_walk = "%owner firmly pushes their leg down on you, quite painfully but harmlessly pinning you to the ground!"
msg_owner_harm_walk = "You methodically place your leg down upon %prey's body, slowly applying pressure, crushing them against the floor below!"
msg_prey_harm_walk = "%owner methodically places their leg upon your body, slowly applying pressure, crushing you against the floor below!"
msg_owner_grab_success = "You pin %prey down on the ground with your front leg before using your other leg to pick them up, trapping them between two of your front legs!"
msg_prey_grab_success = "%owner pins you down on the ground with their front leg before using their other leg to pick you up, trapping you between two of their front legs!"
msg_owner_grab_fail = "You step down onto %prey, squishing them and forcing them down to the ground!"
msg_prey_grab_fail = "%owner steps down and squishes you with their leg, forcing you down to the ground!"
//liquidfirefly: Ariana Scol
/datum/sprite_accessory/tail/taur/alraune
name = "Alraune (natje) (Taur)"
icon_state = "alraune_s"
ani_state = "alraune_closed_s"
ckeys_allowed = list("natje")
do_colouration = 0
msg_owner_disarm_run = "You quickly push %prey to the ground with your leg!"
msg_prey_disarm_run = "%owner pushes you down to the ground with their leg!"
msg_owner_disarm_walk = "You firmly push your leg down on %prey, painfully but harmlessly pinning them to the ground!"
msg_prey_disarm_walk = "%owner firmly pushes their leg down on you, quite painfully but harmlessly pinning you to the ground!"
msg_owner_harm_walk = "You methodically place your leg down upon %prey's body, slowly applying pressure, crushing them against the floor below!"
msg_prey_harm_walk = "%owner methodically places their leg upon your body, slowly applying pressure, crushing you against the floor below!"
msg_owner_grab_success = "You pin %prey down on the ground with your front leg before using your other leg to pick them up, trapping them between two of your front legs!"
msg_prey_grab_success = "%owner pins you down on the ground with their front leg before using their other leg to pick you up, trapping you between two of their front legs!"
msg_owner_grab_fail = "You step down onto %prey, squishing them and forcing them down to the ground!"
msg_prey_grab_fail = "%owner steps down and squishes you with their leg, forcing you down to the ground!"
//Taurs moved to a separate file due to extra code around them
@@ -1,4 +1,3 @@
#define isTaurTail(A) istype(A, /datum/sprite_accessory/tail/taur)
var/global/list/wing_icon_cache = list()
/mob/living/carbon/human/proc/get_ears_overlay()
+15 -6
View File
@@ -13,6 +13,7 @@
next_process = times_fired + (6 SECONDS/wait) //Set up our next process time.
var/play_sound //Potential sound to play at the end to avoid code duplication.
var/to_update = FALSE //Did anything update worthy happen?
/////////////////////////// Auto-Emotes ///////////////////////////
if(contents.len && next_emote <= times_fired)
@@ -41,7 +42,7 @@
items_preserved |= I
else
digest_item(I)
owner.updateVRPanel()
to_update = TRUE
did_an_item = TRUE
//Handle eaten mobs
@@ -72,8 +73,7 @@
items_preserved |= I
else
digest_item(I)
owner.updateVRPanel()
H.updateVRPanel()
to_update = TRUE
break
///////////////////////////// DM_HOLD /////////////////////////////
@@ -103,7 +103,7 @@
digest_alert_owner = replacetext(digest_alert_owner,"%prey",M)
digest_alert_owner = replacetext(digest_alert_owner,"%belly",lowertext(name))
digest_alert_prey = replacetext(digest_alert_prey,"%pred",owner)
digest_alert_prey = replacetext(digest_alert_prey,"%pred",owner)
digest_alert_prey = replacetext(digest_alert_prey,"%prey",M)
digest_alert_prey = replacetext(digest_alert_prey,"%belly",lowertext(name))
@@ -120,6 +120,8 @@
R.cell.charge += 25*compensation
else
owner.nutrition += 4.5*compensation
to_update = TRUE
continue
// Deal digestion damage (and feed the pred)
@@ -135,9 +137,7 @@
owner.nutrition += offset*(4.5*(digest_brute+digest_burn)/difference) //4.5 nutrition points per health point. Normal same size 100+100 health prey with average weight would give 900 points if the digestion was instant. With all the size/weight offset taxes plus over time oxyloss+hunger taxes deducted with non-instant digestion, this should be enough to not leave the pred starved.
else
owner.nutrition += 4.5*(digest_brute+digest_burn)/difference
M.updateVRPanel()
owner.updateVRPanel()
//////////////////////////// DM_ABSORB ////////////////////////////
else if(digest_mode == DM_ABSORB)
@@ -156,6 +156,7 @@
owner.nutrition += oldnutrition
else if(M.nutrition < 100) //When they're finally drained.
absorb_living(M)
to_update = TRUE
//////////////////////////// DM_UNABSORB ////////////////////////////
else if(digest_mode == DM_UNABSORB)
@@ -168,6 +169,7 @@
to_chat(M,"<span class='notice'>You suddenly feel solid again </span>")
to_chat(owner,"<span class='notice'>You feel like a part of you is missing.</span>")
owner.nutrition -= 100
to_update = TRUE
//////////////////////////// DM_DRAIN ////////////////////////////
else if(digest_mode == DM_DRAIN)
@@ -261,4 +263,11 @@
/////////////////////////// Make any noise ///////////////////////////
if(play_sound)
playsound(src, play_sound, vol = 100, vary = 1, falloff = VORE_SOUND_FALLOFF, ignore_walls = TRUE, preference = /datum/client_preference/digestion_noises)
if(to_update)
for(var/mob/living/M in contents)
if(M.client)
M.updateVRPanel()
if(owner.client)
owner.updateVRPanel()
return SSBELLIES_PROCESSED
+2 -2
View File
@@ -507,7 +507,7 @@
selected.name = new_name
if(href_list["b_mode"])
var/list/menu_list = selected.digest_modes
var/list/menu_list = selected.digest_modes.Copy()
if(istype(usr,/mob/living/carbon/human))
menu_list += DM_TRANSFORM
@@ -526,7 +526,7 @@
selected.items_preserved.Cut() //Re-evaltuate all items in belly on belly-mode change
if(href_list["b_addons"])
var/list/menu_list = selected.mode_flag_list
var/list/menu_list = selected.mode_flag_list.Copy()
var/toggle_addon = input("Toggle Addon") as null|anything in menu_list
if(!toggle_addon)
return 0
@@ -172,27 +172,6 @@
can_hold = list(/obj/item/clothing/under/swimsuit/)
has_items = list(/obj/item/clothing/under/swimsuit/fluff/penelope)
//Arokha:Aronai Kadigan
/obj/item/weapon/storage/backpack/satchel/gen/fluff/aronai
name = "blue medical satchel"
desc = "A medical satchel done up in blue and white."
New()
..() //Might look like a lot... but all small items.
//Centcom stuff and permit
new /obj/item/weapon/card/id/centcom/station/fluff/aronai(src)
//new /obj/item/clothing/accessory/permit/gun/fluff/aronai_kadigan(src)
//Gun and holster
//new /obj/item/weapon/gun/projectile/nsfw(src)
//new /obj/item/ammo_magazine/nsfw_mag(src)
//new /obj/item/ammo_casing/nsfw_batt/stun(src)
//new /obj/item/ammo_casing/nsfw_batt/stun(src)
//new /obj/item/ammo_casing/nsfw_batt/net(src)
//new /obj/item/clothing/accessory/holster(src)
/obj/item/weapon/storage/backpack/satchel/gen/fluff/aronai/digest_act(...)
return FALSE //I get eaten a lot, okay
//Aerowing:Sebastian Aji
/obj/item/weapon/storage/box/fluff/sebastian_aji
name = "Sebastian's Lumoco Arms P3 Box"
@@ -1797,3 +1797,14 @@ Departamental Swimsuits, for general use
else
H << "<span class='warning'>This suit is not designed for you.</span>"
return 0
//Zigfe:Zaoozaoo Xrimxuqmqixzix
/obj/item/clothing/head/fluff/zao
name = "Zao's Hat"
desc = "A black hat that has an uncanny similarity to the HoS's hat. There's a small letter Z sewn on the inside of the brim."
icon = 'icons/vore/custom_clothes_vr.dmi'
icon_state = "zao_cap"
icon_override = 'icons/vore/custom_clothes_vr.dmi'
item_state = "zao_cap_mob"
@@ -347,6 +347,11 @@
name = "\improper MEUSOC .45"
desc = "Some serious drywall work, coming up!"
*/
//hzdonut:Jesse Soemmer
/obj/item/weapon/gun/projectile/revolver/fluff/jesselemat
name = "Modified LeMat"
desc = "The LeMat Revolver is a 9 shot revolver with a secondary firing barrel for loading shotgun shells. Uses .38-Special and 12g rounds depending on the barrel. This one appears to have had it's secondary barrel sealed off and looks to be in pristine condition. Either it's brand new, or its owner takes very good care of it."
icon_state = "lemat"
//////////////////// Energy Weapons ////////////////////
@@ -794,4 +799,4 @@
if(T.z in using_map.map_levels)
to_chat(user, "<span class='warning'>The safety device prevents the gun from firing this close to the facility.</span>")
return 0
return ..()
return ..()
@@ -51,6 +51,11 @@
name = "Sorrel Cavalet's Sidearm Permit"
desc = "A card indicating that the owner is allowed to carry a sidearm. It is issued by CentCom, so it is valid until it expires on September 26th, 2562."
// hzdonut:Jesse Soemmer
/obj/item/clothing/accessory/permit/gun/fluff/JesseSoemmer
name = "Jesse Soemmer's Sidearm Permit"
desc = "A card indicating that the owner is allowed to carry a sidearm. It is issued by CentCom, so it is valid until it expires on March 4, 2563."
/* Legacy Permits
// BEGIN - PROTOTYPE
/obj/item/clothing/accessory/permit/gun/fluff
@@ -3,7 +3,7 @@
name = "\improper MPA6 \'Sickshot\'"
desc = "Need to stun someone? Don't mind having to clean up the mess afterwards? The Sickshot is the answer to your prayers. \
Using a short-range concentrated blast of disruptive sound, the Sickshot will nauseate and confuse the target for several seconds. NOTE: Not suitable \
for use in vacuum, or on animals. May cause contraction and release of various 'things' from various 'orifices'."
for use in vacuum. Usage on animals may cause panic and rage without stunning. May cause contraction and release of various 'things' from various 'orifices', even if the target is already dead."
description_info = "This gun causes nausea in targets, stunning them briefly and causing vomiting. It will also cause them to vomit up prey, sometimes. Repeated shots may help in that case."
description_fluff = ""