From 10637da2f48e976bc2dc8395f9af755a7b3c1c0b Mon Sep 17 00:00:00 2001 From: Kashargul <144968721+Kashargul@users.noreply.github.com> Date: Fri, 30 Aug 2024 21:29:49 +0200 Subject: [PATCH] ports mind transfer pref from chomp (#16225) * ports mind transfer pref from chomp * don't push that * . --- .../objects/items/devices/body_snatcher_vr.dm | 4 ++++ code/modules/food/food/snacks.dm | 1 + code/modules/mob/living/bot/bot.dm | 2 ++ .../subtypes/animal/alien animals/catslug.dm | 2 ++ .../animal/giant_spider/_giant_spider.dm | 2 ++ .../subtypes/animal/passive/passive.dm | 3 ++- .../living/simple_mob/subtypes/animal/sif/sif.dm | 1 + .../simple_mob/subtypes/animal/space/bear.dm | 2 ++ .../simple_mob/subtypes/animal/squirrel.dm | 2 ++ .../mob/living/simple_mob/subtypes/vore/bat.dm | 3 ++- .../mob/living/simple_mob/subtypes/vore/bee.dm | 2 ++ .../simple_mob/subtypes/vore/corrupt_hounds.dm | 2 ++ .../living/simple_mob/subtypes/vore/deathclaw.dm | 2 ++ .../mob/living/simple_mob/subtypes/vore/dino.dm | 2 ++ .../simple_mob/subtypes/vore/dominated_brain.dm | 9 ++++++++- .../living/simple_mob/subtypes/vore/fennec.dm | 2 ++ .../living/simple_mob/subtypes/vore/fennix.dm | 2 ++ .../mob/living/simple_mob/subtypes/vore/frog.dm | 2 ++ .../mob/living/simple_mob/subtypes/vore/horse.dm | 4 +++- .../mob/living/simple_mob/subtypes/vore/jelly.dm | 2 ++ .../mob/living/simple_mob/subtypes/vore/otie.dm | 2 ++ .../living/simple_mob/subtypes/vore/pakkun.dm | 2 ++ .../living/simple_mob/subtypes/vore/panther.dm | 2 ++ .../living/simple_mob/subtypes/vore/rabbit.dm | 2 ++ .../living/simple_mob/subtypes/vore/raptor.dm | 2 ++ .../mob/living/simple_mob/subtypes/vore/rat.dm | 2 ++ .../living/simple_mob/subtypes/vore/redpanda.dm | 2 ++ .../mob/living/simple_mob/subtypes/vore/scel.dm | 2 ++ .../simple_mob/subtypes/vore/sect_drone.dm | 2 ++ .../simple_mob/subtypes/vore/sect_queen.dm | 2 ++ .../mob/living/simple_mob/subtypes/vore/snake.dm | 2 ++ .../living/simple_mob/subtypes/vore/solargrub.dm | 1 + .../mob/living/simple_mob/subtypes/vore/vore.dm | 1 + .../living/simple_mob/subtypes/vore/weretiger.dm | 2 ++ .../mob/living/simple_mob/subtypes/vore/wolf.dm | 2 ++ .../living/simple_mob/subtypes/vore/xeno_vore.dm | 6 ++++-- code/modules/vore/eating/living_vr.dm | 3 +++ code/modules/vore/eating/mob_vr.dm | 1 + code/modules/vore/eating/vore_vr.dm | 5 +++++ code/modules/vore/eating/vorepanel_vr.dm | 7 +++++++ code/modules/vore/mouseray.dm | 1 + .../VorePanel/VoreUserPreferences.tsx.tsx | 16 ++++++++++++++++ .../VoreUserPreferencesMechanical .tsx | 5 ++++- tgui/packages/tgui/interfaces/VorePanel/types.ts | 2 ++ 44 files changed, 118 insertions(+), 7 deletions(-) diff --git a/code/game/objects/items/devices/body_snatcher_vr.dm b/code/game/objects/items/devices/body_snatcher_vr.dm index c5d0456f5ba..8239ec65c37 100644 --- a/code/game/objects/items/devices/body_snatcher_vr.dm +++ b/code/game/objects/items/devices/body_snatcher_vr.dm @@ -25,6 +25,10 @@ to_chat(usr,"A warning pops up on the device, informing you that [M] appears braindead.") return + if(!M.allow_mind_transfer) + to_chat(usr,"The target's mind is too complex to be affected!") + return + if(M.stat == DEAD) //Are they dead? to_chat(usr,"A warning pops up on the device, informing you that [M] is dead, and, as such, the mind transfer can not be done.") return diff --git a/code/modules/food/food/snacks.dm b/code/modules/food/food/snacks.dm index 38142fc4667..5e17e9cc99a 100644 --- a/code/modules/food/food/snacks.dm +++ b/code/modules/food/food/snacks.dm @@ -4873,6 +4873,7 @@ /mob/living/simple_mob/slime composition_reagent = "slimejelly" + allow_mind_transfer = TRUE /mob/living/simple_mob var/kitchen_tag = "animal" //Used for cooking with animals diff --git a/code/modules/mob/living/bot/bot.dm b/code/modules/mob/living/bot/bot.dm index 307f2de2047..e8540dba548 100644 --- a/code/modules/mob/living/bot/bot.dm +++ b/code/modules/mob/living/bot/bot.dm @@ -41,6 +41,8 @@ var/frustration = 0 var/max_frustration = 0 + allow_mind_transfer = TRUE + /mob/living/bot/New() ..() //update_icons() //VOREstation edit: moved to Init diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/catslug.dm b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/catslug.dm index bcc4d8558a5..4bcfc145a16 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/catslug.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/alien animals/catslug.dm @@ -60,6 +60,8 @@ var/picked_color = FALSE + allow_mind_transfer = TRUE + can_enter_vent_with = list( /obj/item/weapon/implant, /obj/item/device/radio/borg, diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/_giant_spider.dm b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/_giant_spider.dm index d2631cb1ec1..49a22fb990c 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/_giant_spider.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/giant_spider/_giant_spider.dm @@ -117,6 +117,8 @@ /obj/item/stack/material/chitin = 1\ ) + allow_mind_transfer = TRUE + /mob/living/simple_mob/animal/giant_spider/apply_melee_effects(var/atom/A) if(isliving(A)) var/mob/living/L = A diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/passive/passive.dm b/code/modules/mob/living/simple_mob/subtypes/animal/passive/passive.dm index 6450259f9c1..ea32372b329 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/passive/passive.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/passive/passive.dm @@ -2,4 +2,5 @@ // They can also be displaced by all mobs. /mob/living/simple_mob/animal/passive ai_holder_type = /datum/ai_holder/simple_mob/passive - mob_bump_flag = 0 \ No newline at end of file + mob_bump_flag = 0 + allow_mind_transfer = TRUE diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/sif/sif.dm b/code/modules/mob/living/simple_mob/subtypes/animal/sif/sif.dm index be88baab273..6ef4f5b0093 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/sif/sif.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/sif/sif.dm @@ -3,6 +3,7 @@ minbodytemp = 175 cold_resist = 0.75 heat_resist = -0.5 + allow_mind_transfer = TRUE tame_items = list( /obj/item/weapon/reagent_containers/food/snacks/crabmeat = 20, diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/space/bear.dm b/code/modules/mob/living/simple_mob/subtypes/animal/space/bear.dm index 9330af19840..4356f778f2f 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/space/bear.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/space/bear.dm @@ -27,6 +27,8 @@ say_list_type = /datum/say_list/bear + allow_mind_transfer = TRUE + /datum/say_list/bear speak = list("RAWR!","Rawr!","GRR!","Growl!") emote_see = list("stares ferociously", "stomps") diff --git a/code/modules/mob/living/simple_mob/subtypes/animal/squirrel.dm b/code/modules/mob/living/simple_mob/subtypes/animal/squirrel.dm index 9b62bc7da49..4611e3fe609 100644 --- a/code/modules/mob/living/simple_mob/subtypes/animal/squirrel.dm +++ b/code/modules/mob/living/simple_mob/subtypes/animal/squirrel.dm @@ -52,6 +52,8 @@ var/do_seasons = TRUE var/picked_color = FALSE + allow_mind_transfer = TRUE + /////////////////////////////////////// Vore stuff/////////////////////////////////////////// swallowTime = 4 SECONDS diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/bat.dm b/code/modules/mob/living/simple_mob/subtypes/vore/bat.dm index 6d6328dfeff..9d67740a5c6 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/bat.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/bat.dm @@ -24,6 +24,8 @@ faction = "vampire" + allow_mind_transfer = TRUE + // Activate Noms! /mob/living/simple_mob/vore/bat vore_active = 1 @@ -55,4 +57,3 @@ B.escapechance = 15 B.selective_preference = DM_DRAIN B.escape_stun = 5 - diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/bee.dm b/code/modules/mob/living/simple_mob/subtypes/vore/bee.dm index 010dbafed19..9424d0b7949 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/bee.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/bee.dm @@ -44,6 +44,8 @@ var/poison_chance = 10 // Chance for injection to occur. var/poison_per_bite = 1 // Amount added per injection. + allow_mind_transfer = TRUE + /mob/living/simple_mob/vore/bee/Process_Spacemove(var/check_drift = 0) return 1 //No drifting in space for space bee! diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/corrupt_hounds.dm b/code/modules/mob/living/simple_mob/subtypes/vore/corrupt_hounds.dm index d3ad0c3c875..eb9a6199fdf 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/corrupt_hounds.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/corrupt_hounds.dm @@ -73,6 +73,8 @@ loot_list = list(/obj/item/borg/upgrade/basic/syndicate = 6, /obj/item/borg/upgrade/basic/vtec = 6, /obj/item/weapon/material/knife/ritual = 6, /obj/item/weapon/disk/nifsoft/compliance = 6) + allow_mind_transfer = TRUE + /mob/living/simple_mob/vore/aggressive/corrupthound/prettyboi name = "corrupt corrupt hound" desc = "Bad boy machine broke as well. Seems an attempt was made to achieve a less threatening look, and this one is definitely having some conflicting feelings about it." diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/deathclaw.dm b/code/modules/mob/living/simple_mob/subtypes/vore/deathclaw.dm index 8ad2e26f1dc..e2f32e3790d 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/deathclaw.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/deathclaw.dm @@ -59,6 +59,8 @@ ai_holder_type = /datum/ai_holder/simple_mob/melee/deathclaw + allow_mind_transfer = TRUE + // Activate Noms! /mob/living/simple_mob/vore/aggressive/deathclaw vore_active = 1 diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/dino.dm b/code/modules/mob/living/simple_mob/subtypes/vore/dino.dm index c1f0068abff..c9c42899814 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/dino.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/dino.dm @@ -39,6 +39,8 @@ max_n2 = 0 minbodytemp = 0 + allow_mind_transfer = TRUE + // Activate Noms! /mob/living/simple_mob/vore/aggressive/dino vore_active = 1 diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/dominated_brain.dm b/code/modules/mob/living/simple_mob/subtypes/vore/dominated_brain.dm index f5e93af8220..6058a4320dd 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/dominated_brain.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/dominated_brain.dm @@ -194,6 +194,10 @@ to_chat(prey, "You cannot do that in your current state.") return + if(!pred.allow_mind_transfer) + to_chat(prey, "[pred] is unable to be dominated.") + return + if(!pred.ckey) to_chat(prey, "\The [pred] isn't able to be dominated.") return @@ -316,7 +320,7 @@ var/list/possible_mobs = list() for(var/obj/belly/B in src.vore_organs) for(var/mob/living/L in B) - if(isliving(L) && L.ckey) + if(isliving(L) && L.ckey && L.allow_mind_transfer) possible_mobs |= L else continue @@ -327,6 +331,9 @@ if(!input) return var/mob/living/M = input + if(!M.allow_mind_transfer) //check if the dominated mob pref is enabled + to_chat(src, "[M] is unable to be dominated.") + return if(tgui_alert(src, "You selected [M] to attempt to dominate. Are you sure?", "Dominate Prey",list("No","Yes")) != "Yes") return log_admin("[key_name_admin(src)] offered to use dominate prey on [M] ([M.ckey]).") diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/fennec.dm b/code/modules/mob/living/simple_mob/subtypes/vore/fennec.dm index 297bb7a7d31..7766b7fdc88 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/fennec.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/fennec.dm @@ -52,6 +52,8 @@ say_list_type = /datum/say_list/fennec ai_holder_type = /datum/ai_holder/simple_mob/passive + allow_mind_transfer = TRUE + // Activate Noms! /mob/living/simple_mob/vore/fennec vore_active = 1 diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/fennix.dm b/code/modules/mob/living/simple_mob/subtypes/vore/fennix.dm index 7d16df1049a..d6924a090d7 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/fennix.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/fennix.dm @@ -27,6 +27,8 @@ say_list_type = /datum/say_list/fennix ai_holder_type = /datum/ai_holder/simple_mob/retaliate/cooperative + allow_mind_transfer = TRUE + /datum/say_list/fennix speak = list("SQUEL!","SQEL?","Skree.") emote_hear = list("Screeeeecheeeeessss!","Chirrup.") diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/frog.dm b/code/modules/mob/living/simple_mob/subtypes/vore/frog.dm index dfa3bfe5419..f7c40f8b0ce 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/frog.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/frog.dm @@ -44,6 +44,8 @@ special_attack_max_range = 5 special_attack_cooldown = 100 + allow_mind_transfer = TRUE + // Pepe is love, not hate. /mob/living/simple_mob/vore/aggressive/frog/New() if(rand(1,1000000) == 1) diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/horse.dm b/code/modules/mob/living/simple_mob/subtypes/vore/horse.dm index afe0c96324e..2bcf95cf814 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/horse.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/horse.dm @@ -35,6 +35,8 @@ say_list_type = /datum/say_list/horse ai_holder_type = /datum/ai_holder/simple_mob/retaliate + allow_mind_transfer = TRUE + /mob/living/simple_mob/vore/horse/big name = "horse" icon_state = "horse" @@ -194,4 +196,4 @@ holder.set_dir(moving_to) holder.IMove(get_step(holder,moving_to)) wander_delay = base_wander_delay - ai_log("handle_wander_movement() : Exited.", AI_LOG_TRACE) \ No newline at end of file + ai_log("handle_wander_movement() : Exited.", AI_LOG_TRACE) diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/jelly.dm b/code/modules/mob/living/simple_mob/subtypes/vore/jelly.dm index 00e360e9d81..4a4ab6c1181 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/jelly.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/jelly.dm @@ -27,6 +27,8 @@ max_n2 = 0 minbodytemp = 0 + allow_mind_transfer = TRUE + // Activate Noms! vore_active = 1 vore_pounce_chance = 0 diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/otie.dm b/code/modules/mob/living/simple_mob/subtypes/vore/otie.dm index 4ae558a9fd6..aca3e82b3a8 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/otie.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/otie.dm @@ -47,6 +47,8 @@ var/tamed = 0 var/tame_chance = 50 //It's a fiddy-fiddy default you may get a buddy pal or you may get mauled and ate. Win-win! + allow_mind_transfer = TRUE + // Activate Noms! /mob/living/simple_mob/vore/otie diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/pakkun.dm b/code/modules/mob/living/simple_mob/subtypes/vore/pakkun.dm index 2ec34f4c3db..78e01d66432 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/pakkun.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/pakkun.dm @@ -58,6 +58,8 @@ maxHealth = 100 health = 100 + allow_mind_transfer = TRUE + /mob/living/simple_mob/vore/pakkun/Life() . = ..() if(client) diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/panther.dm b/code/modules/mob/living/simple_mob/subtypes/vore/panther.dm index 2a3bf5cf25f..5cdcac41690 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/panther.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/panther.dm @@ -42,6 +42,8 @@ say_list_type = /datum/say_list/panther ai_holder_type = /datum/ai_holder/simple_mob/melee/evasive + allow_mind_transfer = TRUE + // Activate Noms! /mob/living/simple_mob/vore/aggressive/panther vore_active = 1 diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/rabbit.dm b/code/modules/mob/living/simple_mob/subtypes/vore/rabbit.dm index e02075c4cbc..baf40f32dd9 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/rabbit.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/rabbit.dm @@ -43,6 +43,8 @@ vore_default_mode = DM_HOLD vore_icons = SA_ICON_LIVING + allow_mind_transfer = TRUE + var/body_color //brown, black and white, leave blank for random var/grumpiness = 0 // This determines how grumpy we are. Pet us to increase it, leave us alone to decrease. diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/raptor.dm b/code/modules/mob/living/simple_mob/subtypes/vore/raptor.dm index 95769934ee6..5ad3ffd2b8c 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/raptor.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/raptor.dm @@ -48,6 +48,8 @@ "raptorwhite" ) + allow_mind_transfer = TRUE + /mob/living/simple_mob/vore/raptor vore_bump_chance = 25 diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/rat.dm b/code/modules/mob/living/simple_mob/subtypes/vore/rat.dm index c7e3e71fca8..ea72824e422 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/rat.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/rat.dm @@ -70,6 +70,8 @@ say_list_type = /datum/say_list/rat ai_holder_type = /datum/ai_holder/simple_mob/melee/rat + allow_mind_transfer = TRUE + /mob/living/simple_mob/vore/aggressive/rat/init_vore() ..() var/obj/belly/B = vore_selected diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/redpanda.dm b/code/modules/mob/living/simple_mob/subtypes/vore/redpanda.dm index 1ab50769eaa..dc989894055 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/redpanda.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/redpanda.dm @@ -28,6 +28,8 @@ say_list_type = /datum/say_list/redpanda ai_holder_type = /datum/ai_holder/simple_mob/passive + allow_mind_transfer = TRUE + // Activate Noms! /mob/living/simple_mob/vore/redpanda vore_active = 1 diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/scel.dm b/code/modules/mob/living/simple_mob/subtypes/vore/scel.dm index 8a1cb239392..316ae35d285 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/scel.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/scel.dm @@ -56,6 +56,8 @@ "scel_green" ) + allow_mind_transfer = TRUE + /mob/living/simple_mob/vore/scel/New() ..() if(random_skin) diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/sect_drone.dm b/code/modules/mob/living/simple_mob/subtypes/vore/sect_drone.dm index 36fb413b100..4c8c0b6e47f 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/sect_drone.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/sect_drone.dm @@ -84,6 +84,8 @@ ai_holder_type = /datum/ai_holder/simple_mob/melee say_list_type = /datum/say_list/sect_drone + allow_mind_transfer = TRUE + /mob/living/simple_mob/vore/sect_drone/Login() . = ..() verbs |= /mob/living/simple_mob/vore/sect_drone/proc/set_abdomen_color diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/sect_queen.dm b/code/modules/mob/living/simple_mob/subtypes/vore/sect_queen.dm index bec6074f058..6aed85c9561 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/sect_queen.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/sect_queen.dm @@ -85,6 +85,8 @@ ai_holder_type = /datum/ai_holder/simple_mob/melee say_list_type = /datum/say_list/sect_queen + allow_mind_transfer = TRUE + /mob/living/simple_mob/vore/sect_queen/Login() . = ..() verbs |= /mob/living/simple_mob/vore/sect_queen/proc/set_abdomen_color diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/snake.dm b/code/modules/mob/living/simple_mob/subtypes/vore/snake.dm index 4b381ec462d..aeba46b1ec4 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/snake.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/snake.dm @@ -54,6 +54,8 @@ ai_holder_type = /datum/ai_holder/simple_mob/melee + allow_mind_transfer = TRUE + // Activate Noms! /mob/living/simple_mob/vore/aggressive/giant_snake vore_active = 1 diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/solargrub.dm b/code/modules/mob/living/simple_mob/subtypes/vore/solargrub.dm index 8fe16269765..8cf651e69a6 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/solargrub.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/solargrub.dm @@ -51,6 +51,7 @@ List of things solar grubs should be able to do: var/shock_chance = 10 // Beware var/tracked = FALSE + allow_mind_transfer = TRUE glow_override = TRUE /datum/say_list/solargrub 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 229e0430eb2..ed1467d2699 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/vore.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/vore.dm @@ -46,6 +46,7 @@ show_vore_fx = client.prefs_vr.show_vore_fx step_mechanics_pref = client.prefs_vr.step_mechanics_pref pickup_pref = client.prefs_vr.pickup_pref + allow_mind_transfer = client.prefs_vr.allow_mind_transfer /mob/living/simple_mob/proc/set_name() set name = "Set Name" diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/weretiger.dm b/code/modules/mob/living/simple_mob/subtypes/vore/weretiger.dm index a98e5592e71..53e68d59a4d 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/weretiger.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/weretiger.dm @@ -31,6 +31,8 @@ has_hands = 1 + allow_mind_transfer = TRUE + // Nomnomn /mob/living/simple_mob/vore/weretiger vore_active = 1 diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/wolf.dm b/code/modules/mob/living/simple_mob/subtypes/vore/wolf.dm index 890ab933c4d..a9d20b8cf9f 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/wolf.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/wolf.dm @@ -33,6 +33,8 @@ ai_holder_type = /datum/ai_holder/simple_mob/melee/evasive catalogue_data = list(/datum/category_item/catalogue/fauna/wolf) + allow_mind_transfer = TRUE + // Activate Noms! /mob/living/simple_mob/vore/wolf vore_active = 1 diff --git a/code/modules/mob/living/simple_mob/subtypes/vore/xeno_vore.dm b/code/modules/mob/living/simple_mob/subtypes/vore/xeno_vore.dm index b09c5c3ff8a..9d673bd73b3 100644 --- a/code/modules/mob/living/simple_mob/subtypes/vore/xeno_vore.dm +++ b/code/modules/mob/living/simple_mob/subtypes/vore/xeno_vore.dm @@ -28,7 +28,7 @@ maxHealth = 150 health = 150 see_in_dark = 10 - + //Something something, phoron mutation. min_oxy = 0 max_oxy = 0 @@ -64,5 +64,7 @@ ai_holder_type = /datum/ai_holder/simple_mob/melee say_list_type = /datum/say_list/xeno_defanged + allow_mind_transfer = TRUE + /datum/say_list/xeno_defanged - say_got_target = list("hisses angrily!") \ No newline at end of file + say_got_target = list("hisses angrily!") diff --git a/code/modules/vore/eating/living_vr.dm b/code/modules/vore/eating/living_vr.dm index 447bf1b260e..6fcc6f68d86 100644 --- a/code/modules/vore/eating/living_vr.dm +++ b/code/modules/vore/eating/living_vr.dm @@ -264,6 +264,7 @@ P.nutrition_messages = src.nutrition_messages P.weight_message_visible = src.weight_message_visible P.weight_messages = src.weight_messages + P.allow_mind_transfer = src.allow_mind_transfer P.vore_sprite_color = istype(src, /mob/living/carbon/human) ? src:vore_sprite_color : null @@ -316,6 +317,7 @@ nutrition_messages = P.nutrition_messages weight_message_visible = P.weight_message_visible weight_messages = P.weight_messages + allow_mind_transfer = P.allow_mind_transfer if (istype(src, /mob/living/carbon/human)) @@ -1135,6 +1137,7 @@ dispvoreprefs += "Food Vore: [food_vore ? "Enabled" : "Disabled"]
" dispvoreprefs += "Inbelly Spawning: [allow_inbelly_spawning ? "Allowed" : "Disallowed"]
" dispvoreprefs += "Spontaneous transformation: [allow_spontaneous_tf ? "Enabled" : "Disabled"]
" + dispvoreprefs += "Mind transfer: [allow_mind_transfer ? "Allowed" : "Disallowed"]
" dispvoreprefs += "Can be stepped on/over: [step_mechanics_pref ? "Allowed" : "Disallowed"]
" dispvoreprefs += "Can be picked up: [pickup_pref ? "Allowed" : "Disallowed"]
" dispvoreprefs += "Global Vore Privacy is: [eating_privacy_global ? "Subtle" : "Loud"]
" diff --git a/code/modules/vore/eating/mob_vr.dm b/code/modules/vore/eating/mob_vr.dm index 7567b3beb36..a49de81205e 100644 --- a/code/modules/vore/eating/mob_vr.dm +++ b/code/modules/vore/eating/mob_vr.dm @@ -27,6 +27,7 @@ var/selective_preference = DM_DEFAULT // Preference for selective bellymode var/text_warnings = TRUE // Allows us to dismiss the text limit warning messages after viewing it once per round var/eating_privacy_global = FALSE // Makes eating attempt/success messages only reach for subtle range if true, overwritten by belly-specific var + var/allow_mind_transfer = FALSE //Allows ones mind to be taken over or swapped var/nutrition_message_visible = TRUE var/list/nutrition_messages = list( "They are starving! You can hear their stomach snarling from across the room!", diff --git a/code/modules/vore/eating/vore_vr.dm b/code/modules/vore/eating/vore_vr.dm index d7fe76ed5a2..3a255108761 100644 --- a/code/modules/vore/eating/vore_vr.dm +++ b/code/modules/vore/eating/vore_vr.dm @@ -70,6 +70,7 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE var/pickup_pref = TRUE var/vore_sprite_color = list("stomach" = "#000", "taur belly" = "#000") + var/allow_mind_transfer = FALSE var/list/belly_prefs = list() var/vore_taste = "nothing in particular" @@ -196,6 +197,7 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE weight_messages = json_from_file["weight_messages"] eating_privacy_global = json_from_file["eating_privacy_global"] vore_sprite_color = json_from_file["vore_sprite_color"] + allow_mind_transfer = json_from_file["allow_mind_transfer"] //Quick sanitize if(isnull(digestable)) @@ -284,6 +286,8 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE weight_messages.Add("") if(isnull(vore_sprite_color)) vore_sprite_color = list("stomach" = "#000", "taur belly" = "#000") + if(isnull(allow_mind_transfer)) + allow_mind_transfer = FALSE return TRUE /datum/vore_preferences/proc/save_vore() @@ -317,6 +321,7 @@ V::::::V V::::::VO:::::::OOO:::::::ORR:::::R R:::::REE::::::EEEEEE "slip_vore" = slip_vore, "stumble_vore" = stumble_vore, "throw_vore" = throw_vore, + "allow_mind_transfer" = allow_mind_transfer, "food_vore" = food_vore, "digest_pain" = digest_pain, "nutrition_message_visible" = nutrition_message_visible, diff --git a/code/modules/vore/eating/vorepanel_vr.dm b/code/modules/vore/eating/vorepanel_vr.dm index bed7a391fd8..214bfe926a7 100644 --- a/code/modules/vore/eating/vorepanel_vr.dm +++ b/code/modules/vore/eating/vorepanel_vr.dm @@ -335,6 +335,7 @@ var/global/list/belly_colorable_only_fullscreens = list("a_synth_flesh_mono", "step_mechanics_active" = host.step_mechanics_pref, "pickup_mechanics_active" = host.pickup_pref, "noisy" = host.noisy, + "allow_mind_transfer" = host.allow_mind_transfer, "drop_vore" = host.drop_vore, "slip_vore" = host.slip_vore, "stumble_vore" = host.stumble_vore, @@ -569,6 +570,12 @@ var/global/list/belly_colorable_only_fullscreens = list("a_synth_flesh_mono", host.client.prefs_vr.pickup_pref = host.pickup_pref unsaved_changes = TRUE return TRUE + if("toggle_allow_mind_transfer") + host.allow_mind_transfer = !host.allow_mind_transfer + if(host.client.prefs_vr) + host.client.prefs_vr.allow_mind_transfer = host.allow_mind_transfer + unsaved_changes = TRUE + return TRUE if("toggle_healbelly") host.permit_healbelly = !host.permit_healbelly if(host.client.prefs_vr) diff --git a/code/modules/vore/mouseray.dm b/code/modules/vore/mouseray.dm index 3e3ead048e2..997f79d67a8 100644 --- a/code/modules/vore/mouseray.dm +++ b/code/modules/vore/mouseray.dm @@ -250,6 +250,7 @@ new_mob.allow_spontaneous_tf = allow_spontaneous_tf new_mob.eating_privacy_global = eating_privacy_global new_mob.text_warnings = text_warnings + new_mob.allow_mind_transfer = allow_mind_transfer /////SUBTYPES///// diff --git a/tgui/packages/tgui/interfaces/VorePanel/VoreUserPreferences.tsx.tsx b/tgui/packages/tgui/interfaces/VorePanel/VoreUserPreferences.tsx.tsx index 0913c9fb294..a58473ff2f5 100644 --- a/tgui/packages/tgui/interfaces/VorePanel/VoreUserPreferences.tsx.tsx +++ b/tgui/packages/tgui/interfaces/VorePanel/VoreUserPreferences.tsx.tsx @@ -28,6 +28,7 @@ export const VoreUserPreferences = (props: { can_be_drop_pred, allow_inbelly_spawning, allow_spontaneous_tf, + allow_mind_transfer, step_mechanics_active, pickup_mechanics_active, noisy, @@ -367,6 +368,21 @@ export const VoreUserPreferences = (props: { disabled: 'Spontaneous TF Disabled', }, }, + mind_transfer: { + action: 'toggle_allow_mind_transfer', + test: allow_mind_transfer, + tooltip: { + main: + 'This toggle is for mind transfer interactions' + + ' as a victim, such as mind-binder or dominate pred/prey.', + enable: 'Click here to allow your mind being taken or swapped.', + disable: 'Click here to disallow having your mind taken or swapped.', + }, + content: { + enabled: 'Mind Transfer Enabled', + disabled: 'Mind Transfer Disabled', + }, + }, examine_nutrition: { action: 'toggle_nutrition_ex', test: nutrition_message_visible, diff --git a/tgui/packages/tgui/interfaces/VorePanel/VoreUserPreferencesTabs/VoreUserPreferencesMechanical .tsx b/tgui/packages/tgui/interfaces/VorePanel/VoreUserPreferencesTabs/VoreUserPreferencesMechanical .tsx index 21d32e32fdb..8433d9dab9a 100644 --- a/tgui/packages/tgui/interfaces/VorePanel/VoreUserPreferencesTabs/VoreUserPreferencesMechanical .tsx +++ b/tgui/packages/tgui/interfaces/VorePanel/VoreUserPreferencesTabs/VoreUserPreferencesMechanical .tsx @@ -112,7 +112,10 @@ export const VoreUserPreferencesMechanical = (props: { Selective Mode Preference - + + + + diff --git a/tgui/packages/tgui/interfaces/VorePanel/types.ts b/tgui/packages/tgui/interfaces/VorePanel/types.ts index 9d62b52dcb8..508d0fb6f00 100644 --- a/tgui/packages/tgui/interfaces/VorePanel/types.ts +++ b/tgui/packages/tgui/interfaces/VorePanel/types.ts @@ -160,6 +160,7 @@ export type prefData = { step_mechanics_active: BooleanLike; pickup_mechanics_active: BooleanLike; noisy: BooleanLike; + allow_mind_transfer: BooleanLike; drop_vore: BooleanLike; slip_vore: BooleanLike; stumble_vore: BooleanLike; @@ -198,6 +199,7 @@ export type localPrefs = { remains: preferenceData; pickuppref: preferenceData; spontaneous_tf: preferenceData; + mind_transfer: preferenceData; examine_nutrition: preferenceData; examine_weight: preferenceData; eating_privacy_global: preferenceData;