[MIRROR] Kitchen Sink P2 TGUI Prefs (#10770)

Co-authored-by: Cameron Lennox <killer65311@gmail.com>
Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com>
This commit is contained in:
CHOMPStation2StaffMirrorBot
2025-04-26 14:50:26 -07:00
committed by GitHub
parent 77b972fed3
commit ca9de6648e
48 changed files with 222 additions and 816 deletions

View File

@@ -33,7 +33,7 @@ var/list/talk_sound_map = rlist(
GLOB.goon_speak_pugg_sound, GLOB.goon_speak_pugg_sound,
GLOB.goon_speak_roach_sound, GLOB.goon_speak_roach_sound,
GLOB.goon_speak_skelly_sound, GLOB.goon_speak_skelly_sound,
GLOB.xeno_speak_sound // CHOMPEnable GLOB.xeno_speak_sound // Does not exist on virgo
) )
) )

View File

@@ -10,10 +10,8 @@ GLOBAL_LIST_EMPTY(tagger_locations)
GLOBAL_LIST_INIT(char_directory_tags, list("Pred", "Pred-Pref", "Prey", "Prey-Pref", "Switch", "Non-Vore", "Unset")) GLOBAL_LIST_INIT(char_directory_tags, list("Pred", "Pred-Pref", "Prey", "Prey-Pref", "Switch", "Non-Vore", "Unset"))
GLOBAL_LIST_INIT(char_directory_erptags, list("Dominant", "Dom-Pref", "Submissive", "Sub-Pref", "Switch", "No ERP", "Unset")) GLOBAL_LIST_INIT(char_directory_erptags, list("Dominant", "Dom-Pref", "Submissive", "Sub-Pref", "Switch", "No ERP", "Unset"))
// CHOMPStation Edit Start: Directory Update GLOBAL_LIST_INIT(char_directory_sexualitytags, list("Straight", "Bisexual", "Pansexual", "Gay", "Lesbian", "Asexual", "Demisexual", "Flexible", "Other", "Unset"))
GLOBAL_LIST_INIT(char_directory_sexualitytags, list("Straight", "Bisexual", "Pansexual", "Gay", "Lesbian", "Asexual", "Demisexual", "Unset")) GLOBAL_LIST_INIT(char_directory_gendertags, list("Male", "Female", "Feminine", "Masculine", "Nonbinary", "Trans Man", "Trans Woman", "Other", "Flexible", "Ungendered", "Unset"))
GLOBAL_LIST_INIT(char_directory_gendertags, list("Male", "Female", "Nonbinary", "Trans Man", "Trans Woman", "Other", "Ungendered", "Unset"))
// CHOMPStation Edit End: Directory Update
GLOBAL_LIST_EMPTY(crafting_recipes) //list of all table craft recipes GLOBAL_LIST_EMPTY(crafting_recipes) //list of all table craft recipes
GLOBAL_LIST_INIT(uplink_locations, list("PDA", "Headset", "None")) GLOBAL_LIST_INIT(uplink_locations, list("PDA", "Headset", "None"))

View File

@@ -5,11 +5,9 @@
var/directory_erptag var/directory_erptag
var/directory_ad var/directory_ad
var/vore_prey_eaten = 0 var/vore_prey_eaten = 0
//CHOMPAdd Start
var/vantag_preference = VANTAG_NONE var/vantag_preference = VANTAG_NONE
var/directory_gendertag var/directory_gendertag
var/directory_sexualitytag var/directory_sexualitytag
//CHOMPAdd End
/mob/living/mind_initialize() /mob/living/mind_initialize()
. = ..() . = ..()
@@ -18,8 +16,6 @@
mind.directory_tag = client.prefs.directory_tag mind.directory_tag = client.prefs.directory_tag
mind.directory_erptag = client.prefs.directory_erptag mind.directory_erptag = client.prefs.directory_erptag
mind.directory_ad = client.prefs.directory_ad mind.directory_ad = client.prefs.directory_ad
//CHOMPAdd Start
mind.vantag_preference = client.prefs.vantag_preference mind.vantag_preference = client.prefs.vantag_preference
mind.directory_gendertag = client.prefs.directory_gendertag mind.directory_gendertag = client.prefs.directory_gendertag
mind.directory_sexualitytag = client.prefs.directory_sexualitytag mind.directory_sexualitytag = client.prefs.directory_sexualitytag
//CHOMPAdd End

View File

@@ -28,26 +28,16 @@
to_chat(user,span_danger("The target's mind is too complex to be affected!")) to_chat(user,span_danger("The target's mind is too complex to be affected!"))
return return
/* CHOMPRemove Start, we have a vore pref for that
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(H.resleeve_lock && user.ckey != H.resleeve_lock)
to_chat(src, span_danger("[H] cannot be impersonated!"))
return
*///CHOMPRemove End
if(M.stat == DEAD) //Are they dead? if(M.stat == DEAD) //Are they dead?
to_chat(user,span_warning("A warning pops up on the device, informing you that [M] is dead, and, as such, the mind transfer can not be done.")) to_chat(user,span_warning("A warning pops up on the device, informing you that [M] is dead, and, as such, the mind transfer can not be done."))
return return
var/choice = tgui_alert(user,"This will swap your mind with the target's mind. This will result in them controlling your body, and you controlling their body. Continue?","Confirmation",list("Continue","Cancel")) var/choice = tgui_alert(user,"This will swap your mind with the target's mind. This will result in them controlling your body, and you controlling their body. Continue?","Confirmation",list("Continue","Cancel"))
if(choice == "Continue" && user.get_active_hand() == src && user.Adjacent(M)) if(choice == "Continue" && user.get_active_hand() == src && user.Adjacent(M))
//CHOMPAdd Start - Admin logging for Body Snatcher usage
if(M.ckey && !M.client) if(M.ckey && !M.client)
log_and_message_admins("attempted to body swap with [key_name(M)] while they were SSD!") log_and_message_admins("attempted to body swap with [key_name(M)] while they were SSD!")
else else
log_and_message_admins("attempted to body swap with [key_name(M)].") log_and_message_admins("attempted to body swap with [key_name(M)].")
//CHOMPAdd End
user.visible_message(span_warning("[user] pushes the device up their forehead and [M]'s head, the device beginning to let out a series of light beeps!"),span_notice("You begin swap minds with [M]!")) user.visible_message(span_warning("[user] pushes the device up their forehead and [M]'s head, the device beginning to let out a series of light beeps!"),span_notice("You begin swap minds with [M]!"))
if(do_after(user,35 SECONDS,M)) if(do_after(user,35 SECONDS,M))
if(user.mind && M.mind && M.stat != DEAD && user.stat != DEAD) if(user.mind && M.mind && M.stat != DEAD && user.stat != DEAD)
@@ -58,14 +48,12 @@
var/target_ooc_notes = M.ooc_notes var/target_ooc_notes = M.ooc_notes
var/target_likes = M.ooc_notes_likes var/target_likes = M.ooc_notes_likes
var/target_dislikes = M.ooc_notes_dislikes var/target_dislikes = M.ooc_notes_dislikes
//CHOMPEdit Start
var/target_favs = M.ooc_notes_favs var/target_favs = M.ooc_notes_favs
var/target_maybes = M.ooc_notes_maybes var/target_maybes = M.ooc_notes_maybes
var/target_style = M.ooc_notes_style var/target_style = M.ooc_notes_style
var/user_favs = user.ooc_notes_favs var/user_favs = user.ooc_notes_favs
var/user_maybes = user.ooc_notes_maybes var/user_maybes = user.ooc_notes_maybes
var/user_style = user.ooc_notes_style var/user_style = user.ooc_notes_style
//CHOMPEdit End
var/user_ooc_notes = user.ooc_notes var/user_ooc_notes = user.ooc_notes
var/user_likes = user.ooc_notes_likes var/user_likes = user.ooc_notes_likes
var/user_dislikes = user.ooc_notes_dislikes var/user_dislikes = user.ooc_notes_dislikes
@@ -82,7 +70,6 @@
M.ooc_notes = user_ooc_notes //Let's keep their OOC notes over to their new body. M.ooc_notes = user_ooc_notes //Let's keep their OOC notes over to their new body.
M.ooc_notes_likes = user_likes M.ooc_notes_likes = user_likes
M.ooc_notes_dislikes = user_dislikes M.ooc_notes_dislikes = user_dislikes
//CHOMPEdit Start
M.ooc_notes_favs = user_favs M.ooc_notes_favs = user_favs
M.ooc_notes_maybes = user_maybes M.ooc_notes_maybes = user_maybes
M.ooc_notes_style = user_style M.ooc_notes_style = user_style
@@ -97,7 +84,6 @@
user.tf_mob_holder = null user.tf_mob_holder = null
else else
user.tf_mob_holder = M user.tf_mob_holder = M
//CHOMPEdit End
user.ooc_notes = target_ooc_notes user.ooc_notes = target_ooc_notes
user.ooc_notes_likes = target_likes user.ooc_notes_likes = target_likes
user.ooc_notes_dislikes = target_dislikes user.ooc_notes_dislikes = target_dislikes

View File

@@ -53,11 +53,9 @@ var/global/mob/living/carbon/human/dummy/mannequin/sleevemate_mob
ooc_notes = M.ooc_notes ooc_notes = M.ooc_notes
ooc_notes_likes = M.ooc_notes_likes ooc_notes_likes = M.ooc_notes_likes
ooc_notes_dislikes = M.ooc_notes_dislikes ooc_notes_dislikes = M.ooc_notes_dislikes
//CHOMPEdit Start
ooc_notes_favs = M.ooc_notes_favs ooc_notes_favs = M.ooc_notes_favs
ooc_notes_maybes = M.ooc_notes_maybes ooc_notes_maybes = M.ooc_notes_maybes
ooc_notes_style = M.ooc_notes_style ooc_notes_style = M.ooc_notes_style
//CHOMPEdit End
stored_mind = M.mind stored_mind = M.mind
M.ghostize() M.ghostize()
stored_mind.current = null stored_mind.current = null
@@ -69,11 +67,9 @@ var/global/mob/living/carbon/human/dummy/mannequin/sleevemate_mob
M.ooc_notes = ooc_notes M.ooc_notes = ooc_notes
M.ooc_notes_likes = ooc_notes_likes M.ooc_notes_likes = ooc_notes_likes
M.ooc_notes_dislikes = ooc_notes_dislikes M.ooc_notes_dislikes = ooc_notes_dislikes
//CHOMPEdit Start
M.ooc_notes_favs = ooc_notes_favs M.ooc_notes_favs = ooc_notes_favs
M.ooc_notes_maybes = ooc_notes_maybes M.ooc_notes_maybes = ooc_notes_maybes
M.ooc_notes_style = ooc_notes_style M.ooc_notes_style = ooc_notes_style
//CHOMPEdit End
clear_mind() clear_mind()

View File

@@ -329,13 +329,11 @@ GLOBAL_LIST_INIT(goon_speak_pugg_sound, list('sound/talksounds/goon/pugg.ogg', '
GLOBAL_LIST_INIT(goon_speak_roach_sound, list('sound/talksounds/goon/roach.ogg', 'sound/talksounds/goon/roach_ask.ogg', 'sound/talksounds/goon/roach_exclaim.ogg')) GLOBAL_LIST_INIT(goon_speak_roach_sound, list('sound/talksounds/goon/roach.ogg', 'sound/talksounds/goon/roach_ask.ogg', 'sound/talksounds/goon/roach_exclaim.ogg'))
GLOBAL_LIST_INIT(goon_speak_skelly_sound, list('sound/talksounds/goon/skelly.ogg', 'sound/talksounds/goon/skelly_ask.ogg', 'sound/talksounds/goon/skelly_exclaim.ogg')) GLOBAL_LIST_INIT(goon_speak_skelly_sound, list('sound/talksounds/goon/skelly.ogg', 'sound/talksounds/goon/skelly_ask.ogg', 'sound/talksounds/goon/skelly_exclaim.ogg'))
//CHOMPAdd Start: More sounds.
GLOBAL_LIST_INIT(wf_speak_lure_sound, list ('sound/talksounds/wf/lure_1.ogg', 'sound/talksounds/wf/lure_2.ogg', 'sound/talksounds/wf/lure_3.ogg', 'sound/talksounds/wf/lure_4.ogg', 'sound/talksounds/wf/lure_5.ogg')) GLOBAL_LIST_INIT(wf_speak_lure_sound, list ('sound/talksounds/wf/lure_1.ogg', 'sound/talksounds/wf/lure_2.ogg', 'sound/talksounds/wf/lure_3.ogg', 'sound/talksounds/wf/lure_4.ogg', 'sound/talksounds/wf/lure_5.ogg'))
GLOBAL_LIST_INIT(wf_speak_lyst_sound, list ('sound/talksounds/wf/lyst_1.ogg', 'sound/talksounds/wf/lyst_2.ogg', 'sound/talksounds/wf/lyst_3.ogg', 'sound/talksounds/wf/lyst_4.ogg', 'sound/talksounds/wf/lyst_5.ogg', 'sound/talksounds/wf/lyst_6.ogg')) GLOBAL_LIST_INIT(wf_speak_lyst_sound, list ('sound/talksounds/wf/lyst_1.ogg', 'sound/talksounds/wf/lyst_2.ogg', 'sound/talksounds/wf/lyst_3.ogg', 'sound/talksounds/wf/lyst_4.ogg', 'sound/talksounds/wf/lyst_5.ogg', 'sound/talksounds/wf/lyst_6.ogg'))
GLOBAL_LIST_INIT(wf_speak_void_sound, list ('sound/talksounds/wf/void_1.ogg', 'sound/talksounds/wf/void_2.ogg', 'sound/talksounds/wf/void_3.ogg')) GLOBAL_LIST_INIT(wf_speak_void_sound, list ('sound/talksounds/wf/void_1.ogg', 'sound/talksounds/wf/void_2.ogg', 'sound/talksounds/wf/void_3.ogg'))
GLOBAL_LIST_INIT(wf_speak_vomva_sound, list ('sound/talksounds/wf/vomva_1.ogg', 'sound/talksounds/wf/vomva_2.ogg', 'sound/talksounds/wf/vomva_3.ogg', 'sound/talksounds/wf/vomva_4.ogg')) GLOBAL_LIST_INIT(wf_speak_vomva_sound, list ('sound/talksounds/wf/vomva_1.ogg', 'sound/talksounds/wf/vomva_2.ogg', 'sound/talksounds/wf/vomva_3.ogg', 'sound/talksounds/wf/vomva_4.ogg'))
GLOBAL_LIST_INIT(xeno_speak_sound, list('sound/talksounds/xeno/xenotalk.ogg', 'sound/talksounds/xeno/xenotalk2.ogg', 'sound/talksounds/xeno/xenotalk3.ogg')) GLOBAL_LIST_INIT(xeno_speak_sound, list('sound/talksounds/xeno/xenotalk.ogg', 'sound/talksounds/xeno/xenotalk2.ogg', 'sound/talksounds/xeno/xenotalk3.ogg'))
//CHOMPAdd End
#define canine_sounds list("cough" = null, "sneeze" = null, "scream" = list('sound/voice/scream/canine/wolf_scream.ogg', 'sound/voice/scream/canine/wolf_scream2.ogg', 'sound/voice/scream/canine/wolf_scream3.ogg', 'sound/voice/scream/canine/wolf_scream4.ogg', 'sound/voice/scream/canine/wolf_scream5.ogg', 'sound/voice/scream/canine/wolf_scream6.ogg'), "pain" = list('sound/voice/pain/canine/wolf_pain.ogg', 'sound/voice/pain/canine/wolf_pain2.ogg', 'sound/voice/pain/canine/wolf_pain3.ogg', 'sound/voice/pain/canine/wolf_pain4.ogg'), "gasp" = list('sound/voice/gasp/canine/wolf_gasp.ogg'), "death" = list('sound/voice/death/canine/wolf_death1.ogg', 'sound/voice/death/canine/wolf_death2.ogg', 'sound/voice/death/canine/wolf_death3.ogg', 'sound/voice/death/canine/wolf_death4.ogg', 'sound/voice/death/canine/wolf_death5.ogg')) #define canine_sounds list("cough" = null, "sneeze" = null, "scream" = list('sound/voice/scream/canine/wolf_scream.ogg', 'sound/voice/scream/canine/wolf_scream2.ogg', 'sound/voice/scream/canine/wolf_scream3.ogg', 'sound/voice/scream/canine/wolf_scream4.ogg', 'sound/voice/scream/canine/wolf_scream5.ogg', 'sound/voice/scream/canine/wolf_scream6.ogg'), "pain" = list('sound/voice/pain/canine/wolf_pain.ogg', 'sound/voice/pain/canine/wolf_pain2.ogg', 'sound/voice/pain/canine/wolf_pain3.ogg', 'sound/voice/pain/canine/wolf_pain4.ogg'), "gasp" = list('sound/voice/gasp/canine/wolf_gasp.ogg'), "death" = list('sound/voice/death/canine/wolf_death1.ogg', 'sound/voice/death/canine/wolf_death2.ogg', 'sound/voice/death/canine/wolf_death3.ogg', 'sound/voice/death/canine/wolf_death4.ogg', 'sound/voice/death/canine/wolf_death5.ogg'))
#define feline_sounds list("cough" = null, "sneeze" = null, "scream" = list('sound/voice/scream/feline/feline_scream.ogg'), "pain" = list('sound/voice/pain/feline/feline_pain.ogg'), "gasp" = list('sound/voice/gasp/feline/feline_gasp.ogg'), "death" = list('sound/voice/death/feline/feline_death.ogg')) #define feline_sounds list("cough" = null, "sneeze" = null, "scream" = list('sound/voice/scream/feline/feline_scream.ogg'), "pain" = list('sound/voice/pain/feline/feline_pain.ogg'), "gasp" = list('sound/voice/gasp/feline/feline_gasp.ogg'), "death" = list('sound/voice/death/feline/feline_death.ogg'))

View File

@@ -62,13 +62,11 @@
. += "<br>" . += "<br>"
. += span_bold("Biological Sex:") + " <a href='byond://?src=\ref[src];bio_gender=1'><b>[gender2text(pref.biological_gender)]</b></a><br>" . += span_bold("Biological Sex:") + " <a href='byond://?src=\ref[src];bio_gender=1'><b>[gender2text(pref.biological_gender)]</b></a><br>"
. += span_bold("Pronouns:") + " <a href='byond://?src=\ref[src];id_gender=1'><b>[genders_to_pronoun_set[pref.identifying_gender]]</b></a><br>" . += span_bold("Pronouns:") + " <a href='byond://?src=\ref[src];id_gender=1'><b>[genders_to_pronoun_set[pref.identifying_gender]]</b></a><br>"
. += span_bold("Age:") + " <a href='byond://?src=\ref[src];age=1'>[pref.read_preference(/datum/preference/numeric/human/age)]</a> <b>Birthday:</b> <a href='byond://?src=\ref[src];bday_month=1'>[pref.read_preference(/datum/preference/numeric/human/bday_month)]</a><b>/</b><a href='byond://?src=\ref[src];bday_day=1'>[pref.read_preference(/datum/preference/numeric/human/bday_day)]</a> - <b>Announce?:</b> <a href='byond://?src=\ref[src];bday_announce=1'>[pref.read_preference(/datum/preference/toggle/human/bday_announce) ? "Yes" : "Disabled"]</a><br>" //ChompEDIT - DISABLE the announcement . += span_bold("Age:") + " <a href='byond://?src=\ref[src];age=1'>[pref.read_preference(/datum/preference/numeric/human/age)]</a> <b>Birthday:</b> <a href='byond://?src=\ref[src];bday_month=1'>[pref.read_preference(/datum/preference/numeric/human/bday_month)]</a><b>/</b><a href='byond://?src=\ref[src];bday_day=1'>[pref.read_preference(/datum/preference/numeric/human/bday_day)]</a> - <b>Announce?:</b> <a href='byond://?src=\ref[src];bday_announce=1'>[pref.read_preference(/datum/preference/toggle/human/bday_announce) ? "Yes" : "Disabled"]</a><br>"
. += span_bold("Spawn Point:") + " <a href='byond://?src=\ref[src];spawnpoint=1'>[pref.read_preference(/datum/preference/choiced/living/spawnpoint)]</a><br>" . += span_bold("Spawn Point:") + " <a href='byond://?src=\ref[src];spawnpoint=1'>[pref.read_preference(/datum/preference/choiced/living/spawnpoint)]</a><br>"
if(CONFIG_GET(flag/allow_metadata)) if(CONFIG_GET(flag/allow_metadata))
//CHOMPEdit Start
. += span_bold("OOC Notes: <a href='byond://?src=\ref[src];edit_ooc_notes=1'>Edit</a><a href='byond://?src=\ref[src];edit_ooc_note_favs=1'>Favs</a><a href='byond://?src=\ref[src];edit_ooc_note_likes=1'>Likes</a><a href='byond://?src=\ref[src];edit_ooc_note_maybes=1'>Maybes</a><a href='byond://?src=\ref[src];edit_ooc_note_dislikes=1'>Dislikes</a>") + "<br>" . += span_bold("OOC Notes: <a href='byond://?src=\ref[src];edit_ooc_notes=1'>Edit</a><a href='byond://?src=\ref[src];edit_ooc_note_favs=1'>Favs</a><a href='byond://?src=\ref[src];edit_ooc_note_likes=1'>Likes</a><a href='byond://?src=\ref[src];edit_ooc_note_maybes=1'>Maybes</a><a href='byond://?src=\ref[src];edit_ooc_note_dislikes=1'>Dislikes</a>") + "<br>"
. += "Detailed field or short list system? <a href='byond://?src=\ref[src];edit_ooc_note_style=1'>[pref.read_preference(/datum/preference/toggle/living/ooc_notes_style) ? "Lists" : "Fields"]</a><br><br>" . += "Detailed field or short list system? <a href='byond://?src=\ref[src];edit_ooc_note_style=1'>[pref.read_preference(/datum/preference/toggle/living/ooc_notes_style) ? "Lists" : "Fields"]</a><br><br>"
//CHOMPEdit End
. = jointext(.,null) . = jointext(.,null)
/datum/category_item/player_setup_item/general/basic/OnTopic(var/href,var/list/href_list, var/mob/user) /datum/category_item/player_setup_item/general/basic/OnTopic(var/href,var/list/href_list, var/mob/user)
@@ -205,15 +203,14 @@
if(new_metadata == "!clear") if(new_metadata == "!clear")
new_metadata = "" new_metadata = ""
pref.update_preference_by_type(/datum/preference/text/living/ooc_notes_dislikes, new_metadata) pref.update_preference_by_type(/datum/preference/text/living/ooc_notes_dislikes, new_metadata)
//CHOMPEdit Start
else if(href_list["edit_ooc_note_favs"]) else if(href_list["edit_ooc_note_favs"])
var/new_metadata = strip_html_simple(tgui_input_text(user, "Enter any information you'd like others to see relating to your FAVOURITE roleplay preferences. This will not be saved permanently unless you click save in the Character Setup panel! Type \"!clear\" to empty.", "Game Preference" , html_decode(pref.read_preference(/datum/preference/text/living/ooc_notes_favs)), multiline = TRUE, prevent_enter = TRUE)) //ChompEDIT - usr removal var/new_metadata = strip_html_simple(tgui_input_text(user, "Enter any information you'd like others to see relating to your FAVOURITE roleplay preferences. This will not be saved permanently unless you click save in the Character Setup panel! Type \"!clear\" to empty.", "Game Preference" , html_decode(pref.read_preference(/datum/preference/text/living/ooc_notes_favs)), multiline = TRUE, prevent_enter = TRUE))
if(new_metadata && CanUseTopic(user)) if(new_metadata && CanUseTopic(user))
if(new_metadata == "!clear") if(new_metadata == "!clear")
new_metadata = "" new_metadata = ""
pref.update_preference_by_type(/datum/preference/text/living/ooc_notes_favs, new_metadata) pref.update_preference_by_type(/datum/preference/text/living/ooc_notes_favs, new_metadata)
else if(href_list["edit_ooc_note_maybes"]) else if(href_list["edit_ooc_note_maybes"])
var/new_metadata = strip_html_simple(tgui_input_text(user, "Enter any information you'd like others to see relating to your MAYBE roleplay preferences. This will not be saved permanently unless you click save in the Character Setup panel! Type \"!clear\" to empty.", "Game Preference" , html_decode(pref.read_preference(/datum/preference/text/living/ooc_notes_maybes)), multiline = TRUE, prevent_enter = TRUE)) //ChompEDIT - usr removal var/new_metadata = strip_html_simple(tgui_input_text(user, "Enter any information you'd like others to see relating to your MAYBE roleplay preferences. This will not be saved permanently unless you click save in the Character Setup panel! Type \"!clear\" to empty.", "Game Preference" , html_decode(pref.read_preference(/datum/preference/text/living/ooc_notes_maybes)), multiline = TRUE, prevent_enter = TRUE))
if(new_metadata && CanUseTopic(user)) if(new_metadata && CanUseTopic(user))
if(new_metadata == "!clear") if(new_metadata == "!clear")
new_metadata = "" new_metadata = ""
@@ -221,7 +218,6 @@
else if(href_list["edit_ooc_note_style"]) else if(href_list["edit_ooc_note_style"])
pref.update_preference_by_type(/datum/preference/toggle/living/ooc_notes_style, !pref.read_preference(/datum/preference/toggle/living/ooc_notes_style)) pref.update_preference_by_type(/datum/preference/toggle/living/ooc_notes_style, !pref.read_preference(/datum/preference/toggle/living/ooc_notes_style))
return TOPIC_REFRESH return TOPIC_REFRESH
//CHOMPEdit End
return ..() return ..()
/datum/category_item/player_setup_item/general/basic/proc/get_genders() /datum/category_item/player_setup_item/general/basic/proc/get_genders()

View File

@@ -33,9 +33,7 @@
pref.voice_sound = save_data["voice_sound"] pref.voice_sound = save_data["voice_sound"]
pref.custom_speech_bubble = save_data["custom_speech_bubble"] pref.custom_speech_bubble = save_data["custom_speech_bubble"]
pref.custom_footstep = save_data["custom_footstep"] pref.custom_footstep = save_data["custom_footstep"]
//CHOMPAdd Start
pref.species_sound = save_data["species_sound"] pref.species_sound = save_data["species_sound"]
//CHOMPAdd End
/datum/category_item/player_setup_item/vore/size/save_character(list/save_data) /datum/category_item/player_setup_item/vore/size/save_character(list/save_data)
save_data["size_multiplier"] = pref.size_multiplier save_data["size_multiplier"] = pref.size_multiplier
@@ -48,9 +46,7 @@
save_data["voice_sound"] = pref.voice_sound save_data["voice_sound"] = pref.voice_sound
save_data["custom_speech_bubble"] = pref.custom_speech_bubble save_data["custom_speech_bubble"] = pref.custom_speech_bubble
save_data["custom_footstep"] = pref.custom_footstep save_data["custom_footstep"] = pref.custom_footstep
//CHOMPAdd Start
save_data["species_sound"] = pref.species_sound save_data["species_sound"] = pref.species_sound
//CHOMPAdd End
/datum/category_item/player_setup_item/vore/size/sanitize_character() /datum/category_item/player_setup_item/vore/size/sanitize_character()
pref.weight_vr = sanitize_integer(pref.weight_vr, WEIGHT_MIN, WEIGHT_MAX, initial(pref.weight_vr)) pref.weight_vr = sanitize_integer(pref.weight_vr, WEIGHT_MIN, WEIGHT_MAX, initial(pref.weight_vr))
@@ -59,16 +55,16 @@
pref.fuzzy = sanitize_integer(pref.fuzzy, 0, 1, initial(pref.fuzzy)) pref.fuzzy = sanitize_integer(pref.fuzzy, 0, 1, initial(pref.fuzzy))
pref.offset_override = sanitize_integer(pref.offset_override, 0, 1, initial(pref.offset_override)) pref.offset_override = sanitize_integer(pref.offset_override, 0, 1, initial(pref.offset_override))
if(pref.voice_freq != 0) if(pref.voice_freq != 0)
pref.voice_freq = sanitize_integer(pref.voice_freq, MIN_VOICE_FREQ, MAX_VOICE_FREQ, initial(pref.voice_freq)) //CHOMPEdit pref.voice_freq = sanitize_integer(pref.voice_freq, MIN_VOICE_FREQ, MAX_VOICE_FREQ, initial(pref.voice_freq))
if(pref.size_multiplier == null || pref.size_multiplier < RESIZE_TINY || pref.size_multiplier > RESIZE_HUGE) if(pref.size_multiplier == null || pref.size_multiplier < RESIZE_TINY || pref.size_multiplier > RESIZE_HUGE)
pref.size_multiplier = initial(pref.size_multiplier) pref.size_multiplier = initial(pref.size_multiplier)
if(!(pref.custom_speech_bubble in GLOB.selectable_speech_bubbles)) if(!(pref.custom_speech_bubble in GLOB.selectable_speech_bubbles))
pref.custom_speech_bubble = "default" pref.custom_speech_bubble = "default"
if(!(pref.custom_footstep)) if(!(pref.custom_footstep))
pref.custom_footstep = "Default" pref.custom_footstep = "Default"
// var/datum/species/selected_species = GLOB.all_species[pref.species] // CHOMPEdit // var/datum/species/selected_species = GLOB.all_species[pref.species]
if(!(pref.species_sound)) // CHOMPEdit // && selected_species.selects_bodytype if(!(pref.species_sound))
pref.species_sound = "Unset" // CHOMPEdit - otherwise, we leave this as null or w/e the default is pref.species_sound = "Unset"
/datum/category_item/player_setup_item/vore/size/copy_to_mob(var/mob/living/carbon/human/character) /datum/category_item/player_setup_item/vore/size/copy_to_mob(var/mob/living/carbon/human/character)
character.weight = pref.weight_vr character.weight = pref.weight_vr
@@ -79,7 +75,6 @@
character.voice_freq = pref.voice_freq character.voice_freq = pref.voice_freq
character.resize(pref.size_multiplier, animate = FALSE, ignore_prefs = TRUE) character.resize(pref.size_multiplier, animate = FALSE, ignore_prefs = TRUE)
//CHOMPEDIT Global voice lookup
if(!pref.voice_sound) if(!pref.voice_sound)
character.voice_sounds_list = GLOB.talk_sound character.voice_sounds_list = GLOB.talk_sound
else else
@@ -92,17 +87,14 @@
. += span_bold("Scale:") + " <a href='byond://?src=\ref[src];size_multiplier=1'>[round(pref.size_multiplier*100)]%</a><br>" . += span_bold("Scale:") + " <a href='byond://?src=\ref[src];size_multiplier=1'>[round(pref.size_multiplier*100)]%</a><br>"
. += span_bold("Scaled Appearance:") + " <a [pref.fuzzy ? "" : ""] href='byond://?src=\ref[src];toggle_fuzzy=1'><b>[pref.fuzzy ? "Fuzzy" : "Sharp"]</b></a><br>" . += span_bold("Scaled Appearance:") + " <a [pref.fuzzy ? "" : ""] href='byond://?src=\ref[src];toggle_fuzzy=1'><b>[pref.fuzzy ? "Fuzzy" : "Sharp"]</b></a><br>"
. += span_bold("Scaling Center:") + " <a [pref.offset_override ? "" : ""] href='byond://?src=\ref[src];toggle_offset_override=1'><b>[pref.offset_override ? "Odd" : "Even"]</b></a><br>" . += span_bold("Scaling Center:") + " <a [pref.offset_override ? "" : ""] href='byond://?src=\ref[src];toggle_offset_override=1'><b>[pref.offset_override ? "Odd" : "Even"]</b></a><br>"
. += "<br>" // CHOMPEdit: Fancy:tm: . += "<br>"
. += span_bold("Mob Speech/Noise Customization") + "" // CHOMPEdit: Fancy:tm: . += span_bold("Mob Speech/Noise Customization") + ""
. += "<br>" // CHOMPEdit . += "<br>"
. += span_bold("Voice Frequency:") + " <a href='byond://?src=\ref[src];voice_freq=1'>[pref.voice_freq]</a><br>" . += span_bold("Voice Frequency:") + " <a href='byond://?src=\ref[src];voice_freq=1'>[pref.voice_freq]</a><br>"
. += span_bold("Voice Sounds:") + " <a href='byond://?src=\ref[src];voice_sounds_list=1'>[pref.voice_sound]</a><br>" . += span_bold("Voice Sounds:") + " <a href='byond://?src=\ref[src];voice_sounds_list=1'>[pref.voice_sound]</a><br>"
. += "<a href='byond://?src=\ref[src];voice_test=1'><b>Test Selected Voice</b></a><br>" . += "<a href='byond://?src=\ref[src];voice_test=1'><b>Test Selected Voice</b></a><br>"
. += span_bold("Custom Speech Bubble:") + " <a href='byond://?src=\ref[src];customize_speech_bubble=1'>[pref.custom_speech_bubble]</a><br>" . += span_bold("Custom Speech Bubble:") + " <a href='byond://?src=\ref[src];customize_speech_bubble=1'>[pref.custom_speech_bubble]</a><br>"
. += span_bold("Custom Footstep Sounds:") + "<a href='byond://?src=\ref[src];customize_footsteps=1'>[pref.custom_footstep]</a><br>" . += span_bold("Custom Footstep Sounds:") + "<a href='byond://?src=\ref[src];customize_footsteps=1'>[pref.custom_footstep]</a><br>"
// CHOMPEdit Start: Pain/Scream/Death Custom Sounds
// var/datum/species/selected_species = GLOB.all_species[pref.species]
// if(selected_species.selects_bodytype)
. += "<br>" . += "<br>"
. += span_bold("Species Sounds:") + " <a href='byond://?src=\ref[src];species_sound_options=1'>[pref.species_sound]</a><br>" . += span_bold("Species Sounds:") + " <a href='byond://?src=\ref[src];species_sound_options=1'>[pref.species_sound]</a><br>"
. += "<a href='byond://?src=\ref[src];cough_test=1'><b>Test Cough Sounds</b></a><br>" . += "<a href='byond://?src=\ref[src];cough_test=1'><b>Test Cough Sounds</b></a><br>"
@@ -111,7 +103,6 @@
. += "<a href='byond://?src=\ref[src];pain_test=1'><b>Test Pain Sounds</b></a><br>" . += "<a href='byond://?src=\ref[src];pain_test=1'><b>Test Pain Sounds</b></a><br>"
. += "<a href='byond://?src=\ref[src];gasp_test=1'><b>Test Gasp Sounds</b></a><br>" . += "<a href='byond://?src=\ref[src];gasp_test=1'><b>Test Gasp Sounds</b></a><br>"
. += "<a href='byond://?src=\ref[src];death_test=1'><b>Test Death Sounds</b></a><br>" . += "<a href='byond://?src=\ref[src];death_test=1'><b>Test Death Sounds</b></a><br>"
// CHOMPEdit End: Pain/Scream/Death Custom Sounds
. += "<br>" . += "<br>"
. += span_bold("Relative Weight:") + " <a href='byond://?src=\ref[src];weight=1'>[pref.weight_vr]</a><br>" . += span_bold("Relative Weight:") + " <a href='byond://?src=\ref[src];weight=1'>[pref.weight_vr]</a><br>"
. += span_bold("Weight Gain Rate:") + " <a href='byond://?src=\ref[src];weight_gain=1'>[pref.weight_gain]</a><br>" . += span_bold("Weight Gain Rate:") + " <a href='byond://?src=\ref[src];weight_gain=1'>[pref.weight_gain]</a><br>"
@@ -178,7 +169,7 @@
return return
choice = preset_voice_freqs[choice] choice = preset_voice_freqs[choice]
if(choice == 0) if(choice == 0)
pref.voice_freq = 42500 //CHOMPEdit pref.voice_freq = 42500
return TOPIC_REFRESH return TOPIC_REFRESH
else if(choice == 1) else if(choice == 1)
choice = tgui_input_number(user, "Choose your character's voice frequency, ranging from [MIN_VOICE_FREQ] to [MAX_VOICE_FREQ]", "Custom Voice Frequency", null, MAX_VOICE_FREQ, MIN_VOICE_FREQ) choice = tgui_input_number(user, "Choose your character's voice frequency, ranging from [MIN_VOICE_FREQ] to [MAX_VOICE_FREQ]", "Custom Voice Frequency", null, MAX_VOICE_FREQ, MIN_VOICE_FREQ)
@@ -205,12 +196,12 @@
"goon speak pugg", "goon speak pugg",
"goon speak roach", "goon speak roach",
"goon speak skelly", "goon speak skelly",
"xeno speak") // CHOMPedit "xeno speak")
var/choice = tgui_input_list(user, "Which set of sounds would you like to use for your character's speech sounds?", "Voice Sounds", possible_voice_types) var/choice = tgui_input_list(user, "Which set of sounds would you like to use for your character's speech sounds?", "Voice Sounds", possible_voice_types)
if(!pref.voice_sound) if(!pref.voice_sound)
pref.voice_sound = "goon speak 1" //CHOMPEdit - Defaults voice to a less jarring sound pref.voice_sound = "goon speak 1"
else if(!choice) else if(!choice)
return TOPIC_REFRESH // CHOMPEdit return TOPIC_REFRESH
else else
pref.voice_sound = choice pref.voice_sound = choice
return TOPIC_REFRESH return TOPIC_REFRESH
@@ -260,15 +251,12 @@
S = sound(pick(GLOB.goon_speak_roach_sound)) S = sound(pick(GLOB.goon_speak_roach_sound))
if("goon speak skelly") if("goon speak skelly")
S = sound(pick(GLOB.goon_speak_skelly_sound)) S = sound(pick(GLOB.goon_speak_skelly_sound))
//CHOMPedit start.
if("xeno speak") if("xeno speak")
S = sound(pick(GLOB.xeno_speak_sound)) S = sound(pick(GLOB.xeno_speak_sound))
//CHOMPedit end.
if(S) if(S)
S.frequency = pick(pref.voice_freq) S.frequency = pick(pref.voice_freq)
S.volume = 50 S.volume = 50
SEND_SOUND(user, S) SEND_SOUND(user, S)
// CHOMPEdit Start: Pain/Scream/Death sounds
else if(href_list["species_sound_options"]) // You shouldn't be able to see this option if you don't have the option to select a custom icon base, so we don't need to re-check for safety here. else if(href_list["species_sound_options"]) // You shouldn't be able to see this option if you don't have the option to select a custom icon base, so we don't need to re-check for safety here.
var/list/possible_species_sound_types = species_sound_map var/list/possible_species_sound_types = species_sound_map
var/choice = tgui_input_list(user, "Which set of sounds would you like to use for your character's species sounds? (Cough, Sneeze, Scream, Pain, Gasp, Death)", "Species Sounds", possible_species_sound_types) var/choice = tgui_input_list(user, "Which set of sounds would you like to use for your character's species sounds? (Cough, Sneeze, Scream, Pain, Gasp, Death)", "Species Sounds", possible_species_sound_types)
@@ -367,7 +355,6 @@
S.volume = 20 S.volume = 20
SEND_SOUND(user, S) SEND_SOUND(user, S)
return TOPIC_REFRESH return TOPIC_REFRESH
// CHOMPEdit End
return ..(); return ..();
#undef WEIGHT_CHANGE_MIN #undef WEIGHT_CHANGE_MIN

View File

@@ -5,10 +5,8 @@
/datum/category_item/player_setup_item/vore/misc/load_character(list/save_data) /datum/category_item/player_setup_item/vore/misc/load_character(list/save_data)
pref.show_in_directory = save_data["show_in_directory"] pref.show_in_directory = save_data["show_in_directory"]
pref.directory_tag = save_data["directory_tag"] pref.directory_tag = save_data["directory_tag"]
//CHOMPAdd Start
pref.directory_gendertag = save_data["directory_gendertag"] pref.directory_gendertag = save_data["directory_gendertag"]
pref.directory_sexualitytag = save_data["directory_sexualitytag"] pref.directory_sexualitytag = save_data["directory_sexualitytag"]
//CHOMPAdd End
pref.directory_erptag = save_data["directory_erptag"] pref.directory_erptag = save_data["directory_erptag"]
pref.directory_ad = save_data["directory_ad"] pref.directory_ad = save_data["directory_ad"]
pref.sensorpref = save_data["sensorpref"] pref.sensorpref = save_data["sensorpref"]
@@ -19,10 +17,8 @@
/datum/category_item/player_setup_item/vore/misc/save_character(list/save_data) /datum/category_item/player_setup_item/vore/misc/save_character(list/save_data)
save_data["show_in_directory"] = pref.show_in_directory save_data["show_in_directory"] = pref.show_in_directory
save_data["directory_tag"] = pref.directory_tag save_data["directory_tag"] = pref.directory_tag
//CHOMPAdd Start
save_data["directory_gendertag"] = pref.directory_gendertag save_data["directory_gendertag"] = pref.directory_gendertag
save_data["directory_sexualitytag"] = pref.directory_sexualitytag save_data["directory_sexualitytag"] = pref.directory_sexualitytag
//CHOMPAdd End
save_data["directory_erptag"] = pref.directory_erptag save_data["directory_erptag"] = pref.directory_erptag
save_data["directory_ad"] = pref.directory_ad save_data["directory_ad"] = pref.directory_ad
save_data["sensorpref"] = pref.sensorpref save_data["sensorpref"] = pref.sensorpref
@@ -41,8 +37,8 @@
/datum/category_item/player_setup_item/vore/misc/sanitize_character() /datum/category_item/player_setup_item/vore/misc/sanitize_character()
pref.show_in_directory = sanitize_integer(pref.show_in_directory, 0, 1, initial(pref.show_in_directory)) pref.show_in_directory = sanitize_integer(pref.show_in_directory, 0, 1, initial(pref.show_in_directory))
pref.directory_tag = sanitize_inlist(pref.directory_tag, GLOB.char_directory_tags, initial(pref.directory_tag)) pref.directory_tag = sanitize_inlist(pref.directory_tag, GLOB.char_directory_tags, initial(pref.directory_tag))
pref.directory_gendertag = sanitize_inlist(pref.directory_gendertag, GLOB.char_directory_gendertags, initial(pref.directory_gendertag)) // CHOMPStation Edit: Character Directory Update pref.directory_gendertag = sanitize_inlist(pref.directory_gendertag, GLOB.char_directory_gendertags, initial(pref.directory_gendertag))
pref.directory_sexualitytag = sanitize_inlist(pref.directory_sexualitytag, GLOB.char_directory_sexualitytags, initial(pref.directory_sexualitytag)) // CHOMPStation Edit: Character Directory Update pref.directory_sexualitytag = sanitize_inlist(pref.directory_sexualitytag, GLOB.char_directory_sexualitytags, initial(pref.directory_sexualitytag))
pref.directory_erptag = sanitize_inlist(pref.directory_erptag, GLOB.char_directory_erptags, initial(pref.directory_erptag)) pref.directory_erptag = sanitize_inlist(pref.directory_erptag, GLOB.char_directory_erptags, initial(pref.directory_erptag))
pref.sensorpref = sanitize_integer(pref.sensorpref, 1, GLOB.sensorpreflist.len, initial(pref.sensorpref)) pref.sensorpref = sanitize_integer(pref.sensorpref, 1, GLOB.sensorpreflist.len, initial(pref.sensorpref))
pref.capture_crystal = sanitize_integer(pref.capture_crystal, 0, 1, initial(pref.capture_crystal)) pref.capture_crystal = sanitize_integer(pref.capture_crystal, 0, 1, initial(pref.capture_crystal))
@@ -53,8 +49,8 @@
. += "<br>" . += "<br>"
. += span_bold("Appear in Character Directory:") + " <a [pref.show_in_directory ? "class='linkOn'" : ""] href='byond://?src=\ref[src];toggle_show_in_directory=1'><b>[pref.show_in_directory ? "Yes" : "No"]</b></a><br>" . += span_bold("Appear in Character Directory:") + " <a [pref.show_in_directory ? "class='linkOn'" : ""] href='byond://?src=\ref[src];toggle_show_in_directory=1'><b>[pref.show_in_directory ? "Yes" : "No"]</b></a><br>"
. += span_bold("Character Directory Vore Tag:") + " <a href='byond://?src=\ref[src];directory_tag=1'><b>[pref.directory_tag]</b></a><br>" . += span_bold("Character Directory Vore Tag:") + " <a href='byond://?src=\ref[src];directory_tag=1'><b>[pref.directory_tag]</b></a><br>"
. += span_bold("Character Directory Gender:") + " <a href='byond://?src=\ref[src];directory_gendertag=1'><b>[pref.directory_gendertag]</b></a><br>" // CHOMPStation Edit: Character Directory Update . += span_bold("Character Directory Gender:") + " <a href='byond://?src=\ref[src];directory_gendertag=1'><b>[pref.directory_gendertag]</b></a><br>"
. += span_bold("Character Directory Sexuality:") + " <a href='byond://?src=\ref[src];directory_sexualitytag=1'><b>[pref.directory_sexualitytag]</b></a><br>" // CHOMPStation Edit: Character Directory Update . += span_bold("Character Directory Sexuality:") + " <a href='byond://?src=\ref[src];directory_sexualitytag=1'><b>[pref.directory_sexualitytag]</b></a><br>"
. += span_bold("Character Directory ERP Tag:") + " <a href='byond://?src=\ref[src];directory_erptag=1'><b>[pref.directory_erptag]</b></a><br>" . += span_bold("Character Directory ERP Tag:") + " <a href='byond://?src=\ref[src];directory_erptag=1'><b>[pref.directory_erptag]</b></a><br>"
. += span_bold("Character Directory Advertisement:") + " <a href='byond://?src=\ref[src];directory_ad=1'><b>Set Directory Ad</b></a><br>" . += span_bold("Character Directory Advertisement:") + " <a href='byond://?src=\ref[src];directory_ad=1'><b>Set Directory Ad</b></a><br>"
. += span_bold("Suit Sensors Preference:") + " <a [pref.sensorpref ? "" : ""] href='byond://?src=\ref[src];toggle_sensor_setting=1'><b>[GLOB.sensorpreflist[pref.sensorpref]]</b></a><br>" . += span_bold("Suit Sensors Preference:") + " <a [pref.sensorpref ? "" : ""] href='byond://?src=\ref[src];toggle_sensor_setting=1'><b>[GLOB.sensorpreflist[pref.sensorpref]]</b></a><br>"
@@ -74,7 +70,6 @@
return return
pref.directory_tag = new_tag pref.directory_tag = new_tag
return TOPIC_REFRESH return TOPIC_REFRESH
// CHOMPStation Edit Start: Directory Update
else if(href_list["directory_gendertag"]) else if(href_list["directory_gendertag"])
var/new_gendertag = tgui_input_list(user, "Pick a new Gender tag for the character directory. This is YOUR gender, not what you prefer.", "Character Gender Tag", GLOB.char_directory_gendertags, pref.directory_gendertag) var/new_gendertag = tgui_input_list(user, "Pick a new Gender tag for the character directory. This is YOUR gender, not what you prefer.", "Character Gender Tag", GLOB.char_directory_gendertags, pref.directory_gendertag)
if(!new_gendertag) if(!new_gendertag)
@@ -87,7 +82,6 @@
return return
pref.directory_sexualitytag = new_sexualitytag pref.directory_sexualitytag = new_sexualitytag
return TOPIC_REFRESH return TOPIC_REFRESH
// CHOMPStation Edit End: Directory Update
else if(href_list["directory_erptag"]) else if(href_list["directory_erptag"])
var/new_erptag = tgui_input_list(user, "Pick a new ERP tag for the character directory", "Character ERP Tag", GLOB.char_directory_erptags, pref.directory_erptag) var/new_erptag = tgui_input_list(user, "Pick a new ERP tag for the character directory", "Character ERP Tag", GLOB.char_directory_erptags, pref.directory_erptag)
if(!new_erptag) if(!new_erptag)

View File

@@ -614,11 +614,9 @@ var/list/preferences_datums = list()
character.ooc_notes = read_preference(/datum/preference/text/living/ooc_notes) character.ooc_notes = read_preference(/datum/preference/text/living/ooc_notes)
character.ooc_notes_dislikes = read_preference(/datum/preference/text/living/ooc_notes_dislikes) character.ooc_notes_dislikes = read_preference(/datum/preference/text/living/ooc_notes_dislikes)
character.ooc_notes_likes = read_preference(/datum/preference/text/living/ooc_notes_likes) character.ooc_notes_likes = read_preference(/datum/preference/text/living/ooc_notes_likes)
// CHOMPAdd Start
character.ooc_notes_favs = read_preference(/datum/preference/text/living/ooc_notes_favs) character.ooc_notes_favs = read_preference(/datum/preference/text/living/ooc_notes_favs)
character.ooc_notes_maybes = read_preference(/datum/preference/text/living/ooc_notes_maybes) character.ooc_notes_maybes = read_preference(/datum/preference/text/living/ooc_notes_maybes)
character.ooc_notes_style = read_preference(/datum/preference/toggle/living/ooc_notes_style) character.ooc_notes_style = read_preference(/datum/preference/toggle/living/ooc_notes_style)
// CHOMPAdd End
character.weight = weight_vr character.weight = weight_vr
character.weight_gain = weight_gain character.weight_gain = weight_gain

View File

@@ -115,7 +115,6 @@
target.ooc_notes_dislikes = value target.ooc_notes_dislikes = value
return return
// CHOMP specific, but added here not to forget
/datum/preference/toggle/living/ooc_notes_style /datum/preference/toggle/living/ooc_notes_style
category = PREFERENCE_CATEGORY_MANUALLY_RENDERED category = PREFERENCE_CATEGORY_MANUALLY_RENDERED
savefile_key = "OOC_Notes_System" savefile_key = "OOC_Notes_System"
@@ -124,7 +123,7 @@
can_randomize = FALSE can_randomize = FALSE
/datum/preference/toggle/living/ooc_notes_style/apply_to_living(mob/living/target, value) /datum/preference/toggle/living/ooc_notes_style/apply_to_living(mob/living/target, value)
target.ooc_notes_style = value // CHOMPEnable target.ooc_notes_style = value
return return
/datum/preference/text/living/ooc_notes_maybes /datum/preference/text/living/ooc_notes_maybes
@@ -135,7 +134,7 @@
can_randomize = FALSE can_randomize = FALSE
/datum/preference/text/living/ooc_notes_maybes/apply_to_living(mob/living/target, value) /datum/preference/text/living/ooc_notes_maybes/apply_to_living(mob/living/target, value)
target.ooc_notes_maybes = value // CHOMPEnable target.ooc_notes_maybes = value
return return
/datum/preference/text/living/ooc_notes_favs /datum/preference/text/living/ooc_notes_favs
@@ -146,7 +145,7 @@
can_randomize = FALSE can_randomize = FALSE
/datum/preference/text/living/ooc_notes_favs/apply_to_living(mob/living/target, value) /datum/preference/text/living/ooc_notes_favs/apply_to_living(mob/living/target, value)
target.ooc_notes_favs = value // CHOMPEnable target.ooc_notes_favs = value
return return
/datum/preference/toggle/human/name_is_always_random /datum/preference/toggle/human/name_is_always_random

View File

@@ -106,3 +106,13 @@
/datum/preference/text/lastchangelog/is_accessible(datum/preferences/preferences) /datum/preference/text/lastchangelog/is_accessible(datum/preferences/preferences)
..() ..()
return FALSE return FALSE
/datum/preference/toggle/random_emote_pitch
category = PREFERENCE_CATEGORY_GAME_PREFERENCES
savefile_key = "EMOTE_VARY"
savefile_identifier = PREFERENCE_PLAYER
/datum/preference/toggle/autotranscore
category = PREFERENCE_CATEGORY_GAME_PREFERENCES
savefile_key = "AUTOTRANSCORE"
savefile_identifier = PREFERENCE_PLAYER

View File

@@ -2,10 +2,8 @@
var/show_in_directory = 1 //Show in Character Directory var/show_in_directory = 1 //Show in Character Directory
var/directory_tag = "Unset" //Sorting tag to use in character directory var/directory_tag = "Unset" //Sorting tag to use in character directory
var/directory_erptag = "Unset" //ditto, but for non-vore scenes var/directory_erptag = "Unset" //ditto, but for non-vore scenes
// CHOMPStation Edit Start: Directory Update
var/directory_gendertag = "Unset" // Gender stuff! var/directory_gendertag = "Unset" // Gender stuff!
var/directory_sexualitytag = "Unset" // Sexuality! var/directory_sexualitytag = "Unset" // Sexuality!
// CHOMPStation Edit End: Directory Update
var/directory_ad = "" //Advertisement stuff to show in character directory. var/directory_ad = "" //Advertisement stuff to show in character directory.
var/sensorpref = 5 //Set character's suit sensor level var/sensorpref = 5 //Set character's suit sensor level
var/capture_crystal = 1 //Whether or not someone is able to be caught with capture crystals var/capture_crystal = 1 //Whether or not someone is able to be caught with capture crystals

View File

@@ -34,16 +34,16 @@ GLOBAL_DATUM(character_directory, /datum/character_directory)
data["personalVisibility"] = user.mind.show_in_directory data["personalVisibility"] = user.mind.show_in_directory
data["personalTag"] = user.mind.directory_tag || "Unset" data["personalTag"] = user.mind.directory_tag || "Unset"
data["personalErpTag"] = user.mind.directory_erptag || "Unset" data["personalErpTag"] = user.mind.directory_erptag || "Unset"
data["personalEventTag"] = GLOB.vantag_choices_list[user.mind.vantag_preference] //CHOMPEdit data["personalEventTag"] = GLOB.vantag_choices_list[user.mind.vantag_preference]
data["personalGenderTag"] = user.mind.directory_gendertag || "Unset" // CHOMPStation Edit: Character Directory Update data["personalGenderTag"] = user.mind.directory_gendertag || "Unset"
data["personalSexualityTag"] = user.mind.directory_sexualitytag || "Unset" // CHOMPStation Edit: Character Directory Update data["personalSexualityTag"] = user.mind.directory_sexualitytag || "Unset"
else if (user?.client?.prefs) else if (user?.client?.prefs)
data["personalVisibility"] = user.client.prefs.show_in_directory data["personalVisibility"] = user.client.prefs.show_in_directory
data["personalTag"] = user.client.prefs.directory_tag || "Unset" data["personalTag"] = user.client.prefs.directory_tag || "Unset"
data["personalErpTag"] = user.client.prefs.directory_erptag || "Unset" data["personalErpTag"] = user.client.prefs.directory_erptag || "Unset"
data["personalEventTag"] = GLOB.vantag_choices_list[user.client.prefs.vantag_preference] //CHOMPEdit data["personalEventTag"] = GLOB.vantag_choices_list[user.client.prefs.vantag_preference]
data["personalGenderTag"] = user.client.prefs.directory_gendertag || "Unset" // CHOMPStation Edit: Character Directory Update data["personalGenderTag"] = user.client.prefs.directory_gendertag || "Unset"
data["personalSexualityTag"] = user.client.prefs.directory_sexualitytag || "Unset" // CHOMPStation Edit: Character Directory Update data["personalSexualityTag"] = user.client.prefs.directory_sexualitytag || "Unset"
return data return data
@@ -61,7 +61,6 @@ GLOBAL_DATUM(character_directory, /datum/character_directory)
var/name = null var/name = null
var/species = null var/species = null
var/ooc_notes = null var/ooc_notes = null
//CHOMPEdit Start
var/ooc_notes_favs = null var/ooc_notes_favs = null
var/ooc_notes_likes = null var/ooc_notes_likes = null
var/ooc_notes_maybes = null var/ooc_notes_maybes = null
@@ -70,7 +69,6 @@ GLOBAL_DATUM(character_directory, /datum/character_directory)
var/gendertag = null var/gendertag = null
var/sexualitytag = null var/sexualitytag = null
var/eventtag = GLOB.vantag_choices_list[VANTAG_NONE] var/eventtag = GLOB.vantag_choices_list[VANTAG_NONE]
//CHOMPEdit End
var/flavor_text = null var/flavor_text = null
var/tag var/tag
var/erptag var/erptag
@@ -79,24 +77,19 @@ GLOBAL_DATUM(character_directory, /datum/character_directory)
tag = C.mob.mind.directory_tag || "Unset" tag = C.mob.mind.directory_tag || "Unset"
erptag = C.mob.mind.directory_erptag || "Unset" erptag = C.mob.mind.directory_erptag || "Unset"
character_ad = C.mob.mind.directory_ad character_ad = C.mob.mind.directory_ad
//CHOMPEdit Start
gendertag = C.mob.mind.directory_gendertag || "Unset" gendertag = C.mob.mind.directory_gendertag || "Unset"
sexualitytag = C.mob.mind.directory_sexualitytag || "Unset" sexualitytag = C.mob.mind.directory_sexualitytag || "Unset"
eventtag = GLOB.vantag_choices_list[C.mob.mind.vantag_preference] eventtag = GLOB.vantag_choices_list[C.mob.mind.vantag_preference]
//CHOMPEdit End
else else
tag = C.prefs.directory_tag || "Unset" tag = C.prefs.directory_tag || "Unset"
erptag = C.prefs.directory_erptag || "Unset" erptag = C.prefs.directory_erptag || "Unset"
character_ad = C.prefs.directory_ad character_ad = C.prefs.directory_ad
//CHOMPEdit Start
gendertag = C.prefs.directory_gendertag || "Unset" gendertag = C.prefs.directory_gendertag || "Unset"
sexualitytag = C.prefs.directory_sexualitytag || "Unset" sexualitytag = C.prefs.directory_sexualitytag || "Unset"
eventtag = GLOB.vantag_choices_list[C.prefs.vantag_preference] eventtag = GLOB.vantag_choices_list[C.prefs.vantag_preference]
//CHOMPEdit End
if(ishuman(C.mob)) if(ishuman(C.mob))
var/mob/living/carbon/human/H = C.mob var/mob/living/carbon/human/H = C.mob
// CHOMPEdit Start
var/strangername = H.real_name var/strangername = H.real_name
if(GLOB.data_core && GLOB.data_core.general) if(GLOB.data_core && GLOB.data_core.general)
if(!find_general_record("name", H.real_name)) if(!find_general_record("name", H.real_name))
@@ -105,7 +98,6 @@ GLOBAL_DATUM(character_directory, /datum/character_directory)
name = strangername name = strangername
species = "[H.custom_species ? H.custom_species : H.species.name]" species = "[H.custom_species ? H.custom_species : H.species.name]"
ooc_notes = H.ooc_notes ooc_notes = H.ooc_notes
//CHOMPEdit Start
if(H.ooc_notes_style && (H.ooc_notes_favs || H.ooc_notes_likes || H.ooc_notes_maybes || H.ooc_notes_dislikes)) if(H.ooc_notes_style && (H.ooc_notes_favs || H.ooc_notes_likes || H.ooc_notes_maybes || H.ooc_notes_dislikes))
ooc_notes = H.ooc_notes + "\n\n" ooc_notes = H.ooc_notes + "\n\n"
ooc_notes_favs = H.ooc_notes_favs ooc_notes_favs = H.ooc_notes_favs
@@ -124,14 +116,12 @@ GLOBAL_DATUM(character_directory, /datum/character_directory)
ooc_notes += "\n\nDISLIKES\n\n[H.ooc_notes_dislikes]" ooc_notes += "\n\nDISLIKES\n\n[H.ooc_notes_dislikes]"
if(LAZYLEN(H.flavor_texts)) if(LAZYLEN(H.flavor_texts))
flavor_text = H.flavor_texts["general"] flavor_text = H.flavor_texts["general"]
//CHOMPEdit End
if(isAI(C.mob)) if(isAI(C.mob))
var/mob/living/silicon/ai/A = C.mob var/mob/living/silicon/ai/A = C.mob
name = A.name name = A.name
species = "Artificial Intelligence" species = "Artificial Intelligence"
ooc_notes = A.ooc_notes ooc_notes = A.ooc_notes
//CHOMPEdit Start
if(A.ooc_notes_style && (A.ooc_notes_favs || A.ooc_notes_likes || A.ooc_notes_maybes || A.ooc_notes_dislikes)) if(A.ooc_notes_style && (A.ooc_notes_favs || A.ooc_notes_likes || A.ooc_notes_maybes || A.ooc_notes_dislikes))
ooc_notes = A.ooc_notes + "\n\n" ooc_notes = A.ooc_notes + "\n\n"
ooc_notes_favs = A.ooc_notes_favs ooc_notes_favs = A.ooc_notes_favs
@@ -148,7 +138,6 @@ GLOBAL_DATUM(character_directory, /datum/character_directory)
ooc_notes += "\n\nMAYBES\n\n[A.ooc_notes_maybes]" ooc_notes += "\n\nMAYBES\n\n[A.ooc_notes_maybes]"
if(A.ooc_notes_dislikes) if(A.ooc_notes_dislikes)
ooc_notes += "\n\nDISLIKES\n\n[A.ooc_notes_dislikes]" ooc_notes += "\n\nDISLIKES\n\n[A.ooc_notes_dislikes]"
//CHOMPEdit End
flavor_text = null // No flavor text for AIs :c flavor_text = null // No flavor text for AIs :c
@@ -159,7 +148,6 @@ GLOBAL_DATUM(character_directory, /datum/character_directory)
name = R.name name = R.name
species = "[R.modtype] [R.braintype]" species = "[R.modtype] [R.braintype]"
ooc_notes = R.ooc_notes ooc_notes = R.ooc_notes
//CHOMPEdit Start
if(R.ooc_notes_style && (R.ooc_notes_favs || R.ooc_notes_likes || R.ooc_notes_maybes || R.ooc_notes_dislikes)) if(R.ooc_notes_style && (R.ooc_notes_favs || R.ooc_notes_likes || R.ooc_notes_maybes || R.ooc_notes_dislikes))
ooc_notes = R.ooc_notes + "\n\n" ooc_notes = R.ooc_notes + "\n\n"
ooc_notes_favs = R.ooc_notes_favs ooc_notes_favs = R.ooc_notes_favs
@@ -176,7 +164,6 @@ GLOBAL_DATUM(character_directory, /datum/character_directory)
ooc_notes += "\n\nMAYBES\n\n[R.ooc_notes_maybes]" ooc_notes += "\n\nMAYBES\n\n[R.ooc_notes_maybes]"
if(R.ooc_notes_dislikes) if(R.ooc_notes_dislikes)
ooc_notes += "\n\nDISLIKES\n\n[R.ooc_notes_dislikes]" ooc_notes += "\n\nDISLIKES\n\n[R.ooc_notes_dislikes]"
//CHOMPEdit End
flavor_text = R.flavor_text flavor_text = R.flavor_text
@@ -185,7 +172,6 @@ GLOBAL_DATUM(character_directory, /datum/character_directory)
name = P.name name = P.name
species = "pAI" species = "pAI"
ooc_notes = P.ooc_notes ooc_notes = P.ooc_notes
// CHOMPEdit Start
if(P.ooc_notes_style && (P.ooc_notes_favs || P.ooc_notes_likes || P.ooc_notes_maybes || P.ooc_notes_dislikes)) if(P.ooc_notes_style && (P.ooc_notes_favs || P.ooc_notes_likes || P.ooc_notes_maybes || P.ooc_notes_dislikes))
ooc_notes = P.ooc_notes + "\n\n" ooc_notes = P.ooc_notes + "\n\n"
ooc_notes_favs = P.ooc_notes_favs ooc_notes_favs = P.ooc_notes_favs
@@ -202,13 +188,11 @@ GLOBAL_DATUM(character_directory, /datum/character_directory)
ooc_notes += "\n\nMAYBES\n\n[P.ooc_notes_maybes]" ooc_notes += "\n\nMAYBES\n\n[P.ooc_notes_maybes]"
if(P.ooc_notes_dislikes) if(P.ooc_notes_dislikes)
ooc_notes += "\n\nDISLIKES\n\n[P.ooc_notes_dislikes]" ooc_notes += "\n\nDISLIKES\n\n[P.ooc_notes_dislikes]"
//CHOMPEdit End
flavor_text = P.flavor_text flavor_text = P.flavor_text
if(isanimal(C.mob)) if(isanimal(C.mob))
var/mob/living/simple_mob/S = C.mob var/mob/living/simple_mob/S = C.mob
name = S.name name = S.name
// CHOMPEdit Start
species = S.character_directory_species() species = S.character_directory_species()
ooc_notes = S.ooc_notes ooc_notes = S.ooc_notes
if(S.ooc_notes_style && (S.ooc_notes_favs || S.ooc_notes_likes || S.ooc_notes_maybes || S.ooc_notes_dislikes)) if(S.ooc_notes_style && (S.ooc_notes_favs || S.ooc_notes_likes || S.ooc_notes_maybes || S.ooc_notes_dislikes))
@@ -227,7 +211,6 @@ GLOBAL_DATUM(character_directory, /datum/character_directory)
ooc_notes += "\n\nMAYBES\n\n[S.ooc_notes_maybes]" ooc_notes += "\n\nMAYBES\n\n[S.ooc_notes_maybes]"
if(S.ooc_notes_dislikes) if(S.ooc_notes_dislikes)
ooc_notes += "\n\nDISLIKES\n\n[S.ooc_notes_dislikes]" ooc_notes += "\n\nDISLIKES\n\n[S.ooc_notes_dislikes]"
// CHOMPEdit End
flavor_text = S.desc flavor_text = S.desc
// It's okay if we fail to find OOC notes and flavor text // It's okay if we fail to find OOC notes and flavor text
@@ -238,7 +221,6 @@ GLOBAL_DATUM(character_directory, /datum/character_directory)
directory_mobs.Add(list(list( directory_mobs.Add(list(list(
"name" = name, "name" = name,
"species" = species, "species" = species,
//CHOMPEdit Start
"ooc_notes_favs" = ooc_notes_favs, "ooc_notes_favs" = ooc_notes_favs,
"ooc_notes_likes" = ooc_notes_likes, "ooc_notes_likes" = ooc_notes_likes,
"ooc_notes_maybes" = ooc_notes_maybes, "ooc_notes_maybes" = ooc_notes_maybes,
@@ -247,7 +229,6 @@ GLOBAL_DATUM(character_directory, /datum/character_directory)
"gendertag" = gendertag, "gendertag" = gendertag,
"sexualitytag" = sexualitytag, "sexualitytag" = sexualitytag,
"eventtag" = eventtag, "eventtag" = eventtag,
//CHOMPEdit End
"ooc_notes" = ooc_notes, "ooc_notes" = ooc_notes,
"tag" = tag, "tag" = tag,
"erptag" = erptag, "erptag" = erptag,
@@ -310,7 +291,6 @@ GLOBAL_DATUM(character_directory, /datum/character_directory)
if(isnull(new_ad)) if(isnull(new_ad))
return return
return set_for_mind_or_prefs(user, action, new_ad, can_set_prefs, can_set_mind) return set_for_mind_or_prefs(user, action, new_ad, can_set_prefs, can_set_mind)
// CHOMPStation Edit Start: Directory Update
if("setGenderTag") if("setGenderTag")
var/list/new_gendertag = tgui_input_list(usr, "Pick a new Gender tag for the character directory. This is YOUR gender, not what you prefer.", "Character Gender Tag", GLOB.char_directory_gendertags) var/list/new_gendertag = tgui_input_list(usr, "Pick a new Gender tag for the character directory. This is YOUR gender, not what you prefer.", "Character Gender Tag", GLOB.char_directory_gendertags)
if(!new_gendertag) if(!new_gendertag)
@@ -329,7 +309,6 @@ GLOBAL_DATUM(character_directory, /datum/character_directory)
if(!new_eventtag) if(!new_eventtag)
return return
return set_for_mind_or_prefs(user, action, names_list[new_eventtag], can_set_prefs, can_set_mind) return set_for_mind_or_prefs(user, action, names_list[new_eventtag], can_set_prefs, can_set_mind)
//CHOMPEdit end
/datum/character_directory/proc/set_for_mind_or_prefs(mob/user, action, new_value, can_set_prefs, can_set_mind) /datum/character_directory/proc/set_for_mind_or_prefs(mob/user, action, new_value, can_set_prefs, can_set_mind)
can_set_prefs &&= !!user.client.prefs can_set_prefs &&= !!user.client.prefs
@@ -362,7 +341,6 @@ GLOBAL_DATUM(character_directory, /datum/character_directory)
if (can_set_mind) if (can_set_mind)
user.mind.directory_ad = new_value user.mind.directory_ad = new_value
return TRUE return TRUE
//CHOMPEdit Start
if ("setEventTag") if ("setEventTag")
if (can_set_prefs) if (can_set_prefs)
user.client.prefs.vantag_preference = new_value user.client.prefs.vantag_preference = new_value
@@ -378,4 +356,3 @@ GLOBAL_DATUM(character_directory, /datum/character_directory)
user.client.prefs.directory_sexualitytag = new_value user.client.prefs.directory_sexualitytag = new_value
if (can_set_mind) if (can_set_mind)
user.mind.directory_sexualitytag = new_value user.mind.directory_sexualitytag = new_value
//CHOMPEdit End

View File

@@ -189,13 +189,11 @@ var/global/list/emotes_by_key
if(islist(sound_to_play) && length(sound_to_play)) if(islist(sound_to_play) && length(sound_to_play))
sound_to_play = pick(sound_to_play) sound_to_play = pick(sound_to_play)
if(sound_to_play) if(sound_to_play)
//CHOMPEdit Add - Preference for variable pitch + Extra range argument
if(istype(user, /mob)) if(istype(user, /mob))
var/mob/u = user var/mob/u = user
playsound(user.loc, sound_to_play, use_sound["vol"], u.read_preference(/datum/preference/toggle/random_emote_pitch) && sound_vary, extrarange = use_sound["exr"], frequency = u.voice_freq, preference = sound_preferences, volume_channel = use_sound["volchannel"]) //CHOMPEdit playsound(user.loc, sound_to_play, use_sound["vol"], u.read_preference(/datum/preference/toggle/random_emote_pitch) && sound_vary, extrarange = use_sound["exr"], frequency = u.voice_freq, preference = sound_preferences, volume_channel = use_sound["volchannel"])
else else
playsound(user.loc, sound_to_play, use_sound["vol"], sound_vary, extrarange = use_sound["exr"], frequency = null, preference = sound_preferences, volume_channel = use_sound["volchannel"]) //VOREStation Add - Preference // CHOMPEdit: volume channel + range playsound(user.loc, sound_to_play, use_sound["vol"], sound_vary, extrarange = use_sound["exr"], frequency = null, preference = sound_preferences, volume_channel = use_sound["volchannel"])
//CHOMPEdit End - Previous line used to be outside an if/else before the edit.
/decl/emote/proc/mob_can_use(var/mob/user) /decl/emote/proc/mob_can_use(var/mob/user)
return istype(user) && user.stat != DEAD && (type in user.get_available_emotes()) return istype(user) && user.stat != DEAD && (type in user.get_available_emotes())

View File

@@ -536,11 +536,9 @@
ooc_notes = AI.ooc_notes ooc_notes = AI.ooc_notes
ooc_notes_likes = AI.ooc_notes_likes ooc_notes_likes = AI.ooc_notes_likes
ooc_notes_dislikes = AI.ooc_notes_dislikes ooc_notes_dislikes = AI.ooc_notes_dislikes
//CHOMPEdit Start
ooc_notes_favs = AI.ooc_notes_favs ooc_notes_favs = AI.ooc_notes_favs
ooc_notes_maybes = AI.ooc_notes_maybes ooc_notes_maybes = AI.ooc_notes_maybes
ooc_notes_style = AI.ooc_notes_style ooc_notes_style = AI.ooc_notes_style
//CHOMPEdit End
to_chat(src, span_notice("You feel a tingle in your circuits as your systems interface with \the [initial(src.name)].")) to_chat(src, span_notice("You feel a tingle in your circuits as your systems interface with \the [initial(src.name)]."))
if(AI.idcard.GetAccess()) if(AI.idcard.GetAccess())
botcard.access |= AI.idcard.GetAccess() botcard.access |= AI.idcard.GetAccess()
@@ -552,11 +550,9 @@
AI.ooc_notes = ooc_notes AI.ooc_notes = ooc_notes
AI.ooc_notes_likes = ooc_notes_likes AI.ooc_notes_likes = ooc_notes_likes
AI.ooc_notes_dislikes = ooc_notes_dislikes AI.ooc_notes_dislikes = ooc_notes_dislikes
//CHOMPEdit Start
AI.ooc_notes_favs = ooc_notes_favs AI.ooc_notes_favs = ooc_notes_favs
AI.ooc_notes_maybes = ooc_notes_maybes AI.ooc_notes_maybes = ooc_notes_maybes
AI.ooc_notes_style = ooc_notes_style AI.ooc_notes_style = ooc_notes_style
//CHOMPEdit End
paicard.forceMove(src.loc) paicard.forceMove(src.loc)
paicard = null paicard = null
name = initial(name) name = initial(name)

View File

@@ -382,11 +382,9 @@
blob.ooc_notes = ooc_notes blob.ooc_notes = ooc_notes
blob.ooc_notes_likes = ooc_notes_likes blob.ooc_notes_likes = ooc_notes_likes
blob.ooc_notes_dislikes = ooc_notes_dislikes blob.ooc_notes_dislikes = ooc_notes_dislikes
//CHOMPEdit Start
blob.ooc_notes_favs = ooc_notes_favs blob.ooc_notes_favs = ooc_notes_favs
blob.ooc_notes_maybes = ooc_notes_maybes blob.ooc_notes_maybes = ooc_notes_maybes
blob.ooc_notes_style = ooc_notes_style blob.ooc_notes_style = ooc_notes_style
//CHOMPEdit End
blob.transforming = FALSE blob.transforming = FALSE
blob.name = name blob.name = name
blob.real_name = real_name blob.real_name = real_name
@@ -475,11 +473,9 @@
ooc_notes = blob.ooc_notes // Updating notes incase they change them in blob form. ooc_notes = blob.ooc_notes // Updating notes incase they change them in blob form.
ooc_notes_likes = blob.ooc_notes_likes ooc_notes_likes = blob.ooc_notes_likes
ooc_notes_dislikes = blob.ooc_notes_dislikes ooc_notes_dislikes = blob.ooc_notes_dislikes
//CHOMPEdit Start
ooc_notes_favs = blob.ooc_notes_favs ooc_notes_favs = blob.ooc_notes_favs
ooc_notes_maybes = blob.ooc_notes_maybes ooc_notes_maybes = blob.ooc_notes_maybes
ooc_notes_style = blob.ooc_notes_style ooc_notes_style = blob.ooc_notes_style
//CHOMPEdit End
transforming = FALSE transforming = FALSE
blob.name = "Promethean Blob" blob.name = "Promethean Blob"
var/obj/item/hat = blob.hat var/obj/item/hat = blob.hat

View File

@@ -477,11 +477,9 @@
blob.ooc_notes = ooc_notes blob.ooc_notes = ooc_notes
blob.ooc_notes_likes = ooc_notes_likes blob.ooc_notes_likes = ooc_notes_likes
blob.ooc_notes_dislikes = ooc_notes_dislikes blob.ooc_notes_dislikes = ooc_notes_dislikes
// CHOMPAdd Start
blob.ooc_notes_favs = ooc_notes_favs blob.ooc_notes_favs = ooc_notes_favs
blob.ooc_notes_maybes = ooc_notes_maybes blob.ooc_notes_maybes = ooc_notes_maybes
blob.ooc_notes_style = ooc_notes_style blob.ooc_notes_style = ooc_notes_style
// CHOMPAdd End
temporary_form = blob temporary_form = blob
var/obj/item/radio/R = null var/obj/item/radio/R = null
if(isradio(l_ear)) if(isradio(l_ear))
@@ -609,11 +607,9 @@
ooc_notes = blob.ooc_notes // Lets give the protean any updated notes from blob form. ooc_notes = blob.ooc_notes // Lets give the protean any updated notes from blob form.
ooc_notes_likes = blob.ooc_notes_likes ooc_notes_likes = blob.ooc_notes_likes
ooc_notes_dislikes = blob.ooc_notes_dislikes ooc_notes_dislikes = blob.ooc_notes_dislikes
// CHOMPAdd Start
ooc_notes_favs = blob.ooc_notes_favs ooc_notes_favs = blob.ooc_notes_favs
ooc_notes_maybes = blob.ooc_notes_maybes ooc_notes_maybes = blob.ooc_notes_maybes
ooc_notes_style = blob.ooc_notes_style ooc_notes_style = blob.ooc_notes_style
// CHOMPAdd End
temporary_form = null temporary_form = null
//Transfer vore organs //Transfer vore organs

View File

@@ -1462,6 +1462,36 @@ GLOBAL_LIST_EMPTY(damage_icon_parts) //see UpdateDamageIcon()
struggle_anim_taur = FALSE struggle_anim_taur = FALSE
update_vore_tail_sprite() update_vore_tail_sprite()
/mob/living/carbon/human/proc/GetAppearanceFromPrefs(var/flavourtext, var/oocnotes)
/* Jank code that effectively creates the client's mob from save, then copies its appearance to our current mob.
Intended to be used with shapeshifter species so we don't reset their organs in doing so.*/
if(client.prefs)
var/mob/living/carbon/human/dummy/mannequin/Dummy = get_mannequin(client.ckey)
client.prefs.copy_to(Dummy)
//Important, since some sprites only work for specific species
/* Probably not needed anymore since impersonate_bodytype no longer exists
if(Dummy.species.base_species == "Promethean")
impersonate_bodytype = "Human"
else
impersonate_bodytype = Dummy.species.base_species
*/
custom_species = Dummy.custom_species
var/list/traits = dna.species_traits.Copy()
dna = Dummy.dna.Clone()
dna.species_traits.Cut()
dna.species_traits = traits.Copy()
UpdateAppearance()
icon = Dummy.icon
if(flavourtext)
flavor_texts = client.prefs.flavor_texts.Copy()
if(oocnotes)
ooc_notes = client.prefs.read_preference(/datum/preference/text/living/ooc_notes)
ooc_notes_likes = client.prefs.read_preference(/datum/preference/text/living/ooc_notes_likes)
ooc_notes_dislikes = client.prefs.read_preference(/datum/preference/text/living/ooc_notes_dislikes)
ooc_notes_favs = read_preference(/datum/preference/text/living/ooc_notes_favs)
ooc_notes_maybes = read_preference(/datum/preference/text/living/ooc_notes_maybes)
ooc_notes_style = read_preference(/datum/preference/toggle/living/ooc_notes_style)
//Human Overlays Indexes///////// //Human Overlays Indexes/////////
/* CHOMPEdit - why are these undefined?? /* CHOMPEdit - why are these undefined??
# undef MUTATIONS_LAYER # undef MUTATIONS_LAYER

View File

@@ -1475,3 +1475,39 @@
drop.invisibility = 0 drop.invisibility = 0
//else //else
// come up with drips for other mobs someday // come up with drips for other mobs someday
/mob/living/proc/set_metainfo_favs(var/mob/user, var/reopen = TRUE)
if(user != src)
return
var/new_metadata = strip_html_simple(tgui_input_text(user, "Enter any information you'd like others to see relating to your FAVOURITE roleplay preferences. This will not be saved permanently unless you click save in the OOC notes panel! Type \"!clear\" to empty.", "Game Preference" , html_decode(ooc_notes_favs), multiline = TRUE, prevent_enter = TRUE))
if(new_metadata && CanUseTopic(user))
if(new_metadata == "!clear")
new_metadata = ""
ooc_notes_favs = new_metadata
client.prefs.update_preference_by_type(/datum/preference/text/living/ooc_notes_favs, new_metadata)
to_chat(user, span_filter_notice("OOC note favs have been updated. Don't forget to save!"))
log_admin("[key_name(user)] updated their OOC note favs mid-round.")
if(reopen)
ooc_notes_window(user)
/mob/living/proc/set_metainfo_maybes(var/mob/user, var/reopen = TRUE)
if(user != src)
return
var/new_metadata = strip_html_simple(tgui_input_text(user, "Enter any information you'd like others to see relating to your MAYBE roleplay preferences. This will not be saved permanently unless you click save in the OOC notes panel! Type \"!clear\" to empty.", "Game Preference" , html_decode(ooc_notes_maybes), multiline = TRUE, prevent_enter = TRUE))
if(new_metadata && CanUseTopic(user))
if(new_metadata == "!clear")
new_metadata = ""
ooc_notes_maybes = new_metadata
client.prefs.update_preference_by_type(/datum/preference/text/living/ooc_notes_maybes, new_metadata)
to_chat(user, span_filter_notice("OOC note maybes have been updated. Don't forget to save!"))
log_admin("[key_name(user)] updated their OOC note maybes mid-round.")
if(reopen)
ooc_notes_window(user)
/mob/living/proc/set_metainfo_ooc_style(var/mob/user, var/reopen = TRUE)
if(user != src)
return
ooc_notes_style = !ooc_notes_style
client.prefs.update_preference_by_type(/datum/preference/toggle/living/ooc_notes_style, ooc_notes_style)
if(reopen)
ooc_notes_window(user)

View File

@@ -112,3 +112,7 @@
var/mob/living/tf_form // Shapeshifter shenanigans var/mob/living/tf_form // Shapeshifter shenanigans
var/tf_form_ckey var/tf_form_ckey
var/ooc_notes_favs = null
var/ooc_notes_maybes = null
var/ooc_notes_style = FALSE

View File

@@ -96,7 +96,6 @@
if(!ooc_notes) if(!ooc_notes)
return return
var/msg = ooc_notes var/msg = ooc_notes
//CHOMPEdit Start
if(ooc_notes_style && (ooc_notes_favs || ooc_notes_likes || ooc_notes_maybes || ooc_notes_dislikes) && !user.client?.prefs?.read_preference(/datum/preference/toggle/vchat_enable)) // Oldchat hates proper formatting if(ooc_notes_style && (ooc_notes_favs || ooc_notes_likes || ooc_notes_maybes || ooc_notes_dislikes) && !user.client?.prefs?.read_preference(/datum/preference/toggle/vchat_enable)) // Oldchat hates proper formatting
msg += "<br><br>" msg += "<br><br>"
msg += "<table><tr>" msg += "<table><tr>"
@@ -140,8 +139,6 @@
if(ooc_notes_dislikes) if(ooc_notes_dislikes)
msg += "<br><br><b>[span_red("DISLIKES")]</b><br>[ooc_notes_dislikes]" msg += "<br><br><b>[span_red("DISLIKES")]</b><br>[ooc_notes_dislikes]"
to_chat(user, span_chatexport("<b>[src]'s Metainfo:</b><br>[msg]")) to_chat(user, span_chatexport("<b>[src]'s Metainfo:</b><br>[msg]"))
//CHOMPEdit End
//ChompEDIT END - Removal of usr
/mob/living/verb/set_custom_link() /mob/living/verb/set_custom_link()
set name = "Set Custom Link" set name = "Set Custom Link"
set desc = "Set a custom link to show up with your examine text." set desc = "Set a custom link to show up with your examine text."

View File

@@ -3,14 +3,27 @@
return return
//I tried to get it to accept things like emojis and all that, but, it wouldn't do! It would be cool if it did. //I tried to get it to accept things like emojis and all that, but, it wouldn't do! It would be cool if it did.
var/notes = replacetext(html_decode(src.ooc_notes), "\n", "<BR>") var/notes = replacetext(html_decode(src.ooc_notes), "\n", "<BR>")
var/favs = replacetext(html_decode(src.ooc_notes_favs), "\n", "<BR>")
var/likes = replacetext(html_decode(src.ooc_notes_likes), "\n", "<BR>") var/likes = replacetext(html_decode(src.ooc_notes_likes), "\n", "<BR>")
var/maybes = replacetext(html_decode(src.ooc_notes_maybes), "\n", "<BR>")
var/dislikes = replacetext(html_decode(src.ooc_notes_dislikes), "\n", "<BR>") var/dislikes = replacetext(html_decode(src.ooc_notes_dislikes), "\n", "<BR>")
var/style = src.ooc_notes_style
var/dat = {" var/dat = {"
<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\"> <!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">
<html> <html>
<head> <head>
<style> <style>
* {
box-sizing: border-box;
}
.collapsible { .collapsible {
background-color: #1a1e3f;
color: white;
width: 100%;
text-align: left;
font-size: 20px;
}
.collapsible_a {
background-color: #263d20; background-color: #263d20;
color: white; color: white;
width: 100%; width: 100%;
@@ -18,6 +31,13 @@
font-size: 20px; font-size: 20px;
} }
.collapsible_b { .collapsible_b {
background-color: #3e3f1a;
color: white;
width: 100%;
text-align: left;
font-size: 20px;
}
.collapsible_c {
background-color: #3f1a1a; background-color: #3f1a1a;
color: white; color: white;
width: 100%; width: 100%;
@@ -29,6 +49,17 @@
width: 100%; width: 100%;
background-color: #363636; background-color: #363636;
} }
.column {
verflow-wrap: break-word;
float: left;
width: 25%;
}
.row:after {
content: "";
display: table;
clear: both;
}
</style> </style>
</head>"} </head>"}
@@ -44,8 +75,21 @@
<td class="button"> <td class="button">
<a href='byond://?src=\ref[src];print_ooc_notes_chat=1' class='button'>Print to chat</a> <a href='byond://?src=\ref[src];print_ooc_notes_chat=1' class='button'>Print to chat</a>
</td> </td>
</table>
"} "}
if(user == src)
if(style)
dat += {"
<td class="button">
<a href='byond://?src=\ref[src];set_metainfo_ooc_style=1' class='button'>Lists</a>
</td>
"}
else
dat += {"
<td class="button">
<a href='byond://?src=\ref[src];set_metainfo_ooc_style=1' class='button'>Fields</a>
</td>
"}
dat += {"</table>"}
if(user == src) if(user == src)
dat += {" dat += {"
@@ -59,12 +103,36 @@
dat += {" dat += {"
<br> <br>
<div class="content">
<p>[notes]</p> <p>[notes]</p>
</div>
<br>
<head> <head>
<meta name="viewport" content="width=device-width, initial-scale=1">"} <meta name="viewport" content="width=device-width, initial-scale=1">"}
if(style)
dat += {"<div class='row'><div class='column'>"}
if(favs || user == src)
dat += "<div class=\"collapsible\">" + span_bold("<center>Favourites</center>") + "</div>"
if(user == src)
dat += {"
<table>
<td class="button">
<a href='byond://?src=\ref[src];edit_ooc_note_favs=1' class='button'>Edit</a>
</td>
</table>
"}
if(favs)
dat += {"
<div class="content">
<p>[favs]</p>
</div>"}
if(style)
dat += {"</div>"}
dat += {"<div class='column'>"}
if(likes || user == src) if(likes || user == src)
dat += {"<div class="collapsible"><b><center>Likes</center></b></div>"} dat += "<div class=\"collapsible_a\">" + span_bold("<center>Likes</center>") + "</div>"
if(user == src) if(user == src)
dat += {" dat += {"
<table> <table>
@@ -79,10 +147,34 @@
<div class="content"> <div class="content">
<p>[likes]</p> <p>[likes]</p>
</div>"} </div>"}
if(dislikes || user == src)
if(style)
dat += {"</div>"}
dat += {"<div class='column'>"}
if(maybes || user == src)
dat += "<div class=\"collapsible_b\">" + span_bold("<center>Maybes</center>") + "</div>"
if(user == src)
dat += {" dat += {"
<br> <table>
<div class="collapsible_b"><b><center>Dislikes</center></b></div>"} <td class="button">
<a href='byond://?src=\ref[src];edit_ooc_note_maybes=1' class='button'>Edit</a>
</td>
</table>
"}
if(maybes)
dat += {"
<div class="content">
<p>[maybes]</p>
</div>
"}
if(style)
dat += {"</div>"}
dat += {"<div class='column'>"}
if(dislikes || user == src)
dat += "<div class=\"collapsible_c\">" + span_bold("<center>Dislikes</center>") + "</div>"
if(user == src) if(user == src)
dat += {" dat += {"
<table> <table>
@@ -97,9 +189,11 @@
<div class="content"> <div class="content">
<p>[dislikes]</p> <p>[dislikes]</p>
</div> </div>
</body>
</html>
"} "}
if(style)
dat += {"</div></div>"}
dat+= {" </body>
</html>"}
var/key = "ooc_notes[src.real_name]" //Generate a unique key so we can make unique clones of windows, that way we can have more than one var/key = "ooc_notes[src.real_name]" //Generate a unique key so we can make unique clones of windows, that way we can have more than one
if(src.ckey) if(src.ckey)

View File

@@ -218,11 +218,9 @@ var/list/ai_verbs_default = list(
ooc_notes = client.prefs.read_preference(/datum/preference/text/living/ooc_notes) ooc_notes = client.prefs.read_preference(/datum/preference/text/living/ooc_notes)
ooc_notes_likes = client.prefs.read_preference(/datum/preference/text/living/ooc_notes_likes) ooc_notes_likes = client.prefs.read_preference(/datum/preference/text/living/ooc_notes_likes)
ooc_notes_dislikes = client.prefs.read_preference(/datum/preference/text/living/ooc_notes_dislikes) ooc_notes_dislikes = client.prefs.read_preference(/datum/preference/text/living/ooc_notes_dislikes)
//CHOMPAdd Start
ooc_notes_favs = read_preference(/datum/preference/text/living/ooc_notes_favs) ooc_notes_favs = read_preference(/datum/preference/text/living/ooc_notes_favs)
ooc_notes_maybes = read_preference(/datum/preference/text/living/ooc_notes_maybes) ooc_notes_maybes = read_preference(/datum/preference/text/living/ooc_notes_maybes)
ooc_notes_style = read_preference(/datum/preference/toggle/living/ooc_notes_style) ooc_notes_style = read_preference(/datum/preference/toggle/living/ooc_notes_style)
//CHOMPAdd End
private_notes = client.prefs.read_preference(/datum/preference/text/living/private_notes) private_notes = client.prefs.read_preference(/datum/preference/text/living/private_notes)
if (malf && !(mind in malf.current_antagonists)) if (malf && !(mind in malf.current_antagonists))

View File

@@ -155,11 +155,9 @@
ooc_notes = client.prefs.read_preference(/datum/preference/text/living/ooc_notes) ooc_notes = client.prefs.read_preference(/datum/preference/text/living/ooc_notes)
ooc_notes_likes = client.prefs.read_preference(/datum/preference/text/living/ooc_notes_likes) ooc_notes_likes = client.prefs.read_preference(/datum/preference/text/living/ooc_notes_likes)
ooc_notes_dislikes = client.prefs.read_preference(/datum/preference/text/living/ooc_notes_dislikes) ooc_notes_dislikes = client.prefs.read_preference(/datum/preference/text/living/ooc_notes_dislikes)
//CHOMPAdd Start
ooc_notes_favs = read_preference(/datum/preference/text/living/ooc_notes_favs) ooc_notes_favs = read_preference(/datum/preference/text/living/ooc_notes_favs)
ooc_notes_maybes = read_preference(/datum/preference/text/living/ooc_notes_maybes) ooc_notes_maybes = read_preference(/datum/preference/text/living/ooc_notes_maybes)
ooc_notes_style = read_preference(/datum/preference/toggle/living/ooc_notes_style) ooc_notes_style = read_preference(/datum/preference/toggle/living/ooc_notes_style)
//CHOMPAdd End
private_notes = client.prefs.read_preference(/datum/preference/text/living/private_notes) private_notes = client.prefs.read_preference(/datum/preference/text/living/private_notes)
src << sound('sound/effects/pai_login.ogg', volume = 75) //VOREStation Add src << sound('sound/effects/pai_login.ogg', volume = 75) //VOREStation Add

View File

@@ -413,11 +413,9 @@
ooc_notes = client.prefs.read_preference(/datum/preference/text/living/ooc_notes) ooc_notes = client.prefs.read_preference(/datum/preference/text/living/ooc_notes)
ooc_notes_likes = client.prefs.read_preference(/datum/preference/text/living/ooc_notes_likes) ooc_notes_likes = client.prefs.read_preference(/datum/preference/text/living/ooc_notes_likes)
ooc_notes_dislikes = client.prefs.read_preference(/datum/preference/text/living/ooc_notes_dislikes) ooc_notes_dislikes = client.prefs.read_preference(/datum/preference/text/living/ooc_notes_dislikes)
//CHOMPAdd Start
ooc_notes_favs = read_preference(/datum/preference/text/living/ooc_notes_favs) ooc_notes_favs = read_preference(/datum/preference/text/living/ooc_notes_favs)
ooc_notes_maybes = read_preference(/datum/preference/text/living/ooc_notes_maybes) ooc_notes_maybes = read_preference(/datum/preference/text/living/ooc_notes_maybes)
ooc_notes_style = read_preference(/datum/preference/toggle/living/ooc_notes_style) ooc_notes_style = read_preference(/datum/preference/toggle/living/ooc_notes_style)
//CHOMPAdd End
private_notes = client.prefs.read_preference(/datum/preference/text/living/private_notes) private_notes = client.prefs.read_preference(/datum/preference/text/living/private_notes)
custom_link = client.prefs.custom_link custom_link = client.prefs.custom_link

View File

@@ -15,18 +15,16 @@
var/pred_ooc_notes var/pred_ooc_notes
var/pred_ooc_likes var/pred_ooc_likes
var/pred_ooc_dislikes var/pred_ooc_dislikes
//CHOMPEdit Start
var/pred_ooc_favs var/pred_ooc_favs
var/pred_ooc_maybes var/pred_ooc_maybes
var/pred_ooc_style var/pred_ooc_style
var/prey_ooc_favs var/prey_ooc_favs
var/prey_ooc_maybes var/prey_ooc_maybes
var/prey_ooc_style var/prey_ooc_style
//CHOMPEdit End
var/prey_ooc_notes var/prey_ooc_notes
var/prey_ooc_likes var/prey_ooc_likes
var/prey_ooc_dislikes var/prey_ooc_dislikes
var/was_mob = FALSE //CHOMPAdd - tracks if the dominated being was a mob var/was_mob
/mob/living/dominated_brain/Initialize(mapload, var/mob/living/pred, preyname, var/mob/living/prey) /mob/living/dominated_brain/Initialize(mapload, var/mob/living/pred, preyname, var/mob/living/prey)
prey_name = preyname prey_name = preyname
@@ -121,11 +119,9 @@
prey_goes_here.ooc_notes = prey_ooc_notes prey_goes_here.ooc_notes = prey_ooc_notes
prey_goes_here.ooc_notes_likes = prey_ooc_likes prey_goes_here.ooc_notes_likes = prey_ooc_likes
prey_goes_here.ooc_notes_dislikes = prey_ooc_dislikes prey_goes_here.ooc_notes_dislikes = prey_ooc_dislikes
//CHOMPEdit Start
prey_goes_here.ooc_notes_favs = prey_ooc_favs prey_goes_here.ooc_notes_favs = prey_ooc_favs
prey_goes_here.ooc_notes_maybes = prey_ooc_maybes prey_goes_here.ooc_notes_maybes = prey_ooc_maybes
prey_goes_here.ooc_notes_style = prey_ooc_style prey_goes_here.ooc_notes_style = prey_ooc_style
//CHOMPEdit End
add_verb(prey_goes_here, /mob/living/dominated_brain/proc/cease_this_foolishness) add_verb(prey_goes_here, /mob/living/dominated_brain/proc/cease_this_foolishness)
@@ -142,11 +138,9 @@
prey_goes_here.ooc_notes = prey_ooc_notes prey_goes_here.ooc_notes = prey_ooc_notes
prey_goes_here.ooc_notes_likes = prey_ooc_likes prey_goes_here.ooc_notes_likes = prey_ooc_likes
prey_goes_here.ooc_notes_dislikes = prey_ooc_dislikes prey_goes_here.ooc_notes_dislikes = prey_ooc_dislikes
//CHOMPEdit Start
prey_goes_here.ooc_notes_favs = prey_ooc_favs prey_goes_here.ooc_notes_favs = prey_ooc_favs
prey_goes_here.ooc_notes_maybes = prey_ooc_maybes prey_goes_here.ooc_notes_maybes = prey_ooc_maybes
prey_goes_here.ooc_notes_style = prey_ooc_style prey_goes_here.ooc_notes_style = prey_ooc_style
//CHOMPEdit End
/////////////////// ///////////////////
@@ -159,11 +153,9 @@
pred_body.ooc_notes = pred_ooc_notes pred_body.ooc_notes = pred_ooc_notes
pred_body.ooc_notes_likes = pred_ooc_likes pred_body.ooc_notes_likes = pred_ooc_likes
pred_body.ooc_notes_dislikes = pred_ooc_dislikes pred_body.ooc_notes_dislikes = pred_ooc_dislikes
//CHOMPEdit Start
pred_body.ooc_notes_favs = pred_ooc_favs pred_body.ooc_notes_favs = pred_ooc_favs
pred_body.ooc_notes_maybes = pred_ooc_maybes pred_body.ooc_notes_maybes = pred_ooc_maybes
pred_body.ooc_notes_style = pred_ooc_style pred_body.ooc_notes_style = pred_ooc_style
//CHOMPEdit End
log_and_message_admins("is now controlled by [pred_body.ckey]. They were restored to control through prey domination, and had been controlled by [prey_ckey].", pred_body) log_and_message_admins("is now controlled by [pred_body.ckey]. They were restored to control through prey domination, and had been controlled by [prey_ckey].", pred_body)
pred_body.absorb_langs() pred_body.absorb_langs()
pred_body.prey_controlled = FALSE pred_body.prey_controlled = FALSE
@@ -197,7 +189,7 @@
set category = "Abilities.Vore" set category = "Abilities.Vore"
set name = "Dominate Predator" set name = "Dominate Predator"
set desc = "Connect to and dominate the brain of your predator." set desc = "Connect to and dominate the brain of your predator."
var/is_mob = FALSE //CHOMPAdd - tracks if character is a non player mob var/is_mob = FALSE // - tracks if character is a non player mob TODO: Add
var/mob/living/pred var/mob/living/pred
var/mob/living/prey = src var/mob/living/prey = src
@@ -240,7 +232,6 @@
to_chat(prey, span_notice("You attempt to exert your control over \the [pred]...")) to_chat(prey, span_notice("You attempt to exert your control over \the [pred]..."))
log_admin("[key_name_admin(prey)] attempted to take over [pred].") log_admin("[key_name_admin(prey)] attempted to take over [pred].")
//CHOMPEdit start - Ability to use dominate pred trait against whitelisted mobs
if(pred.ckey) //check if body is assigned to another player currently if(pred.ckey) //check if body is assigned to another player currently
if(tgui_alert(pred, "\The [prey] has elected to attempt to take control of you. Is this something you will allow to happen?", "Allow Prey Domination",list("No","Yes")) != "Yes") if(tgui_alert(pred, "\The [prey] has elected to attempt to take control of you. Is this something you will allow to happen?", "Allow Prey Domination",list("No","Yes")) != "Yes")
to_chat(prey, span_warning("\The [pred] declined your request for control.")) to_chat(prey, span_warning("\The [pred] declined your request for control."))
@@ -254,7 +245,6 @@
else //at this point we end up with a mob else //at this point we end up with a mob
pred.ckey = "DOMMOB[rand(100000,999999)]" //this is cursed, but it does work and is cleaned up after pred.ckey = "DOMMOB[rand(100000,999999)]" //this is cursed, but it does work and is cleaned up after
is_mob = TRUE is_mob = TRUE
//CHOMPEdit end
to_chat(pred, span_warning("You can feel the will of another overwriting your own, control of your body being sapped away from you...")) to_chat(pred, span_warning("You can feel the will of another overwriting your own, control of your body being sapped away from you..."))
to_chat(prey, span_warning("You can feel the will of your host diminishing as you exert your will over them!")) to_chat(prey, span_warning("You can feel the will of your host diminishing as you exert your will over them!"))
@@ -280,14 +270,12 @@
pred_brain.prey_ooc_notes = prey.ooc_notes pred_brain.prey_ooc_notes = prey.ooc_notes
pred_brain.prey_ooc_likes = prey.ooc_notes_likes pred_brain.prey_ooc_likes = prey.ooc_notes_likes
pred_brain.prey_ooc_dislikes = prey.ooc_notes_dislikes pred_brain.prey_ooc_dislikes = prey.ooc_notes_dislikes
//CHOMPEdit Start
pred_brain.prey_ooc_favs = prey.ooc_notes_favs pred_brain.prey_ooc_favs = prey.ooc_notes_favs
pred_brain.prey_ooc_maybes = prey.ooc_notes_maybes pred_brain.prey_ooc_maybes = prey.ooc_notes_maybes
pred_brain.prey_ooc_style = prey.ooc_notes_style pred_brain.prey_ooc_style = prey.ooc_notes_style
pred_brain.pred_ooc_favs = pred.ooc_notes_favs pred_brain.pred_ooc_favs = pred.ooc_notes_favs
pred_brain.pred_ooc_maybes = pred.ooc_notes_maybes pred_brain.pred_ooc_maybes = pred.ooc_notes_maybes
pred_brain.pred_ooc_style = pred.ooc_notes_style pred_brain.pred_ooc_style = pred.ooc_notes_style
//CHOMPEdit End
pred_brain.pred_ooc_notes = pred.ooc_notes pred_brain.pred_ooc_notes = pred.ooc_notes
pred_brain.pred_ooc_likes = pred.ooc_notes_likes pred_brain.pred_ooc_likes = pred.ooc_notes_likes
pred_brain.pred_ooc_dislikes = pred.ooc_notes_dislikes pred_brain.pred_ooc_dislikes = pred.ooc_notes_dislikes
@@ -303,11 +291,9 @@
pred.ooc_notes = pred_brain.prey_ooc_notes pred.ooc_notes = pred_brain.prey_ooc_notes
pred.ooc_notes_likes = pred_brain.prey_ooc_likes pred.ooc_notes_likes = pred_brain.prey_ooc_likes
pred.ooc_notes_dislikes = pred_brain.prey_ooc_dislikes pred.ooc_notes_dislikes = pred_brain.prey_ooc_dislikes
//CHOMPEdit Start
pred.ooc_notes_favs = pred_brain.prey_ooc_favs pred.ooc_notes_favs = pred_brain.prey_ooc_favs
pred.ooc_notes_maybes = pred_brain.prey_ooc_maybes pred.ooc_notes_maybes = pred_brain.prey_ooc_maybes
pred.ooc_notes_style = pred_brain.prey_ooc_style pred.ooc_notes_style = pred_brain.prey_ooc_style
//CHOMPEdit End
add_verb(pred, /mob/proc/release_predator) add_verb(pred, /mob/proc/release_predator)
@@ -320,10 +306,8 @@
if(delete_source) if(delete_source)
qdel(prey) qdel(prey)
//CHOMPEdit start - extra variable for mobs that assist cleanup
if(is_mob == 1) if(is_mob == 1)
pred_brain.was_mob = TRUE pred_brain.was_mob = TRUE
//CHOMPEdit End
/mob/proc/release_predator() /mob/proc/release_predator()
set category = "Abilities.Vore" set category = "Abilities.Vore"
@@ -336,13 +320,13 @@
if(db.ckey == db.pred_ckey) if(db.ckey == db.pred_ckey)
to_chat(src, span_notice("You ease off of your control, releasing \the [db].")) to_chat(src, span_notice("You ease off of your control, releasing \the [db]."))
to_chat(db, span_notice("You feel the alien presence fade, and restore control of your body to you of their own will...")) to_chat(db, span_notice("You feel the alien presence fade, and restore control of your body to you of their own will..."))
if(db.was_mob) //CHOMPEdit start - clean up if the dominated body was a playerless mob if(db.was_mob)
db.pred_ckey = null db.pred_ckey = null
db.ckey = null db.ckey = null
db.restore_control() db.restore_control()
else else
db.restore_control() db.restore_control()
return //CHOMPEdit end return
else else
continue continue
to_chat(src, span_danger("You haven't been taken over, and shouldn't have this verb. I'll clean that up for you. Report this on the github, it is a bug.")) to_chat(src, span_danger("You haven't been taken over, and shouldn't have this verb. I'll clean that up for you. Report this on the github, it is a bug."))
@@ -379,7 +363,6 @@
possible_mobs |= L possible_mobs |= L
else else
continue continue
//CHOMPEdit Start - Let dominate prey work on grabbed people
var/obj/item/grab/G = src.get_active_hand() var/obj/item/grab/G = src.get_active_hand()
if(istype(G)) if(istype(G))
var/mob/living/L = G.affecting var/mob/living/L = G.affecting
@@ -388,7 +371,6 @@
possible_mobs |= "~~[L.name]~~ (reinforce grab first)" possible_mobs |= "~~[L.name]~~ (reinforce grab first)"
else else
possible_mobs |= L possible_mobs |= L
//CHOMPEdit End
if(!possible_mobs) if(!possible_mobs)
to_chat(src, span_warning("There are no valid targets inside of you.")) to_chat(src, span_warning("There are no valid targets inside of you."))
return return
@@ -396,11 +378,9 @@
if(!input) if(!input)
return return
var/mob/living/M = input var/mob/living/M = input
//CHOMPEdit Start - Let dominate prey work on grabbed people
if(!istype(M)) if(!istype(M))
to_chat(src, span_warning("You must have a tighter grip to dominate this creature.")) to_chat(src, span_warning("You must have a tighter grip to dominate this creature."))
return return
//CHOMPEdit End
if(!M.allow_mind_transfer) //check if the dominated mob pref is enabled if(!M.allow_mind_transfer) //check if the dominated mob pref is enabled
to_chat(src, span_warning("[M] is unable to be dominated.")) to_chat(src, span_warning("[M] is unable to be dominated."))
return return
@@ -417,10 +397,8 @@
to_chat(M, span_warning("You can feel the will of another pulling you away from your body...")) to_chat(M, span_warning("You can feel the will of another pulling you away from your body..."))
to_chat(src, span_warning("You can feel the will of your prey diminishing as you gather them!")) to_chat(src, span_warning("You can feel the will of your prey diminishing as you gather them!"))
//CHOMPEdit Start - Let dominate prey work on grabbed people
if(istype(G) && M == G.affecting) if(istype(G) && M == G.affecting)
src.visible_message(span_danger("[src] seems to be doing something to [M], resulting in [M]'s body looking increasingly drowsy with every passing moment!")) src.visible_message(span_danger("[src] seems to be doing something to [M], resulting in [M]'s body looking increasingly drowsy with every passing moment!"))
//CHOMPEdit End
if(!do_after(src, 10 SECONDS, exclusive = TRUE)) if(!do_after(src, 10 SECONDS, exclusive = TRUE))
to_chat(M, span_notice("The alien presence fades, and you are left along in your body...")) to_chat(M, span_notice("The alien presence fades, and you are left along in your body..."))
to_chat(src, span_notice("Your attempt to gather [M]'s mind has been interrupted.")) to_chat(src, span_notice("Your attempt to gather [M]'s mind has been interrupted."))
@@ -445,14 +423,12 @@
db.ooc_notes = M.ooc_notes db.ooc_notes = M.ooc_notes
db.ooc_notes_likes = M.ooc_notes_likes db.ooc_notes_likes = M.ooc_notes_likes
db.ooc_notes_dislikes = M.ooc_notes_dislikes db.ooc_notes_dislikes = M.ooc_notes_dislikes
//CHOMPEdit Start
db.ooc_notes_favs = M.ooc_notes_favs db.ooc_notes_favs = M.ooc_notes_favs
db.ooc_notes_maybes = M.ooc_notes_maybes db.ooc_notes_maybes = M.ooc_notes_maybes
db.ooc_notes_style = M.ooc_notes_style db.ooc_notes_style = M.ooc_notes_style
db.prey_ooc_favs = M.ooc_notes_favs db.prey_ooc_favs = M.ooc_notes_favs
db.prey_ooc_maybes = M.ooc_notes_maybes db.prey_ooc_maybes = M.ooc_notes_maybes
db.prey_ooc_style = M.ooc_notes_style db.prey_ooc_style = M.ooc_notes_style
//CHOMPEdit End
db.prey_ooc_likes = M.ooc_notes_likes db.prey_ooc_likes = M.ooc_notes_likes
db.prey_ooc_dislikes = M.ooc_notes_dislikes db.prey_ooc_dislikes = M.ooc_notes_dislikes
add_verb(db, /mob/living/dominated_brain/proc/cease_this_foolishness) add_verb(db, /mob/living/dominated_brain/proc/cease_this_foolishness)
@@ -463,10 +439,8 @@
log_admin("[db] ([db.ckey]) has agreed to [src]'s dominate prey attempt, and so no longer occupies their original body.") log_admin("[db] ([db.ckey]) has agreed to [src]'s dominate prey attempt, and so no longer occupies their original body.")
to_chat(src, span_notice("You feel your mind expanded as [M] is incorporated into you.")) to_chat(src, span_notice("You feel your mind expanded as [M] is incorporated into you."))
to_chat(M, span_warning("Your mind is gathered into \the [src], becoming part of them...")) to_chat(M, span_warning("Your mind is gathered into \the [src], becoming part of them..."))
//CHOMPEdit Start - Let dominate prey work on grabbed people
if(istype(G) && M == G.affecting) if(istype(G) && M == G.affecting)
visible_message(span_danger("[src] seems to finish whatever they were doing to [M].")) visible_message(span_danger("[src] seems to finish whatever they were doing to [M]."))
//CHOMPEdit End
/mob/living/dominated_brain/proc/cease_this_foolishness() /mob/living/dominated_brain/proc/cease_this_foolishness()
set category = "Abilities.Vore" set category = "Abilities.Vore"
@@ -565,14 +539,12 @@
pred_brain.prey_ooc_notes = prey.ooc_notes pred_brain.prey_ooc_notes = prey.ooc_notes
pred_brain.prey_ooc_likes = prey.ooc_notes_likes pred_brain.prey_ooc_likes = prey.ooc_notes_likes
pred_brain.prey_ooc_dislikes = prey.ooc_notes_dislikes pred_brain.prey_ooc_dislikes = prey.ooc_notes_dislikes
//CHOMPEdit Start
pred_brain.prey_ooc_favs = prey.ooc_notes_favs pred_brain.prey_ooc_favs = prey.ooc_notes_favs
pred_brain.prey_ooc_maybes = prey.ooc_notes_maybes pred_brain.prey_ooc_maybes = prey.ooc_notes_maybes
pred_brain.prey_ooc_style = prey.ooc_notes_style pred_brain.prey_ooc_style = prey.ooc_notes_style
pred_brain.pred_ooc_favs = pred.ooc_notes_favs pred_brain.pred_ooc_favs = pred.ooc_notes_favs
pred_brain.pred_ooc_maybes = pred.ooc_notes_maybes pred_brain.pred_ooc_maybes = pred.ooc_notes_maybes
pred_brain.pred_ooc_style = pred.ooc_notes_style pred_brain.pred_ooc_style = pred.ooc_notes_style
//CHOMPEdit End
pred_brain.pred_ooc_notes = pred.ooc_notes pred_brain.pred_ooc_notes = pred.ooc_notes
pred_brain.pred_ooc_likes = pred.ooc_notes_likes pred_brain.pred_ooc_likes = pred.ooc_notes_likes
pred_brain.pred_ooc_dislikes = pred.ooc_notes_dislikes pred_brain.pred_ooc_dislikes = pred.ooc_notes_dislikes
@@ -587,11 +559,9 @@
pred.ooc_notes = pred_brain.prey_ooc_notes pred.ooc_notes = pred_brain.prey_ooc_notes
pred.ooc_notes_likes = pred_brain.prey_ooc_likes pred.ooc_notes_likes = pred_brain.prey_ooc_likes
pred.ooc_notes_dislikes = pred_brain.prey_ooc_dislikes pred.ooc_notes_dislikes = pred_brain.prey_ooc_dislikes
//CHOMPEdit Start
pred.ooc_notes_favs = pred_brain.prey_ooc_favs pred.ooc_notes_favs = pred_brain.prey_ooc_favs
pred.ooc_notes_maybes = pred_brain.prey_ooc_maybes pred.ooc_notes_maybes = pred_brain.prey_ooc_maybes
pred.ooc_notes_style = pred_brain.prey_ooc_style pred.ooc_notes_style = pred_brain.prey_ooc_style
//CHOMPEdit End
add_verb(pred, /mob/proc/release_predator) add_verb(pred, /mob/proc/release_predator)

View File

@@ -22,11 +22,9 @@
ooc_notes = client.prefs.read_preference(/datum/preference/text/living/ooc_notes) ooc_notes = client.prefs.read_preference(/datum/preference/text/living/ooc_notes)
ooc_notes_likes = client.prefs.read_preference(/datum/preference/text/living/ooc_notes_likes) ooc_notes_likes = client.prefs.read_preference(/datum/preference/text/living/ooc_notes_likes)
ooc_notes_dislikes = client.prefs.read_preference(/datum/preference/text/living/ooc_notes_dislikes) ooc_notes_dislikes = client.prefs.read_preference(/datum/preference/text/living/ooc_notes_dislikes)
//CHOMPEnable Start
ooc_notes_favs = read_preference(/datum/preference/text/living/ooc_notes_favs) ooc_notes_favs = read_preference(/datum/preference/text/living/ooc_notes_favs)
ooc_notes_maybes = read_preference(/datum/preference/text/living/ooc_notes_maybes) ooc_notes_maybes = read_preference(/datum/preference/text/living/ooc_notes_maybes)
ooc_notes_style = read_preference(/datum/preference/toggle/living/ooc_notes_style) ooc_notes_style = read_preference(/datum/preference/toggle/living/ooc_notes_style)
//CHOMPEnable End
private_notes = client.prefs.read_preference(/datum/preference/text/living/private_notes) private_notes = client.prefs.read_preference(/datum/preference/text/living/private_notes)
digestable = client.prefs_vr.digestable digestable = client.prefs_vr.digestable
devourable = client.prefs_vr.devourable devourable = client.prefs_vr.devourable

View File

@@ -259,11 +259,9 @@
brainmob.ooc_notes = H.ooc_notes brainmob.ooc_notes = H.ooc_notes
brainmob.ooc_notes_likes = H.ooc_notes_likes brainmob.ooc_notes_likes = H.ooc_notes_likes
brainmob.ooc_notes_dislikes = H.ooc_notes_dislikes brainmob.ooc_notes_dislikes = H.ooc_notes_dislikes
//CHOMPEnable Start
brainmob.ooc_notes_favs = H.ooc_notes_favs brainmob.ooc_notes_favs = H.ooc_notes_favs
brainmob.ooc_notes_maybes = H.ooc_notes_maybes brainmob.ooc_notes_maybes = H.ooc_notes_maybes
brainmob.ooc_notes_style = H.ooc_notes_style brainmob.ooc_notes_style = H.ooc_notes_style
//CHOMPEnable End
brainmob.timeofhostdeath = H.timeofdeath brainmob.timeofhostdeath = H.timeofdeath
SStranscore.m_backup(brainmob.mind,0) //It does ONE, so medical will hear about it. SStranscore.m_backup(brainmob.mind,0) //It does ONE, so medical will hear about it.

View File

@@ -111,11 +111,9 @@ GLOBAL_LIST_BOILERPLATE(all_brain_organs, /obj/item/organ/internal/brain)
brainmob.ooc_notes = H.ooc_notes brainmob.ooc_notes = H.ooc_notes
brainmob.ooc_notes_likes = H.ooc_notes_likes brainmob.ooc_notes_likes = H.ooc_notes_likes
brainmob.ooc_notes_dislikes = H.ooc_notes_dislikes brainmob.ooc_notes_dislikes = H.ooc_notes_dislikes
//CHOMPEdit Start
brainmob.ooc_notes_favs = H.ooc_notes_favs brainmob.ooc_notes_favs = H.ooc_notes_favs
brainmob.ooc_notes_maybes = H.ooc_notes_maybes brainmob.ooc_notes_maybes = H.ooc_notes_maybes
brainmob.ooc_notes_style = H.ooc_notes_style brainmob.ooc_notes_style = H.ooc_notes_style
//CHOMPEdit End
// Copy modifiers. // Copy modifiers.
for(var/datum/modifier/M in H.modifiers) for(var/datum/modifier/M in H.modifiers)

View File

@@ -113,6 +113,8 @@
for(var/atom/movable/A in affecting) for(var/atom/movable/A in affecting)
if(istype(A,/obj/effect/abstract)) // Flashlight's lights are not physical objects if(istype(A,/obj/effect/abstract)) // Flashlight's lights are not physical objects
continue continue
if(A.is_incorporeal())
continue
if(!A.anchored) if(!A.anchored)
if(A.loc == src.loc) // prevents the object from being affected if it's not currently here. if(A.loc == src.loc) // prevents the object from being affected if it's not currently here.
step(A,movedir) step(A,movedir)

View File

@@ -26,11 +26,9 @@
var/mind_oocnotes = "" var/mind_oocnotes = ""
var/mind_ooclikes = "" var/mind_ooclikes = ""
var/mind_oocdislikes = "" var/mind_oocdislikes = ""
//CHOMPEdit Start
var/mind_oocfavs = "" var/mind_oocfavs = ""
var/mind_oocmaybes = "" var/mind_oocmaybes = ""
var/mind_oocstyle = FALSE var/mind_oocstyle = FALSE
//CHOMPEdit End
var/nif_path var/nif_path
var/nif_durability var/nif_durability
var/list/nif_software var/list/nif_software
@@ -66,10 +64,8 @@
nif_software = nifsofts nif_software = nifsofts
nif_savedata = M.nif.save_data.Copy() nif_savedata = M.nif.save_data.Copy()
//CHOMPEdit Start - Preference for Automatic transcore notifications
if(istype(M,/mob) && !M.read_preference(/datum/preference/toggle/autotranscore)) if(istype(M,/mob) && !M.read_preference(/datum/preference/toggle/autotranscore))
do_notify = FALSE do_notify = FALSE
//CHOMPEdit End
last_update = world.time last_update = world.time
@@ -91,11 +87,9 @@
var/body_oocnotes var/body_oocnotes
var/body_ooclikes var/body_ooclikes
var/body_oocdislikes var/body_oocdislikes
//CHOMPEdit Start
var/body_oocfavs var/body_oocfavs
var/body_oocmaybes var/body_oocmaybes
var/body_oocstyle var/body_oocstyle
//CHOMPEdit End
var/list/limb_data = list(BP_HEAD, BP_L_HAND, BP_R_HAND, BP_L_ARM, BP_R_ARM, BP_L_FOOT, BP_R_FOOT, BP_L_LEG, BP_R_LEG, BP_GROIN, BP_TORSO) var/list/limb_data = list(BP_HEAD, BP_L_HAND, BP_R_HAND, BP_L_ARM, BP_R_ARM, BP_L_FOOT, BP_R_FOOT, BP_L_LEG, BP_R_LEG, BP_GROIN, BP_TORSO)
var/list/organ_data = list(O_HEART, O_EYES, O_LUNGS, O_BRAIN) var/list/organ_data = list(O_HEART, O_EYES, O_LUNGS, O_BRAIN)
var/list/genetic_modifiers = list() var/list/genetic_modifiers = list()
@@ -129,7 +123,6 @@
//Person OOCly doesn't want people impersonating them //Person OOCly doesn't want people impersonating them
locked = ckeylock locked = ckeylock
//CHOMPEdit Start, keep the lock
//Prevent people from printing restricted and whitelisted species //Prevent people from printing restricted and whitelisted species
var/datum/species/S = GLOB.all_species["[M.dna.species]"] var/datum/species/S = GLOB.all_species["[M.dna.species]"]
if(S) if(S)
@@ -137,7 +130,6 @@
// Force ckey locking if species is whitelisted // Force ckey locking if species is whitelisted
//if((S.spawn_flags & SPECIES_IS_WHITELISTED) || (S.spawn_flags & SPECIES_IS_RESTRICTED)) //if((S.spawn_flags & SPECIES_IS_WHITELISTED) || (S.spawn_flags & SPECIES_IS_RESTRICTED))
//locked = TRUE //locked = TRUE
//CHOMPEdit End
//General stuff about them //General stuff about them
synthetic = M.isSynthetic() synthetic = M.isSynthetic()

View File

@@ -128,11 +128,9 @@
H.ooc_notes = current_project.body_oocnotes H.ooc_notes = current_project.body_oocnotes
H.ooc_notes_likes = current_project.body_ooclikes H.ooc_notes_likes = current_project.body_ooclikes
H.ooc_notes_dislikes = current_project.body_oocdislikes H.ooc_notes_dislikes = current_project.body_oocdislikes
//CHOMPEdit Start
H.ooc_notes_favs = current_project.body_oocfavs H.ooc_notes_favs = current_project.body_oocfavs
H.ooc_notes_maybes = current_project.body_oocmaybes H.ooc_notes_maybes = current_project.body_oocmaybes
H.ooc_notes_style = current_project.body_oocstyle H.ooc_notes_style = current_project.body_oocstyle
//CHOMPEdit End
H.flavor_texts = current_project.mydna.flavor.Copy() H.flavor_texts = current_project.mydna.flavor.Copy()
H.resize(current_project.sizemult, FALSE) H.resize(current_project.sizemult, FALSE)
H.appearance_flags = current_project.aflags H.appearance_flags = current_project.aflags
@@ -615,11 +613,9 @@
occupant.ooc_notes = MR.mind_oocnotes occupant.ooc_notes = MR.mind_oocnotes
occupant.ooc_notes_likes = MR.mind_ooclikes occupant.ooc_notes_likes = MR.mind_ooclikes
occupant.ooc_notes_dislikes = MR.mind_oocdislikes occupant.ooc_notes_dislikes = MR.mind_oocdislikes
//CHOMPEdit Start
occupant.ooc_notes_favs = MR.mind_oocfavs occupant.ooc_notes_favs = MR.mind_oocfavs
occupant.ooc_notes_maybes = MR.mind_oocmaybes occupant.ooc_notes_maybes = MR.mind_oocmaybes
occupant.ooc_notes_style = MR.mind_oocstyle occupant.ooc_notes_style = MR.mind_oocstyle
//CHOMPEdit End
occupant.apply_vore_prefs() //Cheap hack for now to give them SOME bellies. occupant.apply_vore_prefs() //Cheap hack for now to give them SOME bellies.
if(MR.one_time) if(MR.one_time)

View File

@@ -46,11 +46,9 @@
infomorph.ooc_notes = MR.mind_oocnotes infomorph.ooc_notes = MR.mind_oocnotes
infomorph.ooc_notes_likes = MR.mind_ooclikes infomorph.ooc_notes_likes = MR.mind_ooclikes
infomorph.ooc_notes_dislikes = MR.mind_oocdislikes infomorph.ooc_notes_dislikes = MR.mind_oocdislikes
//CHOMPEdit Start
infomorph.ooc_notes_favs = MR.mind_oocfavs infomorph.ooc_notes_favs = MR.mind_oocfavs
infomorph.ooc_notes_maybes = MR.mind_oocmaybes infomorph.ooc_notes_maybes = MR.mind_oocmaybes
infomorph.ooc_notes_style = MR.mind_oocstyle infomorph.ooc_notes_style = MR.mind_oocstyle
//CHOMPEdit End
infomorph.apply_vore_prefs() //Cheap hack for now to give them SOME bellies. infomorph.apply_vore_prefs() //Cheap hack for now to give them SOME bellies.
//Don't set 'real_name' because then we get a nice (as sleevecard) thing. //Don't set 'real_name' because then we get a nice (as sleevecard) thing.

View File

@@ -1100,7 +1100,6 @@
save_ooc_panel(usr) save_ooc_panel(usr)
if(href_list["print_ooc_notes_chat"]) if(href_list["print_ooc_notes_chat"])
print_ooc_notes_chat(usr) print_ooc_notes_chat(usr)
// CHOMPEnable Start
if(href_list["edit_ooc_note_favs"]) if(href_list["edit_ooc_note_favs"])
if(usr == src) if(usr == src)
set_metainfo_favs(usr) set_metainfo_favs(usr)
@@ -1109,7 +1108,6 @@
set_metainfo_maybes(usr) set_metainfo_maybes(usr)
if(href_list["set_metainfo_ooc_style"]) if(href_list["set_metainfo_ooc_style"])
set_metainfo_ooc_style(usr) set_metainfo_ooc_style(usr)
// CHOMPEnable End
if(href_list["save_private_notes"]) if(href_list["save_private_notes"])
if(usr == src) if(usr == src)
save_private_notes(usr) save_private_notes(usr)

View File

@@ -168,11 +168,9 @@
brainmob.ooc_notes = L.ooc_notes brainmob.ooc_notes = L.ooc_notes
brainmob.ooc_notes_likes = L.ooc_notes_likes brainmob.ooc_notes_likes = L.ooc_notes_likes
brainmob.ooc_notes_dislikes = L.ooc_notes_dislikes brainmob.ooc_notes_dislikes = L.ooc_notes_dislikes
/* Not implemented on virgo
brainmob.ooc_notes_favs = L.ooc_notes_favs brainmob.ooc_notes_favs = L.ooc_notes_favs
brainmob.ooc_notes_maybes = L.ooc_notes_maybes brainmob.ooc_notes_maybes = L.ooc_notes_maybes
brainmob.ooc_notes_style = L.ooc_notes_style brainmob.ooc_notes_style = L.ooc_notes_style
*/
brainmob.timeofhostdeath = L.timeofdeath brainmob.timeofhostdeath = L.timeofdeath
if(ishuman(L)) if(ishuman(L))
SStranscore.m_backup(brainmob.mind,0) //It does ONE, so medical will hear about it. SStranscore.m_backup(brainmob.mind,0) //It does ONE, so medical will hear about it.

View File

@@ -35,60 +35,7 @@
apply_layer(SHOES_LAYER) apply_layer(SHOES_LAYER)
apply_layer(SHOES_LAYER_ALT) apply_layer(SHOES_LAYER_ALT)
/mob/living/carbon/human/proc/GetAppearanceFromPrefs(var/flavourtext, var/oocnotes)
/* Jank code that effectively creates the client's mob from save, then copies its appearance to our current mob.
Intended to be used with shapeshifter species so we don't reset their organs in doing so.*/
if(client.prefs)
var/mob/living/carbon/human/dummy/mannequin/Dummy = get_mannequin(client.ckey)
client.prefs.copy_to(Dummy)
//Important, since some sprites only work for specific species
/* Probably not needed anymore since impersonate_bodytype no longer exists
if(Dummy.species.base_species == "Promethean")
impersonate_bodytype = "Human"
else
impersonate_bodytype = Dummy.species.base_species
*/
custom_species = Dummy.custom_species
var/list/traits = dna.species_traits.Copy()
dna = Dummy.dna.Clone()
dna.species_traits.Cut()
dna.species_traits = traits.Copy()
UpdateAppearance()
icon = Dummy.icon
if(flavourtext)
flavor_texts = client.prefs.flavor_texts.Copy()
if(oocnotes)
ooc_notes = client.prefs.read_preference(/datum/preference/text/living/ooc_notes)
ooc_notes_likes = client.prefs.read_preference(/datum/preference/text/living/ooc_notes_likes)
ooc_notes_dislikes = client.prefs.read_preference(/datum/preference/text/living/ooc_notes_dislikes)
ooc_notes_favs = read_preference(/datum/preference/text/living/ooc_notes_favs)
ooc_notes_maybes = read_preference(/datum/preference/text/living/ooc_notes_maybes)
ooc_notes_style = read_preference(/datum/preference/toggle/living/ooc_notes_style)
/* Alternative version of the above proc, incase it turns out cloning our dummy mob's DNA is an awful, terrible bad idea.
Would need to fix this proc up to work as smoothly as the above proc, though.
/mob/living/carbon/human/proc/GetAppearanceFromPrefs()
/* Jank code that effectively creates the client's mob from save, then copies its appearance to our current mob.
Intended to be used with shapeshifter species so we don't reset their organs in doing so.*/
var/mob/living/carbon/human/dummy/mannequin/Dummy = new
if(client.prefs)
client.prefs.copy_to(Dummy)
//Important, since some sprites only work for specific species
if(Dummy.species.base_species == "Promethean")
impersonate_bodytype = "Human"
else
impersonate_bodytype = Dummy.species.base_species
custom_species = Dummy.custom_species
for(var/tag in Dummy.dna.body_markings)
var/obj/item/organ/external/E = organs_by_name[tag]
if(E)
E.markings.Cut()
var/list/marklist = Dummy.dna.body_markings[tag]
E.markings = marklist.Copy()
UpdateAppearance(Dummy.dna.UI.Copy())
icon = Dummy.icon
qdel(Dummy)
*/
/mob/living/carbon/human/update_tail_showing() /mob/living/carbon/human/update_tail_showing()
. = ..() . = ..()

View File

@@ -37,41 +37,3 @@ Maybe later, gotta figure out a way to click yourself when in a locker etc.
/mob/living/proc/handle_vorefootstep(m_intent, turf/T) // Moved from living_ch.dm /mob/living/proc/handle_vorefootstep(m_intent, turf/T) // Moved from living_ch.dm
return FALSE return FALSE
//ChompEDIT START - Removal of usr
/mob/living/proc/set_metainfo_favs(var/mob/user, var/reopen = TRUE)
if(user != src)
return
var/new_metadata = strip_html_simple(tgui_input_text(user, "Enter any information you'd like others to see relating to your FAVOURITE roleplay preferences. This will not be saved permanently unless you click save in the OOC notes panel! Type \"!clear\" to empty.", "Game Preference" , html_decode(ooc_notes_favs), multiline = TRUE, prevent_enter = TRUE))
if(new_metadata && CanUseTopic(user))
if(new_metadata == "!clear")
new_metadata = ""
ooc_notes_favs = new_metadata
client.prefs.update_preference_by_type(/datum/preference/text/living/ooc_notes_favs, new_metadata)
to_chat(user, span_filter_notice("OOC note favs have been updated. Don't forget to save!"))
log_admin("[key_name(user)] updated their OOC note favs mid-round.")
if(reopen)
ooc_notes_window(user)
/mob/living/proc/set_metainfo_maybes(var/mob/user, var/reopen = TRUE)
if(user != src)
return
var/new_metadata = strip_html_simple(tgui_input_text(user, "Enter any information you'd like others to see relating to your MAYBE roleplay preferences. This will not be saved permanently unless you click save in the OOC notes panel! Type \"!clear\" to empty.", "Game Preference" , html_decode(ooc_notes_maybes), multiline = TRUE, prevent_enter = TRUE))
if(new_metadata && CanUseTopic(user))
if(new_metadata == "!clear")
new_metadata = ""
ooc_notes_maybes = new_metadata
client.prefs.update_preference_by_type(/datum/preference/text/living/ooc_notes_maybes, new_metadata)
to_chat(user, span_filter_notice("OOC note maybes have been updated. Don't forget to save!"))
log_admin("[key_name(user)] updated their OOC note maybes mid-round.")
if(reopen)
ooc_notes_window(user)
/mob/living/proc/set_metainfo_ooc_style(var/mob/user, var/reopen = TRUE)
if(user != src)
return
ooc_notes_style = !ooc_notes_style
client.prefs.update_preference_by_type(/datum/preference/toggle/living/ooc_notes_style, ooc_notes_style)
if(reopen)
ooc_notes_window(user)
//ChompEDIT END - Removal of usr

View File

@@ -1,4 +0,0 @@
/mob/living
var/ooc_notes_favs = null
var/ooc_notes_maybes = null
var/ooc_notes_style = FALSE

View File

@@ -1,208 +0,0 @@
/mob/living/ooc_notes_window(mob/user)
if(!ooc_notes)
return
//I tried to get it to accept things like emojis and all that, but, it wouldn't do! It would be cool if it did.
var/notes = replacetext(html_decode(src.ooc_notes), "\n", "<BR>")
var/favs = replacetext(html_decode(src.ooc_notes_favs), "\n", "<BR>")
var/likes = replacetext(html_decode(src.ooc_notes_likes), "\n", "<BR>")
var/maybes = replacetext(html_decode(src.ooc_notes_maybes), "\n", "<BR>")
var/dislikes = replacetext(html_decode(src.ooc_notes_dislikes), "\n", "<BR>")
var/style = src.ooc_notes_style
var/dat = {"
<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">
<html>
<head>
<style>
* {
box-sizing: border-box;
}
.collapsible {
background-color: #1a1e3f;
color: white;
width: 100%;
text-align: left;
font-size: 20px;
}
.collapsible_a {
background-color: #263d20;
color: white;
width: 100%;
text-align: left;
font-size: 20px;
}
.collapsible_b {
background-color: #3e3f1a;
color: white;
width: 100%;
text-align: left;
font-size: 20px;
}
.collapsible_c {
background-color: #3f1a1a;
color: white;
width: 100%;
text-align: left;
font-size: 20px;
}
.content {
padding: 5;
width: 100%;
background-color: #363636;
}
.column {
verflow-wrap: break-word;
float: left;
width: 25%;
}
.row:after {
content: "";
display: table;
clear: both;
}
</style>
</head>"}
dat += {"<body><table>"}
if(user == src)
dat += {"
<td class="button">
<a href='byond://?src=\ref[src];save_ooc_panel=1' class='button'>Save Character Preferences</a>
</td>
"}
dat += {"
<td class="button">
<a href='byond://?src=\ref[src];print_ooc_notes_chat=1' class='button'>Print to chat</a>
</td>
"}
if(user == src)
if(style)
dat += {"
<td class="button">
<a href='byond://?src=\ref[src];set_metainfo_ooc_style=1' class='button'>Lists</a>
</td>
"}
else
dat += {"
<td class="button">
<a href='byond://?src=\ref[src];set_metainfo_ooc_style=1' class='button'>Fields</a>
</td>
"}
dat += {"</table>"}
if(user == src)
dat += {"
<br>
<table>
<td class="button">
<a href='byond://?src=\ref[src];edit_ooc_notes=1' class='button'>Edit</a>
</td>
</table>
"}
dat += {"
<br>
<div class="content">
<p>[notes]</p>
</div>
<br>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">"}
if(style)
dat += {"<div class='row'><div class='column'>"}
if(favs || user == src)
dat += "<div class=\"collapsible\">" + span_bold("<center>Favourites</center>") + "</div>"
if(user == src)
dat += {"
<table>
<td class="button">
<a href='byond://?src=\ref[src];edit_ooc_note_favs=1' class='button'>Edit</a>
</td>
</table>
"}
if(favs)
dat += {"
<div class="content">
<p>[favs]</p>
</div>"}
if(style)
dat += {"</div>"}
dat += {"<div class='column'>"}
if(likes || user == src)
dat += "<div class=\"collapsible_a\">" + span_bold("<center>Likes</center>") + "</div>"
if(user == src)
dat += {"
<table>
<td class="button">
<a href='byond://?src=\ref[src];edit_ooc_note_likes=1' class='button'>Edit</a>
</td>
</table>
"}
if(likes)
dat += {"
<div class="content">
<p>[likes]</p>
</div>"}
if(style)
dat += {"</div>"}
dat += {"<div class='column'>"}
if(maybes || user == src)
dat += "<div class=\"collapsible_b\">" + span_bold("<center>Maybes</center>") + "</div>"
if(user == src)
dat += {"
<table>
<td class="button">
<a href='byond://?src=\ref[src];edit_ooc_note_maybes=1' class='button'>Edit</a>
</td>
</table>
"}
if(maybes)
dat += {"
<div class="content">
<p>[maybes]</p>
</div>
"}
if(style)
dat += {"</div>"}
dat += {"<div class='column'>"}
if(dislikes || user == src)
dat += "<div class=\"collapsible_c\">" + span_bold("<center>Dislikes</center>") + "</div>"
if(user == src)
dat += {"
<table>
<td class="button">
<a href='byond://?src=\ref[src];edit_ooc_note_dislikes=1' class='button'>Edit</a>
</td>
</table>
"}
if(dislikes)
dat += {"
<div class="content">
<p>[dislikes]</p>
</div>
"}
if(style)
dat += {"</div></div>"}
dat+= {" </body>
</html>"}
var/key = "ooc_notes[src.real_name]" //Generate a unique key so we can make unique clones of windows, that way we can have more than one
if(src.ckey)
key = "[key][src.ckey]" //Add a ckey if they have one, in case their name is the same
winclone(user, "ooc_notes", key) //Allows us to have more than one OOC notes panel open
winshow(user, key, TRUE) //Register our window
var/datum/browser/popup = new(user, key, "OOC Notes: [src.name]", 500, 600) //Create the window
popup.set_content(dat) //Populate window contents
popup.open(FALSE) // Skip registring onclose on the browser pane
onclose(user, key, src) // We want to register on the window itself

View File

@@ -1,311 +0,0 @@
import { type ReactNode, useState } from 'react';
import { useBackend } from 'tgui/backend';
import { Window } from 'tgui/layouts';
import {
Box,
Button,
Icon,
LabeledList,
Section,
Stack,
Table,
} from 'tgui-core/components';
import type { BooleanLike } from 'tgui-core/react';
const getTagColor = (tag: string) => {
switch (tag) {
case 'Unset':
return 'label';
case 'Pred':
return 'red';
case 'Pred-Pref':
return 'orange';
case 'Prey':
return 'blue';
case 'Prey-Pref':
return 'green';
case 'Switch':
return 'yellow';
case 'Non-Vore':
return 'black';
}
};
type Data = {
personalVisibility: BooleanLike;
personalTag: string;
personalErpTag: string;
directory: character[];
};
type character = {
name: string;
species: string;
ooc_notes: string;
tag: string;
erptag: string;
character_ad: string;
flavor_text: string;
};
export const CharacterDirectory = (props) => {
const { act, data } = useBackend<Data>();
const { personalVisibility, personalTag, personalErpTag } = data;
const [overlay, setOverlay] = useState<character | null>(null);
const [overwritePrefs, setOverwritePrefs] = useState<boolean>(false);
function handleOverlay(value: character | null) {
setOverlay(value);
}
return (
<Window width={640} height={480}>
<Window.Content scrollable>
{(overlay && (
<ViewCharacter overlay={overlay} onOverlay={handleOverlay} />
)) || (
<>
<Section
title="Controls"
buttons={
<Stack>
<Stack.Item>
<Box color="label" inline>
Save to current preferences slot:&nbsp;
</Box>
</Stack.Item>
<Stack.Item>
<Button
icon={overwritePrefs ? 'toggle-on' : 'toggle-off'}
selected={overwritePrefs}
onClick={() => setOverwritePrefs(!overwritePrefs)}
>
{overwritePrefs ? 'On' : 'Off'}
</Button>
</Stack.Item>
</Stack>
}
>
<LabeledList>
<LabeledList.Item label="Visibility">
<Button
fluid
onClick={() =>
act('setVisible', { overwrite_prefs: overwritePrefs })
}
>
{personalVisibility ? 'Shown' : 'Not Shown'}
</Button>
</LabeledList.Item>
<LabeledList.Item label="Vore Tag">
<Button
fluid
onClick={() =>
act('setTag', { overwrite_prefs: overwritePrefs })
}
>
{personalTag}
</Button>
</LabeledList.Item>
<LabeledList.Item label="ERP Tag">
<Button
fluid
onClick={() =>
act('setErpTag', { overwrite_prefs: overwritePrefs })
}
>
{personalErpTag}
</Button>
</LabeledList.Item>
<LabeledList.Item label="Advertisement">
<Button
fluid
onClick={() =>
act('editAd', { overwrite_prefs: overwritePrefs })
}
>
Edit Ad
</Button>
</LabeledList.Item>
</LabeledList>
</Section>
<CharacterDirectoryList onOverlay={handleOverlay} />
</>
)}
</Window.Content>
</Window>
);
};
const ViewCharacter = (props) => {
return (
<Section
title={props.overlay.name}
buttons={
<Button icon="arrow-left" onClick={() => props.onOverlay(null)}>
Back
</Button>
}
>
<Section title="Species">
<Box>{props.overlay.species}</Box>
</Section>
<Section title="Vore Tag">
<Box p={1} backgroundColor={getTagColor(props.overlay.tag)}>
{props.overlay.tag}
</Box>
</Section>
<Section title="ERP Tag">
<Box>{props.overlay.erptag}</Box>
</Section>
<Section title="Character Ad">
<Box style={{ wordBreak: 'break-all' }} preserveWhitespace>
{props.overlay.character_ad || 'Unset.'}
</Box>
</Section>
<Section title="OOC Notes">
<Box style={{ wordBreak: 'break-all' }} preserveWhitespace>
{props.overlay.ooc_notes || 'Unset.'}
</Box>
</Section>
<Section title="Flavor Text">
<Box style={{ wordBreak: 'break-all' }} preserveWhitespace>
{props.overlay.flavor_text || 'Unset.'}
</Box>
</Section>
</Section>
);
};
const CharacterDirectoryList = (props) => {
const { act, data } = useBackend<Data>();
const { directory } = data;
const [sortId, setSortId] = useState<string>('name');
const [sortOrder, setSortOrder] = useState<string>('name');
function handleSortId(value: string) {
setSortId(value);
}
function handleSortOrder(value: string) {
setSortOrder(value);
}
return (
<Section
title="Directory"
buttons={
<Button icon="sync" onClick={() => act('refresh')}>
Refresh
</Button>
}
>
<Table>
<Table.Row bold>
<SortButton
id="name"
sortId={sortId}
sortOrder={sortOrder}
onSortId={handleSortId}
onSortOrder={handleSortOrder}
>
Name
</SortButton>
<SortButton
id="species"
sortId={sortId}
sortOrder={sortOrder}
onSortId={handleSortId}
onSortOrder={handleSortOrder}
>
Species
</SortButton>
<SortButton
id="tag"
sortId={sortId}
sortOrder={sortOrder}
onSortId={handleSortId}
onSortOrder={handleSortOrder}
>
Vore Tag
</SortButton>
<SortButton
id="erptag"
sortId={sortId}
sortOrder={sortOrder}
onSortId={handleSortId}
onSortOrder={handleSortOrder}
>
ERP Tag
</SortButton>
<Table.Cell collapsing textAlign="right">
View
</Table.Cell>
</Table.Row>
{directory
.sort((a, b) => {
const i = sortOrder ? 1 : -1;
return a[sortId].localeCompare(b[sortId]) * i;
})
.map((character, i) => (
<Table.Row key={i} backgroundColor={getTagColor(character.tag)}>
<Table.Cell p={1}>{character.name}</Table.Cell>
<Table.Cell>{character.species}</Table.Cell>
<Table.Cell>{character.tag}</Table.Cell>
<Table.Cell>{character.erptag}</Table.Cell>
<Table.Cell collapsing textAlign="right">
<Button
onClick={() => props.onOverlay(character)}
color="transparent"
icon="sticky-note"
mr={1}
>
View
</Button>
</Table.Cell>
</Table.Row>
))}
</Table>
</Section>
);
};
const SortButton = (props: {
id: string;
sortId: string;
sortOrder: string;
onSortId: Function;
onSortOrder: Function;
children: ReactNode | string;
}) => {
const { id, children } = props;
// Hey, same keys mean same data~
return (
<Table.Cell collapsing>
<Button
width="100%"
color={props.sortId !== id && 'transparent'}
onClick={() => {
if (props.sortId === id) {
props.onSortOrder(!props.sortOrder);
} else {
props.onSortId(id);
props.onSortOrder(true);
}
}}
>
{children}
{props.sortId === id && (
<Icon
name={props.sortOrder ? 'sort-up' : 'sort-down'}
ml="0.25rem;"
/>
)}
</Button>
</Table.Cell>
);
};

View File

@@ -4984,8 +4984,6 @@
#include "modular_chomp\code\modules\mob\language\language.dm" #include "modular_chomp\code\modules\mob\language\language.dm"
#include "modular_chomp\code\modules\mob\living\emote.dm" #include "modular_chomp\code\modules\mob\living\emote.dm"
#include "modular_chomp\code\modules\mob\living\living.dm" #include "modular_chomp\code\modules\mob\living\living.dm"
#include "modular_chomp\code\modules\mob\living\living_defines.dm"
#include "modular_chomp\code\modules\mob\living\ooc_notes.dm"
#include "modular_chomp\code\modules\mob\living\carbon\carbon.dm" #include "modular_chomp\code\modules\mob\living\carbon\carbon.dm"
#include "modular_chomp\code\modules\mob\living\carbon\human\emote.dm" #include "modular_chomp\code\modules\mob\living\carbon\human\emote.dm"
#include "modular_chomp\code\modules\mob\living\carbon\human\human.dm" #include "modular_chomp\code\modules\mob\living\carbon\human\human.dm"