diff --git a/code/modules/mob/living/carbon/human/species/station/station_special_abilities_vr.dm b/code/modules/mob/living/carbon/human/species/station/station_special_abilities_vr.dm index dfc7109e27..28d4734749 100644 --- a/code/modules/mob/living/carbon/human/species/station/station_special_abilities_vr.dm +++ b/code/modules/mob/living/carbon/human/species/station/station_special_abilities_vr.dm @@ -1185,12 +1185,19 @@ to_chat(src, "It doesn't work that way.") return - var/choice = tgui_alert(src, "Do you wish to change the color of your appendage or use it?", "Selection List", list("Use it", "Color")) + var/choice = tgui_alert(src, "Do you wish to change the color of your appendage, use it, or change its functionality?", "Selection List", list("Use it", "Color", "Functionality")) if(choice == "Color") //Easy way to set color so we don't bloat up the menu with even more buttons. var/new_color = input(usr, "Choose a color to set your appendage to!", "", appendage_color) as color|null if(new_color) appendage_color = new_color + + if(choice == "Functionality") //Easy way to set color so we don't bloat up the menu with even more buttons. + var/choice2 = tgui_alert(usr, "Choose if you want to be pulled to the target or pull them to you!", "Functionality Setting", list("Pull target to self", "Pull self to target")) + if(choice2 == "Pull target to self") + appendage_alt_setting = 0 + else + appendage_alt_setting = 1 else var/list/targets = list() //IF IT IS NOT BROKEN. DO NOT FIX IT. @@ -1271,9 +1278,16 @@ if(istype(target, /mob/living)) var/mob/living/M = target var/throw_range = get_dist(firer,M) + if(istype(firer, /mob/living)) //Let's check for any alt settings. Such as: User selected to be thrown at target. + var/mob/living/F = firer + if(F.appendage_alt_setting == 1) + F.throw_at(M, throw_range, firer.throw_speed, F) //Firer thrown at target. + F.updateicon() + return if(istype(M)) M.throw_at(firer, throw_range, M.throw_speed, firer) //Fun fact: living things have a throw_speed of 2. M.updateicon() + return else //Anything that isn't a /living return if(istype(target, /obj/item/)) //We hit an object? Pull it. This can only happen via admin shenanigans such as a gun being VV'd with this projectile. @@ -1362,4 +1376,4 @@ name = "tongue ball" hitsound = 'sound/vore/sunesound/pred/schlorp.ogg' hitsound_wall = 'sound/vore/sunesound/pred/schlorp.ogg' - zaptype = /obj/item/projectile/beam/appendage \ No newline at end of file + zaptype = /obj/item/projectile/beam/appendage diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/vore.dm b/code/modules/mob/living/simple_mob/subtypes/vore/vore.dm index 36af95966e..6b3abf5134 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/vore.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/vore.dm @@ -28,6 +28,7 @@ noisy = client.prefs_vr.noisy selective_preference = client.prefs_vr.selective_preference appendage_color = client.prefs_vr.appendage_color + appendage_alt_setting = client.prefs_vr.appendage_alt_setting drop_vore = client.prefs_vr.drop_vore stumble_vore = client.prefs_vr.stumble_vore diff --git a/code/modules/vore/eating/living_vr.dm b/code/modules/vore/eating/living_vr.dm index ccb003edb5..6310567af2 100644 --- a/code/modules/vore/eating/living_vr.dm +++ b/code/modules/vore/eating/living_vr.dm @@ -50,6 +50,7 @@ var/noisy_full = FALSE //CHOMPedit: Enables belching when a mob has overeaten var/selective_preference = DM_DEFAULT // Preference for selective bellymode var/appendage_color = "#e03997" //Default pink. Used for the 'long_vore' trait. + var/appendage_alt_setting = FALSE // Dictates if 'long_vore' user pulls prey to them or not. 1 = user thrown towards target. var/regen_sounds = list( 'sound/effects/mob_effects/xenochimera/regen_1.ogg', 'sound/effects/mob_effects/xenochimera/regen_2.ogg', @@ -279,6 +280,7 @@ P.can_be_drop_pred = src.can_be_drop_pred P.allow_spontaneous_tf = src.allow_spontaneous_tf P.appendage_color = src.appendage_color + P.appendage_alt_setting = src.appendage_alt_setting P.step_mechanics_pref = src.step_mechanics_pref P.pickup_pref = src.pickup_pref P.drop_vore = src.drop_vore @@ -334,6 +336,7 @@ // allow_inbelly_spawning = P.allow_inbelly_spawning //CHOMP Removal: we have vore spawning at home. Actually if this were to be enabled, it would break anyway. Just leaving this here as a reference to it. allow_spontaneous_tf = P.allow_spontaneous_tf appendage_color = P.appendage_color + appendage_alt_setting = P.appendage_alt_setting step_mechanics_pref = P.step_mechanics_pref pickup_pref = P.pickup_pref drop_vore = P.drop_vore diff --git a/code/modules/vore/eating/vore_vr.dm b/code/modules/vore/eating/vore_vr.dm index d5956b7fc9..137a6364fc 100644 --- a/code/modules/vore/eating/vore_vr.dm +++ b/code/modules/vore/eating/vore_vr.dm @@ -78,6 +78,7 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE var/vore_taste = "nothing in particular" var/vore_smell = "nothing in particular" var/appendage_color = "#e03997" //Default pink. Used for the 'long_vore' trait. + var/appendage_alt_setting = 0 //Decides if appendage user is thrown at target or not. var/selective_preference = DM_DEFAULT @@ -185,6 +186,7 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE permit_healbelly = json_from_file["permit_healbelly"] noisy = json_from_file["noisy"] appendage_color = json_from_file["appendage_color"] + appendage_alt_setting = json_from_file["appendage_alt_setting"] selective_preference = json_from_file["selective_preference"] show_vore_fx = json_from_file["show_vore_fx"] can_be_drop_prey = json_from_file["can_be_drop_prey"] @@ -234,6 +236,8 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE noisy = FALSE if (isnull(appendage_color)) appendage_color = "#e03997" + if (isnull(appendage_alt_setting)) + appendage_alt_setting = 0 if(isnull(show_vore_fx)) show_vore_fx = TRUE if(isnull(can_be_drop_prey)) @@ -324,6 +328,7 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE "permit_healbelly" = permit_healbelly, "noisy" = noisy, "appendage_color" = appendage_color, + "appendage_alt_setting" = appendage_alt_setting, "selective_preference" = selective_preference, "show_vore_fx" = show_vore_fx, "can_be_drop_prey" = can_be_drop_prey, diff --git a/code/modules/vore/eating/vorepanel_vr.dm b/code/modules/vore/eating/vorepanel_vr.dm index c1a7cce504..eb5adfeba5 100644 --- a/code/modules/vore/eating/vorepanel_vr.dm +++ b/code/modules/vore/eating/vorepanel_vr.dm @@ -349,6 +349,7 @@ "latejoin_prey" = host.latejoin_prey, //CHOMPedit "allow_spontaneous_tf" = host.allow_spontaneous_tf, "appendage_color" = host.appendage_color, + "appendage_alt_setting" = host.appendage_alt_setting, "step_mechanics_active" = host.step_mechanics_pref, "pickup_mechanics_active" = host.pickup_pref, "noisy" = host.noisy, diff --git a/code/modules/vore/mouseray.dm b/code/modules/vore/mouseray.dm index 606d31f642..dffd1294c1 100644 --- a/code/modules/vore/mouseray.dm +++ b/code/modules/vore/mouseray.dm @@ -231,6 +231,7 @@ new_mob.noisy = noisy new_mob.selective_preference = selective_preference new_mob.appendage_color = appendage_color + new_mob.appendage_alt_setting = appendage_alt_setting new_mob.drop_vore = drop_vore new_mob.stumble_vore = stumble_vore new_mob.slip_vore = slip_vore