From a753a95c46a41429b3872a37a113e8b05f2eb6cb Mon Sep 17 00:00:00 2001 From: Heroman Date: Mon, 1 Mar 2021 17:36:10 +1000 Subject: [PATCH 1/2] Adds Suffocation Damage option to vore panel/bellies --- code/modules/vore/eating/belly_obj_vr.dm | 3 +++ code/modules/vore/eating/bellymodes_datum_vr.dm | 5 ++++- code/modules/vore/eating/bellymodes_vr.dm | 2 ++ code/modules/vore/eating/digest_act_vr.dm | 4 ++-- code/modules/vore/eating/vorepanel_vr.dm | 8 ++++++++ tgui/packages/tgui/interfaces/VorePanel.js | 6 ++++++ tgui/packages/tgui/public/tgui.bundle.js | 2 +- 7 files changed, 26 insertions(+), 4 deletions(-) diff --git a/code/modules/vore/eating/belly_obj_vr.dm b/code/modules/vore/eating/belly_obj_vr.dm index 00acb38504a..8528b8abab5 100644 --- a/code/modules/vore/eating/belly_obj_vr.dm +++ b/code/modules/vore/eating/belly_obj_vr.dm @@ -22,6 +22,7 @@ var/nutrition_percent = 100 // Nutritional percentage per tick in digestion mode var/digest_brute = 0.5 // Brute damage per tick in digestion mode var/digest_burn = 0.5 // Burn damage per tick in digestion mode + var/digest_oxy = 0 // Oxy damage per tick in digestion mode var/immutable = FALSE // Prevents this belly from being deleted var/escapable = FALSE // Belly can be resisted out of at any time var/escapetime = 20 SECONDS // Deciseconds, how long to escape this belly @@ -135,6 +136,7 @@ "nutrition_percent", "digest_brute", "digest_burn", + "digest_oxy", "immutable", "can_taste", "escapable", @@ -722,6 +724,7 @@ dupe.nutrition_percent = nutrition_percent dupe.digest_brute = digest_brute dupe.digest_burn = digest_burn + dupe.digest_oxy = digest_oxy dupe.immutable = immutable dupe.can_taste = can_taste dupe.escapable = escapable diff --git a/code/modules/vore/eating/bellymodes_datum_vr.dm b/code/modules/vore/eating/bellymodes_datum_vr.dm index 4d9199b7270..ea6f9b67b2b 100644 --- a/code/modules/vore/eating/bellymodes_datum_vr.dm +++ b/code/modules/vore/eating/bellymodes_datum_vr.dm @@ -41,11 +41,14 @@ GLOBAL_LIST_INIT(digest_modes, list()) // Deal digestion damage (and feed the pred) var/old_brute = L.getBruteLoss() var/old_burn = L.getFireLoss() + var/old_oxy = L.getOxyLoss() L.adjustBruteLoss(B.digest_brute) L.adjustFireLoss(B.digest_burn) + L.adjustOxyLoss(B.digest_oxy) var/actual_brute = L.getBruteLoss() - old_brute var/actual_burn = L.getFireLoss() - old_burn - var/damage_gain = (actual_brute + actual_burn)*(B.nutrition_percent / 100) + var/actual_oxy = L.getOxyLoss() - old_oxy + var/damage_gain = (actual_brute + actual_burn + actual_oxy/2)*(B.nutrition_percent / 100) var/offset = (1 + ((L.weight - 137) / 137)) // 130 pounds = .95 140 pounds = 1.02 var/difference = B.owner.size_multiplier / L.size_multiplier diff --git a/code/modules/vore/eating/bellymodes_vr.dm b/code/modules/vore/eating/bellymodes_vr.dm index 83f847bf0d4..a7a6b78c811 100644 --- a/code/modules/vore/eating/bellymodes_vr.dm +++ b/code/modules/vore/eating/bellymodes_vr.dm @@ -65,6 +65,8 @@ if(!digestion_noise_chance) digestion_noise_chance = DM.noise_chance + +///////////////////// Time to actually process mobs ///////////////////// for(var/target in touchable_mobs) var/mob/living/L = target if(!istype(L)) diff --git a/code/modules/vore/eating/digest_act_vr.dm b/code/modules/vore/eating/digest_act_vr.dm index ab589d96715..40b900d6445 100644 --- a/code/modules/vore/eating/digest_act_vr.dm +++ b/code/modules/vore/eating/digest_act_vr.dm @@ -26,7 +26,7 @@ if(isbelly(item_storage)) var/obj/belly/B = item_storage - g_damage = 0.25 * (B.digest_brute + B.digest_burn) + g_damage = 0.25 * (B.digest_brute + B.digest_burn + (B.digest_oxy)/2) if(digest_stage > 0) if(g_damage > digest_stage) @@ -115,7 +115,7 @@ if((. = ..())) if(isbelly(item_storage)) var/obj/belly/B = item_storage - . += 2 * (B.digest_brute + B.digest_burn) + . += 2 * (B.digest_brute + B.digest_burn + (B.digest_oxy)/2) else . += 30 //Organs give a little more diff --git a/code/modules/vore/eating/vorepanel_vr.dm b/code/modules/vore/eating/vorepanel_vr.dm index 945b9e1bd1b..0353d5e23a9 100644 --- a/code/modules/vore/eating/vorepanel_vr.dm +++ b/code/modules/vore/eating/vorepanel_vr.dm @@ -154,6 +154,7 @@ "nutrition_percent" = selected.nutrition_percent, "digest_brute" = selected.digest_brute, "digest_burn" = selected.digest_burn, + "digest_oxy" = selected.digest_oxy, "bulge_size" = selected.bulge_size, "shrink_grow_size" = selected.shrink_grow_size, "belly_fullscreen" = selected.belly_fullscreen, @@ -793,6 +794,13 @@ var/new_new_damage = CLAMP(new_damage, 0, 6) host.vore_selected.digest_brute = new_new_damage . = TRUE + if("b_oxy_dmg") + var/new_damage = input(user, "Choose the amount of suffocation damage prey will take per tick. Ranges from 0 to 12.", "Set Belly Suffocation Damage.", host.vore_selected.digest_oxy) as num|null + if(new_damage == null) + return FALSE + var/new_new_damage = CLAMP(new_damage, 0, 12) + host.vore_selected.digest_oxy = new_new_damage + . = TRUE if("b_escapable") if(host.vore_selected.escapable == 0) //Possibly escapable and special interactions. host.vore_selected.escapable = 1 diff --git a/tgui/packages/tgui/interfaces/VorePanel.js b/tgui/packages/tgui/interfaces/VorePanel.js index 9603dd85aa7..b6ab3706d67 100644 --- a/tgui/packages/tgui/interfaces/VorePanel.js +++ b/tgui/packages/tgui/interfaces/VorePanel.js @@ -165,6 +165,7 @@ const VoreSelectedBelly = (props, context) => { nutrition_percent, digest_brute, digest_burn, + digest_oxy, bulge_size, shrink_grow_size, addons, @@ -287,6 +288,11 @@ const VoreSelectedBelly = (props, context) => { onClick={() => act("set_attribute", { attribute: "b_burn_dmg" })} content={digest_burn} /> + +