[MIRROR] Kitchen Sink PR (#10745)

Co-authored-by: Cameron Lennox <killer65311@gmail.com>
This commit is contained in:
CHOMPStation2StaffMirrorBot
2025-04-26 10:16:57 -07:00
committed by GitHub
parent 42483a1d4a
commit 667e08ee0a
324 changed files with 504 additions and 669 deletions

View File

@@ -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

View File

@@ -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"

View File

@@ -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'\
)

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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)

View File

@@ -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()

View File

@@ -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

View File

@@ -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()

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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)

View File

@@ -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

View File

@@ -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"]."))

View File

@@ -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)

View File

@@ -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

View File

@@ -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]

View File

@@ -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."

View File

@@ -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 ..()

View 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
)

View File

@@ -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

View File

@@ -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'

View File

@@ -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.

View 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

View File

@@ -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"

View File

@@ -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))

View File

@@ -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

View File

@@ -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

View File

@@ -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)

View File

@@ -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)

View File

@@ -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,

View File

@@ -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

View File

@@ -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)

View File

@@ -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

View File

@@ -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)

View File

@@ -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( \

View File

@@ -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

View File

@@ -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

View File

@@ -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()

View File

@@ -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")

View File

@@ -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
. = ..()

View File

@@ -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))

View File

@@ -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)

View File

@@ -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")

View File

@@ -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)

View File

@@ -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)

View File

@@ -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)
. = ..()

View File

@@ -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)

View File

@@ -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."

View File

@@ -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"

View File

@@ -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")

View File

@@ -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

View File

@@ -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

View File

@@ -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))

View File

@@ -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))

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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")

View File

@@ -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))

View File

@@ -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")

View File

@@ -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"

View File

@@ -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!

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -1,3 +1,3 @@
/mob/living/voice
no_vore = TRUE
can_pain_emote = FALSE // CHOMPEdit: Sanity/safety
can_pain_emote = FALSE

View File

@@ -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)

View File

@@ -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

View File

@@ -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
. = ..()

View File

@@ -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)

View File

@@ -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)

View File

@@ -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()
. = ..()

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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))

View File

@@ -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

View File

@@ -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)

View File

@@ -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.

View File

@@ -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

View File

@@ -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"]."))

View File

@@ -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

View File

@@ -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'

View File

@@ -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.

View File

@@ -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)
. = ..()

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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