Refactors cinematics.
This commit is contained in:
committed by
CitadelStationBot
parent
26f0af19e0
commit
fd0bc465cc
@@ -0,0 +1,11 @@
|
|||||||
|
#define CINEMATIC_DEFAULT 1
|
||||||
|
#define CINEMATIC_SELFDESTRUCT 2
|
||||||
|
#define CINEMATIC_SELFDESTRUCT_MISS 3
|
||||||
|
#define CINEMATIC_NUKE_WIN 4
|
||||||
|
#define CINEMATIC_NUKE_MISS 5
|
||||||
|
#define CINEMATIC_ANNIHILATION 6
|
||||||
|
#define CINEMATIC_MALF 7
|
||||||
|
#define CINEMATIC_CULT 8
|
||||||
|
#define CINEMATIC_NUKE_FAKE 9
|
||||||
|
#define CINEMATIC_NUKE_NO_CORE 10
|
||||||
|
#define CINEMATIC_NUKE_FAR 11
|
||||||
@@ -51,14 +51,14 @@ SUBSYSTEM_DEF(ticker)
|
|||||||
var/queue_delay = 0
|
var/queue_delay = 0
|
||||||
var/list/queued_players = list() //used for join queues when the server exceeds the hard population cap
|
var/list/queued_players = list() //used for join queues when the server exceeds the hard population cap
|
||||||
|
|
||||||
var/obj/screen/cinematic = null //used for station explosion cinematic
|
|
||||||
|
|
||||||
var/maprotatechecked = 0
|
var/maprotatechecked = 0
|
||||||
|
|
||||||
var/news_report
|
var/news_report
|
||||||
|
|
||||||
var/late_join_disabled
|
var/late_join_disabled
|
||||||
|
|
||||||
|
var/roundend_check_paused = FALSE
|
||||||
|
|
||||||
var/round_start_time = 0
|
var/round_start_time = 0
|
||||||
var/list/round_start_events
|
var/list/round_start_events
|
||||||
var/mode_result = "undefined"
|
var/mode_result = "undefined"
|
||||||
@@ -137,7 +137,7 @@ SUBSYSTEM_DEF(ticker)
|
|||||||
scripture_states = scripture_unlock_alert(scripture_states)
|
scripture_states = scripture_unlock_alert(scripture_states)
|
||||||
SSshuttle.autoEnd()
|
SSshuttle.autoEnd()
|
||||||
|
|
||||||
if(!mode.explosion_in_progress && mode.check_finished(force_ending) || force_ending)
|
if(!roundend_check_paused && mode.check_finished(force_ending) || force_ending)
|
||||||
current_state = GAME_STATE_FINISHED
|
current_state = GAME_STATE_FINISHED
|
||||||
toggle_ooc(TRUE) // Turn it on
|
toggle_ooc(TRUE) // Turn it on
|
||||||
toggle_dooc(TRUE)
|
toggle_dooc(TRUE)
|
||||||
@@ -274,6 +274,7 @@ SUBSYSTEM_DEF(ticker)
|
|||||||
if(epi)
|
if(epi)
|
||||||
explosion(epi, 0, 256, 512, 0, TRUE, TRUE, 0, TRUE)
|
explosion(epi, 0, 256, 512, 0, TRUE, TRUE, 0, TRUE)
|
||||||
|
|
||||||
|
<<<<<<< HEAD
|
||||||
//Plus it provides an easy way to make cinematics for other events. Just use this as a template
|
//Plus it provides an easy way to make cinematics for other events. Just use this as a template
|
||||||
/datum/controller/subsystem/ticker/proc/station_explosion_cinematic(station_missed=0, override = null, atom/bomb = null)
|
/datum/controller/subsystem/ticker/proc/station_explosion_cinematic(station_missed=0, override = null, atom/bomb = null)
|
||||||
if( cinematic )
|
if( cinematic )
|
||||||
@@ -411,6 +412,8 @@ SUBSYSTEM_DEF(ticker)
|
|||||||
if(actually_blew_up && !isnull(killz) && M.stat != DEAD && M.z == killz)
|
if(actually_blew_up && !isnull(killz) && M.stat != DEAD && M.z == killz)
|
||||||
M.gib()
|
M.gib()
|
||||||
|
|
||||||
|
=======
|
||||||
|
>>>>>>> 1304e83... Refactors cinematics. (#30888)
|
||||||
/datum/controller/subsystem/ticker/proc/create_characters()
|
/datum/controller/subsystem/ticker/proc/create_characters()
|
||||||
for(var/mob/dead/new_player/player in GLOB.player_list)
|
for(var/mob/dead/new_player/player in GLOB.player_list)
|
||||||
if(player.ready == PLAYER_READY_TO_PLAY && player.mind)
|
if(player.ready == PLAYER_READY_TO_PLAY && player.mind)
|
||||||
@@ -711,13 +714,11 @@ SUBSYSTEM_DEF(ticker)
|
|||||||
|
|
||||||
queue_delay = SSticker.queue_delay
|
queue_delay = SSticker.queue_delay
|
||||||
queued_players = SSticker.queued_players
|
queued_players = SSticker.queued_players
|
||||||
cinematic = SSticker.cinematic
|
|
||||||
maprotatechecked = SSticker.maprotatechecked
|
maprotatechecked = SSticker.maprotatechecked
|
||||||
round_start_time = SSticker.round_start_time
|
round_start_time = SSticker.round_start_time
|
||||||
|
|
||||||
queue_delay = SSticker.queue_delay
|
queue_delay = SSticker.queue_delay
|
||||||
queued_players = SSticker.queued_players
|
queued_players = SSticker.queued_players
|
||||||
cinematic = SSticker.cinematic
|
|
||||||
maprotatechecked = SSticker.maprotatechecked
|
maprotatechecked = SSticker.maprotatechecked
|
||||||
|
|
||||||
modevoted = SSticker.modevoted
|
modevoted = SSticker.modevoted
|
||||||
|
|||||||
@@ -0,0 +1,223 @@
|
|||||||
|
GLOBAL_LIST_EMPTY(cinematics)
|
||||||
|
|
||||||
|
// Use to play cinematics.
|
||||||
|
// Watcher can be world,mob, or a list of mobs
|
||||||
|
// Blocks until sequence is done.
|
||||||
|
/proc/Cinematic(id,watcher,datum/callback/special_callback)
|
||||||
|
var/datum/cinematic/playing
|
||||||
|
for(var/V in subtypesof(/datum/cinematic))
|
||||||
|
var/datum/cinematic/C = V
|
||||||
|
if(initial(C.id) == id)
|
||||||
|
playing = new V()
|
||||||
|
break
|
||||||
|
if(!playing)
|
||||||
|
CRASH("Cinematic type not found")
|
||||||
|
if(special_callback)
|
||||||
|
playing.special_callback = special_callback
|
||||||
|
if(watcher == world)
|
||||||
|
playing.is_global = TRUE
|
||||||
|
watcher = GLOB.mob_list
|
||||||
|
playing.play(watcher)
|
||||||
|
|
||||||
|
/obj/screen/cinematic
|
||||||
|
icon = 'icons/effects/station_explosion.dmi'
|
||||||
|
icon_state = "station_intact"
|
||||||
|
layer = 21
|
||||||
|
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
|
||||||
|
screen_loc = "1,1"
|
||||||
|
|
||||||
|
/datum/cinematic
|
||||||
|
var/id = CINEMATIC_DEFAULT
|
||||||
|
var/list/watching = list() //List of clients watching this
|
||||||
|
var/list/locked = list() //Who had notransform set during the cinematic
|
||||||
|
var/is_global = FALSE //Global cinematics will override mob-specific ones
|
||||||
|
var/obj/screen/cinematic/screen
|
||||||
|
var/datum/callback/special_callback //For special effects synced with animation (explosions after the countdown etc)
|
||||||
|
var/cleanup_time = 300 //How long for the final screen to remain
|
||||||
|
|
||||||
|
/datum/cinematic/New()
|
||||||
|
GLOB.cinematics += src
|
||||||
|
screen = new(src)
|
||||||
|
|
||||||
|
/datum/cinematic/Destroy()
|
||||||
|
GLOB.cinematics -= src
|
||||||
|
QDEL_NULL(screen)
|
||||||
|
for(var/mob/M in locked)
|
||||||
|
M.notransform = FALSE
|
||||||
|
return ..()
|
||||||
|
|
||||||
|
/datum/cinematic/proc/play(watchers)
|
||||||
|
//Check if you can actually play it (stop mob cinematics for global ones) and create screen objects
|
||||||
|
for(var/A in GLOB.cinematics)
|
||||||
|
var/datum/cinematic/C = A
|
||||||
|
if(C == src)
|
||||||
|
continue
|
||||||
|
if(C.is_global || !is_global)
|
||||||
|
return //Can't play two global or local cinematics at the same time
|
||||||
|
|
||||||
|
//Close all open windows if global
|
||||||
|
if(is_global)
|
||||||
|
for (var/datum/html_interface/hi in GLOB.html_interfaces)
|
||||||
|
hi.closeAll()
|
||||||
|
SStgui.close_all_uis()
|
||||||
|
|
||||||
|
|
||||||
|
for(var/mob/M in GLOB.mob_list)
|
||||||
|
if(M in watchers)
|
||||||
|
M.notransform = TRUE //Should this be done for non-global cinematics or even at all ?
|
||||||
|
locked += M
|
||||||
|
//Close watcher ui's
|
||||||
|
SStgui.close_user_uis(M)
|
||||||
|
if(M.client)
|
||||||
|
watching += M.client
|
||||||
|
M.client.screen += screen
|
||||||
|
else
|
||||||
|
if(is_global)
|
||||||
|
M.notransform = TRUE
|
||||||
|
locked += M
|
||||||
|
|
||||||
|
//Actually play it
|
||||||
|
content()
|
||||||
|
//Cleanup
|
||||||
|
sleep(cleanup_time)
|
||||||
|
qdel(src)
|
||||||
|
|
||||||
|
//Sound helper
|
||||||
|
/datum/cinematic/proc/cinematic_sound(s)
|
||||||
|
if(is_global)
|
||||||
|
SEND_SOUND(world,s)
|
||||||
|
else
|
||||||
|
for(var/C in watching)
|
||||||
|
SEND_SOUND(C,s)
|
||||||
|
|
||||||
|
//Fire up special callback for actual effects synchronized with animation (eg real nuke explosion happens midway)
|
||||||
|
/datum/cinematic/proc/special()
|
||||||
|
if(special_callback)
|
||||||
|
special_callback.Invoke()
|
||||||
|
|
||||||
|
//Actual cinematic goes in here
|
||||||
|
/datum/cinematic/proc/content()
|
||||||
|
sleep(50)
|
||||||
|
|
||||||
|
/datum/cinematic/nuke_win
|
||||||
|
id = CINEMATIC_NUKE_WIN
|
||||||
|
|
||||||
|
/datum/cinematic/nuke_win/content()
|
||||||
|
flick("intro_nuke",screen)
|
||||||
|
sleep(35)
|
||||||
|
flick("station_explode_fade_red",screen)
|
||||||
|
cinematic_sound(sound('sound/effects/explosion_distant.ogg'))
|
||||||
|
special()
|
||||||
|
screen.icon_state = "summary_nukewin"
|
||||||
|
|
||||||
|
/datum/cinematic/nuke_miss
|
||||||
|
id = CINEMATIC_NUKE_MISS
|
||||||
|
|
||||||
|
/datum/cinematic/nuke_miss/content()
|
||||||
|
flick("intro_nuke",screen)
|
||||||
|
sleep(35)
|
||||||
|
cinematic_sound(sound('sound/effects/explosion_distant.ogg'))
|
||||||
|
special()
|
||||||
|
flick("station_intact_fade_red",screen)
|
||||||
|
screen.icon_state = "summary_nukefail"
|
||||||
|
|
||||||
|
//Also used for blob
|
||||||
|
/datum/cinematic/nuke_selfdestruct
|
||||||
|
id = CINEMATIC_SELFDESTRUCT
|
||||||
|
|
||||||
|
/datum/cinematic/nuke_selfdestruct/content()
|
||||||
|
flick("intro_nuke",screen)
|
||||||
|
sleep(35)
|
||||||
|
flick("station_explode_fade_red", screen)
|
||||||
|
cinematic_sound(sound('sound/effects/explosion_distant.ogg'))
|
||||||
|
special()
|
||||||
|
screen.icon_state = "summary_selfdes"
|
||||||
|
|
||||||
|
/datum/cinematic/nuke_selfdestruct_miss
|
||||||
|
id = CINEMATIC_SELFDESTRUCT_MISS
|
||||||
|
|
||||||
|
/datum/cinematic/nuke_selfdestruct_miss/content()
|
||||||
|
flick("intro_nuke",screen)
|
||||||
|
sleep(35)
|
||||||
|
cinematic_sound(sound('sound/effects/explosion_distant.ogg'))
|
||||||
|
special()
|
||||||
|
screen.icon_state = "station_intact"
|
||||||
|
|
||||||
|
/datum/cinematic/malf
|
||||||
|
id = CINEMATIC_MALF
|
||||||
|
|
||||||
|
/datum/cinematic/malf/content()
|
||||||
|
flick("intro_malf",screen)
|
||||||
|
sleep(76)
|
||||||
|
flick("station_explode_fade_red",screen)
|
||||||
|
cinematic_sound(sound('sound/effects/explosion_distant.ogg'))
|
||||||
|
special()
|
||||||
|
screen.icon_state = "summary_malf"
|
||||||
|
|
||||||
|
/datum/cinematic/cult
|
||||||
|
id = CINEMATIC_CULT
|
||||||
|
|
||||||
|
/datum/cinematic/cult/content()
|
||||||
|
screen.icon_state = null
|
||||||
|
flick("intro_cult",screen)
|
||||||
|
sleep(25)
|
||||||
|
cinematic_sound(sound('sound/magic/enter_blood.ogg'))
|
||||||
|
sleep(28)
|
||||||
|
cinematic_sound(sound('sound/machines/terminal_off.ogg'))
|
||||||
|
sleep(20)
|
||||||
|
flick("station_corrupted",screen)
|
||||||
|
cinematic_sound(sound('sound/effects/ghost.ogg'))
|
||||||
|
sleep(70)
|
||||||
|
special()
|
||||||
|
|
||||||
|
/datum/cinematic/nuke_annihilation
|
||||||
|
id = CINEMATIC_ANNIHILATION
|
||||||
|
|
||||||
|
/datum/cinematic/nuke_annihilation/content()
|
||||||
|
flick("intro_nuke",screen)
|
||||||
|
sleep(35)
|
||||||
|
flick("station_explode_fade_red",screen)
|
||||||
|
cinematic_sound(sound('sound/effects/explosion_distant.ogg'))
|
||||||
|
special()
|
||||||
|
screen.icon_state = "summary_totala"
|
||||||
|
|
||||||
|
/datum/cinematic/fake
|
||||||
|
id = CINEMATIC_NUKE_FAKE
|
||||||
|
cleanup_time = 100
|
||||||
|
|
||||||
|
/datum/cinematic/fake/content()
|
||||||
|
flick("intro_nuke",screen)
|
||||||
|
sleep(35)
|
||||||
|
cinematic_sound(sound('sound/items/bikehorn.ogg'))
|
||||||
|
flick("summary_selfdes",screen) //???
|
||||||
|
special()
|
||||||
|
|
||||||
|
/datum/cinematic/no_core
|
||||||
|
id = CINEMATIC_NUKE_NO_CORE
|
||||||
|
cleanup_time = 100
|
||||||
|
|
||||||
|
/datum/cinematic/no_core/content()
|
||||||
|
flick("intro_nuke",screen)
|
||||||
|
sleep(35)
|
||||||
|
flick("station_intact",screen)
|
||||||
|
cinematic_sound(sound('sound/ambience/signal.ogg'))
|
||||||
|
sleep(100)
|
||||||
|
|
||||||
|
/datum/cinematic/nuke_far
|
||||||
|
id = CINEMATIC_NUKE_FAR
|
||||||
|
cleanup_time = 0
|
||||||
|
|
||||||
|
/datum/cinematic/nuke_far/content()
|
||||||
|
cinematic_sound(sound('sound/effects/explosion_distant.ogg'))
|
||||||
|
special()
|
||||||
|
|
||||||
|
/* Intended usage.
|
||||||
|
Nuke.Explosion()
|
||||||
|
-> Cinematic(NUKE_BOOM,world)
|
||||||
|
-> ActualExplosion()
|
||||||
|
-> Mode.OnExplosion()
|
||||||
|
|
||||||
|
|
||||||
|
Narsie()
|
||||||
|
-> Cinematic(CULT,world)
|
||||||
|
*/
|
||||||
@@ -19,7 +19,6 @@
|
|||||||
var/probability = 0
|
var/probability = 0
|
||||||
var/false_report_weight = 0 //How often will this show up incorrectly in a centcom report?
|
var/false_report_weight = 0 //How often will this show up incorrectly in a centcom report?
|
||||||
var/station_was_nuked = 0 //see nuclearbomb.dm and malfunction.dm
|
var/station_was_nuked = 0 //see nuclearbomb.dm and malfunction.dm
|
||||||
var/explosion_in_progress = 0 //sit back and relax
|
|
||||||
var/round_ends_with_antag_death = 0 //flags the "one verse the station" antags as such
|
var/round_ends_with_antag_death = 0 //flags the "one verse the station" antags as such
|
||||||
var/list/datum/mind/modePlayer = new
|
var/list/datum/mind/modePlayer = new
|
||||||
var/list/datum/mind/antag_candidates = list() // List of possible starting antags goes here
|
var/list/datum/mind/antag_candidates = list() // List of possible starting antags goes here
|
||||||
@@ -562,3 +561,8 @@
|
|||||||
|
|
||||||
/datum/game_mode/proc/generate_report() //Generates a small text blurb for the gamemode in centcom report
|
/datum/game_mode/proc/generate_report() //Generates a small text blurb for the gamemode in centcom report
|
||||||
return "Gamemode report for [name] not set. Contact a coder."
|
return "Gamemode report for [name] not set. Contact a coder."
|
||||||
|
|
||||||
|
//By default nuke just ends the round
|
||||||
|
/datum/game_mode/proc/OnNukeExplosion(off_station)
|
||||||
|
if(off_station < 2)
|
||||||
|
station_was_nuked = TRUE //Will end the round on next check.
|
||||||
@@ -161,6 +161,12 @@
|
|||||||
synd_mob.equipOutfit(/datum/outfit/syndicate/no_crystals)
|
synd_mob.equipOutfit(/datum/outfit/syndicate/no_crystals)
|
||||||
return 1
|
return 1
|
||||||
|
|
||||||
|
/datum/game_mode/nuclear/OnNukeExplosion(off_station)
|
||||||
|
..()
|
||||||
|
nukes_left--
|
||||||
|
var/obj/docking_port/mobile/Shuttle = SSshuttle.getShuttle("syndicate")
|
||||||
|
syndies_didnt_escape = (Shuttle && (Shuttle.z == ZLEVEL_CENTCOM || Shuttle.z == ZLEVEL_TRANSIT)) ? 0 : 1
|
||||||
|
nuke_off_station = off_station
|
||||||
|
|
||||||
/datum/game_mode/nuclear/check_win()
|
/datum/game_mode/nuclear/check_win()
|
||||||
if (nukes_left == 0)
|
if (nukes_left == 0)
|
||||||
|
|||||||
@@ -81,6 +81,20 @@
|
|||||||
/obj/machinery/nuclearbomb/syndicate
|
/obj/machinery/nuclearbomb/syndicate
|
||||||
//ui_style = "syndicate" // actually the nuke op bomb is a stole nt bomb
|
//ui_style = "syndicate" // actually the nuke op bomb is a stole nt bomb
|
||||||
|
|
||||||
|
/obj/machinery/nuclearbomb/syndicate/get_cinematic_type(off_station)
|
||||||
|
var/datum/game_mode/nuclear/NM = SSticker.mode
|
||||||
|
switch(off_station)
|
||||||
|
if(0)
|
||||||
|
if(istype(NM) && NM.syndies_didnt_escape)
|
||||||
|
return CINEMATIC_ANNIHILATION
|
||||||
|
else
|
||||||
|
return CINEMATIC_NUKE_WIN
|
||||||
|
if(1)
|
||||||
|
return CINEMATIC_NUKE_MISS
|
||||||
|
if(2)
|
||||||
|
return CINEMATIC_NUKE_FAR
|
||||||
|
return CINEMATIC_NUKE_FAR
|
||||||
|
|
||||||
/obj/machinery/nuclearbomb/syndicate/Initialize()
|
/obj/machinery/nuclearbomb/syndicate/Initialize()
|
||||||
. = ..()
|
. = ..()
|
||||||
var/obj/machinery/nuclearbomb/existing = locate("syndienuke") in GLOB.nuke_list
|
var/obj/machinery/nuclearbomb/existing = locate("syndienuke") in GLOB.nuke_list
|
||||||
@@ -422,12 +436,12 @@
|
|||||||
update_icon()
|
update_icon()
|
||||||
sound_to_playing_players('sound/machines/alarm.ogg')
|
sound_to_playing_players('sound/machines/alarm.ogg')
|
||||||
if(SSticker && SSticker.mode)
|
if(SSticker && SSticker.mode)
|
||||||
SSticker.mode.explosion_in_progress = 1
|
SSticker.roundend_check_paused = TRUE
|
||||||
sleep(100)
|
sleep(100)
|
||||||
|
|
||||||
if(!core)
|
if(!core)
|
||||||
SSticker.station_explosion_cinematic(3,"no_core",src)
|
Cinematic(CINEMATIC_NUKE_NO_CORE,world)
|
||||||
SSticker.mode.explosion_in_progress = 0
|
SSticker.roundend_check_paused = FALSE
|
||||||
return
|
return
|
||||||
|
|
||||||
GLOB.enter_allowed = 0
|
GLOB.enter_allowed = 0
|
||||||
@@ -437,28 +451,37 @@
|
|||||||
var/area/A = get_area(bomb_location)
|
var/area/A = get_area(bomb_location)
|
||||||
if(bomb_location && (bomb_location.z in GLOB.station_z_levels))
|
if(bomb_location && (bomb_location.z in GLOB.station_z_levels))
|
||||||
if(istype(A, /area/space))
|
if(istype(A, /area/space))
|
||||||
off_station = NUKE_MISS_STATION
|
off_station = NUKE_NEAR_MISS
|
||||||
if((bomb_location.x < (128-NUKERANGE)) || (bomb_location.x > (128+NUKERANGE)) || (bomb_location.y < (128-NUKERANGE)) || (bomb_location.y > (128+NUKERANGE)))
|
if((bomb_location.x < (128-NUKERANGE)) || (bomb_location.x > (128+NUKERANGE)) || (bomb_location.y < (128-NUKERANGE)) || (bomb_location.y > (128+NUKERANGE)))
|
||||||
off_station = NUKE_MISS_STATION
|
off_station = NUKE_NEAR_MISS
|
||||||
else if((istype(A, /area/syndicate_mothership) || (istype(A, /area/shuttle/syndicate)) && bomb_location.z == ZLEVEL_CENTCOM))
|
else if((istype(A, /area/syndicate_mothership) || (istype(A, /area/shuttle/syndicate)) && bomb_location.z == ZLEVEL_CENTCOM))
|
||||||
off_station = NUKE_SYNDICATE_BASE
|
off_station = NUKE_SYNDICATE_BASE
|
||||||
else
|
else
|
||||||
off_station = NUKE_NEAR_MISS
|
off_station = NUKE_MISS_STATION
|
||||||
|
|
||||||
if(istype(SSticker.mode, /datum/game_mode/nuclear))
|
if(off_station < 2)
|
||||||
var/obj/docking_port/mobile/Shuttle = SSshuttle.getShuttle("syndicate")
|
SSshuttle.registerHostileEnvironment(src)
|
||||||
var/datum/game_mode/nuclear/NM = SSticker.mode
|
SSshuttle.lockdown = TRUE
|
||||||
NM.syndies_didnt_escape = (Shuttle && (Shuttle.z == ZLEVEL_CENTCOM || Shuttle.z == ZLEVEL_TRANSIT)) ? 0 : 1
|
|
||||||
NM.nuke_off_station = off_station
|
|
||||||
|
|
||||||
SSticker.station_explosion_cinematic(off_station,null,src)
|
//Cinematic
|
||||||
if(SSticker.mode)
|
SSticker.mode.OnNukeExplosion(off_station)
|
||||||
if(istype(SSticker.mode, /datum/game_mode/nuclear))
|
var/bombz = z
|
||||||
var/datum/game_mode/nuclear/NM = SSticker.mode
|
Cinematic(get_cinematic_type(off_station),world,CALLBACK(SSticker,/datum/controller/subsystem/ticker/proc/station_explosion_detonation,src))
|
||||||
NM.nukes_left --
|
INVOKE_ASYNC(GLOBAL_PROC,.proc/KillEveryoneOnZLevel,bombz)
|
||||||
if(!SSticker.mode.check_finished())//If the mode does not deal with the nuke going off so just reboot because everyone is stuck as is
|
SSticker.roundend_check_paused = FALSE
|
||||||
SSticker.Reboot("Station destroyed by Nuclear Device.", "nuke - unhandled ending")
|
|
||||||
|
|
||||||
|
/obj/machinery/nuclearbomb/proc/get_cinematic_type(off_station)
|
||||||
|
if(off_station < 2)
|
||||||
|
return CINEMATIC_SELFDESTRUCT
|
||||||
|
else
|
||||||
|
return CINEMATIC_SELFDESTRUCT_MISS
|
||||||
|
|
||||||
|
/proc/KillEveryoneOnZLevel(z)
|
||||||
|
if(!z)
|
||||||
|
return
|
||||||
|
for(var/mob/M in GLOB.mob_list)
|
||||||
|
if(M.stat != DEAD && M.z == z)
|
||||||
|
M.gib()
|
||||||
|
|
||||||
/*
|
/*
|
||||||
This is here to make the tiles around the station mininuke change when it's armed.
|
This is here to make the tiles around the station mininuke change when it's armed.
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
<<<<<<< HEAD
|
||||||
/client/proc/cinematic(cinematic as anything in list("explosion",null))
|
/client/proc/cinematic(cinematic as anything in list("explosion",null))
|
||||||
set name = "cinematic"
|
set name = "cinematic"
|
||||||
set category = "Fun"
|
set category = "Fun"
|
||||||
@@ -16,3 +17,16 @@
|
|||||||
override = input(src,"mode = ?","Enter Parameter",null) as anything in list("blob","nuclear emergency","AI malfunction","no override")
|
override = input(src,"mode = ?","Enter Parameter",null) as anything in list("blob","nuclear emergency","AI malfunction","no override")
|
||||||
SSticker.station_explosion_cinematic(parameter,override)
|
SSticker.station_explosion_cinematic(parameter,override)
|
||||||
return
|
return
|
||||||
|
=======
|
||||||
|
/client/proc/cinematic()
|
||||||
|
set name = "cinematic"
|
||||||
|
set category = "Fun"
|
||||||
|
set desc = "Shows a cinematic." // Intended for testing but I thought it might be nice for events on the rare occasion Feel free to comment it out if it's not wanted.
|
||||||
|
set hidden = 1
|
||||||
|
if(!SSticker)
|
||||||
|
return
|
||||||
|
|
||||||
|
var/datum/cinematic/choice = input(src,"Cinematic","Choose",null) as anything in subtypesof(/datum/cinematic)
|
||||||
|
if(choice)
|
||||||
|
Cinematic(initial(choice.id),world,null)
|
||||||
|
>>>>>>> 1304e83... Refactors cinematics. (#30888)
|
||||||
|
|||||||
@@ -7,4 +7,5 @@
|
|||||||
|
|
||||||
/datum/round_event/wizard/fake_explosion/start()
|
/datum/round_event/wizard/fake_explosion/start()
|
||||||
sound_to_playing_players('sound/machines/alarm.ogg')
|
sound_to_playing_players('sound/machines/alarm.ogg')
|
||||||
addtimer(CALLBACK(SSticker, /datum/controller/subsystem/ticker/.proc/station_explosion_cinematic, 1, "fake"), 100) //:o)
|
sleep(100)
|
||||||
|
Cinematic(CINEMATIC_NUKE_FAKE,world)
|
||||||
@@ -27,7 +27,7 @@
|
|||||||
del_on_death = 1
|
del_on_death = 1
|
||||||
|
|
||||||
/mob/living/simple_animal/cockroach/death(gibbed)
|
/mob/living/simple_animal/cockroach/death(gibbed)
|
||||||
if(SSticker.cinematic) //If the nuke is going off, then cockroaches are invincible. Keeps the nuke from killing them, cause cockroaches are immune to nukes.
|
if(SSticker.mode && SSticker.mode.station_was_nuked) //If the nuke is going off, then cockroaches are invincible. Keeps the nuke from killing them, cause cockroaches are immune to nukes.
|
||||||
return
|
return
|
||||||
..()
|
..()
|
||||||
|
|
||||||
|
|||||||
@@ -73,7 +73,6 @@
|
|||||||
resolved = TRUE
|
resolved = TRUE
|
||||||
sound_to_playing_players('sound/machines/alarm.ogg')
|
sound_to_playing_players('sound/machines/alarm.ogg')
|
||||||
addtimer(CALLBACK(GLOBAL_PROC, .proc/cult_ending_helper), 120)
|
addtimer(CALLBACK(GLOBAL_PROC, .proc/cult_ending_helper), 120)
|
||||||
addtimer(CALLBACK(GLOBAL_PROC, .proc/ending_helper), 220)
|
|
||||||
|
|
||||||
/obj/singularity/narsie/large/cult/Destroy()
|
/obj/singularity/narsie/large/cult/Destroy()
|
||||||
GLOB.cult_narsie = null
|
GLOB.cult_narsie = null
|
||||||
@@ -83,7 +82,7 @@
|
|||||||
SSticker.force_ending = 1
|
SSticker.force_ending = 1
|
||||||
|
|
||||||
/proc/cult_ending_helper(var/no_explosion = 0)
|
/proc/cult_ending_helper(var/no_explosion = 0)
|
||||||
SSticker.station_explosion_cinematic(no_explosion, "cult", null)
|
Cinematic(CINEMATIC_CULT,world,CALLBACK(GLOBAL_PROC,.ending_helper))
|
||||||
|
|
||||||
|
|
||||||
/obj/singularity/narsie/large/attack_ghost(mob/dead/observer/user as mob)
|
/obj/singularity/narsie/large/attack_ghost(mob/dead/observer/user as mob)
|
||||||
|
|||||||
@@ -28,7 +28,11 @@
|
|||||||
#include "code\__DEFINES\atmospherics.dm"
|
#include "code\__DEFINES\atmospherics.dm"
|
||||||
#include "code\__DEFINES\atom_hud.dm"
|
#include "code\__DEFINES\atom_hud.dm"
|
||||||
#include "code\__DEFINES\callbacks.dm"
|
#include "code\__DEFINES\callbacks.dm"
|
||||||
|
<<<<<<< HEAD
|
||||||
#include "code\__DEFINES\citadel_defines.dm"
|
#include "code\__DEFINES\citadel_defines.dm"
|
||||||
|
=======
|
||||||
|
#include "code\__DEFINES\cinematics.dm"
|
||||||
|
>>>>>>> 1304e83... Refactors cinematics. (#30888)
|
||||||
#include "code\__DEFINES\clockcult.dm"
|
#include "code\__DEFINES\clockcult.dm"
|
||||||
#include "code\__DEFINES\combat.dm"
|
#include "code\__DEFINES\combat.dm"
|
||||||
#include "code\__DEFINES\components.dm"
|
#include "code\__DEFINES\components.dm"
|
||||||
@@ -251,6 +255,7 @@
|
|||||||
#include "code\datums\beam.dm"
|
#include "code\datums\beam.dm"
|
||||||
#include "code\datums\browser.dm"
|
#include "code\datums\browser.dm"
|
||||||
#include "code\datums\callback.dm"
|
#include "code\datums\callback.dm"
|
||||||
|
#include "code\datums\cinematic.dm"
|
||||||
#include "code\datums\datacore.dm"
|
#include "code\datums\datacore.dm"
|
||||||
#include "code\datums\datum.dm"
|
#include "code\datums\datum.dm"
|
||||||
#include "code\datums\datumvars.dm"
|
#include "code\datums\datumvars.dm"
|
||||||
|
|||||||
Reference in New Issue
Block a user