Release Update

Merge branch 'release' of https://github.com/VOREStation/VOREStation into voreupdate

# Conflicts:
#	code/__defines/machinery.dm
#	code/controllers/configuration.dm
#	code/game/jobs/jobs.dm
#	code/game/machinery/doors/blast_door.dm
#	code/game/machinery/pipe/pipe_recipes.dm
#	code/game/objects/items/devices/radio/radio_vr.dm
#	code/modules/client/preferences_vr.dm
#	code/modules/clothing/glasses/hud_vr.dm
#	code/modules/clothing/under/accessories/accessory_vr.dm
#	code/modules/events/event_container_vr.dm
#	code/modules/gamemaster/actions/planet_weather_change.dm
#	code/modules/projectiles/guns/energy/netgun_vr.dm
#	code/modules/projectiles/guns/energy/protector_vr.dm
#	code/modules/vore/appearance/sprite_accessories_taur_vr.dm
#	code/modules/vore/appearance/sprite_accessories_vr.dm
#	code/modules/vore/fluffstuff/custom_guns_vr.dm
#	icons/obj/power.dmi
#	vorestation.dme
This commit is contained in:
Repede
2020-04-16 21:07:33 -04:00
657 changed files with 195131 additions and 226215 deletions

View File

@@ -40,12 +40,10 @@
if(spawn_locations.len) // Okay we've got landmarks, lets use those!
shuffle_inplace(spawn_locations)
num_groups = min(num_groups, spawn_locations.len)
var/i = 1
while (i <= num_groups)
for (var/i = 1, i <= num_groups, i++)
var/group_size = rand(group_size_min, group_size_max)
for (var/j = 0, j < group_size, j++)
spawn_one_carp(spawn_locations[i])
i++
return
// Okay we did *not* have any landmarks, so lets do our best!

View File

@@ -35,8 +35,16 @@
/datum/event/electrical_storm/tick()
..()
// See if shields can stop it first (It would be nice to port baystation's cooler shield gens perhaps)
// TODO - We need a better shield generator system to handle this properly.
// See if shields can stop it first
var/list/shields = list()
for(var/obj/machinery/power/shield_generator/G in global.machines)
if((G.z in affecting_z) && G.running && G.check_flag(MODEFLAG_EM))
shields += G
if(shields.len)
var/obj/machinery/power/shield_generator/shield_gen = pick(shields)
//Minor breaches aren't enough to let through frying amounts of power
if(shield_gen.deal_shield_damage(30 * severity, SHIELD_DAMTYPE_EM) <= SHIELD_BREACHED_MINOR)
return
if(!valid_apcs.len)
log_debug("No valid APCs found for electrical storm event ship=[victim]!")
return

View File

@@ -58,7 +58,7 @@
var/datum/event_meta/event_meta = null
var/list/affecting_z = null // List of z-levels to affect, null lets the event choose (usally station_levels)
var/has_skybox_image = FALSE // True if SSskybox should query this event for an image to put in the skybox.
var/obj/effect/overmap/visitable/ship/victim = null // Ship that triggered this event on itself. Some messages might be different etc.
var/obj/effect/overmap/visitable/ship/victim = null // Ship this event is acting upon (If this is event is due to overmap travel).nt etc.
/datum/event/nothing
@@ -137,27 +137,29 @@
activeFor++
//Called when start(), announce() and end() has all been called.
/datum/event/proc/kill()
/datum/event/proc/kill(external_use = FALSE)
// If this event was forcefully killed run end() for individual cleanup
if(isRunning)
isRunning = 0
end()
endedAt = world.time
SSevents.event_complete(src)
if(!external_use)
SSevents.event_complete(src)
//Called during building of skybox to get overlays
/datum/event/proc/get_skybox_image()
return
/datum/event/New(var/datum/event_meta/EM)
/datum/event/New(var/datum/event_meta/EM, external_use = FALSE)
// event needs to be responsible for this, as stuff like APLUs currently make their own events for curious reasons
SSevents.active_events += src
if(!external_use)
SSevents.active_events += src
event_meta = EM
severity = event_meta.severity
if(severity < EVENT_LEVEL_MUNDANE) severity = EVENT_LEVEL_MUNDANE
if(severity > EVENT_LEVEL_MAJOR) severity = EVENT_LEVEL_MAJOR
event_meta = EM
severity = event_meta.severity
if(severity < EVENT_LEVEL_MUNDANE) severity = EVENT_LEVEL_MUNDANE
if(severity > EVENT_LEVEL_MAJOR) severity = EVENT_LEVEL_MAJOR
startedAt = world.time

View File

@@ -52,7 +52,7 @@ var/list/event_last_fired = list()
possibleEvents[/datum/event/pda_spam] = max(min(25, player_list.len) * 4, 200)
possibleEvents[/datum/event/money_lotto] = max(min(5, player_list.len), 50)
if(account_hack_attempted)
if(GLOB.account_hack_attempted)
possibleEvents[/datum/event/money_hacker] = max(min(25, player_list.len) * 4, 200)

View File

@@ -15,7 +15,7 @@
/datum/event/gravity/start()
gravity_is_on = 0
for(var/area/A in all_areas)
for(var/area/A in world)
if(A.z in zLevels)
A.gravitychange(gravity_is_on)
@@ -23,7 +23,7 @@
if(!gravity_is_on)
gravity_is_on = 1
for(var/area/A in all_areas)
for(var/area/A in world)
if(A.z in zLevels)
A.gravitychange(gravity_is_on)

View File

@@ -2,6 +2,7 @@
/datum/event/ionstorm
has_skybox_image = TRUE
announceWhen = -1 // Never (setup may override)
var/botEmagChance = 0 //VOREStation Edit
var/cloud_hueshift
var/list/players = list()
@@ -17,10 +18,13 @@
/datum/event/ionstorm/setup()
endWhen = rand(500, 1500)
if(prob(50))
announceWhen = endWhen + rand(250, 400)
// Interestingly enough, announce() actually *DOES* this event for some reason.
/datum/event/ionstorm/announce()
// command_alert("The station has entered an ion storm. Monitor all electronic equipment for malfunctions", "Anomaly Alert")
command_announcement.Announce("It has come to our attention that \the [location_name()] passed through an ion storm. Please monitor all electronic equipment for malfunctions.", "Anomaly Alert")
/datum/event/ionstorm/start()
for (var/mob/living/carbon/human/player in player_list)
if( !player.mind || player_is_antag(player.mind, only_offstation_roles = 1) || player.client.inactivity > MinutesToTicks(10))
continue
@@ -67,11 +71,6 @@
if(prob(botEmagChance))
bot.emag_act(1)
/datum/event/ionstorm/end()
..()
if(prob(50))
spawn(rand(5000,8000))
command_announcement.Announce("It has come to our attention that \the [location_name()] passed through an ion storm. Please monitor all electronic equipment for malfunctions.", "Anomaly Alert")
// Overmap version
/datum/event/ionstorm/overmap/announce()

View File

@@ -2,7 +2,8 @@
startWhen = 30 // About one minute early warning
endWhen = 60 // Adjusted automatically in tick()
has_skybox_image = TRUE
var/next_meteor = 6
var/alarmWhen = 30
var/next_meteor = 40
var/waves = 1
var/start_side
var/next_meteor_lower = 10
@@ -32,6 +33,12 @@
command_announcement.Announce("\The [location_name()] is now in a meteor shower.", "Meteor Alert")
/datum/event/meteor_wave/tick()
// Begin sending the alarm signals to shield diffusers so the field is already regenerated (if it exists) by the time actual meteors start flying around.
if(activeFor >= alarmWhen)
for(var/obj/machinery/shield_diffuser/SD in global.machines)
if(SD.z in affecting_z)
SD.meteor_alarm(10)
if(waves && activeFor >= next_meteor)
send_wave()
@@ -105,10 +112,11 @@
next_meteor_lower = 5
next_meteor_upper = 10
next_meteor = 0
alarmWhen = 0
/datum/event/meteor_wave/overmap/tick()
if(victim && !victim.is_still()) // Meteors mostly fly in your face
start_side = prob(90) ? victim.fore_dir : pick(GLOB.cardinal)
if(victim && !victim.is_still() && prob(90)) // Meteors mostly fly in your face
start_side = victim.fore_dir
else //Unless you're standing still
start_side = pick(GLOB.cardinal)
..()

View File

@@ -1,5 +1,7 @@
//var/global/account_hack_attempted = 0
GLOBAL_VAR_INIT(account_hack_attempted, 0)
/datum/event/money_hacker
var/datum/money_account/affected_account
endWhen = 100
@@ -10,7 +12,7 @@
if(all_money_accounts.len)
affected_account = pick(all_money_accounts)
account_hack_attempted = 1
GLOB.account_hack_attempted = 1
else
kill()

View File

@@ -41,7 +41,7 @@
/datum/event/prison_break/start()
for(var/area/A in all_areas)
for(var/area/A in world)
if(is_type_in_list(A,areaType) && !is_type_in_list(A,areaNotType))
areas += A

View File

@@ -1,4 +1,4 @@
//var/global/list/event_viruses = list() // so that event viruses are kept around for admin logs, rather than being GCed
var/global/list/event_viruses = list() // so that event viruses are kept around for admin logs, rather than being GCed
datum/event/viral_infection
var/list/viruses = list()