mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-28 07:20:09 +01:00
Removes goonchat, adds TGChat and TG Stat Panels (#16514)
* tgui the beginning * binaries and the like * Bring in the last of it * Example radio UI * delete example * NTOS Main Menu, start on manifest, tgui states * tasks.json * gunnery ui pt 1 * okay * fix everything * scss update * oops * manifest gigablast * downloader part 1 * download prt 2 * NTOSDownloader final * mfw committing to_worlds * gunnery console pt2 * i cooked * targeting (finished) * one vueui down * voting ui almost done * MY MIND FEELS LIKE AN ARCH ENEMYYYY * voting ui down * photocopier * ntos config + download fixes * photocopier 2 * refactor define * NTOS client manager + fixes * fax machine final (it also uses toner now) * marching forwards... left behind... * ntnrc part 1 * canister * add quotes * portable pumps pt1 + more backgrounds * oops * finish the portable pump * freezers so I'll keep on pushing forward... you haven't seen the last of me... oooooooh... * doors ui pt1 * finish doors UI (forgive me wildkins it's a bit of shitcode) * vitals monitor, make things use labeled lists, new backgrounds * mais j'envoyé aucun mayday... * maglock pt1 * pour ça je me suis perdu... * infrared * fix that * prox sensor pt1 * prox sensor * signaler (this was actually pretty hard) * atmos control pt1 * atmos control pt1.1 * atmos pt 2 * fuel injector * multitool UI * jammer * list viewer * APC * portgen * targeting console updates + SMES ui * new themes, shield generator * supermatter * Add ore detector and (shitty) NTNet Relay * orderterminal pt1 * orderterminal pt2 * smartfridge * Add (air-)tank GUI update ore detector size * Adds Transfer Valves * Add AtmoScrubber * analyzer pt1 * weapons analyzer pt2 * bodyscanner pt1 * bodyscanner pt2 * fix this shitcode * seed storage * appearance changer * appearance changer final * sleeper pt1 * sleeper * gps * vehicles * chem dispenser * lily request * holopad * tgui modules pt1 * ppanel * damage menu * fixes * im here too now * follow menu, search bars * quikpay * quikpay fixes * circuit printer * ppanel * ppanel updates * pai * turret controls (i want to kill myself) * tweak * remove the boardgame * guntracker * implant tracker * penal mechs come close to me, come close to me * chem codex * pai radio * doorjack * pai directives * signaler removal, sensors * ghost spawner * spawnpoint * fixes * teleporter * one more to the chopping block * account database * remove divider * scanner, atmos * latejoin ui pt1 * latejoin * records pt1 * RECORDS UI DONE * delete interpreter & records * CHAT FUCKING CLIENT * data updates * fix some things * final UI, log * basic nanoui fix * antag panel * remove vueui * atm update * vending update * warrants, cameras * ntmonitor * time comes for all * preserve this legacy * bring that back (oops) * rcon, ui auto update for computer UIs, remove rcon computers * alarm monitoring (a bit broke and also todo: add custom alarm monitoring programs to a few consoles) * A LIKE SUPREME * a * power monitor * lights on * fuck this code, fuck nanoui modules, and fuck nanoui * LEAVE IT OH SO FAR BEHIND * fix alarm monitoring for synths * I SAW IN YOU WHAT LIFE WAS MISSING * comms console * idcard and record updates * turn the light on * arcade * pt2 * news browser * static * crusher * f * COULD I JUST SLEIGH THE GOLD FROM THE BALLS? I'M SO FRUSTRATED OH COULD YOU TELL? IF I HEAR ONE MORE VUEUI OR ONE NANOUI I'M GONNA LOSE IT SO LET ME GOOOOOOOOOOOOOOOOO * codeowners & suit sensors * html ui style removal * make lint happy * tgchat * tgpanels pt1 * THE SOUL LONGS FOR OBLIVION!!!!!!!!!!!!!!!!! * figure out why stat isnt working * goodbye ping * shhh * stat updates * An oath sworn in scors! Omni vortex lies! * final almost edits * fix that * last skin adjustments * resist and disorder * i slowly get up and turn off the noise, already fed up... * pleaseeeeeeeeeeeeeee * THE CREDIT LARP IS NECESSARY * i hold the keys * RISE UP * fix that? * harry's suggestions xoxo * runtime fix pt2 * You are the only thing that I still care about * fix runtimes and cl * whoops * misc fixes * fix that too * adds build workflow * f * Update update_tgui.yml * adds some needed steps * ATM * misc fixes and tweaks * fixes 2 * make newscasters usable and fix use power on freezers * turret control is clearer * remove duplicate * makes some verb tabs work properly * makes verbs work properly for real * sans moi * fixes pt2 * fix the chat unnecessarily reloading * fixes * epic * fixes * fix missing consoles --------- Co-authored-by: John Wildkins <john.wildkins@gmail.com> Co-authored-by: Matt Atlas <liermattia@gmail.com> Co-authored-by: harryob <55142896+harryob@users.noreply.github.com> Co-authored-by: Werner <Arrow768@users.noreply.github.com> Co-authored-by: Geeves <ggrobler447@gmail.com> Co-authored-by: harryob <me@harryob.live>
This commit is contained in:
co-authored by
John Wildkins
Matt Atlas
harryob
Werner
Geeves
harryob
parent
3cc846c1fe
commit
659752e2ea
@@ -327,7 +327,7 @@
|
||||
observer.real_name = client.prefs.real_name
|
||||
observer.name = observer.real_name
|
||||
if(!client.holder && !config.antag_hud_allowed)
|
||||
observer.verbs -= /mob/abstract/observer/verb/toggle_antagHUD
|
||||
remove_verb(observer, /mob/abstract/observer/verb/toggle_antagHUD)
|
||||
observer.ckey = ckey
|
||||
observer.initialise_postkey()
|
||||
qdel(src)
|
||||
|
||||
@@ -27,31 +27,28 @@ INITIALIZE_IMMEDIATE(/mob/abstract/new_player)
|
||||
QDEL_NULL(late_choices_ui)
|
||||
return ..()
|
||||
|
||||
/mob/abstract/new_player/Stat()
|
||||
..()
|
||||
/mob/abstract/new_player/get_status_tab_items()
|
||||
. = ..()
|
||||
|
||||
if(statpanel("Lobby"))
|
||||
stat("Game ID:", game_id)
|
||||
if(!istype(SSticker))
|
||||
return
|
||||
|
||||
if(!istype(SSticker))
|
||||
return
|
||||
if(SSticker.hide_mode == ROUNDTYPE_SECRET)
|
||||
. += "Game Mode: Secret"
|
||||
else if (SSticker.hide_mode == ROUNDTYPE_MIXED_SECRET)
|
||||
. += "Game Mode: Mixed Secret"
|
||||
else
|
||||
. += "Game Mode: [master_mode]" // Old setting for showing the game mode
|
||||
|
||||
if(SSticker.hide_mode == ROUNDTYPE_SECRET)
|
||||
stat("Game Mode:", "Secret")
|
||||
else if (SSticker.hide_mode == ROUNDTYPE_MIXED_SECRET)
|
||||
stat("Game Mode:", "Mixed Secret")
|
||||
else
|
||||
stat("Game Mode:", "[master_mode]") // Old setting for showing the game mode
|
||||
|
||||
if(SSticker.current_state == GAME_STATE_PREGAME)
|
||||
stat("Time To Start:", "[SSticker.pregame_timeleft][round_progressing ? "" : " (DELAYED)"]")
|
||||
stat("Players: [length(player_list)]", "Players Ready: [SSticker.total_players_ready]")
|
||||
if(LAZYLEN(SSticker.ready_player_jobs))
|
||||
for(var/dept in SSticker.ready_player_jobs)
|
||||
if(LAZYLEN(SSticker.ready_player_jobs[dept]))
|
||||
stat(uppertext(dept), null)
|
||||
for(var/char in SSticker.ready_player_jobs[dept])
|
||||
stat("[copytext_char(char, 1, 18)]", "[SSticker.ready_player_jobs[dept][char]]")
|
||||
if(SSticker.current_state == GAME_STATE_PREGAME)
|
||||
. += "Time To Start: [SSticker.pregame_timeleft][round_progressing ? "" : " (DELAYED)"]"
|
||||
. += "Players: [length(player_list)] Players Ready: [SSticker.total_players_ready]"
|
||||
if(LAZYLEN(SSticker.ready_player_jobs))
|
||||
for(var/dept in SSticker.ready_player_jobs)
|
||||
if(LAZYLEN(SSticker.ready_player_jobs[dept]))
|
||||
. += "[uppertext(dept)]"
|
||||
for(var/char in SSticker.ready_player_jobs[dept])
|
||||
. += "[copytext_char(char, 1, 18)]: [SSticker.ready_player_jobs[dept][char]]"
|
||||
|
||||
/mob/abstract/new_player/Topic(href, href_list[])
|
||||
if(!client) return 0
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
sight |= SEE_TURFS | SEE_MOBS | SEE_OBJS | SEE_SELF
|
||||
see_invisible = SEE_INVISIBLE_OBSERVER
|
||||
see_in_dark = 100
|
||||
verbs += /mob/abstract/observer/proc/dead_tele
|
||||
add_verb(src, /mob/abstract/observer/proc/dead_tele)
|
||||
|
||||
set_stat(DEAD)
|
||||
|
||||
@@ -234,11 +234,11 @@ Works together with spawning an observer, noted above.
|
||||
ghost.timeofdeath = src.stat == DEAD ? src.timeofdeath : world.time
|
||||
|
||||
ghost.ckey = ckey
|
||||
ghost.client = client
|
||||
ghost.initialise_postkey(should_set_timer)
|
||||
ghost.client?.init_verbs()
|
||||
if(ghost.client)
|
||||
if(!ghost.client.holder && !config.antag_hud_allowed) // For new ghosts we remove the verb from even showing up if it's not allowed.
|
||||
ghost.verbs -= /mob/abstract/observer/verb/toggle_antagHUD // Poor guys, don't know what they are missing!
|
||||
remove_verb(ghost, /mob/abstract/observer/verb/toggle_antagHUD) // Poor guys, don't know what they are missing!
|
||||
return ghost
|
||||
|
||||
/*
|
||||
@@ -280,14 +280,6 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
/mob/abstract/observer/set_stat()
|
||||
stat = DEAD // They are also always dead
|
||||
|
||||
/mob/abstract/observer/Stat()
|
||||
..()
|
||||
if(statpanel("Status"))
|
||||
if(evacuation_controller)
|
||||
var/eta_status = evacuation_controller.get_status_panel_eta()
|
||||
if(eta_status)
|
||||
stat(null, eta_status)
|
||||
|
||||
/mob/abstract/observer/verb/reenter_corpse()
|
||||
set category = "Ghost"
|
||||
set name = "Re-enter Corpse"
|
||||
@@ -379,7 +371,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
if(!istype(usr, /mob/abstract/observer))
|
||||
to_chat(usr, "Not when you're not dead!")
|
||||
return
|
||||
usr.verbs -= /mob/abstract/observer/proc/dead_tele
|
||||
remove_verb(usr, /mob/abstract/observer/proc/dead_tele)
|
||||
ADD_VERB_IN(usr, 30, /mob/abstract/observer/proc/dead_tele)
|
||||
var/area/thearea = ghostteleportlocs[A]
|
||||
if(!thearea) return
|
||||
@@ -729,9 +721,9 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
|
||||
is_manifest = 0
|
||||
if(!is_manifest)
|
||||
is_manifest = 1
|
||||
verbs += /mob/abstract/observer/proc/toggle_visibility_verb
|
||||
verbs += /mob/abstract/observer/proc/ghost_whisper
|
||||
verbs += /mob/abstract/observer/proc/move_item
|
||||
add_verb(src, /mob/abstract/observer/proc/toggle_visibility_verb)
|
||||
add_verb(src, /mob/abstract/observer/proc/ghost_whisper)
|
||||
add_verb(src, /mob/abstract/observer/proc/move_item)
|
||||
|
||||
if(src.invisibility != 0)
|
||||
user.visible_message( \
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
var/timeout_timer
|
||||
|
||||
/mob/abstract/unauthed/New()
|
||||
verbs -= typesof(/mob/verb)
|
||||
remove_verb(src, typesof(/mob/verb))
|
||||
|
||||
/mob/abstract/unauthed/LateLogin()
|
||||
SHOULD_CALL_PARENT(FALSE)
|
||||
@@ -15,7 +15,7 @@
|
||||
to_chat(src, "<span class='danger'><b>You need to authenticate before you can continue.</b></span>")
|
||||
token = md5("[client.ckey][client.computer_id][world.time][rand()]")
|
||||
unauthed[token] = src
|
||||
client.verbs -= typesof(/client/verb)
|
||||
remove_verb(client, typesof(/client/verb))
|
||||
var/uihtml = "<html><head><style>body * {display: block;text-align:center;margin: 14px 0;font-size:24px;text-decoration:none;font-family:Segoe UI,Frutiger,Frutiger Linotype,Dejavu Sans,Helvetica Neue,Arial,sans-serif;}</style></head><body><p>Please select:</p>"
|
||||
if(config.guests_allowed)
|
||||
uihtml += "<a href='?src=\ref[src];authaction=guest'>Login as guest</a>"
|
||||
@@ -39,7 +39,7 @@
|
||||
var/client/c = client // so we don't lose the client in the current mob.
|
||||
|
||||
show_browser(src, null, "window=externalauth")
|
||||
c.verbs += typesof(/client/verb) // Let's return regular client verbs
|
||||
add_verb(c, typesof(/client/verb)) // Let's return regular client verbs
|
||||
c.authed = TRUE // We declare client as authed now
|
||||
c.prefs = null //Null them so we can load them from the db again for the correct ckey
|
||||
// Check for bans
|
||||
|
||||
@@ -117,6 +117,7 @@ var/list/holder_mob_icon_cache = list()
|
||||
M.attackby(W,user)
|
||||
|
||||
/obj/item/holder/dropped(mob/user)
|
||||
. = ..()
|
||||
|
||||
///When an object is put into a container, drop fires twice.
|
||||
//once with it on the floor, and then once in the container
|
||||
@@ -204,7 +205,7 @@ var/list/holder_mob_icon_cache = list()
|
||||
to_chat(grabber, "<span class='warning'>Your hand is full!</span>")
|
||||
return
|
||||
|
||||
src.verbs += /mob/living/proc/get_holder_location//This has to be before we move the mob into the holder
|
||||
add_verb(src, /mob/living/proc/get_holder_location) //This has to be before we move the mob into the holder
|
||||
|
||||
spawn(2)
|
||||
var/obj/item/holder/H = new holder_type(loc)
|
||||
|
||||
@@ -323,7 +323,7 @@
|
||||
key = "4"
|
||||
flags = WHITELISTED | TCOMSSIM
|
||||
syllables = list("af", "if", "ba", "ta", "tha", "id", "jem", "ha", "kha", "dal", "dhl", "ra", "zay", "sen", "um", "shn", "sid", "ad", "ta", "za", "ayn", "gha", "zir", "yn", "fa", "qaf", "iam", "mim", "al", "ja", "non", "ha", "waw", "ya",
|
||||
"hem", "zah", "hml", "ks", "ini", "da", "ks", "iga", "ih", "la", "ulf", "xe", "ayw", "sit", "ah", "aarah", "jalaa", "sirt", "kurt", "turhk", "ust", "irk", "kir", "mir", "ach", "oglu", "bolu", "shek", "she", "ghoz", "miya", "ejdan",
|
||||
"hem", "zah", "hml", "ks", "ini", "da", "ks", "iga", "ih", "la", "ulf", "xe", "ayw", "sit", "ah", "aarah", "jalaa", "sirt", "kurt", "turhk", "ust", "irk", "kir", "mir", "ach", "oglu", "bolu", "shek", "she", "ghoz", "miya", "ejdan",
|
||||
"haaz", "quq", "taab", "shanha", "an", "saa", "seh", "an'", "e'", "a'", "em'")
|
||||
allow_accents = TRUE
|
||||
|
||||
|
||||
@@ -25,8 +25,8 @@
|
||||
|
||||
time_of_birth = world.time
|
||||
|
||||
verbs += /mob/living/proc/ventcrawl
|
||||
verbs += /mob/living/proc/hide
|
||||
add_verb(src, /mob/living/proc/ventcrawl)
|
||||
add_verb(src, /mob/living/proc/hide)
|
||||
|
||||
name = "[initial(name)] ([rand(1, 1000)])"
|
||||
real_name = name
|
||||
@@ -40,9 +40,9 @@
|
||||
/mob/living/carbon/alien/u_equip(obj/item/W as obj)
|
||||
return
|
||||
|
||||
/mob/living/carbon/alien/Stat()
|
||||
..()
|
||||
stat(null, "Progress: [amount_grown]/[max_grown]")
|
||||
/mob/living/carbon/alien/get_status_tab_items()
|
||||
. = ..()
|
||||
. += "Progress: [amount_grown]/[max_grown]"
|
||||
|
||||
/mob/living/carbon/alien/restrained()
|
||||
return 0
|
||||
@@ -51,4 +51,4 @@
|
||||
return // Consider adding cuffs and hats to this, for the sake of fun.
|
||||
|
||||
/mob/living/carbon/alien/cannot_use_vents()
|
||||
return
|
||||
return
|
||||
|
||||
@@ -232,37 +232,36 @@
|
||||
//This function makes sure the nymph has the correct split/merge verbs, depending on whether or not its part of a gestalt
|
||||
/mob/living/carbon/alien/diona/proc/update_verbs()
|
||||
if(gestalt && !detached)
|
||||
verbs |= /mob/living/carbon/alien/diona/proc/split
|
||||
verbs -= /mob/living/proc/ventcrawl
|
||||
verbs -= /mob/living/proc/hide
|
||||
verbs -= /mob/living/carbon/alien/diona/proc/grow
|
||||
verbs -= /mob/living/carbon/alien/diona/proc/merge
|
||||
verbs -= /mob/living/carbon/proc/absorb_nymph
|
||||
verbs -= /mob/living/carbon/proc/sample
|
||||
verbs -= /mob/living/carbon/alien/diona/proc/remove_hat
|
||||
verbs -= /mob/living/carbon/alien/diona/proc/attach_nymph_limb
|
||||
verbs -= /mob/living/carbon/alien/diona/proc/detach_nymph_limb
|
||||
add_verb(src, /mob/living/carbon/alien/diona/proc/split)
|
||||
remove_verb(src, /mob/living/proc/ventcrawl)
|
||||
remove_verb(src, /mob/living/proc/hide)
|
||||
remove_verb(src, /mob/living/carbon/alien/diona/proc/grow)
|
||||
remove_verb(src, /mob/living/carbon/alien/diona/proc/merge)
|
||||
remove_verb(src, /mob/living/carbon/proc/absorb_nymph)
|
||||
remove_verb(src, /mob/living/carbon/proc/sample)
|
||||
remove_verb(src, /mob/living/carbon/alien/diona/proc/remove_hat)
|
||||
remove_verb(src, /mob/living/carbon/alien/diona/proc/attach_nymph_limb)
|
||||
remove_verb(src, /mob/living/carbon/alien/diona/proc/detach_nymph_limb)
|
||||
else
|
||||
verbs |= /mob/living/carbon/alien/diona/proc/merge
|
||||
verbs |= /mob/living/carbon/proc/absorb_nymph
|
||||
verbs |= /mob/living/carbon/alien/diona/proc/grow
|
||||
verbs |= /mob/living/proc/ventcrawl
|
||||
verbs |= /mob/living/proc/hide
|
||||
verbs |= /mob/living/carbon/proc/sample
|
||||
verbs |= /mob/living/carbon/alien/diona/proc/remove_hat
|
||||
verbs |= /mob/living/carbon/alien/diona/proc/attach_nymph_limb
|
||||
verbs |= /mob/living/carbon/alien/diona/proc/detach_nymph_limb
|
||||
verbs -= /mob/living/carbon/alien/diona/proc/split // we want to remove this one
|
||||
add_verb(src, /mob/living/carbon/alien/diona/proc/merge)
|
||||
add_verb(src, /mob/living/carbon/proc/absorb_nymph)
|
||||
add_verb(src, /mob/living/carbon/alien/diona/proc/grow)
|
||||
add_verb(src, /mob/living/proc/ventcrawl)
|
||||
add_verb(src, /mob/living/proc/hide)
|
||||
add_verb(src, /mob/living/carbon/proc/sample)
|
||||
add_verb(src, /mob/living/carbon/alien/diona/proc/remove_hat)
|
||||
add_verb(src, /mob/living/carbon/alien/diona/proc/attach_nymph_limb)
|
||||
add_verb(src, /mob/living/carbon/alien/diona/proc/detach_nymph_limb)
|
||||
remove_verb(src, /mob/living/carbon/alien/diona/proc/split) // we want to remove this one
|
||||
|
||||
verbs -= /mob/living/carbon/alien/verb/evolve //We don't want the old alien evolve verb
|
||||
remove_verb(src, /mob/living/carbon/alien/verb/evolve) //We don't want the old alien evolve verb
|
||||
|
||||
|
||||
/mob/living/carbon/alien/diona/Stat()
|
||||
..()
|
||||
if(statpanel("Status"))
|
||||
stat(null, text("Biomass: [nutrition]/[evolve_nutrition]"))
|
||||
if(nutrition > evolve_nutrition)
|
||||
stat(null, text("You have enough biomass to grow!"))
|
||||
/mob/living/carbon/alien/diona/get_status_tab_items()
|
||||
. = ..()
|
||||
. += "Biomass: [nutrition]/[evolve_nutrition]"
|
||||
if(nutrition > evolve_nutrition)
|
||||
. += "You have enough biomass to grow!"
|
||||
|
||||
//Overriding this function from /mob/living/carbon/alien/life.dm
|
||||
/mob/living/carbon/alien/diona/handle_regular_status_updates()
|
||||
|
||||
@@ -147,7 +147,7 @@
|
||||
return
|
||||
|
||||
if(!iscarbon(loc))
|
||||
verbs -= /mob/living/carbon/alien/diona/proc/split
|
||||
remove_verb(src, /mob/living/carbon/alien/diona/proc/split)
|
||||
return
|
||||
|
||||
var/r = alert(src, "Splitting will remove you from your gestalt and deposit you on the ground, allowing you continue alone. If you had any stored biomass before you joined the gestalt, you will not get it back. Are you sure you wish to split?", "Confirm Split", "I am ready to leave.", "I'll stick around.")
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
return
|
||||
|
||||
if(!adult_form)
|
||||
verbs -= /mob/living/carbon/alien/verb/evolve
|
||||
remove_verb(src, /mob/living/carbon/alien/verb/evolve)
|
||||
return
|
||||
|
||||
if(handcuffed || legcuffed)
|
||||
@@ -50,4 +50,4 @@
|
||||
return
|
||||
|
||||
/mob/living/carbon/alien/proc/show_evolution_blurb()
|
||||
return
|
||||
return
|
||||
|
||||
@@ -566,8 +566,8 @@ var/list/diona_banned_languages = list(
|
||||
C.diona_handle_regeneration(C.DS, TRUE)
|
||||
to_chat(C, SPAN_NOTICE("Your lost nymph merged back."))
|
||||
C.add_nymph()
|
||||
verbs -= /mob/living/carbon/alien/diona/proc/switch_to_gestalt
|
||||
C.verbs -= /mob/living/carbon/human/proc/switch_to_nymph
|
||||
remove_verb(src, /mob/living/carbon/alien/diona/proc/switch_to_gestalt)
|
||||
remove_verb(C, /mob/living/carbon/human/proc/switch_to_nymph)
|
||||
C.DS.nym = null
|
||||
detached = FALSE
|
||||
src.forceMove(C)
|
||||
|
||||
@@ -58,7 +58,7 @@
|
||||
B.host_brain.name = "host brain"
|
||||
B.host_brain.real_name = "host brain"
|
||||
|
||||
verbs -= /mob/living/carbon/proc/release_control
|
||||
remove_verb(src, /mob/living/carbon/proc/release_control)
|
||||
|
||||
callHook("death", list(src, gibbed))
|
||||
|
||||
|
||||
@@ -14,10 +14,10 @@
|
||||
/mob/living/carbon/human/proc/setup_gestalt()
|
||||
composition_reagent = /singleton/reagent/nutriment //Dionae are plants, so eating them doesn't give animal protein
|
||||
setup_dionastats()
|
||||
verbs += /mob/living/carbon/human/proc/check_light
|
||||
verbs += /mob/living/carbon/human/proc/diona_split_nymph
|
||||
verbs += /mob/living/carbon/human/proc/diona_detach_nymph
|
||||
verbs += /mob/living/carbon/human/proc/pause_regen_process
|
||||
add_verb(src, /mob/living/carbon/human/proc/check_light)
|
||||
add_verb(src, /mob/living/carbon/human/proc/diona_split_nymph)
|
||||
add_verb(src, /mob/living/carbon/human/proc/diona_detach_nymph)
|
||||
add_verb(src, /mob/living/carbon/human/proc/pause_regen_process)
|
||||
|
||||
spawn(10)
|
||||
//This is delayed after a gestalt is spawned, to allow nymphs to be added to it before extras are created
|
||||
@@ -25,7 +25,7 @@
|
||||
//There are no initial nymphs for a newly spawned diona player
|
||||
|
||||
if (mind?.name && mind.name != real_name)
|
||||
verbs += /mob/living/carbon/human/proc/gestalt_set_name
|
||||
add_verb(src, /mob/living/carbon/human/proc/gestalt_set_name)
|
||||
var/datum/language/L = locate(/datum/language/diona) in languages
|
||||
var/newname
|
||||
if (L)
|
||||
@@ -251,9 +251,9 @@
|
||||
src.ajourn = 0
|
||||
DS.nym = WEAKREF(M)
|
||||
M.gestalt = src
|
||||
M.verbs += /mob/living/carbon/alien/diona/proc/merge_back_to_gestalt
|
||||
M.verbs += /mob/living/carbon/alien/diona/proc/switch_to_gestalt
|
||||
verbs += /mob/living/carbon/human/proc/switch_to_nymph
|
||||
add_verb(M, /mob/living/carbon/alien/diona/proc/merge_back_to_gestalt)
|
||||
add_verb(M, /mob/living/carbon/alien/diona/proc/switch_to_gestalt)
|
||||
add_verb(src, /mob/living/carbon/human/proc/switch_to_nymph)
|
||||
M.detached = TRUE
|
||||
M.update_verbs(TRUE)
|
||||
M.languages = languages.Copy()
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
if(mind)
|
||||
mind.name = real_name
|
||||
if(get_hearing_sensitivity())
|
||||
verbs += /mob/living/carbon/human/proc/listening_close
|
||||
add_verb(src, /mob/living/carbon/human/proc/listening_close)
|
||||
if(!height)
|
||||
height = species.species_height
|
||||
|
||||
@@ -191,47 +191,36 @@
|
||||
return nutrition + stomach.ingested.total_volume
|
||||
return 0
|
||||
|
||||
/mob/living/carbon/human/Stat()
|
||||
..()
|
||||
if(statpanel("Status"))
|
||||
stat("Intent:", "[a_intent]")
|
||||
stat("Move Mode:", "[m_intent]")
|
||||
if(evacuation_controller)
|
||||
var/eta_status = evacuation_controller.get_status_panel_eta()
|
||||
if(eta_status)
|
||||
stat(null, eta_status)
|
||||
if(is_diona() && DS)
|
||||
stat("Biomass:", "[round(nutrition)] / [max_nutrition]")
|
||||
stat("Energy:", "[round(DS.stored_energy)] / [round(DS.max_energy)]")
|
||||
if(DS.regen_limb)
|
||||
stat("Regeneration Progress:", " [round(DS.regen_limb_progress)] / [LIMB_REGROW_REQUIREMENT]")
|
||||
if (internal)
|
||||
if (!internal.air_contents)
|
||||
qdel(internal)
|
||||
else
|
||||
stat("Internal Atmosphere Info", internal.name)
|
||||
stat("Tank Pressure", internal.air_contents.return_pressure())
|
||||
stat("Distribution Pressure", internal.distribute_pressure)
|
||||
/mob/living/carbon/human/get_status_tab_items()
|
||||
. = ..()
|
||||
. += "Intent: [a_intent]"
|
||||
. += "Move Mode: [m_intent]"
|
||||
if(is_diona() && DS)
|
||||
. += "Biomass: [round(nutrition)] / [max_nutrition]"
|
||||
. += "Energy: [round(DS.stored_energy)] / [round(DS.max_energy)]"
|
||||
if(DS.regen_limb)
|
||||
. += "Regeneration Progress: [round(DS.regen_limb_progress)] / [LIMB_REGROW_REQUIREMENT]"
|
||||
if (internal)
|
||||
if (!internal.air_contents)
|
||||
qdel(internal)
|
||||
else
|
||||
. += "Internal Atmosphere Info: [internal.name]"
|
||||
. += "Tank Pressure: [internal.air_contents.return_pressure()]"
|
||||
. += "Distribution Pressure: [internal.distribute_pressure]"
|
||||
|
||||
var/obj/item/organ/internal/cell/IC = internal_organs_by_name[BP_CELL]
|
||||
if(IC && IC.cell)
|
||||
stat("Battery charge:", "[IC.get_charge()]/[IC.cell.maxcharge]")
|
||||
var/obj/item/organ/internal/cell/IC = internal_organs_by_name[BP_CELL]
|
||||
if(IC && IC.cell)
|
||||
. += "Battery charge: [IC.get_charge()]/[IC.cell.maxcharge]"
|
||||
|
||||
if(back && istype(back,/obj/item/rig))
|
||||
var/obj/item/rig/suit = back
|
||||
var/cell_status = "ERROR"
|
||||
if(suit.cell) cell_status = "[suit.cell.charge]/[suit.cell.maxcharge]"
|
||||
stat(null, "Suit charge: [cell_status]")
|
||||
|
||||
if(mind)
|
||||
var/datum/vampire/vampire = mind.antag_datums[MODE_VAMPIRE]
|
||||
if(vampire)
|
||||
stat("Usable Blood", vampire.blood_usable)
|
||||
stat("Total Blood", vampire.blood_total)
|
||||
var/datum/changeling/changeling = mind.antag_datums[MODE_CHANGELING]
|
||||
if(changeling)
|
||||
stat("Chemical Storage", changeling.chem_charges)
|
||||
stat("Genetic Damage Time", changeling.geneticdamage)
|
||||
if(mind)
|
||||
var/datum/vampire/vampire = mind.antag_datums[MODE_VAMPIRE]
|
||||
if(vampire)
|
||||
. += "Usable Blood [vampire.blood_usable]"
|
||||
. += "Total Blood [vampire.blood_total]"
|
||||
var/datum/changeling/changeling = mind.antag_datums[MODE_CHANGELING]
|
||||
if(changeling)
|
||||
. += "Chemical Storage: [changeling.chem_charges]"
|
||||
. += "Genetic Damage Time: [changeling.geneticdamage]"
|
||||
|
||||
/mob/living/carbon/human/ex_act(severity)
|
||||
if(!blinded)
|
||||
@@ -1040,7 +1029,7 @@
|
||||
return
|
||||
|
||||
if(NOT_FLAG(mutations, mMorph))
|
||||
src.verbs -= /mob/living/carbon/human/proc/morph
|
||||
remove_verb(src, /mob/living/carbon/human/proc/morph)
|
||||
return
|
||||
|
||||
var/new_facial = input("Please select facial hair color.", "Character Generation",rgb(r_facial,g_facial,b_facial)) as color
|
||||
@@ -1121,7 +1110,7 @@
|
||||
return
|
||||
|
||||
if(NOT_FLAG(mutations, mRemotetalk))
|
||||
src.verbs -= /mob/living/carbon/human/proc/remotesay
|
||||
remove_verb(src, /mob/living/carbon/human/proc/remotesay)
|
||||
return
|
||||
var/list/creatures = list()
|
||||
for(var/hh in human_mob_list)
|
||||
@@ -1155,7 +1144,7 @@
|
||||
if(NOT_FLAG(mutations, mRemote))
|
||||
remoteview_target = null
|
||||
reset_view(0)
|
||||
src.verbs -= /mob/living/carbon/human/proc/remoteobserve
|
||||
remove_verb(src, /mob/living/carbon/human/proc/remoteobserve)
|
||||
return
|
||||
|
||||
if(client.eye != client.mob)
|
||||
@@ -1295,7 +1284,7 @@
|
||||
blood_DNA[H.dna.unique_enzymes] = H.dna.b_type
|
||||
hand_blood_color = H.species?.blood_color
|
||||
src.update_inv_gloves() //handles bloody hands overlays and updating
|
||||
verbs += /mob/living/carbon/human/proc/bloody_doodle
|
||||
add_verb(src, /mob/living/carbon/human/proc/bloody_doodle)
|
||||
return TRUE //we applied blood to the item
|
||||
|
||||
/mob/living/carbon/human/proc/get_full_print()
|
||||
@@ -1520,7 +1509,7 @@
|
||||
return 0 //something is terribly wrong
|
||||
|
||||
if (!bloody_hands)
|
||||
verbs -= /mob/living/carbon/human/proc/bloody_doodle
|
||||
remove_verb(src, /mob/living/carbon/human/proc/bloody_doodle)
|
||||
|
||||
if (src.gloves)
|
||||
to_chat(src, SPAN_WARNING("Your [src.gloves] are getting in the way."))
|
||||
|
||||
@@ -412,9 +412,9 @@
|
||||
/mob/living/carbon/human/proc/set_tail_style(var/new_style)
|
||||
tail_style = new_style
|
||||
if(tail_style)
|
||||
verbs |= /mob/living/carbon/human/proc/open_tail_storage
|
||||
add_verb(src, /mob/living/carbon/human/proc/open_tail_storage)
|
||||
else
|
||||
verbs -= /mob/living/carbon/human/proc/open_tail_storage
|
||||
remove_verb(src, /mob/living/carbon/human/proc/open_tail_storage)
|
||||
|
||||
/mob/living/carbon/human/proc/get_tail_accessory()
|
||||
var/obj/item/organ/external/groin/G = organs_by_name[BP_GROIN]
|
||||
|
||||
@@ -434,7 +434,7 @@
|
||||
/datum/species/proc/remove_inherent_verbs(var/mob/living/carbon/human/H)
|
||||
if(inherent_verbs)
|
||||
for(var/verb_path in inherent_verbs)
|
||||
H.verbs -= verb_path
|
||||
remove_verb(H, verb_path)
|
||||
|
||||
if(inherent_spells)
|
||||
for(var/spell_path in inherent_spells)
|
||||
@@ -446,7 +446,7 @@
|
||||
/datum/species/proc/add_inherent_verbs(var/mob/living/carbon/human/H)
|
||||
if(inherent_verbs)
|
||||
for(var/verb_path in inherent_verbs)
|
||||
H.verbs |= verb_path
|
||||
add_verb(H, verb_path)
|
||||
|
||||
if(inherent_spells)
|
||||
for(var/spell_path in inherent_spells)
|
||||
|
||||
@@ -72,7 +72,7 @@
|
||||
/mob/living/carbon/slime/Initialize(mapload, colour = "grey")
|
||||
. = ..()
|
||||
|
||||
verbs += /mob/living/proc/ventcrawl
|
||||
add_verb(src, /mob/living/proc/ventcrawl)
|
||||
|
||||
add_language(LANGUAGE_TCB)
|
||||
set_default_language(all_languages[LANGUAGE_TCB])
|
||||
@@ -226,22 +226,21 @@
|
||||
/mob/living/carbon/slime/Allow_Spacemove()
|
||||
return TRUE
|
||||
|
||||
/mob/living/carbon/slime/Stat()
|
||||
..()
|
||||
/mob/living/carbon/slime/get_status_tab_items()
|
||||
. = ..()
|
||||
|
||||
statpanel("Status")
|
||||
stat(null, "Health: [round((health / maxHealth) * 100)]%")
|
||||
stat(null, "Intent: [a_intent]")
|
||||
. += "Health: [round((health / maxHealth) * 100)]%"
|
||||
. += "Intent: [a_intent]"
|
||||
|
||||
if(client.statpanel == "Status")
|
||||
stat(null, "Nutrition: [nutrition]/[get_max_nutrition()]")
|
||||
. += "Nutrition: [nutrition]/[get_max_nutrition()]"
|
||||
if(amount_grown >= 5)
|
||||
if(is_adult)
|
||||
stat(null, "You can reproduce!")
|
||||
. += "You can reproduce!"
|
||||
else
|
||||
stat(null, "You can evolve!")
|
||||
. += "You can evolve!"
|
||||
|
||||
stat(null,"Power Level: [powerlevel]")
|
||||
. += "Power Level: [powerlevel]"
|
||||
|
||||
/mob/living/carbon/slime/adjustFireLoss(amount)
|
||||
..(-abs(amount)) // Heals them
|
||||
|
||||
@@ -224,7 +224,7 @@
|
||||
/mob/living/proc/embed(var/obj/O, var/def_zone=null)
|
||||
O.forceMove(src)
|
||||
src.embedded += O
|
||||
src.verbs += /mob/proc/yank_out_object
|
||||
add_verb(src, /mob/proc/yank_out_object)
|
||||
|
||||
/mob/living/proc/turf_collision(var/atom/T, var/speed = THROWFORCE_SPEED_DIVISOR, var/sound_to_play = 'sound/effects/bangtaper.ogg')
|
||||
visible_message("<span class='danger'>[src] slams into \the [T]!</span>")
|
||||
|
||||
@@ -107,12 +107,12 @@ var/list/ai_verbs_default = list(
|
||||
var/custom_sprite = FALSE // Whether the selected icon is custom
|
||||
|
||||
/mob/living/silicon/ai/proc/add_ai_verbs()
|
||||
src.verbs |= ai_verbs_default
|
||||
src.verbs |= silicon_subsystems
|
||||
add_verb(src, ai_verbs_default)
|
||||
add_verb(src, silicon_subsystems)
|
||||
|
||||
/mob/living/silicon/ai/proc/remove_ai_verbs()
|
||||
src.verbs -= ai_verbs_default
|
||||
src.verbs -= silicon_subsystems
|
||||
remove_verb(src, ai_verbs_default)
|
||||
remove_verb(src, silicon_subsystems)
|
||||
|
||||
/mob/living/silicon/ai/Initialize(mapload, datum/ai_laws/L, obj/item/device/mmi/B, safety = 0)
|
||||
shouldnt_see = typecacheof(/obj/effect/rune)
|
||||
|
||||
@@ -10,9 +10,9 @@
|
||||
hacked_apcs = list()
|
||||
recalc_cpu()
|
||||
|
||||
verbs += new/datum/game_mode/malfunction/verb/ai_select_hardware()
|
||||
verbs += new/datum/game_mode/malfunction/verb/ai_select_research()
|
||||
verbs += new/datum/game_mode/malfunction/verb/ai_help()
|
||||
add_verb(src, new/datum/game_mode/malfunction/verb/ai_select_hardware())
|
||||
add_verb(src, new/datum/game_mode/malfunction/verb/ai_select_research())
|
||||
add_verb(src, new/datum/game_mode/malfunction/verb/ai_help())
|
||||
|
||||
// And greet user with some OOC info.
|
||||
to_chat(user, "You are malfunctioning, you do not have to follow any laws.")
|
||||
@@ -108,14 +108,6 @@
|
||||
/mob/living/silicon/ai/proc/hardware_integrity()
|
||||
return (health / maxHealth) * 100
|
||||
|
||||
// Shows capacitor charge and hardware integrity information to the AI in Status tab.
|
||||
/mob/living/silicon/ai/show_system_integrity()
|
||||
if(!src.stat)
|
||||
stat("Hardware integrity", "[hardware_integrity()]%")
|
||||
stat("Internal capacitor", "[backup_capacitor()]%")
|
||||
else
|
||||
stat("Systems nonfunctional")
|
||||
|
||||
// Shows AI Malfunction related information to the AI.
|
||||
/mob/living/silicon/ai/show_malf_ai()
|
||||
if(src.is_malf())
|
||||
|
||||
@@ -36,14 +36,14 @@
|
||||
else
|
||||
health = maxHealth - getBruteLoss() - getFireLoss()
|
||||
|
||||
/mob/living/silicon/pai/Stat()
|
||||
..()
|
||||
/mob/living/silicon/pai/get_status_tab_items()
|
||||
. = ..()
|
||||
|
||||
if(istype(card.loc, /mob/living/bot))
|
||||
var/mob/living/bot/B = card.loc
|
||||
stat(null, "Piloting: [B.name]")
|
||||
stat(null, "Bot Status: [B.on ? "Active" : "Inactive"]")
|
||||
stat(null, "Maintenance Hatch: [B.open ? "Open" : "Closed"]")
|
||||
stat(null, "Maintenance Lock: [B.locked ? "Locked" : "Unlocked"]")
|
||||
. += "Piloting: [B.name]"
|
||||
. += "Bot Status: [B.on ? "Active" : "Inactive"]"
|
||||
. += "Maintenance Hatch: [B.open ? "Open" : "Closed"]"
|
||||
. += "Maintenance Lock: [B.locked ? "Locked" : "Unlocked"]"
|
||||
if(B.emagged)
|
||||
stat(null, "Bot M#$FUN90: MALFUNC--")
|
||||
. += "Bot M#$FUN90: MALFUNC--"
|
||||
|
||||
@@ -183,11 +183,11 @@
|
||||
add_language(LANGUAGE_SIGN, 0)
|
||||
set_custom_sprite()
|
||||
|
||||
verbs += /mob/living/silicon/pai/proc/choose_chassis
|
||||
verbs += /mob/living/silicon/pai/proc/choose_verbs
|
||||
verbs += /mob/living/silicon/proc/computer_interact
|
||||
verbs += /mob/living/silicon/pai/proc/personal_computer_interact
|
||||
verbs += /mob/living/silicon/proc/silicon_mimic_accent
|
||||
add_verb(src, /mob/living/silicon/pai/proc/choose_chassis)
|
||||
add_verb(src, /mob/living/silicon/pai/proc/choose_verbs)
|
||||
add_verb(src, /mob/living/silicon/proc/computer_interact)
|
||||
add_verb(src, /mob/living/silicon/pai/proc/personal_computer_interact)
|
||||
add_verb(src, /mob/living/silicon/proc/silicon_mimic_accent)
|
||||
|
||||
. = ..()
|
||||
|
||||
@@ -214,18 +214,11 @@
|
||||
greeted = 1
|
||||
..()
|
||||
|
||||
// this function shows the information about being silenced as a pAI in the Status panel
|
||||
/mob/living/silicon/pai/proc/show_silenced()
|
||||
if(src.silence_time)
|
||||
/mob/living/silicon/pai/get_status_tab_items()
|
||||
. = ..()
|
||||
if(silence_time)
|
||||
var/timeleft = round((silence_time - world.timeofday)/10 ,1)
|
||||
stat(null, "Communications system reboot in -[(timeleft / 60) % 60]:[add_zero(num2text(timeleft % 60), 2)]")
|
||||
|
||||
|
||||
/mob/living/silicon/pai/Stat()
|
||||
..()
|
||||
statpanel("Status")
|
||||
if (src.client.statpanel == "Status")
|
||||
show_silenced()
|
||||
. += "Communications system reboot in -[(timeleft / 60) % 60]:[add_zero(num2text(timeleft % 60), 2)]"
|
||||
|
||||
/mob/living/silicon/pai/check_eye(var/mob/user as mob)
|
||||
if (!src.current)
|
||||
@@ -386,8 +379,8 @@
|
||||
holder_type = pai_holder_types[choice]
|
||||
chassis = icon_state
|
||||
|
||||
verbs -= /mob/living/silicon/pai/proc/choose_chassis
|
||||
verbs += /mob/living/proc/hide
|
||||
remove_verb(src, /mob/living/silicon/pai/proc/choose_chassis)
|
||||
add_verb(src, /mob/living/proc/hide)
|
||||
|
||||
/mob/living/silicon/pai/verb/get_onmob_location()
|
||||
set category = "pAI Commands"
|
||||
@@ -412,7 +405,7 @@
|
||||
speak_exclamation = sayverbs[(sayverbs.len>1 ? 2 : sayverbs.len)]
|
||||
speak_query = sayverbs[(sayverbs.len>2 ? 3 : sayverbs.len)]
|
||||
|
||||
verbs -= /mob/living/silicon/pai/proc/choose_verbs
|
||||
remove_verb(src, /mob/living/silicon/pai/proc/choose_verbs)
|
||||
|
||||
/mob/living/silicon/pai/lay_down()
|
||||
set name = "Rest"
|
||||
|
||||
@@ -120,5 +120,6 @@
|
||||
user.drop_from_inventory(src)
|
||||
|
||||
/obj/item/device/robotanalyzer/augment/dropped()
|
||||
. = ..()
|
||||
loc = null
|
||||
qdel(src)
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
|
||||
/mob/living/silicon/robot/combat/Initialize()
|
||||
. = ..()
|
||||
verbs += /mob/living/silicon/robot/proc/choose_icon
|
||||
add_verb(src, /mob/living/silicon/robot/proc/choose_icon)
|
||||
var/datum/robot_component/C = components["surge"]
|
||||
C.installed = TRUE
|
||||
C.wrapped = new C.external_type
|
||||
@@ -119,4 +119,4 @@
|
||||
if(R.cell)
|
||||
R.cell.use(350)
|
||||
return TRUE
|
||||
return FALSE
|
||||
return FALSE
|
||||
|
||||
@@ -254,7 +254,7 @@
|
||||
/mob/living/silicon/robot/drone/Initialize()
|
||||
. = ..()
|
||||
|
||||
verbs |= /mob/living/proc/hide
|
||||
add_verb(src, /mob/living/proc/hide)
|
||||
remove_language(LANGUAGE_ROBOT)
|
||||
add_language(LANGUAGE_ROBOT, FALSE)
|
||||
add_language(LANGUAGE_DRONE, TRUE)
|
||||
@@ -273,7 +273,7 @@
|
||||
var/datum/robot_component/C = components[V]
|
||||
C.max_damage = 10
|
||||
|
||||
verbs -= /mob/living/silicon/robot/verb/Namepick
|
||||
remove_verb(src, /mob/living/silicon/robot/verb/Namepick)
|
||||
density = FALSE
|
||||
|
||||
/mob/living/silicon/robot/drone/init()
|
||||
@@ -567,10 +567,10 @@
|
||||
..()
|
||||
|
||||
/mob/living/silicon/robot/drone/add_robot_verbs()
|
||||
src.verbs |= silicon_subsystems
|
||||
add_verb(src, silicon_subsystems)
|
||||
|
||||
/mob/living/silicon/robot/drone/remove_robot_verbs()
|
||||
src.verbs -= silicon_subsystems
|
||||
remove_verb(src, silicon_subsystems)
|
||||
|
||||
/mob/living/silicon/robot/drone/self_destruct()
|
||||
gib()
|
||||
|
||||
@@ -555,39 +555,30 @@
|
||||
set_light(0)
|
||||
setup_eye_cache() //update eyes
|
||||
|
||||
// this function displays jetpack pressure in the stat panel
|
||||
/mob/living/silicon/robot/proc/show_jetpack_pressure()
|
||||
// if you have a jetpack, show the internal tank pressure
|
||||
if(jetpack)
|
||||
stat(null, "Internal Atmosphere Info: [jetpack.name]")
|
||||
stat(null, "Tank Pressure: [jetpack.air_contents.return_pressure()]")
|
||||
|
||||
// this function displays the cyborgs current cell charge in the stat panel
|
||||
/mob/living/silicon/robot/proc/show_cell_power()
|
||||
if(cell)
|
||||
stat(null, text("Charge Left: [round(cell.percent())]%"))
|
||||
stat(null, text("Cell Rating: [round(cell.maxcharge)]")) // Round just in case we somehow get crazy values
|
||||
stat(null, text("Power Cell Load: [round(used_power_this_tick)]W"))
|
||||
else
|
||||
stat(null, text("No Cell Inserted!"))
|
||||
|
||||
/mob/living/silicon/robot/proc/show_access()
|
||||
if(!module)
|
||||
stat(null, text("Access type: assistant level access"))
|
||||
. = "Access Type: Assistant Level"
|
||||
else
|
||||
stat(null, text("Access type: [module.all_access ? "all access" : "role specific"]"))
|
||||
. = "Access Type: [module.all_access ? "All Access" : "Role Specific"]"
|
||||
|
||||
// update the status screen display
|
||||
/mob/living/silicon/robot/Stat()
|
||||
..()
|
||||
if(statpanel("Status"))
|
||||
show_cell_power()
|
||||
show_access()
|
||||
show_jetpack_pressure()
|
||||
stat(null, text("Lights: [lights_on ? "ON" : "OFF"]"))
|
||||
if(module)
|
||||
for(var/datum/matter_synth/ms in module.synths)
|
||||
stat("[ms.name]: [ms.energy]/[ms.max_energy_multiplied]")
|
||||
/mob/living/silicon/robot/get_status_tab_items()
|
||||
. = ..()
|
||||
if(cell)
|
||||
. += "Charge Left: [round(cell.percent())]%"
|
||||
. += "Cell Rating: [round(cell.maxcharge)]" // Round just in case we somehow get crazy values
|
||||
. += "Power Cell Load: [round(used_power_this_tick)]W"
|
||||
else
|
||||
. += "No Cell Inserted!"
|
||||
|
||||
. += show_access()
|
||||
|
||||
if(jetpack)
|
||||
. += "Internal Atmosphere Info: [jetpack.name]"
|
||||
. += "Tank Pressure: [jetpack.air_contents.return_pressure()]"
|
||||
. += "Lights: [lights_on ? "ON" : "OFF"]"
|
||||
if(module)
|
||||
for(var/datum/matter_synth/ms in module.synths)
|
||||
. += "[ms.name]: [ms.energy]/[ms.max_energy_multiplied]"
|
||||
|
||||
/mob/living/silicon/robot/restrained()
|
||||
return FALSE
|
||||
@@ -1092,7 +1083,7 @@
|
||||
if(R)
|
||||
R.UnlinkSelf()
|
||||
to_chat(R, SPAN_NOTICE("Buffers flushed and reset. Camera system shutdown. All systems operational."))
|
||||
src.verbs -= /mob/living/silicon/robot/proc/ResetSecurityCodes
|
||||
remove_verb(src, /mob/living/silicon/robot/proc/ResetSecurityCodes)
|
||||
|
||||
/mob/living/silicon/robot/proc/SetLockdown(var/state = TRUE)
|
||||
// They stay locked down if their wire is cut.
|
||||
@@ -1121,7 +1112,7 @@
|
||||
return
|
||||
|
||||
if(icon_selected)
|
||||
verbs -= /mob/living/silicon/robot/proc/choose_icon
|
||||
remove_verb(src, /mob/living/silicon/robot/proc/choose_icon)
|
||||
return
|
||||
|
||||
if(length(module_sprites) == 1 || !client)
|
||||
@@ -1151,7 +1142,7 @@
|
||||
setup_icon_cache()
|
||||
playsound(get_turf(src), 'sound/effects/pop.ogg', 10, TRUE)
|
||||
spark(get_turf(src), 5, alldirs)
|
||||
verbs -= /mob/living/silicon/robot/proc/choose_icon
|
||||
remove_verb(src, /mob/living/silicon/robot/proc/choose_icon)
|
||||
to_chat(src, SPAN_NOTICE("Your icon has been set. You now require a module reset to change it."))
|
||||
|
||||
|
||||
@@ -1168,12 +1159,12 @@
|
||||
return sensor_mode == MED_HUD
|
||||
|
||||
/mob/living/silicon/robot/proc/add_robot_verbs()
|
||||
src.verbs |= robot_verbs_default
|
||||
src.verbs |= silicon_subsystems
|
||||
add_verb(src, robot_verbs_default)
|
||||
add_verb(src, silicon_subsystems)
|
||||
|
||||
/mob/living/silicon/robot/proc/remove_robot_verbs()
|
||||
src.verbs -= robot_verbs_default
|
||||
src.verbs -= silicon_subsystems
|
||||
remove_verb(src, robot_verbs_default)
|
||||
remove_verb(src, silicon_subsystems)
|
||||
|
||||
// Uses power from cyborg's cell. Returns 1 on success or 0 on failure.
|
||||
// Properly converts using CELLRATE now! Amount is in Joules.
|
||||
|
||||
@@ -174,10 +174,10 @@ var/global/list/robot_modules = list(
|
||||
added_networks.Cut()
|
||||
|
||||
/obj/item/robot_module/proc/add_subsystems(var/mob/living/silicon/robot/R)
|
||||
R.verbs |= subsystems
|
||||
add_verb(R, subsystems)
|
||||
|
||||
/obj/item/robot_module/proc/remove_subsystems(var/mob/living/silicon/robot/R)
|
||||
R.verbs -= subsystems
|
||||
remove_verb(R, subsystems)
|
||||
|
||||
/obj/item/robot_module/proc/apply_status_flags(var/mob/living/silicon/robot/R)
|
||||
if(!can_be_pushed)
|
||||
|
||||
@@ -156,14 +156,6 @@
|
||||
if(bot.connected_ai == ai)
|
||||
return TRUE
|
||||
return FALSE
|
||||
|
||||
// this function shows the health of the AI in the Status panel
|
||||
/mob/living/silicon/proc/show_system_integrity()
|
||||
if(!stat)
|
||||
stat(null, text("System Integrity: [round((health/maxHealth)*100)]%"))
|
||||
else
|
||||
stat(null, text("Systems Non-functional"))
|
||||
|
||||
// This is a pure virtual function, it should be overwritten by all subclasses
|
||||
/mob/living/silicon/proc/show_malf_ai()
|
||||
return FALSE
|
||||
@@ -176,12 +168,13 @@
|
||||
stat(null, eta_status)
|
||||
|
||||
// This adds the basic clock, shuttle recall timer, and malf_ai info to all silicon lifeforms
|
||||
/mob/living/silicon/Stat()
|
||||
if(statpanel("Status"))
|
||||
show_emergency_shuttle_eta()
|
||||
show_system_integrity()
|
||||
/mob/living/silicon/get_status_tab_items()
|
||||
. = ..()
|
||||
if(!stat)
|
||||
. += "System Integrity: [round((health/maxHealth)*100)]%"
|
||||
else
|
||||
. += "System Integrity: NON-FUNCTIONAL"
|
||||
show_malf_ai()
|
||||
..()
|
||||
|
||||
//can't inject synths
|
||||
/mob/living/silicon/can_inject(mob/user, error_msg)
|
||||
|
||||
@@ -55,8 +55,8 @@
|
||||
|
||||
add_language(LANGUAGE_BORER)
|
||||
add_language(LANGUAGE_BORER_HIVEMIND)
|
||||
verbs += /mob/living/proc/ventcrawl
|
||||
verbs += /mob/living/proc/hide
|
||||
add_verb(src, /mob/living/proc/ventcrawl)
|
||||
add_verb(src, /mob/living/proc/hide)
|
||||
var/number = rand(1000,9999)
|
||||
truename = "[pick("Primary","Secondary","Tertiary","Quaternary")]-[number]"
|
||||
if(request_player && !ckey && !client)
|
||||
@@ -100,17 +100,9 @@
|
||||
if(chem_hud)
|
||||
chem_hud.maptext = SMALL_FONTS(7, chemicals)
|
||||
|
||||
/mob/living/simple_animal/borer/Stat()
|
||||
..()
|
||||
statpanel("Status")
|
||||
|
||||
if(evacuation_controller)
|
||||
var/eta_status = evacuation_controller.get_status_panel_eta()
|
||||
if(eta_status)
|
||||
stat(null, eta_status)
|
||||
|
||||
if(client.statpanel == "Status")
|
||||
stat("Chemicals", chemicals)
|
||||
/mob/living/simple_animal/borer/get_status_tab_items()
|
||||
. = ..()
|
||||
. += "Chemicals: [chemicals]"
|
||||
|
||||
/mob/living/simple_animal/borer/proc/detach()
|
||||
if(!host || !controlling)
|
||||
@@ -129,9 +121,9 @@
|
||||
host.remove_language(LANGUAGE_BORER)
|
||||
host.remove_language(LANGUAGE_BORER_HIVEMIND)
|
||||
|
||||
host.verbs -= /mob/living/carbon/proc/release_control
|
||||
host.verbs -= /mob/living/carbon/proc/punish_host
|
||||
host.verbs -= /mob/living/carbon/proc/spawn_larvae
|
||||
remove_verb(host, /mob/living/carbon/proc/release_control)
|
||||
remove_verb(host, /mob/living/carbon/proc/punish_host)
|
||||
remove_verb(host, /mob/living/carbon/proc/spawn_larvae)
|
||||
|
||||
if(host_brain)
|
||||
to_chat(host_brain, FONT_LARGE(SPAN_NOTICE("You feel your nerves again as your control over your own body is restored.")))
|
||||
@@ -211,4 +203,4 @@
|
||||
var/mob/living/carbon/C = A
|
||||
do_paralyze(C)
|
||||
return
|
||||
return ..()
|
||||
return ..()
|
||||
|
||||
@@ -65,6 +65,6 @@
|
||||
to_chat(host, SPAN_DANGER("With an immense exertion of will, you regain control of your body!"))
|
||||
to_chat(borer.host, SPAN_DANGER("You feel control of the host brain ripped from your grasp, and retract your probosci before the wild neural impulses can damage you."))
|
||||
borer.detach()
|
||||
verbs -= /mob/living/carbon/proc/release_control
|
||||
verbs -= /mob/living/carbon/proc/punish_host
|
||||
verbs -= /mob/living/carbon/proc/spawn_larvae
|
||||
remove_verb(src, /mob/living/carbon/proc/release_control)
|
||||
remove_verb(src, /mob/living/carbon/proc/punish_host)
|
||||
remove_verb(src, /mob/living/carbon/proc/spawn_larvae)
|
||||
|
||||
@@ -175,11 +175,11 @@
|
||||
H.add_language(LANGUAGE_BORER_HIVEMIND)
|
||||
|
||||
if(host.stat == DEAD)
|
||||
H.verbs |= /mob/living/carbon/human/proc/jumpstart
|
||||
add_verb(H, /mob/living/carbon/human/proc/jumpstart)
|
||||
|
||||
H.verbs |= /mob/living/carbon/human/proc/psychic_whisper
|
||||
H.verbs |= /mob/living/carbon/human/proc/tackle
|
||||
H.verbs |= /mob/living/carbon/proc/spawn_larvae
|
||||
add_verb(H, /mob/living/carbon/human/proc/psychic_whisper)
|
||||
add_verb(H, /mob/living/carbon/human/proc/tackle)
|
||||
add_verb(H, /mob/living/carbon/proc/spawn_larvae)
|
||||
|
||||
if(H.client)
|
||||
H.ghostize(FALSE)
|
||||
@@ -355,9 +355,9 @@
|
||||
|
||||
controlling = TRUE
|
||||
|
||||
host.verbs += /mob/living/carbon/proc/release_control
|
||||
host.verbs += /mob/living/carbon/proc/punish_host
|
||||
host.verbs += /mob/living/carbon/proc/spawn_larvae
|
||||
add_verb(host, /mob/living/carbon/proc/release_control)
|
||||
add_verb(host, /mob/living/carbon/proc/punish_host)
|
||||
add_verb(host, /mob/living/carbon/proc/spawn_larvae)
|
||||
|
||||
/mob/living/carbon/human/proc/jumpstart()
|
||||
set category = "Abilities"
|
||||
@@ -368,7 +368,7 @@
|
||||
to_chat(usr, SPAN_WARNING("Your host is already alive."))
|
||||
return
|
||||
|
||||
verbs -= /mob/living/carbon/human/proc/jumpstart
|
||||
remove_verb(src, /mob/living/carbon/human/proc/jumpstart)
|
||||
visible_message(SPAN_WARNING("With a hideous, rattling moan, [src] shudders back to life!"))
|
||||
|
||||
rejuvenate()
|
||||
@@ -388,9 +388,9 @@
|
||||
|
||||
B.detach()
|
||||
|
||||
verbs -= /mob/living/carbon/proc/release_control
|
||||
verbs -= /mob/living/carbon/proc/punish_host
|
||||
verbs -= /mob/living/carbon/proc/spawn_larvae
|
||||
remove_verb(src, /mob/living/carbon/proc/release_control)
|
||||
remove_verb(src, /mob/living/carbon/proc/punish_host)
|
||||
remove_verb(src, /mob/living/carbon/proc/spawn_larvae)
|
||||
|
||||
else
|
||||
to_chat(src, SPAN_DANGER("Something has gone terribly wrong, as your host's brain does not seem to contain you. Make a GitHub report and ahelp to get out."))
|
||||
|
||||
@@ -91,8 +91,8 @@
|
||||
. = ..()
|
||||
|
||||
nutrition = rand(max_nutrition*0.25, max_nutrition*0.75)
|
||||
verbs += /mob/living/proc/ventcrawl
|
||||
verbs += /mob/living/proc/hide
|
||||
add_verb(src, /mob/living/proc/ventcrawl)
|
||||
add_verb(src, /mob/living/proc/hide)
|
||||
|
||||
if(name == initial(name))
|
||||
name = "[name] ([rand(1, 1000)])"
|
||||
|
||||
@@ -57,9 +57,9 @@
|
||||
add_language(LANGUAGE_TCB)
|
||||
default_language = all_languages[LANGUAGE_TCB]
|
||||
internal_id = new /obj/item/card/id(src)
|
||||
verbs |= /mob/living/proc/ventcrawl
|
||||
verbs |= /mob/living/proc/hide
|
||||
verbs |= /mob/living/simple_animal/spiderbot/proc/control_integrated_radio
|
||||
add_verb(src, /mob/living/proc/ventcrawl)
|
||||
add_verb(src, /mob/living/proc/hide)
|
||||
add_verb(src, /mob/living/simple_animal/spiderbot/proc/control_integrated_radio)
|
||||
voice_name = name
|
||||
|
||||
/mob/living/simple_animal/spiderbot/can_name(var/mob/living/M)
|
||||
|
||||
@@ -186,7 +186,7 @@
|
||||
|
||||
/mob/living/simple_animal/hostile/lesser_changeling/Initialize()
|
||||
. = ..()
|
||||
verbs += /mob/living/proc/ventcrawl
|
||||
add_verb(src, /mob/living/proc/ventcrawl)
|
||||
|
||||
/mob/living/simple_animal/hostile/lesser_changeling/mind_initialize()
|
||||
..()
|
||||
|
||||
@@ -57,8 +57,8 @@
|
||||
/mob/living/simple_animal/hostile/morph/Initialize()
|
||||
. = ..()
|
||||
|
||||
verbs += /mob/living/proc/ventcrawl
|
||||
verbs -= /mob/living/simple_animal/verb/change_name
|
||||
add_verb(src, /mob/living/proc/ventcrawl)
|
||||
add_verb(src, /mob/living/simple_animal/verb/change_name)
|
||||
|
||||
var/list/morph_spells = list(/spell/aoe_turf/conjure/node, /spell/aoe_turf/conjure/nest)
|
||||
for(var/spell in morph_spells)
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
desc = "Hop in, the gastrointestinal juices are just fine."
|
||||
icon = 'icons/mob/npc/cavern.dmi'
|
||||
icon_state = null
|
||||
mouse_opacity = 0
|
||||
mouse_opacity = MOUSE_OPACITY_TRANSPARENT
|
||||
throwforce = 0
|
||||
anchored = 1
|
||||
deployed = 1
|
||||
|
||||
@@ -118,9 +118,9 @@
|
||||
walk(src,0)
|
||||
..()
|
||||
|
||||
/mob/living/simple_animal/parrot/Stat()
|
||||
..()
|
||||
stat("Held Item", held_item)
|
||||
/mob/living/simple_animal/parrot/get_status_tab_items()
|
||||
. = ..()
|
||||
. += "Held Item: [held_item]"
|
||||
|
||||
/*
|
||||
* Inventory
|
||||
|
||||
@@ -135,11 +135,9 @@
|
||||
. = ..()
|
||||
set_light(3, 1, l_color = LIGHT_COLOR_CYAN)
|
||||
|
||||
/mob/living/simple_animal/shade/bluespace/Stat()
|
||||
..()
|
||||
|
||||
if(statpanel("Status"))
|
||||
stat(null, "Strength of Echoes: [message_countdown]")
|
||||
/mob/living/simple_animal/shade/bluespace/get_status_tab_items()
|
||||
. = ..()
|
||||
. += "Strength of Echoes: [message_countdown]"
|
||||
|
||||
/mob/living/simple_animal/shade/bluespace/updatehealth()
|
||||
if(!possessive)
|
||||
|
||||
@@ -161,7 +161,7 @@
|
||||
seek_move_delay = (1 / seek_speed) * 10 //number of ds between moves
|
||||
turns_since_scan = rand(min_scan_interval, max_scan_interval)//Randomise this at the start so animals don't sync up
|
||||
health = maxHealth
|
||||
verbs -= /mob/verb/observe
|
||||
remove_verb(src, /mob/verb/observe)
|
||||
health = maxHealth
|
||||
if (mob_size)
|
||||
update_nutrition_stats()
|
||||
@@ -682,12 +682,12 @@
|
||||
stop_automated_movement = 1
|
||||
walk_to(src, movement_target, 0, DS2TICKS(seek_move_delay))
|
||||
|
||||
/mob/living/simple_animal/Stat()
|
||||
..()
|
||||
/mob/living/simple_animal/get_status_tab_items()
|
||||
. = ..()
|
||||
|
||||
if(statpanel("Status") && show_stat_health)
|
||||
stat(null, "Health: [round((health / maxHealth) * 100)]%")
|
||||
stat(null, "Nutrition: [nutrition]/[max_nutrition]")
|
||||
if(show_stat_health)
|
||||
. += "Health: [round((health / maxHealth) * 100)]%"
|
||||
. += "Nutrition: [nutrition]/[max_nutrition]"
|
||||
|
||||
/mob/living/simple_animal/updatehealth()
|
||||
..()
|
||||
|
||||
@@ -55,6 +55,7 @@
|
||||
*/
|
||||
/mob/proc/LateLogin()
|
||||
SHOULD_CALL_PARENT(TRUE)
|
||||
SEND_SIGNAL(src, COMSIG_MOB_LOGIN)
|
||||
|
||||
player_list |= src
|
||||
update_Login_details()
|
||||
@@ -102,4 +103,4 @@
|
||||
// Check code/modules/admin/verbs/antag-ooc.dm for definition
|
||||
client.add_aooc_if_necessary()
|
||||
|
||||
client.chatOutput.start()
|
||||
addtimer(CALLBACK(client, TYPE_PROC_REF(/client, check_panel_loaded)), 30 SECONDS)
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
/mob/Logout()
|
||||
SHOULD_CALL_PARENT(TRUE)
|
||||
SEND_SIGNAL(src, COMSIG_MOB_LOGOUT)
|
||||
|
||||
SSnanoui.user_logout(src) // this is used to clean up (remove) this user's Nano UIs
|
||||
player_list -= src
|
||||
|
||||
+14
-141
@@ -20,6 +20,7 @@
|
||||
qdel(cc)
|
||||
client_colors = null
|
||||
viruses.Cut()
|
||||
item_verbs = null
|
||||
|
||||
//Added this to prevent nonliving mobs from ghostising
|
||||
//The only non 'living' mobs are:
|
||||
@@ -544,78 +545,6 @@
|
||||
M.mind.reset()
|
||||
return
|
||||
|
||||
/client/verb/fix_chat()
|
||||
set name = "Fix Chat"
|
||||
set category = "OOC"
|
||||
if (!chatOutput || !istype(chatOutput))
|
||||
var/action = alert(src, "Invalid Chat Output data found!\nRecreate data?", "Wot?", "Recreate Chat Output data", "Cancel")
|
||||
if (action != "Recreate Chat Output data")
|
||||
return
|
||||
chatOutput = new /datum/chatOutput(src)
|
||||
chatOutput.start()
|
||||
action = alert(src, "Goon chat reloading, wait a bit and tell me if it's fixed", "", "Fixed", "Nope")
|
||||
if (action == "Fixed")
|
||||
log_game("GOONCHAT: [key_name(src)] Had to fix their goonchat by re-creating the chatOutput datum")
|
||||
else
|
||||
chatOutput.load()
|
||||
action = alert(src, "How about now? (give it a moment (it may also try to load twice))", "", "Yes", "No")
|
||||
if (action == "Yes")
|
||||
log_game("GOONCHAT: [key_name(src)] Had to fix their goonchat by re-creating the chatOutput datum and forcing a load()")
|
||||
else
|
||||
action = alert(src, "Welp, I'm all out of ideas. Try closing byond and reconnecting.\nWe could also disable fancy chat and re-enable oldchat", "", "Thanks anyways", "Switch to old chat")
|
||||
if (action == "Switch to old chat")
|
||||
winset(src, "output", "is-visible=true;is-disabled=false")
|
||||
winset(src, "browseroutput", "is-visible=false")
|
||||
log_game("GOONCHAT: [key_name(src)] Failed to fix their goonchat window after recreating the chatOutput and forcing a load()")
|
||||
|
||||
else if (chatOutput.loaded)
|
||||
var/action = alert(src, "ChatOutput seems to be loaded\nDo you want me to force a reload, wiping the chat log or just refresh the chat window because it broke/went away?", "Hmmm", "Force Reload", "Refresh", "Cancel")
|
||||
switch (action)
|
||||
if ("Force Reload")
|
||||
chatOutput.loaded = FALSE
|
||||
chatOutput.start() //this is likely to fail since it asks , but we should try it anyways so we know.
|
||||
action = alert(src, "Goon chat reloading, wait a bit and tell me if it's fixed", "", "Fixed", "Nope")
|
||||
if (action == "Fixed")
|
||||
log_game("GOONCHAT: [key_name(src)] Had to fix their goonchat by forcing a start()")
|
||||
else
|
||||
chatOutput.load()
|
||||
action = alert(src, "How about now? (give it a moment (it may also try to load twice))", "", "Yes", "No")
|
||||
if (action == "Yes")
|
||||
log_game("GOONCHAT: [key_name(src)] Had to fix their goonchat by forcing a load()")
|
||||
else
|
||||
action = alert(src, "Welp, I'm all out of ideas. Try closing byond and reconnecting.", "", "Thanks anyways",)
|
||||
log_game("GOONCHAT: [key_name(src)] Failed to fix their goonchat window forcing a start() and forcing a load()")
|
||||
|
||||
if ("Refresh")
|
||||
chatOutput.showChat()
|
||||
action = alert(src, "Goon chat refreshing, wait a bit and tell me if it's fixed", "", "Fixed", "Nope, force a reload")
|
||||
if (action == "Fixed")
|
||||
log_game("GOONCHAT: [key_name(src)] Had to fix their goonchat by forcing a show()")
|
||||
else
|
||||
chatOutput.loaded = FALSE
|
||||
chatOutput.load()
|
||||
action = alert(src, "How about now? (give it a moment)", "", "Yes", "No")
|
||||
if (action == "Yes")
|
||||
log_game("GOONCHAT: [key_name(src)] Had to fix their goonchat by forcing a load()")
|
||||
else
|
||||
action = alert(src, "Welp, I'm all out of ideas. Try closing byond and reconnecting.", "", "Thanks anyways")
|
||||
log_game("GOONCHAT: [key_name(src)] Failed to fix their goonchat window forcing a show() and forcing a load()")
|
||||
return
|
||||
|
||||
else
|
||||
chatOutput.start()
|
||||
var/action = alert(src, "Manually loading Chat, wait a bit and tell me if it's fixed", "", "Fixed", "Nope")
|
||||
if (action == "Fixed")
|
||||
log_game("GOONCHAT: [key_name(src)] Had to fix their goonchat by manually calling start()")
|
||||
else
|
||||
chatOutput.load()
|
||||
alert(src, "How about now? (give it a moment (it may also try to load twice))", "", "Yes", "No")
|
||||
if (action == "Yes")
|
||||
log_game("GOONCHAT: [key_name(src)] Had to fix their goonchat by manually calling start() and forcing a load()")
|
||||
else
|
||||
action = alert(src, "Welp, I'm all out of ideas. Try closing byond and reconnecting.", "", "Thanks anyways")
|
||||
log_game("GOONCHAT: [key_name(src)] Failed to fix their goonchat window after manually calling start() and forcing a load()")
|
||||
|
||||
/client/verb/changes()
|
||||
set name = "Changelog"
|
||||
set category = "OOC"
|
||||
@@ -733,7 +662,7 @@
|
||||
if(accent && istype(accent))
|
||||
var/datum/browser/accent_win = new(usr, accent.name, capitalize_first_letters(accent.name), 500, 250)
|
||||
var/html = "[accent.description]<br>"
|
||||
var/datum/asset/spritesheet/S = get_asset_datum(/datum/asset/spritesheet/goonchat)
|
||||
var/datum/asset/spritesheet/S = get_asset_datum(/datum/asset/spritesheet/chat)
|
||||
html += "[S.css_tag()]<br>"
|
||||
html += {"[S.icon_tag(accent.tag_icon)]<br>"}
|
||||
html += "([accent.text_tag])<br>"
|
||||
@@ -885,73 +814,6 @@
|
||||
for(var/mob/M in viewers())
|
||||
M.see(message)
|
||||
|
||||
/mob/Stat()
|
||||
..()
|
||||
. = (is_client_active(10 MINUTES))
|
||||
|
||||
if(.)
|
||||
if(statpanel("Status") && SSticker.current_state != GAME_STATE_PREGAME)
|
||||
stat("Game ID", game_id)
|
||||
stat("Map", current_map.full_name)
|
||||
stat("Current Space Sector", SSatlas.current_sector.name)
|
||||
var/current_month = text2num(time2text(world.realtime, "MM"))
|
||||
var/current_day = text2num(time2text(world.realtime, "DD"))
|
||||
stat("Current Date", "[game_year]-[current_month]-[current_day]")
|
||||
stat("Station Time", worldtime2text())
|
||||
stat("Round Duration", get_round_duration_formatted())
|
||||
stat("Last Transfer Vote", SSvote.last_transfer_vote ? time2text(SSvote.last_transfer_vote, "hh:mm") : "Never")
|
||||
|
||||
if(client.holder)
|
||||
if(statpanel("Status"))
|
||||
stat("Location:", "([x], [y], [z]) [loc]")
|
||||
if (LAZYLEN(client.holder.watched_processes))
|
||||
for (var/datum/controller/ctrl in client.holder.watched_processes)
|
||||
if (!ctrl)
|
||||
LAZYREMOVE(client.holder.watched_processes, ctrl)
|
||||
else
|
||||
ctrl.stat_entry()
|
||||
|
||||
if(statpanel("MC"))
|
||||
stat("CPU:", world.cpu)
|
||||
stat("Tick Usage:", world.tick_usage)
|
||||
stat("Instances:", num2text(world.contents.len, 7))
|
||||
if (config.fastboot)
|
||||
stat(null, "FASTBOOT ENABLED")
|
||||
if(Master)
|
||||
Master.stat_entry()
|
||||
else
|
||||
stat("Master Controller:", "ERROR")
|
||||
if(Failsafe)
|
||||
Failsafe.stat_entry()
|
||||
else
|
||||
stat("Failsafe Controller:", "ERROR")
|
||||
if (Master)
|
||||
stat(null, "- Subsystems -")
|
||||
var/amt = 0
|
||||
for(var/datum/controller/subsystem/SS in Master.subsystems)
|
||||
if (!Master.initializing && SS.flags & SS_NO_DISPLAY)
|
||||
continue
|
||||
if(amt >= 70)
|
||||
break
|
||||
amt++
|
||||
SS.stat_entry()
|
||||
|
||||
if(listed_turf && client)
|
||||
if(!TurfAdjacent(listed_turf))
|
||||
listed_turf = null
|
||||
else
|
||||
if(statpanel("Turf"))
|
||||
stat("Turf:", listed_turf)
|
||||
for(var/atom/A in listed_turf)
|
||||
if(!A.mouse_opacity)
|
||||
continue
|
||||
if(A.invisibility > see_invisible)
|
||||
continue
|
||||
if(is_type_in_typecache(A, shouldnt_see))
|
||||
continue
|
||||
stat(A)
|
||||
|
||||
|
||||
// facing verbs
|
||||
/mob/proc/canface()
|
||||
if(!canmove) return 0
|
||||
@@ -1178,7 +1040,7 @@
|
||||
|
||||
/mob/proc/remove_implant(var/obj/item/implant, var/surgical_removal = FALSE)
|
||||
if(!LAZYLEN(get_visible_implants(0))) //Yanking out last object - removing verb.
|
||||
verbs -= /mob/proc/yank_out_object
|
||||
remove_verb(src, /mob/proc/yank_out_object)
|
||||
for(var/obj/item/O in pinned)
|
||||
if(O == implant)
|
||||
pinned -= O
|
||||
@@ -1557,3 +1419,14 @@
|
||||
|
||||
/mob/proc/get_speech_bubble_state_modifier()
|
||||
return "normal"
|
||||
|
||||
/// Adds this list to the output to the stat browser
|
||||
/mob/proc/get_status_tab_items()
|
||||
. = list("") //we want to offset unique stuff from standard stuff
|
||||
SEND_SIGNAL(src, COMSIG_MOB_GET_STATUS_TAB_ITEMS, .)
|
||||
|
||||
/// This proc differs slightly from normal TG usage with actions due to how it is repurposed here for hardsuit modules.
|
||||
/// Take a look at /mob/living/carbon/human/get_actions_for_statpanel().
|
||||
/mob/proc/get_actions_for_statpanel()
|
||||
var/list/data = list()
|
||||
return data
|
||||
|
||||
@@ -230,6 +230,7 @@
|
||||
var/mob/teleop = null
|
||||
|
||||
var/turf/listed_turf = null //the current turf being examined in the stat panel
|
||||
var/list/item_verbs = list()
|
||||
var/list/shouldnt_see = list() //typecache of objects that this mob shouldn't see in the stat panel. this silliness is needed because of AI alt+click and cult blood runes
|
||||
|
||||
var/list/active_genes=list()
|
||||
@@ -250,4 +251,4 @@
|
||||
/// If this mob is or was piloted by a player with typing indicators enabled, an instance of one.
|
||||
var/atom/movable/typing_indicator/typing_indicator
|
||||
/// Whether this mob is currently typing, if piloted by a player.
|
||||
var/is_typing
|
||||
var/is_typing
|
||||
|
||||
@@ -398,6 +398,7 @@
|
||||
devour(affecting, assailant)
|
||||
|
||||
/obj/item/grab/dropped()
|
||||
. = ..()
|
||||
loc = null
|
||||
if(!destroying)
|
||||
qdel(src)
|
||||
|
||||
@@ -1209,9 +1209,8 @@ var/list/intents = list(I_HELP,I_DISARM,I_GRAB,I_HURT)
|
||||
if(hearer && hearer.client && hearer.client.prefs?.toggles_secondary & ACCENT_TAG_TEXT)
|
||||
return {"<a href='byond://?src=\ref[src];accent_tag=[url_encode(a)]'>([a.text_tag])</a>"}
|
||||
else
|
||||
var/final_icon = a.tag_icon
|
||||
var/datum/asset/spritesheet/S = get_asset_datum(/datum/asset/spritesheet/goonchat)
|
||||
return {"<span onclick="window.location.href='byond://?src=\ref[src];accent_tag=[url_encode(a)]'">[S.icon_tag(final_icon)]</span>"}
|
||||
var/datum/asset/spritesheet/S = get_asset_datum(/datum/asset/spritesheet/chat)
|
||||
return S.icon_tag("accent-[a.tag_icon]")
|
||||
|
||||
/mob/assign_player(var/mob/user)
|
||||
ckey = user.ckey
|
||||
|
||||
Reference in New Issue
Block a user