From 1273ca9ed49e7195c3cbaf86c1330f27a5dab64d Mon Sep 17 00:00:00 2001 From: Arokha Sieyes Date: Thu, 12 Apr 2018 15:10:17 -0400 Subject: [PATCH] Lazily implements taur riding It's pretty lazy. I'm sure someone with *effort* can touch it up. --- code/_macros_vr.dm | 7 +- code/game/atoms_movable.dm | 2 + code/game/atoms_movable_vr.dm | 10 + code/game/objects/buckling.dm | 19 + code/modules/mob/living/carbon/carbon.dm | 4 +- code/modules/mob/living/living.dm | 9 +- code/modules/mob/mob_movement.dm | 2 +- code/modules/vehicles/vehicle.dm | 2 +- .../appearance/sprite_accessories_taur_vr.dm | 413 ++++++++++++++++++ .../vore/appearance/sprite_accessories_vr.dm | 336 +------------- .../vore/appearance/update_icons_vr.dm | 1 - vorestation.dme | 1 + 12 files changed, 462 insertions(+), 344 deletions(-) create mode 100644 code/modules/vore/appearance/sprite_accessories_taur_vr.dm diff --git a/code/_macros_vr.dm b/code/_macros_vr.dm index ca7bccedbe..284b6623fc 100644 --- a/code/_macros_vr.dm +++ b/code/_macros_vr.dm @@ -1,3 +1,4 @@ -#define isbelly(A) istype(A, /obj/belly) -#define isstorage(A) istype(A, /obj/item/weapon/storage) -#define isitem(A) istype(A, /obj/item) +#define isbelly(A) istype(A, /obj/belly) +#define isstorage(A) istype(A, /obj/item/weapon/storage) +#define isitem(A) istype(A, /obj/item) +#define isTaurTail(A) istype(A, /datum/sprite_accessory/tail/taur) diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 5311d642a2..48ffacb335 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -18,6 +18,7 @@ var/icon_scale = 1 // Used to scale icons up or down in update_transform(). var/old_x = 0 var/old_y = 0 + var/datum/riding/riding_datum //VOREStation Add - Moved from /obj/vehicle /atom/movable/Destroy() . = ..() @@ -37,6 +38,7 @@ if (pulledby.pulling == src) pulledby.pulling = null pulledby = null + qdel_null(riding_datum) //VOREStation Add /atom/movable/Bump(var/atom/A, yes) if(src.throwing) diff --git a/code/game/atoms_movable_vr.dm b/code/game/atoms_movable_vr.dm index d529122029..0cc6d144be 100644 --- a/code/game/atoms_movable_vr.dm +++ b/code/game/atoms_movable_vr.dm @@ -1,2 +1,12 @@ /atom/movable/proc/Bump_vr(var/atom/A, yes) return + +/atom/movable/set_dir(newdir) + . = ..(newdir) + if(riding_datum) + riding_datum.handle_vehicle_offsets() + +/atom/movable/relaymove(mob/user, direction) + . = ..() + if(riding_datum) + riding_datum.handle_ride(user, direction) diff --git a/code/game/objects/buckling.dm b/code/game/objects/buckling.dm index 0a8a74b8e9..998b213ff4 100644 --- a/code/game/objects/buckling.dm +++ b/code/game/objects/buckling.dm @@ -75,6 +75,13 @@ // buckled_mob = M buckled_mobs |= M + //VOREStation Add + if(riding_datum) + riding_datum.ridden = src + riding_datum.handle_vehicle_offsets() + M.update_water() + //VOREStation Add End + post_buckle_mob(M) return TRUE @@ -94,6 +101,12 @@ // buckled_mob = null buckled_mobs -= buckled_mob + //VOREStation Add + buckled_mob.update_water() + if(riding_datum) + riding_datum.restore_position(buckled_mob) + riding_datum.handle_vehicle_offsets() // So the person in back goes to the front. + //VOREStation Add End post_buckle_mob(.) /atom/movable/proc/unbuckle_all_mobs(force = FALSE) @@ -175,3 +188,9 @@ . = ..() if(. && has_buckled_mobs() && !handle_buckled_mob_movement(newloc, direct)) //movement failed due to buckled mob(s) . = 0 + //VOREStation Add + else if(. && riding_datum) + riding_datum.handle_vehicle_layer() + riding_datum.handle_vehicle_offsets() + //VOREStation Add End + \ 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 283cb10b1c..40261088f7 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -46,7 +46,7 @@ // Moving around increases germ_level faster if(germ_level < GERM_LEVEL_MOVE_CAP && prob(8)) germ_level++ - +/* VOREStation Removal - Needless duplicate feature /mob/living/carbon/relaymove(var/mob/living/user, direction) if((user in src.stomach_contents) && istype(user)) if(user.last_special <= world.time) @@ -72,7 +72,7 @@ A.loc = loc stomach_contents.Remove(A) src.gib() - +*/ /mob/living/carbon/gib() for(var/mob/M in src) if(M in src.stomach_contents) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 2e0db163de..80a0f3537c 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -1060,7 +1060,14 @@ default behaviour is: if(lying != lying_prev) lying_prev = lying update_transform() - + //VOREStation Add + if(lying && LAZYLEN(buckled_mobs)) + for(var/rider in buckled_mobs) + if(riding_datum) + riding_datum.force_dismount(rider) + else + unbuckle_mob(rider) + //VOREStation Add End return canmove // Adds overlays for specific modifiers. diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index a64be018fb..c2b0aaf0f1 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -288,7 +288,7 @@ tickcomp = ((1/(world.tick_lag))*1.3) - 1.3 move_delay = move_delay + tickcomp - if(istype(mob.buckled, /obj/vehicle)) + if(istype(mob.buckled))// VOREStation Removal - , /obj/vehicle)) //manually set move_delay for vehicles so we don't inherit any mob movement penalties //specific vehicle move delays are set in code\modules\vehicles\vehicle.dm move_delay = world.time + tickcomp diff --git a/code/modules/vehicles/vehicle.dm b/code/modules/vehicles/vehicle.dm index 13dc84f0e4..0b454f6bc5 100644 --- a/code/modules/vehicles/vehicle.dm +++ b/code/modules/vehicles/vehicle.dm @@ -40,7 +40,7 @@ var/load_offset_y = 0 //pixel_y offset for item overlay var/mob_offset_y = 0 //pixel_y offset for mob overlay - var/datum/riding/riding_datum = null + //var/datum/riding/riding_datum = null //VOREStation Edit - Moved to movables. //------------------------------------------- // Standard procs diff --git a/code/modules/vore/appearance/sprite_accessories_taur_vr.dm b/code/modules/vore/appearance/sprite_accessories_taur_vr.dm new file mode 100644 index 0000000000..0b0030d51e --- /dev/null +++ b/code/modules/vore/appearance/sprite_accessories_taur_vr.dm @@ -0,0 +1,413 @@ +/datum/riding/taur + keytype = null // Riding crop would be nice + 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.dir != NORTH) + ridden.layer = ABOVE_MOB_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 + +//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,"This isn't a pony show! They need to be bigger to ride.") + return FALSE + + var/mob/living/carbon/human/H = M + + if(isTaurTail(H.tail_style)) + to_chat(H,"Too many legs. TOO MANY LEGS!!") + return FALSE + + . = ..() + +/mob/living/carbon/human/MouseDrop_T(var/atom/movable/C, mob/user) + user_buckle_mob(C, user, silent = 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!" diff --git a/code/modules/vore/appearance/sprite_accessories_vr.dm b/code/modules/vore/appearance/sprite_accessories_vr.dm index 8e067a46e8..7f7ff7e364 100644 --- a/code/modules/vore/appearance/sprite_accessories_vr.dm +++ b/code/modules/vore/appearance/sprite_accessories_vr.dm @@ -1093,338 +1093,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 diff --git a/code/modules/vore/appearance/update_icons_vr.dm b/code/modules/vore/appearance/update_icons_vr.dm index c9321880bc..531422bf63 100644 --- a/code/modules/vore/appearance/update_icons_vr.dm +++ b/code/modules/vore/appearance/update_icons_vr.dm @@ -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() diff --git a/vorestation.dme b/vorestation.dme index bd51a6c376..7226792402 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -2713,6 +2713,7 @@ #include "code\modules\vore\trycatch_vr.dm" #include "code\modules\vore\appearance\preferences_vr.dm" #include "code\modules\vore\appearance\spider_taur_powers_vr.dm" +#include "code\modules\vore\appearance\sprite_accessories_taur_vr.dm" #include "code\modules\vore\appearance\sprite_accessories_vr.dm" #include "code\modules\vore\appearance\update_icons_vr.dm" #include "code\modules\vore\eating\belly_dat_vr.dm"