mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-28 07:38:05 +01:00
Rename ticker to SSticker
This commit is contained in:
@@ -143,7 +143,7 @@
|
||||
#define STAGE_FIVE 9
|
||||
#define STAGE_SIX 11 //From supermatter shard
|
||||
|
||||
//ticker.current_state values
|
||||
//SSticker.current_state values
|
||||
#define GAME_STATE_STARTUP 0
|
||||
#define GAME_STATE_PREGAME 1
|
||||
#define GAME_STATE_SETTING_UP 2
|
||||
|
||||
@@ -513,7 +513,7 @@
|
||||
winset(C, "mainwindow", "flash=5")
|
||||
|
||||
/proc/AnnounceArrival(var/mob/living/carbon/human/character, var/rank)
|
||||
if(ticker.current_state != GAME_STATE_PLAYING || !character)
|
||||
if(SSticker.current_state != GAME_STATE_PLAYING || !character)
|
||||
return
|
||||
var/area/A = get_area(character)
|
||||
var/message = "<span class='game deadsay'><span class='name'>\
|
||||
|
||||
@@ -889,7 +889,7 @@
|
||||
|
||||
/datum/configuration/proc/get_runnable_midround_modes(crew)
|
||||
var/list/datum/game_mode/runnable_modes = new
|
||||
for(var/T in (gamemode_cache - ticker.mode.type))
|
||||
for(var/T in (gamemode_cache - SSticker.mode.type))
|
||||
var/datum/game_mode/M = new T()
|
||||
if(!(M.config_tag in modes))
|
||||
qdel(M)
|
||||
|
||||
+16
-16
@@ -194,7 +194,7 @@ var/CURRENT_TICKLIMIT = TICK_LIMIT_RUNNING
|
||||
// Schedule the first run of the Subsystems.
|
||||
round_started = world.has_round_started()
|
||||
//all this shit is here so that flag edits can be refreshed by restarting the MC. (and for speed)
|
||||
var/list/tickersubsystems = list()
|
||||
var/list/SStickersubsystems = list()
|
||||
var/list/normalsubsystems = list()
|
||||
var/list/lobbysubsystems = list()
|
||||
var/timer = world.time
|
||||
@@ -207,7 +207,7 @@ var/CURRENT_TICKLIMIT = TICK_LIMIT_RUNNING
|
||||
SS.queue_prev = null
|
||||
SS.state = SS_IDLE
|
||||
if (SS.flags & SS_TICKER)
|
||||
tickersubsystems += SS
|
||||
SStickersubsystems += SS
|
||||
timer += world.tick_lag * rand(1, 5)
|
||||
SS.next_fire = timer
|
||||
continue
|
||||
@@ -224,12 +224,12 @@ var/CURRENT_TICKLIMIT = TICK_LIMIT_RUNNING
|
||||
queue_tail = null
|
||||
//these sort by lower priorities first to reduce the number of loops needed to add subsequent SS's to the queue
|
||||
//(higher subsystems will be sooner in the queue, adding them later in the loop means we don't have to loop thru them next queue add)
|
||||
sortTim(tickersubsystems, /proc/cmp_subsystem_priority)
|
||||
sortTim(SStickersubsystems, /proc/cmp_subsystem_priority)
|
||||
sortTim(normalsubsystems, /proc/cmp_subsystem_priority)
|
||||
sortTim(lobbysubsystems, /proc/cmp_subsystem_priority)
|
||||
|
||||
normalsubsystems += tickersubsystems
|
||||
lobbysubsystems += tickersubsystems
|
||||
normalsubsystems += SStickersubsystems
|
||||
lobbysubsystems += SStickersubsystems
|
||||
|
||||
init_timeofday = REALTIMEOFDAY
|
||||
init_time = world.time
|
||||
@@ -271,9 +271,9 @@ var/CURRENT_TICKLIMIT = TICK_LIMIT_RUNNING
|
||||
else
|
||||
subsystems_to_check = lobbysubsystems
|
||||
else
|
||||
subsystems_to_check = tickersubsystems
|
||||
subsystems_to_check = SStickersubsystems
|
||||
if (CheckQueue(subsystems_to_check) <= 0)
|
||||
if (!SoftReset(tickersubsystems, normalsubsystems, lobbysubsystems))
|
||||
if (!SoftReset(SStickersubsystems, normalsubsystems, lobbysubsystems))
|
||||
log_world("MC: SoftReset() failed, crashing")
|
||||
return
|
||||
if (!error_level)
|
||||
@@ -285,7 +285,7 @@ var/CURRENT_TICKLIMIT = TICK_LIMIT_RUNNING
|
||||
|
||||
if (queue_head)
|
||||
if (RunQueue() <= 0)
|
||||
if (!SoftReset(tickersubsystems, normalsubsystems, lobbysubsystems))
|
||||
if (!SoftReset(SStickersubsystems, normalsubsystems, lobbysubsystems))
|
||||
log_world("MC: SoftReset() failed, crashing")
|
||||
return
|
||||
if (!error_level)
|
||||
@@ -348,7 +348,7 @@ var/CURRENT_TICKLIMIT = TICK_LIMIT_RUNNING
|
||||
var/tick_precentage
|
||||
var/tick_remaining
|
||||
var/ran = TRUE //this is right
|
||||
var/ran_non_ticker = FALSE
|
||||
var/ran_non_SSticker = FALSE
|
||||
var/bg_calc //have we swtiched current_tick_budget to background mode yet?
|
||||
var/tick_usage
|
||||
|
||||
@@ -372,7 +372,7 @@ var/CURRENT_TICKLIMIT = TICK_LIMIT_RUNNING
|
||||
//(unless we haven't even ran anything this tick, since its unlikely they will ever be able run
|
||||
// in those cases, so we just let them run)
|
||||
if (queue_node_flags & SS_NO_TICK_CHECK)
|
||||
if (queue_node.tick_usage > TICK_LIMIT_RUNNING - world.tick_usage && ran_non_ticker)
|
||||
if (queue_node.tick_usage > TICK_LIMIT_RUNNING - world.tick_usage && ran_non_SSticker)
|
||||
queue_node.queued_priority += queue_priority_count * 0.10
|
||||
queue_priority_count -= queue_node_priority
|
||||
queue_priority_count += queue_node.queued_priority
|
||||
@@ -394,7 +394,7 @@ var/CURRENT_TICKLIMIT = TICK_LIMIT_RUNNING
|
||||
CURRENT_TICKLIMIT = world.tick_usage + tick_precentage
|
||||
|
||||
if (!(queue_node_flags & SS_TICKER))
|
||||
ran_non_ticker = TRUE
|
||||
ran_non_SSticker = TRUE
|
||||
ran = TRUE
|
||||
tick_usage = world.tick_usage
|
||||
queue_node_paused = (queue_node.state == SS_PAUSED || queue_node.state == SS_PAUSING)
|
||||
@@ -456,20 +456,20 @@ var/CURRENT_TICKLIMIT = TICK_LIMIT_RUNNING
|
||||
|
||||
//resets the queue, and all subsystems, while filtering out the subsystem lists
|
||||
// called if any mc's queue procs runtime or exit improperly.
|
||||
/datum/controller/master/proc/SoftReset(list/ticker_SS, list/normal_SS, list/lobby_SS)
|
||||
/datum/controller/master/proc/SoftReset(list/SSticker_SS, list/normal_SS, list/lobby_SS)
|
||||
. = 0
|
||||
log_world("MC: SoftReset called, resetting MC queue state.")
|
||||
if (!istype(subsystems) || !istype(ticker_SS) || !istype(normal_SS) || !istype(lobby_SS))
|
||||
log_world("MC: SoftReset: Bad list contents: '[subsystems]' '[ticker_SS]' '[normal_SS]' '[lobby_SS]' Crashing!")
|
||||
if (!istype(subsystems) || !istype(SSticker_SS) || !istype(normal_SS) || !istype(lobby_SS))
|
||||
log_world("MC: SoftReset: Bad list contents: '[subsystems]' '[SSticker_SS]' '[normal_SS]' '[lobby_SS]' Crashing!")
|
||||
return
|
||||
var/subsystemstocheck = subsystems + ticker_SS + normal_SS + lobby_SS
|
||||
var/subsystemstocheck = subsystems + SSticker_SS + normal_SS + lobby_SS
|
||||
|
||||
for (var/thing in subsystemstocheck)
|
||||
var/datum/controller/subsystem/SS = thing
|
||||
if (!SS || !istype(SS))
|
||||
//list(SS) is so if a list makes it in the subsystem list, we remove the list, not the contents
|
||||
subsystems -= list(SS)
|
||||
ticker_SS -= list(SS)
|
||||
SSticker_SS -= list(SS)
|
||||
normal_SS -= list(SS)
|
||||
lobby_SS -= list(SS)
|
||||
log_world("MC: SoftReset: Found bad entry in subsystem list, '[SS]'")
|
||||
|
||||
@@ -67,7 +67,7 @@ var/datum/controller/subsystem/events/SSevent
|
||||
// if(E) E.runEvent()
|
||||
return
|
||||
|
||||
var/gamemode = ticker.mode.config_tag
|
||||
var/gamemode = SSticker.mode.config_tag
|
||||
var/players_amt = get_active_player_count(alive_check = 1, afk_check = 1, human_check = 1)
|
||||
// Only alive, non-AFK human players count towards this.
|
||||
|
||||
|
||||
@@ -650,7 +650,7 @@ var/datum/controller/subsystem/garbage_collector/SSgarbage
|
||||
SearchVar(SStgui)
|
||||
SearchVar(SSthrowing)
|
||||
SearchVar(round_start_time)
|
||||
SearchVar(ticker)
|
||||
SearchVar(SSticker)
|
||||
SearchVar(SStimer)
|
||||
SearchVar(SSvote)
|
||||
SearchVar(SSweather)
|
||||
|
||||
@@ -223,10 +223,10 @@ var/datum/controller/subsystem/job/SSjob
|
||||
//Setup new player list and get the jobs list
|
||||
Debug("Running DO")
|
||||
|
||||
//Holder for Triumvirate is stored in the ticker, this just processes it
|
||||
if(ticker)
|
||||
//Holder for Triumvirate is stored in the SSticker, this just processes it
|
||||
if(SSticker)
|
||||
for(var/datum/job/ai/A in occupations)
|
||||
if(ticker.triai)
|
||||
if(SSticker.triai)
|
||||
A.spawn_positions = 3
|
||||
|
||||
//Get the players who are ready
|
||||
|
||||
@@ -32,8 +32,8 @@ var/list/obj/item/device/paicard/pai_card_list = list()
|
||||
|
||||
card.setPersonality(pai)
|
||||
|
||||
ticker.mode.update_cult_icons_removed(card.pai.mind)
|
||||
ticker.mode.update_rev_icons_removed(card.pai.mind)
|
||||
SSticker.mode.update_cult_icons_removed(card.pai.mind)
|
||||
SSticker.mode.update_rev_icons_removed(card.pai.mind)
|
||||
|
||||
candidates -= candidate
|
||||
usr << browse(null, "window=findPai")
|
||||
|
||||
@@ -240,7 +240,7 @@ var/datum/controller/subsystem/shuttle/SSshuttle
|
||||
/datum/controller/subsystem/shuttle/proc/canRecall()
|
||||
if(!emergency || emergency.mode != SHUTTLE_CALL)
|
||||
return
|
||||
if(ticker.mode.name == "meteor")
|
||||
if(SSticker.mode.name == "meteor")
|
||||
return
|
||||
var/security_num = seclevel2num(get_security_level())
|
||||
switch(security_num)
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
|
||||
var/round_start_time = 0
|
||||
|
||||
var/datum/controller/subsystem/ticker/ticker
|
||||
var/datum/controller/subsystem/SSticker/SSticker
|
||||
|
||||
/datum/controller/subsystem/ticker
|
||||
/datum/controller/subsystem/SSticker
|
||||
name = "Ticker"
|
||||
init_order = 13
|
||||
|
||||
@@ -58,10 +58,10 @@ var/datum/controller/subsystem/ticker/ticker
|
||||
|
||||
var/late_join_disabled
|
||||
|
||||
/datum/controller/subsystem/ticker/New()
|
||||
NEW_SS_GLOBAL(ticker)
|
||||
/datum/controller/subsystem/SSticker/New()
|
||||
NEW_SS_GLOBAL(SSticker)
|
||||
|
||||
/datum/controller/subsystem/ticker/Initialize(timeofday)
|
||||
/datum/controller/subsystem/SSticker/Initialize(timeofday)
|
||||
var/list/music = file2list(ROUND_START_MUSIC_LIST, "\n")
|
||||
login_music = pick(music)
|
||||
|
||||
@@ -72,7 +72,7 @@ var/datum/controller/subsystem/ticker/ticker
|
||||
..()
|
||||
start_at = world.time + (config.lobby_countdown * 10)
|
||||
|
||||
/datum/controller/subsystem/ticker/fire()
|
||||
/datum/controller/subsystem/SSticker/fire()
|
||||
switch(current_state)
|
||||
if(GAME_STATE_STARTUP)
|
||||
if(Master.initializations_finished_with_no_players_logged_in)
|
||||
@@ -126,7 +126,7 @@ var/datum/controller/subsystem/ticker/ticker
|
||||
toggle_ooc(1) // Turn it on
|
||||
declare_completion(force_ending)
|
||||
|
||||
/datum/controller/subsystem/ticker/proc/setup()
|
||||
/datum/controller/subsystem/SSticker/proc/setup()
|
||||
to_chat(world, "<span class='boldannounce'>Starting game...</span>")
|
||||
var/init_start = world.timeofday
|
||||
//Create and announce mode
|
||||
@@ -221,7 +221,7 @@ var/datum/controller/subsystem/ticker/ticker
|
||||
|
||||
return 1
|
||||
|
||||
/datum/controller/subsystem/ticker/proc/PostSetup()
|
||||
/datum/controller/subsystem/SSticker/proc/PostSetup()
|
||||
set waitfor = 0
|
||||
mode.post_setup()
|
||||
//Cleanup some stuff
|
||||
@@ -234,7 +234,7 @@ var/datum/controller/subsystem/ticker/ticker
|
||||
var/list/allmins = adm["present"]
|
||||
send2irc("Server", "Round of [hide_mode ? "secret":"[mode.name]"] has started[allmins.len ? ".":" with no active admins online!"]")
|
||||
|
||||
/datum/controller/subsystem/ticker/proc/station_explosion_detonation(atom/bomb)
|
||||
/datum/controller/subsystem/SSticker/proc/station_explosion_detonation(atom/bomb)
|
||||
if(bomb) //BOOM
|
||||
var/turf/epi = bomb.loc
|
||||
qdel(bomb)
|
||||
@@ -242,7 +242,7 @@ var/datum/controller/subsystem/ticker/ticker
|
||||
explosion(epi, 0, 256, 512, 0, TRUE, TRUE, 0, TRUE)
|
||||
|
||||
//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/SSticker/proc/station_explosion_cinematic(station_missed=0, override = null, atom/bomb = null)
|
||||
if( cinematic )
|
||||
return //already a cinematic in progress!
|
||||
|
||||
@@ -356,7 +356,7 @@ var/datum/controller/subsystem/ticker/ticker
|
||||
|
||||
addtimer(CALLBACK(src, .proc/finish_cinematic, bombloc, actually_blew_up), 300)
|
||||
|
||||
/datum/controller/subsystem/ticker/proc/finish_cinematic(killz, actually_blew_up)
|
||||
/datum/controller/subsystem/SSticker/proc/finish_cinematic(killz, actually_blew_up)
|
||||
if(cinematic)
|
||||
qdel(cinematic) //end the cinematic
|
||||
cinematic = null
|
||||
@@ -365,7 +365,7 @@ var/datum/controller/subsystem/ticker/ticker
|
||||
if(actually_blew_up && !isnull(killz) && M.stat != DEAD && M.z == killz)
|
||||
M.gib()
|
||||
|
||||
/datum/controller/subsystem/ticker/proc/create_characters()
|
||||
/datum/controller/subsystem/SSticker/proc/create_characters()
|
||||
for(var/mob/dead/new_player/player in player_list)
|
||||
if(player.ready && player.mind)
|
||||
joined_player_list += player.ckey
|
||||
@@ -374,14 +374,14 @@ var/datum/controller/subsystem/ticker/ticker
|
||||
player.new_player_panel()
|
||||
CHECK_TICK
|
||||
|
||||
/datum/controller/subsystem/ticker/proc/collect_minds()
|
||||
/datum/controller/subsystem/SSticker/proc/collect_minds()
|
||||
for(var/mob/dead/new_player/P in player_list)
|
||||
if(P.new_character && P.new_character.mind)
|
||||
ticker.minds += P.new_character.mind
|
||||
SSticker.minds += P.new_character.mind
|
||||
CHECK_TICK
|
||||
|
||||
|
||||
/datum/controller/subsystem/ticker/proc/equip_characters()
|
||||
/datum/controller/subsystem/SSticker/proc/equip_characters()
|
||||
var/captainless=1
|
||||
for(var/mob/dead/new_player/N in player_list)
|
||||
var/mob/living/carbon/human/player = N.new_character
|
||||
@@ -397,7 +397,7 @@ var/datum/controller/subsystem/ticker/ticker
|
||||
to_chat(N, "Captainship not forced on anyone.")
|
||||
CHECK_TICK
|
||||
|
||||
/datum/controller/subsystem/ticker/proc/transfer_characters()
|
||||
/datum/controller/subsystem/SSticker/proc/transfer_characters()
|
||||
var/list/livings = list()
|
||||
for(var/mob/dead/new_player/player in player_list)
|
||||
var/mob/living = player.transfer_character()
|
||||
@@ -411,12 +411,12 @@ var/datum/controller/subsystem/ticker/ticker
|
||||
if(livings.len)
|
||||
addtimer(CALLBACK(src, .proc/release_characters, livings), 30, TIMER_CLIENT_TIME)
|
||||
|
||||
/datum/controller/subsystem/ticker/proc/release_characters(list/livings)
|
||||
/datum/controller/subsystem/SSticker/proc/release_characters(list/livings)
|
||||
for(var/I in livings)
|
||||
var/mob/living/L = I
|
||||
L.notransform = FALSE
|
||||
|
||||
/datum/controller/subsystem/ticker/proc/declare_completion()
|
||||
/datum/controller/subsystem/SSticker/proc/declare_completion()
|
||||
set waitfor = FALSE
|
||||
var/station_evacuated = EMERGENCY_ESCAPED_OR_ENDGAMED
|
||||
var/num_survivors = 0
|
||||
@@ -456,7 +456,7 @@ var/datum/controller/subsystem/ticker/ticker
|
||||
to_chat(world, "<BR>[TAB]Shift Duration: <B>[round(world.time / 36000)]:[add_zero("[world.time / 600 % 60]", 2)]:[world.time / 100 % 6][world.time / 100 % 10]</B>")
|
||||
to_chat(world, "<BR>[TAB]Station Integrity: <B>[mode.station_was_nuked ? "<font color='red'>Destroyed</font>" : "[station_integrity]%"]</B>")
|
||||
if(mode.station_was_nuked)
|
||||
ticker.news_report = STATION_DESTROYED_NUKE
|
||||
SSticker.news_report = STATION_DESTROYED_NUKE
|
||||
var/total_players = joined_player_list.len
|
||||
if(joined_player_list.len)
|
||||
to_chat(world, "<BR>[TAB]Total Population: <B>[total_players]</B>")
|
||||
@@ -606,7 +606,7 @@ var/datum/controller/subsystem/ticker/ticker
|
||||
else
|
||||
world.Reboot("Round ended.", "end_proper", "proper completion")
|
||||
|
||||
/datum/controller/subsystem/ticker/proc/send_tip_of_the_round()
|
||||
/datum/controller/subsystem/SSticker/proc/send_tip_of_the_round()
|
||||
var/m
|
||||
if(selected_tip)
|
||||
m = selected_tip
|
||||
@@ -621,7 +621,7 @@ var/datum/controller/subsystem/ticker/ticker
|
||||
if(m)
|
||||
to_chat(world, "<font color='purple'><b>Tip of the round: </b>[html_encode(m)]</font>")
|
||||
|
||||
/datum/controller/subsystem/ticker/proc/check_queue()
|
||||
/datum/controller/subsystem/SSticker/proc/check_queue()
|
||||
if(!queued_players.len || !config.hard_popcap)
|
||||
return
|
||||
|
||||
@@ -643,7 +643,7 @@ var/datum/controller/subsystem/ticker/ticker
|
||||
queued_players -= next_in_line
|
||||
queue_delay = 0
|
||||
|
||||
/datum/controller/subsystem/ticker/proc/check_maprotate()
|
||||
/datum/controller/subsystem/SSticker/proc/check_maprotate()
|
||||
if (!config.maprotation)
|
||||
return
|
||||
if (SSshuttle.emergency && SSshuttle.emergency.mode != SHUTTLE_ESCAPE || SSshuttle.canRecall())
|
||||
@@ -660,45 +660,45 @@ var/datum/controller/subsystem/ticker/ticker
|
||||
|
||||
|
||||
/world/proc/has_round_started()
|
||||
if (ticker && ticker.current_state >= GAME_STATE_PLAYING)
|
||||
if (SSticker && SSticker.current_state >= GAME_STATE_PLAYING)
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
/datum/controller/subsystem/ticker/Recover()
|
||||
current_state = ticker.current_state
|
||||
force_ending = ticker.force_ending
|
||||
hide_mode = ticker.hide_mode
|
||||
mode = ticker.mode
|
||||
event_time = ticker.event_time
|
||||
event = ticker.event
|
||||
/datum/controller/subsystem/SSticker/Recover()
|
||||
current_state = SSticker.current_state
|
||||
force_ending = SSticker.force_ending
|
||||
hide_mode = SSticker.hide_mode
|
||||
mode = SSticker.mode
|
||||
event_time = SSticker.event_time
|
||||
event = SSticker.event
|
||||
|
||||
login_music = ticker.login_music
|
||||
round_end_sound = ticker.round_end_sound
|
||||
login_music = SSticker.login_music
|
||||
round_end_sound = SSticker.round_end_sound
|
||||
|
||||
minds = ticker.minds
|
||||
minds = SSticker.minds
|
||||
|
||||
syndicate_coalition = ticker.syndicate_coalition
|
||||
factions = ticker.factions
|
||||
availablefactions = ticker.availablefactions
|
||||
syndicate_coalition = SSticker.syndicate_coalition
|
||||
factions = SSticker.factions
|
||||
availablefactions = SSticker.availablefactions
|
||||
|
||||
delay_end = ticker.delay_end
|
||||
delay_end = SSticker.delay_end
|
||||
|
||||
triai = ticker.triai
|
||||
tipped = ticker.tipped
|
||||
selected_tip = ticker.selected_tip
|
||||
triai = SSticker.triai
|
||||
tipped = SSticker.tipped
|
||||
selected_tip = SSticker.selected_tip
|
||||
|
||||
timeLeft = ticker.timeLeft
|
||||
timeLeft = SSticker.timeLeft
|
||||
|
||||
totalPlayers = ticker.totalPlayers
|
||||
totalPlayersReady = ticker.totalPlayersReady
|
||||
totalPlayers = SSticker.totalPlayers
|
||||
totalPlayersReady = SSticker.totalPlayersReady
|
||||
|
||||
queue_delay = ticker.queue_delay
|
||||
queued_players = ticker.queued_players
|
||||
cinematic = ticker.cinematic
|
||||
maprotatechecked = ticker.maprotatechecked
|
||||
queue_delay = SSticker.queue_delay
|
||||
queued_players = SSticker.queued_players
|
||||
cinematic = SSticker.cinematic
|
||||
maprotatechecked = SSticker.maprotatechecked
|
||||
|
||||
|
||||
/datum/controller/subsystem/ticker/proc/send_news_report()
|
||||
/datum/controller/subsystem/SSticker/proc/send_news_report()
|
||||
var/news_message
|
||||
var/news_source = "Nanotrasen News Network"
|
||||
switch(news_report)
|
||||
@@ -750,12 +750,12 @@ var/datum/controller/subsystem/ticker/ticker
|
||||
if(news_message)
|
||||
send2otherserver(news_source, news_message,"News_Report")
|
||||
|
||||
/datum/controller/subsystem/ticker/proc/GetTimeLeft()
|
||||
if(isnull(ticker.timeLeft))
|
||||
/datum/controller/subsystem/SSticker/proc/GetTimeLeft()
|
||||
if(isnull(SSticker.timeLeft))
|
||||
return max(0, start_at - world.time)
|
||||
return timeLeft
|
||||
|
||||
/datum/controller/subsystem/ticker/proc/SetTimeLeft(newtime)
|
||||
/datum/controller/subsystem/SSticker/proc/SetTimeLeft(newtime)
|
||||
if(newtime >= 0 && isnull(timeLeft)) //remember, negative means delayed
|
||||
start_at = world.time + newtime
|
||||
else
|
||||
|
||||
@@ -122,7 +122,7 @@ var/datum/controller/subsystem/vote/SSvote
|
||||
if("gamemode")
|
||||
if(master_mode != .)
|
||||
world.save_mode(.)
|
||||
if(ticker && ticker.mode)
|
||||
if(SSticker && SSticker.mode)
|
||||
restart = 1
|
||||
else
|
||||
master_mode = .
|
||||
|
||||
@@ -36,11 +36,11 @@
|
||||
to_chat(new_body, "<span class='userdanger'>And yet, you somehow push it all away.</span>")
|
||||
|
||||
/datum/antagonist/clockcultist/on_gain()
|
||||
if(ticker && ticker.mode && owner.mind)
|
||||
ticker.mode.servants_of_ratvar += owner.mind
|
||||
ticker.mode.update_servant_icons_added(owner.mind)
|
||||
if(SSticker && SSticker.mode && owner.mind)
|
||||
SSticker.mode.servants_of_ratvar += owner.mind
|
||||
SSticker.mode.update_servant_icons_added(owner.mind)
|
||||
if(jobban_isbanned(owner, ROLE_SERVANT_OF_RATVAR))
|
||||
INVOKE_ASYNC(ticker.mode, /datum/game_mode.proc/replace_jobbaned_player, owner, ROLE_SERVANT_OF_RATVAR, ROLE_SERVANT_OF_RATVAR)
|
||||
INVOKE_ASYNC(SSticker.mode, /datum/game_mode.proc/replace_jobbaned_player, owner, ROLE_SERVANT_OF_RATVAR, ROLE_SERVANT_OF_RATVAR)
|
||||
if(owner.mind)
|
||||
owner.mind.special_role = "Servant of Ratvar"
|
||||
owner.log_message("<font color=#BE8700>Has been converted to the cult of Ratvar!</font>", INDIVIDUAL_ATTACK_LOG)
|
||||
@@ -55,8 +55,8 @@
|
||||
else if(isbrain(owner) || isclockmob(owner))
|
||||
to_chat(owner, "<span class='nezbere'>You can communicate with other servants by using the Hierophant Network action button in the upper left.</span>")
|
||||
..()
|
||||
if(istype(ticker.mode, /datum/game_mode/clockwork_cult))
|
||||
var/datum/game_mode/clockwork_cult/C = ticker.mode
|
||||
if(istype(SSticker.mode, /datum/game_mode/clockwork_cult))
|
||||
var/datum/game_mode/clockwork_cult/C = SSticker.mode
|
||||
C.present_tasks(owner) //Memorize the objectives
|
||||
|
||||
/datum/antagonist/clockcultist/apply_innate_effects()
|
||||
@@ -146,9 +146,9 @@
|
||||
if(!silent_update)
|
||||
owner.visible_message("<span class='big'>[owner] seems to have remembered their true allegiance!</span>", \
|
||||
"<span class='userdanger'>A cold, cold darkness flows through your mind, extinguishing the Justiciar's light and all of your memories as his servant.</span>")
|
||||
if(ticker && ticker.mode && owner.mind)
|
||||
ticker.mode.servants_of_ratvar -= owner.mind
|
||||
ticker.mode.update_servant_icons_removed(owner.mind)
|
||||
if(SSticker && SSticker.mode && owner.mind)
|
||||
SSticker.mode.servants_of_ratvar -= owner.mind
|
||||
SSticker.mode.update_servant_icons_removed(owner.mind)
|
||||
if(owner.mind)
|
||||
owner.mind.wipe_memory()
|
||||
owner.mind.special_role = null
|
||||
|
||||
@@ -13,14 +13,14 @@
|
||||
. = is_convertable_to_cult(new_body)
|
||||
|
||||
/datum/antagonist/cultist/on_gain()
|
||||
if(ticker && ticker.mode && owner.mind)
|
||||
ticker.mode.cult += owner.mind
|
||||
ticker.mode.update_cult_icons_added(owner.mind)
|
||||
if(istype(ticker.mode, /datum/game_mode/cult))
|
||||
var/datum/game_mode/cult/C = ticker.mode
|
||||
if(SSticker && SSticker.mode && owner.mind)
|
||||
SSticker.mode.cult += owner.mind
|
||||
SSticker.mode.update_cult_icons_added(owner.mind)
|
||||
if(istype(SSticker.mode, /datum/game_mode/cult))
|
||||
var/datum/game_mode/cult/C = SSticker.mode
|
||||
C.memorize_cult_objectives(owner.mind)
|
||||
if(jobban_isbanned(owner, ROLE_CULTIST))
|
||||
INVOKE_ASYNC(ticker.mode, /datum/game_mode.proc/replace_jobbaned_player, owner, ROLE_CULTIST, ROLE_CULTIST)
|
||||
INVOKE_ASYNC(SSticker.mode, /datum/game_mode.proc/replace_jobbaned_player, owner, ROLE_CULTIST, ROLE_CULTIST)
|
||||
if(owner.mind)
|
||||
owner.mind.special_role = "Cultist"
|
||||
owner.log_message("<font color=#960000>Has been converted to the cult of Nar'Sie!</font>", INDIVIDUAL_ATTACK_LOG)
|
||||
@@ -40,9 +40,9 @@
|
||||
/datum/antagonist/cultist/on_remove()
|
||||
if(owner.mind)
|
||||
owner.mind.wipe_memory()
|
||||
if(ticker && ticker.mode)
|
||||
ticker.mode.cult -= owner.mind
|
||||
ticker.mode.update_cult_icons_removed(owner.mind)
|
||||
if(SSticker && SSticker.mode)
|
||||
SSticker.mode.cult -= owner.mind
|
||||
SSticker.mode.update_cult_icons_removed(owner.mind)
|
||||
to_chat(owner, "<span class='userdanger'>An unfamiliar white light flashes through your mind, cleansing the taint of the Dark One and all your memories as its servant.</span>")
|
||||
owner.log_message("<font color=#960000>Has renounced the cult of Nar'Sie!</font>", INDIVIDUAL_ATTACK_LOG)
|
||||
if(!silent_update)
|
||||
|
||||
@@ -90,7 +90,7 @@
|
||||
|
||||
/datum/disease/transformation/jungle_fever/do_disease_transformation(mob/living/carbon/affected_mob)
|
||||
if(!ismonkey(affected_mob))
|
||||
ticker.mode.add_monkey(affected_mob.mind)
|
||||
SSticker.mode.add_monkey(affected_mob.mind)
|
||||
affected_mob.monkeyize(TR_KEEPITEMS | TR_KEEPIMPLANTS | TR_KEEPORGANS | TR_KEEPDAMAGE | TR_KEEPVIRUS | TR_KEEPSE)
|
||||
|
||||
/datum/disease/transformation/jungle_fever/stage_act()
|
||||
@@ -108,7 +108,7 @@
|
||||
affected_mob.say(pick("Eeek, ook ook!", "Eee-eeek!", "Eeee!", "Ungh, ungh."))
|
||||
|
||||
/datum/disease/transformation/jungle_fever/cure()
|
||||
ticker.mode.remove_monkey(affected_mob.mind)
|
||||
SSticker.mode.remove_monkey(affected_mob.mind)
|
||||
..()
|
||||
|
||||
|
||||
|
||||
@@ -91,7 +91,7 @@ var/global/datum/getrev/revdata = new()
|
||||
to_chat(src, "Enforce Continuous Rounds: [config.continuous.len] of [config.modes.len] roundtypes")
|
||||
to_chat(src, "Allow Midround Antagonists: [config.midround_antag.len] of [config.modes.len] roundtypes")
|
||||
if(config.show_game_type_odds)
|
||||
if(ticker.current_state == GAME_STATE_PLAYING)
|
||||
if(SSticker.current_state == GAME_STATE_PLAYING)
|
||||
var/prob_sum = 0
|
||||
var/current_odds_differ = FALSE
|
||||
var/list/probs = list()
|
||||
@@ -101,7 +101,7 @@ var/global/datum/getrev/revdata = new()
|
||||
var/ctag = initial(M.config_tag)
|
||||
if(!(ctag in config.probabilities))
|
||||
continue
|
||||
if((config.min_pop[ctag] && (config.min_pop[ctag] > ticker.totalPlayersReady)) || (config.max_pop[ctag] && (config.max_pop[ctag] < ticker.totalPlayersReady)) || (initial(M.required_players) > ticker.totalPlayersReady))
|
||||
if((config.min_pop[ctag] && (config.min_pop[ctag] > SSticker.totalPlayersReady)) || (config.max_pop[ctag] && (config.max_pop[ctag] < SSticker.totalPlayersReady)) || (initial(M.required_players) > SSticker.totalPlayersReady))
|
||||
current_odds_differ = TRUE
|
||||
continue
|
||||
probs[ctag] = 1
|
||||
|
||||
+2
-2
@@ -73,8 +73,8 @@ var/datum/atom_hud/huds = list( \
|
||||
//MOB PROCS
|
||||
/mob/proc/reload_huds()
|
||||
var/gang_huds = list()
|
||||
if(ticker.mode)
|
||||
for(var/datum/gang/G in ticker.mode.gangs)
|
||||
if(SSticker.mode)
|
||||
for(var/datum/gang/G in SSticker.mode.gangs)
|
||||
gang_huds += G.ganghud
|
||||
|
||||
for(var/datum/atom_hud/hud in (huds|gang_huds))
|
||||
|
||||
+176
-176
@@ -69,7 +69,7 @@
|
||||
soulOwner = src
|
||||
|
||||
/datum/mind/Destroy()
|
||||
ticker.minds -= src
|
||||
SSticker.minds -= src
|
||||
return ..()
|
||||
|
||||
/datum/mind/proc/transfer_to(mob/new_character, var/force_key_move = 0)
|
||||
@@ -121,19 +121,19 @@
|
||||
qdel(O)
|
||||
|
||||
/datum/mind/proc/remove_changeling()
|
||||
if(src in ticker.mode.changelings)
|
||||
ticker.mode.changelings -= src
|
||||
if(src in SSticker.mode.changelings)
|
||||
SSticker.mode.changelings -= src
|
||||
current.remove_changeling_powers()
|
||||
if(changeling)
|
||||
qdel(changeling)
|
||||
changeling = null
|
||||
special_role = null
|
||||
remove_antag_equip()
|
||||
ticker.mode.update_changeling_icons_removed(src)
|
||||
SSticker.mode.update_changeling_icons_removed(src)
|
||||
|
||||
/datum/mind/proc/remove_traitor()
|
||||
if(src in ticker.mode.traitors)
|
||||
ticker.mode.traitors -= src
|
||||
if(src in SSticker.mode.traitors)
|
||||
SSticker.mode.traitors -= src
|
||||
if(isAI(current))
|
||||
var/mob/living/silicon/ai/A = current
|
||||
A.set_zeroth_law("")
|
||||
@@ -142,44 +142,44 @@
|
||||
qdel(A.malf_picker)
|
||||
special_role = null
|
||||
remove_antag_equip()
|
||||
ticker.mode.update_traitor_icons_removed(src)
|
||||
SSticker.mode.update_traitor_icons_removed(src)
|
||||
|
||||
/datum/mind/proc/remove_nukeop()
|
||||
if(src in ticker.mode.syndicates)
|
||||
ticker.mode.syndicates -= src
|
||||
ticker.mode.update_synd_icons_removed(src)
|
||||
if(src in SSticker.mode.syndicates)
|
||||
SSticker.mode.syndicates -= src
|
||||
SSticker.mode.update_synd_icons_removed(src)
|
||||
special_role = null
|
||||
remove_objectives()
|
||||
remove_antag_equip()
|
||||
|
||||
/datum/mind/proc/remove_wizard()
|
||||
if(src in ticker.mode.wizards)
|
||||
ticker.mode.wizards -= src
|
||||
if(src in SSticker.mode.wizards)
|
||||
SSticker.mode.wizards -= src
|
||||
current.spellremove(current)
|
||||
special_role = null
|
||||
remove_antag_equip()
|
||||
|
||||
/datum/mind/proc/remove_cultist()
|
||||
if(src in ticker.mode.cult)
|
||||
ticker.mode.remove_cultist(src, 0, 0)
|
||||
if(src in SSticker.mode.cult)
|
||||
SSticker.mode.remove_cultist(src, 0, 0)
|
||||
special_role = null
|
||||
remove_objectives()
|
||||
remove_antag_equip()
|
||||
|
||||
/datum/mind/proc/remove_rev()
|
||||
if(src in ticker.mode.revolutionaries)
|
||||
ticker.mode.revolutionaries -= src
|
||||
ticker.mode.update_rev_icons_removed(src)
|
||||
if(src in ticker.mode.head_revolutionaries)
|
||||
ticker.mode.head_revolutionaries -= src
|
||||
ticker.mode.update_rev_icons_removed(src)
|
||||
if(src in SSticker.mode.revolutionaries)
|
||||
SSticker.mode.revolutionaries -= src
|
||||
SSticker.mode.update_rev_icons_removed(src)
|
||||
if(src in SSticker.mode.head_revolutionaries)
|
||||
SSticker.mode.head_revolutionaries -= src
|
||||
SSticker.mode.update_rev_icons_removed(src)
|
||||
special_role = null
|
||||
remove_objectives()
|
||||
remove_antag_equip()
|
||||
|
||||
|
||||
/datum/mind/proc/remove_gang()
|
||||
ticker.mode.remove_gangster(src,0,1,1)
|
||||
SSticker.mode.remove_gangster(src,0,1,1)
|
||||
remove_objectives()
|
||||
|
||||
/datum/mind/proc/remove_antag_equip()
|
||||
@@ -201,11 +201,11 @@
|
||||
remove_cultist()
|
||||
remove_rev()
|
||||
remove_gang()
|
||||
ticker.mode.update_changeling_icons_removed(src)
|
||||
ticker.mode.update_traitor_icons_removed(src)
|
||||
ticker.mode.update_wiz_icons_removed(src)
|
||||
ticker.mode.update_cult_icons_removed(src)
|
||||
ticker.mode.update_rev_icons_removed(src)
|
||||
SSticker.mode.update_changeling_icons_removed(src)
|
||||
SSticker.mode.update_traitor_icons_removed(src)
|
||||
SSticker.mode.update_wiz_icons_removed(src)
|
||||
SSticker.mode.update_cult_icons_removed(src)
|
||||
SSticker.mode.update_rev_icons_removed(src)
|
||||
if(gang_datum)
|
||||
gang_datum.remove_gang_hud(src)
|
||||
|
||||
@@ -214,13 +214,13 @@
|
||||
|
||||
/datum/mind/proc/enslave_mind_to_creator(mob/living/creator)
|
||||
if(iscultist(creator))
|
||||
ticker.mode.add_cultist(src)
|
||||
SSticker.mode.add_cultist(src)
|
||||
|
||||
else if(is_gangster(creator))
|
||||
ticker.mode.add_gangster(src, creator.mind.gang_datum, TRUE)
|
||||
SSticker.mode.add_gangster(src, creator.mind.gang_datum, TRUE)
|
||||
|
||||
else if(is_revolutionary_in_general(creator))
|
||||
ticker.mode.add_revolutionary(src)
|
||||
SSticker.mode.add_revolutionary(src)
|
||||
|
||||
else if(is_servant_of_ratvar(creator))
|
||||
add_servant_of_ratvar(current)
|
||||
@@ -255,7 +255,7 @@
|
||||
to_chat(recipient, "<i>[output]</i>")
|
||||
|
||||
/datum/mind/proc/edit_memory()
|
||||
if(!ticker || !ticker.mode)
|
||||
if(!SSticker || !SSticker.mode)
|
||||
alert("Not before round-start!", "Alert")
|
||||
return
|
||||
|
||||
@@ -280,12 +280,12 @@
|
||||
if(ishuman(current))
|
||||
/** REVOLUTION ***/
|
||||
text = "revolution"
|
||||
if (ticker.mode.config_tag=="revolution")
|
||||
if (SSticker.mode.config_tag=="revolution")
|
||||
text = uppertext(text)
|
||||
text = "<i><b>[text]</b></i>: "
|
||||
if (assigned_role in command_positions)
|
||||
text += "<b>HEAD</b>|loyal|employee|headrev|rev"
|
||||
else if (src in ticker.mode.head_revolutionaries)
|
||||
else if (src in SSticker.mode.head_revolutionaries)
|
||||
text += "head|loyal|<a href='?src=\ref[src];revolution=clear'>employee</a>|<b>HEADREV</b>|<a href='?src=\ref[src];revolution=rev'>rev</a>"
|
||||
text += "<br>Flash: <a href='?src=\ref[src];revolution=flash'>give</a>"
|
||||
|
||||
@@ -304,7 +304,7 @@
|
||||
text += "<br>Objectives are empty! <a href='?src=\ref[src];revolution=autoobjectives'>Set to kill all heads</a>."
|
||||
else if(current.isloyal())
|
||||
text += "head|<b>LOYAL</b>|employee|<a href='?src=\ref[src];revolution=headrev'>headrev</a>|rev"
|
||||
else if (src in ticker.mode.revolutionaries)
|
||||
else if (src in SSticker.mode.revolutionaries)
|
||||
text += "head|loyal|<a href='?src=\ref[src];revolution=clear'>employee</a>|<a href='?src=\ref[src];revolution=headrev'>headrev</a>|<b>REV</b>"
|
||||
else
|
||||
text += "head|loyal|<b>EMPLOYEE</b>|<a href='?src=\ref[src];revolution=headrev'>headrev</a>|<a href='?src=\ref[src];revolution=rev'>rev</a>"
|
||||
@@ -318,11 +318,11 @@
|
||||
|
||||
/** GANG ***/
|
||||
text = "gang"
|
||||
if (ticker.mode.config_tag=="gang")
|
||||
if (SSticker.mode.config_tag=="gang")
|
||||
text = uppertext(text)
|
||||
text = "<i><b>[text]</b></i>: "
|
||||
text += "[current.isloyal() ? "<B>LOYAL</B>" : "loyal"]|"
|
||||
if(src in ticker.mode.get_all_gangsters())
|
||||
if(src in SSticker.mode.get_all_gangsters())
|
||||
text += "<a href='?src=\ref[src];gang=clear'>none</a>"
|
||||
else
|
||||
text += "<B>NONE</B>"
|
||||
@@ -332,7 +332,7 @@
|
||||
else
|
||||
text += "|Disabled in Prefs<BR>"
|
||||
|
||||
for(var/datum/gang/G in ticker.mode.gangs)
|
||||
for(var/datum/gang/G in SSticker.mode.gangs)
|
||||
text += "<i>[G.name]</i>: "
|
||||
if(src in (G.gangsters))
|
||||
text += "<B>GANGSTER</B>"
|
||||
@@ -358,10 +358,10 @@
|
||||
|
||||
/** Abductors **/
|
||||
text = "Abductor"
|
||||
if(ticker.mode.config_tag == "abductor")
|
||||
if(SSticker.mode.config_tag == "abductor")
|
||||
text = uppertext(text)
|
||||
text = "<i><b>[text]</b></i>: "
|
||||
if(src in ticker.mode.abductors)
|
||||
if(src in SSticker.mode.abductors)
|
||||
text += "<b>Abductor</b>|<a href='?src=\ref[src];abductor=clear'>human</a>"
|
||||
text += "|<a href='?src=\ref[src];common=undress'>undress</a>|<a href='?src=\ref[src];abductor=equip'>equip</a>"
|
||||
else
|
||||
@@ -376,10 +376,10 @@
|
||||
|
||||
/** NUCLEAR ***/
|
||||
text = "nuclear"
|
||||
if (ticker.mode.config_tag=="nuclear")
|
||||
if (SSticker.mode.config_tag=="nuclear")
|
||||
text = uppertext(text)
|
||||
text = "<i><b>[text]</b></i>: "
|
||||
if (src in ticker.mode.syndicates)
|
||||
if (src in SSticker.mode.syndicates)
|
||||
text += "<b>OPERATIVE</b>|<a href='?src=\ref[src];nuclear=clear'>nanotrasen</a>"
|
||||
text += "<br><a href='?src=\ref[src];nuclear=lair'>To shuttle</a>, <a href='?src=\ref[src];common=undress'>undress</a>, <a href='?src=\ref[src];nuclear=dressup'>dress up</a>."
|
||||
var/code
|
||||
@@ -401,10 +401,10 @@
|
||||
|
||||
/** WIZARD ***/
|
||||
text = "wizard"
|
||||
if (ticker.mode.config_tag=="wizard")
|
||||
if (SSticker.mode.config_tag=="wizard")
|
||||
text = uppertext(text)
|
||||
text = "<i><b>[text]</b></i>: "
|
||||
if ((src in ticker.mode.wizards) || (src in ticker.mode.apprentices))
|
||||
if ((src in SSticker.mode.wizards) || (src in SSticker.mode.apprentices))
|
||||
text += "<b>YES</b>|<a href='?src=\ref[src];wizard=clear'>no</a>"
|
||||
text += "<br><a href='?src=\ref[src];wizard=lair'>To lair</a>, <a href='?src=\ref[src];common=undress'>undress</a>, <a href='?src=\ref[src];wizard=dressup'>dress up</a>, <a href='?src=\ref[src];wizard=name'>let choose name</a>."
|
||||
if (objectives.len==0)
|
||||
@@ -421,7 +421,7 @@
|
||||
|
||||
/** CULT ***/
|
||||
text = "cult"
|
||||
if (ticker.mode.config_tag=="cult")
|
||||
if (SSticker.mode.config_tag=="cult")
|
||||
text = uppertext(text)
|
||||
text = "<i><b>[text]</b></i>: "
|
||||
if(iscultist(current))
|
||||
@@ -444,7 +444,7 @@
|
||||
|
||||
/** CLOCKWORK CULT **/
|
||||
text = "clockwork cult"
|
||||
if(ticker.mode.config_tag == "clockwork cult")
|
||||
if(SSticker.mode.config_tag == "clockwork cult")
|
||||
text = uppertext(text)
|
||||
text = "<i><b>[text]</b></i>: "
|
||||
if(is_servant_of_ratvar(current))
|
||||
@@ -466,10 +466,10 @@
|
||||
|
||||
/** TRAITOR ***/
|
||||
text = "traitor"
|
||||
if (ticker.mode.config_tag=="traitor" || ticker.mode.config_tag=="traitorchan")
|
||||
if (SSticker.mode.config_tag=="traitor" || SSticker.mode.config_tag=="traitorchan")
|
||||
text = uppertext(text)
|
||||
text = "<i><b>[text]</b></i>: "
|
||||
if (src in ticker.mode.traitors)
|
||||
if (src in SSticker.mode.traitors)
|
||||
text += "<b>TRAITOR</b>|<a href='?src=\ref[src];traitor=clear'>loyal</a>"
|
||||
if (objectives.len==0)
|
||||
text += "<br>Objectives are empty! <a href='?src=\ref[src];traitor=autoobjectives'>Randomize</a>!"
|
||||
@@ -487,16 +487,16 @@
|
||||
|
||||
/** CHANGELING ***/
|
||||
text = "changeling"
|
||||
if (ticker.mode.config_tag=="changeling" || ticker.mode.config_tag=="traitorchan")
|
||||
if (SSticker.mode.config_tag=="changeling" || SSticker.mode.config_tag=="traitorchan")
|
||||
text = uppertext(text)
|
||||
text = "<i><b>[text]</b></i>: "
|
||||
if ((src in ticker.mode.changelings) && special_role)
|
||||
if ((src in SSticker.mode.changelings) && special_role)
|
||||
text += "<b>YES</b>|<a href='?src=\ref[src];changeling=clear'>no</a>"
|
||||
if (objectives.len==0)
|
||||
text += "<br>Objectives are empty! <a href='?src=\ref[src];changeling=autoobjectives'>Randomize!</a>"
|
||||
if(changeling && changeling.stored_profiles.len && (current.real_name != changeling.first_prof.name) )
|
||||
text += "<br><a href='?src=\ref[src];changeling=initialdna'>Transform to initial appearance.</a>"
|
||||
else if(src in ticker.mode.changelings) //Station Aligned Changeling
|
||||
else if(src in SSticker.mode.changelings) //Station Aligned Changeling
|
||||
text += "<b>YES (but not an antag)</b>|<a href='?src=\ref[src];changeling=clear'>no</a>"
|
||||
if (objectives.len==0)
|
||||
text += "<br>Objectives are empty! <a href='?src=\ref[src];changeling=autoobjectives'>Randomize!</a>"
|
||||
@@ -514,7 +514,7 @@
|
||||
|
||||
/** MONKEY ***/
|
||||
text = "monkey"
|
||||
if (ticker.mode.config_tag=="monkey")
|
||||
if (SSticker.mode.config_tag=="monkey")
|
||||
text = uppertext(text)
|
||||
text = "<i><b>[text]</b></i>: "
|
||||
if (ishuman(current))
|
||||
@@ -541,15 +541,15 @@
|
||||
|
||||
/** devil ***/
|
||||
text = "devil"
|
||||
if(ticker.mode.config_tag == "devil")
|
||||
if(SSticker.mode.config_tag == "devil")
|
||||
text = uppertext(text)
|
||||
text = "<i><b>[text]</b></i>: "
|
||||
if(src in ticker.mode.devils)
|
||||
if(src in SSticker.mode.devils)
|
||||
if(devilinfo && !devilinfo.ascendable)
|
||||
text += "<b>DEVIL</b>|<a href='?src=\ref[src];devil=ascendable_devil'>Ascendable Devil</a>|sintouched|<a href='?src=\ref[src];devil=clear'>human</a>"
|
||||
else
|
||||
text += "<a href='?src=\ref[src];devil=devil'>DEVIL</a>|<b>ASCENDABLE DEVIL</b>|sintouched|<a href='?src=\ref[src];devil=clear'>human</a>"
|
||||
else if(src in ticker.mode.sintouched)
|
||||
else if(src in SSticker.mode.sintouched)
|
||||
text += "devil|Ascendable Devil|<b>SINTOUCHED</b>|<a href='?src=\ref[src];devil=clear'>human</a>"
|
||||
else
|
||||
text += "<a href='?src=\ref[src];devil=devil'>devil</a>|<a href='?src=\ref[src];devil=ascendable_devil'>Ascendable Devil</a>|<a href='?src=\ref[src];devil=sintouched'>sintouched</a>|<b>HUMAN</b>"
|
||||
@@ -575,7 +575,7 @@
|
||||
if (R.emagged)
|
||||
n_e_robots++
|
||||
text += "<br>[n_e_robots] of [ai.connected_robots.len] slaved cyborgs are emagged. <a href='?src=\ref[src];silicon=unemagcyborgs'>Unemag</a>"
|
||||
if (ticker.mode.config_tag == "traitorchan")
|
||||
if (SSticker.mode.config_tag == "traitorchan")
|
||||
if (sections["traitor"])
|
||||
out += sections["traitor"]+"<br>"
|
||||
if (sections["changeling"])
|
||||
@@ -583,15 +583,15 @@
|
||||
sections -= "traitor"
|
||||
sections -= "changeling"
|
||||
else
|
||||
if (sections[ticker.mode.config_tag])
|
||||
out += sections[ticker.mode.config_tag]+"<br><br>"
|
||||
sections -= ticker.mode.config_tag
|
||||
if (sections[SSticker.mode.config_tag])
|
||||
out += sections[SSticker.mode.config_tag]+"<br><br>"
|
||||
sections -= SSticker.mode.config_tag
|
||||
for (var/i in sections)
|
||||
if (sections[i])
|
||||
out += sections[i]+"<br>"
|
||||
|
||||
|
||||
if(((src in ticker.mode.head_revolutionaries) || (src in ticker.mode.traitors) || (src in ticker.mode.syndicates)) && ishuman(current))
|
||||
if(((src in SSticker.mode.head_revolutionaries) || (src in SSticker.mode.traitors) || (src in SSticker.mode.syndicates)) && ishuman(current))
|
||||
|
||||
text = "Uplink: <a href='?src=\ref[src];common=uplink'>give</a>"
|
||||
var/obj/item/device/uplink/U = find_syndicate_uplink()
|
||||
@@ -666,7 +666,7 @@
|
||||
switch (new_obj_type)
|
||||
if ("assassinate","protect","debrain","maroon")
|
||||
var/list/possible_targets = list("Free objective")
|
||||
for(var/datum/mind/possible_target in ticker.minds)
|
||||
for(var/datum/mind/possible_target in SSticker.minds)
|
||||
if ((possible_target != src) && ishuman(possible_target.current))
|
||||
possible_targets += possible_target.current
|
||||
|
||||
@@ -803,32 +803,32 @@
|
||||
message_admins("[key_name_admin(usr)] has de-rev'ed [current].")
|
||||
log_admin("[key_name(usr)] has de-rev'ed [current].")
|
||||
if("rev")
|
||||
if(src in ticker.mode.head_revolutionaries)
|
||||
ticker.mode.head_revolutionaries -= src
|
||||
ticker.mode.update_rev_icons_removed(src)
|
||||
if(src in SSticker.mode.head_revolutionaries)
|
||||
SSticker.mode.head_revolutionaries -= src
|
||||
SSticker.mode.update_rev_icons_removed(src)
|
||||
to_chat(current, "<span class='userdanger'>Revolution has been disappointed of your leader traits! You are a regular revolutionary now!</span>")
|
||||
else if(!(src in ticker.mode.revolutionaries))
|
||||
else if(!(src in SSticker.mode.revolutionaries))
|
||||
to_chat(current, "<span class='danger'><FONT size = 3> You are now a revolutionary! Help your cause. Do not harm your fellow freedom fighters. You can identify your comrades by the red \"R\" icons, and your leaders by the blue \"R\" icons. Help them kill the heads to win the revolution!</FONT></span>")
|
||||
else
|
||||
return
|
||||
ticker.mode.revolutionaries += src
|
||||
ticker.mode.update_rev_icons_added(src)
|
||||
SSticker.mode.revolutionaries += src
|
||||
SSticker.mode.update_rev_icons_added(src)
|
||||
special_role = "Revolutionary"
|
||||
message_admins("[key_name_admin(usr)] has rev'ed [current].")
|
||||
log_admin("[key_name(usr)] has rev'ed [current].")
|
||||
|
||||
if("headrev")
|
||||
if(src in ticker.mode.revolutionaries)
|
||||
ticker.mode.revolutionaries -= src
|
||||
ticker.mode.update_rev_icons_removed(src)
|
||||
if(src in SSticker.mode.revolutionaries)
|
||||
SSticker.mode.revolutionaries -= src
|
||||
SSticker.mode.update_rev_icons_removed(src)
|
||||
to_chat(current, "<span class='userdanger'>You have proved your devotion to revoltion! Yea are a head revolutionary now!</span>")
|
||||
else if(!(src in ticker.mode.head_revolutionaries))
|
||||
else if(!(src in SSticker.mode.head_revolutionaries))
|
||||
to_chat(current, "<span class='userdanger'>You are a member of the revolutionaries' leadership now!</span>")
|
||||
else
|
||||
return
|
||||
if (ticker.mode.head_revolutionaries.len>0)
|
||||
if (SSticker.mode.head_revolutionaries.len>0)
|
||||
// copy targets
|
||||
var/datum/mind/valid_head = locate() in ticker.mode.head_revolutionaries
|
||||
var/datum/mind/valid_head = locate() in SSticker.mode.head_revolutionaries
|
||||
if (valid_head)
|
||||
for (var/datum/objective/mutiny/O in valid_head.objectives)
|
||||
var/datum/objective/mutiny/rev_obj = new
|
||||
@@ -836,20 +836,20 @@
|
||||
rev_obj.target = O.target
|
||||
rev_obj.explanation_text = "Assassinate [O.target.name], the [O.target.assigned_role]."
|
||||
objectives += rev_obj
|
||||
ticker.mode.greet_revolutionary(src,0)
|
||||
ticker.mode.head_revolutionaries += src
|
||||
ticker.mode.update_rev_icons_added(src)
|
||||
SSticker.mode.greet_revolutionary(src,0)
|
||||
SSticker.mode.head_revolutionaries += src
|
||||
SSticker.mode.update_rev_icons_added(src)
|
||||
special_role = "Head Revolutionary"
|
||||
message_admins("[key_name_admin(usr)] has head-rev'ed [current].")
|
||||
log_admin("[key_name(usr)] has head-rev'ed [current].")
|
||||
|
||||
if("autoobjectives")
|
||||
ticker.mode.forge_revolutionary_objectives(src)
|
||||
ticker.mode.greet_revolutionary(src,0)
|
||||
SSticker.mode.forge_revolutionary_objectives(src)
|
||||
SSticker.mode.greet_revolutionary(src,0)
|
||||
to_chat(usr, "<span class='notice'>The objectives for revolution have been generated and shown to [key]</span>")
|
||||
|
||||
if("flash")
|
||||
if (!ticker.mode.equip_revolutionary(current))
|
||||
if (!SSticker.mode.equip_revolutionary(current))
|
||||
to_chat(usr, "<span class='danger'>Spawning flash failed!</span>")
|
||||
|
||||
if("takeflash")
|
||||
@@ -880,7 +880,7 @@
|
||||
log_admin("[key_name(usr)] has de-gang'ed [current].")
|
||||
|
||||
if("equip")
|
||||
switch(ticker.mode.equip_gang(current,gang_datum))
|
||||
switch(SSticker.mode.equip_gang(current,gang_datum))
|
||||
if(1)
|
||||
to_chat(usr, "<span class='warning'>Unable to equip territory spraycan!</span>")
|
||||
if(2)
|
||||
@@ -905,15 +905,15 @@
|
||||
if(!(gangname in gang_name_pool))
|
||||
gangname = null
|
||||
var/datum/gang/newgang = new(null,gangname)
|
||||
ticker.mode.gangs += newgang
|
||||
SSticker.mode.gangs += newgang
|
||||
message_admins("[key_name_admin(usr)] has created the [newgang.name] Gang.")
|
||||
log_admin("[key_name(usr)] has created the [newgang.name] Gang.")
|
||||
|
||||
else if (href_list["gangboss"])
|
||||
var/datum/gang/G = locate(href_list["gangboss"]) in ticker.mode.gangs
|
||||
var/datum/gang/G = locate(href_list["gangboss"]) in SSticker.mode.gangs
|
||||
if(!G || (src in G.bosses))
|
||||
return
|
||||
ticker.mode.remove_gangster(src,0,2,1)
|
||||
SSticker.mode.remove_gangster(src,0,2,1)
|
||||
G.bosses += src
|
||||
gang_datum = G
|
||||
special_role = "[G.name] Gang Boss"
|
||||
@@ -921,15 +921,15 @@
|
||||
to_chat(current, "<FONT size=3 color=red><B>You are a [G.name] Gang Boss!</B></FONT>")
|
||||
message_admins("[key_name_admin(usr)] has added [current] to the [G.name] Gang leadership.")
|
||||
log_admin("[key_name(usr)] has added [current] to the [G.name] Gang leadership.")
|
||||
ticker.mode.forge_gang_objectives(src)
|
||||
ticker.mode.greet_gang(src,0)
|
||||
SSticker.mode.forge_gang_objectives(src)
|
||||
SSticker.mode.greet_gang(src,0)
|
||||
|
||||
else if (href_list["gangster"])
|
||||
var/datum/gang/G = locate(href_list["gangster"]) in ticker.mode.gangs
|
||||
var/datum/gang/G = locate(href_list["gangster"]) in SSticker.mode.gangs
|
||||
if(!G || (src in G.gangsters))
|
||||
return
|
||||
ticker.mode.remove_gangster(src,0,2,1)
|
||||
ticker.mode.add_gangster(src,G,0)
|
||||
SSticker.mode.remove_gangster(src,0,2,1)
|
||||
SSticker.mode.add_gangster(src,G,0)
|
||||
message_admins("[key_name_admin(usr)] has added [current] to the [G.name] Gang (A).")
|
||||
log_admin("[key_name(usr)] has added [current] to the [G.name] Gang (A).")
|
||||
|
||||
@@ -944,16 +944,16 @@
|
||||
message_admins("[key_name_admin(usr)] has de-cult'ed [current].")
|
||||
log_admin("[key_name(usr)] has de-cult'ed [current].")
|
||||
if("cultist")
|
||||
if(!(src in ticker.mode.cult))
|
||||
ticker.mode.add_cultist(src, 0)
|
||||
if(!(src in SSticker.mode.cult))
|
||||
SSticker.mode.add_cultist(src, 0)
|
||||
message_admins("[key_name_admin(usr)] has cult'ed [current].")
|
||||
log_admin("[key_name(usr)] has cult'ed [current].")
|
||||
if("tome")
|
||||
if (!ticker.mode.equip_cultist(current,1))
|
||||
if (!SSticker.mode.equip_cultist(current,1))
|
||||
to_chat(usr, "<span class='danger'>Spawning tome failed!</span>")
|
||||
|
||||
if("amulet")
|
||||
if (!ticker.mode.equip_cultist(current))
|
||||
if (!SSticker.mode.equip_cultist(current))
|
||||
to_chat(usr, "<span class='danger'>Spawning amulet failed!</span>")
|
||||
|
||||
else if(href_list["clockcult"])
|
||||
@@ -968,7 +968,7 @@
|
||||
message_admins("[key_name_admin(usr)] has made [current] into a servant of Ratvar.")
|
||||
log_admin("[key_name(usr)] has made [current] into a servant of Ratvar.")
|
||||
if("slab")
|
||||
if(!ticker.mode.equip_servant(current))
|
||||
if(!SSticker.mode.equip_servant(current))
|
||||
to_chat(usr, "<span class='warning'>Failed to outfit [current] with a slab!</span>")
|
||||
else
|
||||
to_chat(usr, "<span class='notice'>Successfully gave [current] a clockwork slab!</span>")
|
||||
@@ -979,24 +979,24 @@
|
||||
remove_wizard()
|
||||
to_chat(current, "<span class='userdanger'>You have been brainwashed! You are no longer a wizard!</span>")
|
||||
log_admin("[key_name(usr)] has de-wizard'ed [current].")
|
||||
ticker.mode.update_wiz_icons_removed(src)
|
||||
SSticker.mode.update_wiz_icons_removed(src)
|
||||
if("wizard")
|
||||
if(!(src in ticker.mode.wizards))
|
||||
ticker.mode.wizards += src
|
||||
if(!(src in SSticker.mode.wizards))
|
||||
SSticker.mode.wizards += src
|
||||
special_role = "Wizard"
|
||||
//ticker.mode.learn_basic_spells(current)
|
||||
//SSticker.mode.learn_basic_spells(current)
|
||||
to_chat(current, "<span class='boldannounce'>You are the Space Wizard!</span>")
|
||||
message_admins("[key_name_admin(usr)] has wizard'ed [current].")
|
||||
log_admin("[key_name(usr)] has wizard'ed [current].")
|
||||
ticker.mode.update_wiz_icons_added(src)
|
||||
SSticker.mode.update_wiz_icons_added(src)
|
||||
if("lair")
|
||||
current.loc = pick(wizardstart)
|
||||
if("dressup")
|
||||
ticker.mode.equip_wizard(current)
|
||||
SSticker.mode.equip_wizard(current)
|
||||
if("name")
|
||||
ticker.mode.name_wizard(current)
|
||||
SSticker.mode.name_wizard(current)
|
||||
if("autoobjectives")
|
||||
ticker.mode.forge_wizard_objectives(src)
|
||||
SSticker.mode.forge_wizard_objectives(src)
|
||||
to_chat(usr, "<span class='notice'>The objectives for wizard [key] have been generated. You can edit them and anounce manually.</span>")
|
||||
|
||||
else if (href_list["changeling"])
|
||||
@@ -1007,16 +1007,16 @@
|
||||
message_admins("[key_name_admin(usr)] has de-changeling'ed [current].")
|
||||
log_admin("[key_name(usr)] has de-changeling'ed [current].")
|
||||
if("changeling")
|
||||
if(!(src in ticker.mode.changelings))
|
||||
ticker.mode.changelings += src
|
||||
if(!(src in SSticker.mode.changelings))
|
||||
SSticker.mode.changelings += src
|
||||
current.make_changeling()
|
||||
special_role = "Changeling"
|
||||
to_chat(current, "<span class='boldannounce'>Your powers are awoken. A flash of memory returns to us...we are [changeling.changelingID], a changeling!</span>")
|
||||
message_admins("[key_name_admin(usr)] has changeling'ed [current].")
|
||||
log_admin("[key_name(usr)] has changeling'ed [current].")
|
||||
ticker.mode.update_changeling_icons_added(src)
|
||||
SSticker.mode.update_changeling_icons_added(src)
|
||||
if("autoobjectives")
|
||||
ticker.mode.forge_changeling_objectives(src)
|
||||
SSticker.mode.forge_changeling_objectives(src)
|
||||
to_chat(usr, "<span class='notice'>The objectives for changeling [key] have been generated. You can edit them and anounce manually.</span>")
|
||||
|
||||
if("initialdna")
|
||||
@@ -1037,18 +1037,18 @@
|
||||
message_admins("[key_name_admin(usr)] has de-nuke op'ed [current].")
|
||||
log_admin("[key_name(usr)] has de-nuke op'ed [current].")
|
||||
if("nuclear")
|
||||
if(!(src in ticker.mode.syndicates))
|
||||
ticker.mode.syndicates += src
|
||||
ticker.mode.update_synd_icons_added(src)
|
||||
if (ticker.mode.syndicates.len==1)
|
||||
ticker.mode.prepare_syndicate_leader(src)
|
||||
if(!(src in SSticker.mode.syndicates))
|
||||
SSticker.mode.syndicates += src
|
||||
SSticker.mode.update_synd_icons_added(src)
|
||||
if (SSticker.mode.syndicates.len==1)
|
||||
SSticker.mode.prepare_syndicate_leader(src)
|
||||
else
|
||||
current.real_name = "[syndicate_name()] Operative #[ticker.mode.syndicates.len-1]"
|
||||
current.real_name = "[syndicate_name()] Operative #[SSticker.mode.syndicates.len-1]"
|
||||
special_role = "Syndicate"
|
||||
assigned_role = "Syndicate"
|
||||
to_chat(current, "<span class='notice'>You are a [syndicate_name()] agent!</span>")
|
||||
ticker.mode.forge_syndicate_objectives(src)
|
||||
ticker.mode.greet_syndicate(src)
|
||||
SSticker.mode.forge_syndicate_objectives(src)
|
||||
SSticker.mode.greet_syndicate(src)
|
||||
message_admins("[key_name_admin(usr)] has nuke op'ed [current].")
|
||||
log_admin("[key_name(usr)] has nuke op'ed [current].")
|
||||
if("lair")
|
||||
@@ -1065,7 +1065,7 @@
|
||||
qdel(H.wear_suit)
|
||||
qdel(H.w_uniform)
|
||||
|
||||
if (!ticker.mode.equip_syndicate(current))
|
||||
if (!SSticker.mode.equip_syndicate(current))
|
||||
to_chat(usr, "<span class='danger'>Equipping a syndicate failed!</span>")
|
||||
if("tellcode")
|
||||
var/code
|
||||
@@ -1086,34 +1086,34 @@
|
||||
to_chat(current, "<span class='userdanger'>You have been brainwashed! You are no longer a traitor!</span>")
|
||||
message_admins("[key_name_admin(usr)] has de-traitor'ed [current].")
|
||||
log_admin("[key_name(usr)] has de-traitor'ed [current].")
|
||||
ticker.mode.update_traitor_icons_removed(src)
|
||||
SSticker.mode.update_traitor_icons_removed(src)
|
||||
|
||||
if("traitor")
|
||||
if(!(src in ticker.mode.traitors))
|
||||
ticker.mode.traitors += src
|
||||
if(!(src in SSticker.mode.traitors))
|
||||
SSticker.mode.traitors += src
|
||||
special_role = "traitor"
|
||||
to_chat(current, "<span class='boldannounce'>You are a traitor!</span>")
|
||||
message_admins("[key_name_admin(usr)] has traitor'ed [current].")
|
||||
log_admin("[key_name(usr)] has traitor'ed [current].")
|
||||
if(isAI(current))
|
||||
var/mob/living/silicon/ai/A = current
|
||||
ticker.mode.add_law_zero(A)
|
||||
ticker.mode.update_traitor_icons_added(src)
|
||||
SSticker.mode.add_law_zero(A)
|
||||
SSticker.mode.update_traitor_icons_added(src)
|
||||
|
||||
if("autoobjectives")
|
||||
ticker.mode.forge_traitor_objectives(src)
|
||||
SSticker.mode.forge_traitor_objectives(src)
|
||||
to_chat(usr, "<span class='notice'>The objectives for traitor [key] have been generated. You can edit them and anounce manually.</span>")
|
||||
|
||||
else if(href_list["devil"])
|
||||
switch(href_list["devil"])
|
||||
if("clear")
|
||||
if(src in ticker.mode.devils)
|
||||
if(src in SSticker.mode.devils)
|
||||
if(istype(current,/mob/living/carbon/true_devil/))
|
||||
if(devilinfo)
|
||||
devilinfo.regress_blood_lizard()
|
||||
else
|
||||
to_chat(usr, "<span class='warning'>Something went wrong with removing the devil, we were unable to find an attached devilinfo.</span>.")
|
||||
ticker.mode.devils -= src
|
||||
SSticker.mode.devils -= src
|
||||
special_role = null
|
||||
to_chat(current, "<span class='userdanger'>Your infernal link has been severed! You are no longer a devil!</span>")
|
||||
RemoveSpell(/obj/effect/proc_holder/spell/targeted/infernal_jaunt)
|
||||
@@ -1132,8 +1132,8 @@
|
||||
var/mob/living/silicon/S = current
|
||||
S.clear_law_sixsixsix(current)
|
||||
log_admin("[key_name(usr)] has de-devil'ed [current].")
|
||||
else if(src in ticker.mode.sintouched)
|
||||
ticker.mode.sintouched -= src
|
||||
else if(src in SSticker.mode.sintouched)
|
||||
SSticker.mode.sintouched -= src
|
||||
message_admins("[key_name_admin(usr)] has de-sintouch'ed [current].")
|
||||
log_admin("[key_name(usr)] has de-sintouch'ed [current].")
|
||||
if("devil")
|
||||
@@ -1145,10 +1145,10 @@
|
||||
if(!ishuman(current) && !iscyborg(current))
|
||||
usr << "<span class='warning'>This only works on humans and cyborgs!</span>"
|
||||
return
|
||||
ticker.mode.devils += src
|
||||
SSticker.mode.devils += src
|
||||
special_role = "devil"
|
||||
ticker.mode.finalize_devil(src, FALSE)
|
||||
ticker.mode.add_devil_objectives(src, 2)
|
||||
SSticker.mode.finalize_devil(src, FALSE)
|
||||
SSticker.mode.add_devil_objectives(src, 2)
|
||||
announceDevilLaws()
|
||||
announce_objectives()
|
||||
message_admins("[key_name_admin(usr)] has devil'ed [current].")
|
||||
@@ -1162,17 +1162,17 @@
|
||||
if(!ishuman(current) && !iscyborg(current))
|
||||
to_chat(usr, "<span class='warning'>This only works on humans and cyborgs!</span>")
|
||||
return
|
||||
ticker.mode.devils += src
|
||||
SSticker.mode.devils += src
|
||||
special_role = "devil"
|
||||
ticker.mode.finalize_devil(src, TRUE)
|
||||
ticker.mode.add_devil_objectives(src, 2)
|
||||
SSticker.mode.finalize_devil(src, TRUE)
|
||||
SSticker.mode.add_devil_objectives(src, 2)
|
||||
announceDevilLaws()
|
||||
announce_objectives()
|
||||
message_admins("[key_name_admin(usr)] has devil'ed [current]. The devil has been marked as ascendable.")
|
||||
log_admin("[key_name(usr)] has devil'ed [current]. The devil has been marked as ascendable.")
|
||||
if("sintouched")
|
||||
if(ishuman(current))
|
||||
ticker.mode.sintouched += src
|
||||
SSticker.mode.sintouched += src
|
||||
var/mob/living/carbon/human/H = current
|
||||
H.influenceSin()
|
||||
message_admins("[key_name_admin(usr)] has sintouch'ed [current].")
|
||||
@@ -1184,14 +1184,14 @@
|
||||
switch(href_list["abductor"])
|
||||
if("clear")
|
||||
to_chat(usr, "Not implemented yet. Sorry!")
|
||||
//ticker.mode.update_abductor_icons_removed(src)
|
||||
//SSticker.mode.update_abductor_icons_removed(src)
|
||||
if("abductor")
|
||||
if(!ishuman(current))
|
||||
to_chat(usr, "<span class='warning'>This only works on humans!</span>")
|
||||
return
|
||||
make_Abductor()
|
||||
log_admin("[key_name(usr)] turned [current] into abductor.")
|
||||
ticker.mode.update_abductor_icons_added(src)
|
||||
SSticker.mode.update_abductor_icons_added(src)
|
||||
if("equip")
|
||||
var/gear = alert("Agent or Scientist Gear","Gear","Agent","Scientist")
|
||||
if(gear)
|
||||
@@ -1286,7 +1286,7 @@
|
||||
message_admins("[key_name_admin(usr)] changed [current]'s telecrystal count to [crystals].")
|
||||
log_admin("[key_name(usr)] changed [current]'s telecrystal count to [crystals].")
|
||||
if("uplink")
|
||||
if(!ticker.mode.equip_traitor(current, !(src in ticker.mode.traitors)))
|
||||
if(!SSticker.mode.equip_traitor(current, !(src in SSticker.mode.traitors)))
|
||||
to_chat(usr, "<span class='danger'>Equipping a syndicate failed!</span>")
|
||||
log_admin("[key_name(usr)] attempted to give [current] an uplink.")
|
||||
|
||||
@@ -1316,20 +1316,20 @@
|
||||
qdel(H)
|
||||
|
||||
/datum/mind/proc/make_Traitor()
|
||||
if(!(src in ticker.mode.traitors))
|
||||
ticker.mode.traitors += src
|
||||
if(!(src in SSticker.mode.traitors))
|
||||
SSticker.mode.traitors += src
|
||||
special_role = "traitor"
|
||||
ticker.mode.forge_traitor_objectives(src)
|
||||
ticker.mode.finalize_traitor(src)
|
||||
ticker.mode.greet_traitor(src)
|
||||
SSticker.mode.forge_traitor_objectives(src)
|
||||
SSticker.mode.finalize_traitor(src)
|
||||
SSticker.mode.greet_traitor(src)
|
||||
|
||||
/datum/mind/proc/make_Nuke(turf/spawnloc, nuke_code, leader=0, telecrystals = TRUE)
|
||||
if(!(src in ticker.mode.syndicates))
|
||||
ticker.mode.syndicates += src
|
||||
ticker.mode.update_synd_icons_added(src)
|
||||
if(!(src in SSticker.mode.syndicates))
|
||||
SSticker.mode.syndicates += src
|
||||
SSticker.mode.update_synd_icons_added(src)
|
||||
special_role = "Syndicate"
|
||||
ticker.mode.forge_syndicate_objectives(src)
|
||||
ticker.mode.greet_syndicate(src)
|
||||
SSticker.mode.forge_syndicate_objectives(src)
|
||||
SSticker.mode.greet_syndicate(src)
|
||||
current.faction |= "syndicate"
|
||||
|
||||
if(spawnloc)
|
||||
@@ -1347,7 +1347,7 @@
|
||||
qdel(H.wear_suit)
|
||||
qdel(H.w_uniform)
|
||||
|
||||
ticker.mode.equip_syndicate(current, telecrystals)
|
||||
SSticker.mode.equip_syndicate(current, telecrystals)
|
||||
|
||||
if (nuke_code)
|
||||
store_memory("<B>Syndicate Nuclear Bomb Code</B>: [nuke_code]", 0, 0)
|
||||
@@ -1361,22 +1361,22 @@
|
||||
to_chat(current, "You were not provided with a nuclear code. Trying asking your team leader or contacting syndicate command.</B>")
|
||||
|
||||
if (leader)
|
||||
ticker.mode.prepare_syndicate_leader(src,nuke_code)
|
||||
SSticker.mode.prepare_syndicate_leader(src,nuke_code)
|
||||
else
|
||||
current.real_name = "[syndicate_name()] Operative #[ticker.mode.syndicates.len-1]"
|
||||
current.real_name = "[syndicate_name()] Operative #[SSticker.mode.syndicates.len-1]"
|
||||
|
||||
/datum/mind/proc/make_Changling()
|
||||
if(!(src in ticker.mode.changelings))
|
||||
ticker.mode.changelings += src
|
||||
if(!(src in SSticker.mode.changelings))
|
||||
SSticker.mode.changelings += src
|
||||
current.make_changeling()
|
||||
special_role = "Changeling"
|
||||
ticker.mode.forge_changeling_objectives(src)
|
||||
ticker.mode.greet_changeling(src)
|
||||
ticker.mode.update_changeling_icons_added(src)
|
||||
SSticker.mode.forge_changeling_objectives(src)
|
||||
SSticker.mode.greet_changeling(src)
|
||||
SSticker.mode.update_changeling_icons_added(src)
|
||||
|
||||
/datum/mind/proc/make_Wizard()
|
||||
if(!(src in ticker.mode.wizards))
|
||||
ticker.mode.wizards += src
|
||||
if(!(src in SSticker.mode.wizards))
|
||||
SSticker.mode.wizards += src
|
||||
special_role = "Wizard"
|
||||
assigned_role = "Wizard"
|
||||
if(!wizardstart.len)
|
||||
@@ -1385,19 +1385,19 @@
|
||||
else
|
||||
current.loc = pick(wizardstart)
|
||||
|
||||
ticker.mode.equip_wizard(current)
|
||||
ticker.mode.name_wizard(current)
|
||||
ticker.mode.forge_wizard_objectives(src)
|
||||
ticker.mode.greet_wizard(src)
|
||||
SSticker.mode.equip_wizard(current)
|
||||
SSticker.mode.name_wizard(current)
|
||||
SSticker.mode.forge_wizard_objectives(src)
|
||||
SSticker.mode.greet_wizard(src)
|
||||
|
||||
|
||||
/datum/mind/proc/make_Cultist()
|
||||
if(!(src in ticker.mode.cult))
|
||||
ticker.mode.add_cultist(src,FALSE)
|
||||
if(!(src in SSticker.mode.cult))
|
||||
SSticker.mode.add_cultist(src,FALSE)
|
||||
special_role = "Cultist"
|
||||
to_chat(current, "<font color=\"purple\"><b><i>You catch a glimpse of the Realm of Nar-Sie, The Geometer of Blood. You now see how flimsy the world is, you see that it should be open to the knowledge of Nar-Sie.</b></i></font>")
|
||||
to_chat(current, "<font color=\"purple\"><b><i>Assist your new compatriots in their dark dealings. Their goal is yours, and yours is theirs. You serve the Dark One above all else. Bring It back.</b></i></font>")
|
||||
var/datum/game_mode/cult/cult = ticker.mode
|
||||
var/datum/game_mode/cult/cult = SSticker.mode
|
||||
|
||||
if (istype(cult))
|
||||
cult.memorize_cult_objectives(src)
|
||||
@@ -1407,13 +1407,13 @@
|
||||
memory += "<B>Objective #1</B>: [explanation]<BR>"
|
||||
|
||||
var/mob/living/carbon/human/H = current
|
||||
if (!ticker.mode.equip_cultist(current))
|
||||
if (!SSticker.mode.equip_cultist(current))
|
||||
to_chat(H, "Spawning an amulet from your Master failed.")
|
||||
|
||||
/datum/mind/proc/make_Rev()
|
||||
if (ticker.mode.head_revolutionaries.len>0)
|
||||
if (SSticker.mode.head_revolutionaries.len>0)
|
||||
// copy targets
|
||||
var/datum/mind/valid_head = locate() in ticker.mode.head_revolutionaries
|
||||
var/datum/mind/valid_head = locate() in SSticker.mode.head_revolutionaries
|
||||
if (valid_head)
|
||||
for (var/datum/objective/mutiny/O in valid_head.objectives)
|
||||
var/datum/objective/mutiny/rev_obj = new
|
||||
@@ -1421,21 +1421,21 @@
|
||||
rev_obj.target = O.target
|
||||
rev_obj.explanation_text = "Assassinate [O.target.current.real_name], the [O.target.assigned_role]."
|
||||
objectives += rev_obj
|
||||
ticker.mode.greet_revolutionary(src,0)
|
||||
ticker.mode.head_revolutionaries += src
|
||||
ticker.mode.update_rev_icons_added(src)
|
||||
SSticker.mode.greet_revolutionary(src,0)
|
||||
SSticker.mode.head_revolutionaries += src
|
||||
SSticker.mode.update_rev_icons_added(src)
|
||||
special_role = "Head Revolutionary"
|
||||
|
||||
ticker.mode.forge_revolutionary_objectives(src)
|
||||
ticker.mode.greet_revolutionary(src,0)
|
||||
SSticker.mode.forge_revolutionary_objectives(src)
|
||||
SSticker.mode.greet_revolutionary(src,0)
|
||||
|
||||
var/list/L = current.get_contents()
|
||||
var/obj/item/device/assembly/flash/flash = locate() in L
|
||||
qdel(flash)
|
||||
take_uplink()
|
||||
var/fail = 0
|
||||
// fail |= !ticker.mode.equip_traitor(current, 1)
|
||||
fail |= !ticker.mode.equip_revolutionary(current)
|
||||
// fail |= !SSticker.mode.equip_traitor(current, 1)
|
||||
fail |= !SSticker.mode.equip_revolutionary(current)
|
||||
|
||||
|
||||
/datum/mind/proc/make_Gang(datum/gang/G)
|
||||
@@ -1443,9 +1443,9 @@
|
||||
G.bosses += src
|
||||
gang_datum = G
|
||||
G.add_gang_hud(src)
|
||||
ticker.mode.forge_gang_objectives(src)
|
||||
ticker.mode.greet_gang(src)
|
||||
ticker.mode.equip_gang(current,G)
|
||||
SSticker.mode.forge_gang_objectives(src)
|
||||
SSticker.mode.greet_gang(src)
|
||||
SSticker.mode.equip_gang(current,G)
|
||||
|
||||
/datum/mind/proc/make_Abductor()
|
||||
var/role = alert("Abductor Role ?","Role","Agent","Scientist")
|
||||
@@ -1458,7 +1458,7 @@
|
||||
if(!ishuman(current))
|
||||
return
|
||||
|
||||
ticker.mode.abductors |= src
|
||||
SSticker.mode.abductors |= src
|
||||
|
||||
var/datum/objective/experiment/O = new
|
||||
O.owner = src
|
||||
@@ -1562,10 +1562,10 @@
|
||||
|
||||
else
|
||||
mind = new /datum/mind(key)
|
||||
if(ticker)
|
||||
ticker.minds += mind
|
||||
if(SSticker)
|
||||
SSticker.minds += mind
|
||||
else
|
||||
stack_trace("mind_initialize(): No ticker ready")
|
||||
stack_trace("mind_initialize(): No SSticker ready")
|
||||
if(!mind.name)
|
||||
mind.name = real_name
|
||||
mind.current = src
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
//these are called by mind.transfer_to()
|
||||
/datum/mind/proc/transfer_antag_huds(datum/atom_hud/antag/newhud)
|
||||
leave_all_antag_huds()
|
||||
ticker.mode.set_antag_hud(current, antag_hud_icon_state)
|
||||
SSticker.mode.set_antag_hud(current, antag_hud_icon_state)
|
||||
if(newhud)
|
||||
newhud.join_hud(current)
|
||||
|
||||
|
||||
@@ -65,7 +65,7 @@
|
||||
var/mob/dead/observer/theghost = pick(candidates)
|
||||
spawn_antag(theghost.client, get_turf(src), href_list["school"])
|
||||
if(H && H.mind)
|
||||
ticker.mode.update_wiz_icons_added(H.mind)
|
||||
SSticker.mode.update_wiz_icons_added(H.mind)
|
||||
else
|
||||
to_chat(H, "Unable to reach your apprentice! You can either attack the spellbook with the contract to refund your points, or wait and try again later.")
|
||||
|
||||
@@ -107,9 +107,9 @@
|
||||
new_objective.target = usr.mind
|
||||
new_objective.explanation_text = "Protect [usr.real_name], the wizard."
|
||||
M.mind.objectives += new_objective
|
||||
ticker.mode.apprentices += M.mind
|
||||
SSticker.mode.apprentices += M.mind
|
||||
M.mind.special_role = "apprentice"
|
||||
ticker.mode.update_wiz_icons_added(M.mind)
|
||||
SSticker.mode.update_wiz_icons_added(M.mind)
|
||||
M << sound('sound/effects/magic.ogg')
|
||||
var/newname = copytext(sanitize(input(M, "You are [wizard_name]'s apprentice. Would you like to change your name to something else?", "Name change", randomname) as null|text),1,MAX_NAME_LEN)
|
||||
if (!newname)
|
||||
@@ -142,7 +142,7 @@
|
||||
if(used)
|
||||
to_chat(user, "<span class='warning'>[src] is out of power!</span>")
|
||||
return 0
|
||||
if(!(user.mind in ticker.mode.syndicates))
|
||||
if(!(user.mind in SSticker.mode.syndicates))
|
||||
to_chat(user, "<span class='danger'>AUTHENTICATION FAILURE. ACCESS DENIED.</span>")
|
||||
return 0
|
||||
if(user.z != ZLEVEL_CENTCOM)
|
||||
@@ -174,7 +174,7 @@
|
||||
C.prefs.copy_to(M)
|
||||
M.key = C.key
|
||||
M.mind.make_Nuke(null, null, 0, FALSE)
|
||||
var/newname = M.dna.species.random_name(M.gender,0,ticker.mode.nukeops_lastname)
|
||||
var/newname = M.dna.species.random_name(M.gender,0,SSticker.mode.nukeops_lastname)
|
||||
M.mind.name = newname
|
||||
M.real_name = newname
|
||||
M.name = newname
|
||||
@@ -208,8 +208,8 @@
|
||||
if(prob(50))
|
||||
brainfirstname = pick(first_names_female)
|
||||
var/brainopslastname = pick(last_names)
|
||||
if(ticker.mode.nukeops_lastname) //the brain inside the syndiborg has the same last name as the other ops.
|
||||
brainopslastname = ticker.mode.nukeops_lastname
|
||||
if(SSticker.mode.nukeops_lastname) //the brain inside the syndiborg has the same last name as the other ops.
|
||||
brainopslastname = SSticker.mode.nukeops_lastname
|
||||
var/brainopsname = "[brainfirstname] [brainopslastname]"
|
||||
|
||||
R.mmi.name = "Man-Machine Interface: [brainopsname]"
|
||||
@@ -263,7 +263,7 @@
|
||||
S.key = C.key
|
||||
S.mind.assigned_role = S.name
|
||||
S.mind.special_role = S.name
|
||||
ticker.mode.traitors += S.mind
|
||||
SSticker.mode.traitors += S.mind
|
||||
var/datum/objective/assassinate/new_objective
|
||||
if(usr)
|
||||
new_objective = new /datum/objective/assassinate
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
to_chat(world, "<B>The entire station was eaten by the Blob!</B>")
|
||||
log_game("Blob mode completed with a blob victory.")
|
||||
|
||||
ticker.news_report = BLOB_WIN
|
||||
SSticker.news_report = BLOB_WIN
|
||||
|
||||
else if(station_was_nuked)
|
||||
feedback_set_details("round_end_result","halfwin - nuke")
|
||||
@@ -33,7 +33,7 @@
|
||||
to_chat(world, "<B>Directive 7-12 has been successfully carried out, preventing the Blob from spreading.</B>")
|
||||
log_game("Blob mode completed with a tie (station destroyed).")
|
||||
|
||||
ticker.news_report = BLOB_NUKE
|
||||
SSticker.news_report = BLOB_NUKE
|
||||
|
||||
else if(!blob_cores.len)
|
||||
feedback_set_details("round_end_result","loss - blob eliminated")
|
||||
@@ -41,7 +41,7 @@
|
||||
to_chat(world, "<B>The alien organism has been eradicated from the station!</B>")
|
||||
log_game("Blob mode completed with a crew victory.")
|
||||
|
||||
ticker.news_report = BLOB_DESTROYED
|
||||
SSticker.news_report = BLOB_DESTROYED
|
||||
|
||||
..()
|
||||
return 1
|
||||
@@ -62,7 +62,7 @@
|
||||
return ..()
|
||||
|
||||
/datum/game_mode/proc/auto_declare_completion_blob()
|
||||
if(istype(ticker.mode,/datum/game_mode/blob) )
|
||||
if(istype(SSticker.mode,/datum/game_mode/blob) )
|
||||
var/datum/game_mode/blob/blob_mode = src
|
||||
if(blob_mode.blob_overminds.len)
|
||||
var/text = "<FONT size = 2><B>The blob[(blob_mode.blob_overminds.len > 1 ? "s were" : " was")]:</B></FONT>"
|
||||
|
||||
@@ -159,8 +159,8 @@
|
||||
if(blob_core)
|
||||
stat(null, "Core Health: [blob_core.obj_integrity]")
|
||||
stat(null, "Power Stored: [blob_points]/[max_blob_points]")
|
||||
if(ticker && istype(ticker.mode, /datum/game_mode/blob))
|
||||
var/datum/game_mode/blob/B = ticker.mode
|
||||
if(SSticker && istype(SSticker.mode, /datum/game_mode/blob))
|
||||
var/datum/game_mode/blob/B = SSticker.mode
|
||||
stat(null, "Blobs to Win: [blobs_legit.len]/[B.blobwincount]")
|
||||
else
|
||||
stat(null, "Total Blobs: [blobs.len]")
|
||||
|
||||
@@ -96,15 +96,15 @@ var/list/slot2type = list("head" = /obj/item/clothing/head/changeling, "wear_mas
|
||||
changeling.current.make_changeling()
|
||||
forge_changeling_objectives(changeling)
|
||||
greet_changeling(changeling)
|
||||
ticker.mode.update_changeling_icons_added(changeling)
|
||||
SSticker.mode.update_changeling_icons_added(changeling)
|
||||
modePlayer += changelings
|
||||
..()
|
||||
|
||||
/datum/game_mode/changeling/make_antag_chance(mob/living/carbon/human/character) //Assigns changeling to latejoiners
|
||||
var/changelingcap = min( round(joined_player_list.len/(config.changeling_scaling_coeff*2))+2, round(joined_player_list.len/config.changeling_scaling_coeff) )
|
||||
if(ticker.mode.changelings.len >= changelingcap) //Caps number of latejoin antagonists
|
||||
if(SSticker.mode.changelings.len >= changelingcap) //Caps number of latejoin antagonists
|
||||
return
|
||||
if(ticker.mode.changelings.len <= (changelingcap - 2) || prob(100 - (config.changeling_scaling_coeff*2)))
|
||||
if(SSticker.mode.changelings.len <= (changelingcap - 2) || prob(100 - (config.changeling_scaling_coeff*2)))
|
||||
if(ROLE_CHANGELING in character.client.prefs.be_special)
|
||||
if(!jobban_isbanned(character, ROLE_CHANGELING) && !jobban_isbanned(character, "Syndicate"))
|
||||
if(age_check(character.client))
|
||||
|
||||
@@ -58,16 +58,16 @@
|
||||
changeling.current.make_changeling()
|
||||
forge_changeling_objectives(changeling)
|
||||
greet_changeling(changeling)
|
||||
ticker.mode.update_changeling_icons_added(changeling)
|
||||
SSticker.mode.update_changeling_icons_added(changeling)
|
||||
..()
|
||||
return
|
||||
|
||||
/datum/game_mode/traitor/changeling/make_antag_chance(mob/living/carbon/human/character) //Assigns changeling to latejoiners
|
||||
var/changelingcap = min( round(joined_player_list.len/(config.changeling_scaling_coeff*4))+2, round(joined_player_list.len/(config.changeling_scaling_coeff*2)) )
|
||||
if(ticker.mode.changelings.len >= changelingcap) //Caps number of latejoin antagonists
|
||||
if(SSticker.mode.changelings.len >= changelingcap) //Caps number of latejoin antagonists
|
||||
..()
|
||||
return
|
||||
if(ticker.mode.changelings.len <= (changelingcap - 2) || prob(100 / (config.changeling_scaling_coeff * 4)))
|
||||
if(SSticker.mode.changelings.len <= (changelingcap - 2) || prob(100 / (config.changeling_scaling_coeff * 4)))
|
||||
if(ROLE_CHANGELING in character.client.prefs.be_special)
|
||||
if(!jobban_isbanned(character, ROLE_CHANGELING) && !jobban_isbanned(character, "Syndicate"))
|
||||
if(age_check(character.client))
|
||||
|
||||
@@ -190,13 +190,13 @@ Credit where due:
|
||||
switch(clockwork_objective)
|
||||
if(CLOCKCULT_ESCAPE)
|
||||
if(clockwork_gateway_activated)
|
||||
ticker.news_report = CLOCK_PROSELYTIZATION
|
||||
SSticker.news_report = CLOCK_PROSELYTIZATION
|
||||
return TRUE
|
||||
if(CLOCKCULT_GATEWAY)
|
||||
if(ratvar_awakens)
|
||||
ticker.news_report = CLOCK_SUMMON
|
||||
SSticker.news_report = CLOCK_SUMMON
|
||||
return TRUE
|
||||
ticker.news_report = CULT_FAILURE
|
||||
SSticker.news_report = CULT_FAILURE
|
||||
return FALSE
|
||||
|
||||
/datum/game_mode/clockwork_cult/declare_completion()
|
||||
@@ -205,8 +205,8 @@ Credit where due:
|
||||
|
||||
/datum/game_mode/proc/auto_declare_completion_clockwork_cult()
|
||||
var/text = ""
|
||||
if(istype(ticker.mode, /datum/game_mode/clockwork_cult)) //Possibly hacky?
|
||||
var/datum/game_mode/clockwork_cult/C = ticker.mode
|
||||
if(istype(SSticker.mode, /datum/game_mode/clockwork_cult)) //Possibly hacky?
|
||||
var/datum/game_mode/clockwork_cult/C = SSticker.mode
|
||||
if(C.check_clockwork_victory())
|
||||
text += "<span class='large_brass'><b>Ratvar's servants have succeeded in fulfilling His goals!</b></span>"
|
||||
feedback_set_details("round_end_result", "win - servants completed their objective ([clockwork_objective])")
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
sort_priority = 1
|
||||
|
||||
/datum/clockwork_scripture/create_object/ark_of_the_clockwork_justiciar/New()
|
||||
if(ticker && ticker.mode && ticker.mode.clockwork_objective != CLOCKCULT_GATEWAY)
|
||||
if(SSticker && SSticker.mode && SSticker.mode.clockwork_objective != CLOCKCULT_GATEWAY)
|
||||
invocations = list("ARMORER! FRIGHT! AMPERAGE! VANGUARD! I CALL UPON YOU!!", \
|
||||
"THIS STATION WILL BE A BEACON OF HOPE IN THE DARKNESS OF SPACE!!", \
|
||||
"HELP US MAKE THIS SHOW ENGINE'S GLORY!!")
|
||||
@@ -44,7 +44,7 @@
|
||||
to_chat(invoker, "<span class='warning'>You must be on the station to activate the Ark!</span>")
|
||||
return FALSE
|
||||
if(clockwork_gateway_activated)
|
||||
if(ticker && ticker.mode && ticker.mode.clockwork_objective != CLOCKCULT_GATEWAY)
|
||||
if(SSticker && SSticker.mode && SSticker.mode.clockwork_objective != CLOCKCULT_GATEWAY)
|
||||
to_chat(invoker, "<span class='nezbere'>\"Look upon his works. Is it not glorious?\"</span>")
|
||||
else
|
||||
to_chat(invoker, "<span class='warning'>Ratvar's recent banishment renders him too weak to be wrung forth from Reebe!</span>")
|
||||
|
||||
@@ -30,7 +30,7 @@
|
||||
|
||||
/obj/structure/destructible/clockwork/massive/celestial_gateway/proc/spawn_animation()
|
||||
var/turf/T = get_turf(src)
|
||||
var/objective_is_gateway = (ticker && ticker.mode && ticker.mode.clockwork_objective == CLOCKCULT_GATEWAY)
|
||||
var/objective_is_gateway = (SSticker && SSticker.mode && SSticker.mode.clockwork_objective == CLOCKCULT_GATEWAY)
|
||||
new/obj/effect/clockwork/general_marker/inathneq(T)
|
||||
if(objective_is_gateway)
|
||||
hierophant_message("<span class='inathneq'>\"[text2ratvar("Engine, come forth and show your servants your mercy")]!\"</span>")
|
||||
|
||||
@@ -113,8 +113,8 @@
|
||||
if(!isnewplayer(M))
|
||||
flash_color(M, flash_color="#966400", flash_time=1)
|
||||
shake_camera(M, 4, 3)
|
||||
var/ratvar_chance = min(ticker.mode.servants_of_ratvar.len, 50)
|
||||
var/narsie_chance = ticker.mode.cult.len
|
||||
var/ratvar_chance = min(SSticker.mode.servants_of_ratvar.len, 50)
|
||||
var/narsie_chance = SSticker.mode.cult.len
|
||||
for(var/mob/living/simple_animal/hostile/construct/harvester/C in player_list)
|
||||
narsie_chance++
|
||||
ratvar_chance = rand(base_victory_chance, ratvar_chance)
|
||||
|
||||
@@ -8,8 +8,8 @@
|
||||
return istype(M) && M.has_antag_datum(/datum/antagonist/cultist, TRUE)
|
||||
|
||||
/proc/is_sacrifice_target(datum/mind/mind)
|
||||
if(ticker.mode.name == "cult")
|
||||
var/datum/game_mode/cult/cult_mode = ticker.mode
|
||||
if(SSticker.mode.name == "cult")
|
||||
var/datum/game_mode/cult/cult_mode = SSticker.mode
|
||||
if(mind == cult_mode.sacrifice_target)
|
||||
return 1
|
||||
return 0
|
||||
@@ -237,11 +237,11 @@
|
||||
if(!check_survive())
|
||||
explanation = "Make sure at least [acolytes_needed] acolytes escape on the shuttle. ([acolytes_survived] escaped) <span class='greenannounce'>Success!</span>"
|
||||
feedback_add_details("cult_objective","cult_survive|SUCCESS|[acolytes_needed]")
|
||||
ticker.news_report = CULT_ESCAPE
|
||||
SSticker.news_report = CULT_ESCAPE
|
||||
else
|
||||
explanation = "Make sure at least [acolytes_needed] acolytes escape on the shuttle. ([acolytes_survived] escaped) <span class='boldannounce'>Fail.</span>"
|
||||
feedback_add_details("cult_objective","cult_survive|FAIL|[acolytes_needed]")
|
||||
ticker.news_report = CULT_FAILURE
|
||||
SSticker.news_report = CULT_FAILURE
|
||||
if("sacrifice")
|
||||
if(sacrifice_target)
|
||||
if(sacrifice_target in sacrificed)
|
||||
@@ -257,11 +257,11 @@
|
||||
if(!eldergod)
|
||||
explanation = "Summon Nar-Sie. <span class='greenannounce'>Success!</span>"
|
||||
feedback_add_details("cult_objective","cult_narsie|SUCCESS")
|
||||
ticker.news_report = CULT_SUMMON
|
||||
SSticker.news_report = CULT_SUMMON
|
||||
else
|
||||
explanation = "Summon Nar-Sie. <span class='boldannounce'>Fail.</span>"
|
||||
feedback_add_details("cult_objective","cult_narsie|FAIL")
|
||||
ticker.news_report = CULT_FAILURE
|
||||
SSticker.news_report = CULT_FAILURE
|
||||
|
||||
text += "<br><B>Objective #[obj_count]</B>: [explanation]"
|
||||
to_chat(world, text)
|
||||
@@ -270,7 +270,7 @@
|
||||
|
||||
|
||||
/datum/game_mode/proc/auto_declare_completion_cult()
|
||||
if( cult.len || (ticker && istype(ticker.mode,/datum/game_mode/cult)) )
|
||||
if( cult.len || (SSticker && istype(SSticker.mode,/datum/game_mode/cult)) )
|
||||
var/text = "<br><font size=3><b>The cultists were:</b></font>"
|
||||
for(var/datum/mind/cultist in cult)
|
||||
text += printplayer(cultist)
|
||||
|
||||
@@ -375,7 +375,7 @@
|
||||
if(istype(A, /obj/item))
|
||||
|
||||
var/list/cultists = list()
|
||||
for(var/datum/mind/M in ticker.mode.cult)
|
||||
for(var/datum/mind/M in SSticker.mode.cult)
|
||||
if(M.current && M.current.stat != DEAD)
|
||||
cultists |= M.current
|
||||
var/mob/living/cultist_to_receive = input(user, "Who do you wish to call to [src]?", "Followers of the Geometer") as null|anything in (cultists - user)
|
||||
|
||||
@@ -196,8 +196,8 @@ This file contains the arcane tome files.
|
||||
if(!src || QDELETED(src) || !Adjacent(user) || user.incapacitated() || !check_rune_turf(Turf, user))
|
||||
return
|
||||
if(ispath(rune_to_scribe, /obj/effect/rune/narsie))
|
||||
if(ticker.mode.name == "cult")
|
||||
var/datum/game_mode/cult/cult_mode = ticker.mode
|
||||
if(SSticker.mode.name == "cult")
|
||||
var/datum/game_mode/cult/cult_mode = SSticker.mode
|
||||
if(!("eldergod" in cult_mode.cult_objectives))
|
||||
to_chat(user, "<span class='warning'>Nar-Sie does not wish to be summoned!</span>")
|
||||
return
|
||||
|
||||
@@ -392,7 +392,7 @@ var/list/teleport_runes = list()
|
||||
convertee.visible_message("<span class='warning'>[convertee] writhes in pain \
|
||||
[brutedamage || burndamage ? "even as [convertee.p_their()] wounds heal and close" : "as the markings below [convertee.p_them()] glow a bloody red"]!</span>", \
|
||||
"<span class='cultlarge'><i>AAAAAAAAAAAAAA-</i></span>")
|
||||
ticker.mode.add_cultist(convertee.mind, 1)
|
||||
SSticker.mode.add_cultist(convertee.mind, 1)
|
||||
new /obj/item/weapon/tome(get_turf(src))
|
||||
convertee.mind.special_role = "Cultist"
|
||||
to_chat(convertee, "<span class='cultitalic'><b>Your blood pulses. Your head throbs. The world goes red. All at once you are aware of a horrible, horrible, truth. The veil of reality has been ripped away \
|
||||
@@ -476,8 +476,8 @@ var/list/teleport_runes = list()
|
||||
|
||||
var/datum/game_mode/cult/cult_mode
|
||||
|
||||
if(ticker.mode.name == "cult")
|
||||
cult_mode = ticker.mode
|
||||
if(SSticker.mode.name == "cult")
|
||||
cult_mode = SSticker.mode
|
||||
|
||||
if(!cult_mode && !ignore_gamemode)
|
||||
for(var/M in invokers)
|
||||
@@ -806,7 +806,7 @@ var/list/wall_runes = list()
|
||||
/obj/effect/rune/summon/invoke(var/list/invokers)
|
||||
var/mob/living/user = invokers[1]
|
||||
var/list/cultists = list()
|
||||
for(var/datum/mind/M in ticker.mode.cult)
|
||||
for(var/datum/mind/M in SSticker.mode.cult)
|
||||
if(!(M.current in invokers) && M.current && M.current.stat != DEAD)
|
||||
cultists |= M.current
|
||||
var/mob/living/cultist_to_summon = input(user, "Who do you wish to call to [src]?", "Followers of the Geometer") as null|anything in cultists
|
||||
@@ -992,7 +992,7 @@ var/list/wall_runes = list()
|
||||
var/obj/structure/emergency_shield/invoker/N = new(T)
|
||||
|
||||
new_human.key = ghost_to_spawn.key
|
||||
ticker.mode.add_cultist(new_human.mind, 0)
|
||||
SSticker.mode.add_cultist(new_human.mind, 0)
|
||||
to_chat(new_human, "<span class='cultitalic'><b>You are a servant of the Geometer. You have been made semi-corporeal by the cult of Nar-Sie, and you are to serve them at all costs.</b></span>")
|
||||
|
||||
while(user in T)
|
||||
|
||||
@@ -287,9 +287,9 @@ var/global/list/lawlorify = list (
|
||||
if(A)
|
||||
notify_ghosts("An arch devil has ascended in \the [A.name]. Reach out to the devil to be given a new shell for your soul.", source = owner.current, action=NOTIFY_ATTACK)
|
||||
sleep(50)
|
||||
if(!ticker.mode.devil_ascended)
|
||||
if(!SSticker.mode.devil_ascended)
|
||||
SSshuttle.emergency.request(null, 0.3)
|
||||
ticker.mode.devil_ascended++
|
||||
SSticker.mode.devil_ascended++
|
||||
form = ARCH_DEVIL
|
||||
|
||||
/datum/devilinfo/proc/remove_spells()
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
explanation_text = "Ensure at least [target_amount] mortals are sintouched."
|
||||
|
||||
/datum/objective/devil/sintouch/check_completion()
|
||||
return target_amount>=ticker.mode.sintouched.len
|
||||
return target_amount>=SSticker.mode.sintouched.len
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -82,8 +82,8 @@
|
||||
display_roundstart_logout_report()
|
||||
|
||||
feedback_set_details("round_start","[time2text(world.realtime)]")
|
||||
if(ticker && ticker.mode)
|
||||
feedback_set_details("game_mode","[ticker.mode]")
|
||||
if(SSticker && SSticker.mode)
|
||||
feedback_set_details("game_mode","[SSticker.mode]")
|
||||
if(revdata.commit)
|
||||
feedback_set_details("revision","[revdata.commit]")
|
||||
feedback_set_details("server_ip","[world.internet_address]:[world.port]")
|
||||
@@ -159,7 +159,7 @@
|
||||
message_admins("The roundtype will be converted. If you have other plans for the station or feel the station is too messed up to inhabit <A HREF='?_src_=holder;toggle_midround_antag=\ref[usr]'>stop the creation of antags</A> or <A HREF='?_src_=holder;end_round=\ref[usr]'>end the round now</A>.")
|
||||
|
||||
spawn(rand(600,1800)) //somewhere between 1 and 3 minutes from now
|
||||
if(!config.midround_antag[ticker.mode.config_tag])
|
||||
if(!config.midround_antag[SSticker.mode.config_tag])
|
||||
round_converted = 0
|
||||
return 1
|
||||
for(var/mob/living/carbon/human/H in antag_candidates)
|
||||
@@ -169,12 +169,12 @@
|
||||
return 1
|
||||
|
||||
|
||||
///Called by the gameticker
|
||||
///Called by the gameSSticker
|
||||
/datum/game_mode/process()
|
||||
return 0
|
||||
|
||||
|
||||
/datum/game_mode/proc/check_finished() //to be called by ticker
|
||||
/datum/game_mode/proc/check_finished() //to be called by SSticker
|
||||
if(replacementmode && round_converted == 2)
|
||||
return replacementmode.check_finished()
|
||||
if(SSshuttle.emergency && (SSshuttle.emergency.mode == SHUTTLE_ENDGAME))
|
||||
@@ -537,9 +537,9 @@
|
||||
M.key = theghost.key
|
||||
|
||||
/datum/game_mode/proc/remove_antag_for_borging(datum/mind/newborgie)
|
||||
ticker.mode.remove_cultist(newborgie, 0, 0)
|
||||
ticker.mode.remove_revolutionary(newborgie, 0)
|
||||
ticker.mode.remove_gangster(newborgie, 0, remove_bosses=1)
|
||||
SSticker.mode.remove_cultist(newborgie, 0, 0)
|
||||
SSticker.mode.remove_revolutionary(newborgie, 0)
|
||||
SSticker.mode.remove_gangster(newborgie, 0, remove_bosses=1)
|
||||
|
||||
/datum/game_mode/proc/generate_station_goals()
|
||||
var/list/possible = list()
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
warned = 1
|
||||
var/area/domloc = get_area(loc)
|
||||
gang.message_gangtools("Less than 3 minutes remains in hostile takeover. Defend your dominator at [domloc.map_name]!")
|
||||
for(var/datum/gang/G in ticker.mode.gangs)
|
||||
for(var/datum/gang/G in SSticker.mode.gangs)
|
||||
if(G != gang)
|
||||
G.message_gangtools("WARNING: [gang.name] Gang takeover imminent. Their dominator at [domloc.map_name] must be destroyed!",1,1)
|
||||
|
||||
@@ -102,7 +102,7 @@
|
||||
gang.is_dominating = FALSE
|
||||
|
||||
var/takeover_in_progress = 0
|
||||
for(var/datum/gang/G in ticker.mode.gangs)
|
||||
for(var/datum/gang/G in SSticker.mode.gangs)
|
||||
if(G.is_dominating)
|
||||
takeover_in_progress = 1
|
||||
break
|
||||
@@ -146,7 +146,7 @@
|
||||
|
||||
var/datum/gang/tempgang
|
||||
|
||||
if(user.mind in ticker.mode.get_all_gangsters())
|
||||
if(user.mind in SSticker.mode.get_all_gangsters())
|
||||
tempgang = user.mind.gang_datum
|
||||
else
|
||||
examine(user)
|
||||
@@ -184,6 +184,6 @@
|
||||
START_PROCESSING(SSmachine, src)
|
||||
|
||||
gang.message_gangtools("Hostile takeover in progress: Estimated [time] minutes until victory.[gang.dom_attempts ? "" : " This is your final attempt."]")
|
||||
for(var/datum/gang/G in ticker.mode.gangs)
|
||||
for(var/datum/gang/G in SSticker.mode.gangs)
|
||||
if(G != gang)
|
||||
G.message_gangtools("Enemy takeover attempt detected in [locname]: Estimated [time] minutes until our defeat.",1,1)
|
||||
|
||||
@@ -261,12 +261,12 @@ var/list/gang_colors_pool = list("red","orange","yellow","green","blue","purple"
|
||||
to_chat(world, "<span class='redtext'>The station was [station_was_nuked ? "destroyed!" : "evacuated before a gang could claim it! The station wins!"]</span><br>")
|
||||
feedback_set_details("round_end_result","loss - gangs failed takeover")
|
||||
|
||||
ticker.news_report = GANG_LOSS
|
||||
SSticker.news_report = GANG_LOSS
|
||||
else
|
||||
to_chat(world, "<span class='redtext'>The [winner.name] Gang successfully performed a hostile takeover of the station!</span><br>")
|
||||
feedback_set_details("round_end_result","win - gang domination complete")
|
||||
|
||||
ticker.news_report = GANG_TAKEOVER
|
||||
SSticker.news_report = GANG_TAKEOVER
|
||||
|
||||
for(var/datum/gang/G in gangs)
|
||||
var/text = "<b>The [G.name] Gang was [winner==G ? "<span class='greenannounce'>victorious</span>" : "<span class='boldannounce'>defeated</span>"] with [round((G.territory.len/start_state.num_territories)*100, 1)]% control of the station!</b>"
|
||||
@@ -294,7 +294,7 @@ var/list/gang_colors_pool = list("red","orange","yellow","green","blue","purple"
|
||||
/datum/gang_points/process(seconds)
|
||||
var/list/winners = list() //stores the winners if there are any
|
||||
|
||||
for(var/datum/gang/G in ticker.mode.gangs)
|
||||
for(var/datum/gang/G in SSticker.mode.gangs)
|
||||
if(world.time > next_point_time)
|
||||
G.income()
|
||||
|
||||
@@ -311,7 +311,7 @@ var/list/gang_colors_pool = list("red","orange","yellow","green","blue","purple"
|
||||
G.domination(0.5)
|
||||
priority_announce("Multiple station takeover attempts have made simultaneously. Conflicting takeover attempts appears to have restarted.","Network Alert")
|
||||
else
|
||||
ticker.mode.explosion_in_progress = 1
|
||||
ticker.station_explosion_cinematic(1)
|
||||
ticker.mode.explosion_in_progress = 0
|
||||
ticker.force_ending = pick(winners)
|
||||
SSticker.mode.explosion_in_progress = 1
|
||||
SSticker.station_explosion_cinematic(1)
|
||||
SSticker.mode.explosion_in_progress = 0
|
||||
SSticker.force_ending = pick(winners)
|
||||
|
||||
@@ -85,11 +85,11 @@
|
||||
|
||||
/datum/gang/proc/add_gang_hud(datum/mind/recruit_mind)
|
||||
ganghud.join_hud(recruit_mind.current)
|
||||
ticker.mode.set_antag_hud(recruit_mind.current, ((recruit_mind in bosses) ? "gang_boss" : "gangster"))
|
||||
SSticker.mode.set_antag_hud(recruit_mind.current, ((recruit_mind in bosses) ? "gang_boss" : "gangster"))
|
||||
|
||||
/datum/gang/proc/remove_gang_hud(datum/mind/defector_mind)
|
||||
ganghud.leave_hud(defector_mind.current)
|
||||
ticker.mode.set_antag_hud(defector_mind.current, null)
|
||||
SSticker.mode.set_antag_hud(defector_mind.current, null)
|
||||
|
||||
/datum/gang/proc/domination(modifier=1)
|
||||
set_domination_time(determine_domination_time(src) * modifier)
|
||||
@@ -113,7 +113,7 @@
|
||||
return 0
|
||||
|
||||
var/gang_style_list = list("Gang Colors","Black Suits","White Suits","Leather Jackets","Leather Overcoats","Puffer Jackets","Military Jackets","Tactical Turtlenecks","Soviet Uniforms")
|
||||
if(!style && (user.mind in ticker.mode.get_gang_bosses())) //Only the boss gets to pick a style
|
||||
if(!style && (user.mind in SSticker.mode.get_gang_bosses())) //Only the boss gets to pick a style
|
||||
style = input("Pick an outfit style.", "Pick Style") as null|anything in gang_style_list
|
||||
|
||||
if(gangtool.can_use(user) && (gangtool.outfits >= 1))
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
if(!istype(M))
|
||||
return
|
||||
if(ishuman(M) && ishuman(user) && M.stat != DEAD)
|
||||
if(user.mind && (user.mind in ticker.mode.get_gang_bosses()))
|
||||
if(user.mind && (user.mind in SSticker.mode.get_gang_bosses()))
|
||||
if(..(M,user,1))
|
||||
if(cooldown)
|
||||
to_chat(user, "<span class='warning'>[src] needs more time to recharge before it can be used.</span>")
|
||||
@@ -23,7 +23,7 @@
|
||||
if(M.client)
|
||||
M.mind_initialize() //give them a mind datum if they don't have one.
|
||||
var/datum/gang/G = user.mind.gang_datum
|
||||
var/recruitable = ticker.mode.add_gangster(M.mind,G)
|
||||
var/recruitable = SSticker.mode.add_gangster(M.mind,G)
|
||||
switch(recruitable)
|
||||
if(2)
|
||||
M.Paralyse(5)
|
||||
|
||||
@@ -17,8 +17,8 @@
|
||||
var/promotable = 0
|
||||
|
||||
/obj/item/device/gangtool/New() //Initialize supply point income if it hasn't already been started
|
||||
if(!ticker.mode.gang_points)
|
||||
ticker.mode.gang_points = new /datum/gang_points(ticker.mode)
|
||||
if(!SSticker.mode.gang_points)
|
||||
SSticker.mode.gang_points = new /datum/gang_points(SSticker.mode)
|
||||
|
||||
/obj/item/device/gangtool/attack_self(mob/user)
|
||||
if (!can_use(user))
|
||||
@@ -27,7 +27,7 @@
|
||||
var/dat
|
||||
if(!gang)
|
||||
dat += "This device is not registered.<br><br>"
|
||||
if(user.mind in ticker.mode.get_gang_bosses())
|
||||
if(user.mind in SSticker.mode.get_gang_bosses())
|
||||
if(promotable && user.mind.gang_datum.bosses.len < 3)
|
||||
dat += "Give this device to another member of your organization to use to promote them to Lieutenant.<br><br>"
|
||||
dat += "If this is meant as a spare device for yourself:<br>"
|
||||
@@ -48,7 +48,7 @@
|
||||
dat += "Registration: <B>[gang.name] Gang [isboss ? "Boss" : "Lieutenant"]</B><br>"
|
||||
dat += "Organization Size: <B>[gang.gangsters.len + gang.bosses.len]</B> | Station Control: <B>[round((gang.territory.len/start_state.num_territories)*100, 1)]%</B><br>"
|
||||
dat += "Gang Influence: <B>[gang.points]</B><br>"
|
||||
dat += "Time until Influence grows: <B>[(gang.points >= 999) ? ("--:--") : (time2text(ticker.mode.gang_points.next_point_time - world.time, "mm:ss"))]</B><br>"
|
||||
dat += "Time until Influence grows: <B>[(gang.points >= 999) ? ("--:--") : (time2text(SSticker.mode.gang_points.next_point_time - world.time, "mm:ss"))]</B><br>"
|
||||
dat += "<hr>"
|
||||
|
||||
|
||||
@@ -139,12 +139,12 @@
|
||||
/obj/item/device/gangtool/proc/register_device(mob/user)
|
||||
if(gang) //It's already been registered!
|
||||
return
|
||||
if((promotable && (user.mind in ticker.mode.get_gangsters())) || (user.mind in ticker.mode.get_gang_bosses()))
|
||||
if((promotable && (user.mind in SSticker.mode.get_gangsters())) || (user.mind in SSticker.mode.get_gang_bosses()))
|
||||
gang = user.mind.gang_datum
|
||||
gang.gangtools += src
|
||||
icon_state = "gangtool-[gang.color]"
|
||||
if(!(user.mind in gang.bosses))
|
||||
ticker.mode.remove_gangster(user.mind, 0, 2)
|
||||
SSticker.mode.remove_gangster(user.mind, 0, 2)
|
||||
gang.bosses += user.mind
|
||||
user.mind.gang_datum = gang
|
||||
user.mind.special_role = "[gang.name] Gang Lieutenant"
|
||||
@@ -153,8 +153,8 @@
|
||||
free_pen = 1
|
||||
gang.message_gangtools("[user] has been promoted to Lieutenant.")
|
||||
to_chat(user, "<FONT size=3 color=red><B>You have been promoted to Lieutenant!</B></FONT>")
|
||||
ticker.mode.forge_gang_objectives(user.mind)
|
||||
ticker.mode.greet_gang(user.mind,0)
|
||||
SSticker.mode.forge_gang_objectives(user.mind)
|
||||
SSticker.mode.greet_gang(user.mind,0)
|
||||
to_chat(user, "The <b>Gangtool</b> you registered will allow you to purchase weapons and equipment, and send messages to your gang.")
|
||||
to_chat(user, "Unlike regular gangsters, you may use <b>recruitment pens</b> to add recruits to your gang. Use them on unsuspecting crew members to recruit them. Don't forget to get your one free pen from the gangtool.")
|
||||
else
|
||||
@@ -227,7 +227,7 @@
|
||||
if(user.mind in gang.bosses)
|
||||
return 1
|
||||
else //If it's not registered, any gangster can use this to register
|
||||
if(user.mind in ticker.mode.get_all_gangsters())
|
||||
if(user.mind in SSticker.mode.get_all_gangsters())
|
||||
return 1
|
||||
|
||||
return 0
|
||||
|
||||
@@ -120,7 +120,7 @@
|
||||
to_chat(L, "<span class='userdanger'>The blast wave from [src] tears you atom from atom!</span>")
|
||||
L.dust()
|
||||
to_chat(world, "<B>The AI cleansed the station of life with the doomsday device!</B>")
|
||||
ticker.force_ending = 1
|
||||
SSticker.force_ending = 1
|
||||
|
||||
/datum/AI_Module/large/upgrade_turrets
|
||||
module_name = "AI Turret Upgrade"
|
||||
|
||||
@@ -180,10 +180,10 @@
|
||||
to_chat(H, "<span class='warning'><b>Your mind snaps!</b></span>")
|
||||
var/objtype = pick(subtypesof(/datum/objective/abductee/))
|
||||
var/datum/objective/abductee/O = new objtype()
|
||||
ticker.mode.abductees += H.mind
|
||||
SSticker.mode.abductees += H.mind
|
||||
H.mind.objectives += O
|
||||
H.mind.announce_objectives()
|
||||
ticker.mode.update_abductor_icons_added(H.mind)
|
||||
SSticker.mode.update_abductor_icons_added(H.mind)
|
||||
|
||||
for(var/obj/item/organ/heart/gland/G in H.internal_organs)
|
||||
G.Start()
|
||||
|
||||
@@ -222,7 +222,7 @@
|
||||
player_mind.transfer_to(S)
|
||||
player_mind.assigned_role = "Morph"
|
||||
player_mind.special_role = "Morph"
|
||||
ticker.mode.traitors |= player_mind
|
||||
SSticker.mode.traitors |= player_mind
|
||||
to_chat(S, S.playstyle_string)
|
||||
S << 'sound/magic/Mutate.ogg'
|
||||
message_admins("[key_name_admin(S)] has been made into a morph by an event.")
|
||||
|
||||
@@ -93,7 +93,7 @@
|
||||
to_chat(src, "<b>Objective #2</b>: [objective2.explanation_text]")
|
||||
mind.assigned_role = "revenant"
|
||||
mind.special_role = "Revenant"
|
||||
ticker.mode.traitors |= mind //Necessary for announcing
|
||||
SSticker.mode.traitors |= mind //Necessary for announcing
|
||||
AddSpell(new /obj/effect/proc_holder/spell/targeted/night_vision/revenant(null))
|
||||
AddSpell(new /obj/effect/proc_holder/spell/targeted/revenant_transmit(null))
|
||||
AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/revenant/defile(null))
|
||||
@@ -401,7 +401,7 @@
|
||||
player_mind.transfer_to(R)
|
||||
player_mind.assigned_role = "revenant"
|
||||
player_mind.special_role = "Revenant"
|
||||
ticker.mode.traitors |= player_mind
|
||||
SSticker.mode.traitors |= player_mind
|
||||
message_admins("[key_of_revenant] has been [client_to_revive ? "re":""]made into a revenant by reforming ectoplasm.")
|
||||
log_game("[key_of_revenant] was [client_to_revive ? "re":""]made as a revenant by reforming ectoplasm.")
|
||||
visible_message("<span class='revenboldnotice'>[src] suddenly rises into the air before fading away.</span>")
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
player_mind.transfer_to(S)
|
||||
player_mind.assigned_role = "Slaughter Demon"
|
||||
player_mind.special_role = "Slaughter Demon"
|
||||
ticker.mode.traitors |= player_mind
|
||||
SSticker.mode.traitors |= player_mind
|
||||
to_chat(S, S.playstyle_string)
|
||||
to_chat(S, "<B>You are currently not currently in the same plane of existence as the station. Blood Crawl near a blood pool to manifest.</B>")
|
||||
S << 'sound/magic/demon_dies.ogg'
|
||||
|
||||
@@ -170,7 +170,7 @@
|
||||
return 0
|
||||
return 1
|
||||
|
||||
/datum/game_mode/nuclear/check_finished() //to be called by ticker
|
||||
/datum/game_mode/nuclear/check_finished() //to be called by SSticker
|
||||
if(replacementmode && round_converted == 2)
|
||||
return replacementmode.check_finished()
|
||||
if((SSshuttle.emergency.mode == SHUTTLE_ENDGAME) || station_was_nuked)
|
||||
@@ -201,77 +201,77 @@
|
||||
to_chat(world, "<FONT size = 3><B>Humiliating Syndicate Defeat</B></FONT>")
|
||||
to_chat(world, "<B>The crew of [station_name()] gave [syndicate_name()] operatives back their bomb! The syndicate base was destroyed!</B> Next time, don't lose the nuke!")
|
||||
|
||||
ticker.news_report = NUKE_SYNDICATE_BASE
|
||||
SSticker.news_report = NUKE_SYNDICATE_BASE
|
||||
|
||||
else if(!disk_rescued && station_was_nuked && !syndies_didnt_escape)
|
||||
feedback_set_details("round_end_result","win - syndicate nuke")
|
||||
to_chat(world, "<FONT size = 3><B>Syndicate Major Victory!</B></FONT>")
|
||||
to_chat(world, "<B>[syndicate_name()] operatives have destroyed [station_name()]!</B>")
|
||||
|
||||
ticker.news_report = STATION_NUKED
|
||||
SSticker.news_report = STATION_NUKED
|
||||
|
||||
else if (!disk_rescued && station_was_nuked && syndies_didnt_escape)
|
||||
feedback_set_details("round_end_result","halfwin - syndicate nuke - did not evacuate in time")
|
||||
to_chat(world, "<FONT size = 3><B>Total Annihilation</B></FONT>")
|
||||
to_chat(world, "<B>[syndicate_name()] operatives destroyed [station_name()] but did not leave the area in time and got caught in the explosion.</B> Next time, don't lose the disk!")
|
||||
|
||||
ticker.news_report = STATION_NUKED
|
||||
SSticker.news_report = STATION_NUKED
|
||||
|
||||
else if (!disk_rescued && !station_was_nuked && nuke_off_station && !syndies_didnt_escape)
|
||||
feedback_set_details("round_end_result","halfwin - blew wrong station")
|
||||
to_chat(world, "<FONT size = 3><B>Crew Minor Victory</B></FONT>")
|
||||
to_chat(world, "<B>[syndicate_name()] operatives secured the authentication disk but blew up something that wasn't [station_name()].</B> Next time, don't do that!")
|
||||
|
||||
ticker.news_report = NUKE_MISS
|
||||
SSticker.news_report = NUKE_MISS
|
||||
|
||||
else if (!disk_rescued && !station_was_nuked && nuke_off_station && syndies_didnt_escape)
|
||||
feedback_set_details("round_end_result","halfwin - blew wrong station - did not evacuate in time")
|
||||
to_chat(world, "<FONT size = 3><B>[syndicate_name()] operatives have earned Darwin Award!</B></FONT>")
|
||||
to_chat(world, "<B>[syndicate_name()] operatives blew up something that wasn't [station_name()] and got caught in the explosion.</B> Next time, don't do that!")
|
||||
|
||||
ticker.news_report = NUKE_MISS
|
||||
SSticker.news_report = NUKE_MISS
|
||||
|
||||
else if ((disk_rescued || SSshuttle.emergency.mode != SHUTTLE_ENDGAME) && are_operatives_dead())
|
||||
feedback_set_details("round_end_result","loss - evacuation - disk secured - syndi team dead")
|
||||
to_chat(world, "<FONT size = 3><B>Crew Major Victory!</B></FONT>")
|
||||
to_chat(world, "<B>The Research Staff has saved the disk and killed the [syndicate_name()] Operatives</B>")
|
||||
|
||||
ticker.news_report = OPERATIVES_KILLED
|
||||
SSticker.news_report = OPERATIVES_KILLED
|
||||
|
||||
else if (disk_rescued)
|
||||
feedback_set_details("round_end_result","loss - evacuation - disk secured")
|
||||
to_chat(world, "<FONT size = 3><B>Crew Major Victory</B></FONT>")
|
||||
to_chat(world, "<B>The Research Staff has saved the disk and stopped the [syndicate_name()] Operatives!</B>")
|
||||
|
||||
ticker.news_report = OPERATIVES_KILLED
|
||||
SSticker.news_report = OPERATIVES_KILLED
|
||||
|
||||
else if (!disk_rescued && are_operatives_dead())
|
||||
feedback_set_details("round_end_result","halfwin - evacuation - disk not secured")
|
||||
to_chat(world, "<FONT size = 3><B>Neutral Victory!</B></FONT>")
|
||||
to_chat(world, "<B>The Research Staff failed to secure the authentication disk but did manage to kill most of the [syndicate_name()] Operatives!</B>")
|
||||
|
||||
ticker.news_report = OPERATIVE_SKIRMISH
|
||||
SSticker.news_report = OPERATIVE_SKIRMISH
|
||||
|
||||
else if (!disk_rescued && crew_evacuated)
|
||||
feedback_set_details("round_end_result","halfwin - detonation averted")
|
||||
to_chat(world, "<FONT size = 3><B>Syndicate Minor Victory!</B></FONT>")
|
||||
to_chat(world, "<B>[syndicate_name()] operatives survived the assault but did not achieve the destruction of [station_name()].</B> Next time, don't lose the disk!")
|
||||
|
||||
ticker.news_report = OPERATIVE_SKIRMISH
|
||||
SSticker.news_report = OPERATIVE_SKIRMISH
|
||||
|
||||
else if (!disk_rescued && !crew_evacuated)
|
||||
feedback_set_details("round_end_result","halfwin - interrupted")
|
||||
to_chat(world, "<FONT size = 3><B>Neutral Victory</B></FONT>")
|
||||
to_chat(world, "<B>Round was mysteriously interrupted!</B>")
|
||||
|
||||
ticker.news_report = OPERATIVE_SKIRMISH
|
||||
SSticker.news_report = OPERATIVE_SKIRMISH
|
||||
|
||||
..()
|
||||
return
|
||||
|
||||
|
||||
/datum/game_mode/proc/auto_declare_completion_nuclear()
|
||||
if( syndicates.len || (ticker && istype(ticker.mode,/datum/game_mode/nuclear)) )
|
||||
if( syndicates.len || (SSticker && istype(SSticker.mode,/datum/game_mode/nuclear)) )
|
||||
var/text = "<br><FONT size=3><B>The syndicate operatives were:</B></FONT>"
|
||||
var/purchases = ""
|
||||
var/TC_uses = 0
|
||||
@@ -311,7 +311,7 @@
|
||||
return
|
||||
|
||||
/proc/is_nuclear_operative(mob/M)
|
||||
return M && istype(M) && M.mind && ticker && ticker.mode && M.mind in ticker.mode.syndicates
|
||||
return M && istype(M) && M.mind && SSticker && SSticker.mode && M.mind in SSticker.mode.syndicates
|
||||
|
||||
/datum/outfit/syndicate
|
||||
name = "Syndicate Operative - Basic"
|
||||
|
||||
@@ -421,13 +421,13 @@ var/bomb_set
|
||||
update_icon()
|
||||
for(var/mob/M in player_list)
|
||||
M << 'sound/machines/Alarm.ogg'
|
||||
if(ticker && ticker.mode)
|
||||
ticker.mode.explosion_in_progress = 1
|
||||
if(SSticker && SSticker.mode)
|
||||
SSticker.mode.explosion_in_progress = 1
|
||||
sleep(100)
|
||||
|
||||
if(!core)
|
||||
ticker.station_explosion_cinematic(3,"no_core",src)
|
||||
ticker.mode.explosion_in_progress = 0
|
||||
SSticker.station_explosion_cinematic(3,"no_core",src)
|
||||
SSticker.mode.explosion_in_progress = 0
|
||||
return
|
||||
|
||||
enter_allowed = 0
|
||||
@@ -445,18 +445,18 @@ var/bomb_set
|
||||
else
|
||||
off_station = NUKE_NEAR_MISS
|
||||
|
||||
if(istype(ticker.mode, /datum/game_mode/nuclear))
|
||||
if(istype(SSticker.mode, /datum/game_mode/nuclear))
|
||||
var/obj/docking_port/mobile/Shuttle = SSshuttle.getShuttle("syndicate")
|
||||
var/datum/game_mode/nuclear/NM = ticker.mode
|
||||
var/datum/game_mode/nuclear/NM = SSticker.mode
|
||||
NM.syndies_didnt_escape = (Shuttle && Shuttle.z == ZLEVEL_CENTCOM) ? 0 : 1
|
||||
NM.nuke_off_station = off_station
|
||||
|
||||
ticker.station_explosion_cinematic(off_station,null,src)
|
||||
if(ticker.mode)
|
||||
if(istype(ticker.mode, /datum/game_mode/nuclear))
|
||||
var/datum/game_mode/nuclear/NM = ticker.mode
|
||||
SSticker.station_explosion_cinematic(off_station,null,src)
|
||||
if(SSticker.mode)
|
||||
if(istype(SSticker.mode, /datum/game_mode/nuclear))
|
||||
var/datum/game_mode/nuclear/NM = SSticker.mode
|
||||
NM.nukes_left --
|
||||
if(!ticker.mode.check_finished())//If the mode does not deal with the nuke going off so just reboot because everyone is stuck as is
|
||||
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
|
||||
spawn()
|
||||
world.Reboot("Station destroyed by Nuclear Device.", "end_error", "nuke - unhandled ending")
|
||||
|
||||
|
||||
@@ -104,7 +104,7 @@
|
||||
if(TRACK_OPERATIVES)
|
||||
var/list/possible_targets = list()
|
||||
var/turf/here = get_turf(src)
|
||||
for(var/V in ticker.mode.syndicates)
|
||||
for(var/V in SSticker.mode.syndicates)
|
||||
var/datum/mind/M = V
|
||||
if(M.current && M.current.stat != DEAD)
|
||||
possible_targets |= M.current
|
||||
|
||||
@@ -350,9 +350,9 @@
|
||||
return 0
|
||||
if(!owner.current || owner.current.stat == DEAD)
|
||||
return 0
|
||||
if(ticker.force_ending) //This one isn't their fault, so lets just assume good faith
|
||||
if(SSticker.force_ending) //This one isn't their fault, so lets just assume good faith
|
||||
return 1
|
||||
if(ticker.mode.station_was_nuked) //If they escaped the blast somehow, let them win
|
||||
if(SSticker.mode.station_was_nuked) //If they escaped the blast somehow, let them win
|
||||
return 1
|
||||
if(SSshuttle.emergency.mode != SHUTTLE_ENDGAME)
|
||||
return 0
|
||||
@@ -435,7 +435,7 @@
|
||||
martyr_compatible = 1
|
||||
|
||||
/datum/objective/nuclear/check_completion()
|
||||
if(ticker && ticker.mode && ticker.mode.station_was_nuked)
|
||||
if(SSticker && SSticker.mode && SSticker.mode.station_was_nuked)
|
||||
return 1
|
||||
return 0
|
||||
|
||||
@@ -653,15 +653,15 @@ var/global/list/possible_items_special = list()
|
||||
|
||||
/datum/objective/absorb/proc/gen_amount_goal(lowbound = 4, highbound = 6)
|
||||
target_amount = rand (lowbound,highbound)
|
||||
if (ticker)
|
||||
if (SSticker)
|
||||
var/n_p = 1 //autowin
|
||||
if (ticker.current_state == GAME_STATE_SETTING_UP)
|
||||
if (SSticker.current_state == GAME_STATE_SETTING_UP)
|
||||
for(var/mob/dead/new_player/P in player_list)
|
||||
if(P.client && P.ready && P.mind!=owner)
|
||||
n_p ++
|
||||
else if (ticker.current_state == GAME_STATE_PLAYING)
|
||||
else if (SSticker.current_state == GAME_STATE_PLAYING)
|
||||
for(var/mob/living/carbon/human/P in player_list)
|
||||
if(P.client && !(P.mind in ticker.mode.changelings) && P.mind!=owner)
|
||||
if(P.client && !(P.mind in SSticker.mode.changelings) && P.mind!=owner)
|
||||
n_p ++
|
||||
target_amount = min(target_amount, n_p)
|
||||
|
||||
@@ -770,10 +770,10 @@ var/global/list/possible_items_special = list()
|
||||
if("Chief Medical Officer")
|
||||
department_string = "medical"
|
||||
|
||||
var/ling_count = ticker.mode.changelings
|
||||
var/ling_count = SSticker.mode.changelings
|
||||
|
||||
for(var/datum/mind/M in ticker.minds)
|
||||
if(M in ticker.mode.changelings)
|
||||
for(var/datum/mind/M in SSticker.minds)
|
||||
if(M in SSticker.mode.changelings)
|
||||
continue
|
||||
if(department_head in get_department_heads(M.assigned_role))
|
||||
if(ling_count)
|
||||
@@ -799,11 +799,11 @@ var/global/list/possible_items_special = list()
|
||||
//Because you can't fill 6 head roles with 3 lings
|
||||
|
||||
var/needed_heads = rand(min_lings,command_positions.len)
|
||||
needed_heads = min(ticker.mode.changelings.len,needed_heads)
|
||||
needed_heads = min(SSticker.mode.changelings.len,needed_heads)
|
||||
|
||||
var/list/heads = ticker.mode.get_living_heads()
|
||||
var/list/heads = SSticker.mode.get_living_heads()
|
||||
for(var/datum/mind/head in heads)
|
||||
if(head in ticker.mode.changelings) //Looking at you HoP.
|
||||
if(head in SSticker.mode.changelings) //Looking at you HoP.
|
||||
continue
|
||||
if(needed_heads)
|
||||
department_minds += head
|
||||
@@ -863,7 +863,7 @@ var/global/list/possible_items_special = list()
|
||||
|
||||
//Check each department member's mind to see if any of them made it to centcomm alive, if they did it's an automatic fail
|
||||
for(var/datum/mind/M in department_minds)
|
||||
if(M in ticker.mode.changelings) //Lings aren't picked for this, but let's be safe
|
||||
if(M in SSticker.mode.changelings) //Lings aren't picked for this, but let's be safe
|
||||
continue
|
||||
|
||||
if(M.current)
|
||||
@@ -874,7 +874,7 @@ var/global/list/possible_items_special = list()
|
||||
//Check each staff member has been replaced, by cross referencing changeling minds, changeling current dna, the staff minds and their original DNA names
|
||||
var/success = 0
|
||||
changelings:
|
||||
for(var/datum/mind/changeling in ticker.mode.changelings)
|
||||
for(var/datum/mind/changeling in SSticker.mode.changelings)
|
||||
if(success >= department_minds.len) //We did it, stop here!
|
||||
return 1
|
||||
if(ishuman(changeling.current))
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
// To add a rev to the list of revolutionaries, make sure it's rev (with if(ticker.mode.name == "revolution)),
|
||||
// then call ticker.mode:add_revolutionary(_THE_PLAYERS_MIND_)
|
||||
// To add a rev to the list of revolutionaries, make sure it's rev (with if(SSticker.mode.name == "revolution)),
|
||||
// then call SSticker.mode:add_revolutionary(_THE_PLAYERS_MIND_)
|
||||
// nothing else needs to be done, as that proc will check if they are a valid target.
|
||||
// Just make sure the converter is a head before you call it!
|
||||
// To remove a rev (from brainwashing or w/e), call ticker.mode:remove_revolutionary(_THE_PLAYERS_MIND_),
|
||||
// To remove a rev (from brainwashing or w/e), call SSticker.mode:remove_revolutionary(_THE_PLAYERS_MIND_),
|
||||
// this will also check they're not a head, so it can just be called freely
|
||||
// If the game somtimes isn't registering a win properly, then ticker.mode.check_win() isn't being called somewhere.
|
||||
// If the game somtimes isn't registering a win properly, then SSticker.mode.check_win() isn't being called somewhere.
|
||||
|
||||
/datum/game_mode
|
||||
var/list/datum/mind/head_revolutionaries = list()
|
||||
@@ -118,7 +118,7 @@
|
||||
if(check_counter >= 5)
|
||||
if(!finished)
|
||||
check_heads()
|
||||
ticker.mode.check_win()
|
||||
SSticker.mode.check_win()
|
||||
check_counter = 0
|
||||
return 0
|
||||
|
||||
@@ -248,10 +248,10 @@
|
||||
//Deals with converting players to the revolution//
|
||||
///////////////////////////////////////////////////
|
||||
/proc/is_revolutionary(mob/M)
|
||||
return M && istype(M) && M.mind && ticker && ticker.mode && M.mind in ticker.mode.revolutionaries
|
||||
return M && istype(M) && M.mind && SSticker && SSticker.mode && M.mind in SSticker.mode.revolutionaries
|
||||
|
||||
/proc/is_head_revolutionary(mob/M)
|
||||
return M && istype(M) && M.mind && ticker && ticker.mode && M.mind in ticker.mode.head_revolutionaries
|
||||
return M && istype(M) && M.mind && SSticker && SSticker.mode && M.mind in SSticker.mode.head_revolutionaries
|
||||
|
||||
/proc/is_revolutionary_in_general(mob/M)
|
||||
return is_revolutionary(M) || is_head_revolutionary(M)
|
||||
@@ -353,19 +353,19 @@
|
||||
feedback_set_details("round_end_result","win - heads killed")
|
||||
to_chat(world, "<span class='redtext'>The heads of staff were killed or exiled! The revolutionaries win!</span>")
|
||||
|
||||
ticker.news_report = REVS_WIN
|
||||
SSticker.news_report = REVS_WIN
|
||||
|
||||
else if(finished == 2)
|
||||
feedback_set_details("round_end_result","loss - rev heads killed")
|
||||
to_chat(world, "<span class='redtext'>The heads of staff managed to stop the revolution!</span>")
|
||||
|
||||
ticker.news_report = REVS_LOSE
|
||||
SSticker.news_report = REVS_LOSE
|
||||
..()
|
||||
return 1
|
||||
|
||||
/datum/game_mode/proc/auto_declare_completion_revolution()
|
||||
var/list/targets = list()
|
||||
if(head_revolutionaries.len || istype(ticker.mode,/datum/game_mode/revolution))
|
||||
if(head_revolutionaries.len || istype(SSticker.mode,/datum/game_mode/revolution))
|
||||
var/num_revs = 0
|
||||
var/num_survivors = 0
|
||||
for(var/mob/living/carbon/survivor in living_mob_list)
|
||||
@@ -382,14 +382,14 @@
|
||||
text += "<br>"
|
||||
to_chat(world, text)
|
||||
|
||||
if(revolutionaries.len || istype(ticker.mode,/datum/game_mode/revolution))
|
||||
if(revolutionaries.len || istype(SSticker.mode,/datum/game_mode/revolution))
|
||||
var/text = "<br><font size=3><b>The revolutionaries were:</b></font>"
|
||||
for(var/datum/mind/rev in revolutionaries)
|
||||
text += printplayer(rev, 1)
|
||||
text += "<br>"
|
||||
to_chat(world, text)
|
||||
|
||||
if( head_revolutionaries.len || revolutionaries.len || istype(ticker.mode,/datum/game_mode/revolution) )
|
||||
if( head_revolutionaries.len || revolutionaries.len || istype(SSticker.mode,/datum/game_mode/revolution) )
|
||||
var/text = "<br><font size=3><b>The heads of staff were:</b></font>"
|
||||
var/list/heads = get_all_heads()
|
||||
for(var/datum/mind/head in heads)
|
||||
|
||||
@@ -71,9 +71,9 @@
|
||||
|
||||
/datum/game_mode/traitor/make_antag_chance(mob/living/carbon/human/character) //Assigns traitor to latejoiners
|
||||
var/traitorcap = min(round(joined_player_list.len / (config.traitor_scaling_coeff * 2)) + 2 + num_modifier, round(joined_player_list.len/config.traitor_scaling_coeff) + num_modifier )
|
||||
if(ticker.mode.traitors.len >= traitorcap) //Upper cap for number of latejoin antagonists
|
||||
if(SSticker.mode.traitors.len >= traitorcap) //Upper cap for number of latejoin antagonists
|
||||
return
|
||||
if(ticker.mode.traitors.len <= (traitorcap - 2) || prob(100 / (config.traitor_scaling_coeff * 2)))
|
||||
if(SSticker.mode.traitors.len <= (traitorcap - 2) || prob(100 / (config.traitor_scaling_coeff * 2)))
|
||||
if(ROLE_TRAITOR in character.client.prefs.be_special)
|
||||
if(!jobban_isbanned(character, ROLE_TRAITOR) && !jobban_isbanned(character, "Syndicate"))
|
||||
if(age_check(character.client))
|
||||
@@ -205,7 +205,7 @@
|
||||
add_law_zero(traitor.current)
|
||||
else
|
||||
equip_traitor(traitor.current)
|
||||
ticker.mode.update_traitor_icons_added(traitor)
|
||||
SSticker.mode.update_traitor_icons_added(traitor)
|
||||
return
|
||||
|
||||
|
||||
|
||||
@@ -241,7 +241,7 @@ var/global/list/multiverse = list()
|
||||
to_chat(user, "You bind the sword to yourself. You can now use it to summon help.")
|
||||
if(!is_gangster(user))
|
||||
var/datum/gang/multiverse/G = new(src, "[user.real_name]")
|
||||
ticker.mode.gangs += G
|
||||
SSticker.mode.gangs += G
|
||||
G.bosses += user.mind
|
||||
G.add_gang_hud(user.mind)
|
||||
user.mind.gang_datum = G
|
||||
@@ -251,7 +251,7 @@ var/global/list/multiverse = list()
|
||||
user.mind.objectives += hijack_objective
|
||||
hijack_objective.explanation_text = "Ensure only [user.real_name] and their copies are on the shuttle!"
|
||||
to_chat(user, "<B>Objective #[1]</B>: [hijack_objective.explanation_text]")
|
||||
ticker.mode.traitors += user.mind
|
||||
SSticker.mode.traitors += user.mind
|
||||
user.mind.special_role = "[user.real_name] Prime"
|
||||
else
|
||||
var/list/candidates = get_candidates(ROLE_WIZARD)
|
||||
@@ -276,7 +276,7 @@ var/global/list/multiverse = list()
|
||||
M.key = C.key
|
||||
M.mind.name = user.real_name
|
||||
to_chat(M, "<B>You are an alternate version of [user.real_name] from another universe! Help them accomplish their goals at all costs.</B>")
|
||||
ticker.mode.add_gangster(M.mind, user.mind.gang_datum, FALSE)
|
||||
SSticker.mode.add_gangster(M.mind, user.mind.gang_datum, FALSE)
|
||||
M.real_name = user.real_name
|
||||
M.name = user.real_name
|
||||
M.faction = list("[user.real_name]")
|
||||
|
||||
@@ -132,7 +132,7 @@
|
||||
|
||||
if("VICTIM")
|
||||
var/mob/living/carbon/human/T = target
|
||||
if(ticker.mode.name == "cult" && T.mind == ticker.mode:sacrifice_target)
|
||||
if(SSticker.mode.name == "cult" && T.mind == SSticker.mode:sacrifice_target)
|
||||
if(iscultist(user))
|
||||
to_chat(user, "<span class='cult'><b>\"This soul is mine.</b></span> <span class='cultlarge'>SACRIFICE THEM!\"</span>")
|
||||
else
|
||||
@@ -201,8 +201,8 @@
|
||||
if(stoner)
|
||||
newstruct.faction |= "\ref[stoner]"
|
||||
newstruct.key = target.key
|
||||
if(newstruct.mind && ((stoner && iscultist(stoner)) || cultoverride) && ticker && ticker.mode)
|
||||
ticker.mode.add_cultist(newstruct.mind, 0)
|
||||
if(newstruct.mind && ((stoner && iscultist(stoner)) || cultoverride) && SSticker && SSticker.mode)
|
||||
SSticker.mode.add_cultist(newstruct.mind, 0)
|
||||
if(iscultist(stoner) || cultoverride)
|
||||
to_chat(newstruct, "<b>You are still bound to serve the cult[stoner ? " and [stoner]":""], follow their orders and help them complete their goals at all costs.</b>")
|
||||
else if(stoner)
|
||||
@@ -223,7 +223,7 @@
|
||||
if(U)
|
||||
S.faction |= "\ref[U]" //Add the master as a faction, allowing inter-mob cooperation
|
||||
if(U && iscultist(U))
|
||||
ticker.mode.add_cultist(S.mind, 0)
|
||||
SSticker.mode.add_cultist(S.mind, 0)
|
||||
S.cancel_camera()
|
||||
name = "soulstone: Shade of [T.real_name]"
|
||||
icon_state = "soulstone2"
|
||||
|
||||
@@ -507,7 +507,7 @@
|
||||
log_name = "SGH"
|
||||
|
||||
/datum/spellbook_entry/summon/ghosts/IsAvailible()
|
||||
if(!ticker.mode)
|
||||
if(!SSticker.mode)
|
||||
return FALSE
|
||||
else
|
||||
return TRUE
|
||||
@@ -526,9 +526,9 @@
|
||||
log_name = "SG"
|
||||
|
||||
/datum/spellbook_entry/summon/guns/IsAvailible()
|
||||
if(!ticker.mode) // In case spellbook is placed on map
|
||||
if(!SSticker.mode) // In case spellbook is placed on map
|
||||
return 0
|
||||
return (ticker.mode.name != "ragin' mages" && !config.no_summon_guns)
|
||||
return (SSticker.mode.name != "ragin' mages" && !config.no_summon_guns)
|
||||
|
||||
/datum/spellbook_entry/summon/guns/Buy(mob/living/carbon/human/user,obj/item/weapon/spellbook/book)
|
||||
feedback_add_details("wizard_spell_learned",log_name)
|
||||
@@ -544,9 +544,9 @@
|
||||
log_name = "SU"
|
||||
|
||||
/datum/spellbook_entry/summon/magic/IsAvailible()
|
||||
if(!ticker.mode) // In case spellbook is placed on map
|
||||
if(!SSticker.mode) // In case spellbook is placed on map
|
||||
return 0
|
||||
return (ticker.mode.name != "ragin' mages" && !config.no_summon_magic)
|
||||
return (SSticker.mode.name != "ragin' mages" && !config.no_summon_magic)
|
||||
|
||||
/datum/spellbook_entry/summon/magic/Buy(mob/living/carbon/human/user,obj/item/weapon/spellbook/book)
|
||||
feedback_add_details("wizard_spell_learned",log_name)
|
||||
@@ -564,9 +564,9 @@
|
||||
var/times = 0
|
||||
|
||||
/datum/spellbook_entry/summon/events/IsAvailible()
|
||||
if(!ticker.mode) // In case spellbook is placed on map
|
||||
if(!SSticker.mode) // In case spellbook is placed on map
|
||||
return 0
|
||||
return (ticker.mode.name != "ragin' mages" && !config.no_summon_events)
|
||||
return (SSticker.mode.name != "ragin' mages" && !config.no_summon_events)
|
||||
|
||||
/datum/spellbook_entry/summon/events/Buy(mob/living/carbon/human/user,obj/item/weapon/spellbook/book)
|
||||
feedback_add_details("wizard_spell_learned",log_name)
|
||||
|
||||
@@ -179,7 +179,7 @@
|
||||
feedback_set_details("round_end_result","loss - wizard killed")
|
||||
to_chat(world, "<span class='userdanger'>The wizard[(wizards.len>1)?"s":""] has been killed by the crew! The Space Wizards Federation has been taught a lesson they will not soon forget!</span>")
|
||||
|
||||
ticker.news_report = WIZARD_KILLED
|
||||
SSticker.news_report = WIZARD_KILLED
|
||||
|
||||
..()
|
||||
return 1
|
||||
@@ -247,7 +247,7 @@
|
||||
|
||||
//returns whether the mob is a wizard (or apprentice)
|
||||
/proc/iswizard(mob/living/M)
|
||||
return istype(M) && M.mind && ticker && ticker.mode && ((M.mind in ticker.mode.wizards) || (M.mind in ticker.mode.apprentices))
|
||||
return istype(M) && M.mind && SSticker && SSticker.mode && ((M.mind in SSticker.mode.wizards) || (M.mind in SSticker.mode.apprentices))
|
||||
|
||||
|
||||
/datum/game_mode/proc/update_wiz_icons_added(datum/mind/wiz_mind)
|
||||
|
||||
@@ -133,7 +133,7 @@ var/time_last_changed_position = 0
|
||||
|
||||
user.set_machine(src)
|
||||
var/dat
|
||||
if(!ticker)
|
||||
if(!SSticker)
|
||||
return
|
||||
if (mode == 1) // accessing crew manifest
|
||||
var/crew = ""
|
||||
|
||||
@@ -148,7 +148,7 @@ var/list/possible_uplinker_IDs = list("Alfa","Bravo","Charlie","Delta","Echo","F
|
||||
/obj/machinery/computer/telecrystals/boss/proc/getDangerous()//This scales the TC assigned with the round population.
|
||||
..()
|
||||
var/danger
|
||||
danger = joined_player_list.len - ticker.mode.syndicates.len
|
||||
danger = joined_player_list.len - SSticker.mode.syndicates.len
|
||||
danger = Ceiling(danger, 10)
|
||||
scaleTC(danger)
|
||||
|
||||
|
||||
@@ -1274,7 +1274,7 @@ var/list/airlock_overlays = list()
|
||||
|
||||
if(!density)
|
||||
return 1
|
||||
if(!ticker || !ticker.mode)
|
||||
if(!SSticker || !SSticker.mode)
|
||||
return 0
|
||||
operating = 1
|
||||
update_icon(AIRLOCK_OPENING, 1)
|
||||
|
||||
@@ -229,7 +229,7 @@
|
||||
return 1
|
||||
if(operating)
|
||||
return
|
||||
if(!ticker || !ticker.mode)
|
||||
if(!SSticker || !SSticker.mode)
|
||||
return 0
|
||||
operating = 1
|
||||
do_animate("opening")
|
||||
|
||||
@@ -70,7 +70,7 @@
|
||||
else
|
||||
do_animate("deny")
|
||||
return
|
||||
if (!( ticker ))
|
||||
if (!( SSticker ))
|
||||
return
|
||||
var/mob/M = AM
|
||||
if(M.restrained() || ((isdrone(M) || iscyborg(M)) && M.stat))
|
||||
@@ -129,7 +129,7 @@
|
||||
/obj/machinery/door/window/open(forced=0)
|
||||
if (src.operating == 1) //doors can still open when emag-disabled
|
||||
return 0
|
||||
if(!ticker || !ticker.mode)
|
||||
if(!SSticker || !SSticker.mode)
|
||||
return 0
|
||||
if(!forced)
|
||||
if(!hasPower())
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
user.dna.add_mutation(COLDRES)
|
||||
user.dna.add_mutation(TK)
|
||||
|
||||
ticker.mode.traitors += user.mind
|
||||
SSticker.mode.traitors += user.mind
|
||||
user.mind.special_role = "Avatar of the Wish Granter"
|
||||
|
||||
var/datum/objective/hijack/hijack = new
|
||||
|
||||
@@ -68,7 +68,7 @@
|
||||
<script language='javascript' type='text/javascript'>
|
||||
[js_byjax]
|
||||
[js_dropdowns]
|
||||
function ticker() {
|
||||
function SSticker() {
|
||||
setInterval(function(){
|
||||
window.location='byond://?src=\ref[src]&update_content=1';
|
||||
document.body.style.color = get_rand_color_string();
|
||||
@@ -86,7 +86,7 @@
|
||||
|
||||
window.onload = function() {
|
||||
dropdowns();
|
||||
ticker();
|
||||
SSticker();
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
<script language='javascript' type='text/javascript'>
|
||||
[js_byjax]
|
||||
[js_dropdowns]
|
||||
function ticker() {
|
||||
function SSticker() {
|
||||
setInterval(function(){
|
||||
window.location='byond://?src=\ref[src]&update_content=1';
|
||||
}, 1000);
|
||||
@@ -28,7 +28,7 @@
|
||||
|
||||
window.onload = function() {
|
||||
dropdowns();
|
||||
ticker();
|
||||
SSticker();
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
|
||||
@@ -13,11 +13,11 @@ would spawn and follow the beaker, even if it is carried or thrown.
|
||||
|
||||
/obj/effect/particle_effect/New()
|
||||
..()
|
||||
if(ticker)
|
||||
if(SSticker)
|
||||
cameranet.updateVisibility(src)
|
||||
|
||||
/obj/effect/particle_effect/Destroy()
|
||||
if(ticker)
|
||||
if(SSticker)
|
||||
cameranet.updateVisibility(src)
|
||||
. = ..()
|
||||
|
||||
|
||||
@@ -409,7 +409,7 @@
|
||||
return TRUE
|
||||
|
||||
/obj/item/toy/crayon/proc/territory_claimed(area/territory, mob/user)
|
||||
for(var/datum/gang/G in ticker.mode.gangs)
|
||||
for(var/datum/gang/G in SSticker.mode.gangs)
|
||||
if(territory.type in (G.territory|G.territory_new))
|
||||
. = G.name
|
||||
break
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
|
||||
/obj/item/device/doorCharge/examine(mob/user)
|
||||
..()
|
||||
if(user.mind in ticker.mode.traitors) //No nuke ops because the device is excluded from nuclear
|
||||
if(user.mind in SSticker.mode.traitors) //No nuke ops because the device is excluded from nuclear
|
||||
to_chat(user, "A small explosive device that can be used to sabotage airlocks to cause an explosion upon opening. To apply, remove the airlock's maintenance panel and place it within.")
|
||||
else
|
||||
to_chat(user, "A small, suspicious object that feels lukewarm when held.")
|
||||
|
||||
@@ -214,7 +214,7 @@
|
||||
if(M.laws.id == DEFAULT_AI_LAWID)
|
||||
O.make_laws()
|
||||
|
||||
ticker.mode.remove_antag_for_borging(BM.mind)
|
||||
SSticker.mode.remove_antag_for_borging(BM.mind)
|
||||
if(!istype(M.laws, /datum/ai_laws/ratvar))
|
||||
remove_servant_of_ratvar(BM, TRUE)
|
||||
BM.mind.transfer_to(O)
|
||||
|
||||
@@ -31,8 +31,8 @@
|
||||
return 0
|
||||
|
||||
var/success
|
||||
if(target.mind in ticker.mode.get_gangsters())
|
||||
if(ticker.mode.remove_gangster(target.mind,0,1))
|
||||
if(target.mind in SSticker.mode.get_gangsters())
|
||||
if(SSticker.mode.remove_gangster(target.mind,0,1))
|
||||
success = 1 //Was not a gang boss, convert as usual
|
||||
else
|
||||
success = 1
|
||||
|
||||
@@ -19,23 +19,23 @@
|
||||
|
||||
/obj/item/weapon/implant/mindshield/implant(mob/living/target, mob/user, silent = 0)
|
||||
if(..())
|
||||
if((target.mind in (ticker.mode.head_revolutionaries | ticker.mode.get_gang_bosses())))
|
||||
if((target.mind in (SSticker.mode.head_revolutionaries | SSticker.mode.get_gang_bosses())))
|
||||
if(!silent)
|
||||
target.visible_message("<span class='warning'>[target] seems to resist the implant!</span>", "<span class='warning'>You feel something interfering with your mental conditioning, but you resist it!</span>")
|
||||
removed(target, 1)
|
||||
qdel(src)
|
||||
return 0
|
||||
if(target.mind in ticker.mode.get_gangsters())
|
||||
ticker.mode.remove_gangster(target.mind)
|
||||
if(target.mind in SSticker.mode.get_gangsters())
|
||||
SSticker.mode.remove_gangster(target.mind)
|
||||
if(!silent)
|
||||
target.visible_message("<span class='warning'>[src] was destroyed in the process!</span>", "<span class='notice'>You feel a sense of peace and security. You are now protected from brainwashing.</span>")
|
||||
removed(target, 1)
|
||||
qdel(src)
|
||||
return 0
|
||||
if(target.mind in ticker.mode.revolutionaries)
|
||||
ticker.mode.remove_revolutionary(target.mind)
|
||||
if(target.mind in SSticker.mode.revolutionaries)
|
||||
SSticker.mode.remove_revolutionary(target.mind)
|
||||
if(!silent)
|
||||
if(target.mind in ticker.mode.cult)
|
||||
if(target.mind in SSticker.mode.cult)
|
||||
to_chat(target, "<span class='warning'>You feel something interfering with your mental conditioning, but you resist it!</span>")
|
||||
else
|
||||
to_chat(target, "<span class='notice'>You feel a sense of peace and security. You are now protected from brainwashing.</span>")
|
||||
|
||||
@@ -47,7 +47,7 @@ var/global/list/bibleitemstates = list("bible", "koran", "scrapbook", "bible",
|
||||
/obj/item/weapon/storage/book/bible/Topic(href, href_list)
|
||||
if(!usr.canUseTopic(src))
|
||||
return
|
||||
if(href_list["seticon"] && ticker && !SSreligion.Bible_icon_state)
|
||||
if(href_list["seticon"] && SSticker && !SSreligion.Bible_icon_state)
|
||||
var/iconi = text2num(href_list["seticon"])
|
||||
var/biblename = biblenames[iconi]
|
||||
var/obj/item/weapon/storage/book/bible/B = locate(href_list["src"])
|
||||
|
||||
@@ -17,11 +17,11 @@
|
||||
queue_smooth(src)
|
||||
queue_smooth_neighbors(src)
|
||||
icon_state = ""
|
||||
if(ticker)
|
||||
if(SSticker)
|
||||
cameranet.updateVisibility(src)
|
||||
|
||||
/obj/structure/Destroy()
|
||||
if(ticker)
|
||||
if(SSticker)
|
||||
cameranet.updateVisibility(src)
|
||||
if(smooth)
|
||||
queue_smooth_neighbors(src)
|
||||
|
||||
@@ -174,7 +174,7 @@
|
||||
playsound(loc, P.usesound, 50, 1)
|
||||
to_chat(user, "<span class='notice'>You connect the monitor.</span>")
|
||||
if(brain)
|
||||
ticker.mode.remove_antag_for_borging(brain.brainmob.mind)
|
||||
SSticker.mode.remove_antag_for_borging(brain.brainmob.mind)
|
||||
if(!istype(brain.laws, /datum/ai_laws/ratvar))
|
||||
remove_servant_of_ratvar(brain.brainmob, TRUE)
|
||||
var/mob/living/silicon/ai/A = new /mob/living/silicon/ai(loc, laws, brain.brainmob)
|
||||
|
||||
+2
-2
@@ -83,10 +83,10 @@
|
||||
src << sound(null, repeat = 0, wait = 0, volume = 85, channel = 1)
|
||||
|
||||
/client/proc/playtitlemusic()
|
||||
UNTIL(ticker.login_music) //wait for ticker init to set the login music
|
||||
UNTIL(SSticker.login_music) //wait for SSticker init to set the login music
|
||||
|
||||
if(prefs && (prefs.toggles & SOUND_LOBBY))
|
||||
src << sound(ticker.login_music, repeat = 0, wait = 0, volume = 85, channel = 1) // MAD JAMS
|
||||
src << sound(SSticker.login_music, repeat = 0, wait = 0, volume = 85, channel = 1) // MAD JAMS
|
||||
|
||||
/proc/get_rand_frequency()
|
||||
return rand(32000, 55000) //Frequency stuff only works with 45kbps oggs.
|
||||
|
||||
@@ -348,7 +348,7 @@
|
||||
return can_have_cabling() & !intact
|
||||
|
||||
/turf/proc/visibilityChanged()
|
||||
if(ticker)
|
||||
if(SSticker)
|
||||
cameranet.updateVisibility(src)
|
||||
|
||||
/turf/proc/burn_tile()
|
||||
@@ -399,7 +399,7 @@
|
||||
|
||||
|
||||
/turf/proc/add_blueprints_preround(atom/movable/AM)
|
||||
if(!ticker || ticker.current_state != GAME_STATE_PLAYING)
|
||||
if(!SSticker || SSticker.current_state != GAME_STATE_PLAYING)
|
||||
add_blueprints(AM)
|
||||
|
||||
/turf/proc/empty(turf_type=/turf/open/space)
|
||||
|
||||
+13
-13
@@ -419,7 +419,7 @@ var/global/BSACooldown = 0
|
||||
if(confirm == "Cancel")
|
||||
return
|
||||
if(confirm == "Yes")
|
||||
ticker.delay_end = 0
|
||||
SSticker.delay_end = 0
|
||||
feedback_add_details("admin_verb","R") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
world.Reboot("Initiated by [usr.client.holder.fakekey ? "Admin" : usr.key].", "end_error", "admin reboot - by [usr.key] [usr.client.holder.fakekey ? "(stealth)" : ""]", 10)
|
||||
|
||||
@@ -434,7 +434,7 @@ var/global/BSACooldown = 0
|
||||
if(confirm == "Cancel")
|
||||
return
|
||||
if(confirm == "Yes")
|
||||
ticker.force_ending = 1
|
||||
SSticker.force_ending = 1
|
||||
feedback_add_details("admin_verb","ER") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
|
||||
@@ -508,11 +508,11 @@ var/global/BSACooldown = 0
|
||||
set category = "Server"
|
||||
set desc="Start the round RIGHT NOW"
|
||||
set name="Start Now"
|
||||
if(ticker.current_state == GAME_STATE_PREGAME || ticker.current_state == GAME_STATE_STARTUP)
|
||||
ticker.start_immediately = TRUE
|
||||
if(SSticker.current_state == GAME_STATE_PREGAME || SSticker.current_state == GAME_STATE_STARTUP)
|
||||
SSticker.start_immediately = TRUE
|
||||
log_admin("[usr.key] has started the game.")
|
||||
var/msg = ""
|
||||
if(ticker.current_state == GAME_STATE_STARTUP)
|
||||
if(SSticker.current_state == GAME_STATE_STARTUP)
|
||||
msg = " (The server is still setting up, but the round will be \
|
||||
started as soon as possible.)"
|
||||
message_admins("<font color='blue'>\
|
||||
@@ -570,11 +570,11 @@ var/global/BSACooldown = 0
|
||||
set desc="Delay the game start"
|
||||
set name="Delay pre-game"
|
||||
|
||||
var/newtime = input("Set a new time in seconds. Set -1 for indefinite delay.","Set Delay",round(ticker.GetTimeLeft()/10)) as num|null
|
||||
if(ticker.current_state > GAME_STATE_PREGAME)
|
||||
var/newtime = input("Set a new time in seconds. Set -1 for indefinite delay.","Set Delay",round(SSticker.GetTimeLeft()/10)) as num|null
|
||||
if(SSticker.current_state > GAME_STATE_PREGAME)
|
||||
return alert("Too late... The game has already started!")
|
||||
if(newtime)
|
||||
ticker.SetTimeLeft(newtime * 10)
|
||||
SSticker.SetTimeLeft(newtime * 10)
|
||||
if(newtime < 0)
|
||||
to_chat(world, "<b>The game start has been delayed.</b>")
|
||||
log_admin("[key_name(usr)] delayed the round start.")
|
||||
@@ -702,15 +702,15 @@ var/global/BSACooldown = 0
|
||||
|
||||
/datum/admins/proc/output_all_devil_info()
|
||||
var/devil_number = 0
|
||||
for(var/D in ticker.mode.devils)
|
||||
for(var/D in SSticker.mode.devils)
|
||||
devil_number++
|
||||
to_chat(usr, "Devil #[devil_number]:<br><br>" + ticker.mode.printdevilinfo(D))
|
||||
to_chat(usr, "Devil #[devil_number]:<br><br>" + SSticker.mode.printdevilinfo(D))
|
||||
if(!devil_number)
|
||||
to_chat(usr, "<b>No Devils located</b>" )
|
||||
|
||||
/datum/admins/proc/output_devil_info(mob/living/M)
|
||||
if(istype(M) && M.mind && M.mind.devilinfo)
|
||||
to_chat(usr, ticker.mode.printdevilinfo(M.mind))
|
||||
to_chat(usr, SSticker.mode.printdevilinfo(M.mind))
|
||||
else
|
||||
to_chat(usr, "<b>[M] is not a devil.")
|
||||
|
||||
@@ -720,7 +720,7 @@ var/global/BSACooldown = 0
|
||||
var/dat = "<html><head><title>Manage Free Slots</title></head><body>"
|
||||
var/count = 0
|
||||
|
||||
if(ticker && !ticker.mode)
|
||||
if(SSticker && !SSticker.mode)
|
||||
alert(usr, "You cannot manage jobs before the round starts!")
|
||||
return
|
||||
|
||||
@@ -814,7 +814,7 @@ var/global/BSACooldown = 0
|
||||
return 1
|
||||
|
||||
/client/proc/adminGreet(logout)
|
||||
if(ticker && ticker.current_state == GAME_STATE_PLAYING)
|
||||
if(SSticker && SSticker.current_state == GAME_STATE_PLAYING)
|
||||
var/string
|
||||
if(logout && config && config.announce_admin_logout)
|
||||
string = pick(
|
||||
|
||||
@@ -309,13 +309,13 @@
|
||||
usr << browse(dat, "window=players;size=600x480")
|
||||
|
||||
/datum/admins/proc/check_antagonists()
|
||||
if (ticker && ticker.current_state >= GAME_STATE_PLAYING)
|
||||
if (SSticker && SSticker.current_state >= GAME_STATE_PLAYING)
|
||||
var/dat = "<html><head><title>Round Status</title></head><body><h1><B>Round Status</B></h1>"
|
||||
if(ticker.mode.replacementmode)
|
||||
dat += "Former Game Mode: <B>[ticker.mode.name]</B><BR>"
|
||||
dat += "Replacement Game Mode: <B>[ticker.mode.replacementmode.name]</B><BR>"
|
||||
if(SSticker.mode.replacementmode)
|
||||
dat += "Former Game Mode: <B>[SSticker.mode.name]</B><BR>"
|
||||
dat += "Replacement Game Mode: <B>[SSticker.mode.replacementmode.name]</B><BR>"
|
||||
else
|
||||
dat += "Current Game Mode: <B>[ticker.mode.name]</B><BR>"
|
||||
dat += "Current Game Mode: <B>[SSticker.mode.name]</B><BR>"
|
||||
dat += "Round Duration: <B>[round(world.time / 36000)]:[add_zero("[world.time / 600 % 60]", 2)]:[world.time / 100 % 6][world.time / 100 % 10]</B><BR>"
|
||||
dat += "<B>Emergency shuttle</B><BR>"
|
||||
if(EMERGENCY_IDLE_OR_RECALLED)
|
||||
@@ -328,17 +328,17 @@
|
||||
else
|
||||
dat += "ETA: <a href='?_src_=holder;edit_shuttle_time=1'>[(timeleft / 60) % 60]:[add_zero(num2text(timeleft % 60), 2)]</a><BR>"
|
||||
dat += "<B>Continuous Round Status</B><BR>"
|
||||
dat += "<a href='?_src_=holder;toggle_continuous=1'>[config.continuous[ticker.mode.config_tag] ? "Continue if antagonists die" : "End on antagonist death"]</a>"
|
||||
if(config.continuous[ticker.mode.config_tag])
|
||||
dat += ", <a href='?_src_=holder;toggle_midround_antag=1'>[config.midround_antag[ticker.mode.config_tag] ? "creating replacement antagonists" : "not creating new antagonists"]</a><BR>"
|
||||
dat += "<a href='?_src_=holder;toggle_continuous=1'>[config.continuous[SSticker.mode.config_tag] ? "Continue if antagonists die" : "End on antagonist death"]</a>"
|
||||
if(config.continuous[SSticker.mode.config_tag])
|
||||
dat += ", <a href='?_src_=holder;toggle_midround_antag=1'>[config.midround_antag[SSticker.mode.config_tag] ? "creating replacement antagonists" : "not creating new antagonists"]</a><BR>"
|
||||
else
|
||||
dat += "<BR>"
|
||||
if(config.midround_antag[ticker.mode.config_tag])
|
||||
if(config.midround_antag[SSticker.mode.config_tag])
|
||||
dat += "Time limit: <a href='?_src_=holder;alter_midround_time_limit=1'>[config.midround_antag_time_check] minutes into round</a><BR>"
|
||||
dat += "Living crew limit: <a href='?_src_=holder;alter_midround_life_limit=1'>[config.midround_antag_life_check * 100]% of crew alive</a><BR>"
|
||||
dat += "If limits past: <a href='?_src_=holder;toggle_noncontinuous_behavior=1'>[ticker.mode.round_ends_with_antag_death ? "End The Round" : "Continue As Extended"]</a><BR>"
|
||||
dat += "If limits past: <a href='?_src_=holder;toggle_noncontinuous_behavior=1'>[SSticker.mode.round_ends_with_antag_death ? "End The Round" : "Continue As Extended"]</a><BR>"
|
||||
dat += "<a href='?_src_=holder;end_round=\ref[usr]'>End Round Now</a><br>"
|
||||
dat += "<a href='?_src_=holder;delay_round_end=1'>[ticker.delay_end ? "End Round Normally" : "Delay Round End"]</a>"
|
||||
dat += "<a href='?_src_=holder;delay_round_end=1'>[SSticker.delay_end ? "End Round Normally" : "Delay Round End"]</a>"
|
||||
var/connected_players = clients.len
|
||||
var/lobby_players = 0
|
||||
var/observers = 0
|
||||
@@ -383,9 +383,9 @@
|
||||
dat += "<BR><span class='userdanger'>[other_players] players in invalid state or the statistics code is bugged!</span>"
|
||||
dat += "<BR>"
|
||||
|
||||
if(ticker.mode.syndicates.len)
|
||||
if(SSticker.mode.syndicates.len)
|
||||
dat += "<br><table cellspacing=5><tr><td><B>Syndicates</B></td><td></td></tr>"
|
||||
for(var/datum/mind/N in ticker.mode.syndicates)
|
||||
for(var/datum/mind/N in SSticker.mode.syndicates)
|
||||
var/mob/M = N.current
|
||||
if(M)
|
||||
dat += "<tr><td><a href='?_src_=holder;adminplayeropts=\ref[M]'>[M.real_name]</a>[M.client ? "" : " <i>(No Client)</i>"][M.stat == 2 ? " <b><font color=red>(DEAD)</font></b>" : ""]</td>"
|
||||
@@ -409,9 +409,9 @@
|
||||
dat += "in [disk_loc.loc] at ([disk_loc.x], [disk_loc.y], [disk_loc.z])</td></tr>"
|
||||
dat += "</table>"
|
||||
|
||||
if(ticker.mode.head_revolutionaries.len || ticker.mode.revolutionaries.len)
|
||||
if(SSticker.mode.head_revolutionaries.len || SSticker.mode.revolutionaries.len)
|
||||
dat += "<br><table cellspacing=5><tr><td><B>Revolutionaries</B></td><td></td></tr>"
|
||||
for(var/datum/mind/N in ticker.mode.head_revolutionaries)
|
||||
for(var/datum/mind/N in SSticker.mode.head_revolutionaries)
|
||||
var/mob/M = N.current
|
||||
if(!M)
|
||||
dat += "<tr><td><a href='?_src_=vars;Vars=\ref[N]'>[N.name]([N.key])</a><i>Head Revolutionary body destroyed!</i></td>"
|
||||
@@ -420,14 +420,14 @@
|
||||
dat += "<tr><td><a href='?_src_=holder;adminplayeropts=\ref[M]'>[M.real_name]</a> <b>(Leader)</b>[M.client ? "" : " <i>(No Client)</i>"][M.stat == 2 ? " <b><font color=red>(DEAD)</font></b>" : ""]</td>"
|
||||
dat += "<td><A href='?priv_msg=[M.ckey]'>PM</A></td>"
|
||||
dat += "<td><A href='?_src_=holder;adminplayerobservefollow=\ref[M]'>FLW</a></td></tr>"
|
||||
for(var/datum/mind/N in ticker.mode.revolutionaries)
|
||||
for(var/datum/mind/N in SSticker.mode.revolutionaries)
|
||||
var/mob/M = N.current
|
||||
if(M)
|
||||
dat += "<tr><td><a href='?_src_=holder;adminplayeropts=\ref[M]'>[M.real_name]</a>[M.client ? "" : " <i>(No Client)</i>"][M.stat == 2 ? " <b><font color=red>(DEAD)</font></b>" : ""]</td>"
|
||||
dat += "<td><A href='?priv_msg=[M.ckey]'>PM</A></td>"
|
||||
dat += "<td><A href='?_src_=holder;adminplayerobservefollow=\ref[M]'>FLW</a></td></tr>"
|
||||
dat += "</table><table cellspacing=5><tr><td><B>Target(s)</B></td><td></td><td><B>Location</B></td></tr>"
|
||||
for(var/datum/mind/N in ticker.mode.get_living_heads())
|
||||
for(var/datum/mind/N in SSticker.mode.get_living_heads())
|
||||
var/mob/M = N.current
|
||||
if(M)
|
||||
dat += "<tr><td><a href='?_src_=holder;adminplayeropts=\ref[M]'>[M.real_name]</a>[M.client ? "" : " <i>(No Client)</i>"][M.stat == 2 ? " <b><font color=red>(DEAD)</font></b>" : ""]</td>"
|
||||
@@ -440,7 +440,7 @@
|
||||
dat += "<td><A href='?priv_msg=[N.key]'>PM</A></td></tr>"
|
||||
dat += "</table>"
|
||||
|
||||
for(var/datum/gang/G in ticker.mode.gangs)
|
||||
for(var/datum/gang/G in SSticker.mode.gangs)
|
||||
dat += "<br><table cellspacing=5><tr><td><B>[G.name] Gang: <a href='?_src_=holder;gangpoints=\ref[G]'>[G.points] Influence</a> | [round((G.territory.len/start_state.num_territories)*100, 1)]% Control</B></td><td></td></tr>"
|
||||
for(var/datum/mind/N in G.bosses)
|
||||
var/mob/M = N.current
|
||||
@@ -458,9 +458,9 @@
|
||||
dat += "<td><A href='?priv_msg=[M.ckey]'>PM</A></td></tr>"
|
||||
dat += "</table>"
|
||||
|
||||
if(ticker.mode.changelings.len > 0)
|
||||
if(SSticker.mode.changelings.len > 0)
|
||||
dat += "<br><table cellspacing=5><tr><td><B>Changelings</B></td><td></td><td></td></tr>"
|
||||
for(var/datum/mind/changeling in ticker.mode.changelings)
|
||||
for(var/datum/mind/changeling in SSticker.mode.changelings)
|
||||
var/mob/M = changeling.current
|
||||
if(M)
|
||||
dat += "<tr><td>[M.mind.changeling.changelingID] as <a href='?_src_=holder;adminplayeropts=\ref[M]'>[M.real_name]</a>[M.client ? "" : " <i>(No Client)</i>"][M.stat == 2 ? " <b><font color=red>(DEAD)</font></b>" : ""]</td>"
|
||||
@@ -472,9 +472,9 @@
|
||||
dat += "<td><A href='?priv_msg=[changeling.key]'>PM</A></td></tr>"
|
||||
dat += "</table>"
|
||||
|
||||
if(ticker.mode.wizards.len > 0)
|
||||
if(SSticker.mode.wizards.len > 0)
|
||||
dat += "<br><table cellspacing=5><tr><td><B>Wizards</B></td><td></td><td></td></tr>"
|
||||
for(var/datum/mind/wizard in ticker.mode.wizards)
|
||||
for(var/datum/mind/wizard in SSticker.mode.wizards)
|
||||
var/mob/M = wizard.current
|
||||
if(M)
|
||||
dat += "<tr><td><a href='?_src_=holder;adminplayeropts=\ref[M]'>[M.real_name]</a>[M.client ? "" : " <i>(No Client)</i>"][M.stat == 2 ? " <b><font color=red>(DEAD)</font></b>" : ""]</td>"
|
||||
@@ -486,9 +486,9 @@
|
||||
dat += "<td><A href='?priv_msg=[wizard.key]'>PM</A></td></tr>"
|
||||
dat += "</table>"
|
||||
|
||||
if(ticker.mode.apprentices.len > 0)
|
||||
if(SSticker.mode.apprentices.len > 0)
|
||||
dat += "<br><table cellspacing=5><tr><td><B>Apprentice</B></td><td></td><td></td></tr>"
|
||||
for(var/datum/mind/apprentice in ticker.mode.apprentices)
|
||||
for(var/datum/mind/apprentice in SSticker.mode.apprentices)
|
||||
var/mob/M = apprentice.current
|
||||
if(M)
|
||||
dat += "<tr><td><a href='?_src_=holder;adminplayeropts=\ref[M]'>[M.real_name]</a>[M.client ? "" : " <i>(No Client)</i>"][M.stat == 2 ? " <b><font color=red>(DEAD)</font></b>" : ""]</td>"
|
||||
@@ -500,9 +500,9 @@
|
||||
dat += "<td><A href='?priv_msg=[apprentice.key]'>PM</A></td></tr>"
|
||||
dat += "</table>"
|
||||
|
||||
if(ticker.mode.cult.len)
|
||||
if(SSticker.mode.cult.len)
|
||||
dat += "<br><table cellspacing=5><tr><td><B>Cultists</B></td><td></td></tr>"
|
||||
for(var/datum/mind/N in ticker.mode.cult)
|
||||
for(var/datum/mind/N in SSticker.mode.cult)
|
||||
var/mob/M = N.current
|
||||
if(M)
|
||||
dat += "<tr><td><a href='?_src_=holder;adminplayeropts=\ref[M]'>[M.real_name]</a>[M.client ? "" : " <i>(No Client)</i>"][M.stat == 2 ? " <b><font color=red>(DEAD)</font></b>" : ""]</td>"
|
||||
@@ -510,9 +510,9 @@
|
||||
dat += "<td><A href='?_src_=holder;adminplayerobservefollow=\ref[M]'>FLW</a></td></tr>"
|
||||
dat += "</table>"
|
||||
|
||||
if(ticker.mode.servants_of_ratvar.len)
|
||||
if(SSticker.mode.servants_of_ratvar.len)
|
||||
dat += "<br><table cellspacing=5><tr><td><B>Servants of Ratvar</B></td><td></td></tr>"
|
||||
for(var/datum/mind/N in ticker.mode.servants_of_ratvar)
|
||||
for(var/datum/mind/N in SSticker.mode.servants_of_ratvar)
|
||||
var/mob/M = N.current
|
||||
if(M)
|
||||
dat += "<tr><td><a href='?_src_=holder;adminplayeropts=\ref[M]'>[M.real_name]</a>[M.client ? "" : " <i>(ghost)</i>"][M.stat == 2 ? " <b><font color=red>(DEAD)</font></b>" : ""]</td>"
|
||||
@@ -520,9 +520,9 @@
|
||||
dat += "<td><A href='?_src_=holder;adminplayerobservefollow=\ref[M]'>FLW</a></td></tr>"
|
||||
dat += "</table>"
|
||||
|
||||
if(ticker.mode.traitors.len > 0)
|
||||
if(SSticker.mode.traitors.len > 0)
|
||||
dat += "<br><table cellspacing=5><tr><td><B>Traitors</B></td><td></td><td></td></tr>"
|
||||
for(var/datum/mind/traitor in ticker.mode.traitors)
|
||||
for(var/datum/mind/traitor in SSticker.mode.traitors)
|
||||
var/mob/M = traitor.current
|
||||
if(M)
|
||||
dat += "<tr><td><a href='?_src_=holder;adminplayeropts=\ref[M]'>[M.real_name]</a>[M.client ? "" : " <i>(No Client)</i>"][M.stat == 2 ? " <b><font color=red>(DEAD)</font></b>" : ""]</td>"
|
||||
@@ -534,9 +534,9 @@
|
||||
dat += "<td><A href='?priv_msg=[traitor.key]'>PM</A></td></tr>"
|
||||
dat += "</table>"
|
||||
|
||||
if(ticker.mode.abductors.len)
|
||||
if(SSticker.mode.abductors.len)
|
||||
dat += "<br><table cellspacing=5><tr><td><B>Abductors</B></td><td></td><td></td></tr>"
|
||||
for(var/datum/mind/abductor in ticker.mode.abductors)
|
||||
for(var/datum/mind/abductor in SSticker.mode.abductors)
|
||||
var/mob/M = abductor.current
|
||||
if(M)
|
||||
dat += "<tr><td><a href='?_src_=holder;adminplayeropts=\ref[M]'>[M.real_name]</a>[M.client ? "" : " <i>(No Client)</i>"][M.stat == 2 ? " <b><font color=red>(DEAD)</font></b>" : ""]</td>"
|
||||
@@ -561,9 +561,9 @@
|
||||
dat += "<td><A href='?priv_msg=[abductee.key]'>PM</A></td></tr>"
|
||||
dat += "</table>"
|
||||
|
||||
if(ticker.mode.devils.len)
|
||||
if(SSticker.mode.devils.len)
|
||||
dat += "<br><table cellspacing=5><tr><td><B>devils</B></td><td></td><td></td></tr>"
|
||||
for(var/X in ticker.mode.devils)
|
||||
for(var/X in SSticker.mode.devils)
|
||||
var/datum/mind/devil = X
|
||||
var/mob/M = devil.current
|
||||
if(M)
|
||||
@@ -576,9 +576,9 @@
|
||||
dat += "<td><A href='?priv_msg=[devil.key]'>PM</A></td>"
|
||||
dat += "</table>"
|
||||
|
||||
if(ticker.mode.sintouched.len)
|
||||
if(SSticker.mode.sintouched.len)
|
||||
dat += "<br><table cellspacing=5><tr><td><B>sintouched</B></td><td></td><td></td></tr>"
|
||||
for(var/X in ticker.mode.sintouched)
|
||||
for(var/X in SSticker.mode.sintouched)
|
||||
var/datum/mind/sintouched = X
|
||||
var/mob/M = sintouched.current
|
||||
if(M)
|
||||
@@ -594,10 +594,10 @@
|
||||
for(var/mob/camera/blob/B in mob_list)
|
||||
blob_minds |= B.mind
|
||||
|
||||
if(istype(ticker.mode, /datum/game_mode/blob) || blob_minds.len)
|
||||
if(istype(SSticker.mode, /datum/game_mode/blob) || blob_minds.len)
|
||||
dat += "<br><table cellspacing=5><tr><td><B>Blob</B></td><td></td><td></td></tr>"
|
||||
if(istype(ticker.mode,/datum/game_mode/blob))
|
||||
var/datum/game_mode/blob/mode = ticker.mode
|
||||
if(istype(SSticker.mode,/datum/game_mode/blob))
|
||||
var/datum/game_mode/blob/mode = SSticker.mode
|
||||
blob_minds |= mode.blob_overminds
|
||||
dat += "<tr><td><i>Progress: [blobs_legit.len]/[mode.blobwincount]</i></td></tr>"
|
||||
|
||||
@@ -613,8 +613,8 @@
|
||||
dat += "</table>"
|
||||
|
||||
|
||||
if(istype(ticker.mode, /datum/game_mode/monkey))
|
||||
var/datum/game_mode/monkey/mode = ticker.mode
|
||||
if(istype(SSticker.mode, /datum/game_mode/monkey))
|
||||
var/datum/game_mode/monkey/mode = SSticker.mode
|
||||
dat += "<br><table cellspacing=5><tr><td><B>Monkey</B></td><td></td><td></td></tr>"
|
||||
|
||||
for(var/datum/mind/eek in mode.ape_infectees)
|
||||
|
||||
@@ -241,11 +241,11 @@
|
||||
if("showgm")
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
if(!ticker || !ticker.mode)
|
||||
if(!SSticker || !SSticker.mode)
|
||||
alert("The game hasn't started yet!")
|
||||
else if (ticker.mode)
|
||||
alert("The game mode is [ticker.mode.name]")
|
||||
else alert("For some reason there's a ticker, but not a game mode")
|
||||
else if (SSticker.mode)
|
||||
alert("The game mode is [SSticker.mode.name]")
|
||||
else alert("For some reason there's a SSticker, but not a game mode")
|
||||
if("manifest")
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
@@ -344,7 +344,7 @@
|
||||
if("traitor_all")
|
||||
if(!check_rights(R_FUN))
|
||||
return
|
||||
if(!ticker || !ticker.mode)
|
||||
if(!SSticker || !SSticker.mode)
|
||||
alert("The game hasn't started yet!")
|
||||
return
|
||||
var/objective = copytext(sanitize(input("Enter an objective")),1,MAX_MESSAGE_LEN)
|
||||
@@ -356,27 +356,27 @@
|
||||
if(H.stat == 2 || !H.client || !H.mind) continue
|
||||
if(is_special_character(H)) continue
|
||||
//traitorize(H, objective, 0)
|
||||
ticker.mode.traitors += H.mind
|
||||
SSticker.mode.traitors += H.mind
|
||||
H.mind.special_role = "traitor"
|
||||
var/datum/objective/new_objective = new
|
||||
new_objective.owner = H
|
||||
new_objective.explanation_text = objective
|
||||
H.mind.objectives += new_objective
|
||||
ticker.mode.greet_traitor(H.mind)
|
||||
//ticker.mode.forge_traitor_objectives(H.mind)
|
||||
ticker.mode.finalize_traitor(H.mind)
|
||||
SSticker.mode.greet_traitor(H.mind)
|
||||
//SSticker.mode.forge_traitor_objectives(H.mind)
|
||||
SSticker.mode.finalize_traitor(H.mind)
|
||||
for(var/mob/living/silicon/A in player_list)
|
||||
if(A.stat == 2 || !A.client || !A.mind) continue
|
||||
if(ispAI(A)) continue
|
||||
else if(is_special_character(A)) continue
|
||||
ticker.mode.traitors += A.mind
|
||||
SSticker.mode.traitors += A.mind
|
||||
A.mind.special_role = "traitor"
|
||||
var/datum/objective/new_objective = new
|
||||
new_objective.owner = A
|
||||
new_objective.explanation_text = objective
|
||||
A.mind.objectives += new_objective
|
||||
ticker.mode.greet_traitor(A.mind)
|
||||
ticker.mode.finalize_traitor(A.mind)
|
||||
SSticker.mode.greet_traitor(A.mind)
|
||||
SSticker.mode.finalize_traitor(A.mind)
|
||||
message_admins("<span class='adminnotice'>[key_name_admin(usr)] used everyone is a traitor secret. Objective is [objective]</span>")
|
||||
log_admin("[key_name(usr)] used everyone is a traitor secret. Objective is [objective]")
|
||||
|
||||
|
||||
+25
-25
@@ -49,7 +49,7 @@
|
||||
stickyban(href_list["stickyban"],href_list)
|
||||
|
||||
else if(href_list["makeAntag"])
|
||||
if (!ticker.mode)
|
||||
if (!SSticker.mode)
|
||||
to_chat(usr, "<span class='danger'>Not until the round starts!</span>")
|
||||
return
|
||||
switch(href_list["makeAntag"])
|
||||
@@ -312,24 +312,24 @@
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
|
||||
if(!config.continuous[ticker.mode.config_tag])
|
||||
config.continuous[ticker.mode.config_tag] = 1
|
||||
if(!config.continuous[SSticker.mode.config_tag])
|
||||
config.continuous[SSticker.mode.config_tag] = 1
|
||||
else
|
||||
config.continuous[ticker.mode.config_tag] = 0
|
||||
config.continuous[SSticker.mode.config_tag] = 0
|
||||
|
||||
message_admins("<span class='adminnotice'>[key_name_admin(usr)] toggled the round to [config.continuous[ticker.mode.config_tag] ? "continue if all antagonists die" : "end with the antagonists"].</span>")
|
||||
message_admins("<span class='adminnotice'>[key_name_admin(usr)] toggled the round to [config.continuous[SSticker.mode.config_tag] ? "continue if all antagonists die" : "end with the antagonists"].</span>")
|
||||
check_antagonists()
|
||||
|
||||
else if(href_list["toggle_midround_antag"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
|
||||
if(!config.midround_antag[ticker.mode.config_tag])
|
||||
config.midround_antag[ticker.mode.config_tag] = 1
|
||||
if(!config.midround_antag[SSticker.mode.config_tag])
|
||||
config.midround_antag[SSticker.mode.config_tag] = 1
|
||||
else
|
||||
config.midround_antag[ticker.mode.config_tag] = 0
|
||||
config.midround_antag[SSticker.mode.config_tag] = 0
|
||||
|
||||
message_admins("<span class='adminnotice'>[key_name_admin(usr)] toggled the round to [config.midround_antag[ticker.mode.config_tag] ? "use" : "skip"] the midround antag system.</span>")
|
||||
message_admins("<span class='adminnotice'>[key_name_admin(usr)] toggled the round to [config.midround_antag[SSticker.mode.config_tag] ? "use" : "skip"] the midround antag system.</span>")
|
||||
check_antagonists()
|
||||
|
||||
else if(href_list["alter_midround_time_limit"])
|
||||
@@ -358,21 +358,21 @@
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
|
||||
if(!ticker.mode.round_ends_with_antag_death)
|
||||
ticker.mode.round_ends_with_antag_death = 1
|
||||
if(!SSticker.mode.round_ends_with_antag_death)
|
||||
SSticker.mode.round_ends_with_antag_death = 1
|
||||
else
|
||||
ticker.mode.round_ends_with_antag_death = 0
|
||||
SSticker.mode.round_ends_with_antag_death = 0
|
||||
|
||||
message_admins("<span class='adminnotice'>[key_name_admin(usr)] edited the midround antagonist system to [ticker.mode.round_ends_with_antag_death ? "end the round" : "continue as extended"] upon failure.")
|
||||
message_admins("<span class='adminnotice'>[key_name_admin(usr)] edited the midround antagonist system to [SSticker.mode.round_ends_with_antag_death ? "end the round" : "continue as extended"] upon failure.")
|
||||
check_antagonists()
|
||||
|
||||
else if(href_list["delay_round_end"])
|
||||
if(!check_rights(R_SERVER))
|
||||
return
|
||||
|
||||
ticker.delay_end = !ticker.delay_end
|
||||
log_admin("[key_name(usr)] [ticker.delay_end ? "delayed the round end" : "has made the round end normally"].")
|
||||
message_admins("<span class='adminnotice'>[key_name(usr)] [ticker.delay_end ? "delayed the round end" : "has made the round end normally"].</span>")
|
||||
SSticker.delay_end = !SSticker.delay_end
|
||||
log_admin("[key_name(usr)] [SSticker.delay_end ? "delayed the round end" : "has made the round end normally"].")
|
||||
message_admins("<span class='adminnotice'>[key_name(usr)] [SSticker.delay_end ? "delayed the round end" : "has made the round end normally"].</span>")
|
||||
href_list["secrets"] = "check_antagonist"
|
||||
|
||||
else if(href_list["end_round"])
|
||||
@@ -383,7 +383,7 @@
|
||||
if(alert(usr, "This will end the round, are you SURE you want to do this?", "Confirmation", "Yes", "No") == "Yes")
|
||||
if(alert(usr, "Final Confirmation: End the round NOW?", "Confirmation", "Yes", "No") == "Yes")
|
||||
message_admins("<span class='adminnotice'>[key_name_admin(usr)] has ended the round.</span>")
|
||||
ticker.force_ending = 1 //Yeah there we go APC destroyed mission accomplished
|
||||
SSticker.force_ending = 1 //Yeah there we go APC destroyed mission accomplished
|
||||
return
|
||||
else
|
||||
message_admins("<span class='adminnotice'>[key_name_admin(usr)] decided against ending the round.</span>")
|
||||
@@ -1189,7 +1189,7 @@
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
|
||||
if(ticker && ticker.mode)
|
||||
if(SSticker && SSticker.mode)
|
||||
return alert(usr, "The game has already started.", null, null, null, null)
|
||||
var/dat = {"<B>What mode do you wish to play?</B><HR>"}
|
||||
for(var/mode in config.modes)
|
||||
@@ -1203,7 +1203,7 @@
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
|
||||
if(ticker && ticker.mode)
|
||||
if(SSticker && SSticker.mode)
|
||||
return alert(usr, "The game has already started.", null, null, null, null)
|
||||
if(master_mode != "secret")
|
||||
return alert(usr, "The game mode has to be secret!", null, null, null, null)
|
||||
@@ -1218,7 +1218,7 @@
|
||||
if(!check_rights(R_ADMIN|R_SERVER))
|
||||
return
|
||||
|
||||
if (ticker && ticker.mode)
|
||||
if (SSticker && SSticker.mode)
|
||||
return alert(usr, "The game has already started.", null, null, null, null)
|
||||
master_mode = href_list["c_mode2"]
|
||||
log_admin("[key_name(usr)] set the mode as [master_mode].")
|
||||
@@ -1232,7 +1232,7 @@
|
||||
if(!check_rights(R_ADMIN|R_SERVER))
|
||||
return
|
||||
|
||||
if(ticker && ticker.mode)
|
||||
if(SSticker && SSticker.mode)
|
||||
return alert(usr, "The game has already started.", null, null, null, null)
|
||||
if(master_mode != "secret")
|
||||
return alert(usr, "The game mode has to be secret!", null, null, null, null)
|
||||
@@ -1531,7 +1531,7 @@
|
||||
usr.client.cmd_admin_animalize(M)
|
||||
|
||||
else if(href_list["gangpoints"])
|
||||
var/datum/gang/G = locate(href_list["gangpoints"]) in ticker.mode.gangs
|
||||
var/datum/gang/G = locate(href_list["gangpoints"]) in SSticker.mode.gangs
|
||||
if(G)
|
||||
var/newpoints = input("Set [G.name ] Gang's influence.","Set Influence",G.points) as null|num
|
||||
if(!newpoints)
|
||||
@@ -1842,7 +1842,7 @@
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
|
||||
if(!ticker || !ticker.mode)
|
||||
if(!SSticker || !SSticker.mode)
|
||||
alert("The game hasn't started yet!")
|
||||
return
|
||||
|
||||
@@ -2193,7 +2193,7 @@
|
||||
else if(href_list["kick_all_from_lobby"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
if(ticker && ticker.current_state == GAME_STATE_PLAYING)
|
||||
if(SSticker && SSticker.current_state == GAME_STATE_PLAYING)
|
||||
var/afkonly = text2num(href_list["afkonly"])
|
||||
if(alert("Are you sure you want to kick all [afkonly ? "AFK" : ""] clients from the lobby??","Message","Yes","Cancel") != "Yes")
|
||||
to_chat(usr, "Kick clients from lobby aborted")
|
||||
@@ -2262,7 +2262,7 @@
|
||||
return
|
||||
G.report_message = description
|
||||
message_admins("[key_name(usr)] created \"[G.name]\" station goal.")
|
||||
ticker.mode.station_goals += G
|
||||
SSticker.mode.station_goals += G
|
||||
modify_goals()
|
||||
|
||||
else if(href_list["viewruntime"])
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
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(!ticker)
|
||||
if(!SSticker)
|
||||
return
|
||||
switch(cinematic)
|
||||
if("explosion")
|
||||
@@ -14,5 +14,5 @@
|
||||
override = input(src,"mode = ?","Enter Parameter",null) as anything in list("nuclear emergency","gang war","fake","no override")
|
||||
if(0)
|
||||
override = input(src,"mode = ?","Enter Parameter",null) as anything in list("blob","nuclear emergency","AI malfunction","no override")
|
||||
ticker.station_explosion_cinematic(parameter,override)
|
||||
SSticker.station_explosion_cinematic(parameter,override)
|
||||
return
|
||||
@@ -181,7 +181,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
set category = "Fun"
|
||||
set name = "Make Robot"
|
||||
|
||||
if(!ticker || !ticker.mode)
|
||||
if(!SSticker || !SSticker.mode)
|
||||
alert("Wait until the game starts")
|
||||
return
|
||||
if(ishuman(M))
|
||||
@@ -197,7 +197,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
set category = "Fun"
|
||||
set name = "Make Blob"
|
||||
|
||||
if(!ticker || !ticker.mode)
|
||||
if(!SSticker || !SSticker.mode)
|
||||
alert("Wait until the game starts")
|
||||
return
|
||||
if(ishuman(M))
|
||||
@@ -215,7 +215,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
set category = "Fun"
|
||||
set name = "Make Simple Animal"
|
||||
|
||||
if(!ticker || !ticker.mode)
|
||||
if(!SSticker || !SSticker.mode)
|
||||
alert("Wait until the game starts")
|
||||
return
|
||||
|
||||
@@ -263,7 +263,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
set category = "Fun"
|
||||
set name = "Make Alien"
|
||||
|
||||
if(!ticker || !ticker.mode)
|
||||
if(!SSticker || !SSticker.mode)
|
||||
alert("Wait until the game starts")
|
||||
return
|
||||
if(ishuman(M))
|
||||
@@ -280,7 +280,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
|
||||
set category = "Fun"
|
||||
set name = "Make slime"
|
||||
|
||||
if(!ticker || !ticker.mode)
|
||||
if(!SSticker || !SSticker.mode)
|
||||
alert("Wait until the game starts")
|
||||
return
|
||||
if(ishuman(M))
|
||||
@@ -392,7 +392,7 @@ var/list/TYPES_SHORTCUTS = list(
|
||||
set category = "Admin"
|
||||
set name = "Grant Full Access"
|
||||
|
||||
if(!ticker || !ticker.mode)
|
||||
if(!SSticker || !SSticker.mode)
|
||||
alert("Wait until the game starts")
|
||||
return
|
||||
if(ishuman(M))
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
return
|
||||
message_admins("[key_name_admin(usr)] is forcing a random map rotation.")
|
||||
log_admin("[key_name(usr)] is forcing a random map rotation.")
|
||||
ticker.maprotatechecked = 1
|
||||
SSticker.maprotatechecked = 1
|
||||
SSmapping.maprotate()
|
||||
|
||||
/client/proc/adminchangemap()
|
||||
@@ -36,7 +36,7 @@
|
||||
var/chosenmap = input("Choose a map to change to", "Change Map") as null|anything in maprotatechoices
|
||||
if (!chosenmap)
|
||||
return
|
||||
ticker.maprotatechecked = 1
|
||||
SSticker.maprotatechecked = 1
|
||||
var/datum/map_config/VM = maprotatechoices[chosenmap]
|
||||
message_admins("[key_name_admin(usr)] is changing the map to [VM.map_name]")
|
||||
log_admin("[key_name(usr)] is changing the map to [VM.map_name]")
|
||||
|
||||
@@ -203,7 +203,7 @@
|
||||
you see the truth. Ratvar, the Clockwork Justiciar, lies derelict and forgotten in an unseen realm, and he has selected you as one of his harbringers. You are now a servant of \
|
||||
Ratvar, and you will bring him back.</span>")
|
||||
add_servant_of_ratvar(H, TRUE)
|
||||
ticker.mode.equip_servant(H)
|
||||
SSticker.mode.equip_servant(H)
|
||||
candidates.Remove(H)
|
||||
|
||||
return 1
|
||||
@@ -322,7 +322,7 @@
|
||||
door.open()
|
||||
|
||||
//Assign antag status and the mission
|
||||
ticker.mode.traitors += Commando.mind
|
||||
SSticker.mode.traitors += Commando.mind
|
||||
Commando.mind.special_role = "deathsquad"
|
||||
var/datum/objective/missionobj = new
|
||||
missionobj.owner = Commando.mind
|
||||
@@ -384,7 +384,7 @@
|
||||
H = pick(candidates)
|
||||
if(gang_colors_pool.len)
|
||||
var/datum/gang/newgang = new()
|
||||
ticker.mode.gangs += newgang
|
||||
SSticker.mode.gangs += newgang
|
||||
H.mind.make_Gang(newgang)
|
||||
candidates.Remove(H)
|
||||
else if(needs_assigned == 2)
|
||||
@@ -411,7 +411,7 @@
|
||||
newmob.equipOutfit(/datum/outfit/centcom_official)
|
||||
|
||||
//Assign antag status and the mission
|
||||
ticker.mode.traitors += newmob.mind
|
||||
SSticker.mode.traitors += newmob.mind
|
||||
newmob.mind.special_role = "official"
|
||||
var/datum/objective/missionobj = new
|
||||
missionobj.owner = newmob.mind
|
||||
@@ -511,7 +511,7 @@
|
||||
door.open()
|
||||
|
||||
//Assign antag status and the mission
|
||||
ticker.mode.traitors += ERTOperative.mind
|
||||
SSticker.mode.traitors += ERTOperative.mind
|
||||
ERTOperative.mind.special_role = "ERT"
|
||||
var/datum/objective/missionobj = new
|
||||
missionobj.owner = ERTOperative.mind
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
var/highlander = FALSE
|
||||
/client/proc/only_one() //Gives everyone kilts, berets, claymores, and pinpointers, with the objective to hijack the emergency shuttle.
|
||||
if(!ticker || !ticker.mode)
|
||||
if(!SSticker || !SSticker.mode)
|
||||
alert("The game hasn't started yet!")
|
||||
return
|
||||
highlander = TRUE
|
||||
@@ -26,7 +26,7 @@ var/highlander = FALSE
|
||||
addtimer(CALLBACK(src, .proc/only_one), 420)
|
||||
|
||||
/mob/living/carbon/human/proc/make_scottish()
|
||||
ticker.mode.traitors += mind
|
||||
SSticker.mode.traitors += mind
|
||||
mind.special_role = "highlander"
|
||||
dna.species.species_traits |= NOGUNS //nice try jackass
|
||||
|
||||
@@ -79,7 +79,7 @@ var/highlander = FALSE
|
||||
Activate it in your hand, and it will lead to the nearest target. Attack the nuclear authentication disk with it, and you will store it.</span>")
|
||||
|
||||
/proc/only_me()
|
||||
if(!ticker || !ticker.mode)
|
||||
if(!SSticker || !SSticker.mode)
|
||||
alert("The game hasn't started yet!")
|
||||
return
|
||||
|
||||
@@ -87,7 +87,7 @@ var/highlander = FALSE
|
||||
if(H.stat == 2 || !(H.client)) continue
|
||||
if(is_special_character(H)) continue
|
||||
|
||||
ticker.mode.traitors += H.mind
|
||||
SSticker.mode.traitors += H.mind
|
||||
H.mind.special_role = "[H.real_name] Prime"
|
||||
|
||||
var/datum/objective/hijackclone/hijack_objective = new /datum/objective/hijackclone
|
||||
@@ -98,7 +98,7 @@ var/highlander = FALSE
|
||||
H.mind.announce_objectives()
|
||||
|
||||
var/datum/gang/multiverse/G = new(src, "[H.real_name]")
|
||||
ticker.mode.gangs += G
|
||||
SSticker.mode.gangs += G
|
||||
G.bosses += H.mind
|
||||
G.add_gang_hud(H.mind)
|
||||
H.mind.gang_datum = G
|
||||
|
||||
@@ -48,8 +48,8 @@ var/sound/admin_sound
|
||||
if(!check_rights(R_SOUNDS))
|
||||
return
|
||||
|
||||
if(ticker)
|
||||
ticker.round_end_sound = fcopy_rsc(S)
|
||||
if(SSticker)
|
||||
SSticker.round_end_sound = fcopy_rsc(S)
|
||||
else
|
||||
return
|
||||
|
||||
|
||||
@@ -352,11 +352,11 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
switch(new_character.mind.special_role)
|
||||
if("traitor")
|
||||
SSjob.EquipRank(new_character, new_character.mind.assigned_role, 1)
|
||||
ticker.mode.equip_traitor(new_character)
|
||||
SSticker.mode.equip_traitor(new_character)
|
||||
if("Wizard")
|
||||
new_character.loc = pick(wizardstart)
|
||||
//ticker.mode.learn_basic_spells(new_character)
|
||||
ticker.mode.equip_wizard(new_character)
|
||||
//SSticker.mode.learn_basic_spells(new_character)
|
||||
SSticker.mode.equip_wizard(new_character)
|
||||
if("Syndicate")
|
||||
var/obj/effect/landmark/synd_spawn = locate("landmark*Syndicate-Spawn")
|
||||
if(synd_spawn)
|
||||
@@ -379,11 +379,11 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
if("Cyborg")//More rigging to make em' work and check if they're traitor.
|
||||
new_character = new_character.Robotize()
|
||||
if(new_character.mind.special_role=="traitor")
|
||||
ticker.mode.add_law_zero(new_character)
|
||||
SSticker.mode.add_law_zero(new_character)
|
||||
if("AI")
|
||||
new_character = new_character.AIize()
|
||||
if(new_character.mind.special_role=="traitor")
|
||||
ticker.mode.add_law_zero(new_character)
|
||||
SSticker.mode.add_law_zero(new_character)
|
||||
else
|
||||
SSjob.EquipRank(new_character, new_character.mind.assigned_role, 1)//Or we simply equip them.
|
||||
|
||||
@@ -672,7 +672,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
|
||||
set name = "Make Everyone Random"
|
||||
set desc = "Make everyone have a random appearance. You can only use this before rounds!"
|
||||
|
||||
if(ticker && ticker.mode)
|
||||
if(SSticker && SSticker.mode)
|
||||
to_chat(usr, "Nope you can't do this, the game's already started. This only works before rounds!")
|
||||
return
|
||||
|
||||
@@ -940,7 +940,7 @@ var/list/datum/outfit/custom_outfits = list() //Admin created outfits
|
||||
if(istype(H, /datum/atom_hud/antag))
|
||||
(adding_hud) ? H.add_hud_to(usr) : H.remove_hud_from(usr)
|
||||
|
||||
for(var/datum/gang/G in ticker.mode.gangs)
|
||||
for(var/datum/gang/G in SSticker.mode.gangs)
|
||||
var/datum/atom_hud/antag/H = G.ganghud
|
||||
(adding_hud) ? H.add_hud_to(usr) : H.remove_hud_from(usr)
|
||||
|
||||
@@ -1041,14 +1041,14 @@ var/list/datum/outfit/custom_outfits = list() //Admin created outfits
|
||||
if(!input)
|
||||
return
|
||||
|
||||
if(!ticker)
|
||||
if(!SSticker)
|
||||
return
|
||||
|
||||
ticker.selected_tip = input
|
||||
SSticker.selected_tip = input
|
||||
|
||||
// If we've already tipped, then send it straight away.
|
||||
if(ticker.tipped)
|
||||
ticker.send_tip_of_the_round()
|
||||
if(SSticker.tipped)
|
||||
SSticker.send_tip_of_the_round()
|
||||
|
||||
|
||||
message_admins("[key_name_admin(usr)] sent a tip of the round.")
|
||||
@@ -1113,7 +1113,7 @@ var/list/datum/outfit/custom_outfits = list() //Admin created outfits
|
||||
|
||||
/datum/admins/proc/modify_goals()
|
||||
var/dat = ""
|
||||
for(var/datum/station_goal/S in ticker.mode.station_goals)
|
||||
for(var/datum/station_goal/S in SSticker.mode.station_goals)
|
||||
dat += "[S.name] - <a href='?src=\ref[S];announce=1'>Announce</a> | <a href='?src=\ref[S];remove=1'>Remove</a><br>"
|
||||
dat += "<br><a href='?src=\ref[src];add_station_goal=1'>Add New Goal</a>"
|
||||
usr << browse(dat, "window=goals;size=400x400")
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
set category = "Fun"
|
||||
set name = "Create AI Triumvirate"
|
||||
|
||||
if(ticker.current_state > GAME_STATE_PREGAME)
|
||||
if(SSticker.current_state > GAME_STATE_PREGAME)
|
||||
to_chat(usr, "This option is currently only usable during pregame. This may change at a later date.")
|
||||
return
|
||||
|
||||
@@ -10,11 +10,11 @@
|
||||
if(!job)
|
||||
to_chat(usr, "Unable to locate the AI job")
|
||||
return
|
||||
if(ticker.triai)
|
||||
ticker.triai = 0
|
||||
if(SSticker.triai)
|
||||
SSticker.triai = 0
|
||||
to_chat(usr, "Only one AI will be spawned at round start.")
|
||||
message_admins("<span class='adminnotice'>[key_name_admin(usr)] has toggled off triple AIs at round start.</span>")
|
||||
else
|
||||
ticker.triai = 1
|
||||
SSticker.triai = 1
|
||||
to_chat(usr, "There will be an AI Triumvirate at round start.")
|
||||
message_admins("<span class='adminnotice'>[key_name_admin(usr)] has toggled on triple AIs at round start.</span>")
|
||||
|
||||
@@ -144,14 +144,14 @@
|
||||
|
||||
/obj/item/device/assembly/flash/proc/terrible_conversion_proc(mob/M, mob/user)
|
||||
if(ishuman(M) && ishuman(user) && M.stat != DEAD)
|
||||
if(user.mind && (user.mind in ticker.mode.head_revolutionaries))
|
||||
if(user.mind && (user.mind in SSticker.mode.head_revolutionaries))
|
||||
if(M.client)
|
||||
if(M.stat == CONSCIOUS)
|
||||
M.mind_initialize() //give them a mind datum if they don't have one.
|
||||
var/resisted
|
||||
if(!M.isloyal())
|
||||
if(user.mind in ticker.mode.head_revolutionaries)
|
||||
if(ticker.mode.add_revolutionary(M.mind))
|
||||
if(user.mind in SSticker.mode.head_revolutionaries)
|
||||
if(SSticker.mode.add_revolutionary(M.mind))
|
||||
M.Stun(3)
|
||||
times_used -- //Flashes less likely to burn out for headrevs when used for conversion
|
||||
else
|
||||
|
||||
@@ -206,7 +206,7 @@
|
||||
toggle_all_ctf(user)
|
||||
return
|
||||
|
||||
if(ticker.current_state < GAME_STATE_PLAYING)
|
||||
if(SSticker.current_state < GAME_STATE_PLAYING)
|
||||
return
|
||||
if(user.ckey in team_members)
|
||||
if(user.ckey in recently_dead_ckeys)
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
anchored = 1
|
||||
|
||||
/obj/effect/mob_spawn/attack_ghost(mob/user)
|
||||
if(ticker.current_state != GAME_STATE_PLAYING || !loc)
|
||||
if(SSticker.current_state != GAME_STATE_PLAYING || !loc)
|
||||
return
|
||||
if(!uses)
|
||||
to_chat(user, "<span class='warning'>This spawner is out of charges!</span>")
|
||||
@@ -38,7 +38,7 @@
|
||||
|
||||
/obj/effect/mob_spawn/Initialize(mapload)
|
||||
..()
|
||||
if(instant || (roundstart && (mapload || (ticker && ticker.current_state > GAME_STATE_SETTING_UP))))
|
||||
if(instant || (roundstart && (mapload || (SSticker && SSticker.current_state > GAME_STATE_SETTING_UP))))
|
||||
create()
|
||||
else
|
||||
poi_list |= src
|
||||
|
||||
@@ -93,7 +93,7 @@
|
||||
var/datum/objective/O = new("Protect Wizard Academy from the intruders")
|
||||
wizmind.objectives += O
|
||||
wizmind.transfer_to(wizbody)
|
||||
ticker.mode.wizards |= wizmind
|
||||
SSticker.mode.wizards |= wizmind
|
||||
|
||||
wizmind.AddSpell(new /obj/effect/proc_holder/spell/targeted/ethereal_jaunt)
|
||||
wizmind.AddSpell(new /obj/effect/proc_holder/spell/targeted/projectile/magic_missile)
|
||||
@@ -133,7 +133,7 @@
|
||||
/obj/item/weapon/dice/d20/fate/diceroll(mob/user)
|
||||
..()
|
||||
if(!used)
|
||||
if(!ishuman(user) || !user.mind || (user.mind in ticker.mode.wizards))
|
||||
if(!ishuman(user) || !user.mind || (user.mind in SSticker.mode.wizards))
|
||||
to_chat(user, "<span class='warning'>You feel the magic of the dice is restricted to ordinary humans!</span>")
|
||||
return
|
||||
if(rigged)
|
||||
@@ -142,7 +142,7 @@
|
||||
effect(user,result)
|
||||
|
||||
/obj/item/weapon/dice/d20/fate/equipped(mob/user, slot)
|
||||
if(!ishuman(user) || !user.mind || (user.mind in ticker.mode.wizards))
|
||||
if(!ishuman(user) || !user.mind || (user.mind in SSticker.mode.wizards))
|
||||
to_chat(user, "<span class='warning'>You feel the magic of the dice is restricted to ordinary humans! You should leave it alone.</span>")
|
||||
user.drop_item()
|
||||
|
||||
@@ -303,6 +303,6 @@
|
||||
user.visible_message("[user] activates \the [src].","<span class='notice'>You activate \the [src].</span>")
|
||||
|
||||
/obj/structure/ladder/can_use(mob/user)
|
||||
if(user.mind in ticker.mode.wizards)
|
||||
if(user.mind in SSticker.mode.wizards)
|
||||
return 0
|
||||
return 1
|
||||
|
||||
@@ -64,7 +64,7 @@
|
||||
if("To Kill")
|
||||
to_chat(user, "<B>Your wish is granted, but at a terrible cost...</B>")
|
||||
to_chat(user, "The Wish Granter punishes you for your wickedness, claiming your soul and warping your body to match the darkness in your heart.")
|
||||
ticker.mode.traitors += user.mind
|
||||
SSticker.mode.traitors += user.mind
|
||||
user.mind.special_role = "traitor"
|
||||
var/datum/objective/hijack/hijack = new
|
||||
hijack.owner = user.mind
|
||||
|
||||
@@ -177,7 +177,7 @@
|
||||
|
||||
/datum/supply_pack/emergency/syndicate/fill(obj/structure/closet/crate/C)
|
||||
var/crate_value = 50
|
||||
var/list/uplink_items = get_uplink_items(ticker.mode)
|
||||
var/list/uplink_items = get_uplink_items(SSticker.mode)
|
||||
while(crate_value)
|
||||
var/category = pick(uplink_items)
|
||||
var/item = pick(uplink_items[category])
|
||||
|
||||
@@ -495,7 +495,7 @@ var/list/preferences_datums = list()
|
||||
|
||||
var/HTML = "<center>"
|
||||
if(SSjob.occupations.len <= 0)
|
||||
HTML += "The job ticker is not yet finished creating jobs, please try again later"
|
||||
HTML += "The job SSticker is not yet finished creating jobs, please try again later"
|
||||
HTML += "<center><a href='?_src_=prefs;preference=job;task=close'>Done</a></center><br>" // Easier to press up here.
|
||||
|
||||
else
|
||||
@@ -1182,7 +1182,7 @@ var/list/preferences_datums = list()
|
||||
if("lobby_music")
|
||||
toggles ^= SOUND_LOBBY
|
||||
if(toggles & SOUND_LOBBY)
|
||||
user << sound(ticker.login_music, repeat = 0, wait = 0, volume = 85, channel = 1)
|
||||
user << sound(SSticker.login_music, repeat = 0, wait = 0, volume = 85, channel = 1)
|
||||
else
|
||||
user.stopLobbySound()
|
||||
|
||||
|
||||
@@ -19,11 +19,11 @@
|
||||
return NOT_ENOUGH_PLAYERS
|
||||
//Oh god why we can't have static functions
|
||||
// I feel your pain, bro
|
||||
var/number = ticker.mode.abductor_teams + 1
|
||||
var/number = SSticker.mode.abductor_teams + 1
|
||||
|
||||
var/datum/game_mode/abduction/temp
|
||||
if(ticker.mode.config_tag == "abduction")
|
||||
temp = ticker.mode
|
||||
if(SSticker.mode.config_tag == "abduction")
|
||||
temp = SSticker.mode
|
||||
else
|
||||
temp = new
|
||||
|
||||
@@ -47,10 +47,10 @@
|
||||
temp.make_abductor_team(number,preset_scientist=scientist_mind,preset_agent=agent_mind)
|
||||
temp.post_setup_team(number)
|
||||
|
||||
ticker.mode.abductor_teams++
|
||||
SSticker.mode.abductor_teams++
|
||||
|
||||
if(ticker.mode.config_tag != "abduction")
|
||||
ticker.mode.abductors |= temp.abductors
|
||||
if(SSticker.mode.config_tag != "abduction")
|
||||
SSticker.mode.abductors |= temp.abductors
|
||||
|
||||
spawned_mobs += list(agent, scientist)
|
||||
return SUCCESSFUL_SPAWN
|
||||
|
||||
@@ -32,8 +32,8 @@
|
||||
|
||||
var/mob/living/carbon/human/devil = create_event_devil(spawn_loc)
|
||||
Mind.transfer_to(devil)
|
||||
ticker.mode.finalize_devil(Mind, FALSE)
|
||||
ticker.mode.add_devil_objectives(src, 2)
|
||||
SSticker.mode.finalize_devil(Mind, FALSE)
|
||||
SSticker.mode.add_devil_objectives(src, 2)
|
||||
Mind.announceDevilLaws()
|
||||
Mind.announce_objectives()
|
||||
|
||||
@@ -58,5 +58,5 @@
|
||||
var/datum/mind/Mind = new /datum/mind(key)
|
||||
Mind.assigned_role = "devil"
|
||||
Mind.special_role = "devil"
|
||||
ticker.mode.devils |= Mind
|
||||
SSticker.mode.devils |= Mind
|
||||
return Mind
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
var/list/events_list = list()
|
||||
|
||||
var/players_amt = get_active_player_count(alive_check = 1, afk_check = 1, human_check = 1)
|
||||
var/gamemode = ticker.mode.config_tag
|
||||
var/gamemode = SSticker.mode.config_tag
|
||||
|
||||
for(var/datum/round_event_control/E in SSevent.control)
|
||||
if(!E.canSpawnEvent(players_amt, gamemode))
|
||||
|
||||
@@ -45,12 +45,12 @@
|
||||
to_chat(L, "<span class='warning'><B>You didn't get a date! They're all having fun without you! you'll show them though...</B></span>")
|
||||
var/datum/objective/martyr/normiesgetout = new
|
||||
normiesgetout.owner = L.mind
|
||||
ticker.mode.traitors |= L.mind
|
||||
SSticker.mode.traitors |= L.mind
|
||||
L.mind.objectives += normiesgetout
|
||||
|
||||
/proc/forge_valentines_objective(mob/living/lover,mob/living/date)
|
||||
|
||||
ticker.mode.traitors |= lover.mind
|
||||
SSticker.mode.traitors |= lover.mind
|
||||
lover.mind.special_role = "valentine"
|
||||
|
||||
var/datum/objective/protect/protect_objective = new /datum/objective/protect
|
||||
|
||||
@@ -32,7 +32,7 @@
|
||||
var/datum/mind/Mind = new /datum/mind(selected.key)
|
||||
Mind.assigned_role = "Lone Operative"
|
||||
Mind.special_role = "Lone Operative"
|
||||
ticker.mode.traitors |= Mind
|
||||
SSticker.mode.traitors |= Mind
|
||||
Mind.active = 1
|
||||
|
||||
var/obj/machinery/nuclearbomb/selfdestruct/nuke = locate() in machines
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
for(var/mob/living/carbon/human/H in living_mob_list)
|
||||
if(ruins_spaceworthiness && (H.z != 1 || isspaceturf(H.loc) || isplasmaman(H)))
|
||||
continue //#savetheminers
|
||||
if(ruins_wizard_loadout && H.mind && ((H.mind in ticker.mode.wizards) || (H.mind in ticker.mode.apprentices)))
|
||||
if(ruins_wizard_loadout && H.mind && ((H.mind in SSticker.mode.wizards) || (H.mind in SSticker.mode.apprentices)))
|
||||
continue
|
||||
if(item_set == "catgirls2015") //Wizard code means never having to say you're sorry
|
||||
H.gender = FEMALE
|
||||
|
||||
@@ -38,11 +38,11 @@
|
||||
for(var/mob/living/carbon/human/H in mob_list)
|
||||
if(H.mind)
|
||||
var/datum/mind/M = H.mind
|
||||
if(M.assigned_role && !(M in ticker.mode.traitors))
|
||||
if(M.assigned_role && !(M in SSticker.mode.traitors))
|
||||
for(var/job in jobs_to_revolt)
|
||||
if(M.assigned_role == job)
|
||||
citizens += H
|
||||
ticker.mode.traitors += M
|
||||
SSticker.mode.traitors += M
|
||||
M.special_role = "separatist"
|
||||
H.log_message("<font color='red'>Was made into a separatist, long live [nation]!</font>", INDIVIDUAL_ATTACK_LOG)
|
||||
to_chat(H, "<B>You are a separatist! [nation] forever! Protect the soverignty of your newfound land with your comrades in arms!</B>")
|
||||
|
||||
@@ -8,4 +8,4 @@
|
||||
/datum/round_event/wizard/fake_explosion/start()
|
||||
for(var/mob/M in player_list)
|
||||
M << 'sound/machines/Alarm.ogg'
|
||||
addtimer(CALLBACK(ticker, /datum/controller/subsystem/ticker/.proc/station_explosion_cinematic, 1, "fake"), 100) //:o)
|
||||
addtimer(CALLBACK(SSticker, /datum/controller/subsystem/SSticker/.proc/station_explosion_cinematic, 1, "fake"), 100) //:o)
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user