ImmursionAudio(TM)
This commit is contained in:
+67
-1
@@ -3,6 +3,7 @@
|
|||||||
#define CHANNEL_ADMIN 1023
|
#define CHANNEL_ADMIN 1023
|
||||||
#define CHANNEL_VOX 1022
|
#define CHANNEL_VOX 1022
|
||||||
#define CHANNEL_JUKEBOX 1021
|
#define CHANNEL_JUKEBOX 1021
|
||||||
|
|
||||||
#define CHANNEL_JUKEBOX_START 1016 //The gap between this and CHANNEL_JUKEBOX determines the amount of free jukebox channels. This currently allows 6 jukebox channels to exist.
|
#define CHANNEL_JUKEBOX_START 1016 //The gap between this and CHANNEL_JUKEBOX determines the amount of free jukebox channels. This currently allows 6 jukebox channels to exist.
|
||||||
#define CHANNEL_JUSTICAR_ARK 1015
|
#define CHANNEL_JUSTICAR_ARK 1015
|
||||||
#define CHANNEL_HEARTBEAT 1014 //sound channel for heartbeats
|
#define CHANNEL_HEARTBEAT 1014 //sound channel for heartbeats
|
||||||
@@ -15,6 +16,17 @@
|
|||||||
#define CHANNEL_DIGEST 1009
|
#define CHANNEL_DIGEST 1009
|
||||||
#define CHANNEL_PREYLOOP 1008
|
#define CHANNEL_PREYLOOP 1008
|
||||||
|
|
||||||
|
///Default range of a sound.
|
||||||
|
#define SOUND_RANGE 17
|
||||||
|
///default extra range for sounds considered to be quieter
|
||||||
|
#define SHORT_RANGE_SOUND_EXTRARANGE -9
|
||||||
|
///The range deducted from sound range for things that are considered silent / sneaky
|
||||||
|
#define SILENCED_SOUND_EXTRARANGE -11
|
||||||
|
///Percentage of sound's range where no falloff is applied
|
||||||
|
#define SOUND_DEFAULT_FALLOFF_DISTANCE 1 //For a normal sound this would be 1 tile of no falloff
|
||||||
|
///The default exponent of sound falloff
|
||||||
|
#define SOUND_FALLOFF_EXPONENT 6
|
||||||
|
|
||||||
//THIS SHOULD ALWAYS BE THE LOWEST ONE!
|
//THIS SHOULD ALWAYS BE THE LOWEST ONE!
|
||||||
//KEEP IT UPDATED
|
//KEEP IT UPDATED
|
||||||
|
|
||||||
@@ -23,6 +35,7 @@
|
|||||||
#define MAX_INSTRUMENT_CHANNELS (128 * 6)
|
#define MAX_INSTRUMENT_CHANNELS (128 * 6)
|
||||||
|
|
||||||
#define SOUND_MINIMUM_PRESSURE 10
|
#define SOUND_MINIMUM_PRESSURE 10
|
||||||
|
/// remove
|
||||||
#define FALLOFF_SOUNDS 1
|
#define FALLOFF_SOUNDS 1
|
||||||
|
|
||||||
|
|
||||||
@@ -53,7 +66,8 @@
|
|||||||
#define MINING list('sound/ambience/ambimine.ogg', 'sound/ambience/ambicave.ogg', 'sound/ambience/ambiruin.ogg',\
|
#define MINING list('sound/ambience/ambimine.ogg', 'sound/ambience/ambicave.ogg', 'sound/ambience/ambiruin.ogg',\
|
||||||
'sound/ambience/ambiruin2.ogg', 'sound/ambience/ambiruin3.ogg', 'sound/ambience/ambiruin4.ogg',\
|
'sound/ambience/ambiruin2.ogg', 'sound/ambience/ambiruin3.ogg', 'sound/ambience/ambiruin4.ogg',\
|
||||||
'sound/ambience/ambiruin5.ogg', 'sound/ambience/ambiruin6.ogg', 'sound/ambience/ambiruin7.ogg',\
|
'sound/ambience/ambiruin5.ogg', 'sound/ambience/ambiruin6.ogg', 'sound/ambience/ambiruin7.ogg',\
|
||||||
'sound/ambience/ambidanger.ogg', 'sound/ambience/ambidanger2.ogg', 'sound/ambience/ambimaint1.ogg', 'sound/ambience/ambilava.ogg')
|
'sound/ambience/ambidanger.ogg', 'sound/ambience/ambidanger2.ogg', 'sound/ambience/ambimaint1.ogg',\
|
||||||
|
'sound/ambience/ambilava.ogg')
|
||||||
|
|
||||||
#define MEDICAL list('sound/ambience/ambinice.ogg')
|
#define MEDICAL list('sound/ambience/ambinice.ogg')
|
||||||
|
|
||||||
@@ -80,3 +94,55 @@
|
|||||||
'sound/hallucinations/growl3.ogg', 'sound/hallucinations/im_here1.ogg', 'sound/hallucinations/im_here2.ogg', 'sound/hallucinations/i_see_you1.ogg', 'sound/hallucinations/i_see_you2.ogg',\
|
'sound/hallucinations/growl3.ogg', 'sound/hallucinations/im_here1.ogg', 'sound/hallucinations/im_here2.ogg', 'sound/hallucinations/i_see_you1.ogg', 'sound/hallucinations/i_see_you2.ogg',\
|
||||||
'sound/hallucinations/look_up1.ogg', 'sound/hallucinations/look_up2.ogg', 'sound/hallucinations/over_here1.ogg', 'sound/hallucinations/over_here2.ogg', 'sound/hallucinations/over_here3.ogg',\
|
'sound/hallucinations/look_up1.ogg', 'sound/hallucinations/look_up2.ogg', 'sound/hallucinations/over_here1.ogg', 'sound/hallucinations/over_here2.ogg', 'sound/hallucinations/over_here3.ogg',\
|
||||||
'sound/hallucinations/turn_around1.ogg', 'sound/hallucinations/turn_around2.ogg', 'sound/hallucinations/veryfar_noise.ogg', 'sound/hallucinations/wail.ogg')
|
'sound/hallucinations/turn_around1.ogg', 'sound/hallucinations/turn_around2.ogg', 'sound/hallucinations/veryfar_noise.ogg', 'sound/hallucinations/wail.ogg')
|
||||||
|
|
||||||
|
|
||||||
|
#define INTERACTION_SOUND_RANGE_MODIFIER -3
|
||||||
|
#define EQUIP_SOUND_VOLUME 30
|
||||||
|
#define PICKUP_SOUND_VOLUME 15
|
||||||
|
#define DROP_SOUND_VOLUME 20
|
||||||
|
#define YEET_SOUND_VOLUME 90
|
||||||
|
|
||||||
|
|
||||||
|
//default byond sound environments
|
||||||
|
#define SOUND_ENVIRONMENT_NONE -1
|
||||||
|
#define SOUND_ENVIRONMENT_GENERIC 0
|
||||||
|
#define SOUND_ENVIRONMENT_PADDED_CELL 1
|
||||||
|
#define SOUND_ENVIRONMENT_ROOM 2
|
||||||
|
#define SOUND_ENVIRONMENT_BATHROOM 3
|
||||||
|
#define SOUND_ENVIRONMENT_LIVINGROOM 4
|
||||||
|
#define SOUND_ENVIRONMENT_STONEROOM 5
|
||||||
|
#define SOUND_ENVIRONMENT_AUDITORIUM 6
|
||||||
|
#define SOUND_ENVIRONMENT_CONCERT_HALL 7
|
||||||
|
#define SOUND_ENVIRONMENT_CAVE 8
|
||||||
|
#define SOUND_ENVIRONMENT_ARENA 9
|
||||||
|
#define SOUND_ENVIRONMENT_HANGAR 10
|
||||||
|
#define SOUND_ENVIRONMENT_CARPETED_HALLWAY 11
|
||||||
|
#define SOUND_ENVIRONMENT_HALLWAY 12
|
||||||
|
#define SOUND_ENVIRONMENT_STONE_CORRIDOR 13
|
||||||
|
#define SOUND_ENVIRONMENT_ALLEY 14
|
||||||
|
#define SOUND_ENVIRONMENT_FOREST 15
|
||||||
|
#define SOUND_ENVIRONMENT_CITY 16
|
||||||
|
#define SOUND_ENVIRONMENT_MOUNTAINS 17
|
||||||
|
#define SOUND_ENVIRONMENT_QUARRY 18
|
||||||
|
#define SOUND_ENVIRONMENT_PLAIN 19
|
||||||
|
#define SOUND_ENVIRONMENT_PARKING_LOT 20
|
||||||
|
#define SOUND_ENVIRONMENT_SEWER_PIPE 21
|
||||||
|
#define SOUND_ENVIRONMENT_UNDERWATER 22
|
||||||
|
#define SOUND_ENVIRONMENT_DRUGGED 23
|
||||||
|
#define SOUND_ENVIRONMENT_DIZZY 24
|
||||||
|
#define SOUND_ENVIRONMENT_PSYCHOTIC 25
|
||||||
|
//If we ever make custom ones add them here
|
||||||
|
|
||||||
|
//"sound areas": easy way of keeping different types of areas consistent.
|
||||||
|
#define SOUND_AREA_STANDARD_STATION SOUND_ENVIRONMENT_PARKING_LOT
|
||||||
|
#define SOUND_AREA_LARGE_ENCLOSED SOUND_ENVIRONMENT_QUARRY
|
||||||
|
#define SOUND_AREA_SMALL_ENCLOSED SOUND_ENVIRONMENT_BATHROOM
|
||||||
|
#define SOUND_AREA_TUNNEL_ENCLOSED SOUND_ENVIRONMENT_STONEROOM
|
||||||
|
#define SOUND_AREA_LARGE_SOFTFLOOR SOUND_ENVIRONMENT_CARPETED_HALLWAY
|
||||||
|
#define SOUND_AREA_MEDIUM_SOFTFLOOR SOUND_ENVIRONMENT_LIVINGROOM
|
||||||
|
#define SOUND_AREA_SMALL_SOFTFLOOR SOUND_ENVIRONMENT_ROOM
|
||||||
|
#define SOUND_AREA_ASTEROID SOUND_ENVIRONMENT_CAVE
|
||||||
|
#define SOUND_AREA_SPACE SOUND_ENVIRONMENT_UNDERWATER
|
||||||
|
#define SOUND_AREA_LAVALAND SOUND_ENVIRONMENT_MOUNTAINS
|
||||||
|
#define SOUND_AREA_ICEMOON SOUND_ENVIRONMENT_CAVE
|
||||||
|
#define SOUND_AREA_WOODFLOOR SOUND_ENVIRONMENT_CITY
|
||||||
|
|||||||
@@ -116,7 +116,6 @@ SUBSYSTEM_DEF(jukeboxes)
|
|||||||
inrange = TRUE
|
inrange = TRUE
|
||||||
else
|
else
|
||||||
song_played.status = SOUND_MUTE | SOUND_UPDATE //Setting volume = 0 doesn't let the sound properties update at all, which is lame.
|
song_played.status = SOUND_MUTE | SOUND_UPDATE //Setting volume = 0 doesn't let the sound properties update at all, which is lame.
|
||||||
|
M.playsound_local(currentturf, null, 100, channel = jukeinfo[2], S = song_played, use_reverb = FALSE)
|
||||||
M.playsound_local(currentturf, null, 100, channel = jukeinfo[2], S = song_played, envwet = (inrange ? -250 : 0), envdry = (inrange ? 0 : -10000))
|
|
||||||
CHECK_TICK
|
CHECK_TICK
|
||||||
return
|
return
|
||||||
|
|||||||
@@ -89,7 +89,7 @@ GLOBAL_LIST_EMPTY(explosions)
|
|||||||
if(adminlog)
|
if(adminlog)
|
||||||
message_admins("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range], [flame_range]) in [ADMIN_VERBOSEJMP(epicenter)]")
|
message_admins("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range], [flame_range]) in [ADMIN_VERBOSEJMP(epicenter)]")
|
||||||
log_game("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range], [flame_range]) in [loc_name(epicenter)]")
|
log_game("Explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range], [flame_range]) in [loc_name(epicenter)]")
|
||||||
|
|
||||||
deadchat_broadcast("<span class='deadsay bold'>An explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range], [flame_range]) has occured at ([get_area(epicenter)])</span>", turf_target = get_turf(epicenter))
|
deadchat_broadcast("<span class='deadsay bold'>An explosion with size ([devastation_range], [heavy_impact_range], [light_impact_range], [flame_range]) has occured at ([get_area(epicenter)])</span>", turf_target = get_turf(epicenter))
|
||||||
|
|
||||||
var/x0 = epicenter.x
|
var/x0 = epicenter.x
|
||||||
@@ -115,7 +115,7 @@ GLOBAL_LIST_EMPTY(explosions)
|
|||||||
var/sound/creaking_explosion_sound = sound(get_sfx("explosion_creaking"))
|
var/sound/creaking_explosion_sound = sound(get_sfx("explosion_creaking"))
|
||||||
var/sound/hull_creaking_sound = sound(get_sfx("hull_creaking"))
|
var/sound/hull_creaking_sound = sound(get_sfx("hull_creaking"))
|
||||||
var/sound/explosion_echo_sound = sound('sound/effects/explosion_distant.ogg')
|
var/sound/explosion_echo_sound = sound('sound/effects/explosion_distant.ogg')
|
||||||
var/on_station = SSmapping.level_trait(epicenter.z, ZTRAIT_STATION)
|
var/on_station = SSmapping.level_trait(epicenter.z, ZTRAIT_STATION)
|
||||||
var/creaking_explosion = FALSE
|
var/creaking_explosion = FALSE
|
||||||
|
|
||||||
if(prob(devastation_range*30+heavy_impact_range*5) && on_station) // Huge explosions are near guaranteed to make the station creak and whine, smaller ones might.
|
if(prob(devastation_range*30+heavy_impact_range*5) && on_station) // Huge explosions are near guaranteed to make the station creak and whine, smaller ones might.
|
||||||
@@ -131,7 +131,7 @@ GLOBAL_LIST_EMPTY(explosions)
|
|||||||
baseshakeamount = sqrt((orig_max_distance - dist)*0.1)
|
baseshakeamount = sqrt((orig_max_distance - dist)*0.1)
|
||||||
// If inside the blast radius + world.view - 2
|
// If inside the blast radius + world.view - 2
|
||||||
if(dist <= round(max_range + world.view - 2, 1))
|
if(dist <= round(max_range + world.view - 2, 1))
|
||||||
M.playsound_local(epicenter, null, 100, 1, frequency, falloff = 5, S = explosion_sound)
|
M.playsound_local(epicenter, null, 100, 1, frequency, S = explosion_sound)
|
||||||
if(baseshakeamount > 0)
|
if(baseshakeamount > 0)
|
||||||
shake_camera(M, 25, clamp(baseshakeamount, 0, 10))
|
shake_camera(M, 25, clamp(baseshakeamount, 0, 10))
|
||||||
// You hear a far explosion if you're outside the blast radius. Small bombs shouldn't be heard all over the station.
|
// You hear a far explosion if you're outside the blast radius. Small bombs shouldn't be heard all over the station.
|
||||||
@@ -139,7 +139,7 @@ GLOBAL_LIST_EMPTY(explosions)
|
|||||||
var/far_volume = clamp(far_dist/2, 40, 60) // Volume is based on explosion size and dist
|
var/far_volume = clamp(far_dist/2, 40, 60) // Volume is based on explosion size and dist
|
||||||
if(creaking_explosion)
|
if(creaking_explosion)
|
||||||
M.playsound_local(epicenter, null, far_volume, 1, frequency, S = creaking_explosion_sound, distance_multiplier = 0)
|
M.playsound_local(epicenter, null, far_volume, 1, frequency, S = creaking_explosion_sound, distance_multiplier = 0)
|
||||||
else if(prob(75))
|
else if(prob(75)) // Sound variety during meteor storm/tesloose/other bad event
|
||||||
M.playsound_local(epicenter, null, far_volume, 1, frequency, S = far_explosion_sound, distance_multiplier = 0) // Far sound
|
M.playsound_local(epicenter, null, far_volume, 1, frequency, S = far_explosion_sound, distance_multiplier = 0) // Far sound
|
||||||
else
|
else
|
||||||
M.playsound_local(epicenter, null, far_volume, 1, frequency, S = explosion_echo_sound, distance_multiplier = 0) // Echo sound
|
M.playsound_local(epicenter, null, far_volume, 1, frequency, S = explosion_echo_sound, distance_multiplier = 0) // Echo sound
|
||||||
@@ -148,7 +148,7 @@ GLOBAL_LIST_EMPTY(explosions)
|
|||||||
if(!baseshakeamount) // Devastating explosions rock the station and ground
|
if(!baseshakeamount) // Devastating explosions rock the station and ground
|
||||||
baseshakeamount = devastation_range*3
|
baseshakeamount = devastation_range*3
|
||||||
shake_camera(M, 10, clamp(baseshakeamount*0.25, 0, 2.5))
|
shake_camera(M, 10, clamp(baseshakeamount*0.25, 0, 2.5))
|
||||||
|
|
||||||
else if(M.can_hear() && !isspaceturf(get_turf(M)) && heavy_impact_range) // Big enough explosions echo throughout the hull
|
else if(M.can_hear() && !isspaceturf(get_turf(M)) && heavy_impact_range) // Big enough explosions echo throughout the hull
|
||||||
var/echo_volume = 40
|
var/echo_volume = 40
|
||||||
if(devastation_range)
|
if(devastation_range)
|
||||||
|
|||||||
@@ -44,6 +44,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
|||||||
ambientsounds = SPACE
|
ambientsounds = SPACE
|
||||||
blob_allowed = FALSE //Eating up space doesn't count for victory as a blob.
|
blob_allowed = FALSE //Eating up space doesn't count for victory as a blob.
|
||||||
considered_hull_exterior = TRUE
|
considered_hull_exterior = TRUE
|
||||||
|
sound_environment = SOUND_AREA_SPACE
|
||||||
|
|
||||||
/area/space/nearstation
|
/area/space/nearstation
|
||||||
icon_state = "space_near"
|
icon_state = "space_near"
|
||||||
@@ -69,6 +70,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
|||||||
blob_allowed = FALSE //Nope, no winning on the asteroid as a blob. Gotta eat the station.
|
blob_allowed = FALSE //Nope, no winning on the asteroid as a blob. Gotta eat the station.
|
||||||
valid_territory = FALSE
|
valid_territory = FALSE
|
||||||
ambientsounds = MINING
|
ambientsounds = MINING
|
||||||
|
sound_environment = SOUND_AREA_ASTEROID
|
||||||
|
|
||||||
/area/asteroid/nearstation
|
/area/asteroid/nearstation
|
||||||
dynamic_lighting = DYNAMIC_LIGHTING_FORCED
|
dynamic_lighting = DYNAMIC_LIGHTING_FORCED
|
||||||
@@ -106,7 +108,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
|||||||
/area/maintenance
|
/area/maintenance
|
||||||
ambientsounds = MAINTENANCE
|
ambientsounds = MAINTENANCE
|
||||||
valid_territory = FALSE
|
valid_territory = FALSE
|
||||||
|
sound_environment = SOUND_AREA_TUNNEL_ENCLOSED
|
||||||
|
|
||||||
//Departments
|
//Departments
|
||||||
|
|
||||||
@@ -121,6 +123,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
|||||||
/area/maintenance/department/crew_quarters/bar
|
/area/maintenance/department/crew_quarters/bar
|
||||||
name = "Bar Maintenance"
|
name = "Bar Maintenance"
|
||||||
icon_state = "maint_bar"
|
icon_state = "maint_bar"
|
||||||
|
sound_environment = SOUND_AREA_WOODFLOOR
|
||||||
|
|
||||||
/area/maintenance/department/crew_quarters/dorms
|
/area/maintenance/department/crew_quarters/dorms
|
||||||
name = "Dormitory Maintenance"
|
name = "Dormitory Maintenance"
|
||||||
@@ -264,6 +267,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
|||||||
|
|
||||||
/area/hallway
|
/area/hallway
|
||||||
nightshift_public_area = NIGHTSHIFT_AREA_PUBLIC
|
nightshift_public_area = NIGHTSHIFT_AREA_PUBLIC
|
||||||
|
sound_environment = SOUND_AREA_STANDARD_STATION
|
||||||
|
|
||||||
/area/hallway/primary/aft
|
/area/hallway/primary/aft
|
||||||
name = "Aft Primary Hallway"
|
name = "Aft Primary Hallway"
|
||||||
@@ -336,30 +340,36 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
|||||||
name = "Bridge"
|
name = "Bridge"
|
||||||
icon_state = "bridge"
|
icon_state = "bridge"
|
||||||
music = "signal"
|
music = "signal"
|
||||||
|
sound_environment = SOUND_AREA_STANDARD_STATION
|
||||||
|
|
||||||
/area/bridge/meeting_room
|
/area/bridge/meeting_room
|
||||||
name = "Heads of Staff Meeting Room"
|
name = "Heads of Staff Meeting Room"
|
||||||
icon_state = "meeting"
|
icon_state = "meeting"
|
||||||
music = null
|
music = null
|
||||||
|
sound_environment = SOUND_AREA_MEDIUM_SOFTFLOOR
|
||||||
|
|
||||||
/area/bridge/meeting_room/council
|
/area/bridge/meeting_room/council
|
||||||
name = "Council Chamber"
|
name = "Council Chamber"
|
||||||
icon_state = "meeting"
|
icon_state = "meeting"
|
||||||
music = null
|
music = null
|
||||||
|
sound_environment = SOUND_AREA_MEDIUM_SOFTFLOOR
|
||||||
|
|
||||||
/area/bridge/showroom/corporate
|
/area/bridge/showroom/corporate
|
||||||
name = "Corporate Showroom"
|
name = "Corporate Showroom"
|
||||||
icon_state = "showroom"
|
icon_state = "showroom"
|
||||||
music = null
|
music = null
|
||||||
|
sound_environment = SOUND_AREA_MEDIUM_SOFTFLOOR
|
||||||
|
|
||||||
/area/crew_quarters/heads/captain
|
/area/crew_quarters/heads/captain
|
||||||
name = "Captain's Office"
|
name = "Captain's Office"
|
||||||
icon_state = "captain"
|
icon_state = "captain"
|
||||||
clockwork_warp_allowed = FALSE
|
clockwork_warp_allowed = FALSE
|
||||||
|
sound_environment = SOUND_AREA_WOODFLOOR
|
||||||
|
|
||||||
/area/crew_quarters/heads/captain/private
|
/area/crew_quarters/heads/captain/private
|
||||||
name = "Captain's Quarters"
|
name = "Captain's Quarters"
|
||||||
icon_state = "captain"
|
icon_state = "captain"
|
||||||
|
sound_environment = SOUND_AREA_WOODFLOOR
|
||||||
|
|
||||||
/area/crew_quarters/heads/chief
|
/area/crew_quarters/heads/chief
|
||||||
name = "Chief Engineer's Office"
|
name = "Chief Engineer's Office"
|
||||||
@@ -404,10 +414,12 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
|||||||
/area/comms
|
/area/comms
|
||||||
name = "Communications Relay"
|
name = "Communications Relay"
|
||||||
icon_state = "tcomsatcham"
|
icon_state = "tcomsatcham"
|
||||||
|
sound_environment = SOUND_AREA_STANDARD_STATION
|
||||||
|
|
||||||
/area/server
|
/area/server
|
||||||
name = "Messaging Server Room"
|
name = "Messaging Server Room"
|
||||||
icon_state = "server"
|
icon_state = "server"
|
||||||
|
sound_environment = SOUND_AREA_STANDARD_STATION
|
||||||
|
|
||||||
//Crew
|
//Crew
|
||||||
|
|
||||||
@@ -416,6 +428,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
|||||||
icon_state = "Sleep"
|
icon_state = "Sleep"
|
||||||
safe = TRUE
|
safe = TRUE
|
||||||
nightshift_public_area = NIGHTSHIFT_AREA_RECREATION
|
nightshift_public_area = NIGHTSHIFT_AREA_RECREATION
|
||||||
|
sound_environment = SOUND_AREA_STANDARD_STATION
|
||||||
|
|
||||||
/area/crew_quarters/dorms/male
|
/area/crew_quarters/dorms/male
|
||||||
name = "Male Dorm"
|
name = "Male Dorm"
|
||||||
@@ -434,6 +447,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
|||||||
/area/crew_quarters/toilet
|
/area/crew_quarters/toilet
|
||||||
name = "Dormitory Toilets"
|
name = "Dormitory Toilets"
|
||||||
icon_state = "toilet"
|
icon_state = "toilet"
|
||||||
|
sound_environment = SOUND_AREA_SMALL_ENCLOSED
|
||||||
|
|
||||||
/area/crew_quarters/toilet/auxiliary
|
/area/crew_quarters/toilet/auxiliary
|
||||||
name = "Auxiliary Restrooms"
|
name = "Auxiliary Restrooms"
|
||||||
@@ -468,6 +482,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
|||||||
name = "Lounge"
|
name = "Lounge"
|
||||||
icon_state = "yellow"
|
icon_state = "yellow"
|
||||||
nightshift_public_area = NIGHTSHIFT_AREA_RECREATION
|
nightshift_public_area = NIGHTSHIFT_AREA_RECREATION
|
||||||
|
sound_environment = SOUND_AREA_SMALL_SOFTFLOOR
|
||||||
|
|
||||||
/area/crew_quarters/fitness
|
/area/crew_quarters/fitness
|
||||||
name = "Fitness Room"
|
name = "Fitness Room"
|
||||||
@@ -496,15 +511,18 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
|||||||
/area/crew_quarters/kitchen/backroom
|
/area/crew_quarters/kitchen/backroom
|
||||||
name = "Kitchen Coldroom"
|
name = "Kitchen Coldroom"
|
||||||
icon_state = "kitchen"
|
icon_state = "kitchen"
|
||||||
|
sound_environment = SOUND_AREA_SMALL_ENCLOSED
|
||||||
|
|
||||||
/area/crew_quarters/bar
|
/area/crew_quarters/bar
|
||||||
name = "Bar"
|
name = "Bar"
|
||||||
icon_state = "bar"
|
icon_state = "bar"
|
||||||
nightshift_public_area = NIGHTSHIFT_AREA_RECREATION
|
nightshift_public_area = NIGHTSHIFT_AREA_RECREATION
|
||||||
|
sound_environment = SOUND_AREA_WOODFLOOR
|
||||||
|
|
||||||
/area/crew_quarters/bar/atrium
|
/area/crew_quarters/bar/atrium
|
||||||
name = "Atrium"
|
name = "Atrium"
|
||||||
icon_state = "bar"
|
icon_state = "bar"
|
||||||
|
sound_environment = SOUND_AREA_WOODFLOOR
|
||||||
|
|
||||||
/area/crew_quarters/electronic_marketing_den
|
/area/crew_quarters/electronic_marketing_den
|
||||||
name = "Electronic Marketing Den"
|
name = "Electronic Marketing Den"
|
||||||
@@ -520,6 +538,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
|||||||
/area/crew_quarters/theatre
|
/area/crew_quarters/theatre
|
||||||
name = "Theatre"
|
name = "Theatre"
|
||||||
icon_state = "Theatre"
|
icon_state = "Theatre"
|
||||||
|
sound_environment = SOUND_AREA_WOODFLOOR
|
||||||
|
|
||||||
/area/crew_quarters/theatre/abandoned
|
/area/crew_quarters/theatre/abandoned
|
||||||
name = "Abandoned Theatre"
|
name = "Abandoned Theatre"
|
||||||
@@ -540,10 +559,12 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
|||||||
icon_state = "library"
|
icon_state = "library"
|
||||||
flags_1 = NONE
|
flags_1 = NONE
|
||||||
nightshift_public_area = NIGHTSHIFT_AREA_RECREATION
|
nightshift_public_area = NIGHTSHIFT_AREA_RECREATION
|
||||||
|
sound_environment = SOUND_AREA_LARGE_SOFTFLOOR
|
||||||
|
|
||||||
/area/library/lounge
|
/area/library/lounge
|
||||||
name = "Library Lounge"
|
name = "Library Lounge"
|
||||||
icon_state = "library"
|
icon_state = "library"
|
||||||
|
sound_environment = SOUND_AREA_SMALL_SOFTFLOOR
|
||||||
|
|
||||||
/area/library/abandoned
|
/area/library/abandoned
|
||||||
name = "Abandoned Library"
|
name = "Abandoned Library"
|
||||||
@@ -558,6 +579,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
|||||||
clockwork_warp_allowed = FALSE
|
clockwork_warp_allowed = FALSE
|
||||||
clockwork_warp_fail = "The consecration here prevents you from warping in."
|
clockwork_warp_fail = "The consecration here prevents you from warping in."
|
||||||
nightshift_public_area = NIGHTSHIFT_AREA_RECREATION
|
nightshift_public_area = NIGHTSHIFT_AREA_RECREATION
|
||||||
|
sound_environment = SOUND_AREA_LARGE_ENCLOSED
|
||||||
|
|
||||||
/area/chapel/main
|
/area/chapel/main
|
||||||
name = "Chapel"
|
name = "Chapel"
|
||||||
@@ -573,6 +595,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
|||||||
/area/chapel/asteroid
|
/area/chapel/asteroid
|
||||||
name = "Chapel Asteroid"
|
name = "Chapel Asteroid"
|
||||||
icon_state = "explored"
|
icon_state = "explored"
|
||||||
|
sound_environment = SOUND_AREA_ASTEROID
|
||||||
|
|
||||||
/area/chapel/asteroid/monastery
|
/area/chapel/asteroid/monastery
|
||||||
name = "Monastery Asteroid"
|
name = "Monastery Asteroid"
|
||||||
@@ -584,12 +607,14 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
|||||||
/area/lawoffice
|
/area/lawoffice
|
||||||
name = "Law Office"
|
name = "Law Office"
|
||||||
icon_state = "law"
|
icon_state = "law"
|
||||||
|
sound_environment = SOUND_AREA_SMALL_SOFTFLOOR
|
||||||
|
|
||||||
|
|
||||||
//Engineering
|
//Engineering
|
||||||
|
|
||||||
/area/engine
|
/area/engine
|
||||||
ambientsounds = ENGINEERING
|
ambientsounds = ENGINEERING
|
||||||
|
sound_environment = SOUND_AREA_LARGE_ENCLOSED
|
||||||
|
|
||||||
/area/engine/engine_smes
|
/area/engine/engine_smes
|
||||||
name = "Engineering SMES"
|
name = "Engineering SMES"
|
||||||
@@ -607,14 +632,17 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
|||||||
/area/engine/atmospherics_engine
|
/area/engine/atmospherics_engine
|
||||||
name = "Atmospherics Engine"
|
name = "Atmospherics Engine"
|
||||||
icon_state = "atmos_engine"
|
icon_state = "atmos_engine"
|
||||||
|
sound_environment = SOUND_AREA_LARGE_ENCLOSED
|
||||||
|
|
||||||
/area/engine/supermatter
|
/area/engine/supermatter
|
||||||
name = "Supermatter Engine"
|
name = "Supermatter Engine"
|
||||||
icon_state = "engine_sm"
|
icon_state = "engine_sm"
|
||||||
|
sound_environment = SOUND_AREA_SMALL_ENCLOSED
|
||||||
|
|
||||||
/area/engine/break_room
|
/area/engine/break_room
|
||||||
name = "Engineering Foyer"
|
name = "Engineering Foyer"
|
||||||
icon_state = "engine_foyer"
|
icon_state = "engine_foyer"
|
||||||
|
sound_environment = SOUND_AREA_SMALL_ENCLOSED
|
||||||
|
|
||||||
/area/engine/gravity_generator
|
/area/engine/gravity_generator
|
||||||
name = "Gravity Generator Room"
|
name = "Gravity Generator Room"
|
||||||
@@ -629,6 +657,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
|||||||
/area/engine/storage
|
/area/engine/storage
|
||||||
name = "Engineering Storage"
|
name = "Engineering Storage"
|
||||||
icon_state = "engi_storage"
|
icon_state = "engi_storage"
|
||||||
|
sound_environment = SOUND_AREA_SMALL_ENCLOSED
|
||||||
|
|
||||||
/area/engine/storage_shared
|
/area/engine/storage_shared
|
||||||
name = "Shared Engineering Storage"
|
name = "Shared Engineering Storage"
|
||||||
@@ -648,10 +677,12 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
|||||||
blob_allowed = FALSE
|
blob_allowed = FALSE
|
||||||
flags_1 = NONE
|
flags_1 = NONE
|
||||||
ambientsounds = ENGINEERING
|
ambientsounds = ENGINEERING
|
||||||
|
sound_environment = SOUND_AREA_SPACE
|
||||||
|
|
||||||
/area/solar/fore
|
/area/solar/fore
|
||||||
name = "Fore Solar Array"
|
name = "Fore Solar Array"
|
||||||
icon_state = "yellow"
|
icon_state = "yellow"
|
||||||
|
sound_environment = SOUND_AREA_STANDARD_STATION
|
||||||
|
|
||||||
/area/solar/aft
|
/area/solar/aft
|
||||||
name = "Aft Solar Array"
|
name = "Aft Solar Array"
|
||||||
@@ -757,6 +788,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
|||||||
icon_state = "gateway"
|
icon_state = "gateway"
|
||||||
music = "signal"
|
music = "signal"
|
||||||
ambientsounds = ENGINEERING
|
ambientsounds = ENGINEERING
|
||||||
|
sound_environment = SOUND_AREA_STANDARD_STATION
|
||||||
|
|
||||||
//MedBay
|
//MedBay
|
||||||
|
|
||||||
@@ -764,11 +796,13 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
|||||||
name = "Medical"
|
name = "Medical"
|
||||||
icon_state = "medbay3"
|
icon_state = "medbay3"
|
||||||
ambientsounds = MEDICAL
|
ambientsounds = MEDICAL
|
||||||
|
sound_environment = SOUND_AREA_STANDARD_STATION
|
||||||
|
|
||||||
/area/medical/abandoned
|
/area/medical/abandoned
|
||||||
name = "Abandoned Medbay"
|
name = "Abandoned Medbay"
|
||||||
icon_state = "medbay3"
|
icon_state = "medbay3"
|
||||||
music = 'sound/ambience/signal.ogg'
|
music = 'sound/ambience/signal.ogg'
|
||||||
|
sound_environment = SOUND_AREA_SMALL_ENCLOSED
|
||||||
|
|
||||||
/area/medical/medbay/central
|
/area/medical/medbay/central
|
||||||
name = "Medbay Central"
|
name = "Medbay Central"
|
||||||
@@ -810,6 +844,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
|||||||
/area/medical/patients_rooms
|
/area/medical/patients_rooms
|
||||||
name = "Patients' Rooms"
|
name = "Patients' Rooms"
|
||||||
icon_state = "patients"
|
icon_state = "patients"
|
||||||
|
sound_environment = SOUND_AREA_SMALL_SOFTFLOOR
|
||||||
|
|
||||||
/area/medical/patients_rooms/room_a
|
/area/medical/patients_rooms/room_a
|
||||||
name = "Patient Room A"
|
name = "Patient Room A"
|
||||||
@@ -828,6 +863,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
|||||||
name = "Morgue"
|
name = "Morgue"
|
||||||
icon_state = "morgue"
|
icon_state = "morgue"
|
||||||
ambientsounds = SPOOKY
|
ambientsounds = SPOOKY
|
||||||
|
sound_environment = SOUND_AREA_SMALL_ENCLOSED
|
||||||
|
|
||||||
/area/medical/chemistry
|
/area/medical/chemistry
|
||||||
name = "Chemistry"
|
name = "Chemistry"
|
||||||
@@ -868,6 +904,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
|||||||
name = "Security"
|
name = "Security"
|
||||||
icon_state = "security"
|
icon_state = "security"
|
||||||
ambientsounds = HIGHSEC
|
ambientsounds = HIGHSEC
|
||||||
|
sound_environment = SOUND_AREA_STANDARD_STATION
|
||||||
|
|
||||||
/area/security/main
|
/area/security/main
|
||||||
name = "Security Office"
|
name = "Security Office"
|
||||||
@@ -880,6 +917,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
|||||||
/area/security/courtroom
|
/area/security/courtroom
|
||||||
name = "Courtroom"
|
name = "Courtroom"
|
||||||
icon_state = "courtroom"
|
icon_state = "courtroom"
|
||||||
|
sound_environment = SOUND_AREA_LARGE_ENCLOSED
|
||||||
|
|
||||||
/area/security/prison
|
/area/security/prison
|
||||||
name = "Prison Wing"
|
name = "Prison Wing"
|
||||||
@@ -892,10 +930,12 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
|||||||
/area/security/processing/cremation
|
/area/security/processing/cremation
|
||||||
name = "Security Crematorium"
|
name = "Security Crematorium"
|
||||||
icon_state = "sec_prison"
|
icon_state = "sec_prison"
|
||||||
|
sound_environment = SOUND_AREA_SMALL_ENCLOSED
|
||||||
|
|
||||||
/area/security/warden
|
/area/security/warden
|
||||||
name = "Brig Control"
|
name = "Brig Control"
|
||||||
icon_state = "Warden"
|
icon_state = "Warden"
|
||||||
|
sound_environment = SOUND_AREA_SMALL_SOFTFLOOR
|
||||||
|
|
||||||
/area/security/armory
|
/area/security/armory
|
||||||
name = "Armory"
|
name = "Armory"
|
||||||
@@ -909,6 +949,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
|||||||
/area/security/detectives_office/private_investigators_office
|
/area/security/detectives_office/private_investigators_office
|
||||||
name = "Private Investigator's Office"
|
name = "Private Investigator's Office"
|
||||||
icon_state = "detective"
|
icon_state = "detective"
|
||||||
|
sound_environment = SOUND_AREA_SMALL_SOFTFLOOR
|
||||||
|
|
||||||
/area/security/range
|
/area/security/range
|
||||||
name = "Firing Range"
|
name = "Firing Range"
|
||||||
@@ -986,18 +1027,17 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
|||||||
/area/quartermaster
|
/area/quartermaster
|
||||||
name = "Quartermasters"
|
name = "Quartermasters"
|
||||||
icon_state = "quart"
|
icon_state = "quart"
|
||||||
|
sound_environment = SOUND_AREA_STANDARD_STATION
|
||||||
///////////WORK IN PROGRESS//////////
|
|
||||||
|
|
||||||
/area/quartermaster/sorting
|
/area/quartermaster/sorting
|
||||||
name = "Delivery Office"
|
name = "Delivery Office"
|
||||||
icon_state = "cargo_delivery"
|
icon_state = "cargo_delivery"
|
||||||
|
sound_environment = SOUND_AREA_STANDARD_STATION
|
||||||
|
|
||||||
/area/quartermaster/warehouse
|
/area/quartermaster/warehouse
|
||||||
name = "Warehouse"
|
name = "Warehouse"
|
||||||
icon_state = "cargo_warehouse"
|
icon_state = "cargo_warehouse"
|
||||||
|
sound_environment = SOUND_AREA_LARGE_ENCLOSED
|
||||||
////////////WORK IN PROGRESS//////////
|
|
||||||
|
|
||||||
/area/quartermaster/office
|
/area/quartermaster/office
|
||||||
name = "Cargo Office"
|
name = "Cargo Office"
|
||||||
@@ -1006,6 +1046,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
|||||||
/area/quartermaster/storage
|
/area/quartermaster/storage
|
||||||
name = "Cargo Bay"
|
name = "Cargo Bay"
|
||||||
icon_state = "cargo_bay"
|
icon_state = "cargo_bay"
|
||||||
|
sound_environment = SOUND_AREA_LARGE_ENCLOSED
|
||||||
|
|
||||||
/area/quartermaster/qm
|
/area/quartermaster/qm
|
||||||
name = "Quartermaster's Office"
|
name = "Quartermaster's Office"
|
||||||
@@ -1035,10 +1076,12 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
|||||||
name = "Custodial Closet"
|
name = "Custodial Closet"
|
||||||
icon_state = "janitor"
|
icon_state = "janitor"
|
||||||
flags_1 = NONE
|
flags_1 = NONE
|
||||||
|
sound_environment = SOUND_AREA_SMALL_ENCLOSED
|
||||||
|
|
||||||
/area/hydroponics
|
/area/hydroponics
|
||||||
name = "Hydroponics"
|
name = "Hydroponics"
|
||||||
icon_state = "hydro"
|
icon_state = "hydro"
|
||||||
|
sound_environment = SOUND_AREA_STANDARD_STATION
|
||||||
|
|
||||||
/area/hydroponics/garden
|
/area/hydroponics/garden
|
||||||
name = "Garden"
|
name = "Garden"
|
||||||
@@ -1047,6 +1090,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
|||||||
/area/hydroponics/garden/abandoned
|
/area/hydroponics/garden/abandoned
|
||||||
name = "Abandoned Garden"
|
name = "Abandoned Garden"
|
||||||
icon_state = "abandoned_garden"
|
icon_state = "abandoned_garden"
|
||||||
|
sound_environment = SOUND_AREA_SMALL_ENCLOSED
|
||||||
|
|
||||||
/area/hydroponics/garden/monastery
|
/area/hydroponics/garden/monastery
|
||||||
name = "Monastery Garden"
|
name = "Monastery Garden"
|
||||||
@@ -1057,6 +1101,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
|||||||
/area/science
|
/area/science
|
||||||
name = "Science Division"
|
name = "Science Division"
|
||||||
icon_state = "toxlab"
|
icon_state = "toxlab"
|
||||||
|
sound_environment = SOUND_AREA_STANDARD_STATION
|
||||||
|
|
||||||
/area/science/lab
|
/area/science/lab
|
||||||
name = "Research and Development"
|
name = "Research and Development"
|
||||||
@@ -1139,12 +1184,15 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
|||||||
/area/science/research/abandoned
|
/area/science/research/abandoned
|
||||||
name = "Abandoned Research Lab"
|
name = "Abandoned Research Lab"
|
||||||
icon_state = "medresearch"
|
icon_state = "medresearch"
|
||||||
|
sound_environment = SOUND_AREA_SMALL_ENCLOSED
|
||||||
|
|
||||||
/area/science/nanite
|
/area/science/nanite
|
||||||
name = "Nanite Lab"
|
name = "Nanite Lab"
|
||||||
icon_state = "toxmisc"
|
icon_state = "toxmisc"
|
||||||
|
|
||||||
//Storage
|
//Storage
|
||||||
|
/area/storage
|
||||||
|
sound_environment = SOUND_AREA_STANDARD_STATION
|
||||||
|
|
||||||
/area/storage/tools
|
/area/storage/tools
|
||||||
name = "Auxiliary Tool Storage"
|
name = "Auxiliary Tool Storage"
|
||||||
@@ -1210,6 +1258,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
|||||||
name = "Construction Area"
|
name = "Construction Area"
|
||||||
icon_state = "yellow"
|
icon_state = "yellow"
|
||||||
ambientsounds = ENGINEERING
|
ambientsounds = ENGINEERING
|
||||||
|
sound_environment = SOUND_AREA_STANDARD_STATION
|
||||||
|
|
||||||
/area/construction/minisat_exterior
|
/area/construction/minisat_exterior
|
||||||
name = "Minisat Exterior"
|
name = "Minisat Exterior"
|
||||||
@@ -1218,6 +1267,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
|||||||
/area/construction/mining/aux_base
|
/area/construction/mining/aux_base
|
||||||
name = "Auxiliary Base Construction"
|
name = "Auxiliary Base Construction"
|
||||||
icon_state = "yellow"
|
icon_state = "yellow"
|
||||||
|
sound_environment = SOUND_AREA_MEDIUM_SOFTFLOOR
|
||||||
|
|
||||||
/area/construction/mining/aux_base/closet
|
/area/construction/mining/aux_base/closet
|
||||||
name = "Auxiliary Closet Construction"
|
name = "Auxiliary Closet Construction"
|
||||||
@@ -1273,6 +1323,8 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
|||||||
|
|
||||||
|
|
||||||
//AI
|
//AI
|
||||||
|
/area/ai_monitored
|
||||||
|
sound_environment = SOUND_AREA_STANDARD_STATION
|
||||||
|
|
||||||
/area/ai_monitored/security/armory
|
/area/ai_monitored/security/armory
|
||||||
name = "Armory"
|
name = "Armory"
|
||||||
@@ -1297,10 +1349,12 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
|||||||
/area/ai_monitored/turret_protected/ai_upload
|
/area/ai_monitored/turret_protected/ai_upload
|
||||||
name = "AI Upload Chamber"
|
name = "AI Upload Chamber"
|
||||||
icon_state = "ai_upload"
|
icon_state = "ai_upload"
|
||||||
|
sound_environment = SOUND_AREA_SMALL_ENCLOSED
|
||||||
|
|
||||||
/area/ai_monitored/turret_protected/ai_upload_foyer
|
/area/ai_monitored/turret_protected/ai_upload_foyer
|
||||||
name = "AI Upload Access"
|
name = "AI Upload Access"
|
||||||
icon_state = "ai_foyer"
|
icon_state = "ai_foyer"
|
||||||
|
sound_environment = SOUND_AREA_SMALL_ENCLOSED
|
||||||
|
|
||||||
/area/ai_monitored/turret_protected/ai
|
/area/ai_monitored/turret_protected/ai
|
||||||
name = "AI Chamber"
|
name = "AI Chamber"
|
||||||
@@ -1309,6 +1363,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
|||||||
/area/ai_monitored/turret_protected/aisat
|
/area/ai_monitored/turret_protected/aisat
|
||||||
name = "AI Satellite"
|
name = "AI Satellite"
|
||||||
icon_state = "ai"
|
icon_state = "ai"
|
||||||
|
sound_environment = SOUND_ENVIRONMENT_ROOM
|
||||||
|
|
||||||
/area/ai_monitored/turret_protected/aisat/atmos
|
/area/ai_monitored/turret_protected/aisat/atmos
|
||||||
name = "AI Satellite Atmos"
|
name = "AI Satellite Atmos"
|
||||||
@@ -1333,6 +1388,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
|||||||
/area/ai_monitored/turret_protected/aisat_interior
|
/area/ai_monitored/turret_protected/aisat_interior
|
||||||
name = "AI Satellite Antechamber"
|
name = "AI Satellite Antechamber"
|
||||||
icon_state = "ai"
|
icon_state = "ai"
|
||||||
|
sound_environment = SOUND_AREA_LARGE_ENCLOSED
|
||||||
|
|
||||||
/area/ai_monitored/turret_protected/AIsatextFP
|
/area/ai_monitored/turret_protected/AIsatextFP
|
||||||
name = "AI Sat Ext"
|
name = "AI Sat Ext"
|
||||||
@@ -1386,6 +1442,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
|
|||||||
/area/tcommsat/computer
|
/area/tcommsat/computer
|
||||||
name = "Telecomms Control Room"
|
name = "Telecomms Control Room"
|
||||||
icon_state = "tcomsatcomp"
|
icon_state = "tcomsatcomp"
|
||||||
|
sound_environment = SOUND_AREA_MEDIUM_SOFTFLOOR
|
||||||
|
|
||||||
/area/tcommsat/server
|
/area/tcommsat/server
|
||||||
name = "Telecomms Server Room"
|
name = "Telecomms Server Room"
|
||||||
|
|||||||
@@ -3,6 +3,7 @@
|
|||||||
clockwork_warp_allowed = FALSE
|
clockwork_warp_allowed = FALSE
|
||||||
var/list/obj/machinery/camera/motioncameras = list()
|
var/list/obj/machinery/camera/motioncameras = list()
|
||||||
var/list/datum/weakref/motionTargets = list()
|
var/list/datum/weakref/motionTargets = list()
|
||||||
|
sound_environment = SOUND_ENVIRONMENT_ROOM
|
||||||
|
|
||||||
/area/ai_monitored/Initialize(mapload)
|
/area/ai_monitored/Initialize(mapload)
|
||||||
. = ..()
|
. = ..()
|
||||||
|
|||||||
+157
-62
@@ -1,16 +1,72 @@
|
|||||||
// Areas.dm
|
/**
|
||||||
|
* # area
|
||||||
|
*
|
||||||
|
* A grouping of tiles into a logical space, mostly used by map editors
|
||||||
|
*/
|
||||||
/area
|
/area
|
||||||
level = null
|
|
||||||
name = "Space"
|
name = "Space"
|
||||||
icon = 'icons/turf/areas.dmi'
|
icon = 'icons/turf/areas.dmi'
|
||||||
icon_state = "unknown"
|
icon_state = "unknown"
|
||||||
layer = AREA_LAYER
|
layer = AREA_LAYER
|
||||||
plane = BLACKNESS_PLANE //Keeping this on the default plane, GAME_PLANE, will make area overlays fail to render on FLOOR_PLANE.
|
//Keeping this on the default plane, GAME_PLANE, will make area overlays fail to render on FLOOR_PLANE.
|
||||||
|
plane = BLACKNESS_PLANE
|
||||||
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
|
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
|
||||||
invisibility = INVISIBILITY_LIGHTING
|
invisibility = INVISIBILITY_LIGHTING
|
||||||
|
|
||||||
|
var/fire = null
|
||||||
|
///Whether there is an atmos alarm in this area
|
||||||
|
var/atmosalm = FALSE
|
||||||
|
var/poweralm = FALSE
|
||||||
|
var/lightswitch = TRUE
|
||||||
|
|
||||||
|
/// All beauty in this area combined, only includes indoor area.
|
||||||
|
var/totalbeauty = 0
|
||||||
|
/// Beauty average per open turf in the area
|
||||||
|
var/beauty = 0
|
||||||
|
/// If a room is too big it doesn't have beauty.
|
||||||
|
var/beauty_threshold = 150
|
||||||
|
|
||||||
|
/// For space, the asteroid, lavaland, etc. Used with blueprints or with weather to determine if we are adding a new area (vs editing a station room)
|
||||||
|
var/outdoors = FALSE
|
||||||
|
|
||||||
|
/// Size of the area in open turfs, only calculated for indoors areas.
|
||||||
|
var/areasize = 0
|
||||||
|
|
||||||
|
/// Bonus mood for being in this area
|
||||||
|
var/mood_bonus = 0
|
||||||
|
/// Mood message for being here, only shows up if mood_bonus != 0
|
||||||
|
var/mood_message = "<span class='nicegreen'>This area is pretty nice!\n</span>"
|
||||||
|
|
||||||
|
///Will objects this area be needing power?
|
||||||
|
var/requires_power = TRUE
|
||||||
|
/// This gets overridden to 1 for space in area/Initialize().
|
||||||
|
var/always_unpowered = FALSE
|
||||||
|
|
||||||
|
var/power_equip = TRUE
|
||||||
|
var/power_light = TRUE
|
||||||
|
var/power_environ = TRUE
|
||||||
|
|
||||||
|
var/has_gravity = FALSE
|
||||||
|
|
||||||
|
var/parallax_movedir = 0
|
||||||
|
|
||||||
|
var/list/ambientsounds = GENERIC
|
||||||
|
flags_1 = CAN_BE_DIRTY_1
|
||||||
|
|
||||||
|
var/list/firedoors
|
||||||
|
var/list/cameras
|
||||||
|
var/list/firealarms
|
||||||
|
var/firedoors_last_closed_on = 0
|
||||||
|
|
||||||
|
|
||||||
|
///This datum, if set, allows terrain generation behavior to be ran on Initialize()
|
||||||
|
// var/datum/map_generator/map_generator
|
||||||
|
|
||||||
|
///Used to decide what kind of reverb the area makes sound have
|
||||||
|
var/sound_environment = SOUND_ENVIRONMENT_NONE
|
||||||
|
|
||||||
|
/// CIT SPECIFIC VARS
|
||||||
|
|
||||||
/// Set in New(); preserves the name set by the map maker, even if renamed by the Blueprints.
|
/// Set in New(); preserves the name set by the map maker, even if renamed by the Blueprints.
|
||||||
var/map_name
|
var/map_name
|
||||||
|
|
||||||
@@ -37,29 +93,8 @@
|
|||||||
/// Considered space for hull shielding
|
/// Considered space for hull shielding
|
||||||
var/considered_hull_exterior = FALSE
|
var/considered_hull_exterior = FALSE
|
||||||
|
|
||||||
var/fire = null
|
|
||||||
var/atmos = TRUE
|
var/atmos = TRUE
|
||||||
var/atmosalm = FALSE
|
|
||||||
var/poweralm = TRUE
|
|
||||||
var/lightswitch = TRUE
|
|
||||||
|
|
||||||
var/totalbeauty = 0 //All beauty in this area combined, only includes indoor area.
|
|
||||||
var/beauty = 0 // Beauty average per open turf in the area
|
|
||||||
var/beauty_threshold = 150 //If a room is too big it doesn't have beauty.
|
|
||||||
|
|
||||||
var/requires_power = TRUE
|
|
||||||
/// This gets overridden to 1 for space in area/Initialize().
|
|
||||||
var/always_unpowered = FALSE
|
|
||||||
|
|
||||||
/// For space, the asteroid, lavaland, etc. Used with blueprints to determine if we are adding a new area (vs editing a station room)
|
|
||||||
var/outdoors = FALSE
|
|
||||||
|
|
||||||
/// Size of the area in open turfs, only calculated for indoors areas.
|
|
||||||
var/areasize = 0
|
|
||||||
|
|
||||||
var/power_equip = TRUE
|
|
||||||
var/power_light = TRUE
|
|
||||||
var/power_environ = TRUE
|
|
||||||
var/music = null
|
var/music = null
|
||||||
var/used_equip = 0
|
var/used_equip = 0
|
||||||
var/used_light = 0
|
var/used_light = 0
|
||||||
@@ -68,7 +103,6 @@
|
|||||||
var/static_light = 0
|
var/static_light = 0
|
||||||
var/static_environ
|
var/static_environ
|
||||||
|
|
||||||
var/has_gravity = 0
|
|
||||||
/// Are you forbidden from teleporting to the area? (centcom, mobs, wizard, hand teleporter)
|
/// Are you forbidden from teleporting to the area? (centcom, mobs, wizard, hand teleporter)
|
||||||
var/noteleport = FALSE
|
var/noteleport = FALSE
|
||||||
/// Hides area from player Teleport function.
|
/// Hides area from player Teleport function.
|
||||||
@@ -80,15 +114,6 @@
|
|||||||
|
|
||||||
var/no_air = null
|
var/no_air = null
|
||||||
|
|
||||||
var/parallax_movedir = 0
|
|
||||||
|
|
||||||
var/list/ambientsounds = GENERIC
|
|
||||||
flags_1 = CAN_BE_DIRTY_1
|
|
||||||
|
|
||||||
var/list/firedoors
|
|
||||||
var/list/cameras
|
|
||||||
var/list/firealarms
|
|
||||||
var/firedoors_last_closed_on = 0
|
|
||||||
var/xenobiology_compatible = FALSE //Can the Xenobio management console transverse this area by default?
|
var/xenobiology_compatible = FALSE //Can the Xenobio management console transverse this area by default?
|
||||||
var/list/canSmoothWithAreas //typecache to limit the areas that atoms in this area can smooth with
|
var/list/canSmoothWithAreas //typecache to limit the areas that atoms in this area can smooth with
|
||||||
|
|
||||||
@@ -107,10 +132,24 @@
|
|||||||
|
|
||||||
var/nightshift_public_area = NIGHTSHIFT_AREA_NONE //considered a public area for nightshift
|
var/nightshift_public_area = NIGHTSHIFT_AREA_NONE //considered a public area for nightshift
|
||||||
|
|
||||||
/*Adding a wizard area teleport list because motherfucking lag -- Urist*/
|
|
||||||
/*I am far too lazy to make it a proper list of areas so I'll just make it run the usual telepot routine at the start of the game*/
|
/**
|
||||||
|
* A list of teleport locations
|
||||||
|
*
|
||||||
|
* Adding a wizard area teleport list because motherfucking lag -- Urist
|
||||||
|
* I am far too lazy to make it a proper list of areas so I'll just make it run the usual telepot routine at the start of the game
|
||||||
|
*/
|
||||||
GLOBAL_LIST_EMPTY(teleportlocs)
|
GLOBAL_LIST_EMPTY(teleportlocs)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generate a list of turfs you can teleport to from the areas list
|
||||||
|
*
|
||||||
|
* Includes areas if they're not a shuttle or not not teleport or have no contents
|
||||||
|
*
|
||||||
|
* The chosen turf is the first item in the areas contents that is a station level
|
||||||
|
*
|
||||||
|
* The returned list of turfs is sorted by name
|
||||||
|
*/
|
||||||
/proc/process_teleport_locs()
|
/proc/process_teleport_locs()
|
||||||
for(var/V in GLOB.sortedAreas)
|
for(var/V in GLOB.sortedAreas)
|
||||||
var/area/AR = V
|
var/area/AR = V
|
||||||
@@ -124,11 +163,19 @@ GLOBAL_LIST_EMPTY(teleportlocs)
|
|||||||
if (picked && is_station_level(picked.z))
|
if (picked && is_station_level(picked.z))
|
||||||
GLOB.teleportlocs[AR.name] = AR
|
GLOB.teleportlocs[AR.name] = AR
|
||||||
|
|
||||||
sortTim(GLOB.teleportlocs, /proc/cmp_text_dsc)
|
sortTim(GLOB.teleportlocs, /proc/cmp_text_asc)
|
||||||
|
|
||||||
// ===
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called when an area loads
|
||||||
|
*
|
||||||
|
* Adds the item to the GLOB.areas_by_type list based on area type
|
||||||
|
*/
|
||||||
/area/New()
|
/area/New()
|
||||||
|
// This interacts with the map loader, so it needs to be set immediately
|
||||||
|
// rather than waiting for atoms to initialize.
|
||||||
|
if (unique)
|
||||||
|
GLOB.areas_by_type[type] = src
|
||||||
|
|
||||||
if(!minimap_color) // goes in New() because otherwise it doesn't fucking work
|
if(!minimap_color) // goes in New() because otherwise it doesn't fucking work
|
||||||
// generate one using the icon_state
|
// generate one using the icon_state
|
||||||
if(icon_state && icon_state != "unknown")
|
if(icon_state && icon_state != "unknown")
|
||||||
@@ -137,14 +184,18 @@ GLOBAL_LIST_EMPTY(teleportlocs)
|
|||||||
minimap_color = I.GetPixel(1,1)
|
minimap_color = I.GetPixel(1,1)
|
||||||
else // no icon state? use random.
|
else // no icon state? use random.
|
||||||
minimap_color = rgb(rand(50,70),rand(50,70),rand(50,70)) // This interacts with the map loader, so it needs to be set immediately
|
minimap_color = rgb(rand(50,70),rand(50,70),rand(50,70)) // This interacts with the map loader, so it needs to be set immediately
|
||||||
// rather than waiting for atoms to initialize.
|
|
||||||
if (unique)
|
|
||||||
GLOB.areas_by_type[type] = src
|
|
||||||
return ..()
|
return ..()
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Initalize this area
|
||||||
|
*
|
||||||
|
* intializes the dynamic area lighting and also registers the area with the z level via
|
||||||
|
* reg_in_areas_in_z
|
||||||
|
*
|
||||||
|
* returns INITIALIZE_HINT_LATELOAD
|
||||||
|
*/
|
||||||
/area/Initialize()
|
/area/Initialize()
|
||||||
icon_state = ""
|
icon_state = ""
|
||||||
layer = AREA_LAYER
|
|
||||||
map_name = name // Save the initial (the name set in the map) name of the area.
|
map_name = name // Save the initial (the name set in the map) name of the area.
|
||||||
canSmoothWithAreas = typecacheof(canSmoothWithAreas)
|
canSmoothWithAreas = typecacheof(canSmoothWithAreas)
|
||||||
|
|
||||||
@@ -198,29 +249,55 @@ GLOBAL_LIST_EMPTY(teleportlocs)
|
|||||||
|
|
||||||
return INITIALIZE_HINT_LATELOAD
|
return INITIALIZE_HINT_LATELOAD
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets machine power levels in the area
|
||||||
|
*/
|
||||||
/area/LateInitialize()
|
/area/LateInitialize()
|
||||||
if(!base_area) //we don't want to run it twice.
|
if(!base_area) //we don't want to run it twice.
|
||||||
power_change() // all machines set to current power level, also updates icon
|
power_change() // all machines set to current power level, also updates icon
|
||||||
update_beauty()
|
update_beauty()
|
||||||
|
|
||||||
/area/proc/reg_in_areas_in_z()
|
/// Soon ™
|
||||||
if(contents.len)
|
/area/proc/RunGeneration()
|
||||||
var/list/areas_in_z = SSmapping.areas_in_z
|
// if(map_generator)
|
||||||
var/z
|
// map_generator = new map_generator()
|
||||||
update_areasize()
|
// var/list/turfs = list()
|
||||||
for(var/i in 1 to contents.len)
|
// for(var/turf/T in contents)
|
||||||
var/atom/thing = contents[i]
|
// turfs += T
|
||||||
if(!thing)
|
// map_generator.generate_terrain(turfs)
|
||||||
continue
|
|
||||||
z = thing.z
|
|
||||||
break
|
|
||||||
if(!z)
|
|
||||||
WARNING("No z found for [src]")
|
|
||||||
return
|
|
||||||
if(!areas_in_z["[z]"])
|
|
||||||
areas_in_z["[z]"] = list()
|
|
||||||
areas_in_z["[z]"] += src
|
|
||||||
|
|
||||||
|
/area/proc/test_gen()
|
||||||
|
// if(map_generator)
|
||||||
|
// var/list/turfs = list()
|
||||||
|
// for(var/turf/T in contents)
|
||||||
|
// turfs += T
|
||||||
|
// map_generator.generate_terrain(turfs)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Register this area as belonging to a z level
|
||||||
|
*
|
||||||
|
* Ensures the item is added to the SSmapping.areas_in_z list for this z
|
||||||
|
*/
|
||||||
|
/area/proc/reg_in_areas_in_z()
|
||||||
|
if(!length(contents))
|
||||||
|
return
|
||||||
|
var/list/areas_in_z = SSmapping.areas_in_z
|
||||||
|
update_areasize()
|
||||||
|
if(!z)
|
||||||
|
WARNING("No z found for [src]")
|
||||||
|
return
|
||||||
|
if(!areas_in_z["[z]"])
|
||||||
|
areas_in_z["[z]"] = list()
|
||||||
|
areas_in_z["[z]"] += src
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Destroy an area and clean it up
|
||||||
|
*
|
||||||
|
* Removes the area from GLOB.areas_by_type and also stops it processing on SSobj
|
||||||
|
*
|
||||||
|
* This is despite the fact that no code appears to put it on SSobj, but
|
||||||
|
* who am I to argue with old coders
|
||||||
|
*/
|
||||||
/area/Destroy()
|
/area/Destroy()
|
||||||
if(GLOB.areas_by_type[type] == src)
|
if(GLOB.areas_by_type[type] == src)
|
||||||
GLOB.areas_by_type[type] = null
|
GLOB.areas_by_type[type] = null
|
||||||
@@ -240,6 +317,11 @@ GLOBAL_LIST_EMPTY(teleportlocs)
|
|||||||
STOP_PROCESSING(SSobj, src)
|
STOP_PROCESSING(SSobj, src)
|
||||||
return ..()
|
return ..()
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Generate a power alert for this area
|
||||||
|
*
|
||||||
|
* Sends to all ai players, alert consoles, drones and alarm monitor programs in the world
|
||||||
|
*/
|
||||||
/area/proc/poweralert(state, obj/source)
|
/area/proc/poweralert(state, obj/source)
|
||||||
if (state != poweralm)
|
if (state != poweralm)
|
||||||
poweralm = state
|
poweralm = state
|
||||||
@@ -521,6 +603,13 @@ GLOBAL_LIST_EMPTY(teleportlocs)
|
|||||||
used_environ += amount
|
used_environ += amount
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Call back when an atom enters an area
|
||||||
|
*
|
||||||
|
* Sends signals COMSIG_AREA_ENTERED and COMSIG_ENTER_AREA (to the atom)
|
||||||
|
*
|
||||||
|
* If the area has ambience, then it plays some ambience music to the ambience channel
|
||||||
|
*/
|
||||||
/area/Entered(atom/movable/M, atom/OldLoc)
|
/area/Entered(atom/movable/M, atom/OldLoc)
|
||||||
set waitfor = FALSE
|
set waitfor = FALSE
|
||||||
SEND_SIGNAL(src, COMSIG_AREA_ENTERED, M)
|
SEND_SIGNAL(src, COMSIG_AREA_ENTERED, M)
|
||||||
@@ -563,6 +652,12 @@ GLOBAL_LIST_EMPTY(teleportlocs)
|
|||||||
return FALSE //Too big
|
return FALSE //Too big
|
||||||
beauty = totalbeauty / areasize
|
beauty = totalbeauty / areasize
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called when an atom exits an area
|
||||||
|
*
|
||||||
|
* Sends signals COMSIG_AREA_EXITED and COMSIG_EXIT_AREA (to the atom)
|
||||||
|
*/
|
||||||
/area/Exited(atom/movable/M)
|
/area/Exited(atom/movable/M)
|
||||||
SEND_SIGNAL(src, COMSIG_AREA_EXITED, M)
|
SEND_SIGNAL(src, COMSIG_AREA_EXITED, M)
|
||||||
SEND_SIGNAL(M, COMSIG_EXIT_AREA, src) //The atom that exits the area
|
SEND_SIGNAL(M, COMSIG_EXIT_AREA, src) //The atom that exits the area
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ Unused icons for new areas are "awaycontent1" ~ "awaycontent30"
|
|||||||
icon_state = "away"
|
icon_state = "away"
|
||||||
has_gravity = STANDARD_GRAVITY
|
has_gravity = STANDARD_GRAVITY
|
||||||
ambientsounds = AWAY_MISSION
|
ambientsounds = AWAY_MISSION
|
||||||
|
sound_environment = SOUND_ENVIRONMENT_ROOM
|
||||||
|
|
||||||
/area/awaymission/beach
|
/area/awaymission/beach
|
||||||
name = "Beach"
|
name = "Beach"
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
dynamic_lighting = DYNAMIC_LIGHTING_DISABLED
|
dynamic_lighting = DYNAMIC_LIGHTING_DISABLED
|
||||||
flags_1 = 0
|
flags_1 = 0
|
||||||
hidden = TRUE
|
hidden = TRUE
|
||||||
|
sound_environment = SOUND_ENVIRONMENT_PADDED_CELL
|
||||||
|
|
||||||
var/obj/machinery/computer/holodeck/linked
|
var/obj/machinery/computer/holodeck/linked
|
||||||
var/restricted = 0 // if true, program goes on emag list
|
var/restricted = 0 // if true, program goes on emag list
|
||||||
|
|||||||
@@ -19,6 +19,7 @@
|
|||||||
flags_1 = NONE
|
flags_1 = NONE
|
||||||
ambientsounds = MINING
|
ambientsounds = MINING
|
||||||
flora_allowed = FALSE
|
flora_allowed = FALSE
|
||||||
|
sound_environment = SOUND_AREA_STANDARD_STATION
|
||||||
|
|
||||||
/area/mine/unexplored
|
/area/mine/unexplored
|
||||||
name = "Mine"
|
name = "Mine"
|
||||||
@@ -86,6 +87,7 @@
|
|||||||
has_gravity = STANDARD_GRAVITY
|
has_gravity = STANDARD_GRAVITY
|
||||||
flags_1 = NONE
|
flags_1 = NONE
|
||||||
flora_allowed = TRUE
|
flora_allowed = TRUE
|
||||||
|
sound_environment = SOUND_AREA_LAVALAND
|
||||||
|
|
||||||
/area/lavaland/surface
|
/area/lavaland/surface
|
||||||
name = "Lavaland"
|
name = "Lavaland"
|
||||||
@@ -139,6 +141,7 @@
|
|||||||
flags_1 = NONE
|
flags_1 = NONE
|
||||||
flora_allowed = TRUE
|
flora_allowed = TRUE
|
||||||
blob_allowed = FALSE
|
blob_allowed = FALSE
|
||||||
|
sound_environment = SOUND_AREA_ICEMOON
|
||||||
|
|
||||||
/area/icemoon/surface
|
/area/icemoon/surface
|
||||||
name = "Icemoon"
|
name = "Icemoon"
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
hidden = TRUE
|
hidden = TRUE
|
||||||
dynamic_lighting = DYNAMIC_LIGHTING_FORCED
|
dynamic_lighting = DYNAMIC_LIGHTING_FORCED
|
||||||
ambientsounds = RUINS
|
ambientsounds = RUINS
|
||||||
|
sound_environment = SOUND_ENVIRONMENT_STONEROOM
|
||||||
|
|
||||||
|
|
||||||
/area/ruin/unpowered
|
/area/ruin/unpowered
|
||||||
|
|||||||
@@ -12,6 +12,7 @@
|
|||||||
icon_state = "shuttle"
|
icon_state = "shuttle"
|
||||||
// Loading the same shuttle map at a different time will produce distinct area instances.
|
// Loading the same shuttle map at a different time will produce distinct area instances.
|
||||||
unique = FALSE
|
unique = FALSE
|
||||||
|
sound_environment = SOUND_ENVIRONMENT_ROOM
|
||||||
|
|
||||||
/area/shuttle/Initialize()
|
/area/shuttle/Initialize()
|
||||||
if(!canSmoothWithAreas)
|
if(!canSmoothWithAreas)
|
||||||
|
|||||||
@@ -60,7 +60,7 @@
|
|||||||
blocked = TRUE
|
blocked = TRUE
|
||||||
var/attackamt = rand(2,6)
|
var/attackamt = rand(2,6)
|
||||||
temp = "You attack for [attackamt] damage!"
|
temp = "You attack for [attackamt] damage!"
|
||||||
playsound(loc, 'sound/arcade/hit.ogg', 50, 1, extrarange = -3, falloff = 10)
|
playsound(loc, 'sound/arcade/hit.ogg', 50, TRUE, extrarange = -3)
|
||||||
updateUsrDialog()
|
updateUsrDialog()
|
||||||
if(turtle > 0)
|
if(turtle > 0)
|
||||||
turtle--
|
turtle--
|
||||||
@@ -74,7 +74,7 @@
|
|||||||
var/pointamt = rand(1,3)
|
var/pointamt = rand(1,3)
|
||||||
var/healamt = rand(6,8)
|
var/healamt = rand(6,8)
|
||||||
temp = "You use [pointamt] magic to heal for [healamt] damage!"
|
temp = "You use [pointamt] magic to heal for [healamt] damage!"
|
||||||
playsound(loc, 'sound/arcade/heal.ogg', 50, 1, extrarange = -3, falloff = 10)
|
playsound(loc, 'sound/arcade/heal.ogg', 50, TRUE, extrarange = -3)
|
||||||
updateUsrDialog()
|
updateUsrDialog()
|
||||||
turtle++
|
turtle++
|
||||||
|
|
||||||
@@ -89,7 +89,7 @@
|
|||||||
blocked = TRUE
|
blocked = TRUE
|
||||||
var/chargeamt = rand(4,7)
|
var/chargeamt = rand(4,7)
|
||||||
temp = "You regain [chargeamt] points"
|
temp = "You regain [chargeamt] points"
|
||||||
playsound(loc, 'sound/arcade/mana.ogg', 50, 1, extrarange = -3, falloff = 10)
|
playsound(loc, 'sound/arcade/mana.ogg', 50, TRUE, extrarange = -3)
|
||||||
player_mp += chargeamt
|
player_mp += chargeamt
|
||||||
if(turtle > 0)
|
if(turtle > 0)
|
||||||
turtle--
|
turtle--
|
||||||
@@ -124,7 +124,7 @@
|
|||||||
if(!gameover)
|
if(!gameover)
|
||||||
gameover = TRUE
|
gameover = TRUE
|
||||||
temp = "[enemy_name] has fallen! Rejoice!"
|
temp = "[enemy_name] has fallen! Rejoice!"
|
||||||
playsound(loc, 'sound/arcade/win.ogg', 50, 1, extrarange = -3, falloff = 10)
|
playsound(loc, 'sound/arcade/win.ogg', 50, TRUE, extrarange = -3)
|
||||||
|
|
||||||
if(obj_flags & EMAGGED)
|
if(obj_flags & EMAGGED)
|
||||||
new /obj/effect/spawner/newbomb/timer/syndicate(loc)
|
new /obj/effect/spawner/newbomb/timer/syndicate(loc)
|
||||||
@@ -141,13 +141,13 @@
|
|||||||
else if ((obj_flags & EMAGGED) && (turtle >= 4))
|
else if ((obj_flags & EMAGGED) && (turtle >= 4))
|
||||||
var/boomamt = rand(5,10)
|
var/boomamt = rand(5,10)
|
||||||
temp = "[enemy_name] throws a bomb, exploding you for [boomamt] damage!"
|
temp = "[enemy_name] throws a bomb, exploding you for [boomamt] damage!"
|
||||||
playsound(loc, 'sound/arcade/boom.ogg', 50, 1, extrarange = -3, falloff = 10)
|
playsound(loc, 'sound/arcade/boom.ogg', 50, TRUE, extrarange = -3)
|
||||||
player_hp -= boomamt
|
player_hp -= boomamt
|
||||||
|
|
||||||
else if ((enemy_mp <= 5) && (prob(70)))
|
else if ((enemy_mp <= 5) && (prob(70)))
|
||||||
var/stealamt = rand(2,3)
|
var/stealamt = rand(2,3)
|
||||||
temp = "[enemy_name] steals [stealamt] of your power!"
|
temp = "[enemy_name] steals [stealamt] of your power!"
|
||||||
playsound(loc, 'sound/arcade/steal.ogg', 50, 1, extrarange = -3, falloff = 10)
|
playsound(loc, 'sound/arcade/steal.ogg', 50, TRUE, extrarange = -3)
|
||||||
player_mp -= stealamt
|
player_mp -= stealamt
|
||||||
updateUsrDialog()
|
updateUsrDialog()
|
||||||
|
|
||||||
@@ -155,27 +155,27 @@
|
|||||||
gameover = TRUE
|
gameover = TRUE
|
||||||
sleep(turn_speed)
|
sleep(turn_speed)
|
||||||
temp = "You have been drained! GAME OVER"
|
temp = "You have been drained! GAME OVER"
|
||||||
playsound(loc, 'sound/arcade/lose.ogg', 50, 1, extrarange = -3, falloff = 10)
|
playsound(loc, 'sound/arcade/lose.ogg', 50, TRUE, extrarange = -3)
|
||||||
if(obj_flags & EMAGGED)
|
if(obj_flags & EMAGGED)
|
||||||
usr.gib()
|
usr.gib()
|
||||||
SSblackbox.record_feedback("nested tally", "arcade_results", 1, list("loss", "mana", (obj_flags & EMAGGED ? "emagged":"normal")))
|
SSblackbox.record_feedback("nested tally", "arcade_results", 1, list("loss", "mana", (obj_flags & EMAGGED ? "emagged":"normal")))
|
||||||
|
|
||||||
else if ((enemy_hp <= 10) && (enemy_mp > 4))
|
else if ((enemy_hp <= 10) && (enemy_mp > 4))
|
||||||
temp = "[enemy_name] heals for 4 health!"
|
temp = "[enemy_name] heals for 4 health!"
|
||||||
playsound(loc, 'sound/arcade/heal.ogg', 50, 1, extrarange = -3, falloff = 10)
|
playsound(loc, 'sound/arcade/heal.ogg', 50, TRUE, extrarange = -3)
|
||||||
enemy_hp += 4
|
enemy_hp += 4
|
||||||
enemy_mp -= 4
|
enemy_mp -= 4
|
||||||
|
|
||||||
else
|
else
|
||||||
var/attackamt = rand(3,6)
|
var/attackamt = rand(3,6)
|
||||||
temp = "[enemy_name] attacks for [attackamt] damage!"
|
temp = "[enemy_name] attacks for [attackamt] damage!"
|
||||||
playsound(loc, 'sound/arcade/hit.ogg', 50, 1, extrarange = -3, falloff = 10)
|
playsound(loc, 'sound/arcade/hit.ogg', 50, TRUE, extrarange = -3)
|
||||||
player_hp -= attackamt
|
player_hp -= attackamt
|
||||||
|
|
||||||
if ((player_mp <= 0) || (player_hp <= 0))
|
if ((player_mp <= 0) || (player_hp <= 0))
|
||||||
gameover = TRUE
|
gameover = TRUE
|
||||||
temp = "You have been crushed! GAME OVER"
|
temp = "You have been crushed! GAME OVER"
|
||||||
playsound(loc, 'sound/arcade/lose.ogg', 50, 1, extrarange = -3, falloff = 10)
|
playsound(loc, 'sound/arcade/lose.ogg', 50, TRUE, extrarange = -3)
|
||||||
if(obj_flags & EMAGGED)
|
if(obj_flags & EMAGGED)
|
||||||
usr.gib()
|
usr.gib()
|
||||||
SSblackbox.record_feedback("nested tally", "arcade_results", 1, list("loss", "hp", (obj_flags & EMAGGED ? "emagged":"normal")))
|
SSblackbox.record_feedback("nested tally", "arcade_results", 1, list("loss", "hp", (obj_flags & EMAGGED ? "emagged":"normal")))
|
||||||
|
|||||||
@@ -78,7 +78,7 @@
|
|||||||
columns = 0
|
columns = 0
|
||||||
mine_placed = 0
|
mine_placed = 0
|
||||||
if(href_list["Easy"])
|
if(href_list["Easy"])
|
||||||
playsound(loc, startup_sound, 50, 0, extrarange = -3, falloff = 10)
|
playsound(loc, startup_sound, 50, FALSE, extrarange = -3)
|
||||||
flag_text = "OFF"
|
flag_text = "OFF"
|
||||||
game_status = MINESWEEPER_GAME_PLAYING
|
game_status = MINESWEEPER_GAME_PLAYING
|
||||||
reset_board = TRUE
|
reset_board = TRUE
|
||||||
@@ -87,7 +87,7 @@
|
|||||||
columns = 10
|
columns = 10
|
||||||
mine_limit = 10
|
mine_limit = 10
|
||||||
if(href_list["Intermediate"])
|
if(href_list["Intermediate"])
|
||||||
playsound(loc, startup_sound, 50, 0, extrarange = -3, falloff = 10)
|
playsound(loc, startup_sound, 50, FALSE, extrarange = -3)
|
||||||
flag_text = "OFF"
|
flag_text = "OFF"
|
||||||
game_status = MINESWEEPER_GAME_PLAYING
|
game_status = MINESWEEPER_GAME_PLAYING
|
||||||
reset_board = TRUE
|
reset_board = TRUE
|
||||||
@@ -96,7 +96,7 @@
|
|||||||
columns = 17
|
columns = 17
|
||||||
mine_limit = 40
|
mine_limit = 40
|
||||||
if(href_list["Hard"])
|
if(href_list["Hard"])
|
||||||
playsound(loc, startup_sound, 50, 0, extrarange = -3, falloff = 10)
|
playsound(loc, startup_sound, 50, FALSE, extrarange = -3)
|
||||||
flag_text = "OFF"
|
flag_text = "OFF"
|
||||||
game_status = MINESWEEPER_GAME_PLAYING
|
game_status = MINESWEEPER_GAME_PLAYING
|
||||||
reset_board = TRUE
|
reset_board = TRUE
|
||||||
@@ -110,9 +110,9 @@
|
|||||||
game_status = MINESWEEPER_GAME_PLAYING
|
game_status = MINESWEEPER_GAME_PLAYING
|
||||||
reset_board = TRUE
|
reset_board = TRUE
|
||||||
difficulty = "Custom"
|
difficulty = "Custom"
|
||||||
playsound(loc, startup_sound, 50, 0, extrarange = -3, falloff = 10)
|
playsound(loc, startup_sound, 50, FALSE, extrarange = -3)
|
||||||
if(href_list["Flag"])
|
if(href_list["Flag"])
|
||||||
playsound(loc, 'sound/arcade/minesweeper_boardpress.ogg', 50, 0, extrarange = -3, falloff = 10)
|
playsound(loc, 'sound/arcade/minesweeper_boardpress.ogg', 50, FALSE, extrarange = -3)
|
||||||
if(!flagging)
|
if(!flagging)
|
||||||
flagging = TRUE
|
flagging = TRUE
|
||||||
flag_text = "ON"
|
flag_text = "ON"
|
||||||
@@ -122,10 +122,10 @@
|
|||||||
|
|
||||||
if(game_status == MINESWEEPER_GAME_MAIN_MENU)
|
if(game_status == MINESWEEPER_GAME_MAIN_MENU)
|
||||||
if(CHECK_BITFIELD(obj_flags, EMAGGED))
|
if(CHECK_BITFIELD(obj_flags, EMAGGED))
|
||||||
playsound(loc, 'sound/arcade/minesweeper_emag2.ogg', 50, 0, extrarange = -3, falloff = 10)
|
playsound(loc, 'sound/arcade/minesweeper_emag2.ogg', 50, FALSE, extrarange = -3)
|
||||||
web += "<font size='2'>Explode in the game, explode in real life!<br>What difficulty do you want to play?<br><br><br><br><b><a href='byond://?src=[REF(src)];Easy=1'><font color='#cc66ff'>Easy (9x9 board, 10 mines)</font></a><br><a href='byond://?src=[REF(src)];Intermediate=1'><font color='#cc66ff'>Intermediate (16x16 board, 40 mines)</font></a><br><a href='byond://?src=[REF(src)];Hard=1'><font color='#cc66ff'>Hard (16x30 board, 99 mines)</font></a><br><a href='byond://?src=[REF(src)];Custom=1'><font color='#cc66ff'>Custom</font>"
|
web += "<font size='2'>Explode in the game, explode in real life!<br>What difficulty do you want to play?<br><br><br><br><b><a href='byond://?src=[REF(src)];Easy=1'><font color='#cc66ff'>Easy (9x9 board, 10 mines)</font></a><br><a href='byond://?src=[REF(src)];Intermediate=1'><font color='#cc66ff'>Intermediate (16x16 board, 40 mines)</font></a><br><a href='byond://?src=[REF(src)];Hard=1'><font color='#cc66ff'>Hard (16x30 board, 99 mines)</font></a><br><a href='byond://?src=[REF(src)];Custom=1'><font color='#cc66ff'>Custom</font>"
|
||||||
else
|
else
|
||||||
playsound(loc, 'sound/arcade/minesweeper_startup.ogg', 50, 0, extrarange = -3, falloff = 10)
|
playsound(loc, 'sound/arcade/minesweeper_startup.ogg', 50, FALSE, extrarange = -3)
|
||||||
web += web_difficulty_menu
|
web += web_difficulty_menu
|
||||||
|
|
||||||
if(game_status == MINESWEEPER_GAME_PLAYING)
|
if(game_status == MINESWEEPER_GAME_PLAYING)
|
||||||
@@ -152,7 +152,7 @@
|
|||||||
if(table[y1][x1] < 10 && table[y1][x1] >= 0) //Check that it's not already revealed, and stop flag removal if we're out of flag mode
|
if(table[y1][x1] < 10 && table[y1][x1] >= 0) //Check that it's not already revealed, and stop flag removal if we're out of flag mode
|
||||||
table[y1][x1] += 10
|
table[y1][x1] += 10
|
||||||
if(table[y1][x1] != 10)
|
if(table[y1][x1] != 10)
|
||||||
playsound(loc, 'sound/arcade/minesweeper_boardpress.ogg', 50, 0, extrarange = -3, falloff = 10)
|
playsound(loc, 'sound/arcade/minesweeper_boardpress.ogg', 50, FALSE, extrarange = -3)
|
||||||
else
|
else
|
||||||
if(game_status != MINESWEEPER_GAME_LOST && game_status != MINESWEEPER_GAME_WON)
|
if(game_status != MINESWEEPER_GAME_LOST && game_status != MINESWEEPER_GAME_WON)
|
||||||
game_status = MINESWEEPER_GAME_LOST
|
game_status = MINESWEEPER_GAME_LOST
|
||||||
@@ -164,14 +164,14 @@
|
|||||||
if(mine_sound)
|
if(mine_sound)
|
||||||
switch(rand(1,3)) //Play every time a mine is hit
|
switch(rand(1,3)) //Play every time a mine is hit
|
||||||
if(1)
|
if(1)
|
||||||
playsound(loc, 'sound/arcade/minesweeper_explosion1.ogg', 50, 0, extrarange = -3, falloff = 10)
|
playsound(loc, 'sound/arcade/minesweeper_explosion1.ogg', 50, FALSE, extrarange = -3)
|
||||||
if(2)
|
if(2)
|
||||||
playsound(loc, 'sound/arcade/minesweeper_explosion2.ogg', 50, 0, extrarange = -3, falloff = 10)
|
playsound(loc, 'sound/arcade/minesweeper_explosion2.ogg', 50, FALSE, extrarange = -3)
|
||||||
if(3)
|
if(3)
|
||||||
playsound(loc, 'sound/arcade/minesweeper_explosion3.ogg', 50, 0, extrarange = -3, falloff = 10)
|
playsound(loc, 'sound/arcade/minesweeper_explosion3.ogg', 50, FALSE, extrarange = -3)
|
||||||
mine_sound = FALSE
|
mine_sound = FALSE
|
||||||
else
|
else
|
||||||
playsound(loc, 'sound/arcade/minesweeper_boardpress.ogg', 50, 0, extrarange = -3, falloff = 10)
|
playsound(loc, 'sound/arcade/minesweeper_boardpress.ogg', 50, FALSE, extrarange = -3)
|
||||||
if(table[y1][x1] >= 0) //Check that it's not already flagged
|
if(table[y1][x1] >= 0) //Check that it's not already flagged
|
||||||
table[y1][x1] -= 10
|
table[y1][x1] -= 10
|
||||||
else if(table[y1][x1] < 0) //If flagged, remove the flag
|
else if(table[y1][x1] < 0) //If flagged, remove the flag
|
||||||
@@ -182,7 +182,7 @@
|
|||||||
game_status = MINESWEEPER_GAME_PLAYING
|
game_status = MINESWEEPER_GAME_PLAYING
|
||||||
if(table[y1][x1] >= 10) //If revealed, become unrevealed!
|
if(table[y1][x1] >= 10) //If revealed, become unrevealed!
|
||||||
if(mine_sound)
|
if(mine_sound)
|
||||||
playsound(loc, 'sound/arcade/minesweeper_menuselect.ogg', 50, 0, extrarange = -3, falloff = 10)
|
playsound(loc, 'sound/arcade/minesweeper_menuselect.ogg', 50, FALSE, extrarange = -3)
|
||||||
mine_sound = FALSE
|
mine_sound = FALSE
|
||||||
table[y1][x1] -= 10
|
table[y1][x1] -= 10
|
||||||
if(table[y1][x1] > 10 && !reset_board)
|
if(table[y1][x1] > 10 && !reset_board)
|
||||||
@@ -243,10 +243,10 @@
|
|||||||
if(safe_squares_revealed >= win_condition && game_status == MINESWEEPER_GAME_PLAYING)
|
if(safe_squares_revealed >= win_condition && game_status == MINESWEEPER_GAME_PLAYING)
|
||||||
game_status = MINESWEEPER_GAME_WON
|
game_status = MINESWEEPER_GAME_WON
|
||||||
if(rows < 10 || columns < 10) //If less than easy difficulty
|
if(rows < 10 || columns < 10) //If less than easy difficulty
|
||||||
playsound(loc, 'sound/arcade/minesweeper_winfail.ogg', 50, 0, extrarange = -3, falloff = 10)
|
playsound(loc, 'sound/arcade/minesweeper_winfail.ogg', 50, FALSE, extrarange = -3)
|
||||||
say("You cleared the board of all mines, but you picked too small of a board! Try again with at least a 9x9 board!")
|
say("You cleared the board of all mines, but you picked too small of a board! Try again with at least a 9x9 board!")
|
||||||
else
|
else
|
||||||
playsound(loc, 'sound/arcade/minesweeper_win.ogg', 50, 0, extrarange = -3, falloff = 10)
|
playsound(loc, 'sound/arcade/minesweeper_win.ogg', 50, FALSE, extrarange = -3)
|
||||||
say("You cleared the board of all mines! Congratulations!")
|
say("You cleared the board of all mines! Congratulations!")
|
||||||
if(CHECK_BITFIELD(obj_flags, EMAGGED))
|
if(CHECK_BITFIELD(obj_flags, EMAGGED))
|
||||||
var/itemname
|
var/itemname
|
||||||
@@ -299,32 +299,32 @@
|
|||||||
ENABLE_BITFIELD(obj_flags, EMAGGED)
|
ENABLE_BITFIELD(obj_flags, EMAGGED)
|
||||||
if(game_status == MINESWEEPER_GAME_MAIN_MENU)
|
if(game_status == MINESWEEPER_GAME_MAIN_MENU)
|
||||||
to_chat(user, "<span class='warning'>An ominous tune plays from the arcade's speakers!</span>")
|
to_chat(user, "<span class='warning'>An ominous tune plays from the arcade's speakers!</span>")
|
||||||
playsound(user, 'sound/arcade/minesweeper_emag1.ogg', 100, 0, extrarange = 3, falloff = 10)
|
playsound(user, 'sound/arcade/minesweeper_emag1.ogg', 100, FALSE, extrarange = 3)
|
||||||
else //Can't let you do that, star fox!
|
else //Can't let you do that, star fox!
|
||||||
to_chat(user, "<span class='warning'>The machine buzzes and sparks... the game has been reset!</span>")
|
to_chat(user, "<span class='warning'>The machine buzzes and sparks... the game has been reset!</span>")
|
||||||
playsound(user, 'sound/machines/buzz-sigh.ogg', 100, 0, extrarange = 3, falloff = 10) //Loud buzz
|
playsound(user, 'sound/machines/buzz-sigh.ogg', 100, FALSE, extrarange = 3) //Loud buzz
|
||||||
game_status = MINESWEEPER_GAME_MAIN_MENU
|
game_status = MINESWEEPER_GAME_MAIN_MENU
|
||||||
return TRUE
|
return TRUE
|
||||||
|
|
||||||
/obj/machinery/computer/arcade/minesweeper/proc/custom_generation(mob/user)
|
/obj/machinery/computer/arcade/minesweeper/proc/custom_generation(mob/user)
|
||||||
playsound(loc, 'sound/arcade/minesweeper_menuselect.ogg', 50, 0, extrarange = -3, falloff = 10) //Entered into the menu so ping sound
|
playsound(loc, 'sound/arcade/minesweeper_menuselect.ogg', 50, FALSE, extrarange = -3) //Entered into the menu so ping sound
|
||||||
var/new_rows = input(user, "How many rows do you want? (Minimum: 4, Maximum: 30)", "Minesweeper Rows") as null|num
|
var/new_rows = input(user, "How many rows do you want? (Minimum: 4, Maximum: 30)", "Minesweeper Rows") as null|num
|
||||||
if(!new_rows || !user.canUseTopic(src, !hasSiliconAccessInArea(user)))
|
if(!new_rows || !user.canUseTopic(src, !hasSiliconAccessInArea(user)))
|
||||||
return FALSE
|
return FALSE
|
||||||
new_rows = clamp(new_rows + 1, 4, 30)
|
new_rows = clamp(new_rows + 1, 4, 30)
|
||||||
playsound(loc, 'sound/arcade/minesweeper_menuselect.ogg', 50, 0, extrarange = -3, falloff = 10)
|
playsound(loc, 'sound/arcade/minesweeper_menuselect.ogg', 50, FALSE, extrarange = -3)
|
||||||
var/new_columns = input(user, "How many columns do you want? (Minimum: 4, Maximum: 50)", "Minesweeper Squares") as null|num
|
var/new_columns = input(user, "How many columns do you want? (Minimum: 4, Maximum: 50)", "Minesweeper Squares") as null|num
|
||||||
if(!new_columns || !user.canUseTopic(src, !hasSiliconAccessInArea(user)))
|
if(!new_columns || !user.canUseTopic(src, !hasSiliconAccessInArea(user)))
|
||||||
return FALSE
|
return FALSE
|
||||||
new_columns = clamp(new_columns + 1, 4, 50)
|
new_columns = clamp(new_columns + 1, 4, 50)
|
||||||
playsound(loc, 'sound/arcade/minesweeper_menuselect.ogg', 50, 0, extrarange = -3, falloff = 10)
|
playsound(loc, 'sound/arcade/minesweeper_menuselect.ogg', 50, FALSE, extrarange = -3)
|
||||||
var/grid_area = (new_rows - 1) * (new_columns - 1)
|
var/grid_area = (new_rows - 1) * (new_columns - 1)
|
||||||
var/lower_limit = round(grid_area*0.156)
|
var/lower_limit = round(grid_area*0.156)
|
||||||
var/upper_limit = round(grid_area*0.85)
|
var/upper_limit = round(grid_area*0.85)
|
||||||
var/new_mine_limit = input(user, "How many mines do you want? (Minimum: [lower_limit], Maximum: [upper_limit])", "Minesweeper Mines") as null|num
|
var/new_mine_limit = input(user, "How many mines do you want? (Minimum: [lower_limit], Maximum: [upper_limit])", "Minesweeper Mines") as null|num
|
||||||
if(!new_mine_limit || !user.canUseTopic(src, !hasSiliconAccessInArea(user)))
|
if(!new_mine_limit || !user.canUseTopic(src, !hasSiliconAccessInArea(user)))
|
||||||
return FALSE
|
return FALSE
|
||||||
playsound(loc, 'sound/arcade/minesweeper_menuselect.ogg', 50, 0, extrarange = -3, falloff = 10)
|
playsound(loc, 'sound/arcade/minesweeper_menuselect.ogg', 50, FALSE, extrarange = -3)
|
||||||
rows = new_rows
|
rows = new_rows
|
||||||
columns = new_columns
|
columns = new_columns
|
||||||
mine_limit = clamp(new_mine_limit, lower_limit, upper_limit)
|
mine_limit = clamp(new_mine_limit, lower_limit, upper_limit)
|
||||||
|
|||||||
@@ -17,14 +17,14 @@
|
|||||||
to_chat(c_user, "<span class='warning'>You move your hand towards the machine, and begin to hesitate as a bloodied guillotine emerges from inside of it...</span>")
|
to_chat(c_user, "<span class='warning'>You move your hand towards the machine, and begin to hesitate as a bloodied guillotine emerges from inside of it...</span>")
|
||||||
if(do_after(c_user, 50, target = src))
|
if(do_after(c_user, 50, target = src))
|
||||||
to_chat(c_user, "<span class='userdanger'>The guillotine drops on your arm, and the machine sucks it in!</span>")
|
to_chat(c_user, "<span class='userdanger'>The guillotine drops on your arm, and the machine sucks it in!</span>")
|
||||||
playsound(loc, 'sound/weapons/slice.ogg', 25, 1, -1)
|
playsound(loc, 'sound/weapons/slice.ogg', 25, TRUE, -1)
|
||||||
var/which_hand = BODY_ZONE_L_ARM
|
var/which_hand = BODY_ZONE_L_ARM
|
||||||
if(!(c_user.active_hand_index % 2))
|
if(!(c_user.active_hand_index % 2))
|
||||||
which_hand = BODY_ZONE_R_ARM
|
which_hand = BODY_ZONE_R_ARM
|
||||||
var/obj/item/bodypart/chopchop = c_user.get_bodypart(which_hand)
|
var/obj/item/bodypart/chopchop = c_user.get_bodypart(which_hand)
|
||||||
chopchop.dismember()
|
chopchop.dismember()
|
||||||
qdel(chopchop)
|
qdel(chopchop)
|
||||||
playsound(loc, 'sound/arcade/win.ogg', 50, 1, extrarange = -3, falloff = 10)
|
playsound(loc, 'sound/arcade/win.ogg', 50, TRUE, extrarange = -3)
|
||||||
for(var/i=1; i<=rand(3,5); i++)
|
for(var/i=1; i<=rand(3,5); i++)
|
||||||
prizevend(user)
|
prizevend(user)
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -130,7 +130,7 @@
|
|||||||
|
|
||||||
/obj/machinery/quantumpad/proc/doteleport(mob/user, obj/machinery/quantumpad/target_pad = linked_pad)
|
/obj/machinery/quantumpad/proc/doteleport(mob/user, obj/machinery/quantumpad/target_pad = linked_pad)
|
||||||
if(target_pad)
|
if(target_pad)
|
||||||
playsound(get_turf(src), 'sound/weapons/flash.ogg', 25, 1)
|
playsound(get_turf(src), 'sound/weapons/flash.ogg', 25, TRUE)
|
||||||
teleporting = TRUE
|
teleporting = TRUE
|
||||||
|
|
||||||
spawn(teleport_speed)
|
spawn(teleport_speed)
|
||||||
@@ -155,9 +155,9 @@
|
|||||||
target_pad.sparks()
|
target_pad.sparks()
|
||||||
|
|
||||||
flick("qpad-beam", src)
|
flick("qpad-beam", src)
|
||||||
playsound(get_turf(src), 'sound/weapons/emitter2.ogg', 25, 1, extrarange = 3, falloff = 5)
|
playsound(get_turf(src), 'sound/weapons/emitter2.ogg', 25, TRUE)
|
||||||
flick("qpad-beam", target_pad)
|
flick("qpad-beam", target_pad)
|
||||||
playsound(get_turf(target_pad), 'sound/weapons/emitter2.ogg', 25, 1, extrarange = 3, falloff = 5)
|
playsound(get_turf(target_pad), 'sound/weapons/emitter2.ogg', 25, TRUE)
|
||||||
for(var/atom/movable/ROI in get_turf(src))
|
for(var/atom/movable/ROI in get_turf(src))
|
||||||
if(QDELETED(ROI))
|
if(QDELETED(ROI))
|
||||||
continue //sleeps in CHECK_TICK
|
continue //sleeps in CHECK_TICK
|
||||||
|
|||||||
@@ -347,9 +347,9 @@
|
|||||||
last_hearcheck = world.time
|
last_hearcheck = world.time
|
||||||
for(var/mob/H in hearing_mobs)
|
for(var/mob/H in hearing_mobs)
|
||||||
if(!istype(H.loc, /obj/item/dogborg/sleeper))
|
if(!istype(H.loc, /obj/item/dogborg/sleeper))
|
||||||
H.playsound_local(source, null, 45, falloff = 0, S = pred_death)
|
H.playsound_local(source, null, 45, S = pred_death)
|
||||||
else if(H in contents)
|
else if(H in contents)
|
||||||
H.playsound_local(source, null, 65, falloff = 0, S = prey_death)
|
H.playsound_local(source, null, 65, S = prey_death)
|
||||||
for(var/belly in T.vore_organs)
|
for(var/belly in T.vore_organs)
|
||||||
var/obj/belly/B = belly
|
var/obj/belly/B = belly
|
||||||
for(var/atom/movable/thing in B)
|
for(var/atom/movable/thing in B)
|
||||||
@@ -391,9 +391,9 @@
|
|||||||
last_hearcheck = world.time
|
last_hearcheck = world.time
|
||||||
for(var/mob/H in hearing_mobs)
|
for(var/mob/H in hearing_mobs)
|
||||||
if(!istype(H.loc, /obj/item/dogborg/sleeper))
|
if(!istype(H.loc, /obj/item/dogborg/sleeper))
|
||||||
H.playsound_local(source, null, 45, falloff = 0, S = pred_digest)
|
H.playsound_local(source, null, 45, S = pred_digest)
|
||||||
else if(H in contents)
|
else if(H in contents)
|
||||||
H.playsound_local(source, null, 65, falloff = 0, S = prey_digest)
|
H.playsound_local(source, null, 65, S = prey_digest)
|
||||||
|
|
||||||
update_gut(hound)
|
update_gut(hound)
|
||||||
|
|
||||||
|
|||||||
+117
-38
@@ -1,4 +1,47 @@
|
|||||||
/proc/playsound(atom/source, soundin, vol as num, vary, extrarange as num, falloff, frequency = null, channel = 0, pressure_affected = TRUE, ignore_walls = TRUE, soundenvwet = -10000, soundenvdry = 0)
|
|
||||||
|
///Default override for echo
|
||||||
|
/sound
|
||||||
|
echo = list(
|
||||||
|
0, // Direct
|
||||||
|
0, // DirectHF
|
||||||
|
-10000, // Room, -10000 means no low frequency sound reverb
|
||||||
|
-10000, // RoomHF, -10000 means no high frequency sound reverb
|
||||||
|
0, // Obstruction
|
||||||
|
0, // ObstructionLFRatio
|
||||||
|
0, // Occlusion
|
||||||
|
0.25, // OcclusionLFRatio
|
||||||
|
1.5, // OcclusionRoomRatio
|
||||||
|
1.0, // OcclusionDirectRatio
|
||||||
|
0, // Exclusion
|
||||||
|
1.0, // ExclusionLFRatio
|
||||||
|
0, // OutsideVolumeHF
|
||||||
|
0, // DopplerFactor
|
||||||
|
0, // RolloffFactor
|
||||||
|
0, // RoomRolloffFactor
|
||||||
|
1.0, // AirAbsorptionFactor
|
||||||
|
0, // Flags (1 = Auto Direct, 2 = Auto Room, 4 = Auto RoomHF)
|
||||||
|
)
|
||||||
|
environment = SOUND_ENVIRONMENT_NONE //Default to none so sounds without overrides dont get reverb
|
||||||
|
|
||||||
|
/*! playsound
|
||||||
|
|
||||||
|
playsound is a proc used to play a 3D sound in a specific range. This uses SOUND_RANGE + extra_range to determine that.
|
||||||
|
|
||||||
|
source - Origin of sound
|
||||||
|
soundin - Either a file, or a string that can be used to get an SFX
|
||||||
|
vol - The volume of the sound, excluding falloff and pressure affection.
|
||||||
|
vary - bool that determines if the sound changes pitch every time it plays
|
||||||
|
extrarange - modifier for sound range. This gets added on top of SOUND_RANGE
|
||||||
|
falloff_exponent - Rate of falloff for the audio. Higher means quicker drop to low volume. Should generally be over 1 to indicate a quick dive to 0 rather than a slow dive.
|
||||||
|
frequency - playback speed of audio
|
||||||
|
channel - The channel the sound is played at
|
||||||
|
pressure_affected - Whether or not difference in pressure affects the sound (E.g. if you can hear in space)
|
||||||
|
ignore_walls - Whether or not the sound can pass through walls.
|
||||||
|
falloff_distance - Distance at which falloff begins. Sound is at peak volume (in regards to falloff) aslong as it is in this range.
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
/proc/playsound(atom/source, soundin, vol as num, vary, extrarange as num, falloff_exponent = SOUND_FALLOFF_EXPONENT, frequency = null, channel = 0, pressure_affected = TRUE, ignore_walls = TRUE, falloff_distance = SOUND_DEFAULT_FALLOFF_DISTANCE, use_reverb = TRUE)
|
||||||
if(isarea(source))
|
if(isarea(source))
|
||||||
CRASH("playsound(): source is an area")
|
CRASH("playsound(): source is an area")
|
||||||
|
|
||||||
@@ -10,26 +53,60 @@
|
|||||||
//allocate a channel if necessary now so its the same for everyone
|
//allocate a channel if necessary now so its the same for everyone
|
||||||
channel = channel || SSsounds.random_available_channel()
|
channel = channel || SSsounds.random_available_channel()
|
||||||
|
|
||||||
// Looping through the player list has the added bonus of working for mobs inside containers
|
// Looping through the player list has the added bonus of working for mobs inside containers
|
||||||
var/sound/S = sound(get_sfx(soundin))
|
var/sound/S = sound(get_sfx(soundin))
|
||||||
var/maxdistance = (world.view + extrarange)
|
var/maxdistance = SOUND_RANGE + extrarange
|
||||||
var/z = turf_source.z
|
var/source_z = turf_source.z
|
||||||
var/list/listeners = SSmobs.clients_by_zlevel[z]
|
var/list/listeners = SSmobs.clients_by_zlevel[source_z].Copy()
|
||||||
|
|
||||||
|
var/turf/above_turf = SSmapping.get_turf_above(turf_source)
|
||||||
|
var/turf/below_turf = SSmapping.get_turf_below(turf_source)
|
||||||
|
|
||||||
if(!ignore_walls) //these sounds don't carry through walls
|
if(!ignore_walls) //these sounds don't carry through walls
|
||||||
listeners = listeners & hearers(maxdistance,turf_source)
|
listeners = listeners & hearers(maxdistance,turf_source)
|
||||||
|
|
||||||
|
if(above_turf && istransparentturf(above_turf))
|
||||||
|
listeners += hearers(maxdistance,above_turf)
|
||||||
|
|
||||||
|
if(below_turf && istransparentturf(turf_source))
|
||||||
|
listeners += hearers(maxdistance,below_turf)
|
||||||
|
|
||||||
|
else
|
||||||
|
if(above_turf && istransparentturf(above_turf))
|
||||||
|
listeners += SSmobs.clients_by_zlevel[above_turf.z]
|
||||||
|
|
||||||
|
if(below_turf && istransparentturf(turf_source))
|
||||||
|
listeners += SSmobs.clients_by_zlevel[below_turf.z]
|
||||||
|
|
||||||
for(var/P in listeners)
|
for(var/P in listeners)
|
||||||
var/mob/M = P
|
var/mob/M = P
|
||||||
if(get_dist(M, turf_source) <= maxdistance)
|
if(get_dist(M, turf_source) <= maxdistance)
|
||||||
M.playsound_local(turf_source, soundin, vol, vary, frequency, falloff, channel, pressure_affected, S, soundenvwet, soundenvdry)
|
M.playsound_local(turf_source, soundin, vol, vary, frequency, falloff_exponent, channel, pressure_affected, S, maxdistance, falloff_distance)
|
||||||
for(var/P in SSmobs.dead_players_by_zlevel[z])
|
for(var/P in SSmobs.dead_players_by_zlevel[source_z])
|
||||||
var/mob/M = P
|
var/mob/M = P
|
||||||
if(get_dist(M, turf_source) <= maxdistance)
|
if(get_dist(M, turf_source) <= maxdistance)
|
||||||
M.playsound_local(turf_source, soundin, vol, vary, frequency, falloff, channel, pressure_affected, S, soundenvwet, soundenvdry)
|
M.playsound_local(turf_source, soundin, vol, vary, frequency, falloff_exponent, channel, pressure_affected, S, maxdistance, falloff_distance)
|
||||||
|
|
||||||
/mob/proc/playsound_local(turf/turf_source, soundin, vol as num, vary, frequency, falloff, channel = 0, pressure_affected = TRUE, sound/S, envwet = -10000, envdry = 0, manual_x, manual_y, distance_multiplier = 1)
|
/*! playsound
|
||||||
if(audiovisual_redirect)
|
|
||||||
var/turf/T = get_turf(src)
|
playsound_local is a proc used to play a sound directly on a mob from a specific turf.
|
||||||
audiovisual_redirect.playsound_local(turf_source, soundin, vol, vary, frequency, falloff, channel, pressure_affected, S, 0, -1000, turf_source.x - T.x, turf_source.y - T.y, distance_multiplier)
|
This is called by playsound to send sounds to players, in which case it also gets the max_distance of that sound.
|
||||||
|
|
||||||
|
turf_source - Origin of sound
|
||||||
|
soundin - Either a file, or a string that can be used to get an SFX
|
||||||
|
vol - The volume of the sound, excluding falloff
|
||||||
|
vary - bool that determines if the sound changes pitch every time it plays
|
||||||
|
frequency - playback speed of audio
|
||||||
|
falloff_exponent - Rate of falloff for the audio. Higher means quicker drop to low volume. Should generally be over 1 to indicate a quick dive to 0 rather than a slow dive.
|
||||||
|
channel - The channel the sound is played at
|
||||||
|
pressure_affected - Whether or not difference in pressure affects the sound (E.g. if you can hear in space)
|
||||||
|
max_distance - The peak distance of the sound, if this is a 3D sound
|
||||||
|
falloff_distance - Distance at which falloff begins, if this is a 3D sound
|
||||||
|
distance_multiplier - Can be used to multiply the distance at which the sound is heard
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
/mob/proc/playsound_local(turf/turf_source, soundin, vol as num, vary, frequency, falloff_exponent = SOUND_FALLOFF_EXPONENT, channel = 0, pressure_affected = TRUE, sound/S, max_distance, falloff_distance = SOUND_DEFAULT_FALLOFF_DISTANCE, distance_multiplier = 1, use_reverb = TRUE)
|
||||||
if(!client || !can_hear())
|
if(!client || !can_hear())
|
||||||
return
|
return
|
||||||
|
|
||||||
@@ -39,7 +116,6 @@
|
|||||||
S.wait = 0 //No queue
|
S.wait = 0 //No queue
|
||||||
S.channel = channel || SSsounds.random_available_channel()
|
S.channel = channel || SSsounds.random_available_channel()
|
||||||
S.volume = vol
|
S.volume = vol
|
||||||
S.environment = 7
|
|
||||||
|
|
||||||
if(vary)
|
if(vary)
|
||||||
if(frequency)
|
if(frequency)
|
||||||
@@ -51,13 +127,13 @@
|
|||||||
var/turf/T = get_turf(src)
|
var/turf/T = get_turf(src)
|
||||||
|
|
||||||
//sound volume falloff with distance
|
//sound volume falloff with distance
|
||||||
var/distance = 0
|
var/distance = get_dist(T, turf_source)
|
||||||
if(!manual_x && !manual_y)
|
|
||||||
distance = get_dist(T, turf_source)
|
|
||||||
|
|
||||||
distance *= distance_multiplier
|
distance *= distance_multiplier
|
||||||
|
|
||||||
S.volume -= max(distance - world.view, 0) * 2 //multiplicative falloff to add on top of natural audio falloff.
|
if(max_distance) //If theres no max_distance we're not a 3D sound, so no falloff.
|
||||||
|
S.volume -= (max(distance - falloff_distance, 0) ** (1 / falloff_exponent)) / ((max(max_distance, distance) - falloff_distance) ** (1 / falloff_exponent)) * S.volume
|
||||||
|
//https://www.desmos.com/calculator/sqdfl8ipgf
|
||||||
|
|
||||||
if(pressure_affected)
|
if(pressure_affected)
|
||||||
//Atmosphere affects sound
|
//Atmosphere affects sound
|
||||||
@@ -72,8 +148,6 @@
|
|||||||
else //space
|
else //space
|
||||||
pressure_factor = 0
|
pressure_factor = 0
|
||||||
|
|
||||||
S.echo = list(envdry, null, envwet, null, null, null, null, null, null, null, null, null, null, 1, 1, 1, null, null)
|
|
||||||
|
|
||||||
if(distance <= 1)
|
if(distance <= 1)
|
||||||
pressure_factor = max(pressure_factor, 0.15) //touching the source of the sound
|
pressure_factor = max(pressure_factor, 0.15) //touching the source of the sound
|
||||||
|
|
||||||
@@ -83,31 +157,36 @@
|
|||||||
if(S.volume <= 0)
|
if(S.volume <= 0)
|
||||||
return //No sound
|
return //No sound
|
||||||
|
|
||||||
var/dx = 0 // Hearing from the right/left
|
var/dx = turf_source.x - T.x // Hearing from the right/left
|
||||||
if(!manual_x)
|
|
||||||
dx = turf_source.x - T.x
|
|
||||||
else
|
|
||||||
dx = manual_x
|
|
||||||
S.x = dx * distance_multiplier
|
S.x = dx * distance_multiplier
|
||||||
var/dz = 0 // Hearing from infront/behind
|
var/dz = turf_source.y - T.y // Hearing from infront/behind
|
||||||
if(!manual_x)
|
|
||||||
dz = turf_source.y - T.y
|
|
||||||
else
|
|
||||||
dz = manual_y
|
|
||||||
S.z = dz * distance_multiplier
|
S.z = dz * distance_multiplier
|
||||||
// The y value is for above your head, but there is no ceiling in 2d spessmens.
|
var/dy = (turf_source.z - T.z) * 5 * distance_multiplier // Hearing from above / below, multiplied by 5 because we assume height is further along coords.
|
||||||
S.y = 1
|
S.y = dy
|
||||||
S.falloff = (falloff ? falloff : FALLOFF_SOUNDS)
|
|
||||||
|
S.falloff = max_distance || 1 //use max_distance, else just use 1 as we are a direct sound so falloff isnt relevant.
|
||||||
|
|
||||||
|
if(S.environment == SOUND_ENVIRONMENT_NONE)
|
||||||
|
if(sound_environment_override != SOUND_ENVIRONMENT_NONE)
|
||||||
|
S.environment = sound_environment_override
|
||||||
|
else
|
||||||
|
var/area/A = get_area(src)
|
||||||
|
if(A.sound_environment != SOUND_ENVIRONMENT_NONE)
|
||||||
|
S.environment = A.sound_environment
|
||||||
|
|
||||||
|
if(use_reverb && S.environment != SOUND_ENVIRONMENT_NONE) //We have reverb, reset our echo setting
|
||||||
|
S.echo[3] = 0 //Room setting, 0 means normal reverb
|
||||||
|
S.echo[4] = 0 //RoomHF setting, 0 means normal reverb.
|
||||||
|
|
||||||
SEND_SOUND(src, S)
|
SEND_SOUND(src, S)
|
||||||
|
|
||||||
/proc/sound_to_playing_players(soundin, volume = 100, vary = FALSE, frequency = 0, falloff = FALSE, channel = 0, pressure_affected = FALSE, sound/S)
|
/proc/sound_to_playing_players(soundin, volume = 100, vary = FALSE, frequency = 0, channel = 0, pressure_affected = FALSE, sound/S)
|
||||||
if(!S)
|
if(!S)
|
||||||
S = sound(get_sfx(soundin))
|
S = sound(get_sfx(soundin))
|
||||||
for(var/m in GLOB.player_list)
|
for(var/m in GLOB.player_list)
|
||||||
if(ismob(m) && !isnewplayer(m))
|
if(ismob(m) && !isnewplayer(m))
|
||||||
var/mob/M = m
|
var/mob/M = m
|
||||||
M.playsound_local(M, null, volume, vary, frequency, falloff, channel, pressure_affected, S)
|
M.playsound_local(M, null, volume, vary, frequency, null, channel, pressure_affected, S)
|
||||||
|
|
||||||
/mob/proc/stop_sound_channel(chan)
|
/mob/proc/stop_sound_channel(chan)
|
||||||
SEND_SOUND(src, sound(null, repeat = 0, wait = 0, channel = chan))
|
SEND_SOUND(src, sound(null, repeat = 0, wait = 0, channel = chan))
|
||||||
@@ -130,14 +209,14 @@
|
|||||||
/proc/get_sfx(soundin)
|
/proc/get_sfx(soundin)
|
||||||
if(istext(soundin))
|
if(istext(soundin))
|
||||||
switch(soundin)
|
switch(soundin)
|
||||||
if ("explosion_creaking") // from skyrat-ss13/skyrat13/pull/3295
|
|
||||||
soundin = pick('sound/effects/explosioncreak1.ogg', 'sound/effects/explosioncreak2.ogg')
|
|
||||||
if ("hull_creaking") // from skyrat-ss13/skyrat13/pull/3295
|
|
||||||
soundin = pick('sound/effects/creak1.ogg', 'sound/effects/creak2.ogg', 'sound/effects/creak3.ogg')
|
|
||||||
if ("shatter")
|
if ("shatter")
|
||||||
soundin = pick('sound/effects/glassbr1.ogg','sound/effects/glassbr2.ogg','sound/effects/glassbr3.ogg')
|
soundin = pick('sound/effects/glassbr1.ogg','sound/effects/glassbr2.ogg','sound/effects/glassbr3.ogg')
|
||||||
if ("explosion")
|
if ("explosion")
|
||||||
soundin = pick('sound/effects/explosion1.ogg','sound/effects/explosion2.ogg')
|
soundin = pick('sound/effects/explosion1.ogg','sound/effects/explosion2.ogg')
|
||||||
|
if ("explosion_creaking")
|
||||||
|
soundin = pick('sound/effects/explosioncreak1.ogg', 'sound/effects/explosioncreak2.ogg')
|
||||||
|
if ("hull_creaking")
|
||||||
|
soundin = pick('sound/effects/creak1.ogg', 'sound/effects/creak2.ogg', 'sound/effects/creak3.ogg')
|
||||||
if ("sparks")
|
if ("sparks")
|
||||||
soundin = pick('sound/effects/sparks1.ogg','sound/effects/sparks2.ogg','sound/effects/sparks3.ogg','sound/effects/sparks4.ogg')
|
soundin = pick('sound/effects/sparks1.ogg','sound/effects/sparks2.ogg','sound/effects/sparks3.ogg','sound/effects/sparks4.ogg')
|
||||||
if ("rustle")
|
if ("rustle")
|
||||||
|
|||||||
@@ -213,7 +213,7 @@
|
|||||||
if(canrespec)
|
if(canrespec)
|
||||||
to_chat(owner.current, "<span class='notice'>We have removed our evolutions from this form, and are now ready to readapt.</span>")
|
to_chat(owner.current, "<span class='notice'>We have removed our evolutions from this form, and are now ready to readapt.</span>")
|
||||||
reset_powers()
|
reset_powers()
|
||||||
playsound(get_turf(owner.current), 'sound/effects/lingreadapt.ogg', 75, TRUE, 5, soundenvwet = 0)
|
playsound(get_turf(owner.current), 'sound/effects/lingreadapt.ogg', 75, TRUE, 5)
|
||||||
canrespec = 0
|
canrespec = 0
|
||||||
SSblackbox.record_feedback("tally", "changeling_power_purchase", 1, "Readapt")
|
SSblackbox.record_feedback("tally", "changeling_power_purchase", 1, "Readapt")
|
||||||
return 1
|
return 1
|
||||||
|
|||||||
@@ -29,7 +29,7 @@
|
|||||||
for(var/obj/machinery/light/L in range(4, user))
|
for(var/obj/machinery/light/L in range(4, user))
|
||||||
L.on = 1
|
L.on = 1
|
||||||
L.break_light_tube()
|
L.break_light_tube()
|
||||||
playsound(get_turf(user), 'sound/effects/lingscreech.ogg', 75, TRUE, 5, soundenvwet = 0)
|
playsound(get_turf(user), 'sound/effects/lingscreech.ogg', 75, TRUE, 5)
|
||||||
return TRUE
|
return TRUE
|
||||||
|
|
||||||
/obj/effect/proc_holder/changeling/dissonant_shriek
|
/obj/effect/proc_holder/changeling/dissonant_shriek
|
||||||
@@ -49,5 +49,5 @@
|
|||||||
L.on = 1
|
L.on = 1
|
||||||
L.break_light_tube()
|
L.break_light_tube()
|
||||||
empulse_using_range(get_turf(user), 8, TRUE)
|
empulse_using_range(get_turf(user), 8, TRUE)
|
||||||
playsound(get_turf(user), 'sound/effects/lingempscreech.ogg', 75, TRUE, 5, soundenvwet = 0)
|
playsound(get_turf(user), 'sound/effects/lingempscreech.ogg', 75, TRUE, 5)
|
||||||
return TRUE
|
return TRUE
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
for(var/mob/M in GLOB.player_list)
|
for(var/mob/M in GLOB.player_list)
|
||||||
if(M.z == z)
|
if(M.z == z)
|
||||||
if(get_dist(src, M) >= 7)
|
if(get_dist(src, M) >= 7)
|
||||||
M.playsound_local(src, 'sound/magic/blink.ogg', 10, FALSE, falloff = 10)
|
M.playsound_local(src, 'sound/magic/blink.ogg', 10, FALSE)
|
||||||
else
|
else
|
||||||
M.playsound_local(src, 'sound/magic/blink.ogg', 50, FALSE)
|
M.playsound_local(src, 'sound/magic/blink.ogg', 50, FALSE)
|
||||||
|
|
||||||
|
|||||||
@@ -38,7 +38,7 @@
|
|||||||
var/path = "sound/chatter/[phomeme]_[length].ogg"
|
var/path = "sound/chatter/[phomeme]_[length].ogg"
|
||||||
|
|
||||||
playsound(loc, path,
|
playsound(loc, path,
|
||||||
vol = 40, vary = 0, extrarange = 3, falloff = FALSE)
|
vol = 40, vary = 0, extrarange = 3)
|
||||||
|
|
||||||
sleep((length + 1) * chatter_get_sleep_multiplier(phomeme))
|
sleep((length + 1) * chatter_get_sleep_multiplier(phomeme))
|
||||||
|
|
||||||
|
|||||||
@@ -82,5 +82,5 @@
|
|||||||
var/sound/music_played = sound(soundfile)
|
var/sound/music_played = sound(soundfile)
|
||||||
for(var/i in hearing_mobs)
|
for(var/i in hearing_mobs)
|
||||||
var/mob/M = i
|
var/mob/M = i
|
||||||
M.playsound_local(source, null, volume * using_instrument.volume_multiplier, falloff = 5, S = music_played)
|
M.playsound_local(source, null, volume * using_instrument.volume_multiplier, S = music_played)
|
||||||
// Could do environment and echo later but not for now
|
// Could do environment and echo later but not for now
|
||||||
|
|||||||
@@ -594,10 +594,18 @@ GLOBAL_LIST_INIT(ballmer_windows_me_msg, list("Yo man, what if, we like, uh, put
|
|||||||
drunkenness = max(drunkenness - (drunkenness * 0.04), 0)
|
drunkenness = max(drunkenness - (drunkenness * 0.04), 0)
|
||||||
if(drunkenness >= 6)
|
if(drunkenness >= 6)
|
||||||
SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "drunk", /datum/mood_event/drunk)
|
SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "drunk", /datum/mood_event/drunk)
|
||||||
|
if(prob(25))
|
||||||
|
slurring += 2
|
||||||
jitteriness = max(jitteriness - 3, 0)
|
jitteriness = max(jitteriness - 3, 0)
|
||||||
|
// throw_alert("drunk", /atom/movable/screen/alert/drunk)
|
||||||
if(HAS_TRAIT(src, TRAIT_DRUNK_HEALING))
|
if(HAS_TRAIT(src, TRAIT_DRUNK_HEALING))
|
||||||
adjustBruteLoss(-0.12, FALSE)
|
adjustBruteLoss(-0.12, FALSE)
|
||||||
adjustFireLoss(-0.06, FALSE)
|
adjustFireLoss(-0.06, FALSE)
|
||||||
|
sound_environment_override = SOUND_ENVIRONMENT_PSYCHOTIC
|
||||||
|
else
|
||||||
|
SEND_SIGNAL(src, COMSIG_CLEAR_MOOD_EVENT, "drunk")
|
||||||
|
clear_alert("drunk")
|
||||||
|
sound_environment_override = SOUND_ENVIRONMENT_NONE
|
||||||
|
|
||||||
if(mind && (mind.assigned_role == "Scientist" || mind.assigned_role == "Research Director"))
|
if(mind && (mind.assigned_role == "Scientist" || mind.assigned_role == "Research Director"))
|
||||||
if(SSresearch.science_tech)
|
if(SSresearch.science_tech)
|
||||||
|
|||||||
@@ -8,10 +8,12 @@
|
|||||||
overlay_fullscreen("high", /obj/screen/fullscreen/high)
|
overlay_fullscreen("high", /obj/screen/fullscreen/high)
|
||||||
throw_alert("high", /obj/screen/alert/high)
|
throw_alert("high", /obj/screen/alert/high)
|
||||||
SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "high", /datum/mood_event/high)
|
SEND_SIGNAL(src, COMSIG_ADD_MOOD_EVENT, "high", /datum/mood_event/high)
|
||||||
|
sound_environment_override = SOUND_ENVIRONMENT_DRUGGED
|
||||||
else
|
else
|
||||||
clear_fullscreen("high")
|
clear_fullscreen("high")
|
||||||
clear_alert("high")
|
clear_alert("high")
|
||||||
SEND_SIGNAL(src, COMSIG_CLEAR_MOOD_EVENT, "high")
|
SEND_SIGNAL(src, COMSIG_CLEAR_MOOD_EVENT, "high")
|
||||||
|
sound_environment_override = SOUND_ENVIRONMENT_NONE
|
||||||
|
|
||||||
/mob/living/carbon/set_drugginess(amount)
|
/mob/living/carbon/set_drugginess(amount)
|
||||||
druggy = max(amount, 0)
|
druggy = max(amount, 0)
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
blocks_emissive = EMISSIVE_BLOCK_GENERIC
|
blocks_emissive = EMISSIVE_BLOCK_GENERIC
|
||||||
|
|
||||||
vis_flags = VIS_INHERIT_PLANE //when this be added to vis_contents of something it inherit something.plane, important for visualisation of mob in openspace.
|
vis_flags = VIS_INHERIT_PLANE //when this be added to vis_contents of something it inherit something.plane, important for visualisation of mob in openspace.
|
||||||
|
|
||||||
attack_hand_is_action = TRUE
|
attack_hand_is_action = TRUE
|
||||||
attack_hand_unwieldlyness = CLICK_CD_MELEE
|
attack_hand_unwieldlyness = CLICK_CD_MELEE
|
||||||
attack_hand_speed = 0
|
attack_hand_speed = 0
|
||||||
@@ -169,3 +169,6 @@
|
|||||||
var/typing_indicator_timerid
|
var/typing_indicator_timerid
|
||||||
/// Current state of our typing indicator. Used for cut overlay, DO NOT RUNTIME ASSIGN OTHER THAN FROM SHOW/CLEAR. Used to absolutely ensure we do not get stuck overlays.
|
/// Current state of our typing indicator. Used for cut overlay, DO NOT RUNTIME ASSIGN OTHER THAN FROM SHOW/CLEAR. Used to absolutely ensure we do not get stuck overlays.
|
||||||
var/mutable_appearance/typing_indicator_current
|
var/mutable_appearance/typing_indicator_current
|
||||||
|
|
||||||
|
///Override for sound_environments. If this is set the user will always hear a specific type of reverb (Instead of the area defined reverb)
|
||||||
|
var/sound_environment_override = SOUND_ENVIRONMENT_NONE
|
||||||
|
|||||||
@@ -27,7 +27,7 @@
|
|||||||
// user?.mind?.adjust_experience(/datum/skill/gaming, 1)
|
// user?.mind?.adjust_experience(/datum/skill/gaming, 1)
|
||||||
if(boss_hp <= 0)
|
if(boss_hp <= 0)
|
||||||
heads_up = "You have crushed [boss_name]! Rejoice!"
|
heads_up = "You have crushed [boss_name]! Rejoice!"
|
||||||
playsound(computer.loc, 'sound/arcade/win.ogg', 50, TRUE, extrarange = -3, falloff = 10)
|
playsound(computer.loc, 'sound/arcade/win.ogg', 50, TRUE, extrarange = -3)
|
||||||
game_active = FALSE
|
game_active = FALSE
|
||||||
program_icon_state = "arcade_off"
|
program_icon_state = "arcade_off"
|
||||||
if(istype(computer))
|
if(istype(computer))
|
||||||
@@ -37,7 +37,7 @@
|
|||||||
sleep(10)
|
sleep(10)
|
||||||
else if(player_hp <= 0 || player_mp <= 0)
|
else if(player_hp <= 0 || player_mp <= 0)
|
||||||
heads_up = "You have been defeated... how will the station survive?"
|
heads_up = "You have been defeated... how will the station survive?"
|
||||||
playsound(computer.loc, 'sound/arcade/lose.ogg', 50, TRUE, extrarange = -3, falloff = 10)
|
playsound(computer.loc, 'sound/arcade/lose.ogg', 50, TRUE, extrarange = -3)
|
||||||
game_active = FALSE
|
game_active = FALSE
|
||||||
program_icon_state = "arcade_off"
|
program_icon_state = "arcade_off"
|
||||||
if(istype(computer))
|
if(istype(computer))
|
||||||
@@ -57,17 +57,17 @@
|
|||||||
return
|
return
|
||||||
if (boss_mp <= 5)
|
if (boss_mp <= 5)
|
||||||
heads_up = "[boss_mpamt] magic power has been stolen from you!"
|
heads_up = "[boss_mpamt] magic power has been stolen from you!"
|
||||||
playsound(computer.loc, 'sound/arcade/steal.ogg', 50, TRUE, extrarange = -3, falloff = 10)
|
playsound(computer.loc, 'sound/arcade/steal.ogg', 50, TRUE, extrarange = -3)
|
||||||
player_mp -= boss_mpamt
|
player_mp -= boss_mpamt
|
||||||
boss_mp += boss_mpamt
|
boss_mp += boss_mpamt
|
||||||
else if(boss_mp > 5 && boss_hp <12)
|
else if(boss_mp > 5 && boss_hp <12)
|
||||||
heads_up = "[boss_name] heals for [bossheal] health!"
|
heads_up = "[boss_name] heals for [bossheal] health!"
|
||||||
playsound(computer.loc, 'sound/arcade/heal.ogg', 50, TRUE, extrarange = -3, falloff = 10)
|
playsound(computer.loc, 'sound/arcade/heal.ogg', 50, TRUE, extrarange = -3)
|
||||||
boss_hp += bossheal
|
boss_hp += bossheal
|
||||||
boss_mp -= boss_mpamt
|
boss_mp -= boss_mpamt
|
||||||
else
|
else
|
||||||
heads_up = "[boss_name] attacks you for [boss_attackamt] damage!"
|
heads_up = "[boss_name] attacks you for [boss_attackamt] damage!"
|
||||||
playsound(computer.loc, 'sound/arcade/hit.ogg', 50, TRUE, extrarange = -3, falloff = 10)
|
playsound(computer.loc, 'sound/arcade/hit.ogg', 50, TRUE, extrarange = -3)
|
||||||
player_hp -= boss_attackamt
|
player_hp -= boss_attackamt
|
||||||
|
|
||||||
pause_state = FALSE
|
pause_state = FALSE
|
||||||
@@ -106,7 +106,7 @@
|
|||||||
attackamt = rand(2,6)// + rand(0, gamerSkill)
|
attackamt = rand(2,6)// + rand(0, gamerSkill)
|
||||||
pause_state = TRUE
|
pause_state = TRUE
|
||||||
heads_up = "You attack for [attackamt] damage."
|
heads_up = "You attack for [attackamt] damage."
|
||||||
playsound(computer.loc, 'sound/arcade/hit.ogg', 50, TRUE, extrarange = -3, falloff = 10)
|
playsound(computer.loc, 'sound/arcade/hit.ogg', 50, TRUE, extrarange = -3)
|
||||||
boss_hp -= attackamt
|
boss_hp -= attackamt
|
||||||
sleep(10)
|
sleep(10)
|
||||||
game_check()
|
game_check()
|
||||||
@@ -123,7 +123,7 @@
|
|||||||
healcost = rand(1, maxPointCost)
|
healcost = rand(1, maxPointCost)
|
||||||
pause_state = TRUE
|
pause_state = TRUE
|
||||||
heads_up = "You heal for [healamt] damage."
|
heads_up = "You heal for [healamt] damage."
|
||||||
playsound(computer.loc, 'sound/arcade/heal.ogg', 50, TRUE, extrarange = -3, falloff = 10)
|
playsound(computer.loc, 'sound/arcade/heal.ogg', 50, TRUE, extrarange = -3)
|
||||||
player_hp += healamt
|
player_hp += healamt
|
||||||
player_mp -= healcost
|
player_mp -= healcost
|
||||||
sleep(10)
|
sleep(10)
|
||||||
@@ -136,7 +136,7 @@
|
|||||||
rechargeamt = rand(4,7)// + rand(0, gamerSkill)
|
rechargeamt = rand(4,7)// + rand(0, gamerSkill)
|
||||||
pause_state = TRUE
|
pause_state = TRUE
|
||||||
heads_up = "You regain [rechargeamt] magic power."
|
heads_up = "You regain [rechargeamt] magic power."
|
||||||
playsound(computer.loc, 'sound/arcade/mana.ogg', 50, TRUE, extrarange = -3, falloff = 10)
|
playsound(computer.loc, 'sound/arcade/mana.ogg', 50, TRUE, extrarange = -3)
|
||||||
player_mp += rechargeamt
|
player_mp += rechargeamt
|
||||||
sleep(10)
|
sleep(10)
|
||||||
game_check()
|
game_check()
|
||||||
|
|||||||
@@ -807,7 +807,7 @@
|
|||||||
for(var/mob/M in SSmobs.clients_by_zlevel[z])
|
for(var/mob/M in SSmobs.clients_by_zlevel[z])
|
||||||
var/dist_far = get_dist(M, distant_source)
|
var/dist_far = get_dist(M, distant_source)
|
||||||
if(dist_far <= long_range && dist_far > range)
|
if(dist_far <= long_range && dist_far > range)
|
||||||
M.playsound_local(distant_source, "sound/effects/[selected_sound]_distance.ogg", 100, falloff = 20)
|
M.playsound_local(distant_source, "sound/effects/[selected_sound]_distance.ogg", 100)
|
||||||
else if(dist_far <= range)
|
else if(dist_far <= range)
|
||||||
var/source
|
var/source
|
||||||
if(engine_list.len == 0)
|
if(engine_list.len == 0)
|
||||||
@@ -819,7 +819,7 @@
|
|||||||
if(dist_near < closest_dist)
|
if(dist_near < closest_dist)
|
||||||
source = O
|
source = O
|
||||||
closest_dist = dist_near
|
closest_dist = dist_near
|
||||||
M.playsound_local(source, "sound/effects/[selected_sound].ogg", 100, falloff = range / 2)
|
M.playsound_local(source, "sound/effects/[selected_sound].ogg", 100)
|
||||||
|
|
||||||
// Losing all initial engines should get you 2
|
// Losing all initial engines should get you 2
|
||||||
// Adding another set of engines at 0.5 time
|
// Adding another set of engines at 0.5 time
|
||||||
|
|||||||
@@ -247,7 +247,7 @@
|
|||||||
for(var/mob/living/H in hearing_mobs)
|
for(var/mob/living/H in hearing_mobs)
|
||||||
if(H && H.client && (isturf(H.loc) || (H.loc != src.contents)))
|
if(H && H.client && (isturf(H.loc) || (H.loc != src.contents)))
|
||||||
var/sound/releasement = GLOB.pred_release_sounds[release_sound]
|
var/sound/releasement = GLOB.pred_release_sounds[release_sound]
|
||||||
H.playsound_local(owner.loc, releasement, vol = 75, vary = 1, falloff = VORE_SOUND_FALLOFF)
|
H.playsound_local(owner.loc, releasement, 75, TRUE)
|
||||||
else if(H?.client && (H in contents))
|
else if(H?.client && (H in contents))
|
||||||
var/sound/releasement = GLOB.prey_release_sounds[release_sound]
|
var/sound/releasement = GLOB.prey_release_sounds[release_sound]
|
||||||
SEND_SOUND(H,releasement)
|
SEND_SOUND(H,releasement)
|
||||||
@@ -303,7 +303,7 @@
|
|||||||
for(var/mob/living/H in hearing_mobs)
|
for(var/mob/living/H in hearing_mobs)
|
||||||
if(H && H.client && (isturf(H.loc) || (H.loc != src.contents)))
|
if(H && H.client && (isturf(H.loc) || (H.loc != src.contents)))
|
||||||
var/sound/releasement = GLOB.pred_release_sounds[release_sound]
|
var/sound/releasement = GLOB.pred_release_sounds[release_sound]
|
||||||
H.playsound_local(owner.loc, releasement, vol = 75, vary = 1, falloff = VORE_SOUND_FALLOFF)
|
H.playsound_local(owner.loc, releasement, 75, TRUE)
|
||||||
else if(H?.client && (H in contents))
|
else if(H?.client && (H in contents))
|
||||||
var/sound/releasement = GLOB.prey_release_sounds[release_sound]
|
var/sound/releasement = GLOB.prey_release_sounds[release_sound]
|
||||||
SEND_SOUND(H,releasement)
|
SEND_SOUND(H,releasement)
|
||||||
@@ -365,7 +365,7 @@
|
|||||||
for(var/mob/living/H in hearing_mobs)
|
for(var/mob/living/H in hearing_mobs)
|
||||||
if(H && H.client && (isturf(H.loc) || (H.loc != src.contents)))
|
if(H && H.client && (isturf(H.loc) || (H.loc != src.contents)))
|
||||||
var/sound/eating = GLOB.pred_vore_sounds[vore_sound]
|
var/sound/eating = GLOB.pred_vore_sounds[vore_sound]
|
||||||
H.playsound_local(owner.loc, eating, vol = 75, vary = 1, falloff = VORE_SOUND_FALLOFF)
|
H.playsound_local(owner.loc, eating, 75, TRUE)
|
||||||
else if(H?.client && (H in contents))
|
else if(H?.client && (H in contents))
|
||||||
var/sound/eating = GLOB.prey_vore_sounds[vore_sound]
|
var/sound/eating = GLOB.prey_vore_sounds[vore_sound]
|
||||||
SEND_SOUND(H,eating)
|
SEND_SOUND(H,eating)
|
||||||
@@ -584,14 +584,14 @@
|
|||||||
if(is_wet)
|
if(is_wet)
|
||||||
for(var/mob/living/H in hearing_mobs)
|
for(var/mob/living/H in hearing_mobs)
|
||||||
if(H && H.client && (isturf(H.loc) || (H.loc != src.contents)))
|
if(H && H.client && (isturf(H.loc) || (H.loc != src.contents)))
|
||||||
H.playsound_local(owner.loc, pred_struggle_snuggle, vol = 75, vary = 1, falloff = VORE_SOUND_FALLOFF)
|
H.playsound_local(owner.loc, pred_struggle_snuggle, 75, TRUE)
|
||||||
else if(H && H.client && (H in contents))
|
else if(H && H.client && (H in contents))
|
||||||
SEND_SOUND(H,prey_struggle_snuggle)
|
SEND_SOUND(H,prey_struggle_snuggle)
|
||||||
|
|
||||||
else
|
else
|
||||||
for(var/mob/living/H in hearing_mobs)
|
for(var/mob/living/H in hearing_mobs)
|
||||||
if(H && H.client)
|
if(H && H.client)
|
||||||
H.playsound_local(owner.loc, struggle_rustle, vol = 75, vary = 1, falloff = VORE_SOUND_FALLOFF)
|
H.playsound_local(owner.loc, struggle_rustle, 75, TRUE)
|
||||||
|
|
||||||
for(var/mob/living/H in hearing_mobs)
|
for(var/mob/living/H in hearing_mobs)
|
||||||
if(H && H.client && (isturf(H.loc)))
|
if(H && H.client && (isturf(H.loc)))
|
||||||
|
|||||||
@@ -245,7 +245,7 @@
|
|||||||
last_hearcheck = world.time
|
last_hearcheck = world.time
|
||||||
for(var/mob/M in hearing_mobs) //so we don't fill the whole room with the sound effect
|
for(var/mob/M in hearing_mobs) //so we don't fill the whole room with the sound effect
|
||||||
if(M && M.client && (isturf(M.loc) || (M.loc != src.contents))) //to avoid people on the inside getting the outside sounds and their direct sounds + built in sound pref check
|
if(M && M.client && (isturf(M.loc) || (M.loc != src.contents))) //to avoid people on the inside getting the outside sounds and their direct sounds + built in sound pref check
|
||||||
M.playsound_local(owner.loc, play_sound, vol = 75, vary = 1, falloff = VORE_SOUND_FALLOFF)
|
M.playsound_local(owner.loc, play_sound, 75, TRUE)
|
||||||
//these are all external sound triggers now, so it's ok.
|
//these are all external sound triggers now, so it's ok.
|
||||||
if(to_update)
|
if(to_update)
|
||||||
for(var/mob/living/M in contents)
|
for(var/mob/living/M in contents)
|
||||||
|
|||||||
Reference in New Issue
Block a user