Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions code/__DEFINES/say.dm
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,10 @@
#define MODE_WHISPER "whisper"
#define MODE_WHISPER_CRIT "whispercrit"

//Caustic Edit - Add Absorbed Psay mode
#define MODE_PSAY "absorbed"
//Caustic Edit End

#define MODE_SING "%"

#define MODE_DEPARTMENT "department"
Expand Down
2 changes: 1 addition & 1 deletion code/_onclick/click.dm
Original file line number Diff line number Diff line change
Expand Up @@ -339,7 +339,7 @@
if(T)
var/mob/target
for(var/mob/M in T)
if(M.invisibility || M == src)
if(M.invisibility || M == src || M.stat == DEAD || isbelly(M.loc)) //Caustic Edit - Lets not target dead mobs, nor mobs that are in a belly! This must be how that's been happening?
continue
target = M
break
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -426,7 +426,7 @@
east_offset = 18
south_offset = 26

/datum/map_template/dungeon/room/hoblingoblin
/*/datum/map_template/dungeon/room/hoblingoblin //Caustic Edit - Lets try commenting this out and seeing if it stops the errors...
mappath = "_maps/dungeon_generator/room/hoblingoblin.dmm"
id = "hoblin_goblin"
width = 24
Expand All @@ -435,7 +435,7 @@
north_offset = 11
south_offset = 11
east_offset = 11
west_offset = 11
west_offset = 11*/

/datum/map_template/dungeon/room/bathhouse_custom
width = 20
Expand Down
6 changes: 5 additions & 1 deletion code/datums/emotes.dm
Original file line number Diff line number Diff line change
Expand Up @@ -260,7 +260,7 @@
. = message
if(message_muffled && iscarbon(user))
var/mob/living/carbon/C = user
if(C.silent)
if(C.silent || C.muffled) //Caustic Edit - Account for Belly Muffling emotes!
. = message_muffled
if(!muzzle_ignore && HAS_TRAIT(C, TRAIT_MUTE) && emote_type == EMOTE_AUDIBLE)
. = message_muffled
Expand Down Expand Up @@ -327,6 +327,10 @@
return target

/datum/emote/proc/is_emote_muffled(mob/living/carbon/H) //ONLY for audible emote use
//Caustic Edit - Account for Belly Muffling
if(H.muffled)
return FALSE
//Caustic Edit End
if(H.mouth?.muteinmouth)
return FALSE
for(var/obj/item/grabbing/grab in H.grabbedby)
Expand Down
1 change: 1 addition & 0 deletions code/game/atoms_movable.dm
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
var/verb_ask = "asks"
var/verb_exclaim = "exclaims"
var/verb_whisper = "whispers"
var/verb_thinks = "thinks" //Caustic Edit - Added to account for Psay and absorbed players!
var/verb_sing = "sings"
var/verb_yell = "yells"
var/speech_span
Expand Down
4 changes: 2 additions & 2 deletions code/game/objects/buckling.dm
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@
if(!istype(M))
return FALSE

if(check_loc && M.loc != loc)
if(check_loc && !Adjacent(M)) //M.loc != loc //Caustic Edit - Lets see if we can't just tweak this to allow for 1-tile-away buckles?
return FALSE

if((!can_buckle && !force) || M.buckled || (buckled_mobs.len >= max_buckled_mobs) || (buckle_requires_restraints && !M.restrained()) || M == src)
Expand Down Expand Up @@ -74,7 +74,7 @@
else if(isliving(M.pulledby))
M.reset_offsets("pulledby")

if(!check_loc && M.loc != loc)
if(M.loc != loc) //Caustic Edit - Removed this check !check_loc && - so it'll just always check and move the player if needed.
M.forceMove(loc)

M.buckling = null
Expand Down
2 changes: 1 addition & 1 deletion code/game/sound.dm
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@
continue


var/is_muffled = (M in muffled_listeners)
var/is_muffled = (M.muffled || (M in muffled_listeners)) //Caustic Edit - Account for belly Muffling in sound effects! Neat?
if(M.playsound_local(turf_source, soundin, vol, vary, frequency, falloff, channel, pressure_affected, S, repeat, is_muffled))
. += M

Expand Down
3 changes: 3 additions & 0 deletions code/modules/client/preferences_savefile.dm
Original file line number Diff line number Diff line change
Expand Up @@ -227,6 +227,9 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car

S["audio_preload"] >> audio_preload
S["rp_guidance"] >> rp_guidance

if(!rp_guidance)
rp_guidance = 3 //Reset it to default if it's somehow null.
///Caustic edit end
// Custom hotkeys
S["key_bindings"] >> key_bindings
Expand Down
28 changes: 25 additions & 3 deletions code/modules/food_and_drinks/food/snacks.dm
Original file line number Diff line number Diff line change
Expand Up @@ -383,19 +383,41 @@ All foods are distributed among various categories. Use common sense.
eater.add_stress(/datum/stressevent/noble_desperate)
if(eat_effect != /datum/status_effect/debuff/rotfood && eat_effect != /datum/status_effect/debuff/burnedfood && eat_effect != /datum/status_effect/debuff/uncookedfood)
apply_effect = FALSE
if (FARE_POOR to FARE_NEUTRAL)
//Caustic Edit - If a noble is being fed, it will act as if it's 1 tier better! ... The worst case though is always bad.
if (FARE_POOR)
eater.add_stress(/datum/stressevent/noble_bland_food)
if (prob(25))
to_chat(eater, span_red("This is rather bland. I deserve better food than this..."))
if(eat_effect != /datum/status_effect/debuff/rotfood && eat_effect != /datum/status_effect/debuff/burnedfood && eat_effect != /datum/status_effect/debuff/uncookedfood)
apply_effect = FALSE
if (FARE_NEUTRAL)
if (isliving(src.loc))
eater.remove_stress(/datum/stressevent/noble_bland_food)
if (prob(25))
to_chat(eater, span_red("This food is plain, but to be fed... That makes up for it."))
else
eater.add_stress(/datum/stressevent/noble_bland_food)
if (prob(25))
to_chat(eater, span_red("This is rather bland. I deserve better food than this..."))
if(eat_effect != /datum/status_effect/debuff/rotfood && eat_effect != /datum/status_effect/debuff/burnedfood && eat_effect != /datum/status_effect/debuff/uncookedfood)
apply_effect = FALSE
if (FARE_FINE)
eater.remove_stress(/datum/stressevent/noble_bland_food)
if (isliving(src.loc))
eater.remove_stress(/datum/stressevent/noble_bland_food)
eater.add_stress(/datum/stressevent/noble_lavish_food)
if (prob(25))
to_chat(eater, span_green("Ah, a fine meal, and doted on like this? Exquisite."))
else
eater.remove_stress(/datum/stressevent/noble_bland_food)
if (FARE_LAVISH)
eater.remove_stress(/datum/stressevent/noble_bland_food)
eater.add_stress(/datum/stressevent/noble_lavish_food)
if (prob(25))
to_chat(eater, span_green("Ah, food fit for my title."))
if (isliving(src.loc))
to_chat(eater, span_green("Oh! This is exellent! To be fed the most lavish of meals..."))
else
to_chat(eater, span_green("Ah, food fit for my title."))
//Caustic Edit End

// yeomen and courtiers are also used to a better quality of life but are way less picky
if (human_eater.is_burgher() || human_eater.is_courtier())
Expand Down
2 changes: 1 addition & 1 deletion code/modules/mob/living/carbon/human/examine.dm
Original file line number Diff line number Diff line change
Expand Up @@ -1044,7 +1044,7 @@
showassess = TRUE

if((!obscure_name || client?.prefs.masked_examine) && (flavortext || headshot_link || ooc_notes))
. += "<a href='?src=[REF(src)];task=view_headshot;'>Examine closer</a> [showassess ? " | <a href='?src=[REF(src)];task=assess;'>Assess</a>" : ""]"
. += "<a href='?src=[REF(src)];task=view_headshot;'>Examine closer</a> [showassess ? "| <a href='?src=[REF(src)];task=assess;'>Assess</a> " : ""]| <a href='?src=[REF(src)];task=open_directory;'>Character Directory</a>"

/// Rumours & Gossip
if(length(rumour) || length(noble_gossip))
Expand Down
34 changes: 34 additions & 0 deletions code/modules/mob/living/carbon/human/examine_tgui.dm
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,38 @@
ui = new(user, src, "ExaminePanel")
ui.open()

//Caustic Edit - Grabbing the OV Character Ad addition to the Examine Panel!
/datum/examine_panel/proc/get_character_ad()
if(ishuman(holder))
var/raw_character_ad = holder.client?.prefs?.directory_ad
if(isnull(raw_character_ad))
raw_character_ad = holder.mind?.directory_ad
if(raw_character_ad)
return parsemarkdown_basic(html_encode(raw_character_ad), hyperlink = TRUE)
else if(pref?.directory_ad)
return parsemarkdown_basic(html_encode(pref.directory_ad), hyperlink = TRUE)

return ""

/proc/refresh_character_ad_examine_panels(mob/living/carbon/human/holder_mob, datum/preferences/holder_prefs, datum/mind/holder_mind)
for(var/datum/tgui/ui as anything in SStgui.all_uis)
if(!istype(ui?.src_object, /datum/examine_panel))
continue

var/datum/examine_panel/panel = ui.src_object
var/panel_matches_character = FALSE

if(holder_mob && panel.holder == holder_mob)
panel_matches_character = TRUE
else if(holder_prefs && (panel.pref == holder_prefs || panel.holder?.client?.prefs == holder_prefs))
panel_matches_character = TRUE
else if(holder_mind && panel.holder?.mind == holder_mind)
panel_matches_character = TRUE

if(panel_matches_character)
ui.send_update()
//Caustic Edit End

/datum/examine_panel/familiar/ui_static_data(mob/user) //altered and condensed version used for familiars. sorry

var/flavor_text
Expand Down Expand Up @@ -92,6 +124,7 @@

/datum/examine_panel/familiar/ui_data(mob/user)
var/list/data = list(
"character_ad" = "", //Casutic Edit - Adding in the Character Ad addition to the Examine Panel from OV
"is_playing" = is_playing,
)
return data
Expand Down Expand Up @@ -202,6 +235,7 @@

/datum/examine_panel/ui_data(mob/user)
var/list/data = list(
"character_ad" = get_character_ad(), //Casutic Edit - Adding in the Character Ad addition to the Examine Panel from OV
"is_playing" = is_playing,
)
return data
Expand Down
6 changes: 6 additions & 0 deletions code/modules/mob/living/carbon/human/human_topic.dm
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,12 @@ GLOBAL_VAR_INIT(year_integer, text2num(year)) // = 2013???
mob_examine_panel.viewing = usr
mob_examine_panel.ui_interact(usr)
return

if(href_list["task"] == "open_directory")
if(!ismob(usr) || !usr.client)
return
usr.client.show_character_directory()
return

if(href_list["inspect_limb"] && (observer_privilege || usr.canUseTopic(src, BE_CLOSE, NO_DEXTERITY)))
var/list/msg = list()
Expand Down
13 changes: 6 additions & 7 deletions code/modules/mob/living/carbon/life.dm
Original file line number Diff line number Diff line change
Expand Up @@ -778,14 +778,13 @@ GLOBAL_LIST_INIT(ballmer_windows_me_msg, list("Yo man, what if, we like, uh, put
/mob/living/proc/handle_swimming()
var/turf/T = get_turf(src)
var/area/A = get_area(src)


var/is_on_water = istype(T, /turf/open/water)

var/is_on_new_water = istype(T, /turf/open/water/transparent)

var/is_true_swimming = is_swimming || is_underwater || istype(A, /area/underwater) || is_on_new_water
var/is_area_underwater = istype(A, /area/underwater)
//Caustic Edit - If the mob is in a Belly, we are not swimming!
var/is_on_water = (istype(T, /turf/open/water) && !isbelly(loc))
var/is_on_new_water = (istype(T, /turf/open/water/transparent) && !isbelly(loc))
var/is_area_underwater = (istype(A, /area/underwater) && !isbelly(loc))
var/is_true_swimming = is_swimming || is_underwater || is_area_underwater || is_on_new_water
//Caustic Edit End
var/sw_skill = get_skill_level(/datum/skill/misc/swimming)
var/new_max_breath = (STACON * 5) + (sw_skill * 5)

Expand Down
50 changes: 45 additions & 5 deletions code/modules/mob/living/say.dm
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ GLOBAL_LIST_INIT(department_radio_keys, list(
var/static/list/unconscious_allowed_modes = list(MODE_CHANGELING = TRUE, MODE_ALIEN = TRUE)
var/talk_key = get_key(message)

var/static/list/one_character_prefix = list(MODE_HEADSET = TRUE, MODE_ROBOT = TRUE, MODE_WHISPER = TRUE, MODE_SING = TRUE)
var/static/list/one_character_prefix = list(MODE_HEADSET = TRUE, MODE_ROBOT = TRUE, MODE_WHISPER = TRUE, MODE_PSAY = TRUE, MODE_SING = TRUE) //Caustic Edit - Add Psay here so it doesn't trim the first character of your message!

var/ic_blocked = FALSE
if(client && !forced && CHAT_FILTER_CHECK(message))
Expand Down Expand Up @@ -208,6 +208,14 @@ GLOBAL_LIST_INIT(department_radio_keys, list(
last_words = message
message_mode = MODE_WHISPER_CRIT
succumbed = TRUE
//Caustic Edit - Add in an attempt at the Psay message channel?
else if(message_mode == MODE_PSAY) //For now this just gets logged as a whisper
message_range = 0
var/whisper_log_type = npc_speech ? LOG_NPC_SAY : LOG_WHISPER
src.log_talk(message, whisper_log_type)
send_thoughts(message, message_range, src, bubble_type, spans, language, message_mode, original_message)
return
//Caustic Edit End
else
var/log_type = npc_speech ? LOG_NPC_SAY : LOG_SAY
src.log_talk(message, log_type, forced_by=forced)
Expand Down Expand Up @@ -263,6 +271,31 @@ GLOBAL_LIST_INIT(department_radio_keys, list(

return 1

//Caustic Edit - Add Psay for absorbed players and their pred!
/mob/living/proc/send_thoughts(message, message_range = 6, obj/source = src, bubble_type = bubble_icon, list/spans, datum/language/message_language=null, message_mode, original_message)
var/list/listening = list()
var/mob/living/pred
if(absorbed && isbelly(loc))
var/obj/belly/bloc = loc
pred = bloc.owner
else
pred = src

if(pred.client)
listening |= pred

for(var/obj/belly/B in pred.vore_organs)
for(var/mob/living/M in B.contents)
if(M.client && M.absorbed)
listening |= M

log_seen(src, null, listening, original_message, SEEN_LOG_SAY)

var/rendered = compose_message(src, message_language, message, , spans, message_mode)
for(var/mob/living/thinker in listening)
thinker.show_message(rendered)
//Caustic Edit End

/mob/living/proc/send_speech_sign(message, message_range = 6, obj/source = src, bubble_type = bubble_icon, list/spans, datum/language/message_language=null, message_mode, original_message)
var/static/list/eavesdropping_modes = list(MODE_WHISPER = TRUE, MODE_WHISPER_CRIT = TRUE)
var/eavesdrop_range = 0
Expand Down Expand Up @@ -495,7 +528,8 @@ GLOBAL_LIST_INIT(department_radio_keys, list(
continue
if(!(M.client.prefs.chat_toggles & CHAT_GHOSTEARS)) //they're talking normally and we have hearing at any range off
continue
if(!is_in_zweb(src.z,tocheck.z))
var/turf/tocheck_turf = get_turf(tocheck) //Caustic Edit - Change it so whispers can be sent regardless of something/someone being in a container!
if(!is_in_zweb(speaker_turf.z,tocheck_turf.z))
continue
listening |= M
the_dead[M] = TRUE
Expand All @@ -521,7 +555,7 @@ GLOBAL_LIST_INIT(department_radio_keys, list(
listener_has_ceiling = FALSE
if(!hearall)
if((!Zs_too && !isobserver(AM)) || message_mode == MODE_WHISPER)
if(AM.z != src.z)
if(listener_turf.z != speaker_turf.z) //Caustic Edit - This should fix whispers not comparing the actual TILES.
continue
if(Zs_too && listener_turf.z != speaker_turf.z && !Zs_all)
if(!Zs_yell && !HAS_TRAIT(AM, TRAIT_KEENEARS) && !hearall)
Expand All @@ -540,12 +574,14 @@ GLOBAL_LIST_INIT(department_radio_keys, list(
if(!speaker_has_ceiling && isliving(AM))
var/mob/living/M = AM
for(var/mob/living/MH in viewers(world.view, speaker_ceiling))
if(M == MH && MH.z == speaker_ceiling?.z)
var/turf/MH_turf = get_turf(MH)
if(M == MH && MH_turf.z == speaker_ceiling?.z) //Caustic Edit - This should fix whispers not comparing the actual TILES.
speaker_obstructed = FALSE

if(!listener_has_ceiling)
for(var/mob/living/ML in viewers(world.view, listener_ceiling))
if(ML == src && ML.z == listener_ceiling?.z)
var/turf/ML_turf = get_turf(ML)
if(ML == src && ML_turf.z == listener_ceiling?.z) //Caustic Edit - This should fix whispers not comparing the actual TILES.
listener_obstructed = FALSE
if(listener_obstructed && speaker_obstructed)
continue
Expand Down Expand Up @@ -663,6 +699,8 @@ GLOBAL_LIST_INIT(department_radio_keys, list(

/mob/living/proc/radio(message, message_mode, list/spans, language)
switch(message_mode)
if(MODE_PSAY) //Caustic Edit - Add in Psay here so that it also becomes Italics like whispers
return ITALICS
if(MODE_WHISPER)
return ITALICS
if(MODE_R_HAND)
Expand All @@ -686,6 +724,8 @@ GLOBAL_LIST_INIT(department_radio_keys, list(
. = verb_whisper
else if(message_mode == MODE_WHISPER_CRIT)
. = "[verb_whisper] in [p_their()] last breath"
else if(message_mode == MODE_PSAY) //Caustic Edit - Add in accounting for Psay and the 'thinks' action
. = verb_thinks
else if(stuttering)
. = "stammers"
else if(derpspeech)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,7 @@
if((valid_headshot_link(src, prefs.familiar_headshot_link[planar_origin], TRUE)) && (user.client?.prefs.chatheadshot))
ret.Insert(2, "<img src=[prefs.familiar_headshot_link[planar_origin]] width=100 height=100/>")
if(prefs.familiar_flavortext_display[planar_origin] || prefs.familiar_headshot_link[planar_origin] || prefs.familiar_ooc_notes_display[planar_origin])
ret.Insert(ret.len-1, "<a href='?src=[REF(src)];task=view_fam_headshot;'>Examine closer</a>")
ret.Insert(ret.len-1, "<a href='?src=[REF(src)];task=view_fam_headshot;'>Examine closer</a> | <a href='?src=[REF(src)];task=open_directory;'>Character Directory</a>")
return ret

// mobility/utility focused. innocuous. can fly, and brew potions, but not much else
Expand Down
6 changes: 6 additions & 0 deletions code/modules/mob/living/simple_animal/simple_animal_topic.dm
Original file line number Diff line number Diff line change
Expand Up @@ -36,4 +36,10 @@
mob_examine_panel.viewing = usr
mob_examine_panel.ui_interact(usr)
return

if(href_list["task"] == "open_directory")
if(!ismob(usr) || !usr.client)
return
usr.client.show_character_directory()
return

6 changes: 4 additions & 2 deletions code/modules/mob/say.dm
Original file line number Diff line number Diff line change
Expand Up @@ -147,8 +147,10 @@
*/
/mob/proc/get_message_mode(message)
var/key = copytext_char(message, 1, 2)
if(key == "#")
return MODE_WHISPER
if(key == "$" || (forced_psay && absorbed)) //Caustic Edit - Account for the absorbed and muffled effects from vorestuffs. Muffled forces a whisper! Psay is limited to absorbed mobs and the pred!
return MODE_PSAY
else if(key == "#" || muffled)
return MODE_WHISPER //Caustic Edit End
else if(key == ";")
return MODE_HEADSET
else if(key == "%")
Expand Down
Loading
Loading