:HELP: MAINT
This commit is contained in:
@@ -123,3 +123,10 @@
|
||||
#define MIN_MELEE_STAMCOST 1.25 //Minimum cost for swinging items around. Will be extra useful when stats and skills are introduced.
|
||||
|
||||
#define CRAWLUNDER_DELAY 30 //Delay for crawling under a standing mob
|
||||
|
||||
//Citadel toggles because bitflag memes
|
||||
#define MEDIHOUND_SLEEPER 1
|
||||
#define EATING_NOISES 2
|
||||
#define DIGESTION_NOISES 4
|
||||
|
||||
#define TOGGLES_CITADEL (MEDIHOUND_SLEEPER|EATING_NOISES|DIGESTION_NOISES)
|
||||
@@ -14,10 +14,8 @@
|
||||
#define SOUND_ANNOUNCEMENTS 2048
|
||||
#define DISABLE_DEATHRATTLE 4096
|
||||
#define DISABLE_ARRIVALRATTLE 8192
|
||||
#define MEDIHOUND_SLEEPER 16384 //CITADEL EDITS, vore prefs.
|
||||
#define EATING_NOISES 32768
|
||||
#define DIGESTION_NOISES 65536
|
||||
#define TOGGLES_DEFAULT (SOUND_ADMINHELP|SOUND_MIDI|SOUND_AMBIENCE|SOUND_LOBBY|MEMBER_PUBLIC|INTENT_STYLE|MIDROUND_ANTAG|SOUND_INSTRUMENTS|SOUND_SHIP_AMBIENCE|SOUND_PRAYERS|SOUND_ANNOUNCEMENTS|MEDIHOUND_SLEEPER|EATING_NOISES|DIGESTION_NOISES)
|
||||
|
||||
#define TOGGLES_DEFAULT (SOUND_ADMINHELP|SOUND_MIDI|SOUND_AMBIENCE|SOUND_LOBBY|MEMBER_PUBLIC|INTENT_STYLE|MIDROUND_ANTAG|SOUND_INSTRUMENTS|SOUND_SHIP_AMBIENCE|SOUND_PRAYERS|SOUND_ANNOUNCEMENTS)
|
||||
|
||||
//Chat toggles
|
||||
#define CHAT_OOC 1
|
||||
|
||||
@@ -156,11 +156,16 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
/datum/preferences/proc/ShowChoices(mob/user)
|
||||
if(!user || !user.client)
|
||||
return
|
||||
update_preview_icon()
|
||||
if(current_tab == 2) //CITADEL EDIT, for muh nudies
|
||||
update_preview_icon(nude=TRUE)
|
||||
else
|
||||
update_preview_icon(nude=FALSE) //EDIT END
|
||||
user << browse_rsc(preview_icon, "previewicon.png")
|
||||
var/dat = "<center>"
|
||||
|
||||
dat += "<a href='?_src_=prefs;preference=tab;tab=0' [current_tab == 0 ? "class='linkOn'" : ""]>Character Settings</a> "
|
||||
dat += "<a href='?_src_=prefs;preference=tab;tab=0' [current_tab == 0 ? "class='linkOn'" : ""]>Character Settings</a>"
|
||||
dat += "<a href='?_src_=prefs;preference=tab;tab=2' [current_tab == 2 ? "class='linkOn'" : ""]>Character Appearance</a>"
|
||||
dat += "<a href='?_src_=prefs;preference=tab;tab=3' [current_tab == 3 ? "class='linkOn'" : ""]>Loadout</a>"
|
||||
dat += "<a href='?_src_=prefs;preference=tab;tab=1' [current_tab == 1 ? "class='linkOn'" : ""]>Game Preferences</a>"
|
||||
|
||||
if(!path)
|
||||
@@ -236,7 +241,8 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
dat += "<b>Backpack:</b><BR><a href ='?_src_=prefs;preference=bag;task=input'>[backbag]</a><BR>"
|
||||
dat += "<b>Uplink Spawn Location:</b><BR><a href ='?_src_=prefs;preference=uplink_loc;task=input'>[uplink_spawn_loc]</a><BR></td>"
|
||||
|
||||
if(pref_species.use_skintones)
|
||||
// CITADEL EDIT - ALL OF THESE ARE HANDLED IN THE MODULAR VERSION, TAB 2
|
||||
/* if(pref_species.use_skintones)
|
||||
|
||||
dat += "<td valign='top' width='21%'>"
|
||||
|
||||
@@ -246,6 +252,8 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
|
||||
dat += "</td>"
|
||||
|
||||
dat = add_citadel_choices(dat)
|
||||
|
||||
if(HAIR in pref_species.species_traits)
|
||||
|
||||
dat += "<td valign='top' width='21%'>"
|
||||
@@ -359,7 +367,7 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
|
||||
dat += "</td>"
|
||||
|
||||
dat = add_citadel_choices(dat)
|
||||
|
||||
|
||||
if(CONFIG_GET(flag/join_with_mutant_humans))
|
||||
|
||||
@@ -388,7 +396,8 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
|
||||
dat += "<a href='?_src_=prefs;preference=wings;task=input'>[features["wings"]]</a><BR>"
|
||||
|
||||
dat += "</td>"
|
||||
dat += "</td>"*/
|
||||
dat += citadel_dat_replace(current_tab)
|
||||
|
||||
dat += "</tr></table>"
|
||||
|
||||
@@ -508,8 +517,11 @@ GLOBAL_LIST_EMPTY(preferences_datums)
|
||||
else
|
||||
dat += "<b>Be [capitalize(i)]:</b> <a href='?_src_=prefs;preference=be_special;be_special_type=[i]'>[(i in be_special) ? "Yes" : "No"]</a><br>"
|
||||
|
||||
dat += citadel_dat_replace(current_tab)
|
||||
|
||||
dat += "</td></tr></table>"
|
||||
|
||||
|
||||
else
|
||||
dat = citadel_dat_replace(current_tab)
|
||||
|
||||
|
||||
@@ -512,6 +512,7 @@ ROUNDSTART_RACES insect
|
||||
ROUNDSTART_RACES xeno
|
||||
ROUNDSTART_RACES datashark
|
||||
ROUNDSTART_RACES guilmon
|
||||
ROUNDSTART_RACES ipc
|
||||
|
||||
## CREW OBJECTIVES ##
|
||||
## Comment to disable objectives for innocent crew members.
|
||||
|
||||
@@ -1,2 +1,14 @@
|
||||
/obj/item
|
||||
var/total_mass //Total mass in arbitrary pound-like values. If there's no balance reasons for an item to have otherwise, this var should be the item's weight in pounds.
|
||||
|
||||
var/list/alternate_screams = list() //REEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
|
||||
|
||||
// lazy for screaming.
|
||||
/obj/item/clothing/head/xenos
|
||||
alternate_screams = list('sound/voice/hiss6.ogg')
|
||||
|
||||
/obj/item/clothing/head/cardborg
|
||||
alternate_screams = list('modular_citadel/sound/voice/scream_silicon.ogg')
|
||||
|
||||
/obj/item/clothing/head/ushanka
|
||||
alternate_screams = list('modular_citadel/sound/misc/cyka1.ogg', 'modular_citadel/sound/misc/cheekibreeki.ogg')
|
||||
@@ -131,25 +131,25 @@
|
||||
restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer","Head of Security","Cargo Technician", "Shaft Miner", "Quartermaster")
|
||||
|
||||
//Hats!
|
||||
/datum/gear/hat/job_trek/cap
|
||||
/datum/gear/hat/job_trek
|
||||
name = "Federation Officer's Cap"
|
||||
category = slot_head
|
||||
path = /obj/item/clothing/head/caphat/formal/fedcover
|
||||
restricted_roles = list("Captain","Head of Personnel")
|
||||
|
||||
/datum/gear/hat/job_trek/cap/medisci
|
||||
/datum/gear/hat/job_trek/medisci
|
||||
name = "Federation Officer's Cap"
|
||||
category = slot_head
|
||||
path = /obj/item/clothing/head/caphat/formal/fedcover/medsci
|
||||
restricted_roles = list("Chief Medical Officer","Medical Doctor","Chemist","Virologist","Geneticist","Research Director","Scientist", "Roboticist")
|
||||
|
||||
/datum/gear/hat/job_trek/cap/eng
|
||||
/datum/gear/hat/job_trek/eng
|
||||
name = "Federation Officer's Cap"
|
||||
category = slot_head
|
||||
path = /obj/item/clothing/head/caphat/formal/fedcover/eng
|
||||
restricted_roles = list("Chief Engineer","Atmospheric Technician","Station Engineer","Warden","Detective","Security Officer","Head of Security","Cargo Technician", "Shaft Miner", "Quartermaster")
|
||||
|
||||
/datum/gear/hat/job_trek/cap/sec
|
||||
/datum/gear/hat/job_trek/sec
|
||||
name = "Federation Officer's Cap"
|
||||
category = slot_head
|
||||
path = /obj/item/clothing/head/caphat/formal/fedcover/sec
|
||||
|
||||
@@ -12,7 +12,11 @@
|
||||
var/arousable = TRUE
|
||||
var/widescreenpref = TRUE
|
||||
var/autostand = TRUE
|
||||
var/toggleeatingnoise = TRUE
|
||||
var/toggledigestionnoise = TRUE
|
||||
var/hound_sleeper = TRUE
|
||||
max_save_slots = 10
|
||||
var/cit_toggles = TOGGLES_CITADEL
|
||||
features = list("mcolor" = "FFF",
|
||||
"tail_lizard" = "Smooth",
|
||||
"tail_human" = "None",
|
||||
@@ -86,13 +90,10 @@
|
||||
..()
|
||||
LAZYINITLIST(chosen_gear)
|
||||
|
||||
/datum/preferences/proc/add_citadel_choices(dat)
|
||||
if(current_tab == 2)
|
||||
update_preview_icon(nude=TRUE)
|
||||
else
|
||||
update_preview_icon(nude=FALSE)
|
||||
/datum/preferences/proc/add_citadel_choices(.)
|
||||
|
||||
|
||||
return dat
|
||||
return .
|
||||
|
||||
/datum/preferences/proc/process_citadel_link(mob/user, list/href_list)
|
||||
if(href_list["task"] == "input")
|
||||
@@ -357,10 +358,9 @@
|
||||
features["vag_color"] = sanitize_hexcolor(new_vagcolor)
|
||||
else
|
||||
user << "<span class='danger'>Invalid color. Your color is not bright enough.</span>"
|
||||
|
||||
if("input")
|
||||
|
||||
else
|
||||
switch(href_list["preference"])
|
||||
|
||||
//genital code
|
||||
if("genital_colour")
|
||||
switch(features["genitals_use_skintone"])
|
||||
@@ -473,8 +473,7 @@
|
||||
features["exhibitionist"] = TRUE
|
||||
else
|
||||
features["exhibitionist"] = FALSE
|
||||
else
|
||||
switch(href_list["preference"])
|
||||
|
||||
if("widescreenpref")
|
||||
widescreenpref = !widescreenpref
|
||||
user.client.change_view(CONFIG_GET(string/default_view))
|
||||
@@ -514,7 +513,7 @@
|
||||
if(i == href_list["select_category"])
|
||||
gear_tab = i
|
||||
if(href_list["toggle_gear_path"])
|
||||
var/datum/gear/G = GLOB.loadout_items[gear_tab][html_decode(href_list["toggle_gear_path"])]
|
||||
var/datum/gear/G = GLOB.loadout_items[gear_tab][href_list["toggle_gear_path"]]
|
||||
if(!G)
|
||||
return
|
||||
var/toggle = text2num(href_list["toggle_gear"])
|
||||
@@ -525,9 +524,6 @@
|
||||
if(!is_loadout_slot_available(G.category))
|
||||
to_chat(user, "<span class='danger'>You cannot take this loadout, as you've already chosen too many of the same category!</span>")
|
||||
return
|
||||
if(G.ckeywhitelist && G.ckeywhitelist.len && !(user.ckey in G.ckeywhitelist))
|
||||
to_chat(user, "<span class='danger'>This is an item intended for donator use only. You are not authorized to use this item.</span>")
|
||||
return
|
||||
if(gear_points >= initial(G.cost))
|
||||
LAZYADD(chosen_gear, G.type)
|
||||
gear_points -= initial(G.cost)
|
||||
@@ -535,6 +531,7 @@
|
||||
|
||||
/datum/preferences/proc/citadel_dat_replace(current_tab)
|
||||
var/mob/user
|
||||
|
||||
|
||||
//This proc is for menus other than game pref and char pref
|
||||
. = "<center>"
|
||||
@@ -550,25 +547,26 @@
|
||||
. += "</center>"
|
||||
|
||||
. += "<HR>"
|
||||
if(current_tab == 0)
|
||||
if(current_tab == 1)
|
||||
. += "<table><tr><td width='340px' height='300px' valign='top'>"
|
||||
. += "<h2>Citadel Preferences</h2>"
|
||||
. += "<b>Arousal:</b><a href='?_src_=prefs;preference=arousable'>[arousable == TRUE ? "Enabled" : "Disabled"]</a><BR>"
|
||||
. += "<b>Exhibitionist:</b><a href='?_src_=prefs;preference=exhibitionist'>[features["exhibitionist"] == TRUE ? "Yes" : "No"]</a><BR>"
|
||||
// game prefs
|
||||
if(current_tab == 1)
|
||||
//VORE SOUNDS
|
||||
. += "<b>Hear Vore Sounds:</b> <a href='?_src_=prefs;preference=toggleeatingnoise'>[(toggles & EATING_NOISES) ? "Yes" : "No"]</a><br>"
|
||||
. += "<b>Hear Vore Digestion Sounds:</b> <a href='?_src_=prefs;preference=toggledigestionnoise'>[(toggles & DIGESTION_NOISES) ? "Yes" : "No"]</a><br>"
|
||||
. += "<b>Allow MediHound sleeper:</b> <a href='?_src_=prefs;preference=hound_sleeper'>[(cit_toggles & MEDIHOUND_SLEEPER) ? "Yes" : "No"]</a><br>"
|
||||
. += "<b>Hear Vore Sounds:</b> <a href='?_src_=prefs;preference=toggleeatingnoise'>[(cit_toggles & EATING_NOISES) ? "Yes" : "No"]</a><br>"
|
||||
. += "<b>Hear Vore Digestion Sounds:</b> <a href='?_src_=prefs;preference=toggledigestionnoise'>[(cit_toggles & DIGESTION_NOISES) ? "Yes" : "No"]</a><br>"
|
||||
. += "<b>Widescreen:</b> <a href='?_src_=prefs;preference=widescreenpref'>[widescreenpref ? "Enabled ([CONFIG_GET(string/default_view)])" : "Disabled (15x15)"]</a><br>"
|
||||
. += "<b>Auto stand:</b> <a href='?_src_=prefs;preference=autostand'>[autostand ? "Enabled" : "Disabled"]</a><br>"
|
||||
. += "<b>Screen Shake:</b> <a href='?_src_=prefs;preference=screenshake'>[(screenshake==100) ? "Full" : ((screenshake==0) ? "None" : "[screenshake]")]</a><br>"
|
||||
if (user && user.client && !user.client.prefs.screenshake==0)
|
||||
. += "<b>Damage Screen Shake:</b> <a href='?_src_=prefs;preference=damagescreenshake'>[(damagescreenshake==1) ? "On" : ((damagescreenshake==0) ? "Off" : "Only when down")]</a><br>"
|
||||
. += "</td></tr></table>"
|
||||
|
||||
|
||||
//Character Appearance
|
||||
if(current_tab == 2)
|
||||
. += "<table><tr><td width='340px' height='300px' valign='top'>"
|
||||
. += "<div class='statusDisplay'><img src=previewicon.png width=[preview_icon.Width()] height=[preview_icon.Height()]></div><br>"
|
||||
. += "<div class='statusDisplay'><img src=previewicondatpng width=[preview_icon.Width()] height=[preview_icon.Height()]></div><br>"
|
||||
. += "<a href='?_src_=prefs;preference=flavor_text;task=input'><b>Set Flavor Text</b></a><br>"
|
||||
if(lentext(features["flavor_text"]) <= 40)
|
||||
if(!lentext(features["flavor_text"]))
|
||||
@@ -695,6 +693,7 @@
|
||||
. += "</td>"
|
||||
*/
|
||||
. += "</td></tr></table>"
|
||||
|
||||
if(current_tab == 3)
|
||||
if(!gear_tab)
|
||||
gear_tab = GLOB.loadout_items[1]
|
||||
@@ -767,7 +766,7 @@
|
||||
datum/preferences/copy_to(mob/living/carbon/human/character, icon_updates = 1)
|
||||
..()
|
||||
character.give_genitals(TRUE)
|
||||
character.flavor_text = features["flavor_text"] //Let's update their flavor_text at least initially
|
||||
character.flavor_text = features["flavor_text"] //Let's up.e their flavor_text at least initially
|
||||
character.canbearoused = arousable
|
||||
if(icon_updates)
|
||||
character.update_genitals()
|
||||
@@ -1,6 +1,9 @@
|
||||
/datum/preferences/proc/cit_character_pref_load(savefile/S)
|
||||
//ipcs
|
||||
S["feature_ipc_screen"] >> features["ipc_screen"]
|
||||
|
||||
//Citadel toggles
|
||||
S["cit_toggles"] >> cit_toggles
|
||||
|
||||
features["ipc_screen"] = sanitize_inlist(features["ipc_screen"], GLOB.ipc_screens_list)
|
||||
//Citadel
|
||||
@@ -11,6 +14,7 @@
|
||||
features["mcolor3"] = pick("FFFFFF","7F7F7F", "7FFF7F", "7F7FFF", "FF7F7F", "7FFFFF", "FF7FFF", "FFFF7F")
|
||||
features["mcolor2"] = sanitize_hexcolor(features["mcolor2"], 3, 0)
|
||||
features["mcolor3"] = sanitize_hexcolor(features["mcolor3"], 3, 0)
|
||||
cit_toggles = sanitize_integer(toggles, 0, 65535, initial(toggles))
|
||||
|
||||
//gear loadout
|
||||
var/text_to_load
|
||||
@@ -69,6 +73,8 @@
|
||||
//flavor text
|
||||
WRITE_FILE(S["feature_flavor_text"], features["flavor_text"])
|
||||
|
||||
WRITE_FILE(S["cit_toggles"], cit_toggles)
|
||||
|
||||
//gear loadout
|
||||
if(islist(chosen_gear))
|
||||
if(chosen_gear.len)
|
||||
|
||||
@@ -2,35 +2,35 @@ TOGGLE_CHECKBOX(/datum/verbs/menu/Settings/Sound, toggleeatingnoise)()
|
||||
set name = "Toggle Eating Noises"
|
||||
set category = "Preferences"
|
||||
set desc = "Hear Eating noises"
|
||||
usr.client.prefs.toggles ^= EATING_NOISES
|
||||
usr.client.prefs.cit_toggles ^= EATING_NOISES
|
||||
usr.client.prefs.save_preferences()
|
||||
usr.stop_sound_channel(CHANNEL_PRED)
|
||||
to_chat(usr, "You will [(usr.client.prefs.toggles & EATING_NOISES) ? "now" : "no longer"] hear eating noises.")
|
||||
to_chat(usr, "You will [(usr.client.prefs.cit_toggles & EATING_NOISES) ? "now" : "no longer"] hear eating noises.")
|
||||
/datum/verbs/menu/Settings/Sound/toggleeatingnoise/Get_checked(client/C)
|
||||
return !(C.prefs.toggles & EATING_NOISES)
|
||||
return C.prefs.cit_toggles & EATING_NOISES
|
||||
|
||||
|
||||
TOGGLE_CHECKBOX(/datum/verbs/menu/Settings/Sound, toggledigestionnoise)()
|
||||
set name = "Toggle Digestion Noises"
|
||||
set category = "Preferences"
|
||||
set desc = "Hear digestive noises"
|
||||
usr.client.prefs.toggles ^= DIGESTION_NOISES
|
||||
usr.client.prefs.cit_toggles ^= DIGESTION_NOISES
|
||||
usr.client.prefs.save_preferences()
|
||||
usr.stop_sound_channel(CHANNEL_DIGEST)
|
||||
to_chat(usr, "You will [(usr.client.prefs.toggles & DIGESTION_NOISES) ? "now" : "no longer"] hear digestion noises.")
|
||||
to_chat(usr, "You will [(usr.client.prefs.cit_toggles & DIGESTION_NOISES) ? "now" : "no longer"] hear digestion noises.")
|
||||
/datum/verbs/menu/Settings/Sound/toggledigestionnoise/Get_checked(client/C)
|
||||
return !(C.prefs.toggles & DIGESTION_NOISES)
|
||||
return C.prefs.cit_toggles & DIGESTION_NOISES
|
||||
|
||||
TOGGLE_CHECKBOX(/datum/verbs/menu/Settings/Sound, togglehoundsleeper)()
|
||||
set name = "Allow/Deny Hound Sleeper"
|
||||
set category = "Preferences"
|
||||
set desc = "Allow MediHound Sleepers"
|
||||
usr.client.prefs.toggles ^= MEDIHOUND_SLEEPER
|
||||
usr.client.prefs.cit_toggles ^= MEDIHOUND_SLEEPER
|
||||
usr.client.prefs.save_preferences()
|
||||
if(usr.client.prefs.toggles & MEDIHOUND_SLEEPER)
|
||||
if(usr.client.prefs.cit_toggles & MEDIHOUND_SLEEPER)
|
||||
to_chat(usr, "You will now allow MediHounds to place you in their sleeper.")
|
||||
else
|
||||
to_chat(usr, "You will no longer allow MediHounds to place you in their sleeper.")
|
||||
SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle MediHound Sleeper", "[usr.client.prefs.toggles & MEDIHOUND_SLEEPER ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
SSblackbox.record_feedback("nested tally", "preferences_verb", 1, list("Toggle MediHound Sleeper", "[usr.client.prefs.cit_toggles & MEDIHOUND_SLEEPER ? "Enabled" : "Disabled"]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
/datum/verbs/menu/Settings/Sound/togglehoundsleeper/Get_checked(client/C)
|
||||
return C.prefs.toggles & MEDIHOUND_SLEEPER
|
||||
return C.prefs.cit_toggles & MEDIHOUND_SLEEPER
|
||||
@@ -1,3 +1,103 @@
|
||||
/mob
|
||||
var/nextsoundemote = 1
|
||||
|
||||
//Disables the custom emote blacklist from TG that normally applies to slimes.
|
||||
/datum/emote/living/custom
|
||||
mob_type_blacklist_typecache = list(/mob/living/brain)
|
||||
mob_type_blacklist_typecache = list(/mob/living/brain)
|
||||
|
||||
/datum/emote/living/scream/run_emote(mob/living/user, params) //I can't not port this shit, come on.
|
||||
if(user.nextsoundemote >= world.time || user.stat != CONSCIOUS)
|
||||
return
|
||||
var/sound
|
||||
var/miming = user.mind ? user.mind.miming : 0
|
||||
if(!user.is_muzzled() && !miming)
|
||||
user.nextsoundemote = world.time + 7
|
||||
if(issilicon(user))
|
||||
sound = 'modular_citadel/sound/voice/scream_silicon.ogg'
|
||||
if(iscyborg(user))
|
||||
var/mob/living/silicon/robot/S = user
|
||||
if(S.cell.charge < 20)
|
||||
to_chat(S, "<span class='warning'>Scream module deactivated. Please recharge.</span>")
|
||||
return
|
||||
S.cell.use(200)
|
||||
if(ismonkey(user))
|
||||
sound = 'modular_citadel/sound/voice/scream_monkey.ogg'
|
||||
if(istype(user, /mob/living/simple_animal/hostile/gorilla))
|
||||
sound = 'sound/creatures/gorilla.ogg'
|
||||
if(ishuman(user))
|
||||
user.adjustOxyLoss(5)
|
||||
sound = pick('modular_citadel/sound/voice/scream_m1.ogg', 'modular_citadel/sound/voice/scream_m2.ogg')
|
||||
if(user.gender == FEMALE)
|
||||
sound = pick('modular_citadel/sound/voice/scream_f1.ogg', 'modular_citadel/sound/voice/scream_f2.ogg')
|
||||
if(is_species(user, /datum/species/android) || is_species(user, /datum/species/synth) || is_species(user, /datum/species/ipc))
|
||||
sound = 'modular_citadel/sound/voice/scream_silicon.ogg'
|
||||
if(is_species(user, /datum/species/lizard))
|
||||
sound = 'modular_citadel/sound/voice/scream_lizard.ogg'
|
||||
if(is_species(user, /datum/species/skeleton))
|
||||
sound = 'modular_citadel/sound/voice/scream_skeleton.ogg'
|
||||
if (is_species(user, /datum/species/fly) || is_species(user, /datum/species/moth))
|
||||
sound = 'modular_citadel/sound/voice/scream_moth.ogg'
|
||||
if(isalien(user))
|
||||
sound = 'sound/voice/hiss6.ogg'
|
||||
LAZYINITLIST(user.alternate_screams)
|
||||
if(LAZYLEN(user.alternate_screams))
|
||||
sound = pick(user.alternate_screams)
|
||||
playsound(user.loc, sound, 50, 1, 4, 1.2)
|
||||
message = "screams!"
|
||||
else if(miming)
|
||||
message = "acts out a scream."
|
||||
else
|
||||
message = "makes a very loud noise."
|
||||
. = ..()
|
||||
|
||||
/datum/emote/sound/carbon/snap
|
||||
key = "snap"
|
||||
key_third_person = "snaps"
|
||||
muzzle_ignore = TRUE
|
||||
restraint_check = TRUE
|
||||
emote_type = EMOTE_AUDIBLE
|
||||
sound = 'sound/effects/snap01.ogg'
|
||||
mob_type_allowed_typecache = list(/mob/living/carbon/)
|
||||
|
||||
|
||||
/datum/emote/living/snap
|
||||
key = "snap"
|
||||
key_third_person = "snaps"
|
||||
message = "snaps their fingers."
|
||||
emote_type = EMOTE_AUDIBLE
|
||||
|
||||
/datum/emote/living/snap/run_emote(mob/living/user, params)
|
||||
if(ishuman(user))
|
||||
if(user.nextsoundemote >= world.time)
|
||||
return
|
||||
user.nextsoundemote = world.time + 7
|
||||
playsound(user, 'modular_citadel/sound/voice/snap.ogg', 50, 1, -1)
|
||||
. = ..()
|
||||
|
||||
/datum/emote/living/snap2
|
||||
key = "snap2"
|
||||
key_third_person = "snaps twice"
|
||||
message = "snaps twice."
|
||||
emote_type = EMOTE_AUDIBLE
|
||||
|
||||
/datum/emote/living/snap2/run_emote(mob/living/user, params)
|
||||
if(ishuman(user))
|
||||
if(user.nextsoundemote >= world.time)
|
||||
return
|
||||
user.nextsoundemote = world.time + 7
|
||||
playsound(user, 'modular_citadel/sound/voice/snap2.ogg', 50, 1, -1)
|
||||
. = ..()
|
||||
|
||||
/datum/emote/living/snap3
|
||||
key = "snap3"
|
||||
key_third_person = "snaps thrice"
|
||||
message = "snaps thrice."
|
||||
emote_type = EMOTE_AUDIBLE
|
||||
|
||||
/datum/emote/living/snap3/run_emote(mob/living/user, params)
|
||||
if(ishuman(user))
|
||||
if(user.nextsoundemote >= world.time)
|
||||
return
|
||||
user.nextsoundemote = world.time + 7
|
||||
playsound(user, 'modular_citadel/sound/voice/snap3.ogg', 50, 1, -1)
|
||||
. = ..()
|
||||
@@ -0,0 +1,45 @@
|
||||
/mob/living
|
||||
var/list/alternate_screams
|
||||
|
||||
/mob/living/carbon/proc/reindex_screams()
|
||||
clear_screams()
|
||||
if(head)
|
||||
add_screams(head.alternate_screams)
|
||||
if(wear_mask)
|
||||
add_screams(wear_mask.alternate_screams)
|
||||
if(back)
|
||||
add_screams(back.alternate_screams)
|
||||
|
||||
/mob/living/carbon/human/reindex_screams()
|
||||
..()
|
||||
//More slots in humans.
|
||||
if(ears)
|
||||
add_screams(ears.alternate_screams)
|
||||
if(wear_suit)
|
||||
add_screams(wear_suit.alternate_screams)
|
||||
if(w_uniform)
|
||||
add_screams(w_uniform.alternate_screams)
|
||||
if(glasses)
|
||||
add_screams(glasses.alternate_screams)
|
||||
if(gloves)
|
||||
add_screams(gloves.alternate_screams)
|
||||
if(shoes)
|
||||
add_screams(shoes.alternate_screams)
|
||||
if(belt)
|
||||
add_screams(belt.alternate_screams)
|
||||
if(s_store)
|
||||
add_screams(s_store.alternate_screams)
|
||||
if(wear_id)
|
||||
add_screams(wear_id.alternate_screams)
|
||||
|
||||
//Note that the following two are for /mob/living, while the above two are for /carbon and /human
|
||||
/mob/living/proc/add_screams(var/list/screams)
|
||||
LAZYINITLIST(alternate_screams)
|
||||
if(!screams || screams.len == 0)
|
||||
return
|
||||
for(var/S in screams)
|
||||
LAZYADD(alternate_screams, S)
|
||||
|
||||
/mob/living/proc/clear_screams()
|
||||
LAZYINITLIST(alternate_screams)
|
||||
LAZYCLEARLIST(alternate_screams)
|
||||
@@ -163,7 +163,7 @@
|
||||
//Sound w/ antispam flag setting
|
||||
if(!silent && !recent_sound)
|
||||
for(var/mob/M in get_hearers_in_view(5, get_turf(owner)))
|
||||
if(M.client && M.client.prefs.toggles & EATING_NOISES)
|
||||
if(M.client && M.client.prefs.cit_toggles & EATING_NOISES)
|
||||
playsound(get_turf(owner),"[src.vore_sound]",50,0,-5,0,ignore_walls = FALSE,channel=CHANNEL_PRED)
|
||||
recent_sound = TRUE
|
||||
|
||||
@@ -194,7 +194,7 @@
|
||||
AM.forceMove(destination) // Move the belly contents into the same location as belly's owner.
|
||||
count++
|
||||
for(var/mob/M in get_hearers_in_view(5, get_turf(owner)))
|
||||
if(M.client && M.client.prefs.toggles & EATING_NOISES)
|
||||
if(M.client && M.client.prefs.cit_toggles & EATING_NOISES)
|
||||
playsound(get_turf(owner),"[src.release_sound]",50,0,-5,0,ignore_walls = FALSE,channel=CHANNEL_PRED)
|
||||
items_preserved.Cut()
|
||||
owner.visible_message("<font color='green'><b>[owner] expels everything from their [lowertext(name)]!</b></font>")
|
||||
@@ -215,7 +215,7 @@
|
||||
P.stop_sound_channel(CHANNEL_PREYLOOP)
|
||||
if(release_sound)
|
||||
for(var/mob/H in get_hearers_in_view(5, get_turf(owner)))
|
||||
if(H.client && H.client.prefs.toggles & EATING_NOISES)
|
||||
if(H.client && H.client.prefs.cit_toggles & EATING_NOISES)
|
||||
playsound(get_turf(owner),"[src.release_sound]",50,0,-5,0,ignore_walls = FALSE,channel=CHANNEL_PRED)
|
||||
|
||||
if(istype(M,/mob/living))
|
||||
@@ -507,7 +507,7 @@
|
||||
|
||||
if(!silent)
|
||||
for(var/mob/M in get_hearers_in_view(5, get_turf(owner)))
|
||||
if(M.client && M.client.prefs.toggles & EATING_NOISES)
|
||||
if(M.client && M.client.prefs.cit_toggles & EATING_NOISES)
|
||||
playsound(get_turf(owner),"struggle_sound",35,0,-5,1,ignore_walls = FALSE,channel=CHANNEL_PRED)
|
||||
R.stop_sound_channel(CHANNEL_PRED)
|
||||
var/sound/prey_struggle = sound(get_sfx("prey_struggle"))
|
||||
@@ -584,7 +584,7 @@
|
||||
target.nom_mob(content, target.owner)
|
||||
if(!silent)
|
||||
for(var/mob/M in get_hearers_in_view(5, get_turf(owner)))
|
||||
if(M.client && M.client.prefs.toggles & EATING_NOISES)
|
||||
if(M.client && M.client.prefs.cit_toggles & EATING_NOISES)
|
||||
playsound(get_turf(owner),"[src.vore_sound]",50,0,-5,0,ignore_walls = FALSE,channel=CHANNEL_PRED)
|
||||
owner.updateVRPanel()
|
||||
for(var/mob/living/M in contents)
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
if(prob(25))
|
||||
M.stop_sound_channel(CHANNEL_DIGEST)
|
||||
for(var/mob/H in get_hearers_in_view(5, get_turf(owner)))
|
||||
if(H.client && H.client.prefs.toggles & DIGESTION_NOISES)
|
||||
if(H.client && H.client.prefs.cit_toggles & DIGESTION_NOISES)
|
||||
playsound(get_turf(owner),"digest_pred",50,0,-5,0,ignore_walls = FALSE,channel=CHANNEL_DIGEST)
|
||||
M.stop_sound_channel(CHANNEL_DIGEST)
|
||||
M.playsound_local(get_turf(M), prey_digest, 45)
|
||||
@@ -72,7 +72,7 @@
|
||||
owner.nutrition += 400 // so eating dead mobs gives you *something*.
|
||||
M.stop_sound_channel(DIGESTION_NOISES)
|
||||
for(var/mob/H in get_hearers_in_view(5, get_turf(owner)))
|
||||
if(H.client && H.client.prefs.toggles & DIGESTION_NOISES)
|
||||
if(H.client && H.client.prefs.cit_toggles & DIGESTION_NOISES)
|
||||
playsound(get_turf(owner),"death_pred",50,0,-5,0,ignore_walls = FALSE,channel=CHANNEL_DIGEST)
|
||||
M.stop_sound_channel(DIGESTION_NOISES)
|
||||
M.stop_sound_channel(CHANNEL_PREYLOOP)
|
||||
@@ -101,7 +101,7 @@
|
||||
if(prob(25))
|
||||
M.stop_sound_channel(CHANNEL_DIGEST)
|
||||
for(var/mob/H in get_hearers_in_view(5, get_turf(owner)))
|
||||
if(H.client && H.client.prefs.toggles & DIGESTION_NOISES)
|
||||
if(H.client && H.client.prefs.cit_toggles & DIGESTION_NOISES)
|
||||
playsound(get_turf(owner),"digest_pred",50,0,-5,0,ignore_walls = FALSE,channel=CHANNEL_DIGEST)
|
||||
M.stop_sound_channel(CHANNEL_DIGEST)
|
||||
M.playsound_local(get_turf(M), prey_digest, 65)
|
||||
@@ -120,7 +120,7 @@
|
||||
if(prob(35))
|
||||
M.stop_sound_channel(CHANNEL_DIGEST)
|
||||
for(var/mob/H in get_hearers_in_view(5, get_turf(owner)))
|
||||
if(H.client && H.client.prefs.toggles & DIGESTION_NOISES)
|
||||
if(H.client && H.client.prefs.cit_toggles & DIGESTION_NOISES)
|
||||
playsound(get_turf(owner),"digest_pred",50,0,-5,0,ignore_walls = FALSE,channel=CHANNEL_DIGEST)
|
||||
M.stop_sound_channel(CHANNEL_PRED)
|
||||
M.playsound_local(get_turf(M), prey_digest, 65)
|
||||
@@ -133,7 +133,7 @@
|
||||
if(prob(25))
|
||||
M.stop_sound_channel(CHANNEL_DIGEST)
|
||||
for(var/mob/H in get_hearers_in_view(5, get_turf(owner)))
|
||||
if(H.client && H.client.prefs.toggles & DIGESTION_NOISES)
|
||||
if(H.client && H.client.prefs.cit_toggles & DIGESTION_NOISES)
|
||||
playsound(get_turf(owner),"digest_pred",50,0,-5,0,ignore_walls = FALSE,channel=CHANNEL_DIGEST)
|
||||
M.stop_sound_channel(CHANNEL_DIGEST)
|
||||
M.playsound_local(get_turf(M), prey_digest, 65)
|
||||
@@ -161,7 +161,7 @@
|
||||
|
||||
M.stop_sound_channel(CHANNEL_DIGEST)
|
||||
for(var/mob/H in get_hearers_in_view(5, get_turf(owner)))
|
||||
if(H.client && H.client.prefs.toggles & DIGESTION_NOISES)
|
||||
if(H.client && H.client.prefs.cit_toggles & DIGESTION_NOISES)
|
||||
playsound(get_turf(owner),"death_pred",50,0,-5,0,ignore_walls = FALSE,channel=CHANNEL_DIGEST)
|
||||
M.stop_sound_channel(CHANNEL_DIGEST)
|
||||
M.playsound_local(get_turf(M), prey_death, 65)
|
||||
|
||||
@@ -195,7 +195,7 @@
|
||||
// If we got this far, nom successful! Announce it!
|
||||
user.visible_message(success_msg)
|
||||
for(var/mob/M in get_hearers_in_view(5, get_turf(user)))
|
||||
if(M.client && M.client.prefs.toggles & EATING_NOISES)
|
||||
if(M.client && M.client.prefs.cit_toggles & EATING_NOISES)
|
||||
playsound(get_turf(user),"[belly.vore_sound]",50,0,-5,0,ignore_walls = FALSE,channel=CHANNEL_PRED)
|
||||
|
||||
// Actually shove prey into the belly.
|
||||
|
||||
@@ -355,7 +355,7 @@
|
||||
|
||||
selected.release_all_contents()
|
||||
for(var/mob/M in get_hearers_in_view(5, get_turf(user)))
|
||||
if(M.client && M.client.prefs.toggles & EATING_NOISES)
|
||||
if(M.client && M.client.prefs.cit_toggles & EATING_NOISES)
|
||||
playsound(get_turf(user),'sound/vore/pred/escape.ogg',50,0,-5,0,ignore_walls = FALSE,channel=CHANNEL_PRED)
|
||||
to_chat(user.loc,"<span class='danger'>Everything is released from [user]!</span>")
|
||||
|
||||
@@ -371,7 +371,7 @@
|
||||
for(var/atom/movable/tgt in selected)
|
||||
selected.transfer_contents(tgt, choice, 1)
|
||||
for(var/mob/M in get_hearers_in_view(5, get_turf(user)))
|
||||
if(M.client && M.client.prefs.toggles & EATING_NOISES)
|
||||
if(M.client && M.client.prefs.cit_toggles & EATING_NOISES)
|
||||
playsound(get_turf(user),'sound/vore/pred/stomachmove.ogg',50,0,-5,0,ignore_walls = FALSE,channel=CHANNEL_PRED)
|
||||
to_chat(tgt,"<span class='warning'>You're squished from [user]'s [lowertext(selected)] to their [lowertext(choice.name)]!</span>")
|
||||
|
||||
@@ -391,7 +391,7 @@
|
||||
|
||||
selected.release_specific_contents(tgt)
|
||||
for(var/mob/M in get_hearers_in_view(5, get_turf(user)))
|
||||
if(M.client && M.client.prefs.toggles & EATING_NOISES)
|
||||
if(M.client && M.client.prefs.cit_toggles & EATING_NOISES)
|
||||
playsound(get_turf(user),'sound/vore/pred/escape.ogg',50,0,-5,0,ignore_walls = FALSE,channel=CHANNEL_PRED)
|
||||
user.loc << "<span class='danger'>[tgt] is released from [user]!</span>"
|
||||
|
||||
@@ -407,7 +407,7 @@
|
||||
to_chat(tgt,"<span class='warning'>You're squished from [user]'s [lowertext(selected.name)] to their [lowertext(choice.name)]!</span>")
|
||||
selected.transfer_contents(tgt, choice)
|
||||
for(var/mob/M in get_hearers_in_view(5, get_turf(user)))
|
||||
if(M.client && M.client.prefs.toggles & EATING_NOISES)
|
||||
if(M.client && M.client.prefs.cit_toggles & EATING_NOISES)
|
||||
playsound(get_turf(user),'sound/vore/pred/stomachmove.ogg',50,0,-5,0,ignore_walls = FALSE,channel=CHANNEL_PRED)
|
||||
|
||||
if(href_list["newbelly"])
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -2732,6 +2732,7 @@
|
||||
#include "modular_citadel\code\modules\mob\living\living.dm"
|
||||
#include "modular_citadel\code\modules\mob\living\carbon\carbon.dm"
|
||||
#include "modular_citadel\code\modules\mob\living\carbon\damage_procs.dm"
|
||||
#include "modular_citadel\code\modules\mob\living\carbon\reindex_screams.dm"
|
||||
#include "modular_citadel\code\modules\mob\living\carbon\human\human.dm"
|
||||
#include "modular_citadel\code\modules\mob\living\carbon\human\human_defense.dm"
|
||||
#include "modular_citadel\code\modules\mob\living\carbon\human\human_movement.dm"
|
||||
|
||||
Reference in New Issue
Block a user