diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm index f8c266a95b..d3fec40860 100644 --- a/code/modules/mob/living/carbon/human/human_defense.dm +++ b/code/modules/mob/living/carbon/human/human_defense.dm @@ -381,9 +381,28 @@ emp_act // if(buckled && buckled == AM) // return // Don't get hit by the thing we're buckled to. + //VORESTATION EDIT START - Allows for thrown vore! + //Throwing a prey into a pred takes priority. After that it checks to see if the person being thrown is a pred. + if(istype(AM, /mob/living)) + var/mob/living/thrown_mob = AM + if((can_be_drop_pred && throw_vore) && (thrown_mob.devourable && thrown_mob.throw_vore && thrown_mob.can_be_drop_prey)) //Prey thrown into pred. + vore_selected.nom_mob(thrown_mob) //Eat them!!! + visible_message("[thrown_mob] is thrown right into [src]'s [lowertext(vore_selected.name)]!") + if(thrown_mob.loc != vore_selected) + thrown_mob.forceMove(vore_selected) //Double check. Should never happen but...Weirder things have happened! + add_attack_logs(thrown_mob.thrower,src,"Devoured [thrown_mob.name] via throw vore.") + return //We can stop here. We don't need to calculate damage or anything else. They're eaten. + else if((can_be_drop_prey && throw_vore && devourable) && (thrown_mob.can_be_drop_pred && thrown_mob.throw_vore)) //Pred thrown into prey. + visible_message("[src] suddenly slips inside of [thrown_mob]'s [lowertext(thrown_mob.vore_selected.name)] as [thrown_mob] flies into them!") + thrown_mob.vore_selected.nom_mob(src) //Eat them!!! + if(src.loc != thrown_mob.vore_selected) + src.forceMove(thrown_mob.vore_selected) //Double check. Should never happen but...Weirder things have happened! + add_attack_logs(thrown_mob.LAssailant,src,"Was Devoured by [thrown_mob.name] via throw vore.") + return + //VORESTATION EDIT END - Allows for thrown vore! + if(istype(AM,/obj/)) var/obj/O = AM - if(in_throw_mode && speed <= THROWFORCE_SPEED_DIVISOR) //empty active hand and we're in throw mode if(canmove && !restrained()) if(isturf(O.loc)) diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index e0f7d9a14b..3e77e86007 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -1088,6 +1088,7 @@ src.inertia_dir = get_dir(target, src) step(src, inertia_dir) item.throw_at(target, throw_range, item.throw_speed, src) + item.throwing = 1 //Small edit so thrown interactions actually work! return TRUE else return FALSE 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 ff6d6636ac..5a0b0ad961 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/vore.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/vore.dm @@ -18,7 +18,12 @@ feeding = client.prefs_vr.feeding can_be_drop_prey = client.prefs_vr.can_be_drop_prey can_be_drop_pred = client.prefs_vr.can_be_drop_pred +<<<<<<< HEAD latejoin_vore = client.prefs_vr.latejoin_vore //CHOMPedit +======= + throw_vore = client.prefs_vr.throw_vore + allow_inbelly_spawning = client.prefs_vr.allow_inbelly_spawning +>>>>>>> f02c3b6163... Merge pull request #13676 from Cameron653/TONGUE_VORE allow_spontaneous_tf = client.prefs_vr.allow_spontaneous_tf digest_leave_remains = client.prefs_vr.digest_leave_remains allowmobvore = client.prefs_vr.allowmobvore diff --git a/code/modules/vore/eating/living_vr.dm b/code/modules/vore/eating/living_vr.dm index c61b0ce06a..5ffe986668 100644 --- a/code/modules/vore/eating/living_vr.dm +++ b/code/modules/vore/eating/living_vr.dm @@ -36,6 +36,7 @@ var/stumble_vore = TRUE //Enabled by default since you have to enable drop pred/prey to do this anyway var/slip_vore = TRUE //Enabled by default since you have to enable drop pred/prey to do this anyway var/drop_vore = TRUE //Enabled by default since you have to enable drop pred/prey to do this anyway + var/throw_vore = TRUE //Enabled by default since you have to enable drop pred/prey to do this anyway var/can_be_drop_prey = FALSE var/can_be_drop_pred = FALSE var/allow_spontaneous_tf = FALSE // Obviously. @@ -280,6 +281,7 @@ P.pickup_pref = src.pickup_pref P.drop_vore = src.drop_vore P.slip_vore = src.slip_vore + P.throw_vore = src.throw_vore P.stumble_vore = src.stumble_vore P.nutrition_message_visible = src.nutrition_message_visible @@ -333,6 +335,7 @@ pickup_pref = P.pickup_pref drop_vore = P.drop_vore slip_vore = P.slip_vore + throw_vore = P.throw_vore stumble_vore = P.stumble_vore nutrition_message_visible = P.nutrition_message_visible @@ -1082,6 +1085,7 @@ dispvoreprefs += "Giving liquids: [give_reagents ? "Enabled" : "Disabled"]
" //CHOMPstation edit dispvoreprefs += "Drop Vore: [drop_vore ? "Enabled" : "Disabled"]
" dispvoreprefs += "Slip Vore: [slip_vore ? "Enabled" : "Disabled"]
" + dispvoreprefs += "Throw vore: [throw_vore ? "Enabled" : "Disabled"]
" dispvoreprefs += "Stumble Vore: [stumble_vore ? "Enabled" : "Disabled"]
" dispvoreprefs += "Spontaneous transformation: [allow_spontaneous_tf ? "Enabled" : "Disabled"]
" dispvoreprefs += "Can be stepped on/over: [step_mechanics_pref ? "Allowed" : "Disallowed"]
" diff --git a/code/modules/vore/eating/vore_vr.dm b/code/modules/vore/eating/vore_vr.dm index 7089e4f896..6c39ce1c2d 100644 --- a/code/modules/vore/eating/vore_vr.dm +++ b/code/modules/vore/eating/vore_vr.dm @@ -59,6 +59,7 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE var/drop_vore = TRUE var/stumble_vore = TRUE var/slip_vore = TRUE + var/throw_vore = TRUE var/resizable = TRUE var/show_vore_fx = TRUE @@ -192,6 +193,7 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE belly_prefs = json_from_file["belly_prefs"] drop_vore = json_from_file["drop_vore"] slip_vore = json_from_file["slip_vore"] + throw_vore = json_from_file["throw_vore"] stumble_vore = json_from_file["stumble_vore"] nutrition_message_visible = json_from_file["nutrition_message_visible"] nutrition_messages = json_from_file["nutrition_messages"] @@ -246,6 +248,8 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE drop_vore = TRUE if(isnull(slip_vore)) slip_vore = TRUE + if(isnull(throw_vore)) + throw_vore = TRUE if(isnull(stumble_vore)) stumble_vore = TRUE if(isnull(nutrition_message_visible)) @@ -325,6 +329,7 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE "drop_vore" = drop_vore, "slip_vore" = slip_vore, "stumble_vore" = stumble_vore, + "throw_vore" = throw_vore, "nutrition_message_visible" = nutrition_message_visible, "nutrition_messages" = nutrition_messages, "weight_message_visible" = weight_message_visible, diff --git a/code/modules/vore/eating/vorepanel_vr.dm b/code/modules/vore/eating/vorepanel_vr.dm index a2ab410514..6ffb9cf9ec 100644 --- a/code/modules/vore/eating/vorepanel_vr.dm +++ b/code/modules/vore/eating/vorepanel_vr.dm @@ -360,6 +360,7 @@ "drop_vore" = host.drop_vore, "slip_vore" = host.slip_vore, "stumble_vore" = host.stumble_vore, + "throw_vore" = host.throw_vore, "nutrition_message_visible" = host.nutrition_message_visible, "nutrition_messages" = host.nutrition_messages, "weight_message_visible" = host.weight_message_visible, @@ -647,6 +648,10 @@ host.stumble_vore = !host.stumble_vore unsaved_changes = TRUE return TRUE + if("toggle_throw_vore") + host.throw_vore = !host.throw_vore + unsaved_changes = TRUE + return TRUE if("switch_selective_mode_pref") host.selective_preference = tgui_input_list(usr, "What would you prefer happen to you with selective bellymode?","Selective Bellymode", list(DM_DEFAULT, DM_DIGEST, DM_ABSORB, DM_DRAIN)) if(!(host.selective_preference)) diff --git a/code/modules/vore/mouseray.dm b/code/modules/vore/mouseray.dm index 1c9a3ada19..c5832a7253 100644 --- a/code/modules/vore/mouseray.dm +++ b/code/modules/vore/mouseray.dm @@ -233,6 +233,7 @@ new_mob.drop_vore = drop_vore new_mob.stumble_vore = stumble_vore new_mob.slip_vore = slip_vore + new_mob.throw_vore = throw_vore new_mob.resizable = resizable new_mob.show_vore_fx = show_vore_fx new_mob.step_mechanics_pref = step_mechanics_pref diff --git a/tgui/packages/tgui/interfaces/VorePanel.js b/tgui/packages/tgui/interfaces/VorePanel.js index b12c197a88..d243d00d54 100644 --- a/tgui/packages/tgui/interfaces/VorePanel.js +++ b/tgui/packages/tgui/interfaces/VorePanel.js @@ -1447,6 +1447,7 @@ const VoreUserPreferences = (props, context) => { drop_vore, stumble_vore, slip_vore, + throw_vore, nutrition_message_visible, weight_message_visible, } = data.prefs; @@ -1611,9 +1612,30 @@ const VoreUserPreferences = (props, context) => { disabled: 'Stumble Vore Disabled', }, }, +<<<<<<< HEAD spawnbelly: { action: 'toggle_latejoin_vore', test: latejoin_vore, +======= + toggle_throw_vore: { + action: 'toggle_throw_vore', + test: throw_vore, + tooltip: { + main: + 'Allows for throw related spontaneous vore to occur. ' + + ' Note, you still need spontaneous vore pred and/or prey enabled.', + enable: 'Click here to allow for throw vore.', + disable: 'Click here to disable throw vore.', + }, + content: { + enabled: 'Throw Vore Enabled', + disabled: 'Throw Vore Disabled', + }, + }, + inbelly_spawning: { + action: 'toggle_allow_inbelly_spawning', + test: allow_inbelly_spawning, +>>>>>>> f02c3b6163... Merge pull request #13676 from Cameron653/TONGUE_VORE tooltip: { main: 'Toggle late join vore spawnpoint.', enable: 'Click here to turn on vorish spawnpoint.', @@ -1864,16 +1886,28 @@ const VoreUserPreferences = (props, context) => { +<<<<<<< HEAD +======= + +>>>>>>> f02c3b6163... Merge pull request #13676 from Cameron653/TONGUE_VORE + + +<<<<<<< HEAD + + +======= + - + +>>>>>>> f02c3b6163... Merge pull request #13676 from Cameron653/TONGUE_VORE @@ -1881,7 +1915,7 @@ const VoreUserPreferences = (props, context) => { - + @@ -1890,7 +1924,7 @@ const VoreUserPreferences = (props, context) => { - +