mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-13 03:33:21 +00:00
Even more fixes
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
..()
|
..()
|
||||||
|
|||||||
@@ -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
|
|
||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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>")
|
||||||
|
|||||||
@@ -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.
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user