mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-07-21 04:48:18 +01:00
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:
+51
-57
@@ -650,9 +650,6 @@ proc/admin_notice(var/message, var/rights)
|
||||
feedback_set_details("end_error","admin reboot - by [usr.key] [usr.client.holder.fakekey ? "(stealth)" : ""]")
|
||||
feedback_add_details("admin_verb","R") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
if(blackbox)
|
||||
blackbox.save_all_data_to_sql()
|
||||
|
||||
sleep(50)
|
||||
world.Reboot()
|
||||
|
||||
@@ -764,11 +761,11 @@ proc/admin_notice(var/message, var/rights)
|
||||
set category = "Server"
|
||||
set desc="Start the round RIGHT NOW"
|
||||
set name="Start Now"
|
||||
if(!ticker)
|
||||
if(Master.initializing)
|
||||
alert("Unable to start the game as it is not set up.")
|
||||
return
|
||||
if(ticker.current_state == GAME_STATE_PREGAME)
|
||||
ticker.current_state = GAME_STATE_SETTING_UP
|
||||
if(SSticker.current_state == GAME_STATE_PREGAME)
|
||||
SSticker.current_state = GAME_STATE_SETTING_UP
|
||||
log_admin("[usr.key] has started the game.")
|
||||
message_admins("<font color='blue'>[usr.key] has started the game.</font>")
|
||||
feedback_add_details("admin_verb","SN") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
@@ -842,10 +839,10 @@ proc/admin_notice(var/message, var/rights)
|
||||
set name="Delay"
|
||||
|
||||
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("\blue [key_name(usr)] [ticker.delay_end ? "delayed the round end" : "has made the round end normally"].", 1)
|
||||
if (ROUND_IS_STARTED)
|
||||
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("\blue [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)
|
||||
round_progressing = !round_progressing
|
||||
if (!round_progressing)
|
||||
@@ -893,9 +890,6 @@ proc/admin_notice(var/message, var/rights)
|
||||
feedback_set_details("end_error","immediate admin reboot - by [usr.key] [usr.client.holder.fakekey ? "(stealth)" : ""]")
|
||||
feedback_add_details("admin_verb","IR") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
if(blackbox)
|
||||
blackbox.save_all_data_to_sql()
|
||||
|
||||
world.Reboot()
|
||||
|
||||
/datum/admins/proc/unprison(var/mob/M in mob_list)
|
||||
@@ -915,14 +909,14 @@ proc/admin_notice(var/message, var/rights)
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////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.mode)
|
||||
return 0
|
||||
if (!istype(M))
|
||||
return 0
|
||||
|
||||
if(M.mind)
|
||||
if(ticker.mode.antag_templates && ticker.mode.antag_templates.len)
|
||||
for(var/datum/antagonist/antag in ticker.mode.antag_templates)
|
||||
if(SSticker.mode.antag_templates && SSticker.mode.antag_templates.len)
|
||||
for(var/datum/antagonist/antag in SSticker.mode.antag_templates)
|
||||
if(antag.is_antagonist(M.mind))
|
||||
return 2
|
||||
else if(M.mind.special_role)
|
||||
@@ -935,16 +929,16 @@ proc/admin_notice(var/message, var/rights)
|
||||
|
||||
return 0
|
||||
|
||||
/datum/admins/proc/spawn_fruit(seedtype in plant_controller.seeds)
|
||||
/datum/admins/proc/spawn_fruit(seedtype in SSplants.seeds)
|
||||
set category = "Debug"
|
||||
set desc = "Spawn the product of a seed."
|
||||
set name = "Spawn Fruit"
|
||||
|
||||
if(!check_rights(R_SPAWN)) return
|
||||
|
||||
if(!seedtype || !plant_controller.seeds[seedtype])
|
||||
if(!seedtype || !SSplants.seeds[seedtype])
|
||||
return
|
||||
var/datum/seed/S = plant_controller.seeds[seedtype]
|
||||
var/datum/seed/S = SSplants.seeds[seedtype]
|
||||
S.harvest(usr,0,0,1)
|
||||
log_admin("[key_name(usr)] spawned [seedtype] fruit at ([usr.x],[usr.y],[usr.z])")
|
||||
|
||||
@@ -988,16 +982,16 @@ proc/admin_notice(var/message, var/rights)
|
||||
for(var/datum/custom_item/item in current_items)
|
||||
usr << "- name: [item.name] icon: [item.item_icon] path: [item.item_path] desc: [item.item_desc]"
|
||||
|
||||
/datum/admins/proc/spawn_plant(seedtype in plant_controller.seeds)
|
||||
/datum/admins/proc/spawn_plant(seedtype in SSplants.seeds)
|
||||
set category = "Debug"
|
||||
set desc = "Spawn a spreading plant effect."
|
||||
set name = "Spawn Plant"
|
||||
|
||||
if(!check_rights(R_SPAWN)) return
|
||||
|
||||
if(!seedtype || !plant_controller.seeds[seedtype])
|
||||
if(!seedtype || !SSplants.seeds[seedtype])
|
||||
return
|
||||
new /obj/effect/plant(get_turf(usr), plant_controller.seeds[seedtype])
|
||||
new /obj/effect/plant(get_turf(usr), SSplants.seeds[seedtype])
|
||||
log_admin("[key_name(usr)] spawned [seedtype] vines at ([usr.x],[usr.y],[usr.z])")
|
||||
|
||||
/datum/admins/proc/spawn_atom(var/object as text)
|
||||
@@ -1055,70 +1049,70 @@ proc/admin_notice(var/message, var/rights)
|
||||
set desc = "Show the current round configuration."
|
||||
set name = "Show Game Mode"
|
||||
|
||||
if(!ticker || !ticker.mode)
|
||||
if(!ROUND_IS_STARTED)
|
||||
alert("Not before roundstart!", "Alert")
|
||||
return
|
||||
|
||||
var/out = "<font size=3><b>Current mode: [ticker.mode.name] (<a href='?src=\ref[ticker.mode];debug_antag=self'>[ticker.mode.config_tag]</a>)</b></font><br/>"
|
||||
var/out = "<font size=3><b>Current mode: [SSticker.mode.name] (<a href='?src=\ref[SSticker.mode];debug_antag=self'>[SSticker.mode.config_tag]</a>)</b></font><br/>"
|
||||
out += "<hr>"
|
||||
|
||||
if(ticker.mode.ert_disabled)
|
||||
out += "<b>Emergency Response Teams:</b> <a href='?src=\ref[ticker.mode];toggle=ert'>disabled</a>"
|
||||
if(SSticker.mode.ert_disabled)
|
||||
out += "<b>Emergency Response Teams:</b> <a href='?src=\ref[SSticker.mode];toggle=ert'>disabled</a>"
|
||||
else
|
||||
out += "<b>Emergency Response Teams:</b> <a href='?src=\ref[ticker.mode];toggle=ert'>enabled</a>"
|
||||
out += "<b>Emergency Response Teams:</b> <a href='?src=\ref[SSticker.mode];toggle=ert'>enabled</a>"
|
||||
out += "<br/>"
|
||||
|
||||
if(ticker.mode.deny_respawn)
|
||||
out += "<b>Respawning:</b> <a href='?src=\ref[ticker.mode];toggle=respawn'>disallowed</a>"
|
||||
if(SSticker.mode.deny_respawn)
|
||||
out += "<b>Respawning:</b> <a href='?src=\ref[SSticker.mode];toggle=respawn'>disallowed</a>"
|
||||
else
|
||||
out += "<b>Respawning:</b> <a href='?src=\ref[ticker.mode];toggle=respawn'>allowed</a>"
|
||||
out += "<b>Respawning:</b> <a href='?src=\ref[SSticker.mode];toggle=respawn'>allowed</a>"
|
||||
out += "<br/>"
|
||||
|
||||
out += "<b>Shuttle delay multiplier:</b> <a href='?src=\ref[ticker.mode];set=shuttle_delay'>[ticker.mode.shuttle_delay]</a><br/>"
|
||||
out += "<b>Shuttle delay multiplier:</b> <a href='?src=\ref[SSticker.mode];set=shuttle_delay'>[SSticker.mode.shuttle_delay]</a><br/>"
|
||||
|
||||
if(ticker.mode.auto_recall_shuttle)
|
||||
out += "<b>Shuttle auto-recall:</b> <a href='?src=\ref[ticker.mode];toggle=shuttle_recall'>enabled</a>"
|
||||
if(SSticker.mode.auto_recall_shuttle)
|
||||
out += "<b>Shuttle auto-recall:</b> <a href='?src=\ref[SSticker.mode];toggle=shuttle_recall'>enabled</a>"
|
||||
else
|
||||
out += "<b>Shuttle auto-recall:</b> <a href='?src=\ref[ticker.mode];toggle=shuttle_recall'>disabled</a>"
|
||||
out += "<b>Shuttle auto-recall:</b> <a href='?src=\ref[SSticker.mode];toggle=shuttle_recall'>disabled</a>"
|
||||
out += "<br/><br/>"
|
||||
|
||||
if(ticker.mode.event_delay_mod_moderate)
|
||||
out += "<b>Moderate event time modifier:</b> <a href='?src=\ref[ticker.mode];set=event_modifier_moderate'>[ticker.mode.event_delay_mod_moderate]</a><br/>"
|
||||
if(SSticker.mode.event_delay_mod_moderate)
|
||||
out += "<b>Moderate event time modifier:</b> <a href='?src=\ref[SSticker.mode];set=event_modifier_moderate'>[SSticker.mode.event_delay_mod_moderate]</a><br/>"
|
||||
else
|
||||
out += "<b>Moderate event time modifier:</b> <a href='?src=\ref[ticker.mode];set=event_modifier_moderate'>unset</a><br/>"
|
||||
out += "<b>Moderate event time modifier:</b> <a href='?src=\ref[SSticker.mode];set=event_modifier_moderate'>unset</a><br/>"
|
||||
|
||||
if(ticker.mode.event_delay_mod_major)
|
||||
out += "<b>Major event time modifier:</b> <a href='?src=\ref[ticker.mode];set=event_modifier_severe'>[ticker.mode.event_delay_mod_major]</a><br/>"
|
||||
if(SSticker.mode.event_delay_mod_major)
|
||||
out += "<b>Major event time modifier:</b> <a href='?src=\ref[SSticker.mode];set=event_modifier_severe'>[SSticker.mode.event_delay_mod_major]</a><br/>"
|
||||
else
|
||||
out += "<b>Major event time modifier:</b> <a href='?src=\ref[ticker.mode];set=event_modifier_severe'>unset</a><br/>"
|
||||
out += "<b>Major event time modifier:</b> <a href='?src=\ref[SSticker.mode];set=event_modifier_severe'>unset</a><br/>"
|
||||
|
||||
out += "<hr>"
|
||||
|
||||
if(ticker.mode.antag_tags && ticker.mode.antag_tags.len)
|
||||
if(LAZYLEN(SSticker.mode.antag_tags))
|
||||
out += "<b>Core antag templates:</b></br>"
|
||||
for(var/antag_tag in ticker.mode.antag_tags)
|
||||
out += "<a href='?src=\ref[ticker.mode];debug_antag=[antag_tag]'>[antag_tag]</a>.</br>"
|
||||
for(var/antag_tag in SSticker.mode.antag_tags)
|
||||
out += "<a href='?src=\ref[SSticker.mode];debug_antag=[antag_tag]'>[antag_tag]</a>.</br>"
|
||||
|
||||
if(ticker.mode.round_autoantag)
|
||||
out += "<b>Autotraitor <a href='?src=\ref[ticker.mode];toggle=autotraitor'>enabled</a></b>."
|
||||
if(ticker.mode.antag_scaling_coeff > 0)
|
||||
out += " (scaling with <a href='?src=\ref[ticker.mode];set=antag_scaling'>[ticker.mode.antag_scaling_coeff]</a>)"
|
||||
if(SSticker.mode.round_autoantag)
|
||||
out += "<b>Autotraitor <a href='?src=\ref[SSticker.mode];toggle=autotraitor'>enabled</a></b>."
|
||||
if(SSticker.mode.antag_scaling_coeff > 0)
|
||||
out += " (scaling with <a href='?src=\ref[SSticker.mode];set=antag_scaling'>[SSticker.mode.antag_scaling_coeff]</a>)"
|
||||
else
|
||||
out += " (not currently scaling, <a href='?src=\ref[ticker.mode];set=antag_scaling'>set a coefficient</a>)"
|
||||
out += " (not currently scaling, <a href='?src=\ref[SSticker.mode];set=antag_scaling'>set a coefficient</a>)"
|
||||
out += "<br/>"
|
||||
else
|
||||
out += "<b>Autotraitor <a href='?src=\ref[ticker.mode];toggle=autotraitor'>disabled</a></b>.<br/>"
|
||||
out += "<b>Autotraitor <a href='?src=\ref[SSticker.mode];toggle=autotraitor'>disabled</a></b>.<br/>"
|
||||
|
||||
out += "<b>All antag ids:</b>"
|
||||
if(ticker.mode.antag_templates && ticker.mode.antag_templates.len).
|
||||
for(var/datum/antagonist/antag in ticker.mode.antag_templates)
|
||||
if(LAZYLEN(SSticker.mode.antag_templates)).
|
||||
for(var/datum/antagonist/antag in SSticker.mode.antag_templates)
|
||||
antag.update_current_antag_max()
|
||||
out += " <a href='?src=\ref[ticker.mode];debug_antag=[antag.id]'>[antag.id]</a>"
|
||||
out += " <a href='?src=\ref[SSticker.mode];debug_antag=[antag.id]'>[antag.id]</a>"
|
||||
out += " ([antag.get_antag_count()]/[antag.cur_max]) "
|
||||
out += " <a href='?src=\ref[ticker.mode];remove_antag_type=[antag.id]'>\[-\]</a><br/>"
|
||||
out += " <a href='?src=\ref[SSticker.mode];remove_antag_type=[antag.id]'>\[-\]</a><br/>"
|
||||
else
|
||||
out += " None."
|
||||
out += " <a href='?src=\ref[ticker.mode];add_antag_type=1'>\[+\]</a><br/>"
|
||||
out += " <a href='?src=\ref[SSticker.mode];add_antag_type=1'>\[+\]</a><br/>"
|
||||
|
||||
usr << browse(out, "window=edit_mode[src]")
|
||||
feedback_add_details("admin_verb","SGM")
|
||||
@@ -1278,7 +1272,7 @@ proc/admin_notice(var/message, var/rights)
|
||||
usr << "Error: you are not an admin!"
|
||||
return
|
||||
|
||||
if(!ticker || !ticker.mode)
|
||||
if(!SSticker.mode)
|
||||
usr << "Mode has not started."
|
||||
return
|
||||
|
||||
@@ -1302,12 +1296,12 @@ proc/admin_notice(var/message, var/rights)
|
||||
usr << "Error: you are not an admin!"
|
||||
return
|
||||
|
||||
if(!ticker || !ticker.mode)
|
||||
if(!SSticker || !SSticker.mode)
|
||||
usr << "Mode has not started."
|
||||
return
|
||||
|
||||
log_and_message_admins("attempting to force mode autospawn.")
|
||||
ticker.mode.process_autoantag()
|
||||
SSticker.mode.process_autoantag()
|
||||
|
||||
/datum/admins/proc/paralyze_mob(mob/living/H as mob)
|
||||
set category = "Admin"
|
||||
|
||||
@@ -5,7 +5,6 @@ var/datum/admin_secrets/admin_secrets = new()
|
||||
var/list/datum/admin_secret_item/items
|
||||
|
||||
/datum/admin_secrets/New()
|
||||
..()
|
||||
categories = init_subtypes(/datum/admin_secret_category)
|
||||
items = list()
|
||||
var/list/category_assoc = list()
|
||||
@@ -19,9 +18,12 @@ var/datum/admin_secrets/admin_secrets = new()
|
||||
|
||||
var/datum/admin_secret_item/item = new item_type()
|
||||
var/datum/admin_secret_category/category = category_assoc[item.category]
|
||||
dd_insertObjectList(category.items, item)
|
||||
category.items += item
|
||||
items += item
|
||||
|
||||
for (var/datum/admin_secret_category/category in categories)
|
||||
sortTim(category.items, /proc/cmp_text_dsc)
|
||||
|
||||
/datum/admin_secret_category
|
||||
var/name = ""
|
||||
var/desc = ""
|
||||
|
||||
@@ -99,7 +99,8 @@ var/list/admin_verbs_admin = list(
|
||||
/client/proc/cmd_dev_bst,
|
||||
/client/proc/clear_toxins,
|
||||
/client/proc/wipe_ai, // allow admins to force-wipe AIs
|
||||
/client/proc/fix_player_list
|
||||
/client/proc/fix_player_list,
|
||||
/client/proc/reset_openturf
|
||||
)
|
||||
var/list/admin_verbs_ban = list(
|
||||
/client/proc/unban_panel,
|
||||
@@ -166,7 +167,9 @@ var/list/admin_verbs_server = list(
|
||||
/client/proc/check_customitem_activity,
|
||||
/client/proc/nanomapgen_DumpImage,
|
||||
/client/proc/admin_edit_motd,
|
||||
/client/proc/toggle_recursive_explosions
|
||||
/client/proc/toggle_recursive_explosions,
|
||||
/client/proc/restart_controller,
|
||||
/client/proc/cmd_ss_panic
|
||||
)
|
||||
var/list/admin_verbs_debug = list(
|
||||
/client/proc/getruntimelog, // allows us to access runtime logs to somebody,
|
||||
@@ -185,7 +188,6 @@ var/list/admin_verbs_debug = list(
|
||||
/client/proc/air_report,
|
||||
/client/proc/reload_admins,
|
||||
/client/proc/reload_mentors,
|
||||
/client/proc/restart_controller,
|
||||
/client/proc/print_random_map,
|
||||
/client/proc/create_random_map,
|
||||
/client/proc/apply_random_map,
|
||||
@@ -206,7 +208,12 @@ var/list/admin_verbs_debug = list(
|
||||
/client/proc/restart_sql,
|
||||
/client/proc/debug_pooling,
|
||||
/client/proc/fix_player_list,
|
||||
/client/proc/lighting_show_verbs
|
||||
/client/proc/lighting_show_verbs,
|
||||
/client/proc/restart_controller,
|
||||
/client/proc/cmd_display_del_log,
|
||||
/client/proc/cmd_display_init_log,
|
||||
/client/proc/cmd_ss_panic,
|
||||
/client/proc/reset_openturf
|
||||
)
|
||||
|
||||
var/list/admin_verbs_paranoid_debug = list(
|
||||
@@ -278,7 +285,6 @@ var/list/admin_verbs_hideable = list(
|
||||
/datum/admins/proc/adrev,
|
||||
/datum/admins/proc/adspawn,
|
||||
/datum/admins/proc/adjump,
|
||||
/client/proc/restart_controller,
|
||||
/client/proc/cmd_admin_list_open_jobs,
|
||||
/client/proc/callproc,
|
||||
/client/proc/callproc_target,
|
||||
@@ -354,12 +360,13 @@ var/list/admin_verbs_dev = list( //will need to be altered - Ryan784
|
||||
/client/proc/kill_air,
|
||||
/client/proc/kill_airgroup,
|
||||
/client/proc/player_panel,
|
||||
/client/proc/restart_controller,
|
||||
/client/proc/togglebuildmodeself,
|
||||
/client/proc/toggledebuglogs,
|
||||
/client/proc/ZASSettings,
|
||||
/client/proc/cmd_dev_bst,
|
||||
/client/proc/lighting_show_verbs
|
||||
/client/proc/lighting_show_verbs,
|
||||
/client/proc/cmd_display_del_log,
|
||||
/client/proc/cmd_display_init_log
|
||||
)
|
||||
var/list/admin_verbs_cciaa = list(
|
||||
/client/proc/cmd_admin_pm_panel, /*admin-pm list*/
|
||||
@@ -695,11 +702,11 @@ var/list/admin_verbs_cciaa = list(
|
||||
set category = "Debug"
|
||||
set name = "Kill Air"
|
||||
set desc = "Toggle Air Processing"
|
||||
if(air_processing_killed)
|
||||
air_processing_killed = 0
|
||||
if(!SSair.can_fire)
|
||||
SSair.enable()
|
||||
usr << "<b>Enabled air processing.</b>"
|
||||
else
|
||||
air_processing_killed = 1
|
||||
SSair.disable()
|
||||
usr << "<b>Disabled air processing.</b>"
|
||||
feedback_add_details("admin_verb","KA") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
log_admin("[key_name(usr)] used 'kill air'.",admin_key=key_name(usr))
|
||||
@@ -1084,3 +1091,18 @@ var/list/admin_verbs_cciaa = list(
|
||||
log_debug(msg)
|
||||
message_admins(span("danger", msg))
|
||||
player_list -= M
|
||||
|
||||
/client/proc/reset_openturf()
|
||||
set category = "Debug"
|
||||
set name = "Reset Openturfs"
|
||||
set desc = "Deletes and regenerates all openturf overlays in the world."
|
||||
|
||||
if (!check_rights(R_DEBUG|R_ADMIN))
|
||||
return
|
||||
|
||||
if (alert("Rebuild openturfs? Openturfs may look strange while this runs.", "Fix openturf", "No", "No", "DO IT") != "DO IT")
|
||||
return
|
||||
|
||||
log_and_message_admins("has regenerated all openturfs.")
|
||||
|
||||
SSopenturf.hard_reset()
|
||||
|
||||
@@ -15,6 +15,8 @@ var/list/admin_datums = list()
|
||||
var/datum/feed_channel/admincaster_feed_channel = new /datum/feed_channel
|
||||
var/admincaster_signature //What you'll sign the newsfeeds as
|
||||
|
||||
var/list/watched_processes // Processes marked to be shown in Status instead of just Processes.
|
||||
|
||||
/datum/admins/New(initial_rank = "Temporary Admin", initial_rights = 0, ckey)
|
||||
if(!ckey)
|
||||
error("Admin datum created without a ckey argument. Datum has been deleted")
|
||||
|
||||
@@ -389,9 +389,9 @@
|
||||
|
||||
|
||||
/datum/admins/proc/check_antagonists()
|
||||
if (ticker && ticker.current_state >= GAME_STATE_PLAYING)
|
||||
if (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(world.time / 36000)]:[add_zero(world.time / 600 % 60, 2)]:[world.time / 100 % 6][world.time / 100 % 10]</B><BR>"
|
||||
dat += "<B>Emergency shuttle</B><BR>"
|
||||
if (!emergency_shuttle.online())
|
||||
@@ -409,7 +409,7 @@
|
||||
if (emergency_shuttle.shuttle.moving_status == SHUTTLE_WARMUP)
|
||||
dat += "Launching now..."
|
||||
|
||||
dat += "<a href='?src=\ref[src];delay_round_end=1'>[ticker.delay_end ? "End Round Normally" : "Delay Round End"]</a><br>"
|
||||
dat += "<a href='?src=\ref[src];delay_round_end=1'>[SSticker.delay_end ? "End Round Normally" : "Delay Round End"]</a><br>"
|
||||
dat += "<hr>"
|
||||
for(var/antag_type in all_antag_types)
|
||||
var/datum/antagonist/A = all_antag_types[antag_type]
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
name = "Prison Warp"
|
||||
|
||||
/datum/admin_secret_item/admin_secret/prison_warp/can_execute(var/mob/user)
|
||||
if(!ticker) return 0
|
||||
if(!ROUND_IS_STARTED) return 0
|
||||
return ..()
|
||||
|
||||
/datum/admin_secret_item/admin_secret/prison_warp/execute(var/mob/user)
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
name = "Show Game Mode"
|
||||
|
||||
/datum/admin_secret_item/admin_secret/show_game_mode/can_execute(var/mob/user)
|
||||
if(!ticker)
|
||||
if(!ROUND_IS_STARTED)
|
||||
return 0
|
||||
return ..()
|
||||
|
||||
@@ -10,5 +10,7 @@
|
||||
. = ..()
|
||||
if(!.)
|
||||
return
|
||||
if (ticker.mode) alert("The game mode is [ticker.mode.name]")
|
||||
else alert("For some reason there's a ticker, but not a game mode")
|
||||
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")
|
||||
|
||||
@@ -2,7 +2,8 @@
|
||||
name = "Send Strike Team"
|
||||
|
||||
/datum/admin_secret_item/fun_secret/send_strike_team/can_execute(var/mob/user)
|
||||
if(!ticker) return 0
|
||||
if(!ROUND_IS_STARTED)
|
||||
return 0
|
||||
return ..()
|
||||
|
||||
/datum/admin_secret_item/fun_secret/send_strike_team/execute(var/mob/user)
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
name = "Triple AI Mode"
|
||||
|
||||
/datum/admin_secret_item/fun_secret/triple_ai_mode/can_execute(var/mob/user)
|
||||
if(ticker && ticker.current_state > GAME_STATE_PREGAME)
|
||||
if(ROUND_IS_STARTED)
|
||||
return 0
|
||||
|
||||
return ..()
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
name = "Toggle Station Artificial Gravity"
|
||||
|
||||
/datum/admin_secret_item/random_event/gravity/can_execute(var/mob/user)
|
||||
if(!(ticker && ticker.mode))
|
||||
if(!(SSticker.mode))
|
||||
return 0
|
||||
|
||||
return ..()
|
||||
|
||||
+15
-17
@@ -6,7 +6,7 @@
|
||||
message_admins("[usr.key] 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
|
||||
|
||||
@@ -212,13 +212,13 @@
|
||||
else if(href_list["call_shuttle"])
|
||||
if(!check_rights(R_ADMIN)) return
|
||||
|
||||
if( ticker.mode.name == "blob" )
|
||||
if( SSticker.mode.name == "blob" )
|
||||
alert("You can't call the shuttle during blob!")
|
||||
return
|
||||
|
||||
switch(href_list["call_shuttle"])
|
||||
if("1")
|
||||
if ((!( ticker ) || !emergency_shuttle.location()))
|
||||
if ((!( ROUND_IS_STARTED ) || !emergency_shuttle.location()))
|
||||
return
|
||||
if (emergency_shuttle.can_call())
|
||||
emergency_shuttle.call_evac()
|
||||
@@ -226,7 +226,7 @@
|
||||
message_admins("\blue [key_name_admin(usr)] called the Emergency Shuttle to the station", 1)
|
||||
|
||||
if("2")
|
||||
if (!( ticker ) || !emergency_shuttle.location())
|
||||
if (!( ROUND_IS_STARTED ) || !emergency_shuttle.location())
|
||||
return
|
||||
if (emergency_shuttle.can_call())
|
||||
emergency_shuttle.call_evac()
|
||||
@@ -265,9 +265,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"].",admin_key=key_name(usr))
|
||||
message_admins("\blue [key_name(usr)] [ticker.delay_end ? "delayed the round end" : "has made the round end normally"].", 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"].",admin_key=key_name(usr))
|
||||
message_admins("\blue [key_name(usr)] [SSticker.delay_end ? "delayed the round end" : "has made the round end normally"].", 1)
|
||||
href_list["secretsadmin"] = "check_antagonist"
|
||||
|
||||
else if(href_list["simplemake"])
|
||||
@@ -919,7 +919,7 @@
|
||||
else if(href_list["c_mode"])
|
||||
if(!check_rights(R_ADMIN)) return
|
||||
|
||||
if(ticker && ticker.mode)
|
||||
if(ROUND_IS_STARTED)
|
||||
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)
|
||||
@@ -932,7 +932,7 @@
|
||||
else if(href_list["f_secret"])
|
||||
if(!check_rights(R_ADMIN)) return
|
||||
|
||||
if(ticker && ticker.mode)
|
||||
if(ROUND_IS_STARTED)
|
||||
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)
|
||||
@@ -946,7 +946,7 @@
|
||||
else if(href_list["c_mode2"])
|
||||
if(!check_rights(R_ADMIN|R_SERVER)) return
|
||||
|
||||
if (ticker && ticker.mode)
|
||||
if (ROUND_IS_STARTED)
|
||||
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].",admin_key=key_name(usr))
|
||||
@@ -959,7 +959,7 @@
|
||||
else if(href_list["f_secret2"])
|
||||
if(!check_rights(R_ADMIN|R_SERVER)) return
|
||||
|
||||
if(ticker && ticker.mode)
|
||||
if(ROUND_IS_STARTED)
|
||||
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)
|
||||
@@ -1348,12 +1348,10 @@
|
||||
log_admin("[key_name(M)] has been hit by Bluespace Artillery fired by [src.owner]",admin_key=key_name(src.owner),ckey=key_name(M))
|
||||
message_admins("[key_name(M)] has been hit by Bluespace Artillery fired by [src.owner]")
|
||||
|
||||
var/obj/effect/stop/S
|
||||
S = new /obj/effect/stop
|
||||
S.victim = M
|
||||
S.loc = M.loc
|
||||
M.canmove = FALSE
|
||||
spawn(20)
|
||||
qdel(S)
|
||||
if (M)
|
||||
M.canmove = initial(M.canmove)
|
||||
|
||||
var/turf/simulated/floor/T = get_turf(M)
|
||||
if(istype(T))
|
||||
@@ -1535,7 +1533,7 @@
|
||||
else if(href_list["traitor"])
|
||||
if(!check_rights(R_ADMIN|R_MOD)) return
|
||||
|
||||
if(!ticker || !ticker.mode)
|
||||
if(!ROUND_IS_STARTED)
|
||||
alert("The game hasn't started yet!")
|
||||
return
|
||||
|
||||
|
||||
@@ -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"))
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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 += " <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
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -1,8 +1,3 @@
|
||||
|
||||
// Keep these two together, they *must* be defined on both
|
||||
// If /client ever becomes /datum/client or similar, they can be merged
|
||||
/client/proc/get_view_variables_header()
|
||||
return "<b>[src]</b>"
|
||||
/datum/proc/get_view_variables_header()
|
||||
return "<b>[src]</b>"
|
||||
|
||||
@@ -31,9 +26,6 @@
|
||||
</font>
|
||||
"}
|
||||
|
||||
// Same for these as for get_view_variables_header() above
|
||||
/client/proc/get_view_variables_options()
|
||||
return ""
|
||||
/datum/proc/get_view_variables_options()
|
||||
return ""
|
||||
|
||||
|
||||
@@ -194,6 +194,7 @@
|
||||
if(Obj.type == O_type)
|
||||
i++
|
||||
if (del_action == "Hard Delete")
|
||||
Obj.Destroy(TRUE)
|
||||
del(Obj)
|
||||
else
|
||||
qdel(Obj)
|
||||
@@ -208,9 +209,10 @@
|
||||
if(istype(Obj,O_type))
|
||||
i++
|
||||
if (del_action == "Hard Delete")
|
||||
Obj.Destroy(TRUE)
|
||||
del(Obj)
|
||||
else
|
||||
qdel(Obj)
|
||||
qdel(Obj, TRUE)
|
||||
if(!i)
|
||||
usr << "No objects of this type exist"
|
||||
return
|
||||
@@ -486,12 +488,13 @@
|
||||
usr << "This can only be done on mobs with clients"
|
||||
return
|
||||
|
||||
nanomanager.send_resources(H.client)
|
||||
usr << span("alert", "This command is temporarily disabled.")
|
||||
//nanomanager.send_resources(H.client)
|
||||
|
||||
usr << "Resource files sent"
|
||||
H << "Your NanoUI Resource files have been refreshed"
|
||||
//usr << "Resource files sent"
|
||||
//H << "Your NanoUI Resource files have been refreshed"
|
||||
|
||||
log_admin("[key_name(usr)] resent the NanoUI resource files to [key_name(H)] ", admin_key=key_name(usr), ckey=key_name(H))
|
||||
//log_admin("[key_name(usr)] resent the NanoUI resource files to [key_name(H)] ", admin_key=key_name(usr), ckey=key_name(H))
|
||||
|
||||
else if(href_list["regenerateicons"])
|
||||
if(!check_rights(0)) return
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
// parent_type is here because it's pointless to show in VV.
|
||||
/var/list/view_variables_hide_vars = list("bound_x", "bound_y", "bound_height", "bound_width", "bounds", "parent_type", "step_x", "step_y", "step_size")
|
||||
// Variables not to expand the lists of. Vars is pointless to expand, and overlays/underlays cannot be expanded.
|
||||
/var/list/view_variables_dont_expand = list("overlays", "underlays", "vars")
|
||||
/var/list/view_variables_dont_expand = list("overlays", "underlays", "vars", "screen", "our_overlays", "priority_overlays", "queued_overlays")
|
||||
// Variables that runtime if you try to test associativity of the lists they contain by indexing
|
||||
/var/list/view_variables_no_assoc = list("verbs", "contents")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user