mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-09 16:12:17 +00:00
[MIRROR] Kitchen Sink PR (#10745)
Co-authored-by: Cameron Lennox <killer65311@gmail.com>
This commit is contained in:
committed by
GitHub
parent
42483a1d4a
commit
667e08ee0a
@@ -2,6 +2,10 @@
|
||||
** Holds defines for code\game\atoms_movable.dm to avoid magic numbers and potential unexpected overwrites down the line
|
||||
*/
|
||||
|
||||
#define NON_LISTENING_ATOM 0
|
||||
#define LISTENING_ATOM 1
|
||||
#define LISTENING_PLAYER 2
|
||||
|
||||
#define DEFAULT_ICON_SCALE_X 1
|
||||
#define DEFAULT_ICON_SCALE_Y 1
|
||||
#define DEFAULT_ICON_ROTATION 0
|
||||
|
||||
@@ -80,8 +80,7 @@
|
||||
#define WAIT_FINISH 4
|
||||
#define DO_AUTOPILOT 5
|
||||
|
||||
// Setting this much higher than 1024 could allow spammers to DOS the server easily.
|
||||
#define MAX_MESSAGE_LEN 4096 //CHOMPStation Edit - This is what it means to go even further byond
|
||||
#define MAX_MESSAGE_LEN 4096
|
||||
#define MAX_PAPER_MESSAGE_LEN 6144
|
||||
#define MAX_BOOK_MESSAGE_LEN 24576
|
||||
#define MAX_RECORD_LENGTH 24576
|
||||
@@ -446,9 +445,9 @@ GLOBAL_LIST_EMPTY(##LIST_NAME);\
|
||||
#define VOLUME_CHANNEL_INSTRUMENTS "Instruments"
|
||||
#define VOLUME_CHANNEL_WEATHER "Weather"
|
||||
#define VOLUME_CHANNEL_SPECIES_SOUNDS "Species Sounds (Verbal Injury Feedback)"
|
||||
#define VOLUME_CHANNEL_HUD_WARNINGS "SS13 HUD (Clientside-only sounds)"
|
||||
#define VOLUME_CHANNEL_HUD_WARNINGS "SS13 HUD (Clientside-only sounds)" //NYI //CHOMPStation Note: Implemented on Chomp
|
||||
#define VOLUME_CHANNEL_DEATH_SOUNDS "Death Sounds"
|
||||
#define VOLUME_CHANNEL_INJURY_SOUNDS "Mob Injury Sounds (Non-Verbal Feedback)"
|
||||
#define VOLUME_CHANNEL_INJURY_SOUNDS "Mob Injury Sounds (Non-Verbal Feedback)" //NYI //CHOMPStation Note: Implemented on Chomp
|
||||
#define VOLUME_CHANNEL_MACHINERY "Machinery Noises"
|
||||
#define VOLUME_CHANNEL_MACHINERY_IDLE "Machinery Idle Noises"
|
||||
|
||||
|
||||
@@ -244,7 +244,7 @@
|
||||
|
||||
// CHOMPEdit: New Planet Ambience
|
||||
#define AMBIENCE_THOR list(\
|
||||
'modular_chomp/sound/ambience/thor/birds_stinger1.ogg',\
|
||||
'modular_chomp/sound/ambience/thor/birds_stinger2.ogg',\
|
||||
'modular_chomp/sound/ambience/thor/birds_stinger3.ogg'\
|
||||
'sound/ambience/thor/birds_stinger1.ogg',\
|
||||
'sound/ambience/thor/birds_stinger2.ogg',\
|
||||
'sound/ambience/thor/birds_stinger3.ogg'\
|
||||
)
|
||||
|
||||
@@ -219,14 +219,13 @@
|
||||
|
||||
return hear
|
||||
|
||||
//CHOMPEdit - entire proc changed basically to use recursive listening
|
||||
/proc/get_mobs_in_radio_ranges(var/list/obj/item/radio/radios)
|
||||
|
||||
. = list()
|
||||
// Returns a list of mobs who can hear any of the radios given in @radios
|
||||
for(var/obj/item/radio/R as anything in radios)
|
||||
if(get_turf(R))
|
||||
for(var/turf/T in R.can_broadcast_to()) //CHOMPEdit
|
||||
for(var/turf/T in R.can_broadcast_to())
|
||||
for (var/atom/movable/hearing in T)
|
||||
if (hearing.recursive_listeners)
|
||||
. |= hearing.recursive_listeners
|
||||
|
||||
@@ -34,9 +34,9 @@
|
||||
var/extra_range
|
||||
var/opacity_check
|
||||
var/pref_check
|
||||
var/volume_chan //CHOMPedit
|
||||
var/exclusive
|
||||
var/falloff // CHOMPEdit: Add Falloff
|
||||
var/volume_chan
|
||||
|
||||
var/timerid
|
||||
var/started
|
||||
|
||||
@@ -142,10 +142,10 @@
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/datum/looping_sound/shield_generator
|
||||
start_sound = 'modular_chomp/sound/machines/shield_hum/shield_generator_whir.ogg'
|
||||
mid_sounds = list('modular_chomp/sound/machines/shield_hum/shield_generator_hum2.ogg', 'modular_chomp/sound/machines/shield_hum/shield_generator_hum3.ogg')
|
||||
start_sound = 'sound/machines/shield_hum/shield_generator_whir.ogg'
|
||||
mid_sounds = list('sound/machines/shield_hum/shield_generator_hum2.ogg', 'sound/machines/shield_hum/shield_generator_hum3.ogg')
|
||||
mid_length = 60
|
||||
end_sound = 'modular_chomp/sound/machines/shield_hum/shield_generator_whir.ogg'
|
||||
end_sound = 'sound/machines/shield_hum/shield_generator_whir.ogg'
|
||||
volume = 40
|
||||
volume_chan = VOLUME_CHANNEL_MACHINERY
|
||||
exclusive = TRUE
|
||||
|
||||
@@ -10,11 +10,11 @@
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/datum/looping_sound/mob/deafened
|
||||
start_sound = 'modular_chomp/sound/effects/ear_ring/ear_deaf_in.ogg'
|
||||
start_sound = 'sound/effects/ear_ring/ear_deaf_in.ogg'
|
||||
start_length = 4 SECONDS // 2 seconds shorter than the actual file ending, bc we want it to overlap
|
||||
mid_sounds = list('modular_chomp/sound/misc/silence.ogg'=1)
|
||||
mid_sounds = list('sound/misc/silence.ogg'=1)
|
||||
mid_length = 3 SECONDS
|
||||
end_sound = 'modular_chomp/sound/effects/ear_ring/ear_deaf_out.ogg'
|
||||
end_sound = 'sound/effects/ear_ring/ear_deaf_out.ogg'
|
||||
volume = 40
|
||||
direct = TRUE // We send this sound directly to the mob, bc they only hear it when they're deaf.
|
||||
exclusive = TRUE // This should only occur once, because we can only be deafened once.
|
||||
@@ -23,7 +23,7 @@
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
/datum/looping_sound/mob/cozyloop
|
||||
mid_sounds = list('modular_chomp/sound/misc/cozy.ogg'=1)
|
||||
mid_sounds = list('sound/misc/cozy.ogg'=1)
|
||||
mid_length = 21 SECONDS
|
||||
volume = 40
|
||||
pref_check = /datum/preference/toggle/sleep_music
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/datum/looping_sound/weather
|
||||
pref_check = /datum/preference/toggle/weather_sounds
|
||||
volume_chan = VOLUME_CHANNEL_WEATHER // CHOMPEdit - Weather Volume Channel
|
||||
volume_chan = VOLUME_CHANNEL_WEATHER
|
||||
|
||||
// CHOMPEdit: Blanket replace all wind with this, for now, in lieue of a snowstorm-specific wind
|
||||
/datum/looping_sound/weather/outside_blizzard
|
||||
|
||||
@@ -31,6 +31,8 @@
|
||||
var/image/cloaked_selfimage //The image we use for our client to let them see where we are
|
||||
var/belly_cycles = 0 // Counting current belly process cycles for autotransfer.
|
||||
var/autotransferable = TRUE // Toggle for autotransfer mechanics.
|
||||
var/recursive_listeners
|
||||
var/listening_recursive = NON_LISTENING_ATOM
|
||||
|
||||
/atom/movable/Initialize(mapload)
|
||||
. = ..()
|
||||
@@ -57,6 +59,9 @@
|
||||
AddComponent(/datum/component/overlay_lighting, starts_on = light_on)
|
||||
if(MOVABLE_LIGHT_DIRECTIONAL)
|
||||
AddComponent(/datum/component/overlay_lighting, is_directional = TRUE, starts_on = light_on)
|
||||
if (listening_recursive)
|
||||
set_listening(listening_recursive)
|
||||
|
||||
|
||||
/atom/movable/Destroy()
|
||||
if(em_block)
|
||||
@@ -84,7 +89,8 @@
|
||||
|
||||
if(orbiting)
|
||||
stop_orbit()
|
||||
QDEL_NULL(riding_datum) //VOREStation Add
|
||||
QDEL_NULL(riding_datum)
|
||||
set_listening(NON_LISTENING_ATOM)
|
||||
|
||||
/atom/movable/vv_edit_var(var_name, var_value)
|
||||
if(var_name in GLOB.VVpixelmovement) //Pixel movement is not yet implemented, changing this will break everything irreversibly.
|
||||
@@ -674,3 +680,45 @@
|
||||
|
||||
/atom/movable/proc/exit_belly(obj/belly/B)
|
||||
return
|
||||
|
||||
/atom/movable/proc/set_listening(var/set_to)
|
||||
if (listening_recursive && !set_to)
|
||||
LAZYREMOVE(recursive_listeners, src)
|
||||
if (!LAZYLEN(recursive_listeners))
|
||||
for (var/atom/movable/location as anything in get_nested_locs(src))
|
||||
LAZYREMOVE(location.recursive_listeners, src)
|
||||
if (!listening_recursive && set_to)
|
||||
LAZYOR(recursive_listeners, src)
|
||||
for (var/atom/movable/location as anything in get_nested_locs(src))
|
||||
LAZYOR(location.recursive_listeners, src)
|
||||
listening_recursive = set_to
|
||||
|
||||
///Returns a list of all locations (except the area) the movable is within.
|
||||
/proc/get_nested_locs(atom/movable/atom_on_location, include_turf = FALSE)
|
||||
. = list()
|
||||
var/atom/location = atom_on_location.loc
|
||||
var/turf/our_turf = get_turf(atom_on_location)
|
||||
while(location && location != our_turf)
|
||||
. += location
|
||||
location = location.loc
|
||||
if(our_turf && include_turf) //At this point, only the turf is left, provided it exists.
|
||||
. += our_turf
|
||||
|
||||
/atom/movable/Exited(atom/movable/gone, atom/new_loc)
|
||||
. = ..()
|
||||
|
||||
if (!LAZYLEN(gone.recursive_listeners))
|
||||
return
|
||||
for (var/atom/movable/location as anything in get_nested_locs(src)|src)
|
||||
LAZYREMOVE(location.recursive_listeners, gone.recursive_listeners)
|
||||
|
||||
/atom/movable/Entered(atom/movable/arrived, atom/old_loc)
|
||||
. = ..()
|
||||
|
||||
if (!LAZYLEN(arrived.recursive_listeners))
|
||||
return
|
||||
for (var/atom/movable/location as anything in get_nested_locs(src)|src)
|
||||
LAZYOR(location.recursive_listeners, arrived.recursive_listeners)
|
||||
|
||||
/atom/movable/proc/show_message(msg, type, alt, alt_type)//Message, type of message (1 or 2), alternative message, alt message type (1 or 2)
|
||||
return
|
||||
|
||||
@@ -1,55 +0,0 @@
|
||||
//gonna be honest this is really just a ripoff of tg's recursive hearing
|
||||
/atom/movable
|
||||
var/recursive_listeners
|
||||
var/listening_recursive = NON_LISTENING_ATOM
|
||||
|
||||
/atom/movable/Initialize(mapload)
|
||||
. = ..()
|
||||
if (listening_recursive)
|
||||
set_listening(listening_recursive)
|
||||
|
||||
/atom/movable/Destroy()
|
||||
. = ..()
|
||||
set_listening(NON_LISTENING_ATOM)
|
||||
|
||||
/atom/movable/proc/set_listening(var/set_to)
|
||||
if (listening_recursive && !set_to)
|
||||
LAZYREMOVE(recursive_listeners, src)
|
||||
if (!LAZYLEN(recursive_listeners))
|
||||
for (var/atom/movable/location as anything in get_nested_locs(src))
|
||||
LAZYREMOVE(location.recursive_listeners, src)
|
||||
if (!listening_recursive && set_to)
|
||||
LAZYOR(recursive_listeners, src)
|
||||
for (var/atom/movable/location as anything in get_nested_locs(src))
|
||||
LAZYOR(location.recursive_listeners, src)
|
||||
listening_recursive = set_to
|
||||
|
||||
///Returns a list of all locations (except the area) the movable is within.
|
||||
/proc/get_nested_locs(atom/movable/atom_on_location, include_turf = FALSE)
|
||||
. = list()
|
||||
var/atom/location = atom_on_location.loc
|
||||
var/turf/our_turf = get_turf(atom_on_location)
|
||||
while(location && location != our_turf)
|
||||
. += location
|
||||
location = location.loc
|
||||
if(our_turf && include_turf) //At this point, only the turf is left, provided it exists.
|
||||
. += our_turf
|
||||
|
||||
/atom/movable/Exited(atom/movable/gone, atom/new_loc)
|
||||
. = ..()
|
||||
|
||||
if (!LAZYLEN(gone.recursive_listeners))
|
||||
return
|
||||
for (var/atom/movable/location as anything in get_nested_locs(src)|src)
|
||||
LAZYREMOVE(location.recursive_listeners, gone.recursive_listeners)
|
||||
|
||||
/atom/movable/Entered(atom/movable/arrived, atom/old_loc)
|
||||
. = ..()
|
||||
|
||||
if (!LAZYLEN(arrived.recursive_listeners))
|
||||
return
|
||||
for (var/atom/movable/location as anything in get_nested_locs(src)|src)
|
||||
LAZYOR(location.recursive_listeners, arrived.recursive_listeners)
|
||||
|
||||
/atom/movable/proc/show_message(msg, type, alt, alt_type)//Message, type of message (1 or 2), alternative message, alt message type (1 or 2)
|
||||
return
|
||||
@@ -50,19 +50,19 @@ var/global/list/minor_air_alarms = list()
|
||||
var/list/alarms = atmosphere_alarm.major_alarms()
|
||||
if(alarms.len)
|
||||
icon_screen = "alert:2"
|
||||
playsound(src, 'modular_chomp/sound/effects/comp_alert_major.ogg', 70, 1) // CHOMPEdit: Alarm notifications
|
||||
playsound(src, 'sound/effects/comp_alert_major.ogg', 70, 1) // CHOMPEdit: Alarm notifications
|
||||
spawn(100) // Wait 10 seconds, then play it again
|
||||
playsound(src, 'modular_chomp/sound/effects/comp_alert_major.ogg', 70, 1) // CHOMPEdit: Alarm notifications
|
||||
playsound(src, 'sound/effects/comp_alert_major.ogg', 70, 1) // CHOMPEdit: Alarm notifications
|
||||
else
|
||||
alarms = atmosphere_alarm.minor_alarms()
|
||||
if(alarms.len)
|
||||
icon_screen = "alert:1"
|
||||
playsound(src, 'modular_chomp/sound/effects/comp_alert_minor.ogg', 50, 1) // CHOMPEdit: Alarm notifications
|
||||
playsound(src, 'sound/effects/comp_alert_minor.ogg', 50, 1) // CHOMPEdit: Alarm notifications
|
||||
spawn(100) // Wait 10 seconds, then play it again
|
||||
playsound(src, 'modular_chomp/sound/effects/comp_alert_minor.ogg', 50, 1) // CHOMPEdit: Alarm notifications
|
||||
playsound(src, 'sound/effects/comp_alert_minor.ogg', 50, 1) // CHOMPEdit: Alarm notifications
|
||||
else
|
||||
icon_screen = initial(icon_screen)
|
||||
playsound(src, 'modular_chomp/sound/effects/comp_alert_clear.ogg', 50, 1) // CHOMPEdit: Alarm notifications
|
||||
playsound(src, 'sound/effects/comp_alert_clear.ogg', 50, 1) // CHOMPEdit: Alarm notifications
|
||||
..()
|
||||
|
||||
/obj/machinery/computer/atmos_alert/tgui_act(action, params)
|
||||
|
||||
@@ -50,9 +50,9 @@
|
||||
var/list/alarms = alarm_monitor ? alarm_monitor.major_alarms() : list()
|
||||
if(alarms.len)
|
||||
icon_screen = "alert:2"
|
||||
playsound(src, 'modular_chomp/sound/effects/comp_alert_major.ogg', 70, 1) // CHOMPEdit: Alarm notifications
|
||||
playsound(src, 'sound/effects/comp_alert_major.ogg', 70, 1) // CHOMPEdit: Alarm notifications
|
||||
else
|
||||
icon_screen = initial(icon_screen)
|
||||
playsound(src, 'modular_chomp/sound/effects/comp_alert_clear.ogg', 50, 1) // CHOMPEdit: Alarm notifications
|
||||
playsound(src, 'sound/effects/comp_alert_clear.ogg', 50, 1) // CHOMPEdit: Alarm notifications
|
||||
if(last_icon != icon_screen)
|
||||
update_icon()
|
||||
|
||||
@@ -55,7 +55,7 @@
|
||||
if(!card && user.unEquip(I))
|
||||
I.forceMove(src)
|
||||
card = I
|
||||
playsound(src, 'modular_chomp/sound/effects/insert_id_card.ogg', 75, 0) // CHOMPEdit: Timeclock beepboop. TODO: Make clocks delay reading the card for ~3 seconds to line up with quiet boops
|
||||
playsound(src, 'sound/effects/insert_id_card.ogg', 75, 0) // CHOMPEdit: Timeclock beepboop. TODO: Make clocks delay reading the card for ~3 seconds to line up with quiet boops
|
||||
SStgui.update_uis(src)
|
||||
update_icon()
|
||||
else if(card)
|
||||
@@ -121,13 +121,13 @@
|
||||
if(card)
|
||||
ui.user.put_in_hands(card)
|
||||
card = null
|
||||
playsound(src, 'modular_chomp/sound/effects/remove_id_card.ogg', 75, 0) // CHOMPEdit: Timeclock beepboop. TODO: Make clocks delay reading the card for ~3 seconds to line up with quiet boops
|
||||
playsound(src, 'sound/effects/remove_id_card.ogg', 75, 0) // CHOMPEdit: Timeclock beepboop. TODO: Make clocks delay reading the card for ~3 seconds to line up with quiet boops
|
||||
else
|
||||
var/obj/item/I = ui.user.get_active_hand()
|
||||
if (istype(I, /obj/item/card/id) && ui.user.unEquip(I))
|
||||
I.forceMove(src)
|
||||
card = I
|
||||
playsound(src, 'modular_chomp/sound/effects/insert_id_card.ogg', 75, 0) // CHOMPEdit: Timeclock beepboop. TODO: Make clocks delay reading the card for ~3 seconds to line up with quiet boops
|
||||
playsound(src, 'sound/effects/insert_id_card.ogg', 75, 0) // CHOMPEdit: Timeclock beepboop. TODO: Make clocks delay reading the card for ~3 seconds to line up with quiet boops
|
||||
update_icon()
|
||||
return TRUE
|
||||
if("switch-to-onduty-rank")
|
||||
@@ -136,7 +136,7 @@
|
||||
makeOnDuty(params["switch-to-onduty-rank"], params["switch-to-onduty-assignment"], ui.user)
|
||||
ui.user.put_in_hands(card)
|
||||
card = null
|
||||
playsound(src, 'modular_chomp/sound/effects/remove_id_card.ogg', 75, 0) // CHOMPEdit: Timeclock beepboop. TODO: Make clocks delay reading the card for ~3 seconds to line up with quiet boops
|
||||
playsound(src, 'sound/effects/remove_id_card.ogg', 75, 0) // CHOMPEdit: Timeclock beepboop. TODO: Make clocks delay reading the card for ~3 seconds to line up with quiet boops
|
||||
update_icon()
|
||||
return TRUE
|
||||
if("switch-to-offduty")
|
||||
@@ -145,7 +145,7 @@
|
||||
makeOffDuty(ui.user)
|
||||
ui.user.put_in_hands(card)
|
||||
card = null
|
||||
playsound(src, 'modular_chomp/sound/effects/remove_id_card.ogg', 75, 0) // CHOMPEdit: Timeclock beepboop. TODO: Make clocks delay reading the card for ~3 seconds to line up with quiet boops
|
||||
playsound(src, 'sound/effects/remove_id_card.ogg', 75, 0) // CHOMPEdit: Timeclock beepboop. TODO: Make clocks delay reading the card for ~3 seconds to line up with quiet boops
|
||||
update_icon()
|
||||
return TRUE
|
||||
|
||||
|
||||
@@ -77,7 +77,7 @@ GLOBAL_LIST_BOILERPLATE(pointdefense_turrets, /obj/machinery/pointdefense)
|
||||
if(id_tag)
|
||||
var/list/connected_z_levels = GetConnectedZlevels(get_z(src))
|
||||
for(var/i = 1 to LAZYLEN(GLOB.pointdefense_turrets))
|
||||
var/obj/machinery/pointdefense/PD = GLOB.pointdefense_turrets[i]
|
||||
var/obj/machinery/pointdefense/PD = GLOB.pointdefense_turrets[i] //CHOMPEDIT - Whatever this is, needs to be sent upstream. I stumbled upon this deconflicting and it was uncommented. Bad.
|
||||
if(!(PD.id_tag == id_tag && (get_z(PD) in connected_z_levels)))
|
||||
continue
|
||||
var/list/turret = list()
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
#define CANBROADCAST_INNERBOX 0.7071067811865476 //This is sqrt(2)/2
|
||||
// Access check is of the type requires one. These have been carefully selected to avoid allowing the janitor to see channels he shouldn't
|
||||
//VOREStation Edit Start - Updating this for Virgo
|
||||
var/global/list/default_internal_channels = list(
|
||||
num2text(PUB_FREQ) = list(),
|
||||
num2text(AI_FREQ) = list(access_synth),
|
||||
@@ -24,7 +24,6 @@ var/global/list/default_medbay_channels = list(
|
||||
num2text(MED_FREQ) = list(),
|
||||
num2text(MED_I_FREQ) = list()
|
||||
)
|
||||
//VOREStation Edit End
|
||||
|
||||
/obj/item/radio
|
||||
icon = 'icons/obj/radio_vr.dmi'
|
||||
@@ -300,7 +299,7 @@ var/global/list/default_medbay_channels = list(
|
||||
|
||||
GLOBAL_DATUM(autospeaker, /mob/living/silicon/ai/announcer)
|
||||
|
||||
/obj/item/radio/proc/autosay(var/message, var/from, var/channel, var/list/zlevels, var/states) //VOREStation Edit
|
||||
/obj/item/radio/proc/autosay(var/message, var/from, var/channel, var/list/zlevels, var/states)
|
||||
|
||||
if(!GLOB.autospeaker)
|
||||
return
|
||||
@@ -317,15 +316,13 @@ GLOBAL_DATUM(autospeaker, /mob/living/silicon/ai/announcer)
|
||||
|
||||
if(!LAZYLEN(zlevels))
|
||||
zlevels = list(0)
|
||||
//VOREStation Edit Start
|
||||
if(!states)
|
||||
states = "states"
|
||||
//VOREStation Edit End
|
||||
GLOB.autospeaker.SetName(from)
|
||||
Broadcast_Message(connection, GLOB.autospeaker,
|
||||
0, "*garbled automated announcement*", src,
|
||||
message_to_multilingual(message, GLOB.all_languages[LANGUAGE_GALCOM]), from, "Automated Announcement", from, "synthesized voice",
|
||||
DATA_FAKE, 0, zlevels, connection.frequency, states) //VOREStation Edit
|
||||
DATA_FAKE, 0, zlevels, connection.frequency, states)
|
||||
|
||||
// Interprets the message mode when talking into a radio, possibly returning a connection datum
|
||||
/obj/item/radio/proc/handle_message_mode(mob/living/M as mob, list/message_pieces, message_mode)
|
||||
@@ -771,3 +768,78 @@ GLOBAL_DATUM(autospeaker, /mob/living/silicon/ai/announcer)
|
||||
/obj/item/radio/phone/medbay/Initialize(mapload)
|
||||
. = ..()
|
||||
internal_channels = default_medbay_channels.Copy()
|
||||
|
||||
/obj/item/radio/proc/can_broadcast_to()
|
||||
var/list/output = list()
|
||||
var/turf/T = get_turf(src)
|
||||
var/dnumber = canhear_range*CANBROADCAST_INNERBOX
|
||||
for(var/cand_x = max(0, T.x - canhear_range), cand_x <= T.x + canhear_range, cand_x++)
|
||||
for(var/cand_y = max(0, T.y - canhear_range), cand_y <= T.y + canhear_range, cand_y++)
|
||||
var/turf/cand_turf = locate(cand_x,cand_y,T.z)
|
||||
if(!cand_turf)
|
||||
continue
|
||||
if((abs(T.x - cand_x) < dnumber) || (abs(T.y - cand_y) < dnumber))
|
||||
output += cand_turf
|
||||
continue
|
||||
if(sqrt((T.x - cand_x)**2 + (T.y - cand_y)**2) <= canhear_range)
|
||||
output += cand_turf
|
||||
continue
|
||||
return output
|
||||
/obj/item/radio/intercom
|
||||
var/list/broadcast_tiles
|
||||
|
||||
/obj/item/radio/intercom/proc/update_broadcast_tiles()
|
||||
var/list/output = list()
|
||||
var/turf/T = get_turf(src)
|
||||
if(!T)
|
||||
return
|
||||
var/dnumber = canhear_range*CANBROADCAST_INNERBOX
|
||||
for(var/cand_x = max(0, T.x - canhear_range), cand_x <= T.x + canhear_range, cand_x++)
|
||||
for(var/cand_y = max(0, T.y - canhear_range), cand_y <= T.y + canhear_range, cand_y++)
|
||||
var/turf/cand_turf = locate(cand_x,cand_y,T.z)
|
||||
if(!cand_turf)
|
||||
continue
|
||||
if((abs(T.x - cand_x) < dnumber) || (abs(T.y - cand_y) < dnumber))
|
||||
output += cand_turf
|
||||
continue
|
||||
if(sqrt((T.x - cand_x)**2 + (T.y - cand_y)**2) <= canhear_range)
|
||||
output += cand_turf
|
||||
continue
|
||||
broadcast_tiles = output
|
||||
|
||||
/obj/item/radio/intercom/forceMove(atom/destination)
|
||||
. = ..()
|
||||
update_broadcast_tiles()
|
||||
|
||||
/obj/item/radio/intercom/Initialize(mapload)
|
||||
. = ..()
|
||||
update_broadcast_tiles()
|
||||
|
||||
/obj/item/radio/intercom/can_broadcast_to()
|
||||
if(!broadcast_tiles)
|
||||
update_broadcast_tiles()
|
||||
return broadcast_tiles
|
||||
|
||||
//*Subspace Radio*//
|
||||
/obj/item/radio/subspace
|
||||
adhoc_fallback = 1
|
||||
canhear_range = 8
|
||||
desc = "A heavy duty radio that can pick up all manor of shortwave and subspace frequencies. It's a bit bulkier than a normal radio thanks to the extra hardware."
|
||||
description_info = "This radio can broadcast over any headset frequency that the user has access to. It has a shortwave fallback to directly broadcast to all radio equipment on the same Z-Level/Map in the event of a telecommunications failure. This device requires a functioning Telecommunications Network/Relay to send and receive signals meant for headsets. Additionally, the volume knob seems to be stuck on the max setting. You could hear this thing clear across a room... Not good for discretely listening in on secure channels or being stealthy!"
|
||||
icon_state = "radio"
|
||||
name = "subspace radio"
|
||||
subspace_transmission = 1
|
||||
throwforce = 5
|
||||
throw_range = 7
|
||||
throw_speed = 1
|
||||
|
||||
//* Bluespace Radio *//
|
||||
/obj/item/bluespaceradio/southerncross_prelinked
|
||||
name = "bluespace radio (southerncross)"
|
||||
handset = /obj/item/radio/bluespacehandset/linked/southerncross_prelinked
|
||||
|
||||
/obj/item/radio/bluespacehandset/linked/southerncross_prelinked
|
||||
bs_tx_preload_id = "Receiver A" //Transmit to a receiver
|
||||
bs_rx_preload_id = "Broadcaster A" //Recveive from a transmitter
|
||||
|
||||
#undef CANBROADCAST_INNERBOX
|
||||
|
||||
@@ -1,75 +0,0 @@
|
||||
#define CANBROADCAST_INNERBOX 0.7071067811865476 //This is sqrt(2)/2
|
||||
/obj/item/radio/proc/can_broadcast_to()
|
||||
var/list/output = list()
|
||||
var/turf/T = get_turf(src)
|
||||
var/dnumber = canhear_range*CANBROADCAST_INNERBOX
|
||||
for(var/cand_x = max(0, T.x - canhear_range), cand_x <= T.x + canhear_range, cand_x++)
|
||||
for(var/cand_y = max(0, T.y - canhear_range), cand_y <= T.y + canhear_range, cand_y++)
|
||||
var/turf/cand_turf = locate(cand_x,cand_y,T.z)
|
||||
if(!cand_turf)
|
||||
continue
|
||||
if((abs(T.x - cand_x) < dnumber) || (abs(T.y - cand_y) < dnumber))
|
||||
output += cand_turf
|
||||
continue
|
||||
if(sqrt((T.x - cand_x)**2 + (T.y - cand_y)**2) <= canhear_range)
|
||||
output += cand_turf
|
||||
continue
|
||||
return output
|
||||
/obj/item/radio/intercom
|
||||
var/list/broadcast_tiles
|
||||
|
||||
/obj/item/radio/intercom/proc/update_broadcast_tiles()
|
||||
var/list/output = list()
|
||||
var/turf/T = get_turf(src)
|
||||
if(!T)
|
||||
return
|
||||
var/dnumber = canhear_range*CANBROADCAST_INNERBOX
|
||||
for(var/cand_x = max(0, T.x - canhear_range), cand_x <= T.x + canhear_range, cand_x++)
|
||||
for(var/cand_y = max(0, T.y - canhear_range), cand_y <= T.y + canhear_range, cand_y++)
|
||||
var/turf/cand_turf = locate(cand_x,cand_y,T.z)
|
||||
if(!cand_turf)
|
||||
continue
|
||||
if((abs(T.x - cand_x) < dnumber) || (abs(T.y - cand_y) < dnumber))
|
||||
output += cand_turf
|
||||
continue
|
||||
if(sqrt((T.x - cand_x)**2 + (T.y - cand_y)**2) <= canhear_range)
|
||||
output += cand_turf
|
||||
continue
|
||||
broadcast_tiles = output
|
||||
|
||||
/obj/item/radio/intercom/forceMove(atom/destination)
|
||||
. = ..()
|
||||
update_broadcast_tiles()
|
||||
|
||||
/obj/item/radio/intercom/Initialize(mapload)
|
||||
. = ..()
|
||||
update_broadcast_tiles()
|
||||
|
||||
/obj/item/radio/intercom/can_broadcast_to()
|
||||
if(!broadcast_tiles)
|
||||
update_broadcast_tiles()
|
||||
return broadcast_tiles
|
||||
|
||||
//*Subspace Radio*//
|
||||
/obj/item/radio/subspace
|
||||
adhoc_fallback = 1
|
||||
canhear_range = 8
|
||||
desc = "A heavy duty radio that can pick up all manor of shortwave and subspace frequencies. It's a bit bulkier than a normal radio thanks to the extra hardware."
|
||||
description_info = "This radio can broadcast over any headset frequency that the user has access to. It has a shortwave fallback to directly broadcast to all radio equipment on the same Z-Level/Map in the event of a telecommunications failure. This device requires a functioning Telecommunications Network/Relay to send and receive signals meant for headsets. Additionally, the volume knob seems to be stuck on the max setting. You could hear this thing clear across a room... Not good for discretely listening in on secure channels or being stealthy!"
|
||||
icon_state = "radio"
|
||||
name = "subspace radio"
|
||||
subspace_transmission = 1
|
||||
throwforce = 5
|
||||
throw_range = 7
|
||||
throw_speed = 1
|
||||
|
||||
//* Bluespace Radio *//
|
||||
/obj/item/bluespaceradio/southerncross_prelinked
|
||||
name = "bluespace radio (southerncross)"
|
||||
handset = /obj/item/radio/bluespacehandset/linked/southerncross_prelinked
|
||||
|
||||
/obj/item/radio/bluespacehandset/linked/southerncross_prelinked
|
||||
bs_tx_preload_id = "Receiver A" //Transmit to a receiver
|
||||
bs_rx_preload_id = "Broadcaster A" //Recveive from a transmitter
|
||||
|
||||
#undef CANBROADCAST_INNERBOX
|
||||
@@ -79,7 +79,7 @@ Frequency:
|
||||
src.temp += "[W.code]-[dir2text(get_dir(sr, tr))]-[direct]<BR>"
|
||||
|
||||
src.temp += span_bold("Extraneous Signals:") + "<BR>"
|
||||
for (var/obj/item/implant/tracking/W in GLOB.all_tracking_implants) // CHOMPEdit
|
||||
for (var/obj/item/implant/tracking/W in GLOB.all_tracking_implants)
|
||||
if (!W.implanted || !(istype(W.loc,/obj/item/organ/external) || ismob(W.loc) || W.malfunction))
|
||||
continue
|
||||
|
||||
|
||||
@@ -185,10 +185,6 @@
|
||||
|
||||
/obj/proc/see_emote(mob/M as mob, text, var/emote_type)
|
||||
return
|
||||
/* CHOMP Removal
|
||||
/obj/proc/show_message(msg, type, alt, alt_type)//Message, type of message (1 or 2), alternative message, alt message type (1 or 2)
|
||||
return
|
||||
*/
|
||||
// Used to mark a turf as containing objects that are dangerous to step onto.
|
||||
/obj/proc/register_dangerous_to_step()
|
||||
var/turf/T = get_turf(src)
|
||||
|
||||
@@ -302,12 +302,10 @@
|
||||
'sound/items/pickup/generic1.ogg',
|
||||
'sound/items/pickup/generic2.ogg',
|
||||
'sound/items/pickup/generic3.ogg')
|
||||
// CHOMPedit start - Sounds for mech footsteps.
|
||||
if ("powerloaderstep")
|
||||
soundin = pick(
|
||||
'modular_chomp/sound/effects/mech/powerloader_step.ogg',
|
||||
'modular_chomp/sound/effects/mech/powerloader_step2.ogg')
|
||||
// CHOMPedit end.
|
||||
'sound/effects/mech/powerloader_step.ogg',
|
||||
'sound/effects/mech/powerloader_step2.ogg')
|
||||
return soundin
|
||||
|
||||
|
||||
@@ -330,32 +328,31 @@ GLOBAL_LIST_INIT(goon_speak_pug_sound, list('sound/talksounds/goon/pug.ogg', 'so
|
||||
GLOBAL_LIST_INIT(goon_speak_pugg_sound, list('sound/talksounds/goon/pugg.ogg', 'sound/talksounds/goon/pugg_ask.ogg', 'sound/talksounds/goon/pugg_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'))
|
||||
|
||||
//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_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_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('modular_chomp/sound/talksounds/xeno/xenotalk.ogg', 'modular_chomp/sound/talksounds/xeno/xenotalk2.ogg', 'modular_chomp/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
|
||||
|
||||
|
||||
// CHOMPEdit Start: Species sounds. This is probably inefficient, but I'm sure someone will yell at me or just do it better later:tm:
|
||||
#define canine_sounds list("cough" = null, "sneeze" = null, "scream" = list('modular_chomp/sound/voice/scream/canine/wolf_scream.ogg', 'modular_chomp/sound/voice/scream/canine/wolf_scream2.ogg', 'modular_chomp/sound/voice/scream/canine/wolf_scream3.ogg', 'modular_chomp/sound/voice/scream/canine/wolf_scream4.ogg', 'modular_chomp/sound/voice/scream/canine/wolf_scream5.ogg', 'modular_chomp/sound/voice/scream/canine/wolf_scream6.ogg'), "pain" = list('modular_chomp/sound/voice/pain/canine/wolf_pain.ogg', 'modular_chomp/sound/voice/pain/canine/wolf_pain2.ogg', 'modular_chomp/sound/voice/pain/canine/wolf_pain3.ogg', 'modular_chomp/sound/voice/pain/canine/wolf_pain4.ogg'), "gasp" = list('modular_chomp/sound/voice/gasp/canine/wolf_gasp.ogg'), "death" = list('modular_chomp/sound/voice/death/canine/wolf_death1.ogg', 'modular_chomp/sound/voice/death/canine/wolf_death2.ogg', 'modular_chomp/sound/voice/death/canine/wolf_death3.ogg', 'modular_chomp/sound/voice/death/canine/wolf_death4.ogg', 'modular_chomp/sound/voice/death/canine/wolf_death5.ogg'))
|
||||
#define feline_sounds list("cough" = null, "sneeze" = null, "scream" = list('modular_chomp/sound/voice/scream/feline/feline_scream.ogg'), "pain" = list('modular_chomp/sound/voice/pain/feline/feline_pain.ogg'), "gasp" = list('modular_chomp/sound/voice/gasp/feline/feline_gasp.ogg'), "death" = list('modular_chomp/sound/voice/death/feline/feline_death.ogg'))
|
||||
#define cervine_sounds list("cough" = null, "sneeze" = null, "scream" = list('modular_chomp/sound/voice/scream/cervine/cervine_scream.ogg'), "pain" = null, "gasp" = null, "death" = list('modular_chomp/sound/voice/death/cervine/cervine_death.ogg'))
|
||||
#define robot_sounds list("cough" = list('sound/effects/mob_effects/m_machine_cougha.ogg', 'sound/effects/mob_effects/m_machine_coughb.ogg', 'sound/effects/mob_effects/m_machine_coughc.ogg'), "sneeze" = list('sound/effects/mob_effects/machine_sneeze.ogg'), "scream" = list('modular_chomp/sound/voice/scream_silicon.ogg', 'modular_chomp/sound/voice/android_scream.ogg', 'modular_chomp/sound/voice/scream/robotic/robot_scream1.ogg', 'modular_chomp/sound/voice/scream/robotic/robot_scream2.ogg', 'modular_chomp/sound/voice/scream/robotic/robot_scream3.ogg'), "pain" = list('modular_chomp/sound/voice/pain/robotic/robot_pain1.ogg', 'modular_chomp/sound/voice/pain/robotic/robot_pain2.ogg', 'modular_chomp/sound/voice/pain/robotic/robot_pain3.ogg'), "gasp" = null, "death" = list('sound/voice/borg_deathsound.ogg'))
|
||||
#define male_generic_sounds list("cough" = list('sound/effects/mob_effects/m_cougha.ogg','sound/effects/mob_effects/m_coughb.ogg', 'sound/effects/mob_effects/m_coughc.ogg'), "sneeze" = list('sound/effects/mob_effects/sneeze.ogg'), "scream" = list('modular_chomp/sound/voice/scream/generic/male/male_scream_1.ogg', 'modular_chomp/sound/voice/scream/generic/male/male_scream_2.ogg', 'modular_chomp/sound/voice/scream/generic/male/male_scream_3.ogg', 'modular_chomp/sound/voice/scream/generic/male/male_scream_4.ogg', 'modular_chomp/sound/voice/scream/generic/male/male_scream_5.ogg', 'modular_chomp/sound/voice/scream/generic/male/male_scream_6.ogg'), "pain" = list('modular_chomp/sound/voice/pain/generic/male/male_pain_1.ogg', 'modular_chomp/sound/voice/pain/generic/male/male_pain_2.ogg', 'modular_chomp/sound/voice/pain/generic/male/male_pain_3.ogg', 'modular_chomp/sound/voice/pain/generic/male/male_pain_4.ogg', 'modular_chomp/sound/voice/pain/generic/male/male_pain_5.ogg', 'modular_chomp/sound/voice/pain/generic/male/male_pain_6.ogg', 'modular_chomp/sound/voice/pain/generic/male/male_pain_7.ogg', 'modular_chomp/sound/voice/pain/generic/male/male_pain_8.ogg'), "gasp" = list('modular_chomp/sound/voice/gasp/generic/male/male_gasp1.ogg', 'modular_chomp/sound/voice/gasp/generic/male/male_gasp2.ogg', 'modular_chomp/sound/voice/gasp/generic/male/male_gasp3.ogg'), "death" = list('modular_chomp/sound/voice/death/generic/male/male_death_1.ogg', 'modular_chomp/sound/voice/death/generic/male/male_death_2.ogg', 'modular_chomp/sound/voice/death/generic/male/male_death_3.ogg', 'modular_chomp/sound/voice/death/generic/male/male_death_4.ogg', 'modular_chomp/sound/voice/death/generic/male/male_death_5.ogg', 'modular_chomp/sound/voice/death/generic/male/male_death_6.ogg', 'modular_chomp/sound/voice/death/generic/male/male_death_7.ogg'))
|
||||
#define female_generic_sounds list("cough" = list('sound/effects/mob_effects/f_cougha.ogg','sound/effects/mob_effects/f_coughb.ogg'), "sneeze" = list('sound/effects/mob_effects/f_sneeze.ogg'), "scream" = list('modular_chomp/sound/voice/scream/generic/female/female_scream_1.ogg', 'modular_chomp/sound/voice/scream/generic/female/female_scream_2.ogg', 'modular_chomp/sound/voice/scream/generic/female/female_scream_3.ogg', 'modular_chomp/sound/voice/scream/generic/female/female_scream_4.ogg', 'modular_chomp/sound/voice/scream/generic/female/female_scream_5.ogg'), "pain" = list('modular_chomp/sound/voice/pain/generic/female/female_pain_1.ogg', 'modular_chomp/sound/voice/pain/generic/female/female_pain_2.ogg', 'modular_chomp/sound/voice/pain/generic/female/female_pain_3.ogg'), "gasp" = list('modular_chomp/sound/voice/gasp/generic/female/female_gasp1.ogg', 'modular_chomp/sound/voice/gasp/generic/female/female_gasp2.ogg'), "death" = list('modular_chomp/sound/voice/death/generic/female/female_death_1.ogg', 'modular_chomp/sound/voice/death/generic/female/female_death_2.ogg', 'modular_chomp/sound/voice/death/generic/female/female_death_3.ogg', 'modular_chomp/sound/voice/death/generic/female/female_death_4.ogg', 'modular_chomp/sound/voice/death/generic/female/female_death_5.ogg', 'modular_chomp/sound/voice/death/generic/female/female_death_6.ogg'))
|
||||
#define spider_sounds list("cough" = null, "sneeze" = null, "scream" = list('sound/voice/spiderchitter.ogg'), "pain" = list('sound/voice/spiderchitter.ogg'), "gasp" = null, "death" = list('modular_chomp/sound/voice/death/spider/spider_death.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 cervine_sounds list("cough" = null, "sneeze" = null, "scream" = list('sound/voice/scream/cervine/cervine_scream.ogg'), "pain" = null, "gasp" = null, "death" = list('sound/voice/death/cervine/cervine_death.ogg'))
|
||||
#define robot_sounds list("cough" = list('sound/effects/mob_effects/m_machine_cougha.ogg', 'sound/effects/mob_effects/m_machine_coughb.ogg', 'sound/effects/mob_effects/m_machine_coughc.ogg'), "sneeze" = list('sound/effects/mob_effects/machine_sneeze.ogg'), "scream" = list('sound/voice/scream_silicon.ogg', 'sound/voice/android_scream.ogg', 'sound/voice/scream/robotic/robot_scream1.ogg', 'sound/voice/scream/robotic/robot_scream2.ogg', 'sound/voice/scream/robotic/robot_scream3.ogg'), "pain" = list('sound/voice/pain/robotic/robot_pain1.ogg', 'sound/voice/pain/robotic/robot_pain2.ogg', 'sound/voice/pain/robotic/robot_pain3.ogg'), "gasp" = null, "death" = list('sound/voice/borg_deathsound.ogg'))
|
||||
#define male_generic_sounds list("cough" = list('sound/effects/mob_effects/m_cougha.ogg','sound/effects/mob_effects/m_coughb.ogg', 'sound/effects/mob_effects/m_coughc.ogg'), "sneeze" = list('sound/effects/mob_effects/sneeze.ogg'), "scream" = list('sound/voice/scream/generic/male/male_scream_1.ogg', 'sound/voice/scream/generic/male/male_scream_2.ogg', 'sound/voice/scream/generic/male/male_scream_3.ogg', 'sound/voice/scream/generic/male/male_scream_4.ogg', 'sound/voice/scream/generic/male/male_scream_5.ogg', 'sound/voice/scream/generic/male/male_scream_6.ogg'), "pain" = list('sound/voice/pain/generic/male/male_pain_1.ogg', 'sound/voice/pain/generic/male/male_pain_2.ogg', 'sound/voice/pain/generic/male/male_pain_3.ogg', 'sound/voice/pain/generic/male/male_pain_4.ogg', 'sound/voice/pain/generic/male/male_pain_5.ogg', 'sound/voice/pain/generic/male/male_pain_6.ogg', 'sound/voice/pain/generic/male/male_pain_7.ogg', 'sound/voice/pain/generic/male/male_pain_8.ogg'), "gasp" = list('sound/voice/gasp/generic/male/male_gasp1.ogg', 'sound/voice/gasp/generic/male/male_gasp2.ogg', 'sound/voice/gasp/generic/male/male_gasp3.ogg'), "death" = list('sound/voice/death/generic/male/male_death_1.ogg', 'sound/voice/death/generic/male/male_death_2.ogg', 'sound/voice/death/generic/male/male_death_3.ogg', 'sound/voice/death/generic/male/male_death_4.ogg', 'sound/voice/death/generic/male/male_death_5.ogg', 'sound/voice/death/generic/male/male_death_6.ogg', 'sound/voice/death/generic/male/male_death_7.ogg'))
|
||||
#define female_generic_sounds list("cough" = list('sound/effects/mob_effects/f_cougha.ogg','sound/effects/mob_effects/f_coughb.ogg'), "sneeze" = list('sound/effects/mob_effects/f_sneeze.ogg'), "scream" = list('sound/voice/scream/generic/female/female_scream_1.ogg', 'sound/voice/scream/generic/female/female_scream_2.ogg', 'sound/voice/scream/generic/female/female_scream_3.ogg', 'sound/voice/scream/generic/female/female_scream_4.ogg', 'sound/voice/scream/generic/female/female_scream_5.ogg'), "pain" = list('sound/voice/pain/generic/female/female_pain_1.ogg', 'sound/voice/pain/generic/female/female_pain_2.ogg', 'sound/voice/pain/generic/female/female_pain_3.ogg'), "gasp" = list('sound/voice/gasp/generic/female/female_gasp1.ogg', 'sound/voice/gasp/generic/female/female_gasp2.ogg'), "death" = list('sound/voice/death/generic/female/female_death_1.ogg', 'sound/voice/death/generic/female/female_death_2.ogg', 'sound/voice/death/generic/female/female_death_3.ogg', 'sound/voice/death/generic/female/female_death_4.ogg', 'sound/voice/death/generic/female/female_death_5.ogg', 'sound/voice/death/generic/female/female_death_6.ogg'))
|
||||
#define spider_sounds list("cough" = null, "sneeze" = null, "scream" = list('sound/voice/spiderchitter.ogg'), "pain" = list('sound/voice/spiderchitter.ogg'), "gasp" = null, "death" = list('sound/voice/death/spider/spider_death.ogg'))
|
||||
#define mouse_sounds list("cough" = list('sound/effects/mouse_squeak.ogg'), "sneeze" = list('sound/effects/mouse_squeak.ogg'), "scream" = list('sound/effects/mouse_squeak_loud.ogg'), "pain" = list('sound/effects/mouse_squeak.ogg'), "gasp" = list('sound/effects/mouse_squeak.ogg'), "death" = list('sound/effects/mouse_squeak_loud.ogg'))
|
||||
#define lizard_sounds list("cough" = null, "sneeze" = null, "scream" = list('sound/effects/mob_effects/una_scream1.ogg','sound/effects/mob_effects/una_scream2.ogg'), "pain" = list('modular_chomp/sound/voice/pain/lizard/lizard_pain.ogg'), "gasp" = null, "death" = list('modular_chomp/sound/voice/death/lizard/lizard_death.ogg'))
|
||||
#define lizard_sounds list("cough" = null, "sneeze" = null, "scream" = list('sound/effects/mob_effects/una_scream1.ogg','sound/effects/mob_effects/una_scream2.ogg'), "pain" = list('sound/voice/pain/lizard/lizard_pain.ogg'), "gasp" = null, "death" = list('sound/voice/death/lizard/lizard_death.ogg'))
|
||||
#define vox_sounds list("cough" = list('sound/voice/shriekcough.ogg'), "sneeze" = list('sound/voice/shrieksneeze.ogg'), "scream" = list('sound/voice/shriek1.ogg'), "pain" = list('sound/voice/shriek1.ogg'), "gasp" = null, "death" = null)
|
||||
#define slime_sounds list("cough" = list('sound/effects/slime_squish.ogg'), "sneeze" = null, "scream" = null, "pain" = null, "gasp" = null, "death" = null)
|
||||
#define xeno_sounds list("cough" = null, "sneeze" = null, "scream" = list('sound/effects/mob_effects/x_scream1.ogg','sound/effects/mob_effects/x_scream2.ogg','sound/effects/mob_effects/x_scream3.ogg'), "pain" = list('modular_chomp/sound/voice/pain/xeno/alien_roar1.ogg', 'modular_chomp/sound/voice/pain/xeno/alien_roar2.ogg', 'modular_chomp/sound/voice/pain/xeno/alien_roar3.ogg', 'modular_chomp/sound/voice/pain/xeno/alien_roar4.ogg', 'modular_chomp/sound/voice/pain/xeno/alien_roar5.ogg', 'modular_chomp/sound/voice/pain/xeno/alien_roar6.ogg', 'modular_chomp/sound/voice/pain/xeno/alien_roar7.ogg', 'modular_chomp/sound/voice/pain/xeno/alien_roar8.ogg', 'modular_chomp/sound/voice/pain/xeno/alien_roar9.ogg', 'modular_chomp/sound/voice/pain/xeno/alien_roar10.ogg', 'modular_chomp/sound/voice/pain/xeno/alien_roar11.ogg', 'modular_chomp/sound/voice/pain/xeno/alien_roar12.ogg'), "gasp" = list('modular_chomp/sound/voice/gasp/xeno/alien_hiss1.ogg'), "death" = list('modular_chomp/sound/voice/death/xeno/xeno_death.ogg', 'modular_chomp/sound/voice/death/xeno/xeno_death2.ogg'))
|
||||
#define xeno_sounds list("cough" = null, "sneeze" = null, "scream" = list('sound/effects/mob_effects/x_scream1.ogg','sound/effects/mob_effects/x_scream2.ogg','sound/effects/mob_effects/x_scream3.ogg'), "pain" = list('sound/voice/pain/xeno/alien_roar1.ogg', 'sound/voice/pain/xeno/alien_roar2.ogg', 'sound/voice/pain/xeno/alien_roar3.ogg', 'sound/voice/pain/xeno/alien_roar4.ogg', 'sound/voice/pain/xeno/alien_roar5.ogg', 'sound/voice/pain/xeno/alien_roar6.ogg', 'sound/voice/pain/xeno/alien_roar7.ogg', 'sound/voice/pain/xeno/alien_roar8.ogg', 'sound/voice/pain/xeno/alien_roar9.ogg', 'sound/voice/pain/xeno/alien_roar10.ogg', 'sound/voice/pain/xeno/alien_roar11.ogg', 'sound/voice/pain/xeno/alien_roar12.ogg'), "gasp" = list('sound/voice/gasp/xeno/alien_hiss1.ogg'), "death" = list('sound/voice/death/xeno/xeno_death.ogg', 'sound/voice/death/xeno/xeno_death2.ogg'))
|
||||
#define teshari_sounds list("cough" = list('sound/effects/mob_effects/tesharicougha.ogg','sound/effects/mob_effects/tesharicoughb.ogg'), "sneeze" = list('sound/effects/mob_effects/tesharisneeze.ogg'), "scream" = list('sound/effects/mob_effects/teshariscream.ogg'), "pain" = null, "gasp" = null, "death" = null)
|
||||
#define raccoon_sounds list("cough" = null, "sneeze" = null, "scream" = list('sound/voice/raccoon.ogg'), "pain" = list('sound/voice/raccoon.ogg'), "gasp" = null, "death" = list('sound/voice/raccoon.ogg'))
|
||||
#define metroid_sounds list("cough" = list('sound/metroid/metroid_cough.ogg'), "sneeze" = list('sound/metroid/metroid_sneeze.ogg'), "scream" = list('sound/metroid/metroid_scream.ogg'), "pain" = list('sound/metroid/metroidsee.ogg'), "gasp" = list('sound/metroid/metroid_gasp.ogg'), "death" = list('sound/metroid/metroiddeath.ogg'))
|
||||
#define vulpine_sounds list("cough" = null, "sneeze" = null, "scream" = list('modular_chomp/sound/voice/scream/vulpine/fox_yip1.ogg', 'modular_chomp/sound/voice/scream/vulpine/fox_yip2.ogg', 'modular_chomp/sound/voice/scream/vulpine/fox_yip3.ogg'), "pain" = list('modular_chomp/sound/voice/pain/vulpine/fox_pain1.ogg', 'modular_chomp/sound/voice/pain/vulpine/fox_pain2.ogg', 'modular_chomp/sound/voice/pain/vulpine/fox_pain3.ogg', 'modular_chomp/sound/voice/pain/vulpine/fox_pain4.ogg'), "gasp" = list('modular_chomp/sound/voice/gasp/canine/wolf_gasp.ogg'), "death" = list('modular_chomp/sound/voice/death/canine/wolf_death1.ogg', 'modular_chomp/sound/voice/death/canine/wolf_death2.ogg', 'modular_chomp/sound/voice/death/canine/wolf_death3.ogg', 'modular_chomp/sound/voice/death/canine/wolf_death4.ogg', 'modular_chomp/sound/voice/death/canine/wolf_death5.ogg'))
|
||||
#define vulpine_sounds list("cough" = null, "sneeze" = null, "scream" = list('sound/voice/scream/vulpine/fox_yip1.ogg', 'sound/voice/scream/vulpine/fox_yip2.ogg', 'sound/voice/scream/vulpine/fox_yip3.ogg'), "pain" = list('sound/voice/pain/vulpine/fox_pain1.ogg', 'sound/voice/pain/vulpine/fox_pain2.ogg', 'sound/voice/pain/vulpine/fox_pain3.ogg', 'sound/voice/pain/vulpine/fox_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 no_sounds list("cough" = null, "sneeze" = null, "scream" = null, "pain" = null, "gasp" = null, "death" = null)
|
||||
#define use_default list("cough" = null, "sneeze" = null, "scream" = null, "pain" = null, "gasp" = null, "death" = null)
|
||||
/*
|
||||
@@ -426,14 +423,14 @@ var/list/species_sound_map = list(
|
||||
* var/mob/living/M = user
|
||||
* get_species_sound(M.client.pref.species_sound)["scream"] will return get_species_sound("Robotic")["scream"]
|
||||
* This can be paired with get_gendered_sound, like so: get_species_sound(get_gendered_sound(M))["emote"] <- get_gendered_sound will return whatever we have of the 3 valid options, and then get_species_sound will match that to the actual sound list.
|
||||
* The get_species_sound proc will retrieve and return the list based on the key given - get_species_sound("Robotic")["scream"] will return list('modular_chomp/sound/voice/scream_silicon.ogg', 'modular_chomp/sound/voice/android_scream.ogg', etc)
|
||||
* The get_species_sound proc will retrieve and return the list based on the key given - get_species_sound("Robotic")["scream"] will return list('sound/voice/scream_silicon.ogg', 'sound/voice/android_scream.ogg', etc)
|
||||
* If you are adding new calls of this, follow the syntax of get_species_sound(species)["scream"] - you must attach ["emote"] to the end, outside the ()
|
||||
* If your species has a gendered sound, DON'T PANIC. Simply set the gender_specific_species_sounds var on the species to true, and when you call this, do it like so:
|
||||
* get_species_sound(H.species.species_sounds_male)["emote"] // If we're male, and want an emote sound gendered correctly.
|
||||
*/
|
||||
/proc/get_species_sound(var/sounds)
|
||||
if(!islist(species_sound_map[sounds])) // We check here if this list actually has anything in it, or if we're about to return a null index
|
||||
return null // Shitty failsafe but better than rewriting an entire litany of procs rn when I'm low on time - Rykka // list('modular_chomp/sound/voice/silence.ogg')
|
||||
return null // Shitty failsafe but better than rewriting an entire litany of procs rn when I'm low on time - Rykka // list('sound/voice/silence.ogg')
|
||||
return species_sound_map[sounds] // Otherwise, successfully return our sound
|
||||
|
||||
/*
|
||||
@@ -470,6 +467,3 @@ var/list/species_sound_map = list(
|
||||
return H.species.species_sounds
|
||||
else
|
||||
return user.species_sounds
|
||||
|
||||
|
||||
// CHOMPEdit End
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
GLOBAL_VAR_INIT(global_vantag_hud, 0)
|
||||
|
||||
/client/proc/cmd_admin_drop_everything(mob/M as mob in mob_list)
|
||||
set category = null
|
||||
set name = "Drop Everything"
|
||||
@@ -1176,3 +1178,17 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
new /obj/structure/drop_pod/polite(get_turf(usr), L, autoopen == "Yes" ? TRUE : FALSE)
|
||||
|
||||
feedback_add_details("admin_verb","DPD") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
/client/proc/toggle_vantag_hud_global(mob/target as mob)
|
||||
set category = "Fun.Event Kit"
|
||||
set name = "Toggle Global Event HUD"
|
||||
set desc = "Give everyone the Event HUD."
|
||||
|
||||
GLOB.global_vantag_hud = !GLOB.global_vantag_hud
|
||||
if(GLOB.global_vantag_hud)
|
||||
for(var/mob/living/L in living_mob_list)
|
||||
if(L.ckey)
|
||||
L.vantag_hud = TRUE
|
||||
L.recalculate_vis()
|
||||
|
||||
to_chat(src, span_warning("Global Event HUD has been turned [GLOB.global_vantag_hud ? "on" : "off"]."))
|
||||
|
||||
@@ -8,6 +8,13 @@
|
||||
/mob/living
|
||||
var/datum/say_list/say_list = null
|
||||
var/say_list_type = /datum/say_list // Type to give us on initialization. Default has empty lists, so the mob will be silent.
|
||||
var/can_pain_emote = TRUE
|
||||
var/datum/looping_sound/mob/deafened/deaf_loop //NYI
|
||||
var/pain_emote_1p = null
|
||||
var/pain_emote_3p = null
|
||||
var/species_sounds = "None" // By default, we have nothing.
|
||||
var/death_sound_override = null
|
||||
var/datum/looping_sound/mob/on_fire/firesoundloop
|
||||
|
||||
/mob/living/Initialize(mapload)
|
||||
if(say_list_type)
|
||||
|
||||
@@ -11,11 +11,11 @@
|
||||
var/weight_loss = 50 // Weight loss rate.
|
||||
var/fuzzy = 0 // Preference toggle for sharp/fuzzy icon. Default sharp.
|
||||
var/offset_override = FALSE
|
||||
var/voice_freq = 42500 //CHOMPEdit - Why was the default 0
|
||||
var/voice_sound = "goon speak 1" //CHOMPEdit - Changed the default voice to one less jarring
|
||||
var/voice_freq = 42500
|
||||
var/voice_sound = "goon speak 1"
|
||||
var/custom_speech_bubble = "default"
|
||||
var/custom_footstep = "Default"
|
||||
var/species_sound = "Unset" // CHOMPEdit: Use default species pain/scream sounds based off icon base if none set, override otherwise
|
||||
var/species_sound = "Unset"
|
||||
|
||||
// Definition of the stuff for Sizing
|
||||
/datum/category_item/player_setup_item/vore/size
|
||||
|
||||
@@ -270,11 +270,6 @@ var/global/list/valid_bloodreagents = list("default",REAGENT_ID_IRON,REAGENT_ID_
|
||||
//Any additional non-trait settings can be applied here
|
||||
new_S.blood_color = pref.blood_color
|
||||
|
||||
/*
|
||||
if(pref.species_sound) // CHOMPEdit: Custom Scream/Death/Gasp/Pain Sounds. Don't try to do this if it doesn't exist. // && new_S.selects_bodytype && pref.custom_base) // we aren't a custom species, and we don't have a custom base.
|
||||
new_S.copy_species_sounds(new_S, pref.species_sound, pref.custom_base) // CHOMPEdit: Custom Scream/Death/Gasp/Pain Sounds
|
||||
*/
|
||||
// CHOMPEdit: Custom Scream/Death/Gasp/Pain Sounds.
|
||||
var/species_sounds_to_copy = pref.species_sound // What sounds are we using?
|
||||
if(species_sounds_to_copy == "Unset") // Are we unset?
|
||||
species_sounds_to_copy = select_default_species_sound(pref) // This will also grab gendered versions of the sounds, if they exist.
|
||||
@@ -300,6 +295,7 @@ var/global/list/valid_bloodreagents = list("default",REAGENT_ID_IRON,REAGENT_ID_
|
||||
|
||||
var/points_left = pref.starting_trait_points
|
||||
|
||||
|
||||
for(var/T in pref.pos_traits + pref.neg_traits)
|
||||
points_left -= GLOB.traits_costs[T]
|
||||
if(T in pref.pos_traits)
|
||||
@@ -309,21 +305,21 @@ var/global/list/valid_bloodreagents = list("default",REAGENT_ID_IRON,REAGENT_ID_
|
||||
if(points_left < 0 || traits_left < 0 || (!pref.custom_species && pref.species == SPECIES_CUSTOM))
|
||||
. += span_red(span_bold("^ Fix things! ^")) + "<br>"
|
||||
|
||||
. += "<a href='byond://?src=\ref[src];add_trait=[POSITIVE_MODE]'>Positive Trait(s) (Limited) +</a><br>" // CHOMPEdit: More obvious/clear to players.
|
||||
. += "<a href='byond://?src=\ref[src];add_trait=[POSITIVE_MODE]'>Positive Trait(s) (Limited) +</a><br>"
|
||||
. += "<ul>"
|
||||
for(var/T in pref.pos_traits)
|
||||
var/datum/trait/trait = GLOB.positive_traits[T]
|
||||
. += "<li>- <a href='byond://?src=\ref[src];clicked_pos_trait=[T]'>[trait.name] ([trait.cost])</a> [get_html_for_trait(trait, pref.pos_traits[T])]</li>"
|
||||
. += "</ul>"
|
||||
|
||||
. += "<a href='byond://?src=\ref[src];add_trait=[NEUTRAL_MODE]'>Neutral Trait(s) (No Limit) +</a><br>" // CHOMPEdit: More obvious/clear to players.
|
||||
. += "<a href='byond://?src=\ref[src];add_trait=[NEUTRAL_MODE]'>Neutral Trait(s) (No Limit) +</a><br>"
|
||||
. += "<ul>"
|
||||
for(var/T in pref.neu_traits)
|
||||
var/datum/trait/trait = GLOB.neutral_traits[T]
|
||||
. += "<li>- <a href='byond://?src=\ref[src];clicked_neu_trait=[T]'>[trait.name] ([trait.cost])</a> [get_html_for_trait(trait, pref.neu_traits[T])]</li>"
|
||||
. += "</ul>"
|
||||
|
||||
. += "<a href='byond://?src=\ref[src];add_trait=[NEGATIVE_MODE]'>Negative Trait(s) (No Limit) +</a><br>" // CHOMPEdit: More obvious/clear to players.
|
||||
. += "<a href='byond://?src=\ref[src];add_trait=[NEGATIVE_MODE]'>Negative Trait(s) (No Limit) +</a><br>"
|
||||
. += "<ul>"
|
||||
for(var/T in pref.neg_traits)
|
||||
var/datum/trait/trait = GLOB.negative_traits[T]
|
||||
|
||||
@@ -24,6 +24,23 @@
|
||||
emote_message_3p = "gasps."
|
||||
conscious = FALSE
|
||||
|
||||
/decl/emote/audible/gasp/get_emote_sound(var/atom/user)
|
||||
..()
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
var/vol = H.species.gasp_volume
|
||||
var/s = get_species_sound(get_gendered_sound(H))["gasp"]
|
||||
if(!s && !(get_species_sound(H.species.species_sounds) == "None")) // Failsafe, so we always use the default gasp/etc sounds. None will cancel out anyways.
|
||||
if(H.identifying_gender == FEMALE)
|
||||
s = get_species_sound("Human Female")["gasp"]
|
||||
else // Update this if we ever get herm/etc sounds.
|
||||
s = get_species_sound("Human Male")["gasp"]
|
||||
return list(
|
||||
"sound" = s,
|
||||
"vol" = vol,
|
||||
"volchannel" = VOLUME_CHANNEL_SPECIES_SOUNDS
|
||||
)
|
||||
|
||||
/decl/emote/audible/scretch
|
||||
key = "scretch"
|
||||
emote_message_3p = "scretches."
|
||||
|
||||
@@ -12,7 +12,6 @@
|
||||
emote_volume_synthetic = 50
|
||||
|
||||
conscious = FALSE
|
||||
// CHOMPEdit Start: Standardize Species Sounds
|
||||
// emote_sound_synthetic = list()
|
||||
|
||||
/decl/emote/audible/cough/get_emote_sound(var/atom/user)
|
||||
@@ -36,5 +35,4 @@
|
||||
"vol" = emote_volume,
|
||||
"volchannel" = VOLUME_CHANNEL_SPECIES_SOUNDS
|
||||
)
|
||||
// CHOMPEdit End
|
||||
return ..()
|
||||
|
||||
44
code/modules/emotes/definitions/audible_pain.dm
Normal file
44
code/modules/emotes/definitions/audible_pain.dm
Normal file
@@ -0,0 +1,44 @@
|
||||
/decl/emote/audible/pain
|
||||
key = "pain"
|
||||
emote_message_1p = "You yell in pain!"
|
||||
emote_message_3p = "yells in pain!"
|
||||
|
||||
/decl/emote/audible/pain/get_emote_message_1p(var/atom/user, var/atom/target, var/extra_params)
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
return "You [pick(H.species.pain_verb_1p)] in pain!"
|
||||
else
|
||||
var/mob/living/M = user
|
||||
if(M.pain_emote_1p) // Sanity
|
||||
return "You [pick(M.pain_emote_1p)]!"
|
||||
. = ..()
|
||||
|
||||
/decl/emote/audible/pain/get_emote_message_3p(var/atom/user, var/atom/target, var/extra_params)
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
return "[pick(H.species.pain_verb_3p)] in pain!"
|
||||
else
|
||||
var/mob/living/M = user
|
||||
if(M.pain_emote_3p) // Sanity
|
||||
return "[pick(M.pain_emote_3p)]!"
|
||||
. = ..()
|
||||
|
||||
/decl/emote/audible/pain/get_emote_sound(var/atom/user)
|
||||
..()
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
var/vol = H.species.pain_volume
|
||||
return list(
|
||||
"sound" = get_species_sound(get_gendered_sound(H))["pain"],
|
||||
"vol" = vol,
|
||||
"exr" = 20,
|
||||
"volchannel" = VOLUME_CHANNEL_SPECIES_SOUNDS
|
||||
)
|
||||
else
|
||||
var/mob/living/M = user
|
||||
return list(
|
||||
"sound" = get_species_sound(get_gendered_sound(M))["pain"],
|
||||
"vol" = 50,
|
||||
"exr" = 20,
|
||||
"volchannel" = VOLUME_CHANNEL_SPECIES_SOUNDS
|
||||
)
|
||||
@@ -3,6 +3,17 @@
|
||||
emote_message_1p = "You scream!"
|
||||
emote_message_3p = "screams!"
|
||||
|
||||
/decl/emote/audible/scream/get_emote_sound(var/atom/user)
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
var/vol = H.species.scream_volume
|
||||
return list(
|
||||
"sound" = get_species_sound(get_gendered_sound(H))["scream"],
|
||||
"vol" = vol,
|
||||
"exr" = 20,
|
||||
"volchannel" = VOLUME_CHANNEL_SPECIES_SOUNDS
|
||||
)
|
||||
|
||||
/decl/emote/audible/scream/get_emote_message_1p(var/atom/user, var/atom/target, var/extra_params)
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
|
||||
@@ -1,18 +1,7 @@
|
||||
/decl/emote/audible/scream/get_emote_sound(var/atom/user)
|
||||
..()
|
||||
if(ishuman(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
// CHOMPEdit Start: Commenting out bc _ch calls parent.
|
||||
/*
|
||||
if(H.get_gender() == FEMALE)
|
||||
return list(
|
||||
"sound" = H.species.female_scream_sound,
|
||||
"vol" = emote_volume
|
||||
)
|
||||
else
|
||||
return list(
|
||||
"sound" = H.species.male_scream_sound,
|
||||
"vol" = emote_volume
|
||||
*/
|
||||
var/vol = H.species.scream_volume
|
||||
return list(
|
||||
"sound" = get_species_sound(get_gendered_sound(H))["scream"],
|
||||
@@ -20,3 +9,8 @@
|
||||
"exr" = 20,
|
||||
"volchannel" = VOLUME_CHANNEL_SPECIES_SOUNDS
|
||||
)
|
||||
|
||||
/decl/emote/audible/malehumanscream
|
||||
key = "malehumanscream"
|
||||
emote_message_3p = "screams!"
|
||||
emote_sound = 'sound/voice/malescream_2.ogg'
|
||||
|
||||
@@ -10,7 +10,6 @@
|
||||
/decl/emote/audible/sneeze/get_emote_sound(var/atom/user)
|
||||
if(ishuman(user) && !check_synthetic(user))
|
||||
var/mob/living/carbon/human/H = user
|
||||
// CHOMPEdit Start: Standardize Species Sounds
|
||||
var/vol = H.species.sneeze_volume
|
||||
var/s = get_species_sound(get_gendered_sound(H))["sneeze"]
|
||||
if(!s && !(get_species_sound(H.species.species_sounds) == "None")) // Failsafe, so we always use the default sneeze/etc sounds. None will cancel out anyways.
|
||||
|
||||
27
code/modules/emotes/definitions/belly_rub.dm
Normal file
27
code/modules/emotes/definitions/belly_rub.dm
Normal file
@@ -0,0 +1,27 @@
|
||||
/decl/emote/visible/bellyrub
|
||||
key = "bellyrub"
|
||||
check_restraints = TRUE
|
||||
check_range = 1
|
||||
//These aren't actually ever shown BUT can_target requires 1p_target or 3p_target to be set or you can't target people.
|
||||
emote_message_1p = "You rub your belly!"
|
||||
emote_message_1p_target = "You rub TARGET's belly!"
|
||||
emote_message_3p = "rubs their belly!"
|
||||
emote_message_3p_target = "rubs TARGET's belly!"
|
||||
|
||||
/decl/emote/visible/bellyrub/get_emote_message_1p(var/atom/user, var/atom/target, var/extra_params)
|
||||
if(!target && isliving(user)) //We shouldn't NEED an isliving check here but...Whatever, safety first.
|
||||
var/mob/living/U = user
|
||||
U.vore_bellyrub(U)
|
||||
//We don't need to return a message here. The vore bellyrub does it itself!
|
||||
|
||||
else if(isliving(user) && isliving(target))
|
||||
var/mob/living/U = user
|
||||
var/mob/living/T = target
|
||||
U.vore_bellyrub(T)
|
||||
//We don't need to return a message here. The vore bellyrub does it itself!
|
||||
else
|
||||
to_chat(user, "You can not rub [target]'s belly.")
|
||||
return
|
||||
|
||||
/decl/emote/visible/bellyrub/get_emote_message_3p(var/atom/user, var/atom/target, var/extra_params)
|
||||
return
|
||||
@@ -1,5 +1,5 @@
|
||||
/decl/emote/human/mob_can_use(var/mob/living/carbon/human/user)
|
||||
return ..() && (istype(user))//VOREStation Edit - What does a mouth have to do with wagging?? && user.check_has_mouth() && !user.isSynthetic())
|
||||
return ..() && (istype(user))//What does a mouth have to do with wagging?? && user.check_has_mouth() && !user.isSynthetic())
|
||||
|
||||
/decl/emote/human/deathgasp
|
||||
key = "deathgasp"
|
||||
|
||||
@@ -134,7 +134,7 @@ var/global/list/emotes_by_key
|
||||
if (!use_range)
|
||||
use_range = world.view
|
||||
|
||||
if(ismob(user))
|
||||
if(ismob(user) && (use_3p || use_1p)) //Adds functionality for emotes that don't give use feedback, such as bellyrubs.
|
||||
var/mob/M = user
|
||||
if(message_type == AUDIBLE_MESSAGE)
|
||||
if(isliving(user))
|
||||
|
||||
@@ -114,13 +114,13 @@ var/list/slot_equipment_priority = list( \
|
||||
|
||||
//Puts the item into your l_hand if possible and calls all necessary triggers/updates. returns 1 on success.
|
||||
/mob/proc/put_in_l_hand(var/obj/item/W)
|
||||
if(/*lying || */!istype(W)) // CHOMPEdit - Don't care about lying, give me.
|
||||
if(!istype(W))
|
||||
return 0
|
||||
return 1
|
||||
|
||||
//Puts the item into your r_hand if possible and calls all necessary triggers/updates. returns 1 on success.
|
||||
/mob/proc/put_in_r_hand(var/obj/item/W)
|
||||
if(/*lying || */!istype(W)) // CHOMPEdit - Don't care about lying, give me.
|
||||
if(!istype(W))
|
||||
return 0
|
||||
return 1
|
||||
|
||||
|
||||
@@ -41,6 +41,7 @@
|
||||
var/target_patience = 5
|
||||
var/frustration = 0
|
||||
var/max_frustration = 0
|
||||
can_pain_emote = FALSE // Sanity/safety, if bots ever get emotes later, undo this
|
||||
|
||||
can_pain_emote = FALSE // CHOMPEdit: Sanity/safety, if bots ever get emotes later, undo this
|
||||
allow_mind_transfer = TRUE
|
||||
|
||||
@@ -12,6 +12,9 @@
|
||||
can_pain_emote = FALSE // CHOMPEdit: Sanity/safety
|
||||
low_priority = TRUE //CHOMPEdit
|
||||
|
||||
can_pain_emote = FALSE
|
||||
low_priority = TRUE
|
||||
|
||||
/mob/living/carbon/brain/Initialize(mapload)
|
||||
. = ..()
|
||||
var/datum/reagents/R = new/datum/reagents(1000)
|
||||
|
||||
@@ -48,12 +48,10 @@
|
||||
BITSET(hud_updateflag, LIFE_HUD)
|
||||
|
||||
//Handle species-specific deaths.
|
||||
//CHOMPEdit start - Enable not-actually-dying being a species effect
|
||||
if(species.handle_death(src))
|
||||
return
|
||||
//CHOMPEdit end
|
||||
animate_tail_stop()
|
||||
stop_flying() //VOREStation Edit.
|
||||
stop_flying()
|
||||
|
||||
//Handle snowflake ling stuff.
|
||||
if(mind && mind.changeling)
|
||||
@@ -84,26 +82,19 @@
|
||||
|
||||
callHook("death", list(src, gibbed))
|
||||
|
||||
// CHOMPAdd - Shoe steppy. I was going to make a hook but- It isn't much.
|
||||
if(istype(loc, /obj/item/clothing/shoes))
|
||||
mind?.vore_death = TRUE
|
||||
// CHOMPEdit End
|
||||
|
||||
if(mind)
|
||||
var/area/A = get_area(src)
|
||||
if(!(A?.flag_check(AREA_BLOCK_SUIT_SENSORS)) && isbelly(loc))
|
||||
// SSgame_master.adjust_danger(gibbed ? 40 : 20) // VOREStation Edit - We don't use SSgame_master yet.
|
||||
// SSgame_master.adjust_danger(gibbed ? 40 : 20) // We don't use SSgame_master yet.
|
||||
for(var/mob/observer/dead/O in mob_list)
|
||||
if(O.client?.prefs?.read_preference(/datum/preference/toggle/show_dsay))
|
||||
to_chat(O, span_deadsay(span_bold("[src]") + " has died in " + span_bold("[get_area(src)]") + ". [ghost_follow_link(src, O)] "))
|
||||
|
||||
/* // CHOMPEdit Start: Replacing this with our own death sounds. :3
|
||||
if(!gibbed && species.death_sound)
|
||||
playsound(src, species.death_sound, 80, 1, 1)
|
||||
*/
|
||||
if(!gibbed && !isbelly(loc))
|
||||
playsound(src, pick(get_species_sound(get_gendered_sound(src))["death"]), src.species.death_volume, 1, 20, volume_channel = VOLUME_CHANNEL_DEATH_SOUNDS)
|
||||
// CHOMPEdit End
|
||||
|
||||
if(ticker && ticker.mode)
|
||||
sql_report_death(src)
|
||||
@@ -114,7 +105,7 @@
|
||||
|
||||
// If the body is in VR, move the mind back to the real world
|
||||
if(vr_holder)
|
||||
src.died_in_vr = TRUE //CHOMPedit, so avatar.dm can delete bodies
|
||||
src.died_in_vr = TRUE //so avatar.dm can delete bodies
|
||||
src.exit_vr()
|
||||
src.vr_holder.vr_link = null
|
||||
for(var/obj/item/W in src)
|
||||
|
||||
@@ -42,6 +42,7 @@ var/list/_human_default_emotes = list(
|
||||
/decl/emote/human/deathgasp,
|
||||
/decl/emote/audible/giggle,
|
||||
/decl/emote/audible/scream,
|
||||
/decl/emote/audible/pain,
|
||||
/decl/emote/visible/airguitar,
|
||||
/decl/emote/visible/blink_r,
|
||||
/decl/emote/visible/bow,
|
||||
@@ -61,6 +62,7 @@ var/list/_human_default_emotes = list(
|
||||
/decl/emote/visible/stare,
|
||||
/decl/emote/visible/look,
|
||||
/decl/emote/visible/point,
|
||||
/decl/emote/visible/bellyrub,
|
||||
/decl/emote/visible/raise,
|
||||
/decl/emote/visible/grin,
|
||||
/decl/emote/visible/shrug,
|
||||
@@ -231,6 +233,7 @@ var/list/_simple_mob_default_emotes = list(
|
||||
/decl/emote/human/deathgasp,
|
||||
/decl/emote/audible/giggle,
|
||||
/decl/emote/audible/scream,
|
||||
/decl/emote/audible/pain,
|
||||
/decl/emote/visible/airguitar,
|
||||
/decl/emote/visible/blink_r,
|
||||
/decl/emote/visible/bow,
|
||||
@@ -250,6 +253,7 @@ var/list/_simple_mob_default_emotes = list(
|
||||
/decl/emote/visible/stare,
|
||||
/decl/emote/visible/look,
|
||||
/decl/emote/visible/point,
|
||||
/decl/emote/visible/bellyrub,
|
||||
/decl/emote/visible/raise,
|
||||
/decl/emote/visible/grin,
|
||||
/decl/emote/visible/shrug,
|
||||
|
||||
@@ -205,7 +205,7 @@
|
||||
apply_effect(3, WEAKEN, armor_check)
|
||||
playsound(src, 'sound/weapons/thudswoosh.ogg', 50, 1, -1)
|
||||
if(armor_check < 60)
|
||||
drop_both_hands() // CHOMPEdit - We've been pushed! Drop our stuff as well
|
||||
drop_both_hands()
|
||||
if(M.lying)
|
||||
visible_message(span_danger("[M] swept [src] down onto the floor!"))
|
||||
else
|
||||
|
||||
@@ -184,7 +184,7 @@
|
||||
// Loop through some slots, and add up their slowdowns.
|
||||
// Includes slots which can provide armor, the back slot, and suit storage.
|
||||
for(var/obj/item/I in list(wear_suit, w_uniform, back, gloves, head, s_store))
|
||||
if(istype(I,/obj/item/rig)) //CHOMPAdd
|
||||
if(istype(I,/obj/item/rig))
|
||||
for(var/obj/item/II in I.contents)
|
||||
. += II.slowdown
|
||||
. += I.slowdown
|
||||
@@ -205,9 +205,8 @@
|
||||
var/turf_move_cost = T.movement_cost
|
||||
if(istype(T, /turf/simulated/floor/water))
|
||||
if(species.water_movement)
|
||||
//turf_move_cost = CLAMP(turf_move_cost + species.water_movement, HUMAN_LOWEST_SLOWDOWN, 15) //ChompEDIT - all water is free movement for aquatics
|
||||
turf_move_cost = 0 //ChompEDIT - all water is free movement for aquatics
|
||||
if(istype(shoes, /obj/item/clothing/shoes)) //CHOMPEdit - Fixes runtime
|
||||
turf_move_cost = 0
|
||||
if(istype(shoes, /obj/item/clothing/shoes))
|
||||
var/obj/item/clothing/shoes/feet = shoes
|
||||
if(istype(feet) && feet.water_speed)
|
||||
turf_move_cost = CLAMP(turf_move_cost + feet.water_speed, HUMAN_LOWEST_SLOWDOWN, 15)
|
||||
@@ -215,7 +214,7 @@
|
||||
else if(istype(T, /turf/simulated/floor/outdoors/snow))
|
||||
if(species.snow_movement)
|
||||
turf_move_cost = CLAMP(turf_move_cost + species.snow_movement, HUMAN_LOWEST_SLOWDOWN, 15)
|
||||
if(istype(shoes, /obj/item/clothing/shoes)) //CHOMPEdit - Fixes runtime
|
||||
if(istype(shoes, /obj/item/clothing/shoes))
|
||||
var/obj/item/clothing/shoes/feet = shoes
|
||||
if(istype(feet) && feet.snow_speed)
|
||||
turf_move_cost = CLAMP(turf_move_cost + feet.snow_speed, HUMAN_LOWEST_SLOWDOWN, 15)
|
||||
@@ -274,38 +273,6 @@
|
||||
|
||||
return FALSE
|
||||
|
||||
|
||||
/* CHOMPedit: Nuking slipping.
|
||||
/mob/living/carbon/human/Process_Spaceslipping(var/prob_slip = 5)
|
||||
//If knocked out we might just hit it and stop. This makes it possible to get dead bodies and such.
|
||||
|
||||
if(species.flags & NO_SLIP)
|
||||
return FALSE
|
||||
|
||||
if(species.can_space_freemove || species.can_zero_g_move)
|
||||
return FALSE
|
||||
|
||||
var/obj/item/tank/jetpack/thrust = get_jetpack()
|
||||
if(thrust?.can_thrust(0.01))
|
||||
return FALSE
|
||||
|
||||
if(stat)
|
||||
prob_slip = 0 // Changing this to zero to make it line up with the comment, and also, make more sense.
|
||||
|
||||
//Do we have magboots or such on if so no slip
|
||||
if(istype(shoes, /obj/item/clothing/shoes/magboots) && (shoes.item_flags & NOSLIP))
|
||||
prob_slip = 0
|
||||
|
||||
//Check hands and mod slip
|
||||
if(!l_hand) prob_slip -= 2
|
||||
else if(l_hand.w_class <= 2) prob_slip -= 1
|
||||
if (!r_hand) prob_slip -= 2
|
||||
else if(r_hand.w_class <= 2) prob_slip -= 1
|
||||
|
||||
prob_slip = round(prob_slip)
|
||||
return(prob_slip)
|
||||
*/// CHOMPedit end.
|
||||
|
||||
// Handle footstep sounds
|
||||
/mob/living/carbon/human/handle_footstep(var/turf/T)
|
||||
if(shoes && loc == T && get_gravity(loc) && !flying)
|
||||
|
||||
@@ -36,14 +36,6 @@
|
||||
pain_verb_1p = "shriek"
|
||||
pain_verb_3p = "shrieks"
|
||||
species_sounds = "Vox"
|
||||
// CHOMPedit: Species Sounds Standardization
|
||||
// male_scream_sound = list('sound/voice/shriek1.ogg') // CHOMPEdit: List-ified
|
||||
// female_scream_sound = list('sound/voice/shriek1.ogg') // CHOMPEdit: List-ified
|
||||
// male_cough_sounds = list('sound/voice/shriekcough.ogg')
|
||||
// female_cough_sounds = list('sound/voice/shriekcough.ogg')
|
||||
// male_sneeze_sound = 'sound/voice/shrieksneeze.ogg'
|
||||
// female_sneeze_sound = 'sound/voice/shrieksneeze.ogg'
|
||||
// CHOMPEdit End
|
||||
|
||||
warning_low_pressure = 50
|
||||
hazard_low_pressure = 0
|
||||
|
||||
@@ -62,12 +62,7 @@
|
||||
|
||||
// has_glowing_eyes = TRUE //Applicable through neutral taits.
|
||||
|
||||
//death_message = "phases to somewhere far away!" //CHOMPEdit Removed
|
||||
// male_cough_sounds = null
|
||||
// female_cough_sounds = null
|
||||
// male_sneeze_sound = null
|
||||
// female_sneeze_sound = null
|
||||
|
||||
//death_message = "phases to somewhere far away!" //CHOMPEdit Removed
|
||||
speech_bubble_appearance = "ghost"
|
||||
|
||||
genders = list(MALE, FEMALE, PLURAL, NEUTER)
|
||||
|
||||
@@ -81,16 +81,8 @@
|
||||
//Soundy emotey things.
|
||||
var/scream_verb_1p = "scream"
|
||||
var/scream_verb_3p = "screams"
|
||||
// CHOMPEdit Start: Overriding with our own species-specific sounds.
|
||||
// If you're wanting to know where the lists are per-species, go to sound.dm
|
||||
/*
|
||||
var/male_scream_sound = list('sound/effects/mob_effects/m_scream_1.ogg','sound/effects/mob_effects/m_scream_2.ogg','sound/effects/mob_effects/m_scream_3.ogg','sound/effects/mob_effects/m_scream_4.ogg') //CHOMpedit start : Added tgstation screams
|
||||
var/female_scream_sound = list('sound/effects/mob_effects/f_scream_1.ogg','sound/effects/mob_effects/f_scream_2.ogg','sound/effects/mob_effects/f_scream_3.ogg','sound/effects/mob_effects/f_scream_4.ogg') //CHOMPedit end
|
||||
var/male_cough_sounds = list('sound/effects/mob_effects/m_cougha.ogg','sound/effects/mob_effects/m_coughb.ogg', 'sound/effects/mob_effects/m_coughc.ogg')
|
||||
var/female_cough_sounds = list('sound/effects/mob_effects/f_cougha.ogg','sound/effects/mob_effects/f_coughb.ogg')
|
||||
var/male_sneeze_sound = 'sound/effects/mob_effects/sneeze.ogg'
|
||||
var/female_sneeze_sound = 'sound/effects/mob_effects/f_sneeze.ogg'
|
||||
*/
|
||||
var/pain_verb_1p = list("shout", "growl", "grunt", "gasp")
|
||||
var/pain_verb_3p = list("shouts", "growls", "grunts", "gasps")
|
||||
/* Our base species sounds.
|
||||
* Note that species_sounds is meant to be used in the place of gendered sound.
|
||||
* If your species has gendered sounds, set 'gender_specific_species_sounds' to TRUE, and define your gendered sounds below.
|
||||
@@ -106,7 +98,6 @@
|
||||
var/gasp_volume = 50 // Self-explanatory, define this separately on your species if the sound files are louder.
|
||||
var/death_volume = 50 // Self-explanatory, define this separately on your species if the sound files are louder.
|
||||
// var/species_sounds_herm // If you want a custom sound played for other genders, just add them like so
|
||||
// CHOMPEdit End
|
||||
|
||||
var/footstep = FOOTSTEP_MOB_HUMAN
|
||||
var/list/special_step_sounds = null
|
||||
@@ -550,7 +541,6 @@
|
||||
span_notice("[target] moves to avoid being touched by you!"), )
|
||||
return
|
||||
|
||||
//VOREStation Edit Start - Headpats and Handshakes.
|
||||
if(H.zone_sel.selecting == BP_HEAD)
|
||||
if(target.touch_reaction_flags & SPECIES_TRAIT_PATTING_DEFENCE)
|
||||
H.visible_message( \
|
||||
|
||||
@@ -43,8 +43,6 @@ var/datum/species/shapeshifter/promethean/prometheans
|
||||
|
||||
speech_bubble_appearance = "slime"
|
||||
|
||||
// male_cough_sounds = list('sound/effects/slime_squish.ogg')
|
||||
// female_cough_sounds = list('sound/effects/slime_squish.ogg')
|
||||
species_sounds = "Slime"
|
||||
|
||||
min_age = 18
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
|
||||
rarity_value = 5
|
||||
|
||||
species_sounds = "Robotic" // CHOMPEnable
|
||||
species_sounds = "Robotic"
|
||||
|
||||
crit_mod = 4 //Unable to go crit // CHOMPEnable
|
||||
var/obj/item/rig/protean/OurRig
|
||||
|
||||
@@ -46,12 +46,10 @@
|
||||
O_INTESTINE = /obj/item/organ/internal/intestine
|
||||
)
|
||||
|
||||
// CHOMPEdit: Species Specific Sounds
|
||||
species_sounds = "Human Male"
|
||||
gender_specific_species_sounds = TRUE
|
||||
species_sounds_male = "Human Male"
|
||||
species_sounds_female = "Human Female"
|
||||
// CHOMPEdit End
|
||||
|
||||
inherent_verbs = list(
|
||||
/mob/living/carbon/human/proc/tie_hair)
|
||||
@@ -98,13 +96,10 @@
|
||||
|
||||
economic_modifier = 10
|
||||
|
||||
// CHOMPEdit: Reverted these back to Polaris, but commented them out. We're using species-specific sounds instead.
|
||||
// male_scream_sound = list ('sound/effects/mob_effects/una_scream1.ogg','sound/effects/mob_effects/una_scream2.ogg')
|
||||
// female_scream_sound = list ('sound/effects/mob_effects/una_scream1.ogg','sound/effects/mob_effects/una_scream2.ogg')
|
||||
species_sounds = "Lizard" // Species sounds
|
||||
|
||||
pain_verb_1p = list("hiss", "growl") // CHOMPEdit: Unathi pain emotes
|
||||
pain_verb_3p = list("hisses", "growls") // CHOMPEdit: Pain emotes
|
||||
pain_verb_1p = list("hiss", "growl")
|
||||
pain_verb_3p = list("hisses", "growls")
|
||||
|
||||
blurb = "Heavily reptilian in appearance, the Unathi hail from the Uueoa-Esa system, roughly translated as 'Burning Mother'. \
|
||||
Their home planet, Moghes, is an arid climate with hot rocky plains and deserts, and a temperate band of swamps and savannas with \
|
||||
@@ -240,14 +235,10 @@
|
||||
|
||||
economic_modifier = 10
|
||||
|
||||
// CHOMPEdit Start: Species sounds
|
||||
species_sounds = "Feline"
|
||||
// male_scream_sound = list('modular_chomp/sound/voice/scream/feline/feline_scream.ogg') //CHOMPedit: Scream sounds, finally, 3 years later.
|
||||
//female_scream_sound = list('modular_chomp/sound/voice/scream/feline/feline_scream.ogg') //CHOMPedit: Scream sounds, finally, 3 years later.
|
||||
|
||||
pain_verb_1p = list("hiss", "growl", "yowl") // CHOMPEdit: Unathi pain emotes
|
||||
pain_verb_3p = list("hisses", "growls", "yowls") // CHOMPEdit: Pain emotes
|
||||
// CHOMPEdit End
|
||||
pain_verb_1p = list("hiss", "growl", "yowl")
|
||||
pain_verb_3p = list("hisses", "growls", "yowls")
|
||||
|
||||
blurb = "The Tajaran are a mammalian species resembling roughly felines, hailing from Meralar in the Rarkajar system. \
|
||||
While reaching to the stars independently from outside influences, the humans engaged them in peaceful trade contact \
|
||||
@@ -362,9 +353,6 @@
|
||||
|
||||
economic_modifier = 10
|
||||
|
||||
// male_scream_sound = null //CHOMPedit
|
||||
// female_scream_sound = null //CHOMPedit
|
||||
|
||||
darksight = 4
|
||||
flash_mod = 1.2
|
||||
chemOD_mod = 0.9
|
||||
@@ -458,7 +446,7 @@
|
||||
flash_mod = 2
|
||||
flash_burn = 15 //flashing a zaddat probably counts as police brutality
|
||||
metabolic_rate = 0.7 //did u know if your ancestors starved ur body will actually start in starvation mode?
|
||||
item_slowdown_mod = 0.30 //CHOMPedit: They can actually wear their living-required spacesuits without enormous slowdown now.
|
||||
item_slowdown_mod = 0.30
|
||||
taste_sensitivity = TASTE_SENSITIVE
|
||||
num_alternate_languages = 3
|
||||
secondary_langs = list(LANGUAGE_ZADDAT, LANGUAGE_UNATHI)
|
||||
@@ -595,10 +583,6 @@
|
||||
|
||||
economic_modifier = 10
|
||||
|
||||
// CHOMPEdit: For shits and giggles, I want someone to give the Diona plant sounds from like, WoW. lmao
|
||||
// male_scream_sound = null //CHOMPedit
|
||||
// female_scream_sound = null //CHOMPedit
|
||||
|
||||
blurb = "Commonly referred to (erroneously) as 'plant people', the Dionaea are a strange space-dwelling collective \
|
||||
species hailing from Epsilon Ursae Minoris. Each 'diona' is a cluster of numerous cat-sized organisms called nymphs; \
|
||||
there is no effective upper limit to the number that can fuse in gestalt, and reports exist of the Epsilon Ursae \
|
||||
@@ -764,7 +748,9 @@
|
||||
digi_allowed = TRUE
|
||||
|
||||
min_age = 18
|
||||
max_age = 80
|
||||
max_age = 110
|
||||
|
||||
species_sounds = "Canine"
|
||||
|
||||
blurb = "There are two subspecies of Sergal; Southern and Northern. Northern sergals are a highly aggressive race \
|
||||
that lives in the plains and tundra of their homeworld. They are characterized by long, fluffy fur bodies with cold colors; \
|
||||
@@ -1118,8 +1104,7 @@
|
||||
|
||||
health_hud_intensity = 3
|
||||
|
||||
//male_sneeze_sound = list('sound/effects/mob_effects/tesharisneeze.ogg','sound/effects/mob_effects/tesharisneezeb.ogg') //CHOMPStation Edit Disable
|
||||
//female_sneeze_sound = list('sound/effects/mob_effects/tesharisneeze.ogg','sound/effects/mob_effects/tesharisneezeb.ogg') //CHOMPStation Edit Disable
|
||||
species_sounds = "Teshari"
|
||||
center_offset = 0
|
||||
|
||||
blood_color = "#D514F7"
|
||||
@@ -1367,11 +1352,6 @@
|
||||
|
||||
//has_glowing_eyes = TRUE // Applicable through traits.
|
||||
|
||||
//male_cough_sounds = null //CHOMPStation Edit
|
||||
//female_cough_sounds = null //CHOMPStation Edit
|
||||
//male_sneeze_sound = null //CHOMPStation Edit
|
||||
//female_sneeze_sound = null //CHOMPStation Edit
|
||||
|
||||
speech_bubble_appearance = "ghost"
|
||||
|
||||
genders = list(MALE, FEMALE, PLURAL, NEUTER)
|
||||
@@ -1660,7 +1640,7 @@
|
||||
min_age = 18
|
||||
max_age = 200
|
||||
|
||||
species_sounds = "Canine" //CHOMPStation Edit - Species Sounds
|
||||
species_sounds = "Canine"
|
||||
|
||||
blurb = "Big buff werewolves. These are a limited functionality event species that are not balanced for regular gameplay. Adminspawn only."
|
||||
|
||||
@@ -1731,7 +1711,7 @@
|
||||
min_age = 18
|
||||
max_age = 80
|
||||
|
||||
species_sounds = "Unset" // CHOMPEdit: Chimera get a default/safety of unset, going off their icon base if there's none overriding.
|
||||
species_sounds = "Unset" // Chimera get a default/safety of unset, going off their icon base if there's none overriding.
|
||||
|
||||
blurb = "Some amalgamation of different species from across the universe,with extremely unstable DNA, making them unfit for regular cloners. \
|
||||
Widely known for their voracious nature and violent tendencies when stressed or left unfed for long periods of time. \
|
||||
@@ -1779,15 +1759,15 @@
|
||||
|
||||
//While regenerating
|
||||
if(H.revive_ready == REVIVING_NOW || H.revive_ready == REVIVING_DONE)
|
||||
H.stunned = 5 // CHOMPEdit - Crawling is a thing now
|
||||
H.stunned = 5
|
||||
H.canmove = 0
|
||||
H.does_not_breathe = TRUE
|
||||
var/regen_sounds = H.regen_sounds
|
||||
if(prob(2)) // 2% chance of playing squelchy noise while reviving, which is run roughly every 2 seconds/tick while regenerating.
|
||||
playsound(H, pick(regen_sounds), 30)
|
||||
H.visible_message(span_danger("<p>" + span_huge("[H.name]'s motionless form shudders grotesquely, rippling unnaturally.") + "</p>"))
|
||||
if(!H.lying) //CHOMPStation Edit
|
||||
H.lay_down() //CHOMPStation Edit
|
||||
if(!H.lying)
|
||||
H.lay_down()
|
||||
//Cold/pressure effects when not regenerating
|
||||
else
|
||||
var/datum/gas_mixture/environment = H.loc.return_air()
|
||||
|
||||
@@ -264,8 +264,8 @@
|
||||
/mob/living/carbon/human/proc/tie_hair)
|
||||
digi_allowed = TRUE
|
||||
|
||||
// male_scream_sound = list('modular_chomp/sound/voice/scream/canine/wolf_scream.ogg', 'modular_chomp/sound/voice/scream/canine/wolf_scream2.ogg', 'modular_chomp/sound/voice/scream/canine/wolf_scream3.ogg', 'modular_chomp/sound/voice/scream/canine/wolf_scream4.ogg', 'modular_chomp/sound/voice/scream/canine/wolf_scream5.ogg', 'modular_chomp/sound/voice/scream/canine/wolf_scream6.ogg') //CHOMPedit: Scream sounds, finally, 3 years later.
|
||||
// female_scream_sound = list('modular_chomp/sound/voice/scream/canine/wolf_scream.ogg', 'modular_chomp/sound/voice/scream/canine/wolf_scream2.ogg', 'modular_chomp/sound/voice/scream/canine/wolf_scream3.ogg', 'modular_chomp/sound/voice/scream/canine/wolf_scream4.ogg', 'modular_chomp/sound/voice/scream/canine/wolf_scream5.ogg', 'modular_chomp/sound/voice/scream/canine/wolf_scream6.ogg') //CHOMPedit: Scream sounds, finally, 3 years later.
|
||||
// male_scream_sound = 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') //CHOMPedit: Scream sounds, finally, 3 years later.
|
||||
// female_scream_sound = 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') //CHOMPedit: Scream sounds, finally, 3 years later.
|
||||
// CHOMPEdit Start: Add Pain/Gasp/Death sounds
|
||||
pain_verb_1p = list("yelp", "growl")
|
||||
pain_verb_3p = list("yelps", "growls")
|
||||
|
||||
@@ -11,33 +11,27 @@
|
||||
if(istype(nest, /obj/structure/blob/factory))
|
||||
var/obj/structure/blob/factory/F = nest
|
||||
F.spores -= src
|
||||
//VOREStation Edit Start
|
||||
if(istype(nest, /obj/structure/mob_spawner))
|
||||
var/obj/structure/mob_spawner/S = nest
|
||||
S.get_death_report(src)
|
||||
//VOREStation Edit End
|
||||
nest = null
|
||||
|
||||
if(isbelly(loc) && tf_mob_holder)
|
||||
mind?.vore_death = TRUE
|
||||
//CHOMPEdit Start - Holder is used for OOC Escape now, make sure not to kill body swapped minds too
|
||||
if(tf_mob_holder.loc == src)
|
||||
tf_mob_holder.mind?.vore_death = TRUE
|
||||
//CHOMPEdit End
|
||||
|
||||
for(var/datum/soul_link/S as anything in owned_soul_links)
|
||||
S.owner_died(gibbed)
|
||||
for(var/datum/soul_link/S as anything in shared_soul_links)
|
||||
S.sharer_died(gibbed)
|
||||
|
||||
// CHOMPStation Edit: All mobs can play a death_sound if set. On carbons, this is going to be handled by species.
|
||||
if(!gibbed && !isbelly(loc))
|
||||
if(src.death_sound_override) // Do we override the death sounds from our species list - used by only a few specific mobs. If we do, do the next one instead
|
||||
playsound(src, death_sound_override, 50, 1, 20, volume_channel = VOLUME_CHANNEL_DEATH_SOUNDS)
|
||||
else
|
||||
if(!ishuman(src)) // Safety, we're not going to double up on death noises if we're not human.
|
||||
playsound(src, pick(get_species_sound(get_gendered_sound(src))["death"]), 50, 1, 20, volume_channel = VOLUME_CHANNEL_DEATH_SOUNDS)
|
||||
// CHOMPStation Add End
|
||||
|
||||
. = ..()
|
||||
|
||||
|
||||
@@ -55,7 +55,6 @@
|
||||
nest = null
|
||||
if(buckled)
|
||||
buckled.unbuckle_mob(src, TRUE)
|
||||
//VOREStation Addition Start
|
||||
if(tf_mob_holder && tf_mob_holder.loc == src)
|
||||
tf_mob_holder.ckey = ckey
|
||||
if(isbelly(loc))
|
||||
@@ -75,13 +74,10 @@
|
||||
vore_organs -= B
|
||||
if(tf_mob_holder)
|
||||
tf_mob_holder = null
|
||||
//VOREStation Addition End
|
||||
QDEL_NULL_LIST(hud_list)
|
||||
QDEL_NULL(selected_image)
|
||||
//QDEL_NULL(vorePanel) //VOREStation Add commented and moved to /mob
|
||||
//QDEL_LIST_NULL(vore_organs) //VOREStation Add commented and moved to /mob
|
||||
temp_language_sources = null //VOREStation Add
|
||||
temp_languages = null //VOREStation Add
|
||||
temp_language_sources = null
|
||||
temp_languages = null
|
||||
|
||||
if(LAZYLEN(organs))
|
||||
organs_by_name.Cut()
|
||||
@@ -169,10 +165,10 @@
|
||||
health = 100
|
||||
set_stat(CONSCIOUS)
|
||||
else
|
||||
// CHOMPEdit Start: Pain/etc calculations, but more efficient:tm: - this should work for literally anything that applies to health. Far better than slapping emote("pain") everywhere like scream does.
|
||||
// Pain/etc calculations, but more efficient:tm: - this should work for literally anything that applies to health. Far better than slapping emote("pain") everywhere like scream does.
|
||||
if(health > getMaxHealth()) //Overhealth
|
||||
health = getMaxHealth()
|
||||
var/initialhealth = health // CHOMPEdit: Getting our health before this check
|
||||
var/initialhealth = health // Getting our health before this check
|
||||
health = getMaxHealth() - getOxyLoss() - getToxLoss() - getFireLoss() - getBruteLoss() - getCloneLoss() - halloss
|
||||
if(!((ishuman(src)) || (issilicon(src))) && src.can_pain_emote) // Only run this if we're non-human/non-silicon (bots and mechanical simplemobs should be allowed to make pain sounds) & can emote pain, bc humans + carbons already do this. human_damage doesn't call parent, but sanity is better here.
|
||||
if(health < initialhealth) // Did we lose health?
|
||||
@@ -191,7 +187,6 @@
|
||||
if(51 to INFINITY)
|
||||
if(prob(pain_noise * 3) && !isbelly(loc)) // More likely, most severe damage. No pain noises inside bellies.
|
||||
emote("pain")
|
||||
// CHOMPEdit End: Pain
|
||||
|
||||
//This proc is used for mobs which are affected by pressure to calculate the amount of pressure that actually
|
||||
//affects them once clothing is factored in. ~Errorage
|
||||
@@ -272,12 +267,10 @@
|
||||
if(!isnull(M.incoming_healing_percent))
|
||||
amount *= M.incoming_healing_percent
|
||||
|
||||
//VOREStation Additon Start
|
||||
if(tf_mob_holder && tf_mob_holder.loc == src)
|
||||
var/dmgmultiplier = tf_mob_holder.maxHealth / maxHealth
|
||||
dmgmultiplier *= amount
|
||||
tf_mob_holder.adjustBruteLoss(dmgmultiplier)
|
||||
//VOREStation Additon End
|
||||
|
||||
bruteloss = min(max(bruteloss + amount, 0),(getMaxHealth()*2))
|
||||
updatehealth()
|
||||
@@ -364,12 +357,10 @@
|
||||
for(var/datum/modifier/M in modifiers)
|
||||
if(!isnull(M.incoming_healing_percent))
|
||||
amount *= M.incoming_healing_percent
|
||||
//VOREStation Additon Start
|
||||
if(tf_mob_holder && tf_mob_holder.loc == src)
|
||||
var/dmgmultiplier = tf_mob_holder.maxHealth / maxHealth
|
||||
dmgmultiplier *= amount
|
||||
tf_mob_holder.adjustFireLoss(dmgmultiplier)
|
||||
//VOREStation Additon End
|
||||
fireloss = min(max(fireloss + amount, 0),(getMaxHealth()*2))
|
||||
updatehealth()
|
||||
|
||||
@@ -452,7 +443,7 @@
|
||||
return result
|
||||
|
||||
/mob/living/proc/setMaxHealth(var/newMaxHealth)
|
||||
var/h_mult = maxHealth / newMaxHealth //VOREStation Add Start - Calculate change multiplier
|
||||
var/h_mult = maxHealth / newMaxHealth //Calculate change multiplier
|
||||
if(bruteloss) //In case a damage value is 0, divide by 0 bad
|
||||
bruteloss = round(bruteloss / h_mult) //Health is calculated on life based on damage types, so we update the damage and let life handle health
|
||||
if(fireloss)
|
||||
@@ -462,7 +453,7 @@
|
||||
if(oxyloss)
|
||||
oxyloss = round(oxyloss / h_mult)
|
||||
if(cloneloss)
|
||||
cloneloss = round(cloneloss / h_mult) //VOREStation Add End
|
||||
cloneloss = round(cloneloss / h_mult)
|
||||
maxHealth = newMaxHealth
|
||||
|
||||
/mob/living/Stun(amount)
|
||||
@@ -773,7 +764,7 @@
|
||||
do_examine_ooc(usr)
|
||||
|
||||
/mob/living/proc/do_examine_ooc(mob/user)
|
||||
//VOREStation Edit Start - Making it so SSD people have prefs with fallback to original style.
|
||||
//Makes it so SSD people have prefs with fallback to original style.
|
||||
if(CONFIG_GET(flag/allow_metadata))
|
||||
if(ooc_notes)
|
||||
ooc_notes_window(user)
|
||||
@@ -784,7 +775,6 @@
|
||||
to_chat(user, span_filter_notice("[src] does not have any stored infomation!"))
|
||||
else
|
||||
to_chat(user, span_filter_notice("OOC Metadata is not supported by this server!"))
|
||||
//VOREStation Edit End - Making it so SSD people have prefs with fallback to original style.
|
||||
|
||||
return
|
||||
|
||||
@@ -824,7 +814,7 @@
|
||||
else
|
||||
resist_restraints()
|
||||
|
||||
if(attempt_vr(src,"vore_process_resist",args)) return TRUE //VOREStation Code
|
||||
if(attempt_vr(src,"vore_process_resist",args)) return TRUE
|
||||
|
||||
/mob/living/proc/resist_buckle()
|
||||
if(buckled)
|
||||
@@ -921,7 +911,7 @@
|
||||
/mob/living/adjustEarDamage(var/damage, var/deaf)
|
||||
ear_damage = max(0, ear_damage + damage)
|
||||
ear_deaf = max(0, ear_deaf + deaf)
|
||||
if(ear_deaf > 0)
|
||||
if(ear_deaf > 0) //CHOMPStaiton Enable: Ear Ringing/Deafness
|
||||
deaf_loop.start() // CHOMPStation Add: Ear Ringing/Deafness - Not sure if we need this, but, safety.
|
||||
else if(ear_deaf <= 0)
|
||||
deaf_loop.stop() // CHOMPStation Add: Ear Ringing/Deafness - Not sure if we need this, but, safety.
|
||||
@@ -932,7 +922,7 @@
|
||||
ear_damage = damage
|
||||
if(deaf >= 0)
|
||||
ear_deaf = deaf
|
||||
deaf_loop.start() // CHOMPStation Add: Ear Ringing/Deafness - Not sure if we need this, but, safety.
|
||||
deaf_loop.start() // Ear Ringing/Deafness - Not sure if we need this, but, safety. NYI. Used downstream. //CHOMPStation Enable
|
||||
|
||||
/mob/living/proc/vomit(lost_nutrition = 10, blood = FALSE, stun = 5, distance = 1, message = TRUE, toxic = VOMIT_TOXIC, purge = FALSE)
|
||||
|
||||
@@ -1052,24 +1042,14 @@
|
||||
lying = incapacitated(INCAPACITATION_KNOCKDOWN)
|
||||
canmove = !incapacitated(INCAPACITATION_DISABLED)
|
||||
|
||||
if(incapacitated(INCAPACITATION_KNOCKOUT) || incapacitated(INCAPACITATION_STUNNED)) // CHOMPAdd - Making sure we're in good condition to crawl
|
||||
if(incapacitated(INCAPACITATION_KNOCKOUT) || incapacitated(INCAPACITATION_STUNNED)) // Making sure we're in good condition to crawl
|
||||
canmove = 0
|
||||
//drop_both_hands() CHOMPremove, purple stuns dont drop items, this makes space EVA less frustrating and slips/shoves are already coded to drop your stuff.
|
||||
else
|
||||
canmove = 1
|
||||
|
||||
if(lying)
|
||||
density = FALSE
|
||||
/* CHOMPEdit - Allow us to hold stuff while laying down.
|
||||
if(l_hand)
|
||||
unEquip(l_hand)
|
||||
if(r_hand)
|
||||
unEquip(r_hand)
|
||||
for(var/obj/item/holder/holder in get_mob_riding_slots())
|
||||
unEquip(holder)
|
||||
*/
|
||||
update_water() // Submerges the mob.
|
||||
// CHOMPAdd Start - For crawling.
|
||||
stop_pulling()
|
||||
|
||||
if(!passtable_crawl_checked)
|
||||
@@ -1080,15 +1060,12 @@
|
||||
passtable_reset = TRUE
|
||||
pass_flags |= PASSTABLE
|
||||
|
||||
// CHOMPEdit End
|
||||
else
|
||||
density = initial(density)
|
||||
// CHOMPEdit Start - Rest passtable when crawling
|
||||
if(passtable_reset)
|
||||
passtable_reset = FALSE
|
||||
pass_flags &= ~PASSTABLE
|
||||
passtable_crawl_checked = FALSE
|
||||
// CHOMPEdit End
|
||||
|
||||
for(var/obj/item/grab/G in grabbed_by)
|
||||
if(G.state >= GRAB_AGGRESSIVE)
|
||||
@@ -1099,7 +1076,6 @@
|
||||
lying_prev = lying
|
||||
update_transform()
|
||||
update_mob_action_buttons()
|
||||
//VOREStation Add
|
||||
if(lying && LAZYLEN(buckled_mobs))
|
||||
for(var/mob/living/L as anything in buckled_mobs)
|
||||
if(buckled_mobs[L] != "riding")
|
||||
@@ -1109,7 +1085,6 @@
|
||||
else
|
||||
unbuckle_mob(L)
|
||||
L.Stun(5)
|
||||
//VOREStation Add End
|
||||
|
||||
return canmove
|
||||
|
||||
@@ -1156,8 +1131,8 @@
|
||||
|
||||
/mob/living/update_transform(var/instant = FALSE)
|
||||
// First, get the correct size.
|
||||
var/desired_scale_x = size_multiplier * icon_scale_x //VOREStation edit
|
||||
var/desired_scale_y = size_multiplier * icon_scale_y //VOREStation edit
|
||||
var/desired_scale_x = size_multiplier * icon_scale_x
|
||||
var/desired_scale_y = size_multiplier * icon_scale_y
|
||||
var/cent_offset = center_offset
|
||||
|
||||
// Now for the regular stuff.
|
||||
@@ -1166,7 +1141,7 @@
|
||||
var/matrix/M = matrix()
|
||||
M.Scale(desired_scale_x, desired_scale_y)
|
||||
M.Translate(cent_offset * desired_scale_x, (vis_height/2)*(desired_scale_y-1))
|
||||
src.transform = M //VOREStation edit
|
||||
src.transform = M
|
||||
handle_status_indicators()
|
||||
|
||||
// This handles setting the client's color variable, which makes everything look a specific color.
|
||||
@@ -1281,19 +1256,6 @@
|
||||
if(!item)
|
||||
return FALSE //Grab processing has a chance of returning null
|
||||
|
||||
/* CHOMPEdit. If I want to do a nice little give I use the actual verb for it.
|
||||
if(a_intent == I_HELP && Adjacent(target) && isitem(item) && ishuman(target))
|
||||
var/obj/item/I = item
|
||||
var/mob/living/carbon/human/H = target
|
||||
if(H.in_throw_mode && H.a_intent == I_HELP && unEquip(I))
|
||||
H.put_in_hands(I) // If this fails it will just end up on the floor, but that's fitting for things like dionaea.
|
||||
visible_message(span_filter_notice(span_bold("[src]") + " hands \the [H] \a [I]."), span_notice("You give \the [target] \a [I]."))
|
||||
else
|
||||
to_chat(src, span_notice("You offer \the [I] to \the [target]."))
|
||||
do_give(H)
|
||||
return TRUE
|
||||
*/
|
||||
|
||||
drop_from_inventory(item)
|
||||
|
||||
if(!item || QDELETED(item))
|
||||
|
||||
@@ -31,7 +31,6 @@
|
||||
|
||||
add_verb(src,/mob/living/proc/vore_transfer_reagents) // If mob doesnt have bellies it cant use this verb for anything
|
||||
add_verb(src,/mob/living/proc/vore_check_reagents) // If mob doesnt have bellies it cant use this verb for anything
|
||||
add_verb(src,/mob/living/proc/vore_bellyrub) // If mob doesnt have bellies it probably won't be needing this anyway
|
||||
add_verb(src,/mob/proc/nsay_vore)
|
||||
add_verb(src,/mob/proc/nme_vore)
|
||||
add_verb(src,/mob/proc/nsay_vore_ch)
|
||||
|
||||
@@ -102,7 +102,7 @@ var/datum/paiController/paiController // Global handler for pAI candidates
|
||||
if("submit")
|
||||
if(candidate)
|
||||
candidate.ready = 1
|
||||
for(var/obj/item/paicard/p in GLOB.all_pai_cards) //CHOMPedit: Explicit use of GLOB
|
||||
for(var/obj/item/paicard/p in GLOB.all_pai_cards)
|
||||
if(p.looking_for_personality == 1)
|
||||
p.alertUpdate()
|
||||
usr << browse(null, "window=paiRecruit")
|
||||
|
||||
@@ -249,17 +249,6 @@ var/list/mob_hat_cache = list()
|
||||
request_player()
|
||||
return
|
||||
|
||||
/*else //CHOMPEdit - Comment out drone shutting down since it seems to be a round remove with no recourse
|
||||
user.visible_message(span_danger("\The [user] swipes [TU.his] ID card through \the [src], attempting to shut it down."), span_danger("You swipe your ID card through \the [src], attempting to shut it down."))
|
||||
|
||||
if(emagged)
|
||||
return
|
||||
|
||||
if(allowed(user))
|
||||
shut_down()
|
||||
else
|
||||
to_chat(user, span_danger("Access denied."))*/
|
||||
|
||||
return
|
||||
|
||||
..()
|
||||
@@ -319,11 +308,6 @@ var/list/mob_hat_cache = list()
|
||||
return
|
||||
..()
|
||||
|
||||
/* DRONE MOVEMENT. // CHOMPedit: Nuking slipping.
|
||||
/mob/living/silicon/robot/drone/Process_Spaceslipping(var/prob_slip)
|
||||
return 0
|
||||
*/// CHOMPedit end.
|
||||
|
||||
//CONSOLE PROCS
|
||||
/mob/living/silicon/robot/drone/proc/law_resync()
|
||||
if(stat != DEAD)
|
||||
|
||||
@@ -6,16 +6,6 @@
|
||||
/mob/living/silicon/robot/Check_Shoegrip()
|
||||
return module && module.no_slip
|
||||
|
||||
/* CHOMPedit: Nuking slipping.
|
||||
/mob/living/silicon/robot/Process_Spaceslipping(var/prob_slip)
|
||||
var/obj/item/tank/jetpack/thrust = get_jetpack()
|
||||
if(thrust?.can_thrust(0.01))
|
||||
return 0
|
||||
if(module && module.no_slip)
|
||||
return 0
|
||||
..(prob_slip)
|
||||
*/// CHOMPedit end.
|
||||
|
||||
/mob/living/silicon/robot/Process_Spacemove(var/check_drift = 0)
|
||||
if(..())//Can move due to other reasons, don't use jetpack fuel
|
||||
return 1
|
||||
@@ -36,8 +26,8 @@
|
||||
|
||||
if(get_restraining_bolt()) // Borgs with Restraining Bolts move slower.
|
||||
. += 1
|
||||
if(nutrition > 1000) //CHOMPAdd
|
||||
. += nutrition / 2000 //CHOMPAdd
|
||||
if(nutrition > 1000)
|
||||
. += nutrition / 2000
|
||||
|
||||
. += CONFIG_GET(number/robot_delay)
|
||||
|
||||
|
||||
@@ -119,10 +119,10 @@
|
||||
)
|
||||
|
||||
allow_mind_transfer = TRUE
|
||||
can_be_drop_prey = FALSE //CHOMP Add
|
||||
can_be_drop_prey = FALSE
|
||||
species_sounds = "Spider"
|
||||
pain_emote_1p = list("chitter", "click") //CHOMP Add
|
||||
pain_emote_3p = list("chitters", "clicks") //CHOMP Add
|
||||
pain_emote_1p = list("chitter", "click")
|
||||
pain_emote_3p = list("chitters", "clicks")
|
||||
|
||||
/mob/living/simple_mob/animal/giant_spider/Initialize(mapload)
|
||||
. = ..()
|
||||
|
||||
@@ -26,13 +26,10 @@
|
||||
|
||||
var/obj/item/inventory_head
|
||||
var/obj/item/inventory_back
|
||||
|
||||
// CHOMPAdd: :c
|
||||
species_sounds = "Canine"
|
||||
pain_emote_1p = list("yelp", "whine", "bark", "growl")
|
||||
pain_emote_3p = list("yelps", "whines", "barks", "growls")
|
||||
|
||||
|
||||
/mob/living/simple_mob/animal/passive/dog/attackby(var/obj/item/O as obj, var/mob/user as mob)
|
||||
if(istype(O, /obj/item/newspaper))
|
||||
if(!stat)
|
||||
|
||||
@@ -68,13 +68,11 @@
|
||||
var/obj/item/clothing/head/hat = null // The hat the Sakimm may be wearing.
|
||||
var/list/friend_loot_list = list(/obj/item/coin) // What will make this animal non-hostile if held?
|
||||
var/randomize_size = TRUE
|
||||
can_be_drop_prey = TRUE //CHOMP Add
|
||||
// CHOMPAdd: Pain/Death Sounds
|
||||
can_be_drop_prey = TRUE
|
||||
species_sounds = "Raccoon"
|
||||
pain_emote_1p = list("chitter")
|
||||
pain_emote_3p = list("chitters")
|
||||
|
||||
|
||||
/mob/living/simple_mob/animal/sif/sakimm/verb/remove_hat()
|
||||
set name = "Remove Hat"
|
||||
set desc = "Remove the animal's hat. You monster."
|
||||
|
||||
@@ -30,8 +30,8 @@
|
||||
mob_class = MOB_CLASS_SLIME
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/melee
|
||||
|
||||
can_be_drop_prey = FALSE //CHOMP Add
|
||||
can_pain_emote = FALSE // CHOMPEdit: Can't feel pain
|
||||
can_be_drop_prey = FALSE
|
||||
can_pain_emote = FALSE
|
||||
|
||||
/mob/living/simple_mob/blob/speech_bubble_appearance()
|
||||
return "slime"
|
||||
|
||||
@@ -30,8 +30,7 @@
|
||||
var/can_infest = FALSE
|
||||
var/is_infesting = FALSE
|
||||
|
||||
can_pain_emote = FALSE // CHOMPEdit: Can't feel pain
|
||||
|
||||
can_pain_emote = FALSE
|
||||
/datum/say_list/spore
|
||||
emote_see = list("sways", "inflates briefly")
|
||||
|
||||
|
||||
@@ -19,6 +19,10 @@
|
||||
|
||||
// Most humans leave a corpse
|
||||
var/corpse = null
|
||||
pain_emote_1p = list("shout out in pain", "growl in pain", "grunt in pain", "gasp out in pain")
|
||||
pain_emote_3p = list("shouts out in pain", "growls in pain", "grunts in pain", "gasps out in pain")
|
||||
species_sounds = "Human Male" // Yes, we should allow them to differ based on gender, but if someone's making a custom humanoid later:tm: - set your humanoid's species_sounds to match, or var-edit it after spawn.
|
||||
|
||||
|
||||
can_be_drop_prey = FALSE //CHOMP Add
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
var/atom/movable/copying = null // The thing we're trying to look like.
|
||||
var/realistic = FALSE // If true, things like bullets and weapons will hit it, to be a bit more convincing from a distance.
|
||||
|
||||
can_pain_emote = FALSE // CHOMPEdit: Hallucinations can't feel pain and shouldn't take damage anyways, but, sanity
|
||||
can_pain_emote = FALSE
|
||||
|
||||
/mob/living/simple_mob/illusion/update_icon() // We don't want the appearance changing AT ALL unless by copy_appearance().
|
||||
return
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
emote_see = list ("stares unblinkingly.", "jitters and twitches.", "emits a synthetic scream.", "rapidly twitches.", "convulses.", "twitches uncontrollably.", "goes stock still.")
|
||||
say_threaten = list ("FR@#DOM","EN@ T#I$-$","N0$ M^> B@!#")
|
||||
say_got_target = list("I *#@ Y@%","!E@#$P","F#RR @I","D0@#$ ##OK %","IT $##TS")
|
||||
threaten_sound = 'modular_chomp/sound/mob/robots/Cyber_Horror.ogg'
|
||||
threaten_sound = 'sound/mob/robots/Cyber_Horror.ogg'
|
||||
|
||||
/datum/ai_holder/simple_mob/melee/evasive/cyber_horror
|
||||
threaten = TRUE
|
||||
@@ -90,7 +90,7 @@
|
||||
var/poison_type = "neurophage_nanites"
|
||||
|
||||
/datum/say_list/cyber_horror/plasma
|
||||
threaten_sound = 'modular_chomp/sound/mob/robots/Cyber_Horror_Plasma.ogg'
|
||||
threaten_sound = 'sound/mob/robots/Cyber_Horror_Plasma.ogg'
|
||||
|
||||
/mob/living/simple_mob/mechanical/cyber_horror/plasma_cyber_horror/apply_melee_effects(var/atom/A)
|
||||
if(isliving(A))
|
||||
@@ -124,7 +124,7 @@
|
||||
base_attack_cooldown = 2.5
|
||||
attack_sharp = 1
|
||||
attack_edge = 1
|
||||
attack_sound = 'modular_chomp/sound/mob/robots/Cyber_Horror_ChangelingMelee.ogg'
|
||||
attack_sound = 'sound/mob/robots/Cyber_Horror_ChangelingMelee.ogg'
|
||||
attacktext = list ("sliced", "diced", "lashed", "shredded")
|
||||
// Slow as all sin
|
||||
movement_cooldown = 9
|
||||
@@ -144,10 +144,10 @@
|
||||
special_attack_cooldown = 60 SECONDS
|
||||
// How long the leap telegraphing is.
|
||||
var/leap_warmup = 2 SECOND
|
||||
var/leap_sound = 'modular_chomp/sound/mob/robots/Cyber_Horror_ChangelingLeap.ogg'
|
||||
var/leap_sound = 'sound/mob/robots/Cyber_Horror_ChangelingLeap.ogg'
|
||||
|
||||
/datum/say_list/cyber_horror/ling
|
||||
threaten_sound = 'modular_chomp/sound/mob/robots/Cyber_Horror_Changeling.ogg'
|
||||
threaten_sound = 'sound/mob/robots/Cyber_Horror_Changeling.ogg'
|
||||
|
||||
// Multiplies damage if the victim is stunned in some form, including a successful leap.
|
||||
/mob/living/simple_mob/mechanical/cyber_horror/ling_cyber_horror/apply_bonus_melee_damage(atom/A, damage_amount)
|
||||
@@ -221,7 +221,7 @@
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/melee/cyber_horror
|
||||
|
||||
/datum/say_list/cyber_horror/vox
|
||||
threaten_sound = 'modular_chomp/sound/mob/robots/Cyber_Horror_Vox.ogg'
|
||||
threaten_sound = 'sound/mob/robots/Cyber_Horror_Vox.ogg'
|
||||
|
||||
|
||||
// Hit and run mob
|
||||
@@ -231,7 +231,7 @@
|
||||
icon_state = "tajaran_cyber_horror"
|
||||
icon_dead = "tajaran_cyber_horror_dead"
|
||||
say_list_type = /datum/say_list/cyber_horror/tajaran
|
||||
attack_sound = 'modular_chomp/sound/weapons/meleetear.ogg'
|
||||
attack_sound = 'sound/weapons/meleetear.ogg'
|
||||
|
||||
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/melee/hit_and_run/cyber_horror
|
||||
@@ -243,7 +243,7 @@
|
||||
var/last_uncloak = 0
|
||||
|
||||
/datum/say_list/cyber_horror/tajaran
|
||||
threaten_sound = 'modular_chomp/sound/mob/robots/Cyber_Horror_Tajaran.ogg'
|
||||
threaten_sound = 'sound/mob/robots/Cyber_Horror_Tajaran.ogg'
|
||||
|
||||
/mob/living/simple_mob/mechanical/cyber_horror/tajaran/cloak()
|
||||
if(cloaked)
|
||||
@@ -311,13 +311,13 @@
|
||||
say_list_type = /datum/say_list/cyber_horror/grey
|
||||
|
||||
projectiletype = /obj/item/projectile/arc/blue_energy
|
||||
projectilesound = 'modular_chomp/sound/weapons/plasmaNEW.ogg'
|
||||
projectilesound = 'sound/weapons/plasmaNEW.ogg'
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/ranged/kiting/cyber_horror
|
||||
|
||||
armor = list(melee = -30, bullet = 10, laser = 10, bio = 100, rad = 100)
|
||||
|
||||
/datum/say_list/cyber_horror/grey
|
||||
threaten_sound = 'modular_chomp/sound/mob/robots/Cyber_Horror_Grey.ogg'
|
||||
threaten_sound = 'sound/mob/robots/Cyber_Horror_Grey.ogg'
|
||||
|
||||
|
||||
//Direct Ranged Mob
|
||||
@@ -332,13 +332,13 @@
|
||||
|
||||
base_attack_cooldown = 4
|
||||
projectiletype = /obj/item/projectile/beam/drone
|
||||
projectilesound = 'modular_chomp/sound/weapons/SmallLaser.ogg'
|
||||
projectilesound = 'sound/weapons/SmallLaser.ogg'
|
||||
movement_sound = 'sound/effects/servostep.ogg'
|
||||
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/ranged/kiting/threatening
|
||||
|
||||
/datum/say_list/cyber_horror/corgi
|
||||
threaten_sound = 'modular_chomp/sound/mob/robots/Cyber_Horror_Corgi.ogg'
|
||||
threaten_sound = 'sound/mob/robots/Cyber_Horror_Corgi.ogg'
|
||||
|
||||
|
||||
//Cats and mayhem
|
||||
@@ -375,7 +375,7 @@
|
||||
var/poison_type = REAGENT_ID_MINDBREAKER
|
||||
|
||||
/datum/say_list/cyber_horror/cat
|
||||
threaten_sound = 'modular_chomp/sound/mob/robots/Cyber_Horror_Cat.ogg'
|
||||
threaten_sound = 'sound/mob/robots/Cyber_Horror_Cat.ogg'
|
||||
|
||||
/mob/living/simple_mob/mechanical/cyber_horror/cat_cyber_horror/apply_melee_effects(var/atom/A)
|
||||
if(isliving(A))
|
||||
|
||||
@@ -62,8 +62,8 @@
|
||||
var/list/construct_spells = list()
|
||||
// var/do_glow = TRUE
|
||||
|
||||
can_be_drop_prey = FALSE //CHOMP Add
|
||||
can_pain_emote = FALSE // CHOMPEdit: Can't feel pain
|
||||
can_be_drop_prey = FALSE
|
||||
can_pain_emote = FALSE
|
||||
|
||||
/mob/living/simple_mob/construct/place_spell_in_hand(var/path)
|
||||
if(!path || !ispath(path))
|
||||
|
||||
@@ -29,6 +29,9 @@
|
||||
speak_emote = list("gibbers")
|
||||
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/melee
|
||||
can_be_drop_prey = FALSE
|
||||
can_pain_emote = FALSE
|
||||
|
||||
|
||||
can_be_drop_prey = FALSE //CHOMP Add
|
||||
can_pain_emote = FALSE // CHOMPEdit: Can't feel pain
|
||||
|
||||
@@ -42,8 +42,8 @@
|
||||
max_n2 = 0
|
||||
minbodytemp = 0
|
||||
|
||||
can_be_drop_prey = FALSE //CHOMP Add
|
||||
can_pain_emote = FALSE // CHOMPEdit: Can't feel pain
|
||||
can_be_drop_prey = FALSE
|
||||
can_pain_emote = FALSE
|
||||
|
||||
/mob/living/simple_mob/faithless/Process_Spacemove(var/check_drift = 0)
|
||||
return 1
|
||||
|
||||
@@ -41,8 +41,8 @@
|
||||
|
||||
loot_list = list(/obj/item/nif/glitch = 100)
|
||||
|
||||
can_be_drop_prey = FALSE //CHOMP Add
|
||||
can_pain_emote = FALSE // CHOMPEdit: Can't feel pain
|
||||
can_be_drop_prey = FALSE
|
||||
can_pain_emote = FALSE
|
||||
|
||||
/obj/item/projectile/energy/slow_orb
|
||||
name = "TROJAN"
|
||||
@@ -318,7 +318,7 @@
|
||||
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/ranged/aggressive/bossmob_glitch_fake
|
||||
|
||||
can_pain_emote = FALSE // CHOMPEdit: Can't feel pain
|
||||
can_pain_emote = FALSE
|
||||
|
||||
/mob/living/simple_mob/glitch_boss_fake/strong
|
||||
maxHealth = 100
|
||||
|
||||
@@ -29,8 +29,8 @@
|
||||
meat_type = /obj/item/reagent_containers/food/snacks/tomatomeat
|
||||
meat_amount = 4
|
||||
|
||||
can_be_drop_prey = FALSE //CHOMP Add
|
||||
can_pain_emote = FALSE // CHOMPEdit: Can't feel pain and shouldn't take damage anyways, but, sanity
|
||||
can_be_drop_prey = FALSE
|
||||
can_pain_emote = FALSE
|
||||
|
||||
/decl/mob_organ_names/tomato
|
||||
hit_zones = list("flesh", "leaf", "mouth")
|
||||
|
||||
@@ -32,8 +32,8 @@
|
||||
|
||||
pixel_x = -16
|
||||
|
||||
can_be_drop_prey = FALSE //CHOMP Add
|
||||
can_pain_emote = FALSE // CHOMPEdit: Can't feel pain and shouldn't take damage anyways, but, sanity
|
||||
can_be_drop_prey = FALSE
|
||||
can_pain_emote = FALSE // Can't feel pain and shouldn't take damage anyways, but, sanity
|
||||
|
||||
/mob/living/simple_mob/animal/space/tree/apply_melee_effects(var/atom/A)
|
||||
if(isliving(A))
|
||||
|
||||
@@ -51,6 +51,9 @@
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/passive
|
||||
|
||||
allow_mind_transfer = TRUE
|
||||
pain_emote_1p = list("yelp", "whine", "bark", "growl")
|
||||
pain_emote_3p = list("yelps", "whines", "barks", "growls")
|
||||
species_sounds = "Vulpine"
|
||||
|
||||
// CHOMPAdd: Start :c
|
||||
pain_emote_1p = list("yelp", "whine", "bark", "growl")
|
||||
|
||||
@@ -39,16 +39,7 @@
|
||||
can_buckle = TRUE
|
||||
buckle_movable = TRUE
|
||||
buckle_lying = FALSE
|
||||
|
||||
can_be_drop_prey = FALSE //CHOMP Add
|
||||
// CHOMPAdd: :c
|
||||
species_sounds = "Canine"
|
||||
pain_emote_1p = list("yelp", "whine", "bark", "growl")
|
||||
pain_emote_3p = list("yelps", "whines", "barks", "growls")
|
||||
// CHOMPAdd End
|
||||
|
||||
/mob/living/simple_mob/vore/greatwolf
|
||||
|
||||
max_tox = 0 // for virgo3b survivability
|
||||
vore_bump_chance = 25
|
||||
vore_digest_chance = 5
|
||||
vore_escape_chance = 5
|
||||
@@ -62,6 +53,10 @@
|
||||
vore_default_mode = DM_HEAL
|
||||
vore_pounce_maxhealth = 125
|
||||
vore_bump_emote = "tries to snap up"
|
||||
can_be_drop_prey = FALSE
|
||||
species_sounds = "Canine"
|
||||
pain_emote_1p = list("yelp", "whine", "bark", "growl")
|
||||
pain_emote_3p = list("yelps", "whines", "barks", "growls")
|
||||
|
||||
/mob/living/simple_mob/vore/greatwolf/black
|
||||
name = "great black wolf"
|
||||
|
||||
@@ -49,12 +49,10 @@
|
||||
|
||||
allow_mind_transfer = TRUE
|
||||
|
||||
// CHOMPAdd Start :c
|
||||
can_be_drop_prey = FALSE
|
||||
species_sounds = "Canine"
|
||||
pain_emote_1p = list("yelp", "whine", "bark", "growl")
|
||||
pain_emote_3p = list("yelps", "whines", "barks", "growls")
|
||||
// CHOMPAdd End
|
||||
|
||||
// Activate Noms!
|
||||
|
||||
|
||||
@@ -43,14 +43,10 @@
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/melee/evasive
|
||||
|
||||
allow_mind_transfer = TRUE
|
||||
|
||||
// CHOMPAdd Start :c
|
||||
can_be_drop_prey = FALSE
|
||||
species_sounds = "Feline"
|
||||
pain_emote_1p = list("yowl", "growl")
|
||||
pain_emote_3p = list("yowls", "growls")
|
||||
// CHOMPAdd End
|
||||
|
||||
// Activate Noms!
|
||||
/mob/living/simple_mob/vore/aggressive/panther
|
||||
vore_active = 1
|
||||
|
||||
@@ -35,19 +35,13 @@
|
||||
|
||||
allow_mind_transfer = TRUE
|
||||
|
||||
// CHOMPAdd Start :c
|
||||
can_be_drop_prey = FALSE
|
||||
species_sounds = "Canine"
|
||||
pain_emote_1p = list("yelp", "whine", "bark", "growl")
|
||||
pain_emote_3p = list("yelps", "whines", "barks", "growls")
|
||||
// CHOMPAdd End
|
||||
|
||||
// Activate Noms!
|
||||
/mob/living/simple_mob/vore/wolf
|
||||
vore_active = 1
|
||||
vore_icons = SA_ICON_LIVING
|
||||
|
||||
/mob/living/simple_mob/animal/wolf/init_vore() // CHOMPEdit - Allow for customizing bellies on vorecritters
|
||||
/mob/living/simple_mob/animal/wolf/init_vore()
|
||||
if(!voremob_loaded)
|
||||
return
|
||||
if(LAZYLEN(vore_organs))
|
||||
@@ -55,11 +49,11 @@
|
||||
. = ..()
|
||||
|
||||
var/obj/belly/B = vore_selected
|
||||
B.vore_sound = "Tauric Swallow" // CHOMPedit - Fancy Vore Sounds
|
||||
B.release_sound = "Pred Escape" // CHOMPedit - Fancy Vore Sounds
|
||||
B.fancy_vore = 1 // CHOMPedit - Fancy Vore Sounds
|
||||
B.belly_fullscreen_color = "#c47cb4" // CHOMPedit - Belly Fullscreen
|
||||
B.belly_fullscreen = "anim_belly" // CHOMPedit - Belly Fullscreen
|
||||
B.vore_sound = "Tauric Swallow"
|
||||
B.release_sound = "Pred Escape"
|
||||
B.fancy_vore = 1
|
||||
B.belly_fullscreen_color = "#c47cb4"
|
||||
B.belly_fullscreen = "anim_belly"
|
||||
|
||||
// Space edition, stronger and bitier
|
||||
/mob/living/simple_mob/vore/wolf/space
|
||||
|
||||
@@ -23,15 +23,10 @@
|
||||
|
||||
say_list_type = /datum/say_list/wolfgirl
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/retaliate/cooperative/wolfgirl
|
||||
|
||||
can_be_drop_prey = FALSE //CHOMP Add
|
||||
// CHOMPAdd: :c
|
||||
can_be_drop_prey = FALSE
|
||||
species_sounds = "Canine"
|
||||
pain_emote_1p = list("yelp", "whine", "bark", "growl")
|
||||
pain_emote_3p = list("yelps", "whines", "barks", "growls")
|
||||
// CHOMPAdd End
|
||||
|
||||
|
||||
// Activate Noms!
|
||||
/mob/living/simple_mob/vore/wolfgirl
|
||||
vore_active = 1
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
/mob/living/voice
|
||||
no_vore = TRUE
|
||||
can_pain_emote = FALSE // CHOMPEdit: Sanity/safety
|
||||
can_pain_emote = FALSE
|
||||
|
||||
@@ -62,6 +62,8 @@
|
||||
if(!vis_enabled)
|
||||
vis_enabled = list()
|
||||
client.screen += plane_holder.plane_masters
|
||||
if(GLOB.global_vantag_hud)
|
||||
vantag_hud = TRUE
|
||||
recalculate_vis()
|
||||
|
||||
// AO support
|
||||
@@ -88,3 +90,5 @@
|
||||
client.init_verbs()
|
||||
SEND_SIGNAL(src, COMSIG_MOB_CLIENT_LOGIN, client)
|
||||
SEND_SIGNAL(client, COMSIG_CLIENT_MOB_LOGIN, src)
|
||||
|
||||
set_listening(LISTENING_PLAYER)
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
log_access_out(src)
|
||||
unset_machine()
|
||||
if(GLOB.admin_datums[src.ckey])
|
||||
message_admins("Staff logout: [key_name(src)]") // CHOMPEdit: Admin logout notice displays no matter what//Edit2: STAFF
|
||||
message_admins("Staff logout: [key_name(src)]") // Staff logout notice displays no matter what
|
||||
if (ticker && ticker.current_state == GAME_STATE_PLAYING) //Only report this stuff if we are currently playing.
|
||||
var/admins_number = GLOB.admins.len
|
||||
|
||||
|
||||
@@ -80,7 +80,7 @@
|
||||
. = ..()
|
||||
//return QDEL_HINT_HARDDEL_NOW Just keep track of mob references. They delete SO much faster now.
|
||||
|
||||
/mob/show_message(msg, type, alt, alt_type)//Message, type of message (1 or 2), alternative message, alt message type (1 or 2) //CHOMPEdit show_message() moved to /atom/movable
|
||||
/mob/show_message(msg, type, alt, alt_type)
|
||||
|
||||
if(!client && !teleop) return
|
||||
|
||||
@@ -480,7 +480,7 @@
|
||||
|
||||
|
||||
targets += observe_list_format(GLOB.nuke_disks)
|
||||
targets += observe_list_format(GLOB.all_singularities) //CHOMP Edit
|
||||
targets += observe_list_format(GLOB.all_singularities)
|
||||
targets += getmobs()
|
||||
targets += observe_list_format(sortAtom(mechas_list))
|
||||
targets += observe_list_format(SSshuttles.ships)
|
||||
@@ -563,7 +563,7 @@
|
||||
to_chat(src, span_warning("It won't budge!"))
|
||||
return
|
||||
|
||||
if(lying) // CHOMPAdd - No pulling while we crawl.
|
||||
if(lying)
|
||||
return
|
||||
|
||||
var/mob/M = AM
|
||||
@@ -1138,19 +1138,6 @@
|
||||
in_throw_mode = 1
|
||||
if(throw_icon && !issilicon(src)) // Silicon use this for something else. Do not overwrite their HUD icon
|
||||
throw_icon.icon_state = "act_throw_on"
|
||||
/* CHOMPedit removal begin
|
||||
/mob/verb/spacebar_throw_on()
|
||||
set name = ".throwon"
|
||||
set hidden = TRUE
|
||||
set instant = TRUE
|
||||
throw_mode_on()
|
||||
|
||||
/mob/verb/spacebar_throw_off()
|
||||
set name = ".throwoff"
|
||||
set hidden = TRUE
|
||||
set instant = TRUE
|
||||
throw_mode_off()
|
||||
ChompEdit removal end*/
|
||||
/mob/proc/isSynthetic()
|
||||
return 0
|
||||
|
||||
@@ -1175,7 +1162,6 @@ ChompEdit removal end*/
|
||||
var/mob/exploited = exploit_for.resolve()
|
||||
exploited?.exploit_addons -= src
|
||||
exploit_for = null
|
||||
// CHOMPEdit End
|
||||
. = ..()
|
||||
|
||||
|
||||
|
||||
@@ -11,13 +11,11 @@
|
||||
if(locate(/obj/item/grab) in src)
|
||||
. += 5
|
||||
|
||||
// CHOMPAdd Start - When crawling, move slow.
|
||||
if(lying)
|
||||
if(weakened >= 1)
|
||||
. += 14 // Very slow when weakened.
|
||||
else
|
||||
. += 8
|
||||
// CHOMPAdd End
|
||||
|
||||
// Movespeed delay based on movement mode
|
||||
switch(m_intent)
|
||||
@@ -252,7 +250,7 @@
|
||||
to_chat(src, span_blue("You're pinned to a wall by [my_mob.pinned[1]]!"))
|
||||
return 0
|
||||
|
||||
var/old_delay = mob.next_move //CHOMPEdit momentum
|
||||
var/old_delay = mob.next_move
|
||||
|
||||
if(istype(my_mob.buckled, /obj/vehicle) || ismob(my_mob.buckled))
|
||||
//manually set move_delay for vehicles so we don't inherit any mob movement penalties
|
||||
@@ -308,7 +306,6 @@
|
||||
direct = turn(direct, pick(90, -90))
|
||||
n = get_step(my_mob, direct)
|
||||
|
||||
//CHOMP Removal moved downwards
|
||||
|
||||
if(istype(my_mob.pulledby, /obj/structure/bed/chair/wheelchair))
|
||||
. = my_mob.pulledby.relaymove(my_mob, direct)
|
||||
@@ -320,16 +317,15 @@
|
||||
//CHOMPEdit Begin
|
||||
// If we ended up moving diagonally, increase delay.
|
||||
if((direct & (direct - 1)) && mob.loc == n)
|
||||
total_delay *= SQRT_2 //CHOMPEDIT
|
||||
total_delay *= SQRT_2
|
||||
|
||||
//total_delay = DS2NEARESTTICK(total_delay) //Rounded to the next tick in equivalent ds
|
||||
if(mob.last_move_time > (world.time - total_delay * 1.25))
|
||||
mob.next_move = DS2NEARESTTICK(old_delay + total_delay)
|
||||
else
|
||||
mob.next_move = DS2NEARESTTICK(world.time + total_delay)
|
||||
//CHOMPEdit End
|
||||
|
||||
if(!isliving(my_mob)) //CHOMPAdd
|
||||
if(!isliving(my_mob))
|
||||
moving = 0
|
||||
return
|
||||
|
||||
@@ -368,7 +364,7 @@
|
||||
|
||||
// We're not in the middle of a move anymore
|
||||
moving = 0
|
||||
mob.last_move_time = world.time //CHOMPEdit
|
||||
mob.last_move_time = world.time
|
||||
|
||||
/mob/proc/SelfMove(turf/n, direct, movetime)
|
||||
return Move(n, direct, movetime)
|
||||
@@ -378,16 +374,14 @@
|
||||
//Important to note: world.time is always in deciseconds. Higher tickrates mean more subdivisions of world.time (20fps = 0.5, 40fps = 0.25)
|
||||
/client
|
||||
var/is_leaving_belly = FALSE
|
||||
var/incorporeal_speed = 0.5 // CHOMPAdd
|
||||
var/incorporeal_speed = 0.5
|
||||
|
||||
//ChompEDIT START
|
||||
/client/verb/set_incorporeal_speed()
|
||||
set category = "OOC.Game Settings"
|
||||
set name = "Set Incorporeal Speed"
|
||||
|
||||
var/input = tgui_input_number(usr, "Set an incorporeal movement delay between 0 (fastest) and 5 (slowest)", "Incorporeal movement speed", (0.5/world.tick_lag), 5, 0)
|
||||
incorporeal_speed = input * world.tick_lag
|
||||
//ChompEDIT End
|
||||
|
||||
///Process_Incorpmove
|
||||
///Called by client/Move()
|
||||
@@ -403,13 +397,11 @@
|
||||
is_leaving_belly = FALSE
|
||||
var/turf/mobloc = get_turf(mob)
|
||||
|
||||
//ChompEDIT START
|
||||
if(incorporeal_speed)
|
||||
var/mob/my_mob = mob
|
||||
if(!my_mob.checkMoveCooldown()) //Only bother with speed if it isn't 0
|
||||
return
|
||||
my_mob.setMoveCooldown(incorporeal_speed)
|
||||
//ChompEDIT END
|
||||
|
||||
switch(mob.incorporeal_move)
|
||||
if(1)
|
||||
@@ -507,16 +499,6 @@
|
||||
inertia_dir = 0
|
||||
return 1
|
||||
|
||||
/* CHOMPedit: Nuking slipping.
|
||||
//Check to see if we slipped
|
||||
if(prob(Process_Spaceslipping(5)) && !buckled)
|
||||
to_chat(src, span_boldnotice("You slipped!"))
|
||||
inertia_dir = last_move
|
||||
step(src, src.inertia_dir) // Not using Move for smooth glide here because this is a 'slip' so should be sudden.
|
||||
return 0
|
||||
//If not then we can reset inertia and move
|
||||
*/// CHOMPedit end.
|
||||
|
||||
/mob/proc/Check_Dense_Object() //checks for anything to push off in the vicinity. also handles magboots on gravity-less floors tiles
|
||||
|
||||
var/dense_object = 0
|
||||
@@ -558,17 +540,6 @@
|
||||
/mob/proc/Check_Shoegrip()
|
||||
return 0
|
||||
|
||||
/* CHOMPedit: Nuking slipping.
|
||||
/mob/proc/Process_Spaceslipping(var/prob_slip = 5)
|
||||
//Setup slipage
|
||||
//If knocked out we might just hit it and stop. This makes it possible to get dead bodies and such.
|
||||
if(stat)
|
||||
prob_slip = 0 // Changing this to zero to make it line up with the comment.
|
||||
|
||||
prob_slip = round(prob_slip)
|
||||
return(prob_slip)
|
||||
*/// CHOMPedit end.
|
||||
|
||||
/mob/proc/mob_get_gravity(turf/T)
|
||||
return get_gravity(src, T)
|
||||
|
||||
|
||||
@@ -119,7 +119,7 @@
|
||||
else
|
||||
to_chat(user, "You press the power button and start up \the [src]")
|
||||
enable_computer(user)
|
||||
playsound(src, 'modular_chomp/sound/machines/console_power_on.ogg', 60, 1, volume_channel = VOLUME_CHANNEL_MACHINERY)
|
||||
playsound(src, 'sound/machines/console_power_on.ogg', 60, 1, volume_channel = VOLUME_CHANNEL_MACHINERY)
|
||||
|
||||
else // Unpowered
|
||||
if(issynth)
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
item_state = "multicannon"
|
||||
slot_flags = SLOT_BACK
|
||||
recoil = FALSE
|
||||
fire_sound = 'modular_chomp/sound/weapons/energy/laser_strong.ogg' // CHOMPedit: New firesound, overwrites the sfx from the macrobatteries.
|
||||
fire_sound = 'sound/weapons/energy/laser_strong.ogg' // CHOMPedit: New firesound, overwrites the sfx from the macrobatteries.
|
||||
|
||||
/obj/item/gun/projectile/multi_cannon/update_icon()
|
||||
. = ..()
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
item_state = "gauss"
|
||||
desc = "An older model of the experimental Gauss weapon series produced by Hephaestus industries. As it is unable to pass through glass, it was phased out during the mars-sol conflict due to the invention of laser carbines.Nevertheless, it still packs a punch and is easy to maintain, making it a favorite amongst sol privateers."
|
||||
force = 5
|
||||
fire_sound = 'modular_chomp/sound/weapons/laser4.ogg' //lighter damage sound //CHMOMPEdit - Sound moved to modular files to prevent conflict with an upstream laser sound file
|
||||
fire_sound = 'sound/weapons/laser4.ogg' //lighter damage sound //CHMOMPEdit - Sound moved to modular files to prevent conflict with an upstream laser sound file
|
||||
slot_flags = SLOT_BELT|SLOT_HOLSTER
|
||||
w_class = 2
|
||||
projectile_type = /obj/item/projectile/energy/gauss
|
||||
|
||||
@@ -76,7 +76,7 @@ only use the hollow_point and armor_penetration values.*/
|
||||
velocity = 360
|
||||
|
||||
/obj/item/projectile/bullet/a57
|
||||
fire_sound = 'modular_chomp/sound/weapons/ballistics/smg_heavy.ogg'
|
||||
fire_sound = 'sound/weapons/ballistics/smg_heavy.ogg'
|
||||
diam = 5.7
|
||||
grains = 31
|
||||
velocity = 716
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
/obj/item/projectile/energy/phase
|
||||
name = "phase wave"
|
||||
icon_state = "phase"
|
||||
fire_sound = 'modular_chomp/sound/weapons/phase_new/phasecarbine.ogg' //CHOMPedit - New sounds.
|
||||
fire_sound = 'sound/weapons/phase_new/phasecarbine.ogg' //CHOMPedit - New sounds.
|
||||
range = 13
|
||||
damage = 5
|
||||
SA_bonus_damage = 45
|
||||
@@ -36,14 +36,14 @@
|
||||
hud_state = "laser_heat"
|
||||
|
||||
/obj/item/projectile/energy/phase/light
|
||||
fire_sound = 'modular_chomp/sound/weapons/phase_new/phasepistol.ogg' //CHOMPedit - New sounds.
|
||||
fire_sound = 'sound/weapons/phase_new/phasepistol.ogg' //CHOMPedit - New sounds.
|
||||
range = 11
|
||||
SA_bonus_damage = 35
|
||||
armor_penetration = -50
|
||||
hud_state = "laser_heat"
|
||||
|
||||
/obj/item/projectile/energy/phase/heavy
|
||||
fire_sound = 'modular_chomp/sound/weapons/phase_new/phaserifle.ogg' //CHOMPedit - New sounds.
|
||||
fire_sound = 'sound/weapons/phase_new/phaserifle.ogg' //CHOMPedit - New sounds.
|
||||
range = 16 //Chompedit This range was not great
|
||||
damage = 10
|
||||
SA_bonus_damage = 50
|
||||
@@ -51,7 +51,7 @@
|
||||
hud_state = "laser_heat"
|
||||
|
||||
/obj/item/projectile/energy/phase/heavy/cannon
|
||||
fire_sound = 'modular_chomp/sound/weapons/phase_new/phasecannon.ogg' //CHOMPedit - New sounds.
|
||||
fire_sound = 'sound/weapons/phase_new/phasecannon.ogg' //CHOMPedit - New sounds.
|
||||
range = 20 //Chompedit This range was mediocre, but not worth a cannon.
|
||||
damage = 15
|
||||
SA_bonus_damage = 60
|
||||
|
||||
@@ -542,14 +542,12 @@
|
||||
generate_data(ui.user, owner)
|
||||
changed_hook(APPEARANCECHANGER_CHANGED_RACE)
|
||||
return TRUE
|
||||
// CHOMPEnable Start
|
||||
if("species_sound")
|
||||
var/list/possible_species_sound_types = species_sound_map
|
||||
var/choice = tgui_input_list(ui.user, "Which set of sounds would you like to use? (Cough, Sneeze, Scream, Pain, Gasp, Death)", "Species Sounds", possible_species_sound_types)
|
||||
if(choice && can_change(owner, APPEARANCE_RACE))
|
||||
owner.species.species_sounds = choice
|
||||
return TRUE
|
||||
// CHOMPEnable End
|
||||
if("flavor_text")
|
||||
var/select_key = params["target"]
|
||||
if(select_key && can_change(owner, APPEARANCE_RACE))
|
||||
|
||||
@@ -213,7 +213,7 @@
|
||||
if(on)
|
||||
return FALSE
|
||||
on = 1
|
||||
playsound(src, 'modular_chomp/sound/effects/vehicle/ignition_car.ogg', 60, 2, -2) //CHOMPedit: New sound effects.
|
||||
playsound(src, 'sound/effects/vehicle/ignition_car.ogg', 60, 2, -2) //CHOMPedit: New sound effects.
|
||||
soundloop.start()
|
||||
set_light(initial(light_range))
|
||||
update_icon()
|
||||
@@ -225,7 +225,7 @@
|
||||
if(!mechanical)
|
||||
return FALSE
|
||||
on = 0
|
||||
playsound(src, 'modular_chomp/sound/effects/vehicle/engine_off.ogg', 60, 2, -2) //CHOMPedit: New sound effects.
|
||||
playsound(src, 'sound/effects/vehicle/engine_off.ogg', 60, 2, -2) //CHOMPedit: New sound effects.
|
||||
soundloop.stop()
|
||||
set_light(0)
|
||||
update_icon()
|
||||
@@ -243,7 +243,7 @@
|
||||
|
||||
/obj/vehicle/proc/explode()
|
||||
src.visible_message(span_bolddanger("[src] blows apart!"), 1)
|
||||
playsound(src, 'modular_chomp/sound/effects/explosions/vehicleexplosion.ogg', 100, 8, 3) //CHOMPedit: New sound effects.
|
||||
playsound(src, 'sound/effects/explosions/vehicleexplosion.ogg', 100, 8, 3) //CHOMPedit: New sound effects.
|
||||
var/turf/Tsec = get_turf(src)
|
||||
|
||||
//stuns people who are thrown off a train that has been blown up
|
||||
@@ -442,7 +442,7 @@
|
||||
//----------------------------
|
||||
|
||||
/datum/looping_sound/idle_carengine
|
||||
mid_sounds = 'modular_chomp/sound/effects/vehicle/engine_loop.ogg'
|
||||
mid_sounds = 'sound/effects/vehicle/engine_loop.ogg'
|
||||
mid_length = 2.60 SECONDS
|
||||
chance = 100
|
||||
volume = 10
|
||||
|
||||
@@ -1593,14 +1593,10 @@
|
||||
playsound(src, soundfile, vol = 100, vary = 1, falloff = VORE_SOUND_FALLOFF, preference = /datum/preference/toggle/eating_noises)
|
||||
|
||||
/mob/living/proc/vore_bellyrub(var/mob/living/T in view(1,src))
|
||||
set name = "Give Bellyrubs"
|
||||
set category = "Abilities.General"
|
||||
set desc = "Provide bellyrubs to either yourself or another mob with a belly."
|
||||
|
||||
if(!T)
|
||||
T = tgui_input_list(src, "Choose whose belly to rub", "Rub Belly?", mobs_in_view(1,src))
|
||||
if(!T)
|
||||
return FALSE
|
||||
return FALSE
|
||||
|
||||
if(!(T in view(1,src)))
|
||||
return FALSE
|
||||
if(T.vore_selected)
|
||||
|
||||
@@ -32,7 +32,6 @@
|
||||
return
|
||||
*/
|
||||
feed_grabbed_to_self(src,T)
|
||||
//update_icon() CHOMPEdit
|
||||
|
||||
/mob/living/simple_mob/perform_the_nom(mob/living/user, mob/living/prey, mob/living/pred, obj/belly/belly, delay_time)
|
||||
if(vore_active && !voremob_loaded && pred == src) //Only init your own bellies.
|
||||
|
||||
@@ -479,7 +479,7 @@
|
||||
|
||||
/obj/item/perfect_tele/magic/attack_self(mob/user, var/radial_menu_anchor = src)
|
||||
if(loc_network)
|
||||
for(var/obj/item/perfect_tele_beacon/stationary/nb in GLOB.premade_tele_beacons) //ChompEDIT - GLOB
|
||||
for(var/obj/item/perfect_tele_beacon/stationary/nb in GLOB.premade_tele_beacons)
|
||||
if(nb.tele_network == loc_network)
|
||||
beacons[nb.tele_name] = nb
|
||||
loc_network = null //Consumed
|
||||
|
||||
@@ -1,15 +0,0 @@
|
||||
GLOBAL_VAR_INIT(global_vantag_hud, 0)
|
||||
|
||||
/client/proc/toggle_vantag_hud_global(mob/target as mob)
|
||||
set category = "Fun.Event Kit"
|
||||
set name = "Toggle Global Event HUD"
|
||||
set desc = "Give everyone the Event HUD."
|
||||
|
||||
GLOB.global_vantag_hud = !GLOB.global_vantag_hud
|
||||
if(GLOB.global_vantag_hud)
|
||||
for(var/mob/living/L in living_mob_list)
|
||||
if(L.ckey)
|
||||
L.vantag_hud = TRUE
|
||||
L.recalculate_vis()
|
||||
|
||||
to_chat(src, span_warning("Global Event HUD has been turned [GLOB.global_vantag_hud ? "on" : "off"]."))
|
||||
@@ -22,13 +22,13 @@
|
||||
/obj/item/clothing/shoes/mech_shoes/heavy
|
||||
name = "heavy mech shoes"
|
||||
desc = "Thud thud, but heavy."
|
||||
squeak_sound = list('modular_chomp/sound/mob/footstep_large.ogg'=1,'modular_chomp/sound/mob/footstep_large2.ogg'=1)
|
||||
squeak_sound = list('sound/mob/footstep_large.ogg'=1,'sound/mob/footstep_large2.ogg'=1)
|
||||
step_volume_mod = 4
|
||||
|
||||
/obj/item/clothing/shoes/mech_shoes/mister_x
|
||||
name = "concealed extra large jackboots"
|
||||
desc = "Lets hope there's no evil in this residence."
|
||||
squeak_sound = list('modular_chomp/sound/mob/heavy_boots.ogg'=1)
|
||||
squeak_sound = list('sound/mob/heavy_boots.ogg'=1)
|
||||
step_volume_mod = 5
|
||||
|
||||
/obj/item/clothing/shoes/mech_shoes/mister_x/visible
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/decl/emote/audible/wheeze
|
||||
emote_sound = 'modular_chomp/sound/voice/wheeze.ogg'
|
||||
emote_sound = 'sound/voice/wheeze.ogg'
|
||||
|
||||
/decl/emote/audible/prbt2
|
||||
key = "prbt2"
|
||||
@@ -33,7 +33,7 @@
|
||||
emote_message_3p = "mgeows."
|
||||
emote_message_1p_target = "You mgeow at TARGET."
|
||||
emote_message_3p_target = "mgeow at TARGET."
|
||||
emote_sound = 'modular_chomp/sound/voice/mgeow.ogg'
|
||||
emote_sound = 'sound/voice/mgeow.ogg'
|
||||
|
||||
/decl/emote/audible/xenogrowl
|
||||
key = "xenogrowl"
|
||||
@@ -41,7 +41,7 @@
|
||||
emote_message_3p = "growls unnervingly."
|
||||
emote_message_1p_target = "You growl unnervingly at TARGET."
|
||||
emote_message_3p_target = "growls unnervingly at TARGET."
|
||||
emote_sound = 'modular_chomp/sound/voice/emotes/xenogrowl.ogg'
|
||||
emote_sound = 'sound/voice/emotes/xenogrowl.ogg'
|
||||
|
||||
/decl/emote/audible/xenohiss
|
||||
key = "xenohiss"
|
||||
@@ -49,7 +49,7 @@
|
||||
emote_message_3p = "hisses unnervingly."
|
||||
emote_message_1p_target = "You hiss unnervingly at TARGET."
|
||||
emote_message_3p_target = "hisses unnervingly at TARGET."
|
||||
emote_sound = 'modular_chomp/sound/voice/emotes/xenohiss.ogg'
|
||||
emote_sound = 'sound/voice/emotes/xenohiss.ogg'
|
||||
|
||||
/decl/emote/audible/xenopurr
|
||||
key = "xenopurr"
|
||||
@@ -57,7 +57,7 @@
|
||||
emote_message_3p = "purrs unnervingly."
|
||||
emote_message_1p_target = "You purr unnervingly at TARGET."
|
||||
emote_message_3p_target = "purrs unnervingly at TARGET."
|
||||
emote_sound = 'modular_chomp/sound/voice/emotes/xenopurr.ogg'
|
||||
emote_sound = 'sound/voice/emotes/xenopurr.ogg'
|
||||
|
||||
/decl/emote/audible/gwah
|
||||
key = "gwah"
|
||||
@@ -65,7 +65,7 @@
|
||||
emote_message_3p = "gwahs."
|
||||
emote_message_1p_target = "You gwah at TARGET."
|
||||
emote_message_3p_target = "gwahs at TARGET."
|
||||
emote_sound = 'modular_chomp/sound/voice/emotes/gwah.ogg'
|
||||
emote_sound = 'sound/voice/emotes/gwah.ogg'
|
||||
|
||||
/decl/emote/audible/caw
|
||||
key = "caw"
|
||||
@@ -73,7 +73,7 @@
|
||||
emote_message_3p = "caws!"
|
||||
emote_message_1p_target = "You caw at TARGET."
|
||||
emote_message_3p_target = "caws at TARGET."
|
||||
emote_sound = 'modular_chomp/sound/voice/emotes/caw.ogg' // Copyright Sampling+ 1.0 Vixuxx (freesound.org) for the source audio.
|
||||
emote_sound = 'sound/voice/emotes/caw.ogg' // Copyright Sampling+ 1.0 Vixuxx (freesound.org) for the source audio.
|
||||
|
||||
/decl/emote/audible/wawa
|
||||
key = "wawa"
|
||||
@@ -81,7 +81,7 @@
|
||||
emote_message_3p = "wawas."
|
||||
emote_message_1p_target = "You wawa at TARGET."
|
||||
emote_message_3p_target = "wawas at TARGET."
|
||||
emote_sound = 'modular_chomp/sound/voice/emotes/wawa.ogg'
|
||||
emote_sound = 'sound/voice/emotes/wawa.ogg'
|
||||
|
||||
/decl/emote/audible/scientist //placeholder, do not use in anything
|
||||
key = "hlscientist"
|
||||
@@ -94,11 +94,11 @@
|
||||
emote_message_1p_target = "You scream at TARGET."
|
||||
emote_message_3p_target = "screams at TARGET."
|
||||
emote_sound = list (
|
||||
'modular_chomp/sound/voice/scream/scientist/scream01.ogg',
|
||||
'modular_chomp/sound/voice/scream/scientist/scream02.ogg',
|
||||
'modular_chomp/sound/voice/scream/scientist/scream06.ogg',
|
||||
'modular_chomp/sound/voice/scream/scientist/scream08.ogg',
|
||||
'modular_chomp/sound/voice/scream/scientist/scream25.ogg',
|
||||
'sound/voice/scream/scientist/scream01.ogg',
|
||||
'sound/voice/scream/scientist/scream02.ogg',
|
||||
'sound/voice/scream/scientist/scream06.ogg',
|
||||
'sound/voice/scream/scientist/scream08.ogg',
|
||||
'sound/voice/scream/scientist/scream25.ogg',
|
||||
)
|
||||
|
||||
/decl/emote/audible/scientist/pain
|
||||
@@ -108,9 +108,9 @@
|
||||
emote_message_1p_target = "You shout in pain at TARGET."
|
||||
emote_message_3p_target = "shouts in pain at TARGET."
|
||||
emote_sound = list (
|
||||
'modular_chomp/sound/voice/pain/scientist/sci_pain1.ogg',
|
||||
'modular_chomp/sound/voice/pain/scientist/sci_pain4.ogg',
|
||||
'modular_chomp/sound/voice/pain/scientist/sci_pain5.ogg',
|
||||
'sound/voice/pain/scientist/sci_pain1.ogg',
|
||||
'sound/voice/pain/scientist/sci_pain4.ogg',
|
||||
'sound/voice/pain/scientist/sci_pain5.ogg',
|
||||
)
|
||||
|
||||
/decl/emote/audible/scientist/get_emote_sound(var/atom/user)
|
||||
@@ -124,9 +124,9 @@
|
||||
emote_message_1p_target = "You yip at TARGET!"
|
||||
emote_message_3p_target = "yips at TARGET!"
|
||||
emote_sound = list (
|
||||
'modular_chomp/sound/voice/emotes/yip1.ogg',
|
||||
'modular_chomp/sound/voice/emotes/yip2.ogg',
|
||||
'modular_chomp/sound/voice/emotes/yip3.ogg',
|
||||
'sound/voice/emotes/yip1.ogg',
|
||||
'sound/voice/emotes/yip2.ogg',
|
||||
'sound/voice/emotes/yip3.ogg',
|
||||
)
|
||||
|
||||
/decl/emote/audible/squeal // Sound sourced from: https://github.com/Baystation12/Baystation12/blob/bd2f0bd5e38cf2bb0888e3ae879708bed20243b4/sound/voice/LizardSqueal.ogg, licensed Creative Commons 3.0 BY-SA.
|
||||
@@ -135,7 +135,7 @@
|
||||
emote_message_3p = "squeals."
|
||||
emote_message_1p_target = "You squeal at TARGET."
|
||||
emote_message_3p_target = "squeals at TARGET."
|
||||
emote_sound = 'modular_chomp/sound/voice/emotes/squealemote.ogg'
|
||||
emote_sound = 'sound/voice/emotes/squealemote.ogg'
|
||||
|
||||
/decl/emote/audible/tailthump // Sound sourced from https://freesound.org/s/389665/ Licensed Creative Commons 0
|
||||
key = "tailthump"
|
||||
@@ -143,4 +143,4 @@
|
||||
emote_message_3p = "thumps their tail."
|
||||
emote_message_1p_target = "You thump your tail at TARGET."
|
||||
emote_message_3p_target = "thumps their tail at TARGET."
|
||||
emote_sound = 'modular_chomp/sound/voice/emotes/tailthumpemote.ogg'
|
||||
emote_sound = 'sound/voice/emotes/tailthumpemote.ogg'
|
||||
|
||||
@@ -1,10 +1,6 @@
|
||||
//Any species commented out here must be made restricted elsewhere. They are kept here for easy reference of what we disabled.
|
||||
//Note that at the time of this PR we are simply disabling everything new to discuss keeping versus scrapping later.
|
||||
|
||||
/datum/species
|
||||
var/pain_verb_1p = list("shout", "growl", "grunt", "gasp")
|
||||
var/pain_verb_3p = list("shouts", "growls", "grunts", "gasps")
|
||||
|
||||
///datum/species/zaddat
|
||||
// spawn_flags = SPECIES_IS_RESTRICTED //Species has been enabled elsewhere.
|
||||
|
||||
|
||||
@@ -1,24 +1,3 @@
|
||||
/mob/living
|
||||
// var/ear_deaf_loop = FALSE // Are we already playing our deafened loop? Checked for safety so we don't deafen our players. (Not sure if we need this bc looping sounds datums have protection for starts being called repeatedly, commented out)
|
||||
var/datum/looping_sound/mob/deafened/deaf_loop
|
||||
/* TL;DR - the following is a lot of copypasta, but allows us to give simplemobs pain and death sounds.
|
||||
* Different from carbons, where we check species, here we just check on the mob itself.
|
||||
* TBD: Maybe port over from species to mob?
|
||||
*/
|
||||
var/can_pain_emote = TRUE
|
||||
var/pain_emote_1p = null
|
||||
var/pain_emote_3p = null
|
||||
var/species_sounds = "None" // By default, we have nothing.
|
||||
var/death_sound_override = null
|
||||
var/datum/looping_sound/mob/on_fire/firesoundloop
|
||||
// var/datum/looping_sound/mob/stunned/stunnedloop
|
||||
/* // Not sure if needed, screams aren't a carbon thing rn.
|
||||
var/scream_sound = null
|
||||
var/female_scream_sound = null
|
||||
var/male_scream_sound = null
|
||||
var/scream_emote = null
|
||||
*/
|
||||
|
||||
/mob/living/Initialize(mapload)
|
||||
. = ..()
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
ai_holder_type = /datum/ai_holder/simple_mob/ranged/kiting/horrormaster //The final boss of every Gradius game
|
||||
|
||||
/datum/say_list/cyber_horror/master
|
||||
threaten_sound = 'modular_chomp/sound/mob/robots/MasterSee.ogg'
|
||||
threaten_sound = 'sound/mob/robots/MasterSee.ogg'
|
||||
|
||||
/datum/ai_holder/simple_mob/ranged/kiting/horrormaster
|
||||
threaten = TRUE
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
|
||||
|
||||
/datum/say_list/disbot
|
||||
threaten_sound = 'modular_chomp/sound/mob/robots/infector.ogg'
|
||||
threaten_sound = 'sound/mob/robots/infector.ogg'
|
||||
|
||||
/datum/ai_holder/simple_mob/melee/disbot
|
||||
threaten = TRUE
|
||||
|
||||
@@ -18,8 +18,8 @@
|
||||
say_threaten = list("This area is condemned by Vir System Authority. Please leave immediately. You have 20 seconds to comply.")
|
||||
say_stand_down = list("Visual lost.", "Error: Target not found.")
|
||||
say_escalate = list("Intruder is tresspassing. Maximum force authorized by Vir System Suthority.")
|
||||
threaten_sound = 'modular_chomp/sound/mob/robots/DroneFreezeLong.ogg'
|
||||
stand_down_sound = 'modular_chomp/sound/mob/robots/DroneLostTarget.ogg'
|
||||
threaten_sound = 'sound/mob/robots/DroneFreezeLong.ogg'
|
||||
stand_down_sound = 'sound/mob/robots/DroneLostTarget.ogg'
|
||||
|
||||
/datum/ai_holder/simple_mob/ranged/kiting/threatening/drone_aerostat
|
||||
threaten_delay = 10 SECOND
|
||||
|
||||
@@ -21,8 +21,8 @@
|
||||
say_threaten = list("This area is condemned by Vir System Authority. Please leave immediately. You have 20 seconds to comply.")
|
||||
say_stand_down = list("Visual lost.", "Error: Target not found.")
|
||||
say_escalate = list("Intruder is tresspassing. Maximum force authorized by Vir System Suthority.")
|
||||
threaten_sound = 'modular_chomp/sound/mob/robots/GygaxIntruder4.ogg'
|
||||
stand_down_sound = 'modular_chomp/sound/mob/robots/GygaxDanger.ogg'
|
||||
threaten_sound = 'sound/mob/robots/GygaxIntruder4.ogg'
|
||||
stand_down_sound = 'sound/mob/robots/GygaxDanger.ogg'
|
||||
|
||||
/datum/ai_holder/simple_mob/ranged/kiting/threatening/drone_aerostat
|
||||
threaten_delay = 20 SECOND
|
||||
|
||||
@@ -548,7 +548,7 @@
|
||||
pixel_x = -16
|
||||
pixel_y = 0
|
||||
|
||||
movement_sound = 'modular_chomp/sound/effects/carrev.ogg'
|
||||
movement_sound = 'sound/effects/carrev.ogg'
|
||||
|
||||
min_oxy = 0
|
||||
max_oxy = 0
|
||||
@@ -803,7 +803,7 @@ GLOBAL_LIST_INIT(obelisk_lure_messages, list(
|
||||
return
|
||||
|
||||
/datum/looping_sound/obelisk ///thanks to BM for helpin' me make this work <3
|
||||
mid_sounds = 'modular_chomp/sound/effects/monolith_ambience.ogg'
|
||||
mid_sounds = 'sound/effects/monolith_ambience.ogg'
|
||||
mid_length = 50
|
||||
chance = 100
|
||||
volume = 35
|
||||
@@ -843,7 +843,7 @@ GLOBAL_LIST_INIT(obelisk_lure_messages, list(
|
||||
/mob/living/simple_mob/vore/blackhole_obelisk/death()
|
||||
..()
|
||||
visible_message("[src] flashes brightly, crumbling as its psychic influence suddenly vanishes from the minds of those nearby...")
|
||||
playsound(src, 'modular_chomp/sound/effects/monolith_death.ogg', 100)
|
||||
playsound(src, 'sound/effects/monolith_death.ogg', 100)
|
||||
|
||||
#undef OBELISK_LURE
|
||||
|
||||
|
||||
@@ -32,10 +32,10 @@
|
||||
return
|
||||
recharging = 1
|
||||
update_icon()
|
||||
playsound(src,'modular_chomp/sound/weapons/clockwork/clockwork_cock.ogg',25,1)
|
||||
playsound(src,'sound/weapons/clockwork/clockwork_cock.ogg',25,1)
|
||||
user.visible_message(span_notice("[user] pulls the charging handle on \the [src] and it whirrs to life!"), \
|
||||
span_notice("You pull the charging handle on \the [src] and begin the reloading sequence."))
|
||||
playsound(src,'modular_chomp/sound/weapons/clockwork/cwc_rifle_fabricate.ogg',25,5)
|
||||
playsound(src,'sound/weapons/clockwork/cwc_rifle_fabricate.ogg',25,5)
|
||||
while(recharging)
|
||||
if(!do_after(user, 50, src))
|
||||
break
|
||||
@@ -48,13 +48,13 @@
|
||||
user.hud_used.update_ammo_hud(user, src) // Update one last time once we're finished!
|
||||
|
||||
/obj/item/projectile/bullet/rifle/clockwork
|
||||
fire_sound = 'modular_chomp/sound/weapons/clockwork/cwc_rifle_fire.ogg'
|
||||
fire_sound = 'sound/weapons/clockwork/cwc_rifle_fire.ogg'
|
||||
damage = 20 //Old 10
|
||||
hud_state = "rifle_heavy"
|
||||
|
||||
/obj/item/projectile/beam/shock/clockwork
|
||||
name = "shock beam"
|
||||
fire_sound = 'modular_chomp/sound/weapons/clockwork/voltbeam_fire.ogg'
|
||||
fire_sound = 'sound/weapons/clockwork/voltbeam_fire.ogg'
|
||||
icon_state = "lightning"
|
||||
damage_type = ELECTROCUTE
|
||||
|
||||
@@ -66,7 +66,7 @@
|
||||
agony = 15
|
||||
eyeblur = 2
|
||||
hitsound = 'sound/effects/lightningshock.ogg'
|
||||
hitsound_wall = 'modular_chomp/sound/weapons/clockwork/voltbeamsearwall.ogg'
|
||||
hitsound_wall = 'sound/weapons/clockwork/voltbeamsearwall.ogg'
|
||||
hud_state = "taser"
|
||||
|
||||
/obj/effect/projectile/muzzle/voltbeam
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
icon_state = "ukr"
|
||||
item_state = "ukr"
|
||||
icon = 'modular_chomp/icons/obj/guns/altmarksman/altmarksman.dmi'
|
||||
fire_sound = 'modular_chomp/sound/weapons/marksmanalt.ogg'
|
||||
fire_sound = 'sound/weapons/marksmanalt.ogg'
|
||||
item_icons = list(
|
||||
slot_l_hand_str = 'modular_chomp/icons/obj/guns/altmarksman/lefthand_guns.dmi',
|
||||
slot_r_hand_str = 'modular_chomp/icons/obj/guns/altmarksman/righthand_guns.dmi',
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user