Newmap - SMC, Openturf, Arrivals Controller, and Mine Turf Improvements (#1958)

* Replace SSingulo with SScalamity; processing cleanup
- SScalamity now handles blobs as well as singularity-types.
- Processing subtypes have been simplified to not require a stop_processing definition.

* this is probably important

* Remove cascade disabling SSgarbage

* Fixed a bug where dust() did not qdel the target mob

* Misc fixes

* Fix decals surviving break-to-plating

* Subsystem flag tweaks

* Apparently subsystems are new'd before config is.

* Fix paper icons

* Speculative fix for insane lag

* Better machinery stat

* Make organs not use SSoverlay

* Misc bugfixes & tweaks

* Nightmode fixes

* Changelog for SMC

* Port /tg/'s improved MC crash handling

* Add some more SS Recover() procs

* supply_controller -> SScargo

* More New() -> Initialize()

* pAI and robot construction overlays

* Fix cargo unit tests

* Merge the DMM Suite's atom/New() into atoms_init

* Lighting pre-baking

* Lighting initialization logging

* Fix some bad SS init orders

* Fix SSlighting logging; rename Processes to MC

* Speculative fix for insane GC lag

* Prebaked openturf/icon_smooth & fix lighting prebake

* SS init status; SSatoms LATEQDEL

* Fix bug with MC init stat panel

* Fix parallax

* Misc

* Ignore SS_NO_DISPLAY during init

* apparently this is important

* REEEEEE

* Image GC fixes; broadcaster radio-new sanity

* RCON Cleanup

* Move pAI recruiter into subsystem

* Move global solars list into sun subsystem

* Make chickens not use a global

* Demote SSdisposals to SS_BACKGROUND; garbage-debug cleanup

* Speed up space init a little

* Fix bad timer flags on floor drying

* Subsystem panic-restart verb for mins

* Explosion speedup

* Minor subsystem & MC logging tweaks

* SSopenturf improvements

* Make pipenet actually initialize (whoops)

* Minor tweaks

* Implement lighting rounding

* comments are hard okay

* Minor lattice tweaks

* Fix some timer issues & better closet init

* Timer sanity

* Request console tweaks + Storage init sanity

* Minor SSmachiner RCON improvements

* Further reduce world-start timer count

* Standardize subsystem logging

* Garbage hard delete profiling from /tg/

* Timer hang detection & recovery

* Log machines that sleep in process() and fuck up SSmachinery

* Fix an issue with external airlocks sleeping in process()

* Failsafe logging

* Minor tweaks

* Revert "Request console tweaks + Storage init sanity"

This reverts commit 98d3579e35.

* Re-implement RC changes

* Fix SQL FT saving

* Fix SSmachinery sleep in disposals

* Minor SS tweaks

* Paper fixes

* Blood drying fixes

* Merge gameticker and SSticker

* Minor global list init cleanup

* Lagcheck biogenerator & bags

* Tweak SScargo init order; RIG Initialize()

* Caching tweaks

* Remove rogue comma

* Initialize fixes

* Lighting destroy cleanup

* Fix emagging airlocks

* Initial SSicon implementation

* Tweaks & Fixes

* Fire + Air alarm queued icon updates

* Overlays + Queued icon cleanup

* Runtime & background fixes

* Kill some meaningless set statements

* Kill some image qdels

* Bump up lighting rounding val

* Fix adv. scanner destroy runtimes

* Remove unneeded icon update limiting

* Move icon smoothing into helpers

* Show a warning if DM 510 compiles without memory leak hack enabled

* Re-organize subsystems & MC defines a little

* Airlock SFX

* Log of Changes

* Make SSicon_update disable itself when not doing anything

* Fix respawn verb runtime when used early in server-init

* Add more information to MC's stat_entry()

* Replace direct refernces to gcDestroyed with QDEL* macros

* plant_controller -> SSplants

* More plant tweaks

* Add more humor to changelog

* Move parallax globals into SSparallax

* Lighting responsiveness tweaks

* Fix parallax init order & better MC init panel stat

* Make mobs GC

* More overlays + Remove intercom spawn()

* SSfast_process; make pinpointers not use spawn-recursion to process
Also made the SM Cascade beach process with SSprocessing instead of a spawn loop.

* Update changelog

* Mob GC tweaks

* Del() cleanup

* Fix insomniac ZAS connection edges

* Minor pAI cleanup

* Convert more things to SSoverlay; fix duplicated overlay in field gens

* SM Bluespace turf tweaks

* Update SSgarbage debug globals list

* Human-type qdel tweaks

* Subsystem suspension; stat_entry improvements

* SQL Statistics cleanup

* Fix runtimes with ambrosia

* More disable() -> suspend(); fix nightmode again

* Human qdel fix; minor tweaks

* Update turbolift to work with StonedMC

* Make lifts use timers instead of a subsystem

* Make SSassets start earlier

* Convert the radio controller into a subsystem

* Fix some missing CHECK_TICKs in asteroid generation

* MC stat tweaks; make shouldnt_see a typecache

* Kill some redundant debug-controller entries

* radio_controller -> SSradio

* Better SSgarbage hard-del logging from /tg/ upstream

* Logging tweaks + GELF

* Misc client caching improvements

* Slime SSoverlay

* Oven icon fixes

* Implant fixes
- Death implants will no longer spam Common on death of user.
- Death implants should handle a deleted user better.

* Holder tweaks + Welding tool Initialize()

* Fix some bad subsystem logging

* Fix suit cooling units spawning without cells

* Starlight tweaks

* Gibber infinite gib fix

* More SSoverlay stuff

* Make crates use CUT_OVERLAY_IN

* Make SSarrivals suspend instead of disable

* Make openturf use split/phased tick checks

* Speculative fix for unwet timer runtimes

* Blood overlay tweaks/fixes

* Update crusher to play nice with SMC + SSoverlay

* Openturf improvements and fixes

* Minor turbolift tweaks

* Lighting performance improvements + ChangeTurf tweaks

* this is probably important

* Fix wall weld noises on changeturf

* More ChangeTurf tweaks

* Explosion tweaks

* Pre-game lobby tweaks

* Openturf tweaks

* Prevent admins from starting the game before init finishes

* Fix Travis

* Kill an unused var

* Fix ChangeTurf runtimes on openturfs

* Fixes

* Browser datum fixes, asset caching

* Update changelog

* Changelog

* Lobby tweaks

* Ticker tweaks; kill ticker var

* Further lobby tweaks

* Cascade tweaks

* air_master -> SSair

* Reduce overhead from radio autosay

* alarm_manager -> SSalarm

* bomb_processor -> SSexplosives

* corp_regs -> SSlaw

* ZAS overlay fixes

* Small wall icon optimization

* Fix effects master

* Assembly tweaks

* Megavend fixes

* Shuttle fixes

* Camera alert performance improvements

* Fix some world.log spam from lighting overlays

* Fix some Initialize() procs

* Openspace responsiveness tweaks

* Make HE pipes animate through openturfs

* Kill a spawn
This commit is contained in:
Lohikar
2017-05-02 14:40:40 -04:00
committed by LordFowl
parent 9dbf27a0f4
commit f6dc33a465
872 changed files with 17767 additions and 13417 deletions
+34 -24
View File
@@ -9,24 +9,32 @@
// - SoundScopes
*/
/client
var/bst_cooldown // So people can't spam BSTs.
/client/proc/bst_spawn_cooldown()
bst_cooldown = null
/client/proc/cmd_dev_bst()
set category = "Debug"
set name = "Spawn Bluespace Tech"
set desc = "Spawns a Bluespace Tech to debug stuff"
if (bst_cooldown)
src << "You've used this verb too recently, please wait a moment before trying again."
return
if(!check_rights(R_DEV|R_ADMIN)) return
if(!holder)
return //how did they get here?
if(!ticker)
alert("Wait until the game starts")
return
if(ticker.current_state < GAME_STATE_PLAYING)
if(!ROUND_IS_STARTED)
src << span("alert", "The game hasn't started yet!")
return
bst_cooldown = TRUE
if(istype(mob, /mob/living))
if(!holder.original_mob)
holder.original_mob = mob
@@ -68,8 +76,8 @@
new /obj/item/weapon/reagent_containers/pill/adminordrazine(pills)
bst.equip_to_slot_or_del(pills, slot_in_backpack)
//Implant because access
bst.implant_loyalty(bst,TRUE)
//Implant because access
bst.implant_loyalty(bst,TRUE)
//Sort out ID
var/obj/item/weapon/card/id/bst/id = new/obj/item/weapon/card/id/bst(bst)
@@ -111,15 +119,18 @@
bst.add_language(LANGUAGE_CHANGELING)
bst.add_language(LANGUAGE_BORER)
spawn(5)
spark(T, 3, alldirs)
bst.anchored = 0
addtimer(CALLBACK(src, .proc/bst_post_spawn, bst), 5)
addtimer(CALLBACK(src, .proc/bst_spawn_cooldown), 5 SECONDS)
log_debug("Bluespace Tech Spawned: X:[bst.x] Y:[bst.y] Z:[bst.z] User:[src]")
feedback_add_details("admin_verb","BST")
return 1
/client/proc/bst_post_spawn(mob/living/carbon/human/bst/bst)
spark(bst, 3, alldirs)
bst.anchored = FALSE
/mob/living/carbon/human/bst
universal_understand = 1
status_flags = GODMODE
@@ -150,20 +161,19 @@
return
src.custom_emote(1,"presses a button on their suit, followed by a polite bow.")
spawn(10)
spark(src, 5, alldirs)
if(key)
if(client.holder && client.holder.original_mob)
client.holder.original_mob.key = key
else
var/mob/dead/observer/ghost = new(src) //Transfer safety to observer spawning proc.
ghost.key = key
ghost.mind.name = "[ghost.key] BSTech"
ghost.name = "[ghost.key] BSTech"
ghost.real_name = "[ghost.key] BSTech"
ghost.voice_name = "[ghost.key] BSTech"
qdel(src)
return
spark(src, 5, alldirs)
addtimer(CALLBACK(GLOBAL_PROC, .proc/qdel, src), 10, TIMER_CLIENT_TIME)
animate(src, alpha = 0, time = 9, easing = QUAD_EASING)
if(key)
if(client.holder && client.holder.original_mob)
client.holder.original_mob.key = key
else
var/mob/dead/observer/ghost = new(src) //Transfer safety to observer spawning proc.
ghost.key = key
ghost.mind.name = "[ghost.key] BSTech"
ghost.name = "[ghost.key] BSTech"
ghost.real_name = "[ghost.key] BSTech"
ghost.voice_name = "[ghost.key] BSTech"
/mob/living/carbon/human/bst/proc/bsc() //because we all have our unrealistic snowflakes right?
if(set_species("Tajara"))
+3 -3
View File
@@ -7,7 +7,7 @@
return
if(alert("Are you sure you want to run [cinematic]?","Confirmation","Yes","No")=="No") return
if(!ticker) return
if(!ROUND_IS_STARTED) return
switch(cinematic)
if("explosion")
if(alert("The game will be over. Are you really sure?", "Confirmation" ,"Continue", "Cancel") == "Cancel")
@@ -19,9 +19,9 @@
override = input(src,"mode = ?","Enter Parameter",null) as anything in list("mercenary","no override")
if(0)
override = input(src,"mode = ?","Enter Parameter",null) as anything in list("blob","mercenary","AI malfunction","no override")
ticker.station_explosion_cinematic(parameter,override)
SSticker.station_explosion_cinematic(parameter,override)
log_admin("[key_name(src)] launched cinematic \"[cinematic]\"",admin_key=key_name(usr))
message_admins("[key_name_admin(src)] launched cinematic \"[cinematic]\"", 1)
return
return
+41 -17
View File
@@ -42,7 +42,7 @@
set category = "Fun"
set name = "Make Robot"
if(!ticker)
if(!ROUND_IS_STARTED)
alert("Wait until the game starts")
return
if(istype(M, /mob/living/carbon/human))
@@ -57,7 +57,7 @@
set category = "Fun"
set name = "Make Simple Animal"
if(!ticker)
if(!ROUND_IS_STARTED)
alert("Wait until the game starts")
return
@@ -78,7 +78,7 @@
set category = "Fun"
set name = "Make Alien"
if(!ticker)
if(!ROUND_IS_STARTED)
alert("Wait until the game starts")
return
if(ishuman(M))
@@ -95,16 +95,14 @@
set category = "Fun"
set name = "Make slime"
if(!ticker)
if(!ROUND_IS_STARTED)
alert("Wait until the game starts")
return
if(ishuman(M))
log_admin("[key_name(src)] has slimeized [M.key].",admin_key=key_name(usr))
log_and_message_admins("has slimeized [key_name(M)].", user = usr)
spawn(10)
M:slimeize()
feedback_add_details("admin_verb","MKMET") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
log_admin("[key_name(usr)] made [key_name(M)] into a slime.",admin_key=key_name(usr),ckey=key_name(M))
message_admins("\blue [key_name_admin(usr)] made [key_name(M)] into a slime.", 1)
else
alert("Invalid mob")
@@ -113,7 +111,7 @@
set category = "Fun"
set name = "Make Monkey"
if(!ticker)
if(!ROUND_IS_STARTED)
alert("Wait until the game starts")
return
if(istype(M, /mob/living/carbon/human))
@@ -128,7 +126,7 @@
set category = "Fun"
set name = "Make Changeling"
if(!ticker)
if(!ROUND_IS_STARTED)
alert("Wait until the game starts")
return
if(istype(M, /mob/living/carbon/human))
@@ -148,7 +146,7 @@
usr << "Ruby Mode disabled. Command aborted."
return
if(!ticker)
if(!ROUND_IS_STARTED)
alert("Wait until the game starts.")
return
if(istype(M, /mob/living/carbon/human))
@@ -166,7 +164,7 @@
if(!cultwords["travel"])
runerandom()
if(M)
if(M.mind in ticker.mode.cult)
if(M.mind in SSticker.mode.cult)
return
else
if(alert("Spawn that person a tome?",,"Yes","No")=="Yes")
@@ -195,7 +193,7 @@
if(M.mind)
M.mind.special_role = "Cultist"
ticker.mode.cult += M.mind
SSticker.mode.cult += M.mind
src << "Made [M] a cultist."
*/
@@ -210,9 +208,9 @@
if(hsbitem)
for(var/atom/O in world)
if(istype(O, hsbitem))
qdel(O)
log_admin("[key_name(src)] has deleted all instances of [hsbitem].",admin_key=key_name(usr))
message_admins("[key_name_admin(src)] has deleted all instances of [hsbitem].", 0)
qdel(O, TRUE)
CHECK_TICK
log_and_message_admins("has deleted all instances of [hsbitem].")
feedback_add_details("admin_verb","DELA") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/cmd_debug_make_powernets()
@@ -236,7 +234,7 @@
set category = "Admin"
set name = "Grant Full Access"
if (!ticker)
if (!ROUND_IS_STARTED)
alert("Wait until the game starts")
return
if (istype(M, /mob/living/carbon/human))
@@ -958,7 +956,7 @@
// DNA2 - Admin Hax
/client/proc/cmd_admin_toggle_block(var/mob/M,var/block)
if(!ticker)
if(!ROUND_IS_STARTED)
alert("Wait until the game starts")
return
if(istype(M, /mob/living/carbon))
@@ -971,3 +969,29 @@
log_admin("[key_name(src)] has toggled [M.key]'s [blockname] block [state]!",admin_key=key_name(src),ckey=key_name(M))
else
alert("Invalid mob")
/client/proc/cmd_display_del_log()
set category = "Debug"
set name = "Display del() Log"
set desc = "Displays a list of things that have failed to GC this round"
var/dat = "<B>List of things that failed to GC this round</B><BR><BR>"
for(var/path in SSgarbage.didntgc)
dat += "[path] - [SSgarbage.didntgc[path]] times<BR>"
dat += "<B>List of paths that did not return a qdel hint in Destroy()</B><BR><BR>"
for(var/path in SSgarbage.noqdelhint)
dat += "[path]<BR>"
dat += "<B>List of paths that slept in Destroy()</B><BR><BR>"
for(var/path in SSgarbage.sleptDestroy)
dat += "[path]<BR>"
usr << browse(dat, "window=dellog")
/client/proc/cmd_display_init_log()
set category = "Debug"
set name = "Display Initialize() Log"
set desc = "Displays a list of things that didn't handle Initialize() properly"
usr << browse(replacetext(SSatoms.InitLog(), "\n", "<br>"), "window=initlog")
+13 -13
View File
@@ -2,12 +2,12 @@
set category = "Debug"
set name = "Show Air Report"
if(!master_controller || !air_master)
alert(usr,"Master_controller or air_master not found.","Air Report")
if(!Master || !SSair)
alert(usr,"Master_controller or SSair not found.","Air Report")
return
var/active_groups = air_master.active_zones
var/inactive_groups = air_master.zones.len - active_groups
var/active_groups = SSair.active_zones
var/inactive_groups = SSair.zones.len - active_groups
var/hotspots = 0
for(var/obj/fire/hotspot in world)
@@ -15,7 +15,7 @@
var/active_on_main_station = 0
var/inactive_on_main_station = 0
for(var/zone/zone in air_master.zones)
for(var/zone/zone in SSair.zones)
var/turf/simulated/turf = locate() in zone.contents
if(turf && turf.z in config.station_levels)
if(zone.needs_update)
@@ -25,8 +25,8 @@
var/output = {"<B>AIR SYSTEMS REPORT</B><HR>
<B>General Processing Data</B><BR>
Cycle: [air_master.current_cycle]<br>
Groups: [air_master.zones.len]<BR>
Cycle: [SSair.times_fired]<br>
Groups: [SSair.zones.len]<BR>
---- <I>Active:</I> [active_groups]<BR>
---- <I>Inactive:</I> [inactive_groups]<BR><br>
---- <I>Active on station:</i> [active_on_main_station]<br>
@@ -36,7 +36,7 @@
Hotspot Processing: [hotspots]<BR>
<br>
<B>Geometry Processing Data</B><BR>
Tile Update: [air_master.tiles_to_update.len]<BR>
Tile Update: [SSair.tiles_to_update.len]<BR>
"}
usr << browse(output,"window=airreport")
@@ -77,9 +77,9 @@
set name = "Radio report"
var/output = "<b>Radio Report</b><hr>"
for (var/fq in radio_controller.frequencies)
for (var/fq in SSradio.frequencies)
output += "<b>Freq: [fq]</b><br>"
var/list/datum/radio_frequency/fqs = radio_controller.frequencies[fq]
var/list/datum/radio_frequency/fqs = SSradio.frequencies[fq]
if (!fqs)
output += "&nbsp;&nbsp;<b>ERROR</b><br>"
continue
@@ -127,11 +127,11 @@
src << "Only administrators may use this command."
return
if(!air_master)
if(!SSair)
usr << "Cannot find air_system"
return
var/datum/air_group/dead_groups = list()
for(var/datum/air_group/group in air_master.air_groups)
for(var/datum/air_group/group in SSair.air_groups)
if (!group.group_processing)
dead_groups += group
var/datum/air_group/dest_group = pick(dead_groups)
@@ -149,7 +149,7 @@
src << "Only administrators may use this command."
return
if(!air_master)
if(!SSair)
usr << "Cannot find air_system"
return
+5 -18
View File
@@ -68,7 +68,7 @@ var/intercom_range_display_status = 0
set category = "Mapping"
set name = "Camera Report"
if(!master_controller)
if(!Master)
alert(usr,"Master_controller not found.","Sec Camera Report")
return 0
@@ -155,7 +155,7 @@ var/list/debug_verbs = list (
,/client/proc/disable_movement
,/client/proc/Zone_Info
,/client/proc/Test_ZAS_Connection
,/client/proc/ZoneTick
//,/client/proc/ZoneTick
,/client/proc/rebootAirMaster
,/client/proc/hide_debug_verbs
,/client/proc/testZAScolors
@@ -276,14 +276,7 @@ var/list/debug_verbs = list (
set name = "Reboot ZAS"
if(alert("This will destroy and remake all zone geometry on the whole map.","Reboot ZAS","Reboot ZAS","Nevermind") == "Reboot ZAS")
var/datum/controller/air_system/old_air = air_master
for(var/zone/zone in old_air.zones)
zone.c_invalidate()
qdel(old_air)
air_master = new
air_master.Setup()
spawn air_master.Start()
SSair.reboot()
/client/proc/count_objects_on_z_level()
set category = "Mapping"
@@ -363,7 +356,7 @@ var/global/prevent_airgroup_regroup = 0
set name = "Break All Airgroups"
/*prevent_airgroup_regroup = 1
for(var/datum/air_group/AG in air_master.air_groups)
for(var/datum/air_group/AG in SSair.air_groups)
AG.suspend_group_processing()
message_admins("[src.ckey] used 'Break All Airgroups'")*/
@@ -374,7 +367,7 @@ var/global/prevent_airgroup_regroup = 0
usr << "\red Proc disabled."
/*prevent_airgroup_regroup = 0
for(var/datum/air_group/AG in air_master.air_groups)
for(var/datum/air_group/AG in SSair.air_groups)
AG.check_regroup()
message_admins("[src.ckey] used 'Regroup All Airgroups Attempt'")*/
@@ -396,12 +389,6 @@ var/global/prevent_airgroup_regroup = 0
usr << "\red Proc disabled."
/*air_processing_killed = !air_processing_killed
if(air_processing_killed)
message_admins("[src.ckey] used 'kill air processing', stopping all air processing.")
else
message_admins("[src.ckey] used 'kill air processing', restoring all air processing.")*/
//This proc is intended to detect lag problems relating to communication procs
var/global/say_disabled = 0
/client/proc/disable_communication()
+5 -15
View File
@@ -1,9 +1,9 @@
var/list/forbidden_varedit_object_types = list(
/datum/admins, //Admins editing their own admin-power object? Yup, sounds like a good idea.
/obj/machinery/blackbox_recorder, //Prevents people messing with feedback gathering
/datum/feedback_variable, //Prevents people messing with feedback gathering
/datum/discord_bot //Nope.jpg. Stop it.
)
/datum/admins, //Admins editing their own admin-power object? Yup, sounds like a good idea.
/datum/controller/subsystem/statistics, //Prevents people messing with feedback gathering
/datum/feedback_variable, //Prevents people messing with feedback gathering
/datum/discord_bot //Nope.jpg. Stop it.
)
var/list/VVlocked = list("vars", "holder", "client", "virus", "viruses", "cuffed", "last_eaten", "unlock_content", "bound_x", "bound_y", "step_x", "step_y", "force_ending")
var/list/VVicon_edit_lock = list("icon", "icon_state", "overlays", "underlays")
@@ -18,16 +18,6 @@ var/list/VVckey_edit = list("key", "ckey")
feedback_add_details("admin_verb","EDITV") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
*/
/client/proc/cmd_modify_ticker_variables()
set category = "Debug"
set name = "Edit Ticker Variables"
if (ticker == null)
src << "Game hasn't started yet."
else
src.modify_variables(ticker)
feedback_add_details("admin_verb","ETV") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/mod_list_add_ass() //haha
var/class = "text"
+16 -21
View File
@@ -605,9 +605,10 @@ Traitors and the like can also be revived with the previous role mostly intact.
feedback_add_details("admin_verb","DEL") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
if (action == "Yes")
qdel(O)
qdel(O, TRUE)
else
// This is naughty, but sometimes necessary.
O.Destroy(TRUE) // Because direct del without this breaks things.
del(O)
/client/proc/cmd_admin_list_open_jobs()
@@ -829,7 +830,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
set category = "Admin"
set name = "Call Shuttle"
if ((!( ticker ) || !emergency_shuttle.location()))
if ((!( ROUND_IS_STARTED ) || !emergency_shuttle.location()))
return
if(!check_rights(R_ADMIN)) return
@@ -838,7 +839,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
if(confirm != "Yes") return
var/choice
if(ticker.mode.auto_recall_shuttle)
if(SSticker.mode.auto_recall_shuttle)
choice = input("The shuttle will just return if you call it. Call anyway?") in list("Confirm", "Cancel")
if(choice == "Confirm")
emergency_shuttle.auto_recall = 1 //enable auto-recall
@@ -865,7 +866,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
if(alert(src, "You sure?", "Confirm", "Yes", "No") != "Yes") return
if(!ticker || !emergency_shuttle.can_recall())
if(!ROUND_IS_STARTED || !emergency_shuttle.can_recall())
return
emergency_shuttle.recall()
@@ -879,7 +880,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 (!ROUND_IS_STARTED)
return
if(!check_rights(R_ADMIN)) return
@@ -906,12 +907,12 @@ Traitors and the like can also be revived with the previous role mostly intact.
if(!check_rights(R_FUN)) return
if (ticker && ticker.mode)
if (SSticker.mode)
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)
usr << "Disabled."
return
@@ -929,7 +930,7 @@ Traitors and the like can also be revived with the previous role mostly intact.
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!
@@ -963,15 +964,12 @@ Traitors and the like can also be revived with the previous role mostly intact.
if(!input)
return
if(!ticker)
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()
ticker.selected_tip = initial(ticker.selected_tip)
if(SSticker.tipped)
SSticker.send_tip_of_the_round()
SSticker.selected_tip = initial(SSticker.selected_tip)
message_admins("[key_name_admin(usr)] sent a tip of the round.")
@@ -987,12 +985,9 @@ Traitors and the like can also be revived with the previous role mostly intact.
if(!holder)
return
if(!ticker)
return
ticker.send_tip_of_the_round()
SSticker.send_tip_of_the_round()
message_admins("[key_name_admin(usr)] sent a pregenerated tip of the round.")
log_admin("[key_name(usr)] sent a pregenerated Tip of the Round.",admin_key=key_name(usr))
feedback_add_details("admin_verb","FAP")
feedback_add_details("admin_verb","FAP")
+1 -1
View File
@@ -10,7 +10,7 @@ var/const/commandos_possible = 6 //if more Commandos are needed in the future
src << "Only administrators may use this command."
return
if(!ticker)
if(!ROUND_IS_STARTED)
usr << "<font color='red'>The game hasn't started yet!</font>"
return
+5 -5
View File
@@ -2,21 +2,21 @@
set category = "Fun"
set name = "Create AI Triumvirate"
if(ticker.current_state > GAME_STATE_PREGAME)
if(ROUND_IS_STARTED)
usr << "This option is currently only usable during pregame. This may change at a later date."
return
if(job_master && ticker)
if(job_master)
var/datum/job/job = job_master.GetJob("AI")
if(!job)
usr << "Unable to locate the AI job"
return
if(ticker.triai)
ticker.triai = 0
if(SSticker.triai)
SSticker.triai = 0
usr << "Only one AI will be spawned at round start."
message_admins("\blue [key_name_admin(usr)] has toggled off triple AIs at round start.", 1)
else
ticker.triai = 1
SSticker.triai = 1
usr << "There will be an AI Triumvirate at round start."
message_admins("\blue [key_name_admin(usr)] has toggled on triple AIs at round start.", 1)
return