From 8dffdc17b1ba1c637c323c8ae0c456b0ddb75409 Mon Sep 17 00:00:00 2001 From: PastelPrinceDan Date: Sun, 7 Nov 2021 07:08:40 +0000 Subject: [PATCH 01/35] ahah let's hope this works on live too huh --- code/game/machinery/adv_med.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/machinery/adv_med.dm b/code/game/machinery/adv_med.dm index c2170d5b7b..8955b63cbf 100644 --- a/code/game/machinery/adv_med.dm +++ b/code/game/machinery/adv_med.dm @@ -349,10 +349,10 @@ var/obj/item/weapon/paper/P = new /obj/item/weapon/paper(get_turf(target)) var/name = occupant ? occupant.name : "Unknown" P.info = "
Body Scan - [name]

" - P.info += "Time of scan: [worldtime2stationtime(world.time)]

" + P.info += "Time of scan: [stationtime2text(world.time)]

" P.info += "[generate_printing_text()]" P.info += "

Notes:
" - P.name = "Body Scan - [name] ([worldtime2stationtime(world.time)]" + P.name = "Body Scan - [name] ([stationtime2text(world.time)]" else return FALSE From ece0213ea4a060917b0975e136dff98d624a6a98 Mon Sep 17 00:00:00 2001 From: Heroman Date: Sun, 7 Nov 2021 17:33:52 +1000 Subject: [PATCH 02/35] Reworks timestamps of specific time using wrong time compared to station time --- code/_helpers/time.dm | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/code/_helpers/time.dm b/code/_helpers/time.dm index d1badd69fd..c50b5e2941 100644 --- a/code/_helpers/time.dm +++ b/code/_helpers/time.dm @@ -50,13 +50,17 @@ var/station_date = "" var/next_station_date_change = 1 DAY #define duration2stationtime(time) time2text(station_time_in_ds + time, "hh:mm") -#define worldtime2stationtime(time) time2text(GLOB.roundstart_hour HOURS + time, "hh:mm") +#define roundstart_delay_time (world.time - round_duration_in_ds) +#define world_time_in_ds(time) (GLOB.roundstart_hour HOURS + time - roundstart_delay_time) #define round_duration_in_ds (GLOB.round_start_time ? REALTIMEOFDAY - GLOB.round_start_time : 0) #define station_time_in_ds (GLOB.roundstart_hour HOURS + round_duration_in_ds) /proc/stationtime2text() return time2text(station_time_in_ds + GLOB.timezoneOffset, "hh:mm") +/proc/worldtime2stationtime(time) + return time2text(world_time_in_ds(time) + GLOB.timezoneOffset, "hh:mm") + /proc/stationdate2text() var/update_time = FALSE if(station_time_in_ds > next_station_date_change) From 35e037a0249bb84e1b4c8fc5be028dee11127eb3 Mon Sep 17 00:00:00 2001 From: PastelPrinceDan Date: Sun, 7 Nov 2021 10:33:12 +0000 Subject: [PATCH 03/35] grr arguments --- code/game/machinery/adv_med.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/game/machinery/adv_med.dm b/code/game/machinery/adv_med.dm index 8955b63cbf..6af70dc038 100644 --- a/code/game/machinery/adv_med.dm +++ b/code/game/machinery/adv_med.dm @@ -349,10 +349,10 @@ var/obj/item/weapon/paper/P = new /obj/item/weapon/paper(get_turf(target)) var/name = occupant ? occupant.name : "Unknown" P.info = "
Body Scan - [name]

" - P.info += "Time of scan: [stationtime2text(world.time)]

" + P.info += "Time of scan: [stationtime2text()]

" P.info += "[generate_printing_text()]" P.info += "

Notes:
" - P.name = "Body Scan - [name] ([stationtime2text(world.time)]" + P.name = "Body Scan - [name] ([stationtime2text()]" else return FALSE From 083255879084fcca30a9e7c72568a78091388de6 Mon Sep 17 00:00:00 2001 From: AmatsuDF Date: Mon, 8 Nov 2021 02:18:04 -0500 Subject: [PATCH 04/35] Belly Interaction Improvements Adds a secondary transfer location, for more interesting interaction set ups. Also recolors certain belly modes for easier identification at a glance what mode a belly is in. --- code/modules/vore/eating/belly_obj_vr.dm | 29 +++++++++++++++++++++- code/modules/vore/eating/vorepanel_vr.dm | 21 ++++++++++++++++ tgui/packages/tgui/interfaces/VorePanel.js | 23 ++++++++++++----- tgui/packages/tgui/public/tgui.bundle.js | 2 +- tgui/public/tgui.bundle.js | 2 +- 5 files changed, 68 insertions(+), 9 deletions(-) diff --git a/code/modules/vore/eating/belly_obj_vr.dm b/code/modules/vore/eating/belly_obj_vr.dm index 5f5a06221a..2b9681853a 100644 --- a/code/modules/vore/eating/belly_obj_vr.dm +++ b/code/modules/vore/eating/belly_obj_vr.dm @@ -28,12 +28,14 @@ var/digestchance = 0 // % Chance of stomach beginning to digest if prey struggles var/absorbchance = 0 // % Chance of stomach beginning to absorb if prey struggles var/escapechance = 0 // % Chance of prey beginning to escape if prey struggles. - var/transferchance = 0 // % Chance of prey being + var/transferchance = 0 // % Chance of prey being trasnsfered, goes from 0-100% + var/transferchance_secondary = 0 // % Chance of prey being transfered to transferchance_secondary, also goes 0-100% var/can_taste = FALSE // If this belly prints the flavor of prey when it eats someone. var/bulge_size = 0.25 // The minimum size the prey has to be in order to show up on examine. var/display_absorbed_examine = FALSE // Do we display absorption examine messages for this belly at all? var/shrink_grow_size = 1 // This horribly named variable determines the minimum/maximum size it will shrink/grow prey to. var/transferlocation // Location that the prey is released if they struggle and get dropped off. + var/transferlocation_secondary // Secondary location that prey is released to. var/release_sound = "Splatter" // Sound for letting someone out. Replaced from True/false var/mode_flags = 0 // Stripping, numbing, etc. var/fancy_vore = FALSE // Using the new sounds? @@ -152,7 +154,9 @@ "absorbchance", "escapechance", "transferchance", + "transferchance_secondary", "transferlocation", + "transferlocation_secondary", "bulge_size", "display_absorbed_examine", "shrink_grow_size", @@ -762,6 +766,27 @@ transfer_contents(R, dest_belly) return + else if(prob(transferchance_secondary) && transferlocation_secondary) //After the first potential mess getting into, run the secondary one which might be even bigger of a mess. + var/obj/belly/dest_belly + for(var/obj/belly/B as anything in owner.vore_organs) + if(B.name == transferlocation_secondary) + dest_belly = B + break + + if(!dest_belly) + to_chat(owner, "Something went wrong with your belly transfer settings. Your [lowertext(name)] has had it's transfer chance and transfer location cleared as a precaution.") + transferchance = 0 + transferlocation = null + return + + to_chat(R, "Your attempt to escape [lowertext(name)] has failed and your struggles only results in you sliding into [owner]'s [transferlocation_secondary]!") + to_chat(owner, "Someone slid into your [transferlocation_secondary] due to their struggling inside your [lowertext(name)]!") + if(C) + transfer_contents(C, dest_belly) + return + transfer_contents(R, dest_belly) + return + else if(prob(absorbchance) && digest_mode != DM_ABSORB) //After that, let's have it run the absorb chance. to_chat(R, "In response to your struggling, \the [lowertext(name)] begins to cling more tightly...") to_chat(owner, "You feel your [lowertext(name)] start to cling onto its contents...") @@ -852,7 +877,9 @@ dupe.absorbchance = absorbchance dupe.escapechance = escapechance dupe.transferchance = transferchance + dupe.transferchance_secondary = transferchance_secondary dupe.transferlocation = transferlocation + dupe.transferlocation_secondary = transferlocation_secondary dupe.bulge_size = bulge_size dupe.shrink_grow_size = shrink_grow_size dupe.mode_flags = mode_flags diff --git a/code/modules/vore/eating/vorepanel_vr.dm b/code/modules/vore/eating/vorepanel_vr.dm index eebcb40214..bd2f2af99d 100644 --- a/code/modules/vore/eating/vorepanel_vr.dm +++ b/code/modules/vore/eating/vorepanel_vr.dm @@ -188,6 +188,8 @@ selected_list["interacts"]["escapetime"] = selected.escapetime selected_list["interacts"]["transferchance"] = selected.transferchance selected_list["interacts"]["transferlocation"] = selected.transferlocation + selected_list["interacts"]["transferchance_secondary"] = selected.transferchance_secondary + selected_list["interacts"]["transferlocation_secondary"] = selected.transferlocation_secondary selected_list["interacts"]["absorbchance"] = selected.absorbchance selected_list["interacts"]["digestchance"] = selected.digestchance @@ -948,6 +950,21 @@ else host.vore_selected.transferlocation = choice.name . = TRUE + if("b_transferchance_secondary") + var/transfer_secondary_chance_input = input(user, "Set secondary belly transfer chance on resist (as %). You must also set the location for this to have any effect.", "Prey Escape Time") as num|null + if(!isnull(transfer_secondary_chance_input)) + host.vore_selected.transferchance_secondary = sanitize_integer(transfer_secondary_chance_input, 0, 100, initial(host.vore_selected.transferchance_secondary)) + . = TRUE + if("b_transferlocation_secondary") + var/obj/belly/choice_secondary = tgui_input_list(usr, "Where do you want your [lowertext(host.vore_selected.name)] to alternately lead if prey resists?","Select Belly", (host.vore_organs + "None - Remove" - host.vore_selected)) + + if(!choice_secondary) //They cancelled, no changes + return FALSE + else if(choice_secondary == "None - Remove") + host.vore_selected.transferlocation_secondary = null + else + host.vore_selected.transferlocation_secondary = choice_secondary.name + . = TRUE if("b_absorbchance") var/absorb_chance_input = input(user, "Set belly absorb mode chance on resist (as %)", "Prey Absorb Chance") as num|null if(!isnull(absorb_chance_input)) @@ -977,6 +994,10 @@ dest_for = B.name failure_msg += "This is the destiantion for at least '[dest_for]' belly transfers. Remove it as the destination from any bellies before deleting it. " break + if(B.transferlocation_secondary == host.vore_selected) + dest_for = B.name + failure_msg += "This is the destiantion for at least '[dest_for]' secondary belly transfers. Remove it as the destination from any bellies before deleting it. " + break if(host.vore_selected.contents.len) failure_msg += "You cannot delete bellies with contents! " //These end with spaces, to be nice looking. Make sure you do the same. diff --git a/tgui/packages/tgui/interfaces/VorePanel.js b/tgui/packages/tgui/interfaces/VorePanel.js index e3d5c3421f..50ee6263a3 100644 --- a/tgui/packages/tgui/interfaces/VorePanel.js +++ b/tgui/packages/tgui/interfaces/VorePanel.js @@ -17,12 +17,12 @@ const digestModeToColor = { "Digest": "red", "Absorb": "purple", "Unabsorb": "purple", - "Drain": "purple", - "Shrink": "purple", - "Grow": "purple", - "Size Steal": "purple", - "Heal": "purple", - "Encase In Egg": "purple", + "Drain": "orange", + "Shrink": "teal", + "Grow": "teal", + "Size Steal": "teal", + "Heal": "green", + "Encase In Egg": "blue", }; const digestModeToPreyMode = { @@ -609,6 +609,17 @@ const VoreSelectedBellyInteractions = (props, context) => { onClick={() => act("set_attribute", { attribute: "b_transferlocation" })} /> + +