Even more fixes

This commit is contained in:
BlackMajor
2022-04-23 20:21:01 +12:00
parent 8d48097db0
commit 15a01777d3
8 changed files with 45 additions and 58 deletions

View File

@@ -4,7 +4,7 @@
var/msg = "" // This is to make sure that the pieces have actually added something var/msg = "" // This is to make sure that the pieces have actually added something
var/raw_msg = "" var/raw_msg = ""
. = list("formatted" = "[verb], \"", "raw" = "") . = list("formatted" = "[verb], \"", "raw" = "")
for(var/datum/multilingual_say_piece/SP in message_pieces) for(var/datum/multilingual_say_piece/SP in message_pieces)
iteration_count++ iteration_count++
var/piece = SP.message var/piece = SP.message
@@ -15,11 +15,11 @@
if(radio) if(radio)
.["formatted"] = SP.speaking.format_message_radio(piece) .["formatted"] = SP.speaking.format_message_radio(piece)
.["raw"] = piece .["raw"] = piece
return return
else else
.["formatted"] = SP.speaking.format_message(piece) .["formatted"] = SP.speaking.format_message(piece)
.["raw"] = piece .["raw"] = piece
return return
if(iteration_count == 1) if(iteration_count == 1)
piece = capitalize(piece) piece = capitalize(piece)
@@ -34,7 +34,7 @@
piece = pick(S.say_list.speak) piece = pick(S.say_list.speak)
raw_msg += (piece + " ") raw_msg += (piece + " ")
//HTML formatting //HTML formatting
if(!SP.speaking) // Catch the most generic case first if(!SP.speaking) // Catch the most generic case first
piece = "<span class='message body'>[piece]</span>" piece = "<span class='message body'>[piece]</span>"
@@ -44,7 +44,7 @@
piece = SP.speaking.format_message(piece) piece = SP.speaking.format_message(piece)
msg += (piece + " ") msg += (piece + " ")
if(msg == "") if(msg == "")
// There is literally no content left in this message, we need to shut this shit down // There is literally no content left in this message, we need to shut this shit down
.["formatted"] = "" // hear_say will suppress it .["formatted"] = "" // hear_say will suppress it
@@ -90,7 +90,7 @@
var/message = combined["formatted"] var/message = combined["formatted"]
if(message == "") if(message == "")
return return
if(sleeping || stat == UNCONSCIOUS) if(sleeping || stat == UNCONSCIOUS)
hear_sleep(multilingual_to_message(message_pieces)) hear_sleep(multilingual_to_message(message_pieces))
return FALSE return FALSE
@@ -169,7 +169,7 @@
var/regex/R = new("\\[delimiter](.+?)\\[delimiter]","g") var/regex/R = new("\\[delimiter](.+?)\\[delimiter]","g")
var/tag = GLOB.speech_toppings[delimiter] var/tag = GLOB.speech_toppings[delimiter]
tagged_message = R.Replace(tagged_message,"<[tag]>$1</[tag]>") tagged_message = R.Replace(tagged_message,"<[tag]>$1</[tag]>")
return tagged_message return tagged_message
/mob/proc/hear_radio(var/list/message_pieces, var/verb = "says", var/part_a, var/part_b, var/part_c, var/mob/speaker = null, var/hard_to_hear = 0, var/vname = "") /mob/proc/hear_radio(var/list/message_pieces, var/verb = "says", var/part_a, var/part_b, var/part_c, var/mob/speaker = null, var/hard_to_hear = 0, var/vname = "")
@@ -293,4 +293,4 @@
name = speaker.voice_name name = speaker.voice_name
var/rendered = "<span class='game say'><span class='name'>[name]</span> [message]</span>" var/rendered = "<span class='game say'><span class='name'>[name]</span> [message]</span>"
to_chat(src, rendered) to_chat(src, rendered)

View File

@@ -307,7 +307,7 @@
//VOREStation Add Start Makes it so that simplemobs can understand galcomm without being able to speak it. //VOREStation Add Start Makes it so that simplemobs can understand galcomm without being able to speak it.
/mob/living/simple_mob/say_understands(var/mob/other, var/datum/language/speaking = null) /mob/living/simple_mob/say_understands(var/mob/other, var/datum/language/speaking = null)
if(understands_common && speaking?.name == LANGUAGE_GALCOM) if(understands_common && (speaking?.name == LANGUAGE_GALCOM || !speaking))
return TRUE return TRUE
return ..() return ..()
//Vorestation Add End //Vorestation Add End

View File

@@ -374,16 +374,16 @@
switch(message_mode) switch(message_mode)
if("intercom") if("intercom")
for(var/obj/item/device/radio/intercom/I in view(1, null)) for(var/obj/item/device/radio/intercom/I in view(1, null))
I.talk_into(src, message, verb, speaking) I.talk_into(src,message,message_mode,verb,speaking)
used_radios += I used_radios += I
if("headset") if("headset")
if(mob_radio && istype(mob_radio,/obj/item/device/radio/headset/mob_headset)) if(mob_radio && istype(mob_radio,/obj/item/device/radio)) //CHOMPEdit - Why does it specifically have to be mob_headset? Bad.
mob_radio.talk_into(src,message,null,verb,speaking) mob_radio.talk_into(src,message,message_mode,verb,speaking)
used_radios += mob_radio used_radios += mob_radio
else else
if(message_mode) if(message_mode)
if(mob_radio && istype(mob_radio,/obj/item/device/radio/headset/mob_headset)) if(mob_radio && istype(mob_radio,/obj/item/device/radio/headset/mob_headset))
mob_radio.talk_into(src,message, message_mode, verb, speaking) mob_radio.talk_into(src,message,message_mode,verb,speaking)
used_radios += mob_radio used_radios += mob_radio
else else
..() ..()

View File

@@ -1,19 +0,0 @@
/*
init_vore() was moved to only be called when vore organs are needed. This is also responsible for loading vore prefs.
This file is here to make vore prefs default to off so that someone who hasn't opened their vore panel during a round
won't accidentally be prefbroken.
Also, these should've been defaulted to off in the first place.
*/
/mob/living/carbon/human
digestable = FALSE
devourable = FALSE
feeding = FALSE
absorbable = FALSE
digest_leave_remains = FALSE
allowmobvore = FALSE
showvoreprefs = FALSE
permit_healbelly = FALSE
can_be_drop_prey = FALSE
can_be_drop_pred = FALSE
show_vore_fx = FALSE

View File

@@ -44,7 +44,6 @@
var/latejoin_vore = FALSE //CHOMPedit: If enabled, latejoiners can spawn into this, assuming they have a client var/latejoin_vore = FALSE //CHOMPedit: If enabled, latejoiners can spawn into this, assuming they have a client
var/latejoin_prey = FALSE //CHOMPedit: If enabled, latejoiners can spawn ontop of and instantly eat the victim var/latejoin_prey = FALSE //CHOMPedit: If enabled, latejoiners can spawn ontop of and instantly eat the victim
var/noisy_full = FALSE //CHOMPedit: Enables belching when a mob has overeaten var/noisy_full = FALSE //CHOMPedit: Enables belching when a mob has overeaten
var/bellies_loaded = FALSE //CHOMPedit: On-demand belly loading
var/regen_sounds = list( var/regen_sounds = list(
'sound/effects/mob_effects/xenochimera/regen_1.ogg', 'sound/effects/mob_effects/xenochimera/regen_1.ogg',
'sound/effects/mob_effects/xenochimera/regen_2.ogg', 'sound/effects/mob_effects/xenochimera/regen_2.ogg',
@@ -211,12 +210,12 @@
return TRUE return TRUE
/mob/living/proc/apply_vore_prefs(var/full_vorgans = FALSE) //CHOMPedit: full_vorgans var to bypass 1-belly load optimization. /mob/living/proc/apply_vore_prefs()
if(!client || !client.prefs_vr) if(!client || !client.prefs_vr)
return FALSE return FALSE
if(!client.prefs_vr.load_vore()) if(!client.prefs_vr.load_vore())
return FALSE return FALSE
if(!copy_from_prefs_vr(full_vorgans = full_vorgans)) //CHOMPedit: full_vorgans var to bypass 1-belly load optimization. if(!copy_from_prefs_vr())
return FALSE return FALSE
return TRUE return TRUE
@@ -306,12 +305,8 @@
if(bellies) if(bellies)
release_vore_contents(silent = TRUE) release_vore_contents(silent = TRUE)
QDEL_LIST(vore_organs) QDEL_LIST(vore_organs)
bellies_loaded = FALSE //CHOMPedit
for(var/entry in P.belly_prefs) for(var/entry in P.belly_prefs)
list_to_object(entry,src) list_to_object(entry,src)
if(!full_vorgans) //CHOMPedit: full_vorgans var to bypass 1-belly load optimization.
break //CHOMPedit: Belly load optimization. Only load first belly, save the rest for vorepanel.
bellies_loaded = TRUE //CHOMPedit
return TRUE return TRUE

View File

@@ -19,16 +19,6 @@
log_debug("[src] ([type], \ref[src]) didn't have a vorePanel and tried to use the verb.") log_debug("[src] ([type], \ref[src]) didn't have a vorePanel and tried to use the verb.")
vorePanel = new(src) vorePanel = new(src)
if(!bellies_loaded) //CHOMPedit Start: On-demand belly loading
var/datum/vore_preferences/P = client.prefs_vr
var/firstbelly = FALSE // First belly loaded on init_vore
for(var/entry in P.belly_prefs)
if(!firstbelly)
firstbelly = TRUE
continue
list_to_object(entry,src)
bellies_loaded = TRUE //CHOMPedit End
vorePanel.tgui_interact(src) vorePanel.tgui_interact(src)
/mob/living/proc/updateVRPanel() //Panel popup update call from belly events. /mob/living/proc/updateVRPanel() //Panel popup update call from belly events.
@@ -414,7 +404,7 @@
var/alert = tgui_alert(usr, "Are you sure you want to reload character slot preferences? This will remove your current vore organs and eject their contents.","Confirmation",list("Reload","Cancel")) var/alert = tgui_alert(usr, "Are you sure you want to reload character slot preferences? This will remove your current vore organs and eject their contents.","Confirmation",list("Reload","Cancel"))
if(alert != "Reload") if(alert != "Reload")
return FALSE return FALSE
if(!host.apply_vore_prefs(TRUE)) //CHOMPedit: full_vorgans var to bypass 1-belly load optimization. if(!host.apply_vore_prefs())
tgui_alert_async(usr, "ERROR: Chomp-specific preferences failed to apply!","Error") tgui_alert_async(usr, "ERROR: Chomp-specific preferences failed to apply!","Error")
else else
to_chat(usr,"<span class='notice'>Chomp-specific preferences applied from active slot!</span>") to_chat(usr,"<span class='notice'>Chomp-specific preferences applied from active slot!</span>")

View File

@@ -49,6 +49,7 @@
can_buckle = 1 can_buckle = 1
has_hands = 1 has_hands = 1
shock_resist = 1 shock_resist = 1
nameset = 1
/datum/say_list/protean_blob /datum/say_list/protean_blob
speak = list("Blrb?","Sqrsh.","Glrsh!") speak = list("Blrb?","Sqrsh.","Glrsh!")
@@ -344,8 +345,8 @@ var/global/list/disallowed_protean_accessories = list(
// Helpers - Unsafe, WILL perform change. // Helpers - Unsafe, WILL perform change.
/mob/living/carbon/human/proc/nano_intoblob(force) /mob/living/carbon/human/proc/nano_intoblob(force)
if(loc == /obj/item/weapon/rig/protean) //CHOMP Add if(loc == /obj/item/weapon/rig/protean)
return //CHOMP Add return
if(!force && !isturf(loc)) if(!force && !isturf(loc))
to_chat(src,"<span class='warning'>You can't change forms while inside something.</span>") to_chat(src,"<span class='warning'>You can't change forms while inside something.</span>")
return return
@@ -378,6 +379,14 @@ var/global/list/disallowed_protean_accessories = list(
blob.ckey = ckey blob.ckey = ckey
blob.ooc_notes = ooc_notes blob.ooc_notes = ooc_notes
temporary_form = blob temporary_form = blob
var/obj/item/device/radio/R = null
if(isradio(l_ear))
R = l_ear
if(isradio(r_ear))
R = r_ear
if(R)
blob.mob_radio = R
R.forceMove(blob)
//Mail them to nullspace //Mail them to nullspace
moveToNullspace() moveToNullspace()
@@ -395,9 +404,11 @@ var/global/list/disallowed_protean_accessories = list(
for(var/obj/belly/B as anything in vore_organs) for(var/obj/belly/B as anything in vore_organs)
B.forceMove(blob) B.forceMove(blob)
B.owner = blob B.owner = blob
vore_organs.Cut()
//We can still speak our languages! //We can still speak our languages!
blob.languages = languages.Copy() blob.languages = languages.Copy()
blob.name = real_name
//Flip them to the protean panel //Flip them to the protean panel
client?.statpanel = "Protean" client?.statpanel = "Protean"
@@ -450,6 +461,10 @@ var/global/list/disallowed_protean_accessories = list(
if(blob.l_hand) blob.drop_from_inventory(blob.l_hand) if(blob.l_hand) blob.drop_from_inventory(blob.l_hand)
if(blob.r_hand) blob.drop_from_inventory(blob.r_hand) if(blob.r_hand) blob.drop_from_inventory(blob.r_hand)
if(blob.mob_radio)
var/obj/item/device/radio/R = blob.mob_radio
R.forceMove(src)
//Play the animation //Play the animation
blob.icon_state = "from_puddle" blob.icon_state = "from_puddle"
@@ -474,10 +489,12 @@ var/global/list/disallowed_protean_accessories = list(
temporary_form = null temporary_form = null
//Transfer vore organs //Transfer vore organs
vore_organs = blob.vore_organs
vore_selected = blob.vore_selected vore_selected = blob.vore_selected
for(var/obj/belly/B as anything in blob.vore_organs) for(var/obj/belly/B as anything in blob.vore_organs)
B.forceMove(src) B.forceMove(src)
B.owner = src B.owner = src
languages = blob.languages.Copy()
Life(1) //Fix my blindness right meow //Has to be moved up here, there exists a circumstance where blob could be deleted without vore organs moving right. Life(1) //Fix my blindness right meow //Has to be moved up here, there exists a circumstance where blob could be deleted without vore organs moving right.

View File

@@ -82,14 +82,18 @@
update_icons_body() update_icons_body()
/mob/living/carbon/human/proc/nano_regenerate() /mob/living/carbon/human/proc/nano_regenerate()
set name = "Ref - Whole Body" set name = "Total Reassembly (wip)"
set desc = "Allows you to regrow limbs and replace organs, given you have enough materials." set desc = "Completely reassemble yourself from whatever save slot you have loaded in preferences. Assuming you meet the requirements."
set category = "Abilities" set category = "Abilities"
set hidden = 1 set hidden = 1
if(temporary_form)
to_chat(temporary_form,"<span class ='warning'>This function isn't coded yet. Soon, my child.</span>")
else
to_chat(src,"<span class ='warning'>This function isn't coded yet. Soon, my child.</span>")
if(stat) /*if(stat)
to_chat(src,"<span class='warning'>You must be awake and standing to perform this action!</span>") to_chat(src,"<span class='warning'>You must be awake and standing to perform this action!</span>")
return return
@@ -182,7 +186,7 @@
to_chat(src, "<span class='critical'>Your refactoring is interrupted.</span>") to_chat(src, "<span class='critical'>Your refactoring is interrupted.</span>")
to_chat(blob, "<span class='critical'>Your refactoring is interrupted!</span>") to_chat(blob, "<span class='critical'>Your refactoring is interrupted!</span>")
active_regen = 0 active_regen = 0
nano_outofblob(blob) nano_outofblob(blob)*/
//// ////
// Storing metal // Storing metal
@@ -440,8 +444,8 @@ CHOMP Removal end*/
to_call = /mob/living/carbon/human/proc/nano_partswap to_call = /mob/living/carbon/human/proc/nano_partswap
/obj/effect/protean_ability/reform_body /obj/effect/protean_ability/reform_body
ability_name = "Ref - Whole Body" ability_name = "Total Reassembly (wip)"
desc = "Rebuild your entire body into whatever design you want, assuming you have 10,000 metal." desc = "Completely reassemble yourself from whatever save slot you have loaded in preferences. Assuming you meet the requirements."
icon_state = "body" icon_state = "body"
to_call = /mob/living/carbon/human/proc/nano_regenerate to_call = /mob/living/carbon/human/proc/nano_regenerate