This commit is contained in:
AffectedArc07
2019-04-30 16:47:47 +01:00
parent 3ce39ba6ea
commit ec790efeaa
145 changed files with 896 additions and 925 deletions
+6 -6
View File
@@ -8,12 +8,12 @@
#define TARGET_INVALID_EVENT 7
//gamemode istype helpers
#define GAMEMODE_IS_BLOB (ticker && istype(ticker.mode, /datum/game_mode/blob))
#define GAMEMODE_IS_CULT (ticker && istype(ticker.mode, /datum/game_mode/cult))
#define GAMEMODE_IS_HEIST (ticker && istype(ticker.mode, /datum/game_mode/heist))
#define GAMEMODE_IS_NUCLEAR (ticker && istype(ticker.mode, /datum/game_mode/nuclear))
#define GAMEMODE_IS_REVOLUTION (ticker && istype(ticker.mode, /datum/game_mode/revolution))
#define GAMEMODE_IS_WIZARD (ticker && istype(ticker.mode, /datum/game_mode/wizard))
#define GAMEMODE_IS_BLOB (SSticker && istype(SSticker.mode, /datum/game_mode/blob))
#define GAMEMODE_IS_CULT (SSticker && istype(SSticker.mode, /datum/game_mode/cult))
#define GAMEMODE_IS_HEIST (SSticker && istype(SSticker.mode, /datum/game_mode/heist))
#define GAMEMODE_IS_NUCLEAR (SSticker && istype(SSticker.mode, /datum/game_mode/nuclear))
#define GAMEMODE_IS_REVOLUTION (SSticker && istype(SSticker.mode, /datum/game_mode/revolution))
#define GAMEMODE_IS_WIZARD (SSticker && istype(SSticker.mode, /datum/game_mode/wizard))
//special roles
// Distinct from the ROLE_X defines because some antags have multiple special roles but only one ban type
+1 -1
View File
@@ -303,7 +303,7 @@
#define TRIGGER_GUARD_NORMAL 1
// Macro to get the current elapsed round time, rather than total world runtime
#define ROUND_TIME (round_start_time ? (world.time - round_start_time) : 0)
#define ROUND_TIME (SSticker.round_start_time ? (world.time - SSticker.round_start_time) : 0)
// Macro that returns true if it's too early in a round to freely ghost out
#define TOO_EARLY_TO_GHOST (config && (ROUND_TIME < (config.round_abandon_penalty_period)))
+1 -1
View File
@@ -150,7 +150,7 @@
// A logging proc that only outputs after setup is done, to
// help devs test initialization stuff that happens a lot
/proc/log_after_setup(var/message)
if(ticker && ticker.current_state > GAME_STATE_SETTING_UP)
if(SSticker && SSticker.current_state > GAME_STATE_SETTING_UP)
to_chat(world, "<span class='danger'>[message]</span>")
log_world(message)
+2 -2
View File
@@ -35,7 +35,7 @@
* If you want to display the canonical station "time" (aka the in-character time of the station) use station_time_timestamp
*/
/proc/classic_worldtime2text(time = world.time)
time = (round_start_time ? (time - round_start_time) : (time - world.time))
time = (SSticker.round_start_time ? (time - SSticker.round_start_time) : (time - world.time))
return "[round(time / 36000)+12]:[(time / 600 % 60) < 10 ? add_zero(time / 600 % 60, 1) : time / 600 % 60]"
//Returns the world time in english
@@ -59,7 +59,7 @@
- You can use this, for example, to do "This will expire at [station_time_at(world.time + 500)]" to display a "station time" expiration date
which is much more useful for a player)*/
/proc/station_time(time=world.time, display_only=FALSE)
return ((((time - round_start_time)) + GLOB.gametime_offset) % 864000) - (display_only ? GLOB.timezoneOffset : 0)
return ((((time - SSticker.round_start_time)) + GLOB.gametime_offset) % 864000) - (display_only ? GLOB.timezoneOffset : 0)
/proc/station_time_timestamp(format = "hh:mm:ss", time=world.time)
return time2text(station_time(time, TRUE), format)
-36
View File
@@ -1,36 +0,0 @@
var/global/datum/controller/process/ticker/tickerProcess
/datum/controller/process/ticker
var/lastTickerTimeDuration
var/lastTickerTime
/datum/controller/process/ticker/setup()
name = "ticker"
schedule_interval = 20 // every 2 seconds
lastTickerTime = world.timeofday
log_startup_progress("Time ticker starting up.")
if(!ticker)
ticker = new
spawn(0)
if(ticker)
ticker.pregame()
DECLARE_GLOBAL_CONTROLLER(ticker, tickerProcess)
/datum/controller/process/ticker/doWork()
var/currentTime = world.timeofday
if(currentTime < lastTickerTime) // check for midnight rollover
lastTickerTimeDuration = (currentTime - (lastTickerTime - TICKS_IN_DAY)) / TICKS_IN_SECOND
else
lastTickerTimeDuration = (currentTime - lastTickerTime) / TICKS_IN_SECOND
lastTickerTime = currentTime
ticker.process_decrepit()
/datum/controller/process/ticker/proc/getLastTickerTimeDuration()
return lastTickerTimeDuration
+1 -1
View File
@@ -787,7 +787,7 @@
config.sql_enabled = 0
log_config("WARNING: DB_CONFIG DEFINITION MISMATCH!")
spawn(60)
if(ticker.current_state == GAME_STATE_PREGAME)
if(SSticker.current_state == GAME_STATE_PREGAME)
going = 0
spawn(600)
to_chat(world, "<span class='alert'>DB_CONFIG MISMATCH, ROUND START DELAYED. <BR>Please check database version for recent upstream changes!</span>")
+2 -2
View File
@@ -194,8 +194,8 @@ GLOBAL_REAL(Master, /datum/controller/master) = new
to_chat(world, "<span class='boldannounce'>[msg]</span>")
log_world(msg)
if(config.developer_express_start & ticker.current_state == GAME_STATE_PREGAME)
ticker.current_state = GAME_STATE_SETTING_UP
if(config.developer_express_start & SSticker.current_state == GAME_STATE_PREGAME)
SSticker.current_state = GAME_STATE_SETTING_UP
if(!current_runlevel)
SetRunLevel(1)
+2 -2
View File
@@ -270,9 +270,9 @@ SUBSYSTEM_DEF(jobs)
SetupOccupations()
//Holder for Triumvirate is stored in the ticker, this just processes it
if(ticker)
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
+1 -1
View File
@@ -20,7 +20,7 @@ SUBSYSTEM_DEF(nightshift)
return ..()
/datum/controller/subsystem/nightshift/fire(resumed = FALSE)
if(world.time - round_start_time < nightshift_first_check)
if(world.time - SSticker.round_start_time < nightshift_first_check)
return
check_nightshift()
+3 -3
View File
@@ -106,8 +106,8 @@ SUBSYSTEM_DEF(shuttle)
return
emergency = backup_shuttle
if(world.time - round_start_time < config.shuttle_refuel_delay)
to_chat(user, "The emergency shuttle is refueling. Please wait another [abs(round(((world.time - round_start_time) - config.shuttle_refuel_delay)/600))] minutes before trying again.")
if(world.time - SSticker.round_start_time < config.shuttle_refuel_delay)
to_chat(user, "The emergency shuttle is refueling. Please wait another [abs(round(((world.time - SSticker.round_start_time) - config.shuttle_refuel_delay)/600))] minutes before trying again.")
return
switch(emergency.mode)
@@ -169,7 +169,7 @@ SUBSYSTEM_DEF(shuttle)
return
if(!emergency.canRecall)
return
if(ticker.mode.name == "meteor")
if(SSticker.mode.name == "meteor")
return
if(seclevel2num(get_security_level()) >= SEC_LEVEL_RED)
if(emergency.timeLeft(1) < emergencyCallTime * 0.25)
@@ -1,55 +1,64 @@
var/global/datum/controller/gameticker/ticker
var/round_start_time = 0
SUBSYSTEM_DEF(ticker)
name = "Ticker"
init_order = INIT_ORDER_TICKER
/datum/controller/gameticker
priority = FIRE_PRIORITY_TICKER
flags = SS_KEEP_TIMING
runlevels = RUNLEVEL_LOBBY | RUNLEVEL_SETUP | RUNLEVEL_GAME
// Time ticker related vars
var/lastTickerTimeDuration
var/lastTickerTime
// Game ticker related vars
var/round_start_time = 0
var/const/restart_timeout = 600
var/current_state = GAME_STATE_PREGAME
var/force_ending = 0
var/hide_mode = 0 // leave here at 0 ! setup() will take care of it when needed for Secret mode -walter0o
var/datum/game_mode/mode = null
var/event_time = null
var/event = 0
var/login_music // music played in pregame lobby
var/list/datum/mind/minds = list()//The people in the game. Used for objective tracking.
var/Bible_icon_state // icon_state the chaplain has chosen for his bible
var/Bible_item_state // item_state the chaplain has chosen for his bible
var/Bible_name // name of the bible
var/Bible_deity_name
var/datum/cult_info/cultdat = null //here instead of cult for adminbus purposes
var/random_players = 0 // if set to nonzero, ALL players who latejoin or declare-ready join will have random appearances/genders
var/list/syndicate_coalition = list() // list of traitor-compatible factions
var/list/factions = list() // list of all factions
var/list/availablefactions = list() // list of factions with openings
var/tipped = FALSE //Did we broadcast the tip of the day yet?
var/selected_tip // What will be the tip of the day?
var/pregame_timeleft = 0
var/pregame_timeleft = "Initializing"
var/delay_end = 0 //if set to nonzero, the round will not restart on it's own
var/triai = 0//Global holder for Triumvirate
var/initialtpass = 0 //holder for inital autotransfer vote timer
var/obj/screen/cinematic = null //used for station explosion cinematic
var/round_end_announced = 0 // Spam Prevention. Announce round end only once.\
/datum/controller/gameticker/proc/pregame()
/datum/controller/subsystem/ticker/Initialize()
lastTickerTime = world.timeofday
login_music = pick(\
'sound/music/thunderdome.ogg',\
'sound/music/space.ogg',\
'sound/music/title1.ogg',\
'sound/music/title2.ogg',\
'sound/music/title3.ogg',)
do
..()
/datum/controller/subsystem/ticker/fire()
// This code is EXTREMELY important shit for checking midnight time rollover. Dont fuck with it
var/currentTime = world.timeofday
if(currentTime < lastTickerTime)
lastTickerTimeDuration = (currentTime - (lastTickerTime - TICKS_IN_DAY)) / TICKS_IN_SECOND
else
lastTickerTimeDuration = (currentTime - lastTickerTime) / TICKS_IN_SECOND
lastTickerTime = currentTime
// Startup loop
if(current_state == GAME_STATE_PREGAME)
pregame_timeleft = config.pregame_timestart
to_chat(world, "<B><FONT color='blue'>Welcome to the pre-game lobby!</FONT></B>")
to_chat(world, "Please, setup your character and select ready. Game will start in [pregame_timeleft] seconds")
@@ -63,11 +72,43 @@ var/round_start_time = 0
tipped = TRUE
if(pregame_timeleft <= 0)
current_state = GAME_STATE_SETTING_UP
Master.SetRunLevel(RUNLEVEL_SETUP)
while(!setup())
if(setup()) // Try to start the round
current_state = GAME_STATE_SETTING_UP
Master.SetRunLevel(RUNLEVEL_SETUP)
else // It didnt work, lets loop again
break
// This makes sure the game keeps going
if(current_state != GAME_STATE_PLAYING)
return 0
/datum/controller/gameticker/proc/votetimer()
mode.process()
mode.process_job_tasks()
var/game_finished = SSshuttle.emergency.mode >= SHUTTLE_ENDGAME || mode.station_was_nuked
if(config.continuous_rounds)
mode.check_finished() // some modes contain var-changing code in here, so call even if we don't uses result
else
game_finished |= mode.check_finished()
if((!mode.explosion_in_progress && game_finished) || force_ending)
current_state = GAME_STATE_FINISHED
Master.SetRunLevel(RUNLEVEL_POSTGAME)
auto_toggle_ooc(1) // Turn it on
spawn
declare_completion()
spawn(50)
callHook("roundend")
if(mode.station_was_nuked)
world.Reboot("Station destroyed by Nuclear Device.", "end_proper", "nuke")
else
world.Reboot("Round ended.", "end_proper", "proper completion")
return 1
/datum/controller/subsystem/ticker/proc/votetimer()
var/timerbuffer = 0
if(initialtpass == 0)
timerbuffer = config.vote_autotransfer_initial
@@ -78,7 +119,8 @@ var/round_start_time = 0
initialtpass = 1
votetimer()
/datum/controller/gameticker/proc/setup()
/datum/controller/subsystem/ticker/proc/setup()
cultdat = setupcult()
//Create and announce mode
if(master_mode=="secret")
@@ -252,9 +294,7 @@ var/round_start_time = 0
return 1
//Plus it provides an easy way to make cinematics for other events. Just use this as a template :)
//Plus it provides an easy way to make cinematics for other events. Just use this as a template
/datum/controller/gameticker/proc/station_explosion_cinematic(station_missed = 0, override = null)
/datum/controller/subsystem/ticker/proc/station_explosion_cinematic(station_missed = 0, override = null)
if(cinematic)
return //already a cinematic in progress!
@@ -350,7 +390,7 @@ var/round_start_time = 0
/datum/controller/gameticker/proc/create_characters()
/datum/controller/subsystem/ticker/proc/create_characters()
for(var/mob/new_player/player in GLOB.player_list)
if(player.ready && player.mind)
if(player.mind.assigned_role == "AI")
@@ -364,13 +404,13 @@ var/round_start_time = 0
qdel(player)
/datum/controller/gameticker/proc/collect_minds()
/datum/controller/subsystem/ticker/proc/collect_minds()
for(var/mob/living/player in GLOB.player_list)
if(player.mind)
ticker.minds += player.mind
SSticker.minds += player.mind
/datum/controller/gameticker/proc/equip_characters()
/datum/controller/subsystem/ticker/proc/equip_characters()
var/captainless=1
for(var/mob/living/carbon/human/player in GLOB.player_list)
if(player && player.mind && player.mind.assigned_role)
@@ -385,7 +425,7 @@ var/round_start_time = 0
if(!istype(M,/mob/new_player))
to_chat(M, "Captainship not forced on anyone.")
/datum/controller/gameticker/proc/send_tip_of_the_round()
/datum/controller/subsystem/ticker/proc/send_tip_of_the_round()
var/m
if(selected_tip)
m = selected_tip
@@ -400,45 +440,13 @@ var/round_start_time = 0
if(m)
to_chat(world, "<span class='purple'><b>Tip of the round: </b>[html_encode(m)]</span>")
/datum/controller/gameticker/proc/process_decrepit()
if(current_state != GAME_STATE_PLAYING)
return 0
mode.process()
mode.process_job_tasks()
//emergency_shuttle.process() DONE THROUGH PROCESS SCHEDULER
var/game_finished = SSshuttle.emergency.mode >= SHUTTLE_ENDGAME || mode.station_was_nuked
if(config.continuous_rounds)
mode.check_finished() // some modes contain var-changing code in here, so call even if we don't uses result
else
game_finished |= mode.check_finished()
if((!mode.explosion_in_progress && game_finished) || force_ending)
current_state = GAME_STATE_FINISHED
Master.SetRunLevel(RUNLEVEL_POSTGAME)
auto_toggle_ooc(1) // Turn it on
spawn
declare_completion()
spawn(50)
callHook("roundend")
if(mode.station_was_nuked)
world.Reboot("Station destroyed by Nuclear Device.", "end_proper", "nuke")
else
world.Reboot("Round ended.", "end_proper", "proper completion")
return 1
/datum/controller/gameticker/proc/getfactionbyname(var/name)
/datum/controller/subsystem/ticker/proc/getfactionbyname(var/name)
for(var/datum/faction/F in factions)
if(F.name == name)
return F
/datum/controller/gameticker/proc/declare_completion()
/datum/controller/subsystem/ticker/proc/declare_completion()
nologevent = 1 //end of round murder and shenanigans are legal; there's no need to jam up attack logs past this point.
//Round statistics report
var/datum/station_state/end_state = new /datum/station_state()
@@ -483,9 +491,9 @@ var/round_start_time = 0
if(dronecount)
to_chat(world, "<b>There [dronecount>1 ? "were" : "was"] [dronecount] industrious maintenance [dronecount>1 ? "drones" : "drone"] this round.")
if(ticker.mode.eventmiscs.len)
if(mode.eventmiscs.len)
var/emobtext = ""
for(var/datum/mind/eventmind in ticker.mode.eventmiscs)
for(var/datum/mind/eventmind in mode.eventmiscs)
emobtext += printeventplayer(eventmind)
emobtext += "<br>"
emobtext += printobjectives(eventmind)
@@ -516,5 +524,6 @@ var/round_start_time = 0
return 1
/datum/controller/gameticker/proc/HasRoundStarted()
/datum/controller/subsystem/ticker/proc/HasRoundStarted()
return current_state >= GAME_STATE_PLAYING
+7 -7
View File
@@ -19,7 +19,7 @@ SUBSYSTEM_DEF(vote)
/datum/controller/subsystem/vote/fire()
if(mode)
// No more change mode votes after the game has started.
if(mode == "gamemode" && ticker.current_state >= GAME_STATE_SETTING_UP)
if(mode == "gamemode" && SSticker.current_state >= GAME_STATE_SETTING_UP)
to_chat(world, "<b>Voting aborted due to game start.</b>")
reset()
return
@@ -125,7 +125,7 @@ SUBSYSTEM_DEF(vote)
var/text
if(winners.len > 0)
if(winners.len > 1)
if(mode != "gamemode" || ticker.hide_mode == 0) // Here we are making sure we don't announce potential game modes
if(mode != "gamemode" || SSticker.hide_mode == 0) // Here we are making sure we don't announce potential game modes
text = "<b>Vote Tied Between:</b>\n"
for(var/option in winners)
text += "\t[option]\n"
@@ -134,7 +134,7 @@ SUBSYSTEM_DEF(vote)
for(var/key in current_votes)
if(choices[current_votes[key]] == .)
round_voters += key // Keep track of who voted for the winning round.
if(mode == "gamemode" && (. == "extended" || ticker.hide_mode == 0)) // Announce Extended gamemode, but not other gamemodes
if(mode == "gamemode" && (. == "extended" || SSticker.hide_mode == 0)) // Announce Extended gamemode, but not other gamemodes
text += "<b>Vote Result: [.] ([choices[.]] vote\s)</b>"
else
if(mode == "custom")
@@ -166,7 +166,7 @@ SUBSYSTEM_DEF(vote)
if("gamemode")
if(master_mode != .)
world.save_mode(.)
if(ticker && ticker.mode)
if(SSticker && SSticker.mode)
restart = 1
else
master_mode = .
@@ -208,17 +208,17 @@ SUBSYSTEM_DEF(vote)
if("restart")
choices.Add("Restart Round","Continue Playing")
if("gamemode")
if(ticker.current_state >= 2)
if(SSticker.current_state >= 2)
return 0
choices.Add(config.votable_modes)
if("crew_transfer")
if(check_rights(R_ADMIN|R_MOD))
if(ticker.current_state <= 2)
if(SSticker.current_state <= 2)
return 0
question = "End the shift?"
choices.Add("Initiate Crew Transfer", "Continue The Round")
else
if(ticker.current_state <= 2)
if(SSticker.current_state <= 2)
return 0
question = "End the shift?"
choices.Add("Initiate Crew Transfer", "Continue The Round")
+1 -1
View File
@@ -36,7 +36,7 @@
debug_variables(Master)
feedback_add_details("admin_verb","Dsmc")
if("Ticker")
debug_variables(ticker)
debug_variables(SSticker)
feedback_add_details("admin_verb","DTicker")
if("Air")
debug_variables(SSair)
+1 -1
View File
@@ -11,7 +11,7 @@ var/global/datum/repository/air_alarm/air_alarm_repository = new()
if(!refresh)
return cache_entry.data
if(ticker && ticker.current_state < GAME_STATE_PLAYING && istype(passed_alarm)) // Generating the list for the first time as the game hasn't started - no need to run through the machines list everything every time
if(SSticker && SSticker.current_state < GAME_STATE_PLAYING && istype(passed_alarm)) // Generating the list for the first time as the game hasn't started - no need to run through the machines list everything every time
alarms = cache_entry.data // Don't deleate the list
if(is_station_contact(passed_alarm.z)) // Still need sanity checks
alarms[++alarms.len] = passed_alarm.get_nano_data_console()
+2 -2
View File
@@ -93,8 +93,8 @@ var/datum/atom_hud/huds = list( \
// gang_huds += G.ganghud
var/serv_huds = list()//mindslaves and/or vampire thralls
if(ticker.mode)
for(var/datum/mindslaves/serv in (ticker.mode.vampires | ticker.mode.traitors))
if(SSticker.mode)
for(var/datum/mindslaves/serv in (SSticker.mode.vampires | SSticker.mode.traitors))
serv_huds += serv.thrallhud
+205 -205
View File
@@ -84,7 +84,7 @@
soulOwner = src
/datum/mind/Destroy()
ticker.minds -= src
SSticker.minds -= src
if(islist(antag_datums))
for(var/i in antag_datums)
var/datum/antagonist/antag_datum = i
@@ -163,7 +163,7 @@
/datum/mind/proc/_memory_edit_header(gamemode, list/alt)
. = gamemode
if(ticker.mode.config_tag == gamemode || (LAZYLEN(alt) && (ticker.mode.config_tag in alt)))
if(SSticker.mode.config_tag == gamemode || (LAZYLEN(alt) && (SSticker.mode.config_tag in alt)))
. = uppertext(.)
. = "<i><b>[.]</b></i>: "
@@ -183,7 +183,7 @@
. = _memory_edit_header("revolution")
if(ismindshielded(H))
. += "<b>NO</b>|headrev|rev"
else if(src in ticker.mode.head_revolutionaries)
else if(src in SSticker.mode.head_revolutionaries)
. += "<a href='?src=[UID()];revolution=clear'>no</a>|<b><font color='red'>HEADREV</font></b>|<a href='?src=[UID()];revolution=rev'>rev</a>"
. += "<br>Flash: <a href='?src=[UID()];revolution=flash'>give</a>"
@@ -200,7 +200,7 @@
. += " <a href='?src=[UID()];revolution=reequip'>Reequip</a> (gives traitor uplink)."
if(objectives.len==0)
. += "<br>Objectives are empty! <a href='?src=[UID()];revolution=autoobjectives'>Set to kill all heads</a>."
else if(src in ticker.mode.revolutionaries)
else if(src in SSticker.mode.revolutionaries)
. += "<a href='?src=[UID()];revolution=clear'>no</a>|<a href='?src=[UID()];revolution=headrev'>headrev</a>|<b><font color='red'>REV</font></b>"
else
. += "<b>NO</b>|<a href='?src=[UID()];revolution=headrev'>headrev</a>|<a href='?src=[UID()];revolution=rev'>rev</a>"
@@ -211,7 +211,7 @@
. = _memory_edit_header("cult")
if(ismindshielded(H))
. += "<B>NO</B>|cultist"
else if(src in ticker.mode.cult)
else if(src in SSticker.mode.cult)
. += "<a href='?src=[UID()];cult=clear'>no</a>|<b><font color='red'>CULTIST</font></b>"
. += "<br>Give <a href='?src=[UID()];cult=tome'>tome</a>|<a href='?src=[UID()];cult=equip'>equip</a>."
else
@@ -221,7 +221,7 @@
/datum/mind/proc/memory_edit_wizard(mob/living/carbon/human/H)
. = _memory_edit_header("wizard")
if(src in ticker.mode.wizards)
if(src in SSticker.mode.wizards)
. += "<b><font color='red'>WIZARD</font></b>|<a href='?src=[UID()];wizard=clear'>no</a>"
. += "<br><a href='?src=[UID()];wizard=lair'>To lair</a>, <a href='?src=[UID()];common=undress'>undress</a>, <a href='?src=[UID()];wizard=dressup'>dress up</a>, <a href='?src=[UID()];wizard=name'>let choose name</a>."
if(objectives.len==0)
@@ -233,7 +233,7 @@
/datum/mind/proc/memory_edit_changeling(mob/living/carbon/human/H)
. = _memory_edit_header("changeling", list("traitorchan"))
if(src in ticker.mode.changelings)
if(src in SSticker.mode.changelings)
. += "<b><font color='red'>CHANGELING</font></b>|<a href='?src=[UID()];changeling=clear'>no</a>"
if(objectives.len==0)
. += "<br>Objectives are empty! <a href='?src=[UID()];changeling=autoobjectives'>Randomize!</a>"
@@ -246,7 +246,7 @@
/datum/mind/proc/memory_edit_vampire(mob/living/carbon/human/H)
. = _memory_edit_header("vampire", list("traitorvamp"))
if(src in ticker.mode.vampires)
if(src in SSticker.mode.vampires)
. += "<b><font color='red'>VAMPIRE</font></b>|<a href='?src=[UID()];vampire=clear'>no</a>"
if(objectives.len==0)
. += "<br>Objectives are empty! <a href='?src=[UID()];vampire=autoobjectives'>Randomize!</a>"
@@ -256,14 +256,14 @@
. += _memory_edit_role_enabled(ROLE_VAMPIRE)
/** Enthralled ***/
. += "<br><b><i>enthralled</i></b>: "
if(src in ticker.mode.vampire_enthralled)
if(src in SSticker.mode.vampire_enthralled)
. += "<b><font color='red'>THRALL</font></b>|<a href='?src=[UID()];vampthrall=clear'>no</a>"
else
. += "thrall|<b>NO</b>"
/datum/mind/proc/memory_edit_nuclear(mob/living/carbon/human/H)
. = _memory_edit_header("nuclear")
if(src in ticker.mode.syndicates)
if(src in SSticker.mode.syndicates)
. += "<b><font color='red'>OPERATIVE</b></font>|<a href='?src=[UID()];nuclear=clear'>no</a>"
. += "<br><a href='?src=[UID()];nuclear=lair'>To shuttle</a>, <a href='?src=[UID()];common=undress'>undress</a>, <a href='?src=[UID()];nuclear=dressup'>dress up</a>."
var/code
@@ -280,9 +280,9 @@
/datum/mind/proc/memory_edit_shadowling(mob/living/carbon/human/H)
. = _memory_edit_header("shadowling")
if(src in ticker.mode.shadows)
if(src in SSticker.mode.shadows)
. += "<b><font color='red'>SHADOWLING</font></b>|thrall|<a href='?src=[UID()];shadowling=clear'>no</a>"
else if(src in ticker.mode.shadowling_thralls)
else if(src in SSticker.mode.shadowling_thralls)
. += "Shadowling|<b><font color='red'>THRALL</font></b>|<a href='?src=[UID()];shadowling=clear'>no</a>"
else
. += "<a href='?src=[UID()];shadowling=shadowling'>shadowling</a>|<a href='?src=[UID()];shadowling=thrall'>thrall</a>|<b>NO</b>"
@@ -291,7 +291,7 @@
/datum/mind/proc/memory_edit_abductor(mob/living/carbon/human/H)
. = _memory_edit_header("abductor")
if(src in ticker.mode.abductors)
if(src in SSticker.mode.abductors)
. += "<b><font color='red'>ABDUCTOR</font></b>|<a href='?src=[UID()];abductor=clear'>no</a>"
. += "|<a href='?src=[UID()];common=undress'>undress</a>|<a href='?src=[UID()];abductor=equip'>equip</a>"
else
@@ -301,14 +301,14 @@
/datum/mind/proc/memory_edit_devil(mob/living/H)
. = _memory_edit_header("devil", list("devilagents"))
if(src in ticker.mode.devils)
if(src in SSticker.mode.devils)
if(!devilinfo)
. += "<b>No devilinfo found! Yell at a coder!</b>"
else if(!devilinfo.ascendable)
. += "<b>DEVIL</b>|<a href='?src=[UID()];devil=ascendable_devil'>Ascendable Devil</a>|sintouched|<a href='?src=[UID()];devil=clear'>no</a>"
else
. += "<a href='?src=[UID()];devil=devil'>DEVIL</a>|<b>ASCENDABLE DEVIL</b>|sintouched|<a href='?src=[UID()];devil=clear'>no</a>"
else if(src in ticker.mode.sintouched)
else if(src in SSticker.mode.sintouched)
. += "devil|Ascendable Devil|<b>SINTOUCHED</b>|<a href='?src=[UID()];devil=clear'>no</a>"
else
. += "<a href='?src=[UID()];devil=devil'>devil</a>|<a href='?src=[UID()];devil=ascendable_devil'>Ascendable Devil</a>|<a href='?src=[UID()];devil=sintouched'>sintouched</a>|<b>NO</b>"
@@ -317,14 +317,14 @@
/datum/mind/proc/memory_edit_eventmisc(mob/living/H)
. = _memory_edit_header("event", list())
if(src in ticker.mode.eventmiscs)
if(src in SSticker.mode.eventmiscs)
. += "<b>YES</b>|<a href='?src=[UID()];eventmisc=clear'>no</a>"
else
. += "<a href='?src=[UID()];eventmisc=eventmisc'>Event Role</a>|<b>NO</b>"
/datum/mind/proc/memory_edit_traitor()
. = _memory_edit_header("traitor", list("traitorchan", "traitorvamp"))
if(src in ticker.mode.traitors)
if(src in SSticker.mode.traitors)
. += "<b><font color='red'>TRAITOR</font></b>|<a href='?src=[UID()];traitor=clear'>no</a>"
if(objectives.len==0)
. += "<br>Objectives are empty! <a href='?src=[UID()];traitor=autoobjectives'>Randomize</a>!"
@@ -348,9 +348,9 @@
/datum/mind/proc/memory_edit_uplink()
. = ""
if(ishuman(current) && ((src in ticker.mode.head_revolutionaries) || \
(src in ticker.mode.traitors) || \
(src in ticker.mode.syndicates)))
if(ishuman(current) && ((src in SSticker.mode.head_revolutionaries) || \
(src in SSticker.mode.traitors) || \
(src in SSticker.mode.syndicates)))
. = "Uplink: <a href='?src=[UID()];common=uplink'>give</a>"
var/obj/item/uplink/hidden/suplink = find_syndicate_uplink()
var/crystals
@@ -366,7 +366,7 @@
// ^ whoever left this comment is literally a grammar nazi. stalin better. in russia grammar correct you.
/datum/mind/proc/edit_memory()
if(!ticker || !ticker.mode)
if(!SSticker || !SSticker.mode)
alert("Not before round-start!", "Alert")
return
@@ -419,7 +419,7 @@
This prioritizes antags relevant to the current round to make them appear at the top of the panel.
Traitorchan and traitorvamp are snowflaked in because they have multiple sections.
*/
if(ticker.mode.config_tag == "traitorchan")
if(SSticker.mode.config_tag == "traitorchan")
if(sections["traitor"])
out += sections["traitor"] + "<br>"
if(sections["changeling"])
@@ -427,7 +427,7 @@
sections -= "traitor"
sections -= "changeling"
// Elif technically unnecessary but it makes the following else look better
else if(ticker.mode.config_tag == "traitorvamp")
else if(SSticker.mode.config_tag == "traitorvamp")
if(sections["traitor"])
out += sections["traitor"] + "<br>"
if(sections["vampire"])
@@ -435,9 +435,9 @@
sections -= "traitor"
sections -= "vampire"
else
if(sections[ticker.mode.config_tag])
out += sections[ticker.mode.config_tag] + "<br>"
sections -= ticker.mode.config_tag
if(sections[SSticker.mode.config_tag])
out += sections[SSticker.mode.config_tag] + "<br>"
sections -= SSticker.mode.config_tag
for(var/i in sections)
if(sections[i])
@@ -512,7 +512,7 @@
var/objective_type = "[objective_type_capital][objective_type_text]"//Add them together into a text string.
var/list/possible_targets = list()
for(var/datum/mind/possible_target in ticker.minds)
for(var/datum/mind/possible_target in SSticker.minds)
if((possible_target != src) && istype(possible_target.current, /mob/living/carbon/human))
possible_targets += possible_target.current
@@ -612,7 +612,7 @@
if("identity theft")
var/list/possible_targets = list()
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
possible_targets = sortAtom(possible_targets)
@@ -687,19 +687,19 @@
message_admins("[key_name_admin(usr)] has given [key_name_admin(current)] a mindshield implant")
to_chat(H, "<span class='warning'><Font size =3><B>You somehow have become the recepient of a mindshield transplant, and it just activated!</B></FONT></span>")
if(src in ticker.mode.revolutionaries)
if(src in SSticker.mode.revolutionaries)
special_role = null
ticker.mode.revolutionaries -= src
SSticker.mode.revolutionaries -= src
to_chat(src, "<span class='warning'><Font size = 3><B>The nanobots in the mindshield implant remove all thoughts about being a revolutionary. Get back to work!</B></Font></span>")
if(src in ticker.mode.head_revolutionaries)
if(src in SSticker.mode.head_revolutionaries)
special_role = null
ticker.mode.head_revolutionaries -=src
SSticker.mode.head_revolutionaries -=src
to_chat(src, "<span class='warning'><Font size = 3><B>The nanobots in the mindshield implant remove all thoughts about being a revolutionary. Get back to work!</B></Font></span>")
if(src in ticker.mode.cult)
ticker.mode.cult -= src
ticker.mode.update_cult_icons_removed(src)
if(src in SSticker.mode.cult)
SSticker.mode.cult -= src
SSticker.mode.update_cult_icons_removed(src)
special_role = null
var/datum/game_mode/cult/cult = ticker.mode
var/datum/game_mode/cult/cult = SSticker.mode
if(istype(cult))
cult.memorize_cult_objectives(src)
to_chat(current, "<span class='warning'><FONT size = 3><B>The nanobots in the mindshield implant remove all thoughts about being in a cult. Have a productive day!</B></FONT></span>")
@@ -709,46 +709,46 @@
switch(href_list["revolution"])
if("clear")
if(src in ticker.mode.revolutionaries)
ticker.mode.revolutionaries -= src
if(src in SSticker.mode.revolutionaries)
SSticker.mode.revolutionaries -= src
to_chat(current, "<span class='warning'><FONT size = 3><B>You have been brainwashed! You are no longer a revolutionary!</B></FONT></span>")
ticker.mode.update_rev_icons_removed(src)
SSticker.mode.update_rev_icons_removed(src)
special_role = null
if(src in ticker.mode.head_revolutionaries)
ticker.mode.head_revolutionaries -= src
if(src in SSticker.mode.head_revolutionaries)
SSticker.mode.head_revolutionaries -= src
to_chat(current, "<span class='warning'><FONT size = 3><B>You have been brainwashed! You are no longer a head revolutionary!</B></FONT></span>")
ticker.mode.update_rev_icons_removed(src)
SSticker.mode.update_rev_icons_removed(src)
special_role = null
log_admin("[key_name(usr)] has de-rev'd [key_name(current)]")
message_admins("[key_name_admin(usr)] has de-rev'd [key_name_admin(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='warning'><FONT size = 3><B>Revolution has been disappointed of your leadership traits! You are a regular revolutionary now!</B></FONT></span>")
else if(!(src in ticker.mode.revolutionaries))
else if(!(src in SSticker.mode.revolutionaries))
to_chat(current, "<span class='warning'><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 = SPECIAL_ROLE_REV
log_admin("[key_name(usr)] has rev'd [key_name(current)]")
message_admins("[key_name_admin(usr)] has rev'd [key_name_admin(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 proven your devotion to revolution! You 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='notice'>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
@@ -756,21 +756,21 @@
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 = SPECIAL_ROLE_HEAD_REV
log_admin("[key_name(usr)] has head-rev'd [key_name(current)]")
message_admins("[key_name_admin(usr)] has head-rev'd [key_name_admin(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)
log_admin("[key_name(usr)] has automatically forged revolutionary objectives for [key_name(current)]")
message_admins("[key_name_admin(usr)] has automatically forged revolutionary objectives for [key_name_admin(current)]")
if("flash")
if(!ticker.mode.equip_revolutionary(current))
if(!SSticker.mode.equip_revolutionary(current))
to_chat(usr, "<span class='warning'>Spawning flash failed!</span>")
log_admin("[key_name(usr)] has given [key_name(current)] a flash")
message_admins("[key_name_admin(usr)] has given [key_name_admin(current)] a flash")
@@ -800,8 +800,8 @@
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)
if(fail)
to_chat(usr, "<span class='warning'>Reequipping revolutionary goes wrong!</span>")
return
@@ -811,17 +811,17 @@
else if(href_list["cult"])
switch(href_list["cult"])
if("clear")
if(src in ticker.mode.cult)
ticker.mode.remove_cultist(src)
if(src in SSticker.mode.cult)
SSticker.mode.remove_cultist(src)
special_role = null
log_admin("[key_name(usr)] has de-culted [key_name(current)]")
message_admins("[key_name_admin(usr)] has de-culted [key_name_admin(current)]")
if("cultist")
if(!(src in ticker.mode.cult))
ticker.mode.add_cultist(src)
if(!(src in SSticker.mode.cult))
SSticker.mode.add_cultist(src)
special_role = SPECIAL_ROLE_CULTIST
to_chat(current, "<span class='cultitalic'>You catch a glimpse of the Realm of [ticker.cultdat.entity_name], [ticker.cultdat.entity_title3]. You now see how flimsy the world is, you see that it should be open to the knowledge of [ticker.cultdat.entity_name].</span>")
to_chat(current, "<span class='cultitalic'>Assist your new compatriots in their dark dealings. Their goal is yours, and yours is theirs. You serve [ticker.cultdat.entity_title2] above all else. Bring It back.</span>")
to_chat(current, "<span class='cultitalic'>You catch a glimpse of the Realm of [SSticker.cultdat.entity_name], [SSticker.cultdat.entity_title3]. You now see how flimsy the world is, you see that it should be open to the knowledge of [SSticker.cultdat.entity_name].</span>")
to_chat(current, "<span class='cultitalic'>Assist your new compatriots in their dark dealings. Their goal is yours, and yours is theirs. You serve [SSticker.cultdat.entity_title2] above all else. Bring It back.</span>")
log_admin("[key_name(usr)] has culted [key_name(current)]")
message_admins("[key_name_admin(usr)] has culted [key_name_admin(current)]")
if("tome")
@@ -846,7 +846,7 @@
message_admins("[key_name_admin(usr)] has spawned a tome for [key_name_admin(current)]")
if("equip")
if(!ticker.mode.equip_cultist(current))
if(!SSticker.mode.equip_cultist(current))
to_chat(usr, "<span class='warning'>Spawning equipment failed!</span>")
log_admin("[key_name(usr)] has equipped [key_name(current)] as a cultist")
message_admins("[key_name_admin(usr)] has equipped [key_name_admin(current)] as a cultist")
@@ -855,21 +855,21 @@
switch(href_list["wizard"])
if("clear")
if(src in ticker.mode.wizards)
ticker.mode.wizards -= src
if(src in SSticker.mode.wizards)
SSticker.mode.wizards -= src
special_role = null
current.spellremove(current)
current.faction = list("Station")
ticker.mode.update_wiz_icons_removed(src)
SSticker.mode.update_wiz_icons_removed(src)
to_chat(current, "<span class='warning'><FONT size = 3><B>You have been brainwashed! You are no longer a wizard!</B></FONT></span>")
log_admin("[key_name(usr)] has de-wizarded [key_name(current)]")
message_admins("[key_name_admin(usr)] has de-wizarded [key_name_admin(current)]")
if("wizard")
if(!(src in ticker.mode.wizards))
ticker.mode.wizards += src
if(!(src in SSticker.mode.wizards))
SSticker.mode.wizards += src
special_role = SPECIAL_ROLE_WIZARD
//ticker.mode.learn_basic_spells(current)
ticker.mode.update_wiz_icons_added(src)
SSticker.mode.update_wiz_icons_added(src)
SEND_SOUND(current, 'sound/ambience/antag/ragesmages.ogg')
to_chat(current, "<span class='danger'>You are a Space Wizard!</span>")
current.faction = list("wizard")
@@ -880,15 +880,15 @@
log_admin("[key_name(usr)] has moved [key_name(current)] to the wizard's lair")
message_admins("[key_name_admin(usr)] has moved [key_name_admin(current)] to the wizard's lair")
if("dressup")
ticker.mode.equip_wizard(current)
SSticker.mode.equip_wizard(current)
log_admin("[key_name(usr)] has equipped [key_name(current)] as a wizard")
message_admins("[key_name_admin(usr)] has equipped [key_name_admin(current)] as a wizard")
if("name")
ticker.mode.name_wizard(current)
SSticker.mode.name_wizard(current)
log_admin("[key_name(usr)] has allowed wizard [key_name(current)] to name themselves")
message_admins("[key_name_admin(usr)] has allowed wizard [key_name_admin(current)] to name themselves")
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 announce manually.</span>")
log_admin("[key_name(usr)] has automatically forged wizard objectives for [key_name(current)]")
message_admins("[key_name_admin(usr)] has automatically forged wizard objectives for [key_name_admin(current)]")
@@ -897,20 +897,20 @@
else if(href_list["changeling"])
switch(href_list["changeling"])
if("clear")
if(src in ticker.mode.changelings)
ticker.mode.changelings -= src
if(src in SSticker.mode.changelings)
SSticker.mode.changelings -= src
special_role = null
current.remove_changeling_powers()
ticker.mode.update_change_icons_removed(src)
SSticker.mode.update_change_icons_removed(src)
if(changeling) qdel(changeling)
to_chat(current, "<FONT color='red' size = 3><B>You grow weak and lose your powers! You are no longer a changeling and are stuck in your current form!</B></FONT>")
log_admin("[key_name(usr)] has de-changelinged [key_name(current)]")
message_admins("[key_name_admin(usr)] has de-changelinged [key_name_admin(current)]")
if("changeling")
if(!(src in ticker.mode.changelings))
ticker.mode.changelings += src
ticker.mode.grant_changeling_powers(current)
ticker.mode.update_change_icons_added(src)
if(!(src in SSticker.mode.changelings))
SSticker.mode.changelings += src
SSticker.mode.grant_changeling_powers(current)
SSticker.mode.update_change_icons_added(src)
special_role = SPECIAL_ROLE_CHANGELING
SEND_SOUND(current, 'sound/ambience/antag/ling_aler.ogg')
to_chat(current, "<B><font color='red'>Your powers have awoken. A flash of memory returns to us... we are a changeling!</font></B>")
@@ -918,7 +918,7 @@
message_admins("[key_name_admin(usr)] has changelinged [key_name_admin(current)]")
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 announce manually.</span>")
log_admin("[key_name(usr)] has automatically forged objectives for [key_name(current)]")
message_admins("[key_name_admin(usr)] has automatically forged objectives for [key_name_admin(current)]")
@@ -937,22 +937,22 @@
else if(href_list["vampire"])
switch(href_list["vampire"])
if("clear")
if(src in ticker.mode.vampires)
ticker.mode.vampires -= src
if(src in SSticker.mode.vampires)
SSticker.mode.vampires -= src
special_role = null
if(vampire)
vampire.remove_vampire_powers()
qdel(vampire)
vampire = null
ticker.mode.update_vampire_icons_removed(src)
SSticker.mode.update_vampire_icons_removed(src)
to_chat(current, "<FONT color='red' size = 3><B>You grow weak and lose your powers! You are no longer a vampire and are stuck in your current form!</B></FONT>")
log_admin("[key_name(usr)] has de-vampired [key_name(current)]")
message_admins("[key_name_admin(usr)] has de-vampired [key_name_admin(current)]")
if("vampire")
if(!(src in ticker.mode.vampires))
ticker.mode.vampires += src
ticker.mode.grant_vampire_powers(current)
ticker.mode.update_vampire_icons_added(src)
if(!(src in SSticker.mode.vampires))
SSticker.mode.vampires += src
SSticker.mode.grant_vampire_powers(current)
SSticker.mode.update_vampire_icons_added(src)
var/datum/mindslaves/slaved = new()
slaved.masters += src
som = slaved //we MIGT want to mindslave someone
@@ -963,7 +963,7 @@
message_admins("[key_name_admin(usr)] has vampired [key_name_admin(current)]")
if("autoobjectives")
ticker.mode.forge_vampire_objectives(src)
SSticker.mode.forge_vampire_objectives(src)
to_chat(usr, "<span class='notice'>The objectives for vampire [key] have been generated. You can edit them and announce manually.</span>")
log_admin("[key_name(usr)] has automatically forged objectives for [key_name(current)]")
message_admins("[key_name_admin(usr)] has automatically forged objectives for [key_name_admin(current)]")
@@ -971,8 +971,8 @@
else if(href_list["vampthrall"])
switch(href_list["vampthrall"])
if("clear")
if(src in ticker.mode.vampire_enthralled)
ticker.mode.remove_vampire_mind(src)
if(src in SSticker.mode.vampire_enthralled)
SSticker.mode.remove_vampire_mind(src)
log_admin("[key_name(usr)] has de-vampthralled [key_name(current)]")
message_admins("[key_name_admin(usr)] has de-vampthralled [key_name_admin(current)]")
@@ -981,9 +981,9 @@
switch(href_list["nuclear"])
if("clear")
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
for(var/datum/objective/nuclear/O in objectives)
objectives-=O
@@ -992,17 +992,17 @@
log_admin("[key_name(usr)] has de-nuke op'd [key_name(current)]")
message_admins("[key_name_admin(usr)] has de-nuke op'd [key_name_admin(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 = SPECIAL_ROLE_NUKEOPS
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)
log_admin("[key_name(usr)] has nuke op'd [key_name(current)]")
message_admins("[key_name_admin(usr)] has nuke op'd [key_name_admin(current)]")
if("lair")
@@ -1022,10 +1022,10 @@
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='warning'>Equipping a syndicate failed!</span>")
return
ticker.mode.update_syndicate_id(current.mind, ticker.mode.syndicates.len == 1)
SSticker.mode.update_syndicate_id(current.mind, SSticker.mode.syndicates.len == 1)
log_admin("[key_name(usr)] has equipped [key_name(current)] as a nuclear operative")
message_admins("[key_name_admin(usr)] has equipped [key_name_admin(current)] as a nuclear operative")
@@ -1046,27 +1046,27 @@
else if(href_list["eventmisc"])
switch(href_list["eventmisc"])
if("clear")
if(src in ticker.mode.eventmiscs)
ticker.mode.eventmiscs -= src
ticker.mode.update_eventmisc_icons_removed(src)
if(src in SSticker.mode.eventmiscs)
SSticker.mode.eventmiscs -= src
SSticker.mode.update_eventmisc_icons_removed(src)
special_role = null
message_admins("[key_name_admin(usr)] has de-eventantag'ed [current].")
log_admin("[key_name(usr)] has de-eventantag'ed [current].")
if("eventmisc")
ticker.mode.eventmiscs += src
SSticker.mode.eventmiscs += src
special_role = SPECIAL_ROLE_EVENTMISC
ticker.mode.update_eventmisc_icons_added(src)
SSticker.mode.update_eventmisc_icons_added(src)
message_admins("[key_name_admin(usr)] has eventantag'ed [current].")
log_admin("[key_name(usr)] has eventantag'ed [current].")
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/))
to_chat(usr,"<span class='warning'>This cannot be used on true or arch-devils.</span>")
else
ticker.mode.devils -= src
ticker.mode.update_devil_icons_removed(src)
SSticker.mode.devils -= src
SSticker.mode.update_devil_icons_removed(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)
@@ -1085,8 +1085,8 @@
S.laws.clear_sixsixsix_laws()
devilinfo = null
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")
@@ -1098,12 +1098,12 @@
if(!ishuman(current) && !isrobot(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.update_devil_icons_added(src)
ticker.mode.finalize_devil(src, FALSE)
ticker.mode.forge_devil_objectives(src, 2)
ticker.mode.greet_devil(src)
SSticker.mode.update_devil_icons_added(src)
SSticker.mode.finalize_devil(src, FALSE)
SSticker.mode.forge_devil_objectives(src, 2)
SSticker.mode.greet_devil(src)
message_admins("[key_name_admin(usr)] has devil'ed [current].")
log_admin("[key_name(usr)] has devil'ed [current].")
if("ascendable_devil")
@@ -1115,12 +1115,12 @@
if(!ishuman(current) && !isrobot(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.update_devil_icons_added(src)
ticker.mode.finalize_devil(src, TRUE)
ticker.mode.forge_devil_objectives(src, 2)
ticker.mode.greet_devil(src)
SSticker.mode.update_devil_icons_added(src)
SSticker.mode.finalize_devil(src, TRUE)
SSticker.mode.forge_devil_objectives(src, 2)
SSticker.mode.greet_devil(src)
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")
@@ -1132,8 +1132,8 @@
else if(href_list["traitor"])
switch(href_list["traitor"])
if("clear")
if(src in ticker.mode.traitors)
ticker.mode.traitors -= src
if(src in SSticker.mode.traitors)
SSticker.mode.traitors -= src
special_role = null
to_chat(current, "<span class='warning'><FONT size = 3><B>You have been brainwashed! You are no longer a traitor!</B></FONT></span>")
log_admin("[key_name(usr)] has de-traitored [key_name(current)]")
@@ -1145,12 +1145,12 @@
A.verbs -= /mob/living/silicon/ai/proc/choose_modules
A.malf_picker.remove_verbs(A)
qdel(A.malf_picker)
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
var/datum/mindslaves/slaved = new()
slaved.masters += src
som = slaved //we MIGT want to mindslave someone
@@ -1160,14 +1160,14 @@
message_admins("[key_name_admin(usr)] has traitored [key_name_admin(current)]")
if(isAI(current))
var/mob/living/silicon/ai/A = current
ticker.mode.add_law_zero(A)
SSticker.mode.add_law_zero(A)
SEND_SOUND(current, 'sound/ambience/antag/malf.ogg')
else
SEND_SOUND(current, 'sound/ambience/antag/tatoralert.ogg')
ticker.mode.update_traitor_icons_added(src)
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 announce manually.</span>")
log_admin("[key_name(usr)] has automatically forged objectives for [key_name(current)]")
message_admins("[key_name_admin(usr)] has automatically forged objectives for [key_name_admin(current)]")
@@ -1175,17 +1175,17 @@
else if(href_list["shadowling"])
switch(href_list["shadowling"])
if("clear")
ticker.mode.update_shadow_icons_removed(src)
if(src in ticker.mode.shadows)
ticker.mode.shadows -= src
SSticker.mode.update_shadow_icons_removed(src)
if(src in SSticker.mode.shadows)
SSticker.mode.shadows -= src
special_role = null
to_chat(current, "<span class='userdanger'>Your powers have been quenched! You are no longer a shadowling!</span>")
message_admins("[key_name_admin(usr)] has de-shadowlinged [current].")
log_admin("[key_name(usr)] has de-shadowlinged [current].")
current.spellremove(current)
current.remove_language("Shadowling Hivemind")
else if(src in ticker.mode.shadowling_thralls)
ticker.mode.remove_thrall(src,0)
else if(src in SSticker.mode.shadowling_thralls)
SSticker.mode.remove_thrall(src,0)
message_admins("[key_name_admin(usr)] has de-thrall'ed [current].")
log_admin("[key_name(usr)] has de-thralled [key_name(current)]")
message_admins("[key_name_admin(usr)] has de-thralled [key_name_admin(current)]")
@@ -1193,20 +1193,20 @@
if(!ishuman(current))
to_chat(usr, "<span class='warning'>This only works on humans!</span>")
return
ticker.mode.shadows += src
SSticker.mode.shadows += src
special_role = SPECIAL_ROLE_SHADOWLING
to_chat(current, "<span class='shadowling'><b>Something stirs deep in your mind. A red light floods your vision, and slowly you remember. Though your human disguise has served you well, the \
time is nigh to cast it off and enter your true form. You have disguised yourself amongst the humans, but you are not one of them. You are a shadowling, and you are to ascend at all costs.\
</b></span>")
ticker.mode.finalize_shadowling(src)
ticker.mode.update_shadow_icons_added(src)
SSticker.mode.finalize_shadowling(src)
SSticker.mode.update_shadow_icons_added(src)
log_admin("[key_name(usr)] has shadowlinged [key_name(current)]")
message_admins("[key_name_admin(usr)] has shadowlinged [key_name_admin(current)]")
if("thrall")
if(!ishuman(current))
to_chat(usr, "<span class='warning'>This only works on humans!</span>")
return
ticker.mode.add_thrall(src)
SSticker.mode.add_thrall(src)
message_admins("[key_name_admin(usr)] has thralled [current].")
log_admin("[key_name(usr)] has thralled [current].")
@@ -1221,7 +1221,7 @@
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")
if(!ishuman(current))
to_chat(usr, "<span class='warning'>This only works on humans!</span>")
@@ -1306,7 +1306,7 @@
log_admin("[key_name(usr)] has set [key_name(current)]'s telecrystals to [crystals]")
message_admins("[key_name_admin(usr)] has set [key_name_admin(current)]'s telecrystals 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='warning'>Equipping a syndicate failed!</span>")
return
log_admin("[key_name(usr)] has given [key_name(current)] an uplink")
@@ -1392,27 +1392,27 @@
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 = SPECIAL_ROLE_TRAITOR
ticker.mode.forge_traitor_objectives(src)
ticker.mode.finalize_traitor(src)
ticker.mode.greet_traitor(src)
ticker.mode.update_traitor_icons_added(src)
SSticker.mode.forge_traitor_objectives(src)
SSticker.mode.finalize_traitor(src)
SSticker.mode.greet_traitor(src)
SSticker.mode.update_traitor_icons_added(src)
/datum/mind/proc/make_Nuke()
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 = SPECIAL_ROLE_NUKEOPS
assigned_role = SPECIAL_ROLE_NUKEOPS
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)
current.loc = get_turf(locate("landmark*Syndicate-Spawn"))
@@ -1429,34 +1429,34 @@
qdel(H.wear_suit)
qdel(H.w_uniform)
ticker.mode.equip_syndicate(current)
SSticker.mode.equip_syndicate(current)
/datum/mind/proc/make_Vampire()
if(!(src in ticker.mode.vampires))
ticker.mode.vampires += src
ticker.mode.grant_vampire_powers(current)
if(!(src in SSticker.mode.vampires))
SSticker.mode.vampires += src
SSticker.mode.grant_vampire_powers(current)
special_role = SPECIAL_ROLE_VAMPIRE
ticker.mode.forge_vampire_objectives(src)
ticker.mode.greet_vampire(src)
ticker.mode.update_vampire_icons_added(src)
SSticker.mode.forge_vampire_objectives(src)
SSticker.mode.greet_vampire(src)
SSticker.mode.update_vampire_icons_added(src)
/datum/mind/proc/make_Changeling()
if(!(src in ticker.mode.changelings))
ticker.mode.changelings += src
ticker.mode.grant_changeling_powers(current)
if(!(src in SSticker.mode.changelings))
SSticker.mode.changelings += src
SSticker.mode.grant_changeling_powers(current)
special_role = SPECIAL_ROLE_CHANGELING
ticker.mode.forge_changeling_objectives(src)
ticker.mode.greet_changeling(src)
ticker.mode.update_change_icons_added(src)
SSticker.mode.forge_changeling_objectives(src)
SSticker.mode.greet_changeling(src)
SSticker.mode.update_change_icons_added(src)
/datum/mind/proc/make_Overmind()
if(!(src in ticker.mode.blob_overminds))
ticker.mode.blob_overminds += src
if(!(src in SSticker.mode.blob_overminds))
SSticker.mode.blob_overminds += src
special_role = SPECIAL_ROLE_BLOB_OVERMIND
/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 = SPECIAL_ROLE_WIZARD
assigned_role = SPECIAL_ROLE_WIZARD
//ticker.mode.learn_basic_spells(current)
@@ -1466,18 +1466,18 @@
else
current.loc = pick(wizardstart)
ticker.mode.equip_wizard(current)
SSticker.mode.equip_wizard(current)
for(var/obj/item/spellbook/S in current.contents)
S.op = 0
ticker.mode.name_wizard(current)
ticker.mode.forge_wizard_objectives(src)
ticker.mode.greet_wizard(src)
ticker.mode.update_wiz_icons_added(src)
SSticker.mode.name_wizard(current)
SSticker.mode.forge_wizard_objectives(src)
SSticker.mode.greet_wizard(src)
SSticker.mode.update_wiz_icons_added(src)
/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
@@ -1485,13 +1485,13 @@
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 = SPECIAL_ROLE_HEAD_REV
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/flash/flash = locate() in L
@@ -1499,7 +1499,7 @@
take_uplink()
var/fail = 0
// fail |= !ticker.mode.equip_traitor(current, 1)
fail |= !ticker.mode.equip_revolutionary(current)
fail |= !SSticker.mode.equip_revolutionary(current)
/datum/mind/proc/make_Abductor()
var/role = alert("Abductor Role ?","Role","Agent","Scientist")
@@ -1512,7 +1512,7 @@
if(!ishuman(current))
return
ticker.mode.abductors |= src
SSticker.mode.abductors |= src
var/datum/objective/experiment/O = new
O.owner = src
@@ -1621,15 +1621,15 @@
var/list/implanters
var/ref = "\ref[missionary.mind]"
if(!(missionary.mind in ticker.mode.implanter))
ticker.mode.implanter[ref] = list()
implanters = ticker.mode.implanter[ref]
if(!(missionary.mind in SSticker.mode.implanter))
SSticker.mode.implanter[ref] = list()
implanters = SSticker.mode.implanter[ref]
implanters.Add(src)
ticker.mode.implanted.Add(src)
ticker.mode.implanted[src] = missionary.mind
SSticker.mode.implanted.Add(src)
SSticker.mode.implanted[src] = missionary.mind
//ticker.mode.implanter[missionary.mind] += src
ticker.mode.implanter[ref] = implanters
ticker.mode.traitors += src
SSticker.mode.implanter[ref] = implanters
SSticker.mode.traitors += src
special_role = "traitor"
to_chat(current, "<span class='warning'><B>You're now a loyal zealot of [missionary.name]!</B> You now must lay down your life to protect [missionary.p_them()] and assist in [missionary.p_their()] goals at any cost.</span>")
var/datum/objective/protect/mindslave/MS = new
@@ -1640,8 +1640,8 @@
for(var/datum/objective/objective in objectives)
to_chat(current, "<B>Objective #1</B>: [objective.explanation_text]")
ticker.mode.update_traitor_icons_added(missionary.mind)
ticker.mode.update_traitor_icons_added(src)//handles datahuds/observerhuds
SSticker.mode.update_traitor_icons_added(missionary.mind)
SSticker.mode.update_traitor_icons_added(src)//handles datahuds/observerhuds
if(missionary.mind.som)//do not add if not a traitor..and you just picked up a robe and staff in the hall...
var/datum/mindslaves/slaved = missionary.mind.som
@@ -1665,7 +1665,7 @@
/datum/mind/proc/remove_zealot(obj/item/clothing/under/jumpsuit = null)
if(!zealot_master) //if they aren't a zealot, we can't remove their zealot status, obviously. don't bother with the rest so we don't confuse them with the messages
return
ticker.mode.remove_traitor_mind(src)
SSticker.mode.remove_traitor_mind(src)
add_attack_logs(zealot_master, current, "Lost control of zealot")
zealot_master = null
@@ -1696,8 +1696,8 @@
mind.key = key
else
mind = new /datum/mind(key)
if(ticker)
ticker.minds += mind
if(SSticker)
SSticker.minds += mind
else
error("mind_initialize(): No ticker ready yet! Please inform Carn")
if(!mind.name)
+1 -1
View File
@@ -118,7 +118,7 @@
var/global/list/newscaster_standard_feeds = list(/datum/news_announcement/bluespace_research, /datum/news_announcement/lotus_tree, /datum/news_announcement/random_junk, /datum/news_announcement/food_riots)
proc/process_newscaster()
check_for_newscaster_updates(ticker.mode.newscaster_announcements)
check_for_newscaster_updates(SSticker.mode.newscaster_announcements)
var/global/tmp/announced_news_types = list()
proc/check_for_newscaster_updates(type)
+2 -2
View File
@@ -64,9 +64,9 @@
spawn(0) // allows cast to complete even if recipient ignores the prompt
if(alert(target, "[user] wants to bless you, in the name of [user.p_their()] religion. Accept?", "Accept Blessing?", "Yes", "No") == "Yes") // prevents forced conversions
user.visible_message("[user] starts blessing [target] in the name of [ticker.Bible_deity_name].", "<span class='notice'>You start blessing [target] in the name of [ticker.Bible_deity_name].</span>")
user.visible_message("[user] starts blessing [target] in the name of [SSticker.Bible_deity_name].", "<span class='notice'>You start blessing [target] in the name of [SSticker.Bible_deity_name].</span>")
if(do_after(user, 150, target = target))
user.visible_message("[user] has blessed [target] in the name of [ticker.Bible_deity_name].", "<span class='notice'>You have blessed [target] in the name of [ticker.Bible_deity_name].</span>")
user.visible_message("[user] has blessed [target] in the name of [SSticker.Bible_deity_name].", "<span class='notice'>You have blessed [target] in the name of [SSticker.Bible_deity_name].</span>")
if(!target.mind.isblessed)
target.mind.isblessed = TRUE
user.mind.num_blessed++
+1 -1
View File
@@ -20,7 +20,7 @@
action_icon_state = "skeleton"
/obj/effect/proc_holder/spell/targeted/lichdom/Destroy()
for(var/datum/mind/M in ticker.mode.wizards) //Make sure no other bones are about
for(var/datum/mind/M in SSticker.mode.wizards) //Make sure no other bones are about
for(var/obj/effect/proc_holder/spell/S in M.spell_list)
if(istype(S,/obj/effect/proc_holder/spell/targeted/lichdom) && S != src)
return ..()
+2 -2
View File
@@ -12,9 +12,9 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
var/datum/uplink_item/I = new path
if(!I.item)
continue
if(I.gamemodes.len && ticker && !(ticker.mode.type in I.gamemodes))
if(I.gamemodes.len && SSticker && !(SSticker.mode.type in I.gamemodes))
continue
if(I.excludefrom.len && ticker && (ticker.mode.type in I.excludefrom))
if(I.excludefrom.len && SSticker && (SSticker.mode.type in I.excludefrom))
continue
if(I.last)
last += I
+1 -1
View File
@@ -218,7 +218,7 @@
/mob/living/carbon/human/proc/sec_hud_set_security_status()
var/image/holder = hud_list[WANTED_HUD]
var/perpname = get_visible_name(TRUE) //gets the name of the perp, works if they have an id or if their face is uncovered
if(!ticker) return //wait till the game starts or the monkeys runtime....
if(!SSticker) return //wait till the game starts or the monkeys runtime....
if(perpname)
var/datum/data/record/R = find_record("name", perpname, data_core.security)
if(R)
+2 -2
View File
@@ -378,8 +378,8 @@
new /obj/structure/blob/core/ (get_turf(N), 200, null, blob_core.point_rate, "offspring")
qdel(N)
if(ticker && ticker.mode.name == "blob")
var/datum/game_mode/blob/BL = ticker.mode
if(SSticker && SSticker.mode.name == "blob")
var/datum/game_mode/blob/BL = SSticker.mode
BL.blobwincount += initial(BL.blobwincount)
+13 -13
View File
@@ -5,7 +5,7 @@ var/global/list/all_cults = list()
var/list/datum/mind/cult = list()
/proc/iscultist(mob/living/M as mob)
return istype(M) && M.mind && ticker && ticker.mode && (M.mind in ticker.mode.cult)
return istype(M) && M.mind && SSticker && SSticker.mode && (M.mind in SSticker.mode.cult)
/proc/is_convertable_to_cult(datum/mind/mind)
@@ -30,8 +30,8 @@ var/global/list/all_cults = list()
return 1
/proc/is_sacrifice_target(datum/mind/mind)
if(istype(ticker.mode.name, "cult"))
var/datum/game_mode/cult/cult_mode = ticker.mode
if(istype(SSticker.mode.name, "cult"))
var/datum/game_mode/cult/cult_mode = SSticker.mode
if(mind == cult_mode.sacrifice_target)
return 1
return 0
@@ -121,7 +121,7 @@ var/global/list/all_cults = list()
var/datum/action/innate/cultcomm/C = new()
C.Grant(cult_mind.current)
update_cult_icons_added(cult_mind)
to_chat(cult_mind.current, "<span class='cultitalic'>You catch a glimpse of the Realm of [ticker.cultdat.entity_name], [ticker.cultdat.entity_title3]. You now see how flimsy the world is, you see that it should be open to the knowledge of [ticker.cultdat.entity_name].</span>")
to_chat(cult_mind.current, "<span class='cultitalic'>You catch a glimpse of the Realm of [SSticker.cultdat.entity_name], [SSticker.cultdat.entity_title3]. You now see how flimsy the world is, you see that it should be open to the knowledge of [SSticker.cultdat.entity_name].</span>")
first_phase()
@@ -135,16 +135,16 @@ var/global/list/all_cults = list()
if("survive")
explanation = "Our knowledge must live on. Make sure at least [acolytes_needed] acolytes escape on the shuttle to spread their work on an another station."
if("convert")
explanation = "We must increase our influence before we can summon [ticker.cultdat.entity_name], Convert [convert_target] crew members. Take it slowly to avoid raising suspicions."
explanation = "We must increase our influence before we can summon [SSticker.cultdat.entity_name], Convert [convert_target] crew members. Take it slowly to avoid raising suspicions."
if("bloodspill")
explanation = "We must prepare this place for [ticker.cultdat.entity_title1]'s coming. Spill blood and gibs over [spilltarget] floor tiles."
explanation = "We must prepare this place for [SSticker.cultdat.entity_title1]'s coming. Spill blood and gibs over [spilltarget] floor tiles."
if("sacrifice")
if(sacrifice_target)
explanation = "Sacrifice [sacrifice_target.current.real_name], the [sacrifice_target.assigned_role]. You will need the sacrifice rune and three acolytes to do so."
else
explanation = "Free objective."
if("eldergod")
explanation = "Summon [ticker.cultdat.entity_name] by invoking the 'Tear Reality' rune.<b>The summoning can only be accomplished in [english_list(summon_spots)] - where the veil is weak enough for the ritual to begin.</b>"
explanation = "Summon [SSticker.cultdat.entity_name] by invoking the 'Tear Reality' rune.<b>The summoning can only be accomplished in [english_list(summon_spots)] - where the veil is weak enough for the ritual to begin.</b>"
to_chat(cult_mind.current, "<B>Objective #[obj_count]</B>: [explanation]")
cult_mind.memory += "<B>Objective #[obj_count]</B>: [explanation]<BR>"
@@ -179,7 +179,7 @@ var/global/list/all_cults = list()
/datum/game_mode/proc/add_cultist(datum/mind/cult_mind) //BASE
if(!istype(cult_mind))
return 0
var/datum/game_mode/cult/cult_mode = ticker.mode
var/datum/game_mode/cult/cult_mode = SSticker.mode
if(!(cult_mind in cult) && is_convertable_to_cult(cult_mind))
cult += cult_mind
cult_mind.current.faction |= "cult"
@@ -314,10 +314,10 @@ var/global/list/all_cults = list()
feedback_add_details("cult_objective","cult_sacrifice|FAIL|GIBBED")
if("eldergod")
if(!eldergod)
explanation = "Summon [ticker.cultdat.entity_name]. <font color='green'><B>Success!</B></font>"
explanation = "Summon [SSticker.cultdat.entity_name]. <font color='green'><B>Success!</B></font>"
feedback_add_details("cult_objective","cult_narsie|SUCCESS")
else
explanation = "Summon [ticker.cultdat.entity_name]. <font color='red'>Fail.</font>"
explanation = "Summon [SSticker.cultdat.entity_name]. <font color='red'>Fail.</font>"
feedback_add_details("cult_objective","cult_narsie|FAIL")
if("slaughter")
if(demons_summoned)
@@ -345,10 +345,10 @@ var/global/list/all_cults = list()
if("harvest")
if(harvested > harvest_target)
explanation = "Offer [harvest_target] humans for [ticker.cultdat.entity_name]'s first meal of the day. ([harvested] sacrificed) <font color='green'><B>Success!</B></font>"
explanation = "Offer [harvest_target] humans for [SSticker.cultdat.entity_name]'s first meal of the day. ([harvested] sacrificed) <font color='green'><B>Success!</B></font>"
feedback_add_details("cult_objective","cult_harvest|SUCCESS")
else
explanation = "Offer [harvest_target] humans for [ticker.cultdat.entity_name]'s first meal of the day. ([harvested] sacrificed) <font color='red'><B>Fail!</B></font>"
explanation = "Offer [harvest_target] humans for [SSticker.cultdat.entity_name]'s first meal of the day. ([harvested] sacrificed) <font color='red'><B>Fail!</B></font>"
feedback_add_details("cult_objective","cult_harvest|FAIL")
if("hijack")
@@ -375,7 +375,7 @@ var/global/list/all_cults = list()
/datum/game_mode/proc/auto_declare_completion_cult()
if(cult.len || (ticker && GAMEMODE_IS_CULT))
if(cult.len || (SSticker && GAMEMODE_IS_CULT))
var/text = "<FONT size = 2><B>The cultists were:</B></FONT>"
for(var/datum/mind/cultist in cult)
+10 -10
View File
@@ -19,10 +19,10 @@
switch(new_objective)
if("convert")
explanation = "We must increase our influence before we can summon [ticker.cultdat.entity_name], Convert [convert_target] crew members. Take it slowly to avoid raising suspicions."
explanation = "We must increase our influence before we can summon [SSticker.cultdat.entity_name], Convert [convert_target] crew members. Take it slowly to avoid raising suspicions."
if("bloodspill")
spilltarget = 100 + rand(0,GLOB.player_list.len * 3)
explanation = "We must prepare this place for [ticker.cultdat.entity_title1]'s coming. Spill blood and gibs over [spilltarget] floor tiles."
explanation = "We must prepare this place for [SSticker.cultdat.entity_title1]'s coming. Spill blood and gibs over [spilltarget] floor tiles."
if("sacrifice")
explanation = "We need to sacrifice [sacrifice_target.name], the [sacrifice_target.assigned_role], for [sacrifice_target.p_their()] blood is the key that will lead our master to this realm. You will need 3 cultists around a Sacrifice rune to perform the ritual."
@@ -59,8 +59,8 @@
message_admins("The Cult has already completed [prenarsie_objectives] objectives! Nar-Sie objective unlocked.")
log_admin("The Cult has already completed [prenarsie_objectives] objectives! Nar-Sie objective unlocked.")
else
message_admins("There are less than 4 cultists! [ticker.cultdat.entity_name] objective unlocked.")
log_admin("There are less than 4 cultists! [ticker.cultdat.entity_name] objective unlocked.")
message_admins("There are less than 4 cultists! [SSticker.cultdat.entity_name] objective unlocked.")
log_admin("There are less than 4 cultists! [SSticker.cultdat.entity_name] objective unlocked.")
gtfo_phase()
if(!sacrificed.len && (new_objective != "sacrifice"))
@@ -76,10 +76,10 @@
switch(new_objective)
if("convert")
explanation = "We must increase our influence before we can summon [ticker.cultdat.entity_name]. Convert [convert_target] crew members. Take it slowly to avoid raising suspicions."
explanation = "We must increase our influence before we can summon [SSticker.cultdat.entity_name]. Convert [convert_target] crew members. Take it slowly to avoid raising suspicions."
if("bloodspill")
spilltarget = 100 + rand(0,GLOB.player_list.len * 3)
explanation = "We must prepare this place for [ticker.cultdat.entity_title1]'s coming. Spread blood and gibs over [spilltarget] of the Station's floor tiles."
explanation = "We must prepare this place for [SSticker.cultdat.entity_title1]'s coming. Spread blood and gibs over [spilltarget] of the Station's floor tiles."
if("sacrifice")
explanation = "We need to sacrifice [sacrifice_target.name], the [sacrifice_target.assigned_role], for [sacrifice_target.p_their()] blood is the key that will lead our master to this realm. You will need 3 cultists around a Sacrifice rune to perform the ritual."
@@ -111,7 +111,7 @@
if(prob(40))//split the chance of this
objectives += "eldergod"
explanation = "Summon [ticker.cultdat.entity_name] on the Station via the use of the Tear Reality rune. The veil is weak enough in [english_list(summon_spots)] for the ritual to begin."
explanation = "Summon [SSticker.cultdat.entity_name] on the Station via the use of the Tear Reality rune. The veil is weak enough in [english_list(summon_spots)] for the ritual to begin."
else
objectives += "slaughter"
explanation = "Bring the Slaughter via the rune 'Bring forth the slaughter'. The veil is weak enough in [english_list(summon_spots)] for the ritual to begin."
@@ -135,11 +135,11 @@
switch(last_objective)
if("harvest")
explanation = "[ticker.cultdat.entity_title1] hungers for their first meal of this never-ending day. Offer them [harvest_target] humans in sacrifice."
explanation = "[SSticker.cultdat.entity_title1] hungers for their first meal of this never-ending day. Offer them [harvest_target] humans in sacrifice."
if("hijack")
explanation = "[ticker.cultdat.entity_name] wishes for their troops to start the assault on Centcom immediately. Hijack the escape shuttle and don't let a single non-cultist board it."
explanation = "[SSticker.cultdat.entity_name] wishes for their troops to start the assault on Centcom immediately. Hijack the escape shuttle and don't let a single non-cultist board it."
if("massacre")
explanation = "[ticker.cultdat.entity_name] wants to watch you as you massacre the remaining humans on the station (until less than [massacre_target] humans are left alive)."
explanation = "[SSticker.cultdat.entity_name] wants to watch you as you massacre the remaining humans on the station (until less than [massacre_target] humans are left alive)."
for(var/datum/mind/cult_mind in cult)
if(cult_mind)
+16 -16
View File
@@ -11,7 +11,7 @@
return
/obj/effect/rune/proc/check_icon()
if(!ticker.mode)//work around for maps with runes and cultdat is not loaded all the way
if(!SSticker.mode)//work around for maps with runes and cultdat is not loaded all the way
var/bits = make_bit_triplet()
icon = get_rune(bits)
else
@@ -39,16 +39,16 @@
canbypass = 1
/obj/item/tome/New()
if(!ticker.mode)
if(!SSticker.mode)
icon_state = "tome"
else
icon_state = ticker.cultdat.tome_icon
icon_state = SSticker.cultdat.tome_icon
..()
/obj/item/tome/examine(mob/user)
..()
if(iscultist(user) || user.stat == DEAD)
to_chat(user, "<span class='cult'>The scriptures of [ticker.cultdat.entity_title3]. Allows the scribing of runes and access to the knowledge archives of the cult of [ticker.cultdat.entity_name].</span>")
to_chat(user, "<span class='cult'>The scriptures of [SSticker.cultdat.entity_title3]. Allows the scribing of runes and access to the knowledge archives of the cult of [SSticker.cultdat.entity_name].</span>")
to_chat(user, "<span class='cult'>Striking another cultist with it will purge holy water from them.</span>")
to_chat(user, "<span class='cult'>Striking a noncultist, however, will sear their flesh.</span>")
@@ -91,7 +91,7 @@
/obj/item/tome/proc/read_tome(mob/user)
var/text = list()
text += "<center><font color='red' size=3><b><i>Archives of [ticker.cultdat.entity_title1]</i></b></font></center><br><br><br>"
text += "<center><font color='red' size=3><b><i>Archives of [SSticker.cultdat.entity_title1]</i></b></font></center><br><br><br>"
text += "A rune's name and effects can be revealed by examining the rune.<<br><br>"
text += "<font color='red'><b>Rite of Binding</b></font><br>This rune is one of the most important runes the cult has, being the only way to create new talismans. A blank sheet of paper must be on top of the rune. After \
@@ -102,7 +102,7 @@
text += "<font color='red'><b>Rite of Enlightenment</b></font><br>This rune is critical to the success of the cult. It will allow you to convert normal crew members into cultists. \
To do this, simply place the crew member upon the rune and invoke it. This rune requires two invokers to use. If the target to be converted is mindshielded or a certain assignment, they will \
be unable to be converted. People [ticker.cultdat.entity_title3] wishes sacrificed will also be ineligible for conversion, and anyone with a shielding presence like the null rod will not be converted.<br> \
be unable to be converted. People [SSticker.cultdat.entity_title3] wishes sacrificed will also be ineligible for conversion, and anyone with a shielding presence like the null rod will not be converted.<br> \
Successful conversions will produce a tome for the new cultist.<br><br>"
text += "<font color='red'><b>Rite of Tribute</b></font><br><b>This rune is necessary to achieve your goals.</b> Simply place any dead creature upon the rune and invoke it (this will not \
@@ -135,12 +135,12 @@
text += "<font color='red'><b>Leeching</b></font><br>When invoked, this rune will transfer lifeforce from the victim to the invoker.<br><br>"
text += "<font color='red'><b>Rite of Spectral Manifestation</b></font><br>This rune allows you to summon spirits as humanoid fighters. When invoked, a spirit above the rune will be brought to life as a human, wearing nothing, that seeks only to serve you and [ticker.cultdat.entity_title3]. \
text += "<font color='red'><b>Rite of Spectral Manifestation</b></font><br>This rune allows you to summon spirits as humanoid fighters. When invoked, a spirit above the rune will be brought to life as a human, wearing nothing, that seeks only to serve you and [SSticker.cultdat.entity_title3]. \
However, the spirit's link to reality is fragile - you must remain on top of the rune, and you will slowly take damage. Upon stepping off the rune, all summoned spirits will dissipate, dropping their items to the ground. You may manifest \
multiple spirits with one rune, but you will rapidly take damage in doing so.<br><br>"
text += "<font color='red'><b><i>Ritual of Dimensional Rending</i></b></font><br><b>This rune is necessary to achieve your goals.</b> On attempting to scribe it, it will produce shields around you and alert everyone you are attempting to scribe it; it takes a very long time to scribe, \
and does massive damage to the one attempting to scribe it.<br>Invoking it requires 9 invokers and the sacrifice of a specific crewmember, and once invoked, will summon [ticker.cultdat.entity_title3], [ticker.cultdat.entity_name]. \
and does massive damage to the one attempting to scribe it.<br>Invoking it requires 9 invokers and the sacrifice of a specific crewmember, and once invoked, will summon [SSticker.cultdat.entity_title3], [SSticker.cultdat.entity_name]. \
This will complete your objectives.<br><br><br>"
text += "<font color='red'><b>Talisman of Teleportation</b></font><br>The talisman form of the Teleport rune will transport the invoker to a selected Teleport rune once.<br><br>"
@@ -201,12 +201,12 @@
return 1
/obj/item/tome/proc/finale_runes_ok(mob/living/user, obj/effect/rune/rune_to_scribe)
var/datum/game_mode/cult/cult_mode = ticker.mode
var/datum/game_mode/cult/cult_mode = SSticker.mode
var/area/A = get_area(src)
if(GAMEMODE_IS_CULT)
if(!canbypass)//not an admin-tome, check things
if(!cult_mode.narsie_condition_cleared)
to_chat(user, "<span class='warning'>There is still more to do before unleashing [ticker.cultdat.entity_name] power!</span>")
to_chat(user, "<span class='warning'>There is still more to do before unleashing [SSticker.cultdat.entity_name] power!</span>")
return 0
if(!cult_mode.eldergod)
to_chat(user, "<span class='cultlarge'>\"I am already here. There is no need to try to summon me now.\"</span>")
@@ -215,19 +215,19 @@
to_chat(user, "<span class='cultlarge'>\"We are already here. There is no need to try to summon us now.\"</span>")
return 0
if(!((CULT_ELDERGOD in cult_mode.objectives) || (CULT_SLAUGHTER in cult_mode.objectives)))
to_chat(user, "<span class='warning'>[ticker.cultdat.entity_name]'s power does not wish to be unleashed!</span>")
to_chat(user, "<span class='warning'>[SSticker.cultdat.entity_name]'s power does not wish to be unleashed!</span>")
return 0
if(!(A in summon_spots))
to_chat(user, "<span class='cultlarge'>[ticker.cultdat.entity_name] can only be summoned where the veil is weak - in [english_list(summon_spots)]!</span>")
to_chat(user, "<span class='cultlarge'>[SSticker.cultdat.entity_name] can only be summoned where the veil is weak - in [english_list(summon_spots)]!</span>")
return 0
var/confirm_final = alert(user, "This is the FINAL step to summon your deities power, it is a long, painful ritual and the crew will be alerted to your presence", "Are you prepared for the final battle?", "My life for [ticker.cultdat.entity_name]!", "No")
var/confirm_final = alert(user, "This is the FINAL step to summon your deities power, it is a long, painful ritual and the crew will be alerted to your presence", "Are you prepared for the final battle?", "My life for [SSticker.cultdat.entity_name]!", "No")
if(confirm_final == "No" || confirm_final == null)
to_chat(user, "<span class='cult'>You decide to prepare further before scribing the rune.</span>")
return 0
else
return 1
else//the game mode is not cult..but we ARE a cultist...ALL ON THE ADMINBUS
var/confirm_final = alert(user, "This is the FINAL step to summon your deities power, it is a long, painful ritual and the crew will be alerted to your presence", "Are you prepared for the final battle?", "My life for [ticker.cultdat.entity_name]!", "No")
var/confirm_final = alert(user, "This is the FINAL step to summon your deities power, it is a long, painful ritual and the crew will be alerted to your presence", "Are you prepared for the final battle?", "My life for [SSticker.cultdat.entity_name]!", "No")
if(confirm_final == "No" || confirm_final == null)
to_chat(user, "<span class='cult'>You decide to prepare further before scribing the rune.</span>")
return 0
@@ -296,7 +296,7 @@
var/mob/living/carbon/human/H = user
var/dam_zone = pick("head", "chest", "groin", "l_arm", "l_hand", "r_arm", "r_hand", "l_leg", "l_foot", "r_leg", "r_foot")
var/obj/item/organ/external/affecting = H.get_organ(ran_zone(dam_zone))
user.visible_message("<span class='warning'>[user] cuts open [user.p_their()] [affecting] and begins writing in [user.p_their()] own blood!</span>", "<span class='cult'>You slice open your [affecting] and begin drawing a sigil of [ticker.cultdat.entity_title3].</span>")
user.visible_message("<span class='warning'>[user] cuts open [user.p_their()] [affecting] and begins writing in [user.p_their()] own blood!</span>", "<span class='cult'>You slice open your [affecting] and begin drawing a sigil of [SSticker.cultdat.entity_title3].</span>")
user.apply_damage(initial(rune_to_scribe.scribe_damage), BRUTE , affecting)
if(!do_after(user, initial(rune_to_scribe.scribe_delay)-scribereduct, target = get_turf(user)))
for(var/V in shields)
@@ -308,7 +308,7 @@
to_chat(user, "<span class='cult'>There is already a rune here.</span>")
return
user.visible_message("<span class='warning'>[user] creates a strange circle in [user.p_their()] own blood.</span>", \
"<span class='cult'>You finish drawing the arcane markings of [ticker.cultdat.entity_title3].</span>")
"<span class='cult'>You finish drawing the arcane markings of [SSticker.cultdat.entity_title3].</span>")
for(var/V in shields)
var/obj/machinery/shield/S = V
if(S && !QDELETED(S))
+17 -17
View File
@@ -197,7 +197,7 @@ structure_check() searches for nearby cultist structures required for the invoca
..()
for(var/M in invokers)
var/mob/living/L = M
to_chat(L, "<span class='cultitalic'><b>You feel your life force draining. [ticker.cultdat.entity_title3] is displeased.</b></span>")
to_chat(L, "<span class='cultitalic'><b>You feel your life force draining. [SSticker.cultdat.entity_title3] is displeased.</b></span>")
qdel(src)
/mob/proc/null_rod_check() //The null rod, if equipped, will protect the holder from the effects of most runes
@@ -372,12 +372,12 @@ var/list/teleport_runes = list()
new_cultist.visible_message("<span class='warning'>[new_cultist] writhes in pain as the markings below them glow a bloody red!</span>", \
"<span class='cultlarge'><i>AAAAAAAAAAAAAA-</i></span>")
ticker.mode.add_cultist(new_cultist.mind, 1)
SSticker.mode.add_cultist(new_cultist.mind, 1)
new /obj/item/tome(get_turf(src))
new_cultist.mind.special_role = "Cultist"
to_chat(new_cultist, "<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 \
and something evil takes root.</b></span>")
to_chat(new_cultist, "<span class='cultitalic'><b>Assist your new compatriots in their dark dealings. Your goal is theirs, and theirs is yours. You serve [ticker.cultdat.entity_title3] above all else. Bring it back.\
to_chat(new_cultist, "<span class='cultitalic'><b>Assist your new compatriots in their dark dealings. Your goal is theirs, and theirs is yours. You serve [SSticker.cultdat.entity_title3] above all else. Bring it back.\
</b></span>")
//Rite of Tribute: Sacrifices a crew member to Nar-Sie. Places them into a soul shard if they're in their body.
@@ -391,7 +391,7 @@ var/list/teleport_runes = list()
/obj/effect/rune/sacrifice/New()
..()
cultist_desc = "sacrifices a crew member to [ticker.cultdat.entity_title3]. May place them into a soul shard if their spirit remains in their body."
cultist_desc = "sacrifices a crew member to [SSticker.cultdat.entity_title3]. May place them into a soul shard if their spirit remains in their body."
/obj/effect/rune/sacrifice/invoke(var/list/invokers)
if(rune_in_use)
@@ -432,7 +432,7 @@ var/list/teleport_runes = list()
/obj/effect/rune/sacrifice/proc/sac(var/list/invokers, mob/living/T)
var/sacrifice_fulfilled
var/datum/game_mode/cult/cult_mode = ticker.mode
var/datum/game_mode/cult/cult_mode = SSticker.mode
if(T)
if(istype(T, /mob/living/simple_animal/pet/corgi))
for(var/M in invokers)
@@ -445,7 +445,7 @@ var/list/teleport_runes = list()
if(is_sacrifice_target(T.mind))
sacrifice_fulfilled = 1
new /obj/effect/temp_visual/cult/sac(loc)
if(ticker && ticker.mode && ticker.mode.name == "cult")
if(SSticker && SSticker.mode && SSticker.mode.name == "cult")
cult_mode.harvested++
for(var/M in invokers)
@@ -494,8 +494,8 @@ var/list/teleport_runes = list()
/obj/effect/rune/narsie/New()
..()
cultist_name = "Summon [ticker.cultdat.entity_name]"
cultist_desc = "tears apart dimensional barriers, calling forth [ticker.cultdat.entity_title3]. Requires 9 invokers."
cultist_name = "Summon [SSticker.cultdat.entity_name]"
cultist_desc = "tears apart dimensional barriers, calling forth [SSticker.cultdat.entity_title3]. Requires 9 invokers."
/obj/effect/rune/narsie/check_icon()
@@ -508,7 +508,7 @@ var/list/teleport_runes = list()
if(used)
return
var/mob/living/user = invokers[1]
var/datum/game_mode/cult/cult_mode = ticker.mode
var/datum/game_mode/cult/cult_mode = SSticker.mode
if(!(CULT_ELDERGOD in cult_mode.objectives))
message_admins("[key_name_admin(user)] tried to summonn an eldritch horror when the objective was wrong")
burn_invokers(invokers)
@@ -521,7 +521,7 @@ var/list/teleport_runes = list()
return
if(!cult_mode.eldergod)
for(var/M in invokers)
to_chat(M, "<span class='warning'>[ticker.cultdat.entity_name] is already on this plane!</span>")
to_chat(M, "<span class='warning'>[SSticker.cultdat.entity_name] is already on this plane!</span>")
log_game("Summon god rune failed - already summoned")
return
//BEGIN THE SUMMONING
@@ -594,7 +594,7 @@ var/list/teleport_runes = list()
if(used)
return
var/mob/living/user = invokers[1]
var/datum/game_mode/cult/cult_mode = ticker.mode
var/datum/game_mode/cult/cult_mode = SSticker.mode
if(!(CULT_SLAUGHTER in cult_mode.objectives))
message_admins("[key_name_admin(user)] tried to summon demons when the objective was wrong")
burn_invokers(invokers)
@@ -856,10 +856,10 @@ var/list/teleport_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 [ticker.cultdat.entity_title3]") as null|anything in cultists
var/mob/living/cultist_to_summon = input(user, "Who do you wish to call to [src]?", "Followers of [SSticker.cultdat.entity_title3]") as null|anything in cultists
if(!Adjacent(user) || !src || QDELETED(src) || user.incapacitated())
return
if(!cultist_to_summon)
@@ -868,7 +868,7 @@ var/list/teleport_runes = list()
log_game("Summon Cultist rune failed - no target")
return
if(!iscultist(cultist_to_summon))
to_chat(user, "<span class='cultitalic'>[cultist_to_summon] is not a follower of [ticker.cultdat.entity_title3]!</span>")
to_chat(user, "<span class='cultitalic'>[cultist_to_summon] is not a follower of [SSticker.cultdat.entity_title3]!</span>")
fail_invoke()
log_game("Summon Cultist rune failed - no target")
return
@@ -977,7 +977,7 @@ var/list/teleport_runes = list()
/obj/effect/rune/manifest/New(loc)
..()
cultist_desc = "manifests a spirit as a servant of [ticker.cultdat.entity_title3]. The invoker must not move from atop the rune, and will take damage for each summoned spirit."
cultist_desc = "manifests a spirit as a servant of [SSticker.cultdat.entity_title3]. The invoker must not move from atop the rune, and will take damage for each summoned spirit."
notify_ghosts("Manifest rune created in [get_area(src)].", ghost_sound='sound/effects/ghost2.ogg', source = src)
@@ -1033,10 +1033,10 @@ var/list/teleport_runes = list()
N.health = 20
N.mouse_opacity = MOUSE_OPACITY_TRANSPARENT
new_human.key = ghost_to_spawn.key
ticker.mode.add_cultist(new_human.mind, 0)
SSticker.mode.add_cultist(new_human.mind, 0)
summoned_guys |= new_human
ghosts++
to_chat(new_human, "<span class='cultitalic'><b>You are a servant of [ticker.cultdat.entity_title3]. You have been made semi-corporeal by the cult of [ticker.cultdat.entity_name], and you are to serve them at all costs.</b></span>")
to_chat(new_human, "<span class='cultitalic'><b>You are a servant of [SSticker.cultdat.entity_title3]. You have been made semi-corporeal by the cult of [SSticker.cultdat.entity_name], and you are to serve them at all costs.</b></span>")
while(user in get_turf(src))
if(user.stat)
+1 -1
View File
@@ -41,7 +41,7 @@
invocation = "Ra'sha yoka!"
/obj/item/paper/talisman/malformed/invoke(mob/living/user, successfuluse = 1)
to_chat(user, "<span class='cultitalic'>You feel a pain in your head. [ticker.cultdat.entity_title3] is displeased.</span>")
to_chat(user, "<span class='cultitalic'>You feel a pain in your head. [SSticker.cultdat.entity_title3] is displeased.</span>")
if(iscarbon(user))
var/mob/living/carbon/C = user
C.apply_damage(10, BRUTE, "head")
+2 -2
View File
@@ -300,9 +300,9 @@ var/global/list/lawlorify = list (
to_chat(world, "<font size=5><span class='danger'>SLOTH, WRATH, GLUTTONY, ACEDIA, ENVY, GREED, PRIDE! FIRES OF HELL AWAKEN!!</span></font>")
world << 'sound/hallucinations/veryfar_noise.ogg'
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++
/datum/devilinfo/proc/increase_arch_devil()
if(!ascendable)
+1 -1
View File
@@ -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
+2 -2
View File
@@ -75,8 +75,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)
// feedback_set_details("revision","[revdata.revision]")
feedback_set_details("server_ip","[world.internet_address]:[world.port]")
+1 -1
View File
@@ -312,5 +312,5 @@ datum/game_mode/proc/auto_declare_completion_heist()
message_admins("[key_name_admin(user)] has pressed the vox win button.")
log_admin("[key_name(user)] pressed the vox win button during a vox round.")
var/datum/game_mode/heist/H = ticker.mode
var/datum/game_mode/heist/H = SSticker.mode
H.win_button_triggered = 1
+2 -2
View File
@@ -113,10 +113,10 @@
if(man.client && man.client.prefs.nanotrasen_relation == "Opposed")
//don't include suspects who can't possibly be the antag based on their job (no suspecting the captain of being a damned dirty tator)
if(man.mind && man.mind.assigned_role)
if((man.mind.assigned_role in ticker.mode.protected_jobs) || (man.mind.assigned_role in ticker.mode.restricted_jobs))
if((man.mind.assigned_role in SSticker.mode.protected_jobs) || (man.mind.assigned_role in SSticker.mode.restricted_jobs))
return
//don't include suspects who can't possibly be the antag based on their species (no suspecting the machines of being sneaky changelings)
if(man.dna.species.name in ticker.mode.protected_species)
if(man.dna.species.name in SSticker.mode.protected_species)
return
dudes += man
for(var/i = 0, i < max(GLOB.player_list.len/10,2), i++)
@@ -111,7 +111,7 @@
to_chat(L, "<span class='danger'><B>The blast wave from [src] tears you atom from atom!</B></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
@@ -251,14 +251,14 @@
/datum/game_mode/proc/remove_abductor(datum/mind/abductor_mind)
if(abductor_mind in abductors)
ticker.mode.abductors -= abductor_mind
SSticker.mode.abductors -= abductor_mind
abductor_mind.special_role = null
abductor_mind.current.create_attack_log("<span class='danger'>No longer abductor</span>")
if(issilicon(abductor_mind.current))
to_chat(abductor_mind.current, "<span class='userdanger'>You have been turned into a robot! You are no longer an abductor.</span>")
else
to_chat(abductor_mind.current, "<span class='userdanger'>You have been brainwashed! You are no longer an abductor.</span>")
ticker.mode.update_abductor_icons_removed(abductor_mind)
SSticker.mode.update_abductor_icons_removed(abductor_mind)
/datum/game_mode/proc/update_abductor_icons_added(datum/mind/alien_mind)
var/datum/atom_hud/antag/hud = huds[ANTAG_HUD_ABDUCTOR]
@@ -140,14 +140,14 @@
to_chat(H, "<big><span class='warning'><b>You can't remember how you got here...</b></span></big>")
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
var/obj_count = 1
to_chat(H, "<span class='notice'>Your current objectives:</span>")
for(var/datum/objective/objective in H.mind.objectives)
to_chat(H, "<B>Objective #[obj_count]</B>: [objective.explanation_text]")
obj_count++
ticker.mode.update_abductor_icons_added(H.mind)
SSticker.mode.update_abductor_icons_added(H.mind)
for(var/obj/item/organ/internal/heart/gland/G in H.internal_organs)
G.Start()
@@ -21,7 +21,7 @@
player_mind.transfer_to(S)
player_mind.assigned_role = SPECIAL_ROLE_MORPH
player_mind.special_role = 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_of_morph] has been made into morph by an event.")
@@ -182,7 +182,7 @@
objective2.owner = mind
mind.objectives += objective2
to_chat(src, "<b>Objective #2</b>: [objective2.explanation_text]")
ticker.mode.traitors |= mind //Necessary for announcing
SSticker.mode.traitors |= mind //Necessary for announcing
/mob/living/simple_animal/revenant/proc/giveSpells()
mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/night_vision/revenant(null))
@@ -429,7 +429,7 @@
player_mind.transfer_to(R)
player_mind.assigned_role = SPECIAL_ROLE_REVENANT
player_mind.special_role = 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>")
@@ -45,7 +45,7 @@
player_mind.transfer_to(revvie)
player_mind.assigned_role = SPECIAL_ROLE_REVENANT
player_mind.special_role = SPECIAL_ROLE_REVENANT
ticker.mode.traitors |= player_mind
SSticker.mode.traitors |= player_mind
message_admins("[key_of_revenant] has been made into a revenant by an event.")
log_game("[key_of_revenant] was spawned as a revenant by an event.")
return 1
@@ -72,7 +72,7 @@
if(!(vialspawned))
var/datum/objective/slaughter/objective = new
var/datum/objective/demonFluff/fluffObjective = new
ticker.mode.traitors |= mind
SSticker.mode.traitors |= mind
objective.owner = mind
fluffObjective.owner = mind
//Paradise Port:I added the objective for one spawned like this
@@ -174,7 +174,7 @@
S.mind.assigned_role = "Harbringer of the Slaughter"
S.mind.special_role = "Harbringer of the Slaughter"
to_chat(S, playstyle_string)
ticker.mode.add_cultist(S.mind)
SSticker.mode.add_cultist(S.mind)
var/obj/effect/proc_holder/spell/targeted/sense_victims/SV = new
AddSpell(SV)
var/datum/objective/new_objective = new /datum/objective
+6 -6
View File
@@ -4,7 +4,7 @@
var/list/datum/mind/syndicates = list()
proc/issyndicate(mob/living/M as mob)
return istype(M) && M.mind && ticker && ticker.mode && (M.mind in ticker.mode.syndicates)
return istype(M) && M.mind && SSticker && SSticker.mode && (M.mind in SSticker.mode.syndicates)
/datum/game_mode/nuclear
name = "nuclear emergency"
@@ -64,7 +64,7 @@ proc/issyndicate(mob/living/M as mob)
/datum/game_mode/proc/remove_operative(datum/mind/operative_mind)
if(operative_mind in syndicates)
ticker.mode.syndicates -= operative_mind
SSticker.mode.syndicates -= operative_mind
operative_mind.special_role = null
for(var/datum/objective/nuclear/O in operative_mind.objectives)
operative_mind.objectives -= O
@@ -73,7 +73,7 @@ proc/issyndicate(mob/living/M as mob)
to_chat(operative_mind.current, "<span class='userdanger'>You have been turned into a robot! You are no longer a Syndicate operative.</span>")
else
to_chat(operative_mind.current, "<span class='userdanger'>You have been brainwashed! You are no longer a Syndicate operative.</span>")
ticker.mode.update_synd_icons_removed(operative_mind)
SSticker.mode.update_synd_icons_removed(operative_mind)
////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////
@@ -208,7 +208,7 @@ proc/issyndicate(mob/living/M as mob)
P.stamp(stamp)
qdel(stamp)
if(ticker.mode.config_tag=="nuclear")
if(SSticker.mode.config_tag=="nuclear")
P.loc = synd_mind.current.loc
else
var/mob/living/carbon/human/H = synd_mind.current
@@ -437,7 +437,7 @@ proc/issyndicate(mob/living/M as mob)
/datum/game_mode/nuclear/set_scoreboard_gvars()
var/foecount = 0
for(var/datum/mind/M in ticker.mode.syndicates)
for(var/datum/mind/M in SSticker.mode.syndicates)
foecount++
if(!M || !M.current)
score_opkilled++
@@ -490,7 +490,7 @@ proc/issyndicate(mob/living/M as mob)
var/diskdat = ""
var/bombdat = null
for(var/datum/mind/M in ticker.mode.syndicates)
for(var/datum/mind/M in SSticker.mode.syndicates)
foecount++
for(var/mob/living/C in world)
@@ -21,7 +21,7 @@
return
declaring_war = TRUE
var/are_you_sure = alert(user, "Consult your team carefully before you declare war on [station_name()]. Are you sure you want to alert the enemy crew? You have [-round((world.time-round_start_time - CHALLENGE_TIME_LIMIT)/10)] seconds to decide.", "Declare war?", "Yes", "No")
var/are_you_sure = alert(user, "Consult your team carefully before you declare war on [station_name()]. Are you sure you want to alert the enemy crew? You have [-round((world.time-SSticker.round_start_time - CHALLENGE_TIME_LIMIT)/10)] seconds to decide.", "Declare war?", "Yes", "No")
declaring_war = FALSE
if(!check_allowed(user))
@@ -88,7 +88,7 @@
if(!is_admin_level(user.z))
to_chat(user, "You have to be at your base to use this.")
return FALSE
if((world.time - round_start_time) > CHALLENGE_TIME_LIMIT) // Only count after the round started
if((world.time - SSticker.round_start_time) > CHALLENGE_TIME_LIMIT) // Only count after the round started
to_chat(user, "It's too late to declare hostilities. Your benefactors are already busy with other schemes. You'll have to make do with what you have on hand.")
return FALSE
for(var/obj/machinery/computer/shuttle/syndicate/S in GLOB.machines)
+13 -13
View File
@@ -354,8 +354,8 @@ var/bomb_set
if(!lighthack)
icon_state = "nuclearbomb3"
playsound(src,'sound/machines/alarm.ogg',100,0,5)
if(ticker && ticker.mode)
ticker.mode.explosion_in_progress = 1
if(SSticker && SSticker.mode)
SSticker.mode.explosion_in_progress = 1
sleep(100)
enter_allowed = 0
@@ -368,17 +368,17 @@ var/bomb_set
else
off_station = 2
if(ticker)
if(ticker.mode && ticker.mode.name == "nuclear emergency")
if(SSticker)
if(SSticker.mode && SSticker.mode.name == "nuclear emergency")
var/obj/docking_port/mobile/syndie_shuttle = SSshuttle.getShuttle("syndicate")
if(syndie_shuttle)
ticker.mode:syndies_didnt_escape = is_station_level(syndie_shuttle.z)
ticker.mode:nuke_off_station = off_station
ticker.station_explosion_cinematic(off_station,null)
if(ticker.mode)
ticker.mode.explosion_in_progress = 0
if(ticker.mode.name == "nuclear emergency")
ticker.mode:nukes_left --
SSticker.mode:syndies_didnt_escape = is_station_level(syndie_shuttle.z)
SSticker.mode:nuke_off_station = off_station
SSticker.station_explosion_cinematic(off_station,null)
if(SSticker.mode)
SSticker.mode.explosion_in_progress = 0
if(SSticker.mode.name == "nuclear emergency")
SSticker.mode:nukes_left --
else if(off_station == 1)
to_chat(world, "<b>A nuclear device was set off, but the explosion was out of reach of the station!</b>")
else if(off_station == 2)
@@ -386,10 +386,10 @@ var/bomb_set
else
to_chat(world, "<b>The station was destoyed by the nuclear blast!</b>")
ticker.mode.station_was_nuked = (off_station<2) //offstation==1 is a draw. the station becomes irradiated and needs to be evacuated.
SSticker.mode.station_was_nuked = (off_station<2) //offstation==1 is a draw. the station becomes irradiated and needs to be evacuated.
//kinda shit but I couldn't get permission to do what I wanted to do.
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
world.Reboot("Station destroyed by Nuclear Device.", "end_error", "nuke - unhandled ending")
return
return
+2 -2
View File
@@ -273,7 +273,7 @@
var/mob/living/carbon/nearest_op = null
/obj/item/pinpointer/operative/attack_self()
if(!usr.mind || !(usr.mind in ticker.mode.syndicates))
if(!usr.mind || !(usr.mind in SSticker.mode.syndicates))
to_chat(usr, "<span class='danger'>AUTHENTICATION FAILURE. ACCESS DENIED.</span>")
return 0
if(!active)
@@ -290,7 +290,7 @@
nearest_op = null //Resets nearest_op every time it scans
var/closest_distance = 1000
for(var/mob/living/carbon/M in GLOB.mob_list)
if(M.mind && (M.mind in ticker.mode.syndicates))
if(M.mind && (M.mind in SSticker.mode.syndicates))
if(get_dist(M, get_turf(src)) < closest_distance) //Actually points toward the nearest op, instead of a random one like it used to
nearest_op = M
+13 -13
View File
@@ -43,7 +43,7 @@ var/list/potential_theft_objectives = subtypesof(/datum/theft_objective) - /datu
/datum/objective/proc/find_target()
var/list/possible_targets = list()
for(var/datum/mind/possible_target in ticker.minds)
for(var/datum/mind/possible_target in SSticker.minds)
if(is_invalid_target(possible_target))
continue
@@ -263,9 +263,9 @@ var/list/potential_theft_objectives = subtypesof(/datum/theft_objective) - /datu
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
@@ -287,7 +287,7 @@ var/list/potential_theft_objectives = subtypesof(/datum/theft_objective) - /datu
/datum/objective/escape/escape_with_identity/find_target()
var/list/possible_targets = list() //Copypasta because NO_DNA races, yay for snowflakes.
for(var/datum/mind/possible_target in ticker.minds)
for(var/datum/mind/possible_target in SSticker.minds)
if(possible_target != owner && ishuman(possible_target.current) && (possible_target.current.stat != DEAD) && possible_target.current.client)
var/mob/living/carbon/human/H = possible_target.current
if(!(NO_DNA in H.dna.species.species_traits))
@@ -452,19 +452,19 @@ var/list/potential_theft_objectives = subtypesof(/datum/theft_objective) - /datu
/datum/objective/absorb
/datum/objective/absorb/proc/gen_amount_goal(var/lowbound = 4, var/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/new_player/P in GLOB.player_list)
if(P.client && P.ready && P.mind != owner)
if(P.client.prefs && (P.client.prefs.species == "Machine")) // Special check for species that can't be absorbed. No better solution.
continue
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 GLOB.player_list)
if(NO_DNA in P.dna.species.species_traits)
continue
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)
@@ -531,7 +531,7 @@ var/list/potential_theft_objectives = subtypesof(/datum/theft_objective) - /datu
var/list/possible_targets = list()
var/list/priority_targets = list()
for(var/datum/mind/possible_target in ticker.minds)
for(var/datum/mind/possible_target in SSticker.minds)
if(possible_target != owner && ishuman(possible_target.current) && (possible_target.current.stat != DEAD) && (possible_target.assigned_role != possible_target.special_role))
possible_targets += possible_target
for(var/role in roles)
@@ -627,7 +627,7 @@ var/list/potential_theft_objectives = subtypesof(/datum/theft_objective) - /datu
if(total_amount >= target_amount)
return 1
var/datum/game_mode/heist/H = ticker.mode
var/datum/game_mode/heist/H = SSticker.mode
for(var/datum/mind/raider in H.raiders)
if(raider.current)
for(var/obj/O in raider.current.get_contents())
@@ -697,7 +697,7 @@ var/list/potential_theft_objectives = subtypesof(/datum/theft_objective) - /datu
S = I
total_amount += S.get_amount()
var/datum/game_mode/heist/H = ticker.mode
var/datum/game_mode/heist/H = SSticker.mode
for(var/datum/mind/raider in H.raiders)
if(raider.current)
for(var/obj/item/O in raider.current.get_contents())
@@ -714,7 +714,7 @@ var/list/potential_theft_objectives = subtypesof(/datum/theft_objective) - /datu
explanation_text = "Do not leave any Vox behind, alive or dead."
/datum/objective/heist/inviolate_crew/check_completion()
var/datum/game_mode/heist/H = ticker.mode
var/datum/game_mode/heist/H = SSticker.mode
if(H.is_raider_crew_safe())
return 1
return 0
@@ -726,7 +726,7 @@ var/list/potential_theft_objectives = subtypesof(/datum/theft_objective) - /datu
var/vox_allowed_kills = 3 // The number of people the vox can accidently kill. Mostly a counter to people killing themselves if a raider touches them to force fail.
var/vox_total_kills = 0
var/datum/game_mode/heist/H = ticker.mode
var/datum/game_mode/heist/H = SSticker.mode
for(var/datum/mind/raider in H.raiders)
vox_total_kills += raider.kills.len // Kills are listed in the mind; uses this to calculate vox kills
+5 -5
View File
@@ -87,7 +87,7 @@
if(check_counter >= 5)
if(!finished)
check_heads()
ticker.mode.check_win()
SSticker.mode.check_win()
check_counter = 0
return FALSE
@@ -369,7 +369,7 @@
/datum/game_mode/revolution/set_scoreboard_gvars()
var/foecount = 0
for(var/datum/mind/M in ticker.mode.head_revolutionaries)
for(var/datum/mind/M in SSticker.mode.head_revolutionaries)
foecount++
if(!M || !M.current)
score_opkilled++
@@ -408,10 +408,10 @@
var/comcount = 0
var/revcount = 0
var/loycount = 0
for(var/datum/mind/M in ticker.mode:head_revolutionaries)
for(var/datum/mind/M in SSticker.mode:head_revolutionaries)
if(M.current && M.current.stat != DEAD)
foecount++
for(var/datum/mind/M in ticker.mode:revolutionaries)
for(var/datum/mind/M in SSticker.mode:revolutionaries)
if(M.current && M.current.stat != DEAD)
revcount++
for(var/mob/living/carbon/human/player in world)
@@ -421,7 +421,7 @@
if(player.stat != DEAD)
comcount++
else
if(player.mind in ticker.mode.revolutionaries) continue
if(player.mind in SSticker.mode.revolutionaries) continue
loycount++
for(var/mob/living/silicon/X in world)
+8 -8
View File
@@ -1,9 +1,9 @@
/datum/controller/gameticker/proc/scoreboard()
/datum/controller/subsystem/ticker/proc/scoreboard()
//Print a list of antagonists to the server log
var/list/total_antagonists = list()
//Look into all mobs in world, dead or alive
for(var/datum/mind/Mind in minds)
for(var/datum/mind/Mind in SSticker.minds)
var/temprole = Mind.special_role
if(temprole) //if they are an antagonist of some sort.
if(temprole in total_antagonists) //If the role exists already, add the name to it
@@ -66,8 +66,8 @@
score_dmgestjob = E.job
score_dmgestkey = E.key
if(ticker && ticker.mode)
ticker.mode.set_scoreboard_gvars()
if(SSticker && SSticker.mode)
SSticker.mode.set_scoreboard_gvars()
// Check station's power levels
@@ -147,7 +147,7 @@
E.scorestats()
// A recursive function to properly determine the wealthiest escapee
/datum/controller/gameticker/proc/get_score_container_worth(atom/C, level=0)
/datum/controller/subsystem/ticker/proc/get_score_container_worth(atom/C, level=0)
if(level >= 5)
// in case the containers recurse or something
return 0
@@ -171,8 +171,8 @@
/mob/proc/scorestats()
var/dat = "<b>Round Statistics and Score</b><br><hr>"
if(ticker && ticker.mode)
dat += ticker.mode.get_scoreboard_stats()
if(SSticker && SSticker.mode)
dat += SSticker.mode.get_scoreboard_stats()
dat += {"
<b><u>General Statistics</u></b><br>
@@ -208,7 +208,7 @@
else
dat += "No-one escaped!<br>"
dat += ticker.mode.declare_job_completion()
dat += SSticker.mode.declare_job_completion()
dat += {"
<hr><br>
+4 -4
View File
@@ -142,12 +142,12 @@
qdel(F)
continue
else
ticker.factions.Add(F)
ticker.availablefactions.Add(F)
SSticker.factions.Add(F)
SSticker.availablefactions.Add(F)
// Populate the syndicate coalition:
for(var/datum/faction/syndicate/S in ticker.factions)
ticker.syndicate_coalition.Add(S)
for(var/datum/faction/syndicate/S in SSticker.factions)
SSticker.syndicate_coalition.Add(S)
/proc/setupcult()
var/static/datum/cult_info/picked_cult // Only needs to get picked once
+3 -3
View File
@@ -56,15 +56,15 @@ Made by Xhuis
var/thrall_ratio = 1
/proc/is_thrall(var/mob/living/M)
return istype(M) && M.mind && ticker && ticker.mode && (M.mind in ticker.mode.shadowling_thralls)
return istype(M) && M.mind && SSticker && SSticker.mode && (M.mind in SSticker.mode.shadowling_thralls)
/proc/is_shadow_or_thrall(var/mob/living/M)
return istype(M) && M.mind && ticker && ticker.mode && ((M.mind in ticker.mode.shadowling_thralls) || (M.mind in ticker.mode.shadows))
return istype(M) && M.mind && SSticker && SSticker.mode && ((M.mind in SSticker.mode.shadowling_thralls) || (M.mind in SSticker.mode.shadows))
/proc/is_shadow(var/mob/living/M)
return istype(M) && M.mind && ticker && ticker.mode && (M.mind in ticker.mode.shadows)
return istype(M) && M.mind && SSticker && SSticker.mode && (M.mind in SSticker.mode.shadows)
/datum/game_mode/shadowling
@@ -216,11 +216,11 @@
/obj/effect/proc_holder/spell/targeted/enthrall/cast(list/targets, mob/user = usr)
var/mob/living/carbon/human/ling = user
listclearnulls(ticker.mode.shadowling_thralls)
if(!(ling.mind in ticker.mode.shadows))
listclearnulls(SSticker.mode.shadowling_thralls)
if(!(ling.mind in SSticker.mode.shadows))
return
if(!isshadowling(ling))
if(ticker.mode.shadowling_thralls.len >= 5)
if(SSticker.mode.shadowling_thralls.len >= 5)
charge_counter = charge_max
return
for(var/mob/living/carbon/human/target in targets)
@@ -291,7 +291,7 @@
target.visible_message("<span class='big'>[target] looks to have experienced a revelation!</span>", \
"<span class='warning'>False faces all d<b>ark not real not real not--</b></span>")
target.setOxyLoss(0) //In case the shadowling was choking them out
ticker.mode.add_thrall(target.mind)
SSticker.mode.add_thrall(target.mind)
target.mind.special_role = SPECIAL_ROLE_SHADOWLING_THRALL
/obj/effect/proc_holder/spell/targeted/shadowling_regenarmor //Resets a shadowling's species to normal, removes genetic defects, and re-equips their armor
@@ -345,7 +345,7 @@
return
for(var/mob/living/target in targets)
var/thralls = 0
var/victory_threshold = ticker.mode.required_thralls
var/victory_threshold = SSticker.mode.required_thralls
var/mob/M
to_chat(target, "<span class='shadowling'><b>You focus your telepathic energies abound, harnessing and drawing together the strength of your thralls.</b></span>")
@@ -359,24 +359,24 @@
to_chat(target, "<span class='warning'>Your concentration has been broken. The mental hooks you have sent out now retract into your mind.</span>")
return
if(thralls >= CEILING(3 * ticker.mode.thrall_ratio, 1) && !screech_acquired)
if(thralls >= CEILING(3 * SSticker.mode.thrall_ratio, 1) && !screech_acquired)
screech_acquired = 1
to_chat(target, "<span class='shadowling'><i>The power of your thralls has granted you the <b>Sonic Screech</b> ability. This ability will shatter nearby windows and deafen enemies, plus stunning silicon lifeforms.</span>")
target.mind.AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/unearthly_screech(null))
if(thralls >= CEILING(5 * ticker.mode.thrall_ratio, 1) && !blind_smoke_acquired)
if(thralls >= CEILING(5 * SSticker.mode.thrall_ratio, 1) && !blind_smoke_acquired)
blind_smoke_acquired = 1
to_chat(target, "<span class='shadowling'><i>The power of your thralls has granted you the <b>Blinding Smoke</b> ability. \
It will create a choking cloud that will blind any non-thralls who enter.</i></span>")
target.mind.AddSpell(new /obj/effect/proc_holder/spell/targeted/blindness_smoke(null))
if(thralls >= CEILING(7 * ticker.mode.thrall_ratio, 1) && !nullChargeAcquired)
if(thralls >= CEILING(7 * SSticker.mode.thrall_ratio, 1) && !nullChargeAcquired)
nullChargeAcquired = 1
to_chat(user, "<span class='shadowling'><i>The power of your thralls has granted you the <b>Null Charge</b> ability. This ability will drain an APC's contents to the void, preventing it from recharging \
or sending power until repaired.</i></span>")
target.mind.AddSpell(new /obj/effect/proc_holder/spell/aoe_turf/null_charge(null))
if(thralls >= CEILING(9 * ticker.mode.thrall_ratio, 1) && !reviveThrallAcquired)
if(thralls >= CEILING(9 * SSticker.mode.thrall_ratio, 1) && !reviveThrallAcquired)
reviveThrallAcquired = 1
to_chat(target, "<span class='shadowling'><i>The power of your thralls has granted you the <b>Black Recuperation</b> ability. \
This will, after a short time, bring a dead thrall completely back to life with no bodily defects.</i></span>")
@@ -578,7 +578,7 @@
charge_counter = charge_max
return
var/empowered_thralls = 0
for(var/datum/mind/M in ticker.mode.shadowling_thralls)
for(var/datum/mind/M in SSticker.mode.shadowling_thralls)
if(!ishuman(M.current))
return
var/mob/living/carbon/human/H = M.current
@@ -767,7 +767,7 @@
to_chat(user, "<span class='shadowling'>You instantly rearrange <b>[target]</b>'s memories, hyptonitizing [target.p_them()] into a thrall.</span>")
to_chat(target, "<span class='userdanger'><font size=3>An agonizing spike of pain drives into your mind, and--</font></span>")
ticker.mode.add_thrall(target.mind)
SSticker.mode.add_thrall(target.mind)
target.mind.special_role = SPECIAL_ROLE_SHADOWLING_THRALL
target.add_language("Shadowling Hivemind")
@@ -179,9 +179,9 @@ var/list/possibleShadowlingNames = list("U'ruan", "Y`shej", "Nex", "Hel-uae", "N
H.invisibility = 60 //This is pretty bad, but is also necessary for the shuttle call to function properly
H.loc = A
sleep(50)
if(!ticker.mode.shadowling_ascended)
if(!SSticker.mode.shadowling_ascended)
SSshuttle.emergency.request(null, 0.3)
SSshuttle.emergency.canRecall = FALSE
ticker.mode.shadowling_ascended = 1
SSticker.mode.shadowling_ascended = 1
A.mind.RemoveSpell(src)
qdel(H)
+2 -2
View File
@@ -348,14 +348,14 @@
/datum/game_mode/proc/remove_traitor(datum/mind/traitor_mind)
if(traitor_mind in traitors)
ticker.mode.traitors -= traitor_mind
SSticker.mode.traitors -= traitor_mind
traitor_mind.special_role = null
traitor_mind.current.create_attack_log("<span class='danger'>De-traitored</span>")
if(issilicon(traitor_mind.current))
to_chat(traitor_mind.current, "<span class='userdanger'>You have been turned into a robot! You are no longer a traitor.</span>")
else
to_chat(traitor_mind.current, "<span class='userdanger'>You have been brainwashed! You are no longer a traitor.</span>")
ticker.mode.update_traitor_icons_removed(traitor_mind)
SSticker.mode.update_traitor_icons_removed(traitor_mind)
/datum/game_mode/proc/update_traitor_icons_added(datum/mind/traitor_mind)
var/datum/atom_hud/antag/tatorhud = huds[ANTAG_HUD_TRAITOR]
+3 -3
View File
@@ -288,7 +288,7 @@ You are weak to holy things and starlight. Don't go into space and avoid the Cha
else
H.LAssailant = owner
while(do_mob(owner, H, 50))
if(!(owner.mind in ticker.mode.vampires))
if(!(owner.mind in SSticker.mode.vampires))
to_chat(owner, "<span class='warning'>Your fangs have disappeared!</span>")
return
old_bloodtotal = bloodtotal
@@ -337,7 +337,7 @@ You are weak to holy things and starlight. Don't go into space and avoid the Cha
/datum/game_mode/proc/remove_vampire(datum/mind/vampire_mind)
if(vampire_mind in vampires)
ticker.mode.vampires -= vampire_mind
SSticker.mode.vampires -= vampire_mind
vampire_mind.special_role = null
vampire_mind.current.create_attack_log("<span class='danger'>De-vampired</span>")
if(vampire_mind.vampire)
@@ -347,7 +347,7 @@ You are weak to holy things and starlight. Don't go into space and avoid the Cha
to_chat(vampire_mind.current, "<span class='userdanger'>You have been turned into a robot! You can feel your powers fading away...</span>")
else
to_chat(vampire_mind.current, "<span class='userdanger'>You have been brainwashed! You are no longer a vampire.</span>")
ticker.mode.update_vampire_icons_removed(vampire_mind)
SSticker.mode.update_vampire_icons_removed(vampire_mind)
//prepare for copypaste
/datum/game_mode/proc/update_vampire_icons_added(datum/mind/vampire_mind)
+10 -10
View File
@@ -276,7 +276,7 @@
/proc/isvampirethrall(mob/living/M as mob)
return istype(M) && M.mind && ticker && ticker.mode && (M.mind in ticker.mode.vampire_enthralled)
return istype(M) && M.mind && SSticker && SSticker.mode && (M.mind in SSticker.mode.vampire_enthralled)
/obj/effect/proc_holder/spell/vampire/targetted/enthrall
name = "Enthrall (300)"
@@ -315,11 +315,11 @@
if(!C.mind)
to_chat(user, "<span class='warning'>[C.name]'s mind is not there for you to enthrall.</span>")
return 0
if(enthrall_safe || ( C.mind in ticker.mode.vampires )||( C.mind.vampire )||( C.mind in ticker.mode.vampire_enthralled ))
if(enthrall_safe || ( C.mind in SSticker.mode.vampires )||( C.mind.vampire )||( C.mind in SSticker.mode.vampire_enthralled ))
C.visible_message("<span class='warning'>[C] seems to resist the takeover!</span>", "<span class='notice'>You feel a familiar sensation in your skull that quickly dissipates.</span>")
return 0
if(!affects(C))
C.visible_message("<span class='warning'>[C] seems to resist the takeover!</span>", "<span class='notice'>Your faith of [ticker.Bible_deity_name] has kept your mind clear of all evil.</span>")
C.visible_message("<span class='warning'>[C] seems to resist the takeover!</span>", "<span class='notice'>Your faith of [SSticker.Bible_deity_name] has kept your mind clear of all evil.</span>")
return 0
if(!ishuman(C))
to_chat(user, "<span class='warning'>You can only enthrall humans!</span>")
@@ -330,21 +330,21 @@
if(!istype(H))
return 0
var/ref = "\ref[user.mind]"
if(!(ref in ticker.mode.vampire_thralls))
ticker.mode.vampire_thralls[ref] = list(H.mind)
if(!(ref in SSticker.mode.vampire_thralls))
SSticker.mode.vampire_thralls[ref] = list(H.mind)
else
ticker.mode.vampire_thralls[ref] += H.mind
SSticker.mode.vampire_thralls[ref] += H.mind
ticker.mode.update_vampire_icons_added(H.mind)
ticker.mode.update_vampire_icons_added(user.mind)
SSticker.mode.update_vampire_icons_added(H.mind)
SSticker.mode.update_vampire_icons_added(user.mind)
var/datum/mindslaves/slaved = user.mind.som
H.mind.som = slaved
slaved.serv += H
slaved.add_serv_hud(user.mind, "vampire")//handles master servent icons
slaved.add_serv_hud(H.mind, "vampthrall")
ticker.mode.vampire_enthralled.Add(H.mind)
ticker.mode.vampire_enthralled[H.mind] = user.mind
SSticker.mode.vampire_enthralled.Add(H.mind)
SSticker.mode.vampire_enthralled[H.mind] = user.mind
H.mind.special_role = SPECIAL_ROLE_VAMPIRE_THRALL
to_chat(H, "<span class='danger'>You have been Enthralled by [user]. Follow [user.p_their()] every command.</span>")
to_chat(user, "<span class='warning'>You have successfully Enthralled [H]. <i>If [H.p_they()] refuse[H.p_s()] to do as you say just adminhelp.</i></span>")
+4 -4
View File
@@ -99,9 +99,9 @@
new_objective:target = H:mind
new_objective.explanation_text = "Protect [H.real_name], the wizard."
M.mind.objectives += new_objective
ticker.mode.traitors += M.mind
SSticker.mode.traitors += M.mind
M.mind.special_role = SPECIAL_ROLE_WIZARD_APPRENTICE
ticker.mode.update_wiz_icons_added(M.mind)
SSticker.mode.update_wiz_icons_added(M.mind)
M.faction = list("wizard")
else
used = 0
@@ -283,7 +283,7 @@ var/global/list/multiverse = list()
usr.mind.objectives += hijack_objective
hijack_objective.explanation_text = "Ensure only [usr.real_name] and [usr.p_their()] copies are on the shuttle!"
to_chat(usr, "<B>Objective #[1]</B>: [hijack_objective.explanation_text]")
ticker.mode.traitors += usr.mind
SSticker.mode.traitors += usr.mind
usr.mind.special_role = "[usr.real_name] Prime"
evil = TRUE
else
@@ -293,7 +293,7 @@ var/global/list/multiverse = list()
new_objective.explanation_text = "Survive, and help defend the innocent from the mobs of multiverse clones."
to_chat(usr, "<B>Objective #[1]</B>: [new_objective.explanation_text]")
usr.mind.objectives += new_objective
ticker.mode.traitors += usr.mind
SSticker.mode.traitors += usr.mind
usr.mind.special_role = "[usr.real_name] Prime"
evil = FALSE
else
+17 -17
View File
@@ -273,11 +273,11 @@
Z.key = A.key
Z.faction |= "\ref[U]"
if(iscultist(U))
if(ticker.mode.name == "cult")
ticker.mode:add_cultist(Z.mind)
if(SSticker.mode.name == "cult")
SSticker.mode:add_cultist(Z.mind)
else
ticker.mode.cult+=Z.mind
ticker.mode.update_cult_icons_added(Z.mind)
SSticker.mode.cult+=Z.mind
SSticker.mode.update_cult_icons_added(Z.mind)
qdel(T)
to_chat(Z, "<B>You are a Juggernaut. Though slow, your shell can withstand extreme punishment, create shield walls and even deflect energy weapons, and rip apart enemies and walls alike.</B>")
to_chat(Z, "<B>You are still bound to serve your creator, follow [U.p_their()] orders and help [U.p_them()] complete [U.p_their()] goals at all costs.</B>")
@@ -289,11 +289,11 @@
Z.key = A.key
Z.faction |= "\ref[U]"
if(iscultist(U))
if(ticker.mode.name == "cult")
ticker.mode:add_cultist(Z.mind)
if(SSticker.mode.name == "cult")
SSticker.mode:add_cultist(Z.mind)
else
ticker.mode.cult+=Z.mind
ticker.mode.update_cult_icons_added(Z.mind)
SSticker.mode.cult+=Z.mind
SSticker.mode.update_cult_icons_added(Z.mind)
qdel(T)
to_chat(Z, "<B>You are a Wraith. Though relatively fragile, you are fast, deadly, and even able to phase through walls.</B>")
to_chat(Z, "<B>You are still bound to serve your creator, follow [U.p_their()] orders and help [U.p_them()] complete [U.p_their()] goals at all costs.</B>")
@@ -305,11 +305,11 @@
Z.key = A.key
Z.faction |= "\ref[U]"
if(iscultist(U))
if(ticker.mode.name == "cult")
ticker.mode:add_cultist(Z.mind)
if(SSticker.mode.name == "cult")
SSticker.mode:add_cultist(Z.mind)
else
ticker.mode.cult+=Z.mind
ticker.mode.update_cult_icons_added(Z.mind)
SSticker.mode.cult+=Z.mind
SSticker.mode.update_cult_icons_added(Z.mind)
qdel(T)
to_chat(Z, "<B>You are an Artificer. You are incredibly weak and fragile, but you are able to construct fortifications, use magic missile, repair allied constructs (by clicking on them), </B><I>and most important of all create new constructs</I><B> (Use your Artificer spell to summon a new construct shell and Summon Soulstone to create a new soulstone).</B>")
to_chat(Z, "<B>You are still bound to serve your creator, follow [U.p_their()] orders and help [U.p_them()] complete [U.p_their()] goals at all costs.</B>")
@@ -326,11 +326,11 @@
newstruct.faction |= "\ref[stoner]"
newstruct.key = target.key
if(stoner && iscultist(stoner) || cultoverride)
if(ticker.mode.name == "cult")
ticker.mode:add_cultist(newstruct.mind)
if(SSticker.mode.name == "cult")
SSticker.mode:add_cultist(newstruct.mind)
else
ticker.mode.cult+=newstruct.mind
ticker.mode.update_cult_icons_added(newstruct.mind)
SSticker.mode.cult+=newstruct.mind
SSticker.mode.update_cult_icons_added(newstruct.mind)
if(stoner && iswizard(stoner))
to_chat(newstruct, "<B>You are still bound to serve your creator, follow [stoner.p_their()] orders and help [stoner.p_them()] complete [stoner.p_their()] goals at all costs.</B>")
else if(stoner && iscultist(stoner))
@@ -357,7 +357,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"
+5 -5
View File
@@ -475,7 +475,7 @@
cost = 0
/datum/spellbook_entry/summon/ghosts/IsAvailible()
if(!ticker.mode)
if(!SSticker.mode)
return FALSE
else
return TRUE
@@ -495,9 +495,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
if(ticker.mode.name == "ragin' mages")
if(SSticker.mode.name == "ragin' mages")
return 0
else
return 1
@@ -518,9 +518,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
if(ticker.mode.name == "ragin' mages")
if(SSticker.mode.name == "ragin' mages")
return 0
else
return 1
+3 -3
View File
@@ -58,7 +58,7 @@
/datum/game_mode/proc/remove_wizard(datum/mind/wizard_mind)
if(wizard_mind in wizards)
ticker.mode.wizards -= wizard_mind
SSticker.mode.wizards -= wizard_mind
wizard_mind.special_role = null
wizard_mind.current.create_attack_log("<span class='danger'>De-wizarded</span>")
wizard_mind.current.spellremove(wizard_mind.current)
@@ -67,7 +67,7 @@
to_chat(wizard_mind.current, "<span class='userdanger'>You have been turned into a robot! You can feel your magical powers fading away...</span>")
else
to_chat(wizard_mind.current, "<span class='userdanger'>You have been brainwashed! You are no longer a wizard.</span>")
ticker.mode.update_wiz_icons_removed(wizard_mind)
SSticker.mode.update_wiz_icons_removed(wizard_mind)
/datum/game_mode/proc/update_wiz_icons_added(datum/mind/wiz_mind)
var/datum/atom_hud/antag/wizhud = huds[ANTAG_HUD_WIZ]
@@ -282,4 +282,4 @@ Made a proc so this is not repeated 14 (or more) times.*/
return 1
/proc/iswizard(mob/living/M as mob)
return istype(M) && M.mind && ticker && ticker.mode && (M.mind in ticker.mode.wizards)
return istype(M) && M.mind && SSticker && SSticker.mode && (M.mind in SSticker.mode.wizards)
+5 -5
View File
@@ -158,11 +158,11 @@
to_chat(H, "Welp, out of time, buddy. You're stuck. Next time choose faster.")
accepted = 1
if(ticker)
ticker.Bible_icon_state = B.icon_state
ticker.Bible_item_state = B.item_state
ticker.Bible_name = B.name
ticker.Bible_deity_name = B.deity_name
if(SSticker)
SSticker.Bible_icon_state = B.icon_state
SSticker.Bible_item_state = B.item_state
SSticker.Bible_name = B.name
SSticker.Bible_deity_name = B.deity_name
feedback_set_details("religion_deity", "[new_deity]")
feedback_set_details("religion_book", "[new_book_style]")
+1 -1
View File
@@ -44,7 +44,7 @@
/datum/game_mode/proc/declare_job_completion()
var/text = "<hr><b><u>Job Completion</u></b>"
for(var/datum/mind/employee in ticker.minds)
for(var/datum/mind/employee in SSticker.minds)
if(!employee.job_objectives.len)//If the employee had no objectives, don't need to process this.
continue
+16 -16
View File
@@ -417,24 +417,24 @@
/obj/machinery/clonepod/proc/update_clone_antag(var/mob/living/carbon/human/H)
// Check to see if the clone's mind is an antagonist of any kind and handle them accordingly to make sure they get their spells, HUD/whatever else back.
callHook("clone", list(H))
if((H.mind in ticker.mode:revolutionaries) || (H.mind in ticker.mode:head_revolutionaries))
ticker.mode.update_rev_icons_added() //So the icon actually appears
if(H.mind in ticker.mode.syndicates)
ticker.mode.update_synd_icons_added()
if(H.mind in ticker.mode.cult)
ticker.mode.add_cultist(occupant.mind)
ticker.mode.update_cult_icons_added() //So the icon actually appears
ticker.mode.update_cult_comms_added(H.mind) //So the comms actually appears
if((H.mind in ticker.mode.implanter) || (H.mind in ticker.mode.implanted))
ticker.mode.update_traitor_icons_added(H.mind) //So the icon actually appears
if((H.mind in SSticker.mode:revolutionaries) || (H.mind in SSticker.mode:head_revolutionaries))
SSticker.mode.update_rev_icons_added() //So the icon actually appears
if(H.mind in SSticker.mode.syndicates)
SSticker.mode.update_synd_icons_added()
if(H.mind in SSticker.mode.cult)
SSticker.mode.add_cultist(occupant.mind)
SSticker.mode.update_cult_icons_added() //So the icon actually appears
SSticker.mode.update_cult_comms_added(H.mind) //So the comms actually appears
if((H.mind in SSticker.mode.implanter) || (H.mind in SSticker.mode.implanted))
SSticker.mode.update_traitor_icons_added(H.mind) //So the icon actually appears
if(H.mind.vampire)
H.mind.vampire.update_owner(H)
if((H.mind in ticker.mode.vampire_thralls) || (H.mind in ticker.mode.vampire_enthralled))
ticker.mode.update_vampire_icons_added(H.mind)
if(H.mind in ticker.mode.changelings)
ticker.mode.update_change_icons_added(H.mind)
if((H.mind in ticker.mode.shadowling_thralls) || (H.mind in ticker.mode.shadows))
ticker.mode.update_shadow_icons_added(H.mind)
if((H.mind in SSticker.mode.vampire_thralls) || (H.mind in SSticker.mode.vampire_enthralled))
SSticker.mode.update_vampire_icons_added(H.mind)
if(H.mind in SSticker.mode.changelings)
SSticker.mode.update_change_icons_added(H.mind)
if((H.mind in SSticker.mode.shadowling_thralls) || (H.mind in SSticker.mode.shadows))
SSticker.mode.update_shadow_icons_added(H.mind)
//Put messages in the connected computer's temp var for display.
/obj/machinery/clonepod/proc/connected_message(message)
+2 -2
View File
@@ -134,8 +134,8 @@
return
if(P:brainmob.mind)
ticker.mode.remove_cultist(P:brainmob.mind, 1)
ticker.mode.remove_revolutionary(P:brainmob.mind, 1)
SSticker.mode.remove_cultist(P:brainmob.mind, 1)
SSticker.mode.remove_revolutionary(P:brainmob.mind, 1)
user.drop_item()
P.loc = src
@@ -439,7 +439,7 @@
to_chat(user, "<span class='warning'>The emergency shuttle may not be called while returning to Central Command.</span>")
return
if(ticker.mode.name == "blob")
if(SSticker.mode.name == "blob")
to_chat(user, "<span class='warning'>Under directive 7-10, [station_name()] is quarantined until further notice.</span>")
return
@@ -464,7 +464,7 @@
to_chat(user, "The shuttle is refueling. Please wait another [round((54000-world.time)/600)] minutes before trying again.")
return
if(ticker.mode.name == "epidemic")
if(SSticker.mode.name == "epidemic")
to_chat(user, "Under directive 7-10, [station_name()] is quarantined until further notice.")
return
@@ -481,7 +481,7 @@
/proc/cancel_call_proc(var/mob/user)
if(ticker.mode.name == "meteor")
if(SSticker.mode.name == "meteor")
return
if(SSshuttle.cancelEvac(user))
+6 -6
View File
@@ -53,7 +53,7 @@
var/dat
if(!( ticker ))
if(!( SSticker ))
return
dat += "<hr/><br/><b>[storage_name]</b><br/>"
@@ -364,13 +364,13 @@
// Skip past any cult sacrifice objective using this person
if(GAMEMODE_IS_CULT && is_sacrifice_target(occupant.mind))
var/datum/game_mode/cult/cult_mode = ticker.mode
var/datum/game_mode/cult/cult_mode = SSticker.mode
var/list/p_s_t = cult_mode.get_possible_sac_targets()
if(p_s_t.len)
cult_mode.sacrifice_target = pick(p_s_t)
for(var/datum/mind/H in ticker.mode.cult)
for(var/datum/mind/H in SSticker.mode.cult)
if(H.current)
to_chat(H.current, "<span class='danger'>[ticker.cultdat.entity_name]</span> murmurs, <span class='cultlarge'>[occupant] is beyond your reach. Sacrifice [cult_mode.sacrifice_target.current] instead...</span></span>")
to_chat(H.current, "<span class='danger'>[SSticker.cultdat.entity_name]</span> murmurs, <span class='cultlarge'>[occupant] is beyond your reach. Sacrifice [cult_mode.sacrifice_target.current] instead...</span></span>")
else
cult_mode.bypass_phase()
@@ -403,8 +403,8 @@
occupant.mind.objectives.Cut()
occupant.mind.special_role = null
else
if(ticker.mode.name == "AutoTraitor")
var/datum/game_mode/traitor/autotraitor/current_mode = ticker.mode
if(SSticker.mode.name == "AutoTraitor")
var/datum/game_mode/traitor/autotraitor/current_mode = SSticker.mode
current_mode.possible_traitors.Remove(occupant)
// Delete them from datacore.
+1 -1
View File
@@ -77,7 +77,7 @@
else
do_animate("deny")
return
if(!ticker)
if(!SSticker)
return
var/mob/living/M = AM
if(!M.restrained() && M.mob_size > MOB_SIZE_TINY && (!(isrobot(M) && M.stat)))
+2 -2
View File
@@ -57,8 +57,8 @@
return
if(istype(M, /mob/living/carbon/human))
var/mob/living/carbon/human/N = M
ticker.mode.equip_traitor(N)
ticker.mode.traitors += N.mind
SSticker.mode.equip_traitor(N)
SSticker.mode.traitors += N.mind
N.mind.special_role = SPECIAL_ROLE_TRAITOR
var/objective = "Free Objective"
switch(rand(1,100))
+4 -4
View File
@@ -1,7 +1,7 @@
/proc/get_rune_cult(word)
var/animated
if(word && !(ticker.cultdat.theme == "fire" || ticker.cultdat.theme == "death"))
if(word && !(SSticker.cultdat.theme == "fire" || SSticker.cultdat.theme == "death"))
animated = 1
else
animated = 0
@@ -18,11 +18,11 @@ var/runetype = "rune"
var/lookup = "[symbol_bits]-[animated]"
if(!ticker.mode)//work around for maps with runes and cultdat is not loaded all the way
if(!SSticker.mode)//work around for maps with runes and cultdat is not loaded all the way
runetype = "rune"
else if(ticker.cultdat.theme == "fire")
else if(SSticker.cultdat.theme == "fire")
runetype = "fire-rune"
else if(ticker.cultdat.theme == "death")
else if(SSticker.cultdat.theme == "death")
runetype = "death-rune"
@@ -28,7 +28,7 @@ var/global/list/image/splatter_cache = list()
. = ..()
update_icon()
if(GAMEMODE_IS_CULT)
var/datum/game_mode/cult/mode_ticker = ticker.mode
var/datum/game_mode/cult/mode_ticker = SSticker.mode
var/turf/T = get_turf(src)
if(T && (is_station_level(T.z)))//F I V E T I L E S
if(!(T in mode_ticker.bloody_floors))
@@ -48,7 +48,7 @@ var/global/list/image/splatter_cache = list()
/obj/effect/decal/cleanable/blood/Destroy()
if(GAMEMODE_IS_CULT)
var/datum/game_mode/cult/mode_ticker = ticker.mode
var/datum/game_mode/cult/mode_ticker = SSticker.mode
var/turf/T = get_turf(src)
if(T && (is_station_level(T.z)))
mode_ticker.bloody_floors -= T
@@ -14,11 +14,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)
return ..()
+3 -3
View File
@@ -155,14 +155,14 @@
/obj/item/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(!ismindshielded(M))
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))
times_used -- //Flashes less likely to burn out for headrevs when used for conversion
else
resisted = 1
@@ -51,7 +51,7 @@
if(((CLUMSY in user.mutations) || user.getBrainLoss() >= 60) && prob(50)) //too dumb to use flashlight properly
return ..() //just hit them in the head
if(!(istype(user, /mob/living/carbon/human) || ticker) && ticker.mode.name != "monkey") //don't have dexterity
if(!(istype(user, /mob/living/carbon/human) || SSticker) && SSticker.mode.name != "monkey") //don't have dexterity
to_chat(user, "<span class='notice'>You don't have the dexterity to do this!</span>")
return
+2 -2
View File
@@ -31,8 +31,8 @@ var/list/world_uplinks = list()
/obj/item/uplink/New()
..()
welcome = ticker.mode.uplink_welcome
uses = ticker.mode.uplink_uses
welcome = SSticker.mode.uplink_welcome
uses = SSticker.mode.uplink_uses
uplink_items = get_uplink_items()
world_uplinks += src
+1 -1
View File
@@ -245,7 +245,7 @@
to_chat(user, "<span class='warning'>Sticking a dead [M] into the frame would sort of defeat the purpose.</span>")
return
if(M.brainmob.mind in ticker.mode.head_revolutionaries)
if(M.brainmob.mind in SSticker.mode.head_revolutionaries)
to_chat(user, "<span class='warning'>The frame's firmware lets out a shrill sound, and flashes 'Abnormal Memory Engram'. It refuses to accept the [M].</span>")
return
+10 -10
View File
@@ -443,15 +443,15 @@
return ..()
if(!user.mind || !user.mind.isholy)
to_chat(user, "<span class='notice'>You are not close enough with [ticker.Bible_deity_name] to use [src].</span>")
to_chat(user, "<span class='notice'>You are not close enough with [SSticker.Bible_deity_name] to use [src].</span>")
return
if(praying)
to_chat(user, "<span class='notice'>You are already using [src].</span>")
return
user.visible_message("<span class='info'>[user] kneels[M == user ? null : " next to [M]"] and begins to utter a prayer to [ticker.Bible_deity_name].</span>", \
"<span class='info'>You kneel[M == user ? null : " next to [M]"] and begin a prayer to [ticker.Bible_deity_name].</span>")
user.visible_message("<span class='info'>[user] kneels[M == user ? null : " next to [M]"] and begins to utter a prayer to [SSticker.Bible_deity_name].</span>", \
"<span class='info'>You kneel[M == user ? null : " next to [M]"] and begin a prayer to [SSticker.Bible_deity_name].</span>")
praying = 1
if(do_after(user, 150, target = M))
@@ -460,18 +460,18 @@
if(target.mind)
if(iscultist(target))
ticker.mode.remove_cultist(target.mind) // This proc will handle message generation.
SSticker.mode.remove_cultist(target.mind) // This proc will handle message generation.
praying = 0
return
if(target.mind.vampire && !target.mind.vampire.get_ability(/datum/vampire_passive/full)) // Getting a full prayer off on a vampire will interrupt their powers for a large duration.
target.mind.vampire.nullified = max(120, target.mind.vampire.nullified + 120)
to_chat(target, "<span class='userdanger'>[user]'s prayer to [ticker.Bible_deity_name] has interfered with your power!</span>")
to_chat(target, "<span class='userdanger'>[user]'s prayer to [SSticker.Bible_deity_name] has interfered with your power!</span>")
praying = 0
return
if(prob(25))
to_chat(target, "<span class='notice'>[user]'s prayer to [ticker.Bible_deity_name] has eased your pain!</span>")
to_chat(target, "<span class='notice'>[user]'s prayer to [SSticker.Bible_deity_name] has eased your pain!</span>")
target.adjustToxLoss(-5)
target.adjustOxyLoss(-5)
target.adjustBruteLoss(-5)
@@ -480,7 +480,7 @@
praying = 0
else
to_chat(user, "<span class='notice'>Your prayer to [ticker.Bible_deity_name] was interrupted.</span>")
to_chat(user, "<span class='notice'>Your prayer to [SSticker.Bible_deity_name] was interrupted.</span>")
praying = 0
/obj/item/nullrod/rosary/process()
@@ -506,13 +506,13 @@
/obj/item/nullrod/salt/attack_self(mob/user)
if(!user.mind || !user.mind.isholy)
to_chat(user, "<span class='notice'>You are not close enough with [ticker.Bible_deity_name] to use [src].</span>")
to_chat(user, "<span class='notice'>You are not close enough with [SSticker.Bible_deity_name] to use [src].</span>")
return
if(!(ghostcall_CD > world.time))
ghostcall_CD = world.time + 3000 //deciseconds..5 minutes
user.visible_message("<span class='info'>[user] kneels and begins to utter a prayer to [ticker.Bible_deity_name] while drawing a circle with salt!</span>", \
"<span class='info'>You kneel and begin a prayer to [ticker.Bible_deity_name] while drawing a circle!</span>")
user.visible_message("<span class='info'>[user] kneels and begins to utter a prayer to [SSticker.Bible_deity_name] while drawing a circle with salt!</span>", \
"<span class='info'>You kneel and begin a prayer to [SSticker.Bible_deity_name] while drawing a circle!</span>")
notify_ghosts("The Chaplain is calling ghosts to [get_area(src)] with [name]!", source = src)
else
to_chat(user, "<span class='notice'>You need to wait before using [src] again.</span>")
@@ -19,14 +19,14 @@
/obj/item/implant/mindshield/implant(mob/target)
if(..())
if(target.mind in ticker.mode.head_revolutionaries || is_shadow_or_thrall(target))
if(target.mind in SSticker.mode.head_revolutionaries || is_shadow_or_thrall(target))
target.visible_message("<span class='warning'>[target] seems to resist the implant!</span>", "<span class='warning'>You feel the corporate tendrils of Nanotrasen try to invade your mind!</span>")
removed(target, 1)
qdel(src)
return -1
if(target.mind in ticker.mode.revolutionaries)
ticker.mode.remove_revolutionary(target.mind)
if(target.mind in ticker.mode.cult)
if(target.mind in SSticker.mode.revolutionaries)
SSticker.mode.remove_revolutionary(target.mind)
if(target.mind in SSticker.mode.cult)
to_chat(target, "<span class='warning'>You feel the corporate tendrils of Nanotrasen try to invade your mind!</span>")
else
to_chat(target, "<span class='notice'>Your mind feels hardened - more resistant to brainwashing.</span>")
@@ -45,15 +45,15 @@
return -1
H.implanting = 1
to_chat(H, "<span class='notice'>You feel completely loyal to [user.name].</span>")
if(!(user.mind in ticker.mode.implanter))
ticker.mode.implanter[ref] = list()
implanters = ticker.mode.implanter[ref]
if(!(user.mind in SSticker.mode.implanter))
SSticker.mode.implanter[ref] = list()
implanters = SSticker.mode.implanter[ref]
implanters.Add(H.mind)
ticker.mode.implanted.Add(H.mind)
ticker.mode.implanted[H.mind] = user.mind
//ticker.mode.implanter[user.mind] += H.mind
ticker.mode.implanter[ref] = implanters
ticker.mode.traitors += H.mind
SSticker.mode.implanted.Add(H.mind)
SSticker.mode.implanted[H.mind] = user.mind
//SSticker.mode.implanter[user.mind] += H.mind
SSticker.mode.implanter[ref] = implanters
SSticker.mode.traitors += H.mind
H.mind.special_role = SPECIAL_ROLE_TRAITOR
to_chat(H, "<span class='warning'><B>You're now completely loyal to [user.name]!</B> You now must lay down your life to protect [user.p_them()] and assist in [user.p_their()] goals at any cost.</span>")
var/datum/objective/protect/mindslave/MS = new
@@ -64,8 +64,8 @@
for(var/datum/objective/objective in H.mind.objectives)
to_chat(H, "<B>Objective #1</B>: [objective.explanation_text]")
ticker.mode.update_traitor_icons_added(user.mind)
ticker.mode.update_traitor_icons_added(H.mind)//handles datahuds/observerhuds
SSticker.mode.update_traitor_icons_added(user.mind)
SSticker.mode.update_traitor_icons_added(H.mind)//handles datahuds/observerhuds
if(user.mind.som)//do not add if not a traitor..and you just picked up an implanter in the hall...
var/datum/mindslaves/slaved = user.mind.som
@@ -77,12 +77,12 @@
log_admin("[key_name(user)] has mind-slaved [key_name(H)].")
activated = 1
if(jobban_isbanned(M, ROLE_SYNDICATE))
ticker.mode.replace_jobbanned_player(M, ROLE_SYNDICATE)
SSticker.mode.replace_jobbanned_player(M, ROLE_SYNDICATE)
return 1
return 0
/obj/item/implant/traitor/removed(mob/target)
if(..())
ticker.mode.remove_traitor_mind(target.mind)
SSticker.mode.remove_traitor_mind(target.mind)
return 1
return 0
+1 -1
View File
@@ -27,7 +27,7 @@
if(user)
user.update_inv_l_hand()
user.update_inv_r_hand()
if(user.mind in ticker.mode.wizards)
if(user.mind in SSticker.mode.wizards)
user.flying = wielded ? 1 : 0
if(wielded)
to_chat(user, "<span class='notice'>You hold \the [src] between your legs.</span>")
@@ -45,7 +45,7 @@
else
M.LAssailant = user
if(!(istype(user, /mob/living/carbon/human) || ticker) && ticker.mode.name != "monkey")
if(!(istype(user, /mob/living/carbon/human) || SSticker) && SSticker.mode.name != "monkey")
to_chat(user, "<span class='warning'>You don't have the dexterity to do this!</span>")
return
if(!user.mind || !user.mind.isholy)
+3 -3
View File
@@ -31,17 +31,17 @@
/obj/structure/New()
..()
if(smooth)
if(ticker && ticker.current_state == GAME_STATE_PLAYING)
if(SSticker && SSticker.current_state == GAME_STATE_PLAYING)
queue_smooth(src)
queue_smooth_neighbors(src)
icon_state = ""
if(climbable)
verbs += /obj/structure/proc/climb_on
if(ticker)
if(SSticker)
cameranet.updateVisibility(src)
/obj/structure/Destroy()
if(ticker)
if(SSticker)
cameranet.updateVisibility(src)
if(smooth)
var/turf/T = get_turf(src)
+2 -2
View File
@@ -108,10 +108,10 @@
SEND_SOUND(src, sound(null, repeat = 0, wait = 0, channel = chan))
/client/proc/playtitlemusic()
if(!ticker || !ticker.login_music || config.disable_lobby_music)
if(!SSticker || !SSticker.login_music || config.disable_lobby_music)
return
if(prefs.sound & SOUND_LOBBY)
SEND_SOUND(src, sound(ticker.login_music, repeat = 0, wait = 0, volume = 85, channel = CHANNEL_LOBBYMUSIC)) // MAD JAMS
SEND_SOUND(src, sound(SSticker.login_music, repeat = 0, wait = 0, volume = 85, channel = CHANNEL_LOBBYMUSIC)) // MAD JAMS
/proc/get_rand_frequency()
return rand(32000, 55000) //Frequency stuff only works with 45kbps oggs.
+2 -2
View File
@@ -144,8 +144,8 @@
/turf/simulated/floor/engine/cult/New()
..()
if(ticker.mode)//only do this if the round is going..otherwise..fucking asteroid..
icon_state = ticker.cultdat.cult_floor_icon_state
if(SSticker.mode)//only do this if the round is going..otherwise..fucking asteroid..
icon_state = SSticker.cultdat.cult_floor_icon_state
/turf/simulated/floor/engine/cult/narsie_act()
return
+2 -2
View File
@@ -12,9 +12,9 @@
/turf/simulated/wall/cult/New()
..()
if(ticker.mode)//game hasn't started offically don't do shit..
if(SSticker.mode)//game hasn't started offically don't do shit..
new /obj/effect/temp_visual/cult/turf(src)
icon_state = ticker.cultdat.cult_wall_icon_state
icon_state = SSticker.cultdat.cult_wall_icon_state
/turf/simulated/wall/cult/artificer
name = "runed stone wall"
+3 -3
View File
@@ -38,7 +38,7 @@
..()
for(var/atom/movable/AM in src)
Entered(AM)
if(smooth && ticker && ticker.current_state == GAME_STATE_PLAYING)
if(smooth && SSticker && SSticker.current_state == GAME_STATE_PLAYING)
queue_smooth(src)
/hook/startup/proc/smooth_world()
@@ -403,7 +403,7 @@
return(2)
/turf/proc/visibilityChanged()
if(ticker)
if(SSticker)
cameranet.updateVisibility(src)
/turf/attackby(obj/item/I, mob/user, params)
@@ -456,7 +456,7 @@
blueprint_data += I
/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/space)
+2 -2
View File
@@ -59,7 +59,7 @@
to_chat(src, "You're already dead!")
return
if(!ticker)
if(!SSticker)
to_chat(src, "You can't commit suicide before the game starts!")
return
@@ -116,7 +116,7 @@
to_chat(src, "You're already dead!")
return
if(!ticker)
if(!SSticker)
to_chat(src, "You can't commit suicide before the game starts!")
return
+8 -9
View File
@@ -32,7 +32,6 @@ var/global/list/map_transition_config = MAP_TRANSITION_CONFIG
processScheduler = new
spawn(1)
processScheduler.deferSetupFor(/datum/controller/process/ticker)
processScheduler.setup()
@@ -122,10 +121,10 @@ var/world_topic_spam_protect_time = world.timeofday
s["map_name"] = map_name ? map_name : "Unknown"
if(key_valid)
if(ticker && ticker.mode)
s["real_mode"] = ticker.mode.name
if(SSticker && SSticker.mode)
s["real_mode"] = SSticker.mode.name
s["security_level"] = get_security_level()
s["ticker_state"] = ticker.current_state
s["ticker_state"] = SSticker.current_state
if(SSshuttle && SSshuttle.emergency)
// Shuttle status, see /__DEFINES/stat.dm
@@ -301,8 +300,8 @@ var/world_topic_spam_protect_time = world.timeofday
if(!isnull(time))
delay = max(0,time)
else
delay = ticker.restart_timeout
if(ticker.delay_end)
delay = SSticker.restart_timeout
if(SSticker.delay_end)
to_chat(world, "<span class='boldannounce'>An admin has delayed the round end.</span>")
return
to_chat(world, "<span class='boldannounce'>Rebooting world in [delay/10] [delay > 10 ? "seconds" : "second"]. [reason]</span>")
@@ -311,12 +310,12 @@ var/world_topic_spam_protect_time = world.timeofday
var/sound_length = GLOB.round_end_sounds[round_end_sound]
if(delay > sound_length) // If there's time, play the round-end sound before rebooting
spawn(delay - sound_length)
if(!ticker.delay_end)
if(!SSticker.delay_end)
world << round_end_sound
sleep(delay)
if(blackbox)
blackbox.save_all_data_to_sql()
if(ticker.delay_end)
if(SSticker.delay_end)
to_chat(world, "<span class='boldannounce'>Reboot was cancelled by an admin.</span>")
return
feedback_set_details("[feedback_c]","[feedback_r]")
@@ -394,7 +393,7 @@ var/world_topic_spam_protect_time = world.timeofday
s += "<br>"
var/list/features = list()
if(ticker)
if(SSticker)
if(master_mode && master_mode != "secret")
features += master_mode
else
+21 -21
View File
@@ -572,7 +572,7 @@ var/global/nologevent = 0
delay = delay * 10
message_admins("[key_name_admin(usr)] has initiated a server restart with a delay of [delay/10] seconds")
log_admin("[key_name(usr)] has initiated a server restart with a delay of [delay/10] seconds")
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)" : ""]", delay)
@@ -672,14 +672,14 @@ var/global/nologevent = 0
if(!check_rights(R_SERVER))
return
if(!ticker)
if(!SSticker)
alert("Unable to start the game as it is not set up.")
return
if(ticker.current_state == GAME_STATE_PREGAME)
if(SSticker.current_state == GAME_STATE_PREGAME)
if(config.start_now_confirmation)
if(alert(usr, "This is a live server. Are you sure you want to start now?", "Start game", "Yes", "No") != "Yes")
return
ticker.current_state = GAME_STATE_SETTING_UP
SSticker.current_state = GAME_STATE_SETTING_UP
log_admin("[key_name(usr)] has started the game.")
message_admins("[key_name_admin(usr)] has started the game.")
feedback_add_details("admin_verb","SN") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
@@ -763,10 +763,10 @@ var/global/nologevent = 0
if(!check_rights(R_SERVER))
return
if(!ticker || ticker.current_state != GAME_STATE_PREGAME)
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("[key_name(usr)] [ticker.delay_end ? "delayed the round end" : "has made the round end normally"].", 1)
if(!SSticker || SSticker.current_state != GAME_STATE_PREGAME)
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("[key_name(usr)] [SSticker.delay_end ? "delayed the round end" : "has made the round end normally"].", 1)
return //alert("Round end delayed", null, null, null, null, null)
going = !( going )
if(!( going ))
@@ -780,32 +780,32 @@ var/global/nologevent = 0
////////////////////////////////////////////////////////////////////////////////////////////////ADMIN HELPER PROCS
/proc/is_special_character(mob/M as mob) // returns 1 for specail characters and 2 for heroes of gamemode
if(!ticker || !ticker.mode)
if(!SSticker || !SSticker.mode)
return 0
if(!istype(M))
return 0
if((M.mind in ticker.mode.head_revolutionaries) || (M.mind in ticker.mode.revolutionaries))
if(ticker.mode.config_tag == "revolution")
if((M.mind in SSticker.mode.head_revolutionaries) || (M.mind in SSticker.mode.revolutionaries))
if(SSticker.mode.config_tag == "revolution")
return 2
return 1
if(M.mind in ticker.mode.cult)
if(ticker.mode.config_tag == "cult")
if(M.mind in SSticker.mode.cult)
if(SSticker.mode.config_tag == "cult")
return 2
return 1
if(M.mind in ticker.mode.syndicates)
if(ticker.mode.config_tag == "nuclear")
if(M.mind in SSticker.mode.syndicates)
if(SSticker.mode.config_tag == "nuclear")
return 2
return 1
if(M.mind in ticker.mode.wizards)
if(ticker.mode.config_tag == "wizard")
if(M.mind in SSticker.mode.wizards)
if(SSticker.mode.config_tag == "wizard")
return 2
return 1
if(M.mind in ticker.mode.changelings)
if(ticker.mode.config_tag == "changeling")
if(M.mind in SSticker.mode.changelings)
if(SSticker.mode.config_tag == "changeling")
return 2
return 1
if(M.mind in ticker.mode.abductors)
if(ticker.mode.config_tag == "abduction")
if(M.mind in SSticker.mode.abductors)
if(SSticker.mode.config_tag == "abduction")
return 2
return 1
if(isrobot(M))
+49 -49
View File
@@ -403,9 +403,9 @@
/datum/admins/proc/check_antagonists()
if(!check_rights(R_ADMIN)) return
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>"
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(ROUND_TIME / 36000)]:[add_zero(num2text(ROUND_TIME / 600 % 60), 2)]:[add_zero(num2text(ROUND_TIME / 10 % 60), 2)]</B><BR>"
dat += "<B>Emergency shuttle</B><BR>"
if(SSshuttle.emergency.mode < SHUTTLE_CALL)
@@ -418,10 +418,10 @@
else
dat += "ETA: <a href='?_src_=holder;edit_shuttle_time=1'>[(timeleft / 60) % 60]:[add_zero(num2text(timeleft % 60), 2)]</a><BR>"
dat += "<a href='?src=[UID()];delay_round_end=1'>[ticker.delay_end ? "End Round Normally" : "Delay Round End"]</a><br>"
if(ticker.mode.syndicates.len)
dat += "<a href='?src=[UID()];delay_round_end=1'>[SSticker.delay_end ? "End Round Normally" : "Delay Round End"]</a><br>"
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 += check_antagonists_line(M)
@@ -442,20 +442,20 @@
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><i>Head Revolutionary not found!</i></td></tr>"
else
dat += check_antagonists_line(M, "(leader)")
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 += check_antagonists_line(M)
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 += check_antagonists_line(M)
@@ -466,7 +466,7 @@
dat += "</table>"
if(GAMEMODE_IS_BLOB)
var/datum/game_mode/blob/mode = ticker.mode
var/datum/game_mode/blob/mode = SSticker.mode
dat += "<br><table cellspacing=5><tr><td><B>Blob</B></td><td></td><td></td></tr>"
dat += "<tr><td><i>Progress: [blobs.len]/[mode.blobwincount]</i></td></tr>"
@@ -479,67 +479,67 @@
dat += "<tr><td><i>Blob not found!</i></td></tr>"
dat += "</table>"
if(ticker.mode.blob_overminds.len)
dat += check_role_table("Blob Overminds", ticker.mode.blob_overminds)
if(SSticker.mode.blob_overminds.len)
dat += check_role_table("Blob Overminds", SSticker.mode.blob_overminds)
if(ticker.mode.changelings.len)
dat += check_role_table("Changelings", ticker.mode.changelings)
if(SSticker.mode.changelings.len)
dat += check_role_table("Changelings", SSticker.mode.changelings)
if(ticker.mode.wizards.len)
dat += check_role_table("Wizards", ticker.mode.wizards)
if(SSticker.mode.wizards.len)
dat += check_role_table("Wizards", SSticker.mode.wizards)
if(ticker.mode.raiders.len)
dat += check_role_table("Raiders", ticker.mode.raiders)
if(SSticker.mode.raiders.len)
dat += check_role_table("Raiders", SSticker.mode.raiders)
/*if(ticker.mode.ninjas.len)
dat += check_role_table("Ninjas", ticker.mode.ninjas)*/
if(ticker.mode.cult.len)
dat += check_role_table("Cultists", ticker.mode.cult, 0)
if(SSticker.mode.cult.len)
dat += check_role_table("Cultists", SSticker.mode.cult, 0)
dat += "<br> use <a href='?src=[UID()];cult_mindspeak=[UID()]'>Cult Mindspeak</a>"
if(GAMEMODE_IS_CULT)
var/datum/game_mode/cult/cult_round = ticker.mode
var/datum/game_mode/cult/cult_round = SSticker.mode
if(!cult_round.narsie_condition_cleared)
dat += "<br><a href='?src=[UID()];cult_nextobj=[UID()]'>complete objective (debug)</a>"
if(ticker.mode.traitors.len)
dat += check_role_table("Traitors", ticker.mode.traitors)
if(SSticker.mode.traitors.len)
dat += check_role_table("Traitors", SSticker.mode.traitors)
if(ticker.mode.shadows.len)
dat += check_role_table("Shadowlings", ticker.mode.shadows)
if(SSticker.mode.shadows.len)
dat += check_role_table("Shadowlings", SSticker.mode.shadows)
if(ticker.mode.shadowling_thralls.len)
dat += check_role_table("Shadowling Thralls", ticker.mode.shadowling_thralls)
if(SSticker.mode.shadowling_thralls.len)
dat += check_role_table("Shadowling Thralls", SSticker.mode.shadowling_thralls)
if(ticker.mode.abductors.len)
dat += check_role_table("Abductors", ticker.mode.abductors)
if(SSticker.mode.abductors.len)
dat += check_role_table("Abductors", SSticker.mode.abductors)
if(ticker.mode.abductees.len)
dat += check_role_table("Abductees", ticker.mode.abductees)
if(SSticker.mode.abductees.len)
dat += check_role_table("Abductees", SSticker.mode.abductees)
if(ticker.mode.vampires.len)
dat += check_role_table("Vampires", ticker.mode.vampires)
if(SSticker.mode.vampires.len)
dat += check_role_table("Vampires", SSticker.mode.vampires)
if(ticker.mode.vampire_enthralled.len)
dat += check_role_table("Vampire Thralls", ticker.mode.vampire_enthralled)
if(SSticker.mode.vampire_enthralled.len)
dat += check_role_table("Vampire Thralls", SSticker.mode.vampire_enthralled)
if(ticker.mode.devils.len)
dat += check_role_table("Devils", ticker.mode.devils)
if(SSticker.mode.devils.len)
dat += check_role_table("Devils", SSticker.mode.devils)
if(ticker.mode.xenos.len)
dat += check_role_table("Xenos", ticker.mode.xenos)
if(SSticker.mode.xenos.len)
dat += check_role_table("Xenos", SSticker.mode.xenos)
if(ticker.mode.superheroes.len)
dat += check_role_table("Superheroes", ticker.mode.superheroes)
if(SSticker.mode.superheroes.len)
dat += check_role_table("Superheroes", SSticker.mode.superheroes)
if(ticker.mode.supervillains.len)
dat += check_role_table("Supervillains", ticker.mode.supervillains)
if(SSticker.mode.supervillains.len)
dat += check_role_table("Supervillains", SSticker.mode.supervillains)
if(ticker.mode.greyshirts.len)
dat += check_role_table("Greyshirts", ticker.mode.greyshirts)
if(SSticker.mode.greyshirts.len)
dat += check_role_table("Greyshirts", SSticker.mode.greyshirts)
if(ticker.mode.eventmiscs.len)
dat += check_role_table("Event Roles", ticker.mode.eventmiscs)
if(SSticker.mode.eventmiscs.len)
dat += check_role_table("Event Roles", SSticker.mode.eventmiscs)
if(ts_spiderlist.len)
var/list/spider_minds = list()
@@ -559,8 +559,8 @@
count_spiderlings += 1
dat += "<table cellspacing=5><TR><TD>Growing TS on-station: [count_eggs] egg[count_eggs != 1 ? "s" : ""], [count_spiderlings] spiderling[count_spiderlings != 1 ? "s" : ""]. </TD></TR></TABLE>"
if(ticker.mode.ert.len)
dat += check_role_table("ERT", ticker.mode.ert)
if(SSticker.mode.ert.len)
dat += check_role_table("ERT", SSticker.mode.ert)
dat += "</body></html>"
usr << browse(dat, "window=roundstatus;size=400x500")
+33 -33
View File
@@ -6,7 +6,7 @@
message_admins("[key_name_admin(usr)] has attempted to override the admin panel!")
return
if(ticker.mode && ticker.mode.check_antagonists_topic(href, href_list))
if(SSticker.mode && SSticker.mode.check_antagonists_topic(href, href_list))
check_antagonists()
return
@@ -315,9 +315,9 @@
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='notice'>[key_name_admin(usr)] [ticker.delay_end ? "delayed the round end" : "has made the round end normally"].</span>", 1)
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='notice'>[key_name_admin(usr)] [SSticker.delay_end ? "delayed the round end" : "has made the round end normally"].</span>", 1)
href_list["secretsadmin"] = "check_antagonist"
else if(href_list["simplemake"])
@@ -1085,7 +1085,7 @@
else if(href_list["c_mode"])
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)
@@ -1098,7 +1098,7 @@
else if(href_list["f_secret"])
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)
@@ -1112,7 +1112,7 @@
else if(href_list["c_mode2"])
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].")
@@ -1125,7 +1125,7 @@
else if(href_list["f_secret2"])
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)
@@ -1559,25 +1559,25 @@
alert("Couldn't locate cult mode datum! This shouldn't ever happen, tell a coder!")
return
var/datum/game_mode/cult/cult_round = ticker.mode
var/datum/game_mode/cult/cult_round = SSticker.mode
cult_round.bypass_phase()
message_admins("Admin [key_name_admin(usr)] has unlocked the Cult's next objective.")
log_admin("Admin [key_name_admin(usr)] has unlocked the Cult's next objective.")
else if(href_list["cult_mindspeak"])
var/input = stripped_input(usr, "Communicate to all the cultists with the voice of [ticker.cultdat.entity_name]", "Voice of [ticker.cultdat.entity_name]", "")
var/input = stripped_input(usr, "Communicate to all the cultists with the voice of [SSticker.cultdat.entity_name]", "Voice of [SSticker.cultdat.entity_name]", "")
if(!input)
return
for(var/datum/mind/H in ticker.mode.cult)
for(var/datum/mind/H in SSticker.mode.cult)
if (H.current)
to_chat(H.current, "<span class='danger'>[ticker.cultdat.entity_name]</span> murmurs, <span class='cultlarge'>[input]</span></span>")
to_chat(H.current, "<span class='danger'>[SSticker.cultdat.entity_name]</span> murmurs, <span class='cultlarge'>[input]</span></span>")
for(var/mob/dead/observer/O in GLOB.player_list)
to_chat(O, "<span class='danger'>[ticker.cultdat.entity_name]</span> murmurs, <span class='cultlarge'>[input]</span></span>")
to_chat(O, "<span class='danger'>[SSticker.cultdat.entity_name]</span> murmurs, <span class='cultlarge'>[input]</span></span>")
message_admins("Admin [key_name_admin(usr)] has talked with the Voice of [ticker.cultdat.entity_name].")
log_admin("[key_name(usr)] Voice of [ticker.cultdat.entity_name]: [input]")
message_admins("Admin [key_name_admin(usr)] has talked with the Voice of [SSticker.cultdat.entity_name].")
log_admin("[key_name(usr)] Voice of [SSticker.cultdat.entity_name]: [input]")
else if(href_list["adminplayerobservecoodjump"])
if(!check_rights(R_ADMIN)) return
@@ -1958,8 +1958,8 @@
kill_objective.target = H.mind
kill_objective.explanation_text = "Assassinate [H.real_name], the [H.mind.assigned_role]."
newtraitormind.objectives += kill_objective
ticker.mode.equip_traitor(newtraitor)
ticker.mode.traitors |= newtraitor.mind
SSticker.mode.equip_traitor(newtraitor)
SSticker.mode.traitors |= newtraitor.mind
to_chat(newtraitor, "<span class='danger'>ATTENTION:</span> It is time to pay your debt to the Syndicate...")
to_chat(newtraitor, "<B>You are now a traitor.</B>")
to_chat(newtraitor, "<B>Goal: <span class='danger'>KILL [H.real_name]</span>, currently in [get_area(H.loc)]</B>");
@@ -2341,7 +2341,7 @@
else if(href_list["traitor"])
if(!check_rights(R_ADMIN|R_MOD)) return
if(!ticker || !ticker.mode)
if(!SSticker || !SSticker.mode)
alert("The game hasn't started yet!")
return
@@ -2484,7 +2484,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?","Confirmation","Yes","Cancel") != "Yes")
return
@@ -2573,7 +2573,7 @@
feedback_inc("admin_secrets_fun_used",1)
feedback_add_details("admin_secrets_fun_used","TriAI")
if("gravity")
if(!(ticker && ticker.mode))
if(!(SSticker && SSticker.mode))
to_chat(usr, "Please wait until the game starts! Not sure how it will work otherwise.")
return
gravity_is_on = !gravity_is_on
@@ -2609,7 +2609,7 @@
message_admins("<span class='notice'>[key_name_admin(usr)] made all SMESs powered</span>", 1)
power_restore_quick()
if("prisonwarp")
if(!ticker)
if(!SSticker)
alert("The game hasn't started yet!", null, null, null, null, null)
return
feedback_inc("admin_secrets_fun_used",1)
@@ -2651,7 +2651,7 @@
H.loc = pick(prisonsecuritywarp)
prisonwarped += H
if("traitor_all")
if(!ticker)
if(!SSticker)
alert("The game hasn't started yet!")
return
var/objective = sanitize(copytext(input("Enter an objective"),1,MAX_MESSAGE_LEN))
@@ -2663,24 +2663,24 @@
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 = 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)
SSticker.mode.greet_traitor(H.mind)
//ticker.mode.forge_traitor_objectives(H.mind)
ticker.mode.finalize_traitor(H.mind)
SSticker.mode.finalize_traitor(H.mind)
for(var/mob/living/silicon/A in GLOB.player_list)
ticker.mode.traitors += A.mind
SSticker.mode.traitors += A.mind
A.mind.special_role = 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='notice'>[key_name_admin(usr)] used everyone is a traitor secret. Objective is [objective]</span>", 1)
log_admin("[key_name(usr)] used everyone is a traitor secret. Objective is [objective]")
@@ -2946,10 +2946,10 @@
if("showailaws")
output_ai_laws()
if("showgm")
if(!ticker)
if(!SSticker)
alert("The game hasn't started yet!")
else if(ticker.mode)
alert("The game mode is [ticker.mode.name]")
else if(SSticker.mode)
alert("The game mode is [SSticker.mode.name]")
else alert("For some reason there's a ticker, but not a game mode")
if("manifest")
var/dat = "<B>Showing Crew Manifest.</B><HR>"
@@ -3284,7 +3284,7 @@
return
G.report_message = description
message_admins("[key_name_admin(usr)] created \"[G.name]\" station goal.")
ticker.mode.station_goals += G
SSticker.mode.station_goals += G
modify_goals()
else if(href_list["showdetails"])
@@ -3408,7 +3408,7 @@
protect_objective.target = H.mind
protect_objective.explanation_text = "Protect [H.real_name], the [H.mind.assigned_role]."
hunter_mind.objectives += protect_objective
ticker.mode.traitors |= hunter_mob.mind
SSticker.mode.traitors |= hunter_mob.mind
to_chat(hunter_mob, "<span class='danger'>ATTENTION:</span> You are now on a mission!")
to_chat(hunter_mob, "<B>Goal: <span class='danger'>[killthem ? "MURDER" : "PROTECT"] [H.real_name]</span>, currently in [get_area(H.loc)]. </B>");
if(killthem)
+2 -2
View File
@@ -3,7 +3,7 @@
set category = "Debug"
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,4 +14,4 @@
override = input(src, "mode = ?","Enter Parameter", null) as anything in list("nuclear emergency", "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)
+7 -7
View File
@@ -215,7 +215,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
if(!check_rights(R_SPAWN))
return
if(!ticker)
if(!SSticker)
alert("Wait until the game starts")
return
if(istype(M, /mob/living/carbon/human))
@@ -233,7 +233,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
if(!check_rights(R_SPAWN))
return
if(!ticker)
if(!SSticker)
alert("Wait until the game starts")
return
@@ -293,7 +293,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
if(!check_rights(R_SPAWN))
return
if(!ticker)
if(!SSticker)
alert("Wait until the game starts")
return
if(ishuman(M))
@@ -313,7 +313,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
if(!check_rights(R_SPAWN))
return
if(!ticker)
if(!SSticker)
alert("Wait until the game starts")
return
if(ishuman(M))
@@ -333,7 +333,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
if(!check_rights(R_SPAWN))
return
if(!ticker)
if(!SSticker)
alert("Wait until the game starts")
return
if(ishuman(M))
@@ -405,7 +405,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
if(!check_rights(R_EVENT))
return
if(!ticker)
if(!SSticker)
alert("Wait until the game starts")
return
if(istype(M, /mob/living/carbon/human))
@@ -818,7 +818,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
if(!check_rights(R_SPAWN))
return
if(!ticker)
if(!SSticker)
alert("Wait until the game starts")
return
if(istype(M, /mob/living/carbon))
+2 -2
View File
@@ -7,7 +7,7 @@
set desc = "Spawns a group of players in the specified outfit."
if(!check_rights(R_EVENT))
return
if(!ticker)
if(!SSticker)
alert("The game hasn't started yet!")
return
if(alert("Do you want to spawn a Gimmick Team at YOUR CURRENT LOCATION?",,"Yes","No")=="No")
@@ -82,7 +82,7 @@
H.mind.store_memory("<B>[themission]</B><BR><BR>")
if(is_syndicate)
ticker.mode.traitors |= H.mind //Adds them to extra antag list
SSticker.mode.traitors |= H.mind //Adds them to extra antag list
players_spawned++
if(players_spawned >= teamsize)
+2 -2
View File
@@ -4,7 +4,7 @@ var/const/honksquad_possible = 6 //if more Commandos are needed in the future
var/global/sent_honksquad = 0
/client/proc/honksquad()
if(!ticker)
if(!SSticker)
to_chat(usr, "<font color='red'>The game hasn't started yet!</font>")
return
if(world.time < 6000)
@@ -95,7 +95,7 @@ var/global/sent_honksquad = 0
new_honksquad.mind.special_role = SPECIAL_ROLE_HONKSQUAD
new_honksquad.mind.offstation_role = TRUE
new_honksquad.add_language("Clownish")
ticker.mode.traitors |= new_honksquad.mind//Adds them to current traitor list. Which is really the extra antagonist list.
SSticker.mode.traitors |= new_honksquad.mind//Adds them to current traitor list. Which is really the extra antagonist list.
new_honksquad.equip_honksquad(honk_leader_selected)
return new_honksquad
@@ -10,7 +10,7 @@ var/global/sent_syndicate_infiltration_team = 0
if(!check_rights(R_ADMIN))
to_chat(src, "Only administrators may use this command.")
return
if(!ticker)
if(!SSticker)
alert("The game hasn't started yet!")
return
if(alert("Do you want to send in the Syndicate Infiltration Team?",,"Yes","No")=="No")
@@ -132,7 +132,7 @@ var/global/sent_syndicate_infiltration_team = 0
new_syndicate_infiltrator.mind.assigned_role = "Syndicate Infiltrator"
new_syndicate_infiltrator.mind.special_role = "Syndicate Infiltrator"
new_syndicate_infiltrator.mind.offstation_role = TRUE //they can flee to z2 so make them inelligible as antag targets
ticker.mode.traitors |= new_syndicate_infiltrator.mind //Adds them to extra antag list
SSticker.mode.traitors |= new_syndicate_infiltrator.mind //Adds them to extra antag list
new_syndicate_infiltrator.equip_syndicate_infiltrator(syndicate_leader_selected, uplink_tc, is_mgmt)
return new_syndicate_infiltrator
+6 -6
View File
@@ -175,7 +175,7 @@ client/proc/one_click_antag()
for(var/i = 0, i<numCultists, i++)
H = pick(candidates)
ticker.mode.add_cultist(H.mind)
SSticker.mode.add_cultist(H.mind)
candidates.Remove(H)
return 1
@@ -258,17 +258,17 @@ client/proc/one_click_antag()
qdel(A)
continue
for(var/datum/mind/synd_mind in ticker.mode.syndicates)
for(var/datum/mind/synd_mind in SSticker.mode.syndicates)
if(synd_mind.current)
if(synd_mind.current.client)
for(var/image/I in synd_mind.current.client.images)
if(I.icon_state == "synd")
qdel(I)
for(var/datum/mind/synd_mind in ticker.mode.syndicates)
for(var/datum/mind/synd_mind in SSticker.mode.syndicates)
if(synd_mind.current)
if(synd_mind.current.client)
for(var/datum/mind/synd_mind_1 in ticker.mode.syndicates)
for(var/datum/mind/synd_mind_1 in SSticker.mode.syndicates)
if(synd_mind_1.current)
var/I = image('icons/mob/mob.dmi', loc = synd_mind_1.current, icon_state = "synd")
synd_mind.current.client.images += I
@@ -417,7 +417,7 @@ client/proc/one_click_antag()
new_syndicate_commando.mind.special_role = SPECIAL_ROLE_SYNDICATE_DEATHSQUAD
new_syndicate_commando.mind.offstation_role = TRUE
//Adds them to current traitor list. Which is really the extra antagonist list.
ticker.mode.traitors += new_syndicate_commando.mind
SSticker.mode.traitors += new_syndicate_commando.mind
new_syndicate_commando.equip_syndicate_commando(syndicate_leader_selected)
return new_syndicate_commando
@@ -477,7 +477,7 @@ client/proc/one_click_antag()
break
new_vox.key = theghost.key
ticker.mode.traitors += new_vox.mind
SSticker.mode.traitors += new_vox.mind
to_chat(new_vox, "<span class='notice'>You are a Vox Primalis, fresh out of the Shoal. Your ship has arrived at the Tau Ceti system hosting the NSV Exodus... or was it the Luna? NSS? Utopia? Nobody is really sure, but everyong is raring to start pillaging! Your current goal is: <span class='danger'> [input]</span></span>")
to_chat(new_vox, "<span class='warning'>Don't forget to turn on your nitrogen internals!</span>")
+4 -4
View File
@@ -1,5 +1,5 @@
/client/proc/only_one()
if(!ticker)
if(!SSticker)
alert("The game hasn't started yet!")
return
@@ -14,7 +14,7 @@
var/datum/preferences/A = new() // Randomize appearance
A.copy_to(H)
ticker.mode.traitors += H.mind
SSticker.mode.traitors += H.mind
H.mind.special_role = SPECIAL_ROLE_TRAITOR
var/datum/objective/hijack/hijack_objective = new
@@ -58,7 +58,7 @@
world << sound('sound/music/thunderdome.ogg')
/client/proc/only_me()
if(!ticker)
if(!SSticker)
alert("The game hasn't started yet!")
return
@@ -66,7 +66,7 @@
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
+1 -1
View File
@@ -1,5 +1,5 @@
/client/proc/only_one_team()
if(!ticker)
if(!SSticker)
alert("The game hasn't started yet!")
return
+3 -3
View File
@@ -18,8 +18,8 @@
var/prayer_type = "PRAYER"
var/deity
if(usr.job == "Chaplain")
if(ticker && ticker.Bible_deity_name)
deity = ticker.Bible_deity_name
if(SSticker && SSticker.Bible_deity_name)
deity = SSticker.Bible_deity_name
cross = image('icons/obj/storage.dmi',"kingyellow")
font_color = "blue"
prayer_type = "CHAPLAIN PRAYER"
@@ -27,7 +27,7 @@
cross = image('icons/obj/storage.dmi',"tome")
font_color = "red"
prayer_type = "CULTIST PRAYER"
deity = ticker.cultdat.entity_name
deity = SSticker.cultdat.entity_name
log_say("(PRAYER) [msg]", usr)
msg = "<span class='notice'>[bicon(cross)]<b><font color=[font_color]>[prayer_type][deity ? " (to [deity])" : ""][mind && mind.isholy ? " (blessings: [mind.num_blessed])" : ""]:</font> [key_name(src, 1)] ([ADMIN_QUE(src,"?")]) ([ADMIN_PP(src,"PP")]) ([ADMIN_VV(src,"VV")]) ([ADMIN_SM(src,"SM")]) ([admin_jump_link(src)]) (<A HREF='?_src_=holder;secretsadmin=check_antagonist'>CA</A>) ([ADMIN_SC(src,"SC")]) (<A HREF='?_src_=holder;Bless=[UID()]'>BLESS</A>) (<A HREF='?_src_=holder;Smite=[UID()]'>SMITE</A>):</b> [msg]</span>"
+16 -16
View File
@@ -437,11 +437,11 @@ Traitors and the like can also be revived with the previous role mostly intact.
if("traitor")
SSjobs.AssignRank(new_character, new_character.mind.assigned_role, 0)
SSjobs.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.equip_wizard(new_character)
if("Syndicate")
var/obj/effect/landmark/synd_spawn = locate("landmark*Syndicate-Spawn")
if(synd_spawn)
@@ -858,7 +858,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
set category = "Admin"
set name = "Toggle Deny Shuttle"
if(!ticker)
if(!SSticker)
return
if(!check_rights(R_ADMIN))
@@ -891,12 +891,12 @@ Traitors and the like can also be revived with the previous role mostly intact.
if(!check_rights(R_SERVER|R_EVENT))
return
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
if(ticker.random_players)
ticker.random_players = 0
if(SSticker.random_players)
SSticker.random_players = 0
message_admins("Admin [key_name_admin(usr)] has disabled \"Everyone is Special\" mode.", 1)
to_chat(usr, "Disabled.")
return
@@ -914,7 +914,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
to_chat(usr, "<i>Remember: you can always disable the randomness by using the verb again, assuming the round hasn't started yet</i>.")
ticker.random_players = 1
SSticker.random_players = 1
feedback_add_details("admin_verb","MER") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/toggle_random_events()
@@ -1009,13 +1009,13 @@ Traitors and the like can also be revived with the previous role mostly intact.
if(!check_rights(R_EVENT))
return
if(ticker.mode.ert_disabled)
ticker.mode.ert_disabled = 0
if(SSticker.mode.ert_disabled)
SSticker.mode.ert_disabled = 0
to_chat(usr, "<span class='notice'>ERT has been <b>Enabled</b>.</span>")
log_admin("Admin [key_name(src)] has enabled ERT calling.")
message_admins("Admin [key_name_admin(usr)] has enabled ERT calling.", 1)
else
ticker.mode.ert_disabled = 1
SSticker.mode.ert_disabled = 1
to_chat(usr, "<span class='warning'>ERT has been <b>Disabled</b>.</span>")
log_admin("Admin [key_name(src)] has disabled ERT calling.")
message_admins("Admin [key_name_admin(usr)] has disabled ERT calling.", 1)
@@ -1033,14 +1033,14 @@ Traitors and the like can also be revived with the previous role mostly intact.
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.")
log_admin("[key_name(usr)] sent \"[input]\" as the Tip of the Round.")
@@ -1055,12 +1055,12 @@ Traitors and the like can also be revived with the previous role mostly intact.
holder.modify_goals()
/datum/admins/proc/modify_goals()
if(!ticker || !ticker.mode)
if(!SSticker || !SSticker.mode)
to_chat(usr, "<span class='warning'>This verb can only be used if the round has started.</span>")
return
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=[S.UID()];announce=1'>Announce</a> | <a href='?src=[S.UID()];remove=1'>Remove</a><br>"
dat += "<br><a href='?src=[UID()];add_station_goal=1'>Add New Goal</a>"
usr << browse(dat, "window=goals;size=400x400")
+5 -5
View File
@@ -4,7 +4,7 @@ var/const/commandos_possible = 6 //if more Commandos are needed in the future
var/global/sent_strike_team = 0
/client/proc/strike_team()
if(!ticker)
if(!SSticker)
to_chat(usr, "<span class='userdanger'>The game hasn't started yet!</span>")
return
if(sent_strike_team == 1)
@@ -86,9 +86,9 @@ var/global/sent_strike_team = 0
R.mind.assigned_role = SPECIAL_ROLE_DEATHSQUAD
R.mind.special_role = SPECIAL_ROLE_DEATHSQUAD
R.mind.offstation_role = TRUE
if(!(R.mind in ticker.minds))
ticker.minds += R.mind
ticker.mode.traitors += R.mind
if(!(R.mind in SSticker.minds))
SSticker.minds += R.mind
SSticker.mode.traitors += R.mind
R.key = ghost_mob.key
if(nuke_code)
R.mind.store_memory("<B>Nuke Code:</B> <span class='warning'>[nuke_code].</span>")
@@ -150,7 +150,7 @@ var/global/sent_strike_team = 0
new_commando.mind_initialize()
new_commando.mind.assigned_role = SPECIAL_ROLE_DEATHSQUAD
new_commando.mind.special_role = SPECIAL_ROLE_DEATHSQUAD
ticker.mode.traitors |= new_commando.mind//Adds them to current traitor list. Which is really the extra antagonist list.
SSticker.mode.traitors |= new_commando.mind//Adds them to current traitor list. Which is really the extra antagonist list.
new_commando.equip_death_commando(is_leader)
return new_commando
@@ -9,7 +9,7 @@ var/global/sent_syndicate_strike_team = 0
if(!src.holder)
to_chat(src, "Only administrators may use this command.")
return
if(!ticker)
if(!SSticker)
alert("The game hasn't started yet!")
return
if(sent_syndicate_strike_team == 1)
@@ -117,7 +117,7 @@ var/global/sent_syndicate_strike_team = 0
new_syndicate_commando.mind.assigned_role = SPECIAL_ROLE_SYNDICATE_DEATHSQUAD
new_syndicate_commando.mind.special_role = SPECIAL_ROLE_SYNDICATE_DEATHSQUAD
new_syndicate_commando.mind.offstation_role = TRUE
ticker.mode.traitors |= new_syndicate_commando.mind //Adds them to current traitor list. Which is really the extra antagonist list.
SSticker.mode.traitors |= new_syndicate_commando.mind //Adds them to current traitor list. Which is really the extra antagonist list.
new_syndicate_commando.equip_syndicate_commando(is_leader)
qdel(spawn_location)
return new_syndicate_commando
+5 -5
View File
@@ -2,21 +2,21 @@
set category = "Event"
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
if(SSjobs && ticker)
if(SSjobs && SSticker)
var/datum/job/job = SSjobs.GetJob("AI")
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='notice'>[key_name_admin(usr)] has toggled off triple AIs at round start.</span>", 1)
else
ticker.triai = 1
SSticker.triai = 1
to_chat(usr, "There will be an AI Triumvirate at round start.")
message_admins("<span class='notice'>[key_name_admin(usr)] has toggled on triple AIs at round start.</span>", 1)
return

Some files were not shown because too many files have changed in this diff Show More