mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-23 20:16:55 +01:00
SSticker
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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)))
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
@@ -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>")
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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)
|
||||
|
||||
Vendored
+1
-1
@@ -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
@@ -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
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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++
|
||||
|
||||
@@ -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 ..()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -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]")
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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]
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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>")
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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]")
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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)))
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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 ..()
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
@@ -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)
|
||||
|
||||
@@ -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
@@ -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.
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
@@ -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
@@ -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))
|
||||
|
||||
@@ -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
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
@@ -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))
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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>")
|
||||
|
||||
@@ -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,5 +1,5 @@
|
||||
/client/proc/only_one_team()
|
||||
if(!ticker)
|
||||
if(!SSticker)
|
||||
alert("The game hasn't started yet!")
|
||||
return
|
||||
|
||||
|
||||
@@ -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>"
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
Reference in New Issue
Block a user