Skip to content

Commit

Permalink
Improves the tal shiar agents, and gives the ship explosion its own c…
Browse files Browse the repository at this point in the history
…inematic.

Various map fixes.
  • Loading branch information
Kmc2000 committed Apr 28, 2019
1 parent 49bff26 commit 8a678a3
Show file tree
Hide file tree
Showing 14 changed files with 15,585 additions and 15,377 deletions.
20 changes: 20 additions & 0 deletions DS13/code/modules/overmap/cinematics.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
/datum/cinematic/romulan
id = CINEMATIC_ROMULAN
is_global = TRUE
cleanup_time = 50

/datum/cinematic/romulan/content()
screen.icon = 'icons/effects/trek_cinematics.dmi'
flick("romulan",screen)
sleep(50)
screen.icon_state = "romulan_end"

/datum/cinematic/shipexplode
id = CINEMATIC_SHIPEXPLODE
is_global = TRUE
cleanup_time = 10

/datum/cinematic/shipexplode/content()
screen.icon = 'DS13/icons/effects/shipexplode.gif'
sleep(40)
screen.alpha = 0
2 changes: 1 addition & 1 deletion DS13/code/modules/overmap/combat.dm
Original file line number Diff line number Diff line change
Expand Up @@ -448,7 +448,7 @@

/obj/structure/overmap/proc/core_breach_finish()
if(main_overmap)
Cinematic(CINEMATIC_NUKE_WIN,world)
Cinematic(CINEMATIC_SHIPEXPLODE,world)
SSticker.mode.check_finished(TRUE)
SSticker.force_ending = 1
for(var/X in GLOB.teleportlocs) //If it's not a game-ender. Blow the shit out of the ship map
Expand Down
113 changes: 110 additions & 3 deletions DS13/code/modules/overmap/events.dm
Original file line number Diff line number Diff line change
Expand Up @@ -443,7 +443,7 @@ GLOBAL_LIST_INIT(overmap_event_spawns, list())
name = "Tal shiar agent"
assignedrole = "romulan"
outfit = /datum/outfit/talshiar
flavour_text = "<span class='big bold'>You are a tal shiar agent!</span><br> You and your comrades have been dispatched to the museum ship Enterprise under the guise of starfleet inspectors. You're equipped with state of the art stealth tech, so you can assume any identity you need but be careful, and be subtle.<br> It is an incredibly weak ship, but it should provide enough cover for you to complete your true goal: <b>Capture</b> the main ship for the romulan empire!"
flavour_text = "<span class='big bold'>You are a tal shiar agent!</span><br> You and your comrades have been dispatched to the museum ship Enterprise under the guise of starfleet inspectors. You're equipped with state of the art stealth tech, so you can assume any identity you need but be careful, and be subtle.<br> It is an incredibly weak ship, but it should provide enough cover for you to complete your true goal: <b>Capture the main ship for the romulan empire by using your ominous tricorder on the bridge!</b>"

/datum/outfit/talshiar
name = "Tal shiar agent"
Expand All @@ -459,7 +459,105 @@ GLOBAL_LIST_INIT(overmap_event_spawns, list())
back = /obj/item/storage/backpack/satchel
ears = /obj/item/radio/headset/syndicate/alt
back = /obj/item/storage/backpack/satchel
backpack_contents = list(/obj/item/storage/box/syndie_kit/chameleon=1,/obj/item/book/granter/martial/cqc=1,/obj/item/reagent_containers/syringe/mulligan=1)
backpack_contents = list(/obj/item/storage/box/syndie_kit/chameleon=1,/obj/item/book/granter/martial/cqc=1,/obj/item/reagent_containers/syringe/mulligan=1,/obj/item/ship_hijack_spawner=1)
implants = list(/obj/item/implant/storage) //Eases up on the meta a bit

/obj/item/ship_hijack_spawner //Device used by tal shiar to formally take over the ship
name = "Ominous tricorder"
desc = "A device which allows you to summon a ship network hijacker, allowing one to take over a ship. ONCE YOU SPAWN THE HIJACKER, THERE IS NO TURNING BACK."
icon = 'DS13/icons/obj/device.dmi'
icon_state = "health"

/obj/item/ship_hijack_spawner/attack_self(mob/user)
. = ..()
var/area/AR = get_area(src)
if(!AR.linked_overmap || !AR.linked_overmap.main_overmap)
to_chat(user, "<span class='warning'>This device can only be used to capture [station_name()], starfleet's main ship in this sector.</span>")
return
var/obj/structure/overmap_component/helm/helmcheck = locate(/obj/structure/overmap_component/helm) in AR
if(!helmcheck)
to_chat(user, "<span class='warning>You can only do this from the bridge!</span>")
return
if(AR.linked_overmap.capture_in_progress)
to_chat(user, "<span class='warning'>Someone else has already placed a capture device.</span>")
return
var/question = alert("Really spawn a ship capture device? THERE IS NO GOING BACK ONCE YOU DO THIS",name,"yes","no")
if(question == "no" || !question)
return
new /obj/effect/temp_visual/transporter/mob(get_turf(src))
playsound(src.loc, 'DS13/sound/effects/transporter/send.ogg', 100, 4)
to_chat(user, "A capture device has been transported in, Jolan Tru!")
new /obj/structure/ship_hijacker(get_turf(user))
qdel(src)

/obj/structure/ship_hijacker
name = "Optronic data hijacker"
desc = "A huge device which will systematically purge pre-existing command codes from a ship's command subroutines while simultaneously plotting in a pre-programmed course for the ship to follow. <b> This can't be good...</b>"
icon = 'icons/obj/machines/dominator.dmi'
icon_state = "dominator"
obj_integrity = 250
max_integrity = 250 //Takes a beating to remove.
anchored = TRUE
density = TRUE
var/active = FALSE
var/start_time = 0
var/end_time = 0
var/domtime = 1480 //2 : 30 minutes to capture the ship ((when the anthem stops, you lose)).

/obj/structure/ship_hijacker/examine(mob/user)
. = ..()
if(!active)
return
to_chat(user, "<span class='warning'>It is currently attempting to hijack [station_name()]!</span>")
var/timeleft = (end_time - world.time)/10
to_chat(user, "<span class='warning'>A display shows that there's [timeleft] seconds left until the takeover is complete!</span>")


/obj/structure/ship_hijacker/attack_hand(mob/user)
if(active)
to_chat(user, "<span class='notice'>There is already an active system takeover in progress!</span>")
return
var/question = alert("Are you ready to begin a system takeover of [station_name()]?",name,"yes","no")
if(question == "no" || !question)
return
active = TRUE
var/area/AR = get_area(src)
if(AR.linked_overmap)
AR.linked_overmap.capture_in_progress = TRUE
priority_announce("WARNING: Optronic data pathway decription attempt detected in [AR]. Hostile takeover in progress!","LCARS computer subsystem:",'sound/ai/commandreport.ogg')
start_time = world.time
end_time = start_time + domtime
to_chat(user, "<span class='notice'>You have begun a system takeover, defend this device for the romulan empire!</span>")
light_color = LIGHT_COLOR_RED
set_light(5)
icon_state = "dominator-red"
sound_to_playing_players('DS13/sound/ambience/ship_takeover.ogg') //ALL CREDIT GOES TO: Volker400 https://www.youtube.com/watch?v=ooS0Hop_zhk
GLOB.music_controller.force_stop() //Avoids annoying overlapping music.
START_PROCESSING(SSobj,src)

/obj/structure/ship_hijacker/process()
if(!active)
return
if(world.time >= end_time)
active = FALSE
priority_announce("Ieiuqh warp drive avaihh'etrehh-capable rrhiet khina 'hh ours. Temmehrr'dochai ch'rihan. Jolan Tru!","LCARS computer subsystem:",'sound/ai/commandreport.ogg')
Cinematic(CINEMATIC_ROMULAN,world)
SSticker.mode.check_finished(TRUE)
SSticker.force_ending = 1
STOP_PROCESSING(SSobj,src)
qdel(src)

/obj/structure/ship_hijacker/Destroy()
if(active)
for(var/mob/M in GLOB.player_list) //Stop the romulan anthem.
if(M.client)
SEND_SOUND(M, sound(null))
priority_announce("Hostile takeover attempt ceased. Cycling encryption and command codes.","LCARS computer subsystem:",'sound/ai/commandreport.ogg')
GLOB.music_controller.reset()
var/area/AR = get_area(src)
if(AR.linked_overmap)
AR.linked_overmap.capture_in_progress = FALSE
. = ..()

/area/ship/bridge/museum
name = "USS Enterprise (NX-01)"
Expand All @@ -477,7 +575,7 @@ GLOBAL_LIST_INIT(overmap_event_spawns, list())

/datum/overmap_event/museum_hijack/start() //Now we have a spawn. Let's do whatever this mission is supposed to. Override this when you make new missions
target = new /obj/structure/overmap/nx01(get_turf(spawner))
priority_announce("[station_name()]. We've just received a report from the NX01-Enterprise exhibit. It appears the enterprise is missing.... Recapture the ship at all costs, and do NOT allow it to be destroyed.","Intercepted subspace transmission:",'sound/ai/commandreport.ogg')
priority_announce("[station_name()]. We've just received a report from the NX01-Enterprise exhibit. It appears the enterprise is missing...? You are ordered to investigate what has happened, but be advised that this could possibly just be a clerical error.","Intercepted subspace transmission:",'sound/ai/commandreport.ogg')
elements += target
sleep(20)//Give it a chance to link.
if(target.linked_area)
Expand Down Expand Up @@ -727,6 +825,15 @@ GLOBAL_LIST_INIT(overmap_event_spawns, list())
if(plant_amount <= 0)
succeed()

/datum/overmap_event/m_class/succeed()
if(completed)
return
to_chat(world, "<span class='notice'>Starfleet command has issued a commendation to the crew of [station_name()]. The ship has been allocated extra operational budget ([reward]) by Starfleet command.</span>")
priority_announce(succeed_text,"Incoming hail:",'sound/ai/commandreport.ogg')
var/datum/bank_account/D = SSeconomy.get_dep_account(ACCOUNT_CAR)
if(D)
D.adjust_money(reward)
return

/datum/overmap_event/m_class/clear_elements()
return FALSE //Dont delete the M CLASS planet!
Expand Down
6 changes: 6 additions & 0 deletions DS13/code/modules/overmap/music.dm
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,12 @@ GLOBAL_DATUM_INIT(music_controller, /datum/music_controller, new)
var/client/CCE = M.client
CCE.chatOutput.stopMusic()

/datum/music_controller/proc/force_stop() //When we're playing music and want it to STFU.
stop()
playing = TRUE
for(var/datum/X in active_timers)
qdel(X)

/datum/music_controller/proc/play(var/danger = FALSE)
if(!playing) //no random switching to calm orchestral music mid fight!
stop()
Expand Down
1 change: 1 addition & 0 deletions DS13/code/modules/overmap/overmap.dm
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ GLOBAL_LIST_INIT(overmap_ships, list())
var/warping = FALSE //Are we mid warp? This tells movement code to do the special FX for when we exit warp if we slow down too much.
var/datum/action/innate/warp/warp_action = new
var/max_warp = WARP_5
var/capture_in_progress = FALSE //Is someone trying to hijack the ship?

/obj/shield_overlay
name = ""
Expand Down
Binary file added DS13/icons/effects/shipexplode.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added DS13/sound/ambience/romulan_anthem.ogg
Binary file not shown.
Binary file added DS13/sound/ambience/ship_takeover.ogg
Binary file not shown.
1 change: 1 addition & 0 deletions DeepSpace13.dme
Original file line number Diff line number Diff line change
Expand Up @@ -2786,6 +2786,7 @@
#include "DS13\code\modules\mob\living\carbon\human\species_types\klingon.dm"
#include "DS13\code\modules\mob\living\carbon\human\species_types\vulcan.dm"
#include "DS13\code\modules\overmap\ai.dm"
#include "DS13\code\modules\overmap\cinematics.dm"
#include "DS13\code\modules\overmap\combat.dm"
#include "DS13\code\modules\overmap\components.dm"
#include "DS13\code\modules\overmap\escape_pod.dm"
Expand Down
Loading

0 comments on commit 8a678a3

Please sign in to comment.