mirror of
https://github.com/PolarisSS13/Polaris.git
synced 2025-12-19 14:42:25 +00:00
Fixed meteor spawning so all the meteors that are set to spawn actually hit, but noticed that 50 meteors every 5 seconds proved itself to be way too laggy when all of them actually spawned properly and aren't deleted at soon as they're created due to being on the map's edge. Instead I lowered it to 6 per second. Wrote this in the changelog. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@2679 316c924e-a436-60f5-8080-3fe189b3f50e
71 lines
2.3 KiB
Plaintext
71 lines
2.3 KiB
Plaintext
/datum/game_mode/meteor
|
|
name = "meteor"
|
|
config_tag = "meteor"
|
|
var/const/waittime_l = 600 //lower bound on time before intercept arrives (in tenths of seconds)
|
|
var/const/waittime_h = 1800 //upper bound on time before intercept arrives (in tenths of seconds)
|
|
var/const/meteordelay = 2000
|
|
var/nometeors = 1
|
|
required_players = 0
|
|
|
|
|
|
/datum/game_mode/meteor/announce()
|
|
world << "<B>The current game mode is - Meteor!</B>"
|
|
world << "<B>The space station has been stuck in a major meteor shower. You must escape from the station or at least live.</B>"
|
|
|
|
|
|
/datum/game_mode/meteor/post_setup()
|
|
defer_powernet_rebuild = 2//Might help with the lag
|
|
spawn (rand(waittime_l, waittime_h))
|
|
send_intercept()
|
|
spawn(meteordelay)
|
|
nometeors = 0
|
|
..()
|
|
|
|
|
|
/datum/game_mode/meteor/process()
|
|
if(nometeors) return
|
|
/*if(prob(80))
|
|
spawn()
|
|
dust_swarm("norm")
|
|
else
|
|
spawn()
|
|
dust_swarm("strong")*/
|
|
spawn() spawn_meteors(6)
|
|
|
|
|
|
/datum/game_mode/meteor/declare_completion()
|
|
var/list/survivors = list()
|
|
var/area/escape_zone = locate(/area/shuttle/escape/centcom)
|
|
var/area/pod_zone = list( /area/shuttle/escape_pod1/centcom, /area/shuttle/escape_pod2/centcom, /area/shuttle/escape_pod3/centcom, /area/shuttle/escape_pod5/centcom )
|
|
|
|
for(var/mob/living/player in world)
|
|
if (player.client)
|
|
if (player.stat != 2)
|
|
var/turf/location = get_turf(player.loc)
|
|
if (location in escape_zone)
|
|
survivors[player.real_name] = "shuttle"
|
|
else if (location.loc.type in pod_zone)
|
|
survivors[player.real_name] = "pod"
|
|
else
|
|
survivors[player.real_name] = "alive"
|
|
|
|
feedback_set_details("round_end_result","end - evacuation")
|
|
feedback_set("round_end_result",survivors.len)
|
|
|
|
if (survivors.len)
|
|
world << "\blue <B>The following survived the meteor attack!</B>"
|
|
for(var/survivor in survivors)
|
|
var/condition = survivors[survivor]
|
|
switch(condition)
|
|
if("shuttle")
|
|
world << "\t <B><FONT size = 2>[survivor] escaped on the shuttle!</FONT></B>"
|
|
if("pod")
|
|
world << "\t <FONT size = 2>[survivor] escaped on an escape pod!</FONT>"
|
|
if("alive")
|
|
world << "\t <FONT size = 1>[survivor] stayed alive. Whereabouts unknown.</FONT>"
|
|
else
|
|
world << "\blue <B>No one survived the meteor attack!</B>"
|
|
|
|
..()
|
|
return 1
|