SC transfer verb (#8849)

This commit is contained in:
Kashargul
2024-08-29 08:34:11 +02:00
committed by GitHub
parent 72eeb08f02
commit daf2bcb37d
3 changed files with 40 additions and 18 deletions

View File

@@ -34,6 +34,8 @@
add_verb(src,/mob/living/proc/vore_bellyrub) //CHOMPEdit TGPanel //CHOMP If mob doesnt have bellies it probably won't be needing this anyway add_verb(src,/mob/living/proc/vore_bellyrub) //CHOMPEdit TGPanel //CHOMP If mob doesnt have bellies it probably won't be needing this anyway
add_verb(src,/mob/proc/nsay_vore) //CHOMPAdd add_verb(src,/mob/proc/nsay_vore) //CHOMPAdd
add_verb(src,/mob/proc/nme_vore) //CHOMPAdd add_verb(src,/mob/proc/nme_vore) //CHOMPAdd
add_verb(src,/mob/proc/nsay_vore_ch) //CHOMPAdd
add_verb(src,/mob/proc/nme_vore_ch) //CHOMPAdd
add_verb(src,/mob/proc/enter_soulcatcher) //CHOMPAdd add_verb(src,/mob/proc/enter_soulcatcher) //CHOMPAdd
//VOREStation Add Start //VOREStation Add Start

View File

@@ -415,18 +415,15 @@
if(!valid_objects || !valid_objects.len) if(!valid_objects || !valid_objects.len)
return return
var/obj/target = tgui_input_list(owner, "Select where you want to store the mind into.", "Mind Transfer Target", valid_objects) var/obj/target = tgui_input_list(owner, "Select where you want to store the mind into.", "Mind Transfer Target", valid_objects)
transfer_mob_selector(selected_soul, target)
// Transfer selector proc
/obj/soulgem/proc/transfer_mob_selector(var/mob/M, var/obj/target)
if(!M || !target) return
if(istype(target, /obj/soulgem)) if(istype(target, /obj/soulgem))
var/obj/soulgem/gem = target transfer_mob_soulcatcher(M, target)
if(!gem.owner)
return
if((tgui_alert(gem.owner, "Do you want to allow [owner] to transfer [selected_soul] to your soulcatcher?", "Allow Transfer", list("No", "Yes")) == "Yes"))
if(!in_range(gem.owner, owner))
return
if(!(gem.owner.soulcatcher_pref_flags & SOULCATCHER_ALLOW_TRANSFER))
return
transfer_mob_soulcatcher(selected_soul, gem)
return return
transfer_mob(selected_soul, target) transfer_mob(M, target)
// Transfers a captured soul to a valid object (sleevemate, mmi) // Transfers a captured soul to a valid object (sleevemate, mmi)
/obj/soulgem/proc/transfer_mob(var/mob/M, var/obj/target) /obj/soulgem/proc/transfer_mob(var/mob/M, var/obj/target)
@@ -461,6 +458,12 @@
/obj/soulgem/proc/transfer_mob_soulcatcher(var/mob/living/carbon/brain/caught_soul/vore/M, var/obj/soulgem/gem) /obj/soulgem/proc/transfer_mob_soulcatcher(var/mob/living/carbon/brain/caught_soul/vore/M, var/obj/soulgem/gem)
if(is_taken_over()) return if(is_taken_over()) return
if(!istype(M) || !gem) return if(!istype(M) || !gem) return
if(!gem.owner) return
if((tgui_alert(gem.owner, "Do you want to allow [owner] to transfer [selected_soul] to your soulcatcher?", "Allow Transfer", list("No", "Yes")) == "Yes"))
if(!in_range(gem.owner, owner))
return
if(!(gem.owner.soulcatcher_pref_flags & SOULCATCHER_ALLOW_TRANSFER))
return
if(M.mind == own_mind) if(M.mind == own_mind)
own_mind = null own_mind = null
brainmobs -= M brainmobs -= M

View File

@@ -72,14 +72,20 @@
soulgem.catch_mob(src, to_use_custom_name) soulgem.catch_mob(src, to_use_custom_name)
// Speak to the captured souls within the own soulcatcher // Speak to the captured souls within the own soulcatcher
/mob/proc/nsay_vore() /mob/proc/nsay_vore(message as message)
set name = "NSay Vore" set name = "NSay Vore"
set desc = "Speak into your Soulcatcher." set desc = "Speak into your Soulcatcher."
src.nsay_vore_act(message)
/mob/proc/nsay_vore_ch()
set name = "NSay Vore CH"
set desc = "Speak into your Soulcatcher."
set category = "IC.Vore" set category = "IC.Vore"
src.nsay_vore_act() src.nsay_vore_act()
/mob/proc/nsay_vore_act() /mob/proc/nsay_vore_act(var/message)
if(stat != CONSCIOUS) if(stat != CONSCIOUS)
to_chat(src, span_warning("You can't use NSay Vore while unconscious.")) to_chat(src, span_warning("You can't use NSay Vore while unconscious."))
return return
@@ -89,20 +95,28 @@
if(!gem.brainmobs.len) if(!gem.brainmobs.len)
to_chat(src, span_warning("You need a devoured soul to use NSay Vore.")) to_chat(src, span_warning("You need a devoured soul to use NSay Vore."))
return return
var/message = tgui_input_text(usr, "Type a message to say.","Speak into Soulcatcher", multiline=TRUE)
if(!message)
message = tgui_input_text(usr, "Type a message to say.","Speak into Soulcatcher", multiline=TRUE)
if(message) if(message)
var/sane_message = sanitize(message) var/sane_message = sanitize(message)
gem.use_speech(sane_message, src) gem.use_speech(sane_message, src)
// Emote to the captured souls within the soulcatcher // Emote to the captured souls within the soulcatcher
/mob/proc/nme_vore() /mob/proc/nme_vore(message as message)
set name = "NMe Vore" set name = "NMe Vore"
set desc = "Emote into your Soulcatcher." set desc = "Emote into your Soulcatcher."
src.nme_vore_act(message)
/mob/proc/nme_vore_ch()
set name = "NMe Vore CH"
set desc = "Emote into your Soulcatcher."
set category = "IC.Vore" set category = "IC.Vore"
src.nme_vore_act() src.nme_vore_act()
/mob/proc/nme_vore_act() /mob/proc/nme_vore_act(var/message)
if(stat != CONSCIOUS) if(stat != CONSCIOUS)
to_chat(src, span_warning("You can't use NMe Vore while unconscious.")) to_chat(src, span_warning("You can't use NMe Vore while unconscious."))
return return
@@ -113,7 +127,8 @@
to_chat(src, span_warning("You need a devoured soul to use NMe Vore.")) to_chat(src, span_warning("You need a devoured soul to use NMe Vore."))
return return
var/message = tgui_input_text(usr, "Type an action to perform.","Emote into Soulcatcher", multiline=TRUE) if(!message)
message = tgui_input_text(usr, "Type an action to perform.","Emote into Soulcatcher", multiline=TRUE)
if(message) if(message)
var/sane_message = sanitize(message) var/sane_message = sanitize(message)
gem.use_emote(sane_message, src) gem.use_emote(sane_message, src)
@@ -201,8 +216,10 @@
var/list/valid_objects = gem.find_transfer_objects() var/list/valid_objects = gem.find_transfer_objects()
if(!valid_objects || !valid_objects.len) if(!valid_objects || !valid_objects.len)
return return
var/obj/item/target = tgui_input_list(src, "Select where you want to store your own mind into.", "Mind Transfer Target", valid_objects)
gem.transfer_mob(src, target) var/obj/target = tgui_input_list(src, "Select where you want to store your own mind into.", "Mind Transfer Target", valid_objects)
gem.transfer_mob_selector(src, target)
// Allows the owner to reenter the body after being caught or having given away control // Allows the owner to reenter the body after being caught or having given away control
/mob/living/carbon/brain/caught_soul/vore/proc/reenter_body() /mob/living/carbon/brain/caught_soul/vore/proc/reenter_body()