Port tg statpanel (#16463)

* Port tg statpanel

* Add verb descriptions using the title attribute

* Fix a dreamchecker error

* Remove chomp edits

* Add mentor tickets to ticket panel

---------

Co-authored-by: Kashargul <144968721+Kashargul@users.noreply.github.com>
This commit is contained in:
ShadowLarkens
2024-10-16 19:39:06 +02:00
committed by GitHub
co-authored by Kashargul
parent ed5fc193f7
commit c07027136e
211 changed files with 3233 additions and 1170 deletions
+19 -18
View File
@@ -13,6 +13,7 @@ var/list/admin_verbs_default = list(
// /client/proc/cmd_mod_say,
// /client/proc/deadchat //toggles deadchat on/off,
// /client/proc/toggle_ahelp_sound,
/client/proc/debugstatpanel,
)
var/list/admin_verbs_admin = list(
@@ -507,27 +508,27 @@ var/list/admin_verbs_event_manager = list(
/client/proc/add_admin_verbs()
if(holder)
verbs += admin_verbs_default
if(holder.rights & R_BUILDMODE) verbs += /client/proc/togglebuildmodeself
if(holder.rights & R_ADMIN) verbs += admin_verbs_admin
if(holder.rights & R_BAN) verbs += admin_verbs_ban
if(holder.rights & R_FUN) verbs += admin_verbs_fun
if(holder.rights & R_SERVER) verbs += admin_verbs_server
add_verb(src, admin_verbs_default)
if(holder.rights & R_BUILDMODE) add_verb(src, /client/proc/togglebuildmodeself)
if(holder.rights & R_ADMIN) add_verb(src, admin_verbs_admin)
if(holder.rights & R_BAN) add_verb(src, admin_verbs_ban)
if(holder.rights & R_FUN) add_verb(src, admin_verbs_fun)
if(holder.rights & R_SERVER) add_verb(src, admin_verbs_server)
if(holder.rights & R_DEBUG)
verbs += admin_verbs_debug
add_verb(src, admin_verbs_debug)
if(config.debugparanoid && !(holder.rights & R_ADMIN))
verbs.Remove(admin_verbs_paranoid_debug) //Right now it's just callproc but we can easily add others later on.
if(holder.rights & R_POSSESS) verbs += admin_verbs_possess
if(holder.rights & R_PERMISSIONS) verbs += admin_verbs_permissions
if(holder.rights & R_STEALTH) verbs += /client/proc/stealth
if(holder.rights & R_REJUVINATE) verbs += admin_verbs_rejuv
if(holder.rights & R_SOUNDS) verbs += admin_verbs_sounds
if(holder.rights & R_SPAWN) verbs += admin_verbs_spawn
if(holder.rights & R_MOD) verbs += admin_verbs_mod
if(holder.rights & R_EVENT) verbs += admin_verbs_event_manager
remove_verb(src, admin_verbs_paranoid_debug) //Right now it's just callproc but we can easily add others later on.
if(holder.rights & R_POSSESS) add_verb(src, admin_verbs_possess)
if(holder.rights & R_PERMISSIONS) add_verb(src, admin_verbs_permissions)
if(holder.rights & R_STEALTH) add_verb(src, /client/proc/stealth)
if(holder.rights & R_REJUVINATE) add_verb(src, admin_verbs_rejuv)
if(holder.rights & R_SOUNDS) add_verb(src, admin_verbs_sounds)
if(holder.rights & R_SPAWN) add_verb(src, admin_verbs_spawn)
if(holder.rights & R_MOD) add_verb(src, admin_verbs_mod)
if(holder.rights & R_EVENT) add_verb(src, admin_verbs_event_manager)
/client/proc/remove_admin_verbs()
verbs.Remove(
remove_verb(src, list(
admin_verbs_default,
/client/proc/togglebuildmodeself,
admin_verbs_admin,
@@ -542,4 +543,4 @@ var/list/admin_verbs_event_manager = list(
admin_verbs_sounds,
admin_verbs_spawn,
debug_verbs
)
))
+19 -18
View File
@@ -18,6 +18,7 @@ var/list/admin_verbs_default = list(
// /client/proc/cmd_mod_say,
// /client/proc/deadchat //toggles deadchat on/off,
// /client/proc/toggle_ahelp_sound,
/client/proc/debugstatpanel,
)
var/list/admin_verbs_admin = list(
@@ -568,27 +569,27 @@ var/list/admin_verbs_event_manager = list(
/client/proc/add_admin_verbs()
if(holder)
verbs += admin_verbs_default
if(holder.rights & R_BUILDMODE) verbs += /client/proc/togglebuildmodeself
if(holder.rights & R_ADMIN) verbs += admin_verbs_admin
if(holder.rights & R_BAN) verbs += admin_verbs_ban
if(holder.rights & R_FUN) verbs += admin_verbs_fun
if(holder.rights & R_SERVER) verbs += admin_verbs_server
add_verb(src, admin_verbs_default)
if(holder.rights & R_BUILDMODE) add_verb(src, /client/proc/togglebuildmodeself)
if(holder.rights & R_ADMIN) add_verb(src, admin_verbs_admin)
if(holder.rights & R_BAN) add_verb(src, admin_verbs_ban)
if(holder.rights & R_FUN) add_verb(src, admin_verbs_fun)
if(holder.rights & R_SERVER) add_verb(src, admin_verbs_server)
if(holder.rights & R_DEBUG)
verbs += admin_verbs_debug
add_verb(src, admin_verbs_debug)
if(config.debugparanoid && !(holder.rights & R_ADMIN))
verbs.Remove(admin_verbs_paranoid_debug) //Right now it's just callproc but we can easily add others later on.
if(holder.rights & R_POSSESS) verbs += admin_verbs_possess
if(holder.rights & R_PERMISSIONS) verbs += admin_verbs_permissions
if(holder.rights & R_STEALTH) verbs += /client/proc/stealth
if(holder.rights & R_REJUVINATE) verbs += admin_verbs_rejuv
if(holder.rights & R_SOUNDS) verbs += admin_verbs_sounds
if(holder.rights & R_SPAWN) verbs += admin_verbs_spawn
if(holder.rights & R_MOD) verbs += admin_verbs_mod
if(holder.rights & R_EVENT) verbs += admin_verbs_event_manager
remove_verb(src, admin_verbs_paranoid_debug) //Right now it's just callproc but we can easily add others later on.
if(holder.rights & R_POSSESS) add_verb(src, admin_verbs_possess)
if(holder.rights & R_PERMISSIONS) add_verb(src, admin_verbs_permissions)
if(holder.rights & R_STEALTH) add_verb(src, /client/proc/stealth)
if(holder.rights & R_REJUVINATE) add_verb(src, admin_verbs_rejuv)
if(holder.rights & R_SOUNDS) add_verb(src, admin_verbs_sounds)
if(holder.rights & R_SPAWN) add_verb(src, admin_verbs_spawn)
if(holder.rights & R_MOD) add_verb(src, admin_verbs_mod)
if(holder.rights & R_EVENT) add_verb(src, admin_verbs_event_manager)
/client/proc/remove_admin_verbs()
verbs.Remove(
remove_verb(src, list(
admin_verbs_default,
/client/proc/togglebuildmodeself,
admin_verbs_admin,
@@ -603,4 +604,4 @@ var/list/admin_verbs_event_manager = list(
admin_verbs_sounds,
admin_verbs_spawn,
debug_verbs
)
))
+22 -15
View File
@@ -2,8 +2,8 @@
set name = "Adminverbs - Hide Most"
set category = "Admin"
verbs.Remove(/client/proc/hide_most_verbs, admin_verbs_hideable)
verbs += /client/proc/show_verbs
remove_verb(src, list(/client/proc/hide_most_verbs, admin_verbs_hideable))
add_verb(src, /client/proc/show_verbs)
to_chat(src, span_filter_system(span_interface("Most of your adminverbs have been hidden.")))
feedback_add_details("admin_verb","HMV") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
@@ -14,7 +14,7 @@
set category = "Admin"
remove_admin_verbs()
verbs += /client/proc/show_verbs
add_verb(src, /client/proc/show_verbs)
to_chat(src, span_filter_system(span_interface("Almost all of your adminverbs have been hidden.")))
feedback_add_details("admin_verb","TAVVH") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
@@ -24,7 +24,7 @@
set name = "Adminverbs - Show"
set category = "Admin"
verbs -= /client/proc/show_verbs
remove_verb(src, /client/proc/show_verbs)
add_admin_verbs()
to_chat(src, span_filter_adminlog(span_interface("All of your adminverbs are now visible.")))
@@ -32,7 +32,7 @@
/client/proc/admin_ghost()
set category = "Admin"
set category = "Admin.Game"
set name = "Aghost"
if(!holder) return
@@ -74,6 +74,7 @@
else
ghost = body.ghostize(1)
ghost.admin_ghosted = 1
init_verbs()
if(body)
body.teleop = ghost
if(!body.key)
@@ -82,7 +83,7 @@
/client/proc/invisimin()
set name = "Invisimin"
set category = "Admin"
set category = "Admin.Game"
set desc = "Toggles ghost-like invisibility (Don't abuse this)"
if(holder && mob)
if(mob.invisibility == INVISIBILITY_OBSERVER)
@@ -144,7 +145,7 @@
/client/proc/game_panel()
set name = "Game Panel"
set category = "Admin"
set category = "Admin.Game"
if(holder)
holder.Game()
feedback_add_details("admin_verb","GP") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
@@ -255,7 +256,7 @@
#undef AUTOBANTIME
/client/proc/drop_bomb() // Some admin dickery that can probably be done better -- TLE
set category = "Special Verbs"
set category = "Special Verbs.Fun"
set name = "Drop Bomb"
set desc = "Cause an explosion of varying strength at your location."
@@ -338,7 +339,7 @@
log_and_message_admins("has given [key_name(L)] the modifer [new_modifier_type], with a duration of [duration ? "[duration / 600] minutes" : "forever"].")
/client/proc/make_sound(var/obj/O in world) // -- TLE
set category = "Special Verbs"
set category = "Special Verbs.Events"
set name = "Make Sound"
set desc = "Display a message to everyone who can hear the target"
if(O)
@@ -353,13 +354,13 @@
/client/proc/togglebuildmodeself()
set name = "Toggle Build Mode Self"
set category = "Special Verbs"
set category = "Special Verbs.Events"
if(src.mob)
togglebuildmode(src.mob)
feedback_add_details("admin_verb","TBMS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/object_talk(var/msg as text) // -- TLE
set category = "Special Verbs"
set category = "Special Verbs.Events"
set name = "oSay"
set desc = "Display a message to everyone who can hear the target"
if(mob.control_object)
@@ -388,7 +389,7 @@
log_admin("[src] re-admined themself.")
message_admins("[src] re-admined themself.", 1)
to_chat(src, span_filter_system(span_interface("You now have the keys to control the planet, or at least a small space station")))
verbs -= /client/proc/readmin_self
remove_verb(src, /client/proc/readmin_self)
/client/proc/deadmin_self()
set name = "De-admin self"
@@ -400,7 +401,7 @@
message_admins("[src] deadmined themself.", 1)
deadmin()
to_chat(src, span_filter_system(span_interface("You are now a normal player.")))
verbs |= /client/proc/readmin_self
add_verb(src, /client/proc/readmin_self)
feedback_add_details("admin_verb","DAS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
/client/proc/toggle_log_hrefs()
@@ -413,7 +414,7 @@
/client/proc/check_ai_laws()
set name = "Check AI Laws"
set category = "Admin"
set category = "Admin.Game"
if(holder)
src.holder.output_ai_laws()
@@ -449,7 +450,7 @@
/client/proc/change_security_level()
set name = "Set security level"
set desc = "Sets the station security level"
set category = "Admin"
set category = "Admin.Events"
if(!check_rights(R_ADMIN|R_EVENT)) return
var/sec_level = tgui_input_list(usr, "It's currently code [get_security_level()].", "Select Security Level", (list("green","yellow","violet","orange","blue","red","delta")-get_security_level()))
@@ -559,3 +560,9 @@
feedback_add_details("admin_verb","GS") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
log_admin("[key_name(usr)] gave [key_name(T)] the spell [S].")
message_admins(span_blue("[key_name_admin(usr)] gave [key_name(T)] the spell [S]."), 1)
/client/proc/debugstatpanel()
set name = "Debug Stat Panel"
set category = "Debug"
src.stat_panel.send_message("create_debug")
+2
View File
@@ -37,12 +37,14 @@ var/list/admin_datums = list()
owner = C
owner.holder = src
owner.add_admin_verbs() //TODO
owner.init_verbs() //re-initialize the verb list
GLOB.admins |= C
/datum/admins/proc/disassociate()
if(owner)
GLOB.admins -= owner
owner.remove_admin_verbs()
owner.init_verbs() //re-initialize the verb list
owner.deadmin_holder = owner.holder
owner.holder = null
+19 -19
View File
@@ -494,7 +494,7 @@
var/mob/living/Tar = target
if(!istype(Tar))
return
Tar.verbs |= /mob/living/proc/ventcrawl
add_verb(Tar, /mob/living/proc/ventcrawl)
if("darksight")
var/mob/living/carbon/human/Tar = target
@@ -509,26 +509,26 @@
var/mob/living/carbon/human/Tar = target
if(!istype(Tar))
return
Tar.verbs |= /mob/living/carbon/human/proc/enter_cocoon
add_verb(Tar, /mob/living/carbon/human/proc/enter_cocoon)
if("transformation")
var/mob/living/carbon/human/Tar = target
if(!istype(Tar))
return
Tar.verbs |= /mob/living/carbon/human/proc/shapeshifter_select_hair
Tar.verbs |= /mob/living/carbon/human/proc/shapeshifter_select_hair_colors
Tar.verbs |= /mob/living/carbon/human/proc/shapeshifter_select_gender
Tar.verbs |= /mob/living/carbon/human/proc/shapeshifter_select_wings
Tar.verbs |= /mob/living/carbon/human/proc/shapeshifter_select_tail
Tar.verbs |= /mob/living/carbon/human/proc/shapeshifter_select_ears
Tar.verbs |= /mob/living/carbon/human/proc/lleill_select_shape //designed for non-shapeshifter mobs
Tar.verbs |= /mob/living/carbon/human/proc/lleill_select_colour
add_verb(Tar, /mob/living/carbon/human/proc/shapeshifter_select_hair)
add_verb(Tar, /mob/living/carbon/human/proc/shapeshifter_select_hair_colors)
add_verb(Tar, /mob/living/carbon/human/proc/shapeshifter_select_gender)
add_verb(Tar, /mob/living/carbon/human/proc/shapeshifter_select_wings)
add_verb(Tar, /mob/living/carbon/human/proc/shapeshifter_select_tail)
add_verb(Tar, /mob/living/carbon/human/proc/shapeshifter_select_ears)
add_verb(Tar, /mob/living/carbon/human/proc/lleill_select_shape) //designed for non-shapeshifter mobs
add_verb(Tar, /mob/living/carbon/human/proc/lleill_select_colour)
if("set_size")
var/mob/living/Tar = target
if(!istype(Tar))
return
Tar.verbs |= /mob/living/proc/set_size
add_verb(Tar, /mob/living/proc/set_size)
if("lleill_energy")
var/mob/living/carbon/human/Tar = target
@@ -543,44 +543,44 @@
var/mob/living/carbon/human/Tar = target
if(!istype(Tar))
return
Tar.verbs |= /mob/living/carbon/human/proc/lleill_invisibility
add_verb(Tar, /mob/living/carbon/human/proc/lleill_invisibility)
if("beast_form")
var/mob/living/carbon/human/Tar = target
if(!istype(Tar))
return
Tar.verbs |= /mob/living/carbon/human/proc/lleill_beast_form
add_verb(Tar, /mob/living/carbon/human/proc/lleill_beast_form)
if("lleill_transmute")
var/mob/living/carbon/human/Tar = target
if(!istype(Tar))
return
Tar.verbs |= /mob/living/carbon/human/proc/lleill_transmute
add_verb(Tar, /mob/living/carbon/human/proc/lleill_transmute)
if("lleill_alchemy")
var/mob/living/carbon/human/Tar = target
if(!istype(Tar))
return
Tar.verbs |= /mob/living/carbon/human/proc/lleill_alchemy
add_verb(Tar, /mob/living/carbon/human/proc/lleill_alchemy)
if("lleill_drain")
var/mob/living/carbon/human/Tar = target
if(!istype(Tar))
return
Tar.verbs |= /mob/living/carbon/human/proc/lleill_contact
add_verb(Tar, /mob/living/carbon/human/proc/lleill_contact)
if("brutal_pred")
var/mob/living/Tar = target
if(!istype(Tar))
return
Tar.verbs |= /mob/living/proc/shred_limb
add_verb(Tar, /mob/living/proc/shred_limb)
if("trash_eater")
var/mob/living/carbon/human/Tar = target
if(!istype(Tar))
return
Tar.verbs |= /mob/living/proc/eat_trash
Tar.verbs |= /mob/living/proc/toggle_trash_catching
add_verb(Tar, /mob/living/proc/eat_trash)
add_verb(Tar, /mob/living/proc/toggle_trash_catching)
////////INVENTORY//////////////
+5 -3
View File
@@ -384,11 +384,13 @@ GLOBAL_DATUM_INIT(sdql2_vv_statobj, /obj/effect/statclick/SDQL2_VV_all, new(null
delete_click = new(null, "INITIALIZING", src)
if(!action_click)
action_click = new(null, "INITIALIZNG", src)
stat("[id] ", delete_click.update("DELETE QUERY | STATE : [text_state()] | ALL/ELIG/FIN \
var/list/L = list()
L[++L.len] = list("[id] ", "[delete_click.update("DELETE QUERY | STATE : [text_state()] | ALL/ELIG/FIN \
[islist(obj_count_all)? length(obj_count_all) : (isnull(obj_count_all)? "0" : obj_count_all)]/\
[islist(obj_count_eligible)? length(obj_count_eligible) : (isnull(obj_count_eligible)? "0" : obj_count_eligible)]/\
[islist(obj_count_finished)? length(obj_count_finished) : (isnull(obj_count_finished)? "0" : obj_count_finished)] - [get_query_text()]"))
stat(" ", action_click.update("[SDQL2_IS_RUNNING? "HALT" : "RUN"]"))
[islist(obj_count_finished)? length(obj_count_finished) : (isnull(obj_count_finished)? "0" : obj_count_finished)] - [get_query_text()]")]", REF(delete_click))
L[++L.len] = list(" ", "[action_click.update("[SDQL2_IS_RUNNING? "HALT" : "RUN"]")]", REF(action_click))
return L
/datum/SDQL2_query/proc/delete_click()
admin_del(usr)
+16 -8
View File
@@ -72,18 +72,23 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new)
//Tickets statpanel
/datum/admin_help_tickets/proc/stat_entry()
SHOULD_CALL_PARENT(TRUE)
SHOULD_NOT_SLEEP(TRUE)
var/list/L = list()
var/num_disconnected = 0
stat("== Admin Tickets ==")
stat("Active Tickets:", astatclick.update("[active_tickets.len]"))
L[++L.len] = list("== Admin Tickets ==", "", null, null)
L[++L.len] = list("Active Tickets:", "[astatclick.update("[active_tickets.len]")]", null, REF(astatclick))
astatclick.update("[active_tickets.len]")
for(var/datum/admin_help/AH as anything in active_tickets)
if(AH.initiator)
stat("#[AH.id]. [AH.initiator_key_name]:", AH.statclick.update())
L[++L.len] = list("#[AH.id]. [AH.initiator_key_name]:", "[AH.statclick.update()]", REF(AH))
else
++num_disconnected
if(num_disconnected)
stat("Disconnected:", astatclick.update("[num_disconnected]"))
stat("Closed Tickets:", cstatclick.update("[closed_tickets.len]"))
stat("Resolved Tickets:", rstatclick.update("[resolved_tickets.len]"))
L[++L.len] = list("Disconnected:", "[astatclick.update("[num_disconnected]")]", null, REF(astatclick))
L[++L.len] = list("Closed Tickets:", "[cstatclick.update("[closed_tickets.len]")]", null, REF(cstatclick))
L[++L.len] = list("Resolved Tickets:", "[rstatclick.update("[resolved_tickets.len]")]", null, REF(rstatclick))
return L
//Reassociate still open ticket if one exists
/datum/admin_help_tickets/proc/ClientLogin(client/C)
@@ -119,6 +124,9 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new)
/obj/effect/statclick/ticket_list/Click()
GLOB.ahelp_tickets.BrowseTickets(current_state)
//called by admin topic
/obj/effect/statclick/ticket_list/proc/Action()
Click()
//
//TICKET DATUM
//
@@ -606,9 +614,9 @@ GLOBAL_DATUM_INIT(ahelp_tickets, /datum/admin_help_tickets, new)
return
//remove out adminhelp verb temporarily to prevent spamming of admins.
src.verbs -= /client/verb/adminhelp
remove_verb(src, /client/verb/adminhelp)
spawn(1200)
src.verbs += /client/verb/adminhelp // 2 minute cool-down for adminhelps
add_verb(src, /client/verb/adminhelp) // 2 minute cool-down for adminhelps
feedback_add_details("admin_verb","Adminhelp") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
if(current_ticket)
+2 -2
View File
@@ -33,7 +33,7 @@
return
//if they requested spice, then remove spice verb temporarily to prevent spamming
usr.verbs -= /client/verb/adminspice
remove_verb(usr, /client/verb/adminspice)
spawn(10 MINUTES)
if(usr) // In case we left in the 10 minute cooldown
usr.verbs += /client/verb/adminspice // 10 minute cool-down for spice request
add_verb(usr, /client/verb/adminspice) // 10 minute cool-down for spice request
+1 -1
View File
@@ -32,7 +32,7 @@
to_chat(src, span_red("Error: giveruntimelog(): Client not found."))
return
target.verbs |= /client/proc/getruntimelog
add_verb(target, /client/proc/getruntimelog)
to_chat(target, span_red("You have been granted access to runtime logs. Please use them responsibly or risk being banned."))
return
+2 -2
View File
@@ -172,7 +172,7 @@ var/list/debug_verbs = list (
if(!check_rights(R_DEBUG)) return
verbs += debug_verbs
add_verb(src, debug_verbs)
feedback_add_details("admin_verb","mDV") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
@@ -182,7 +182,7 @@ var/list/debug_verbs = list (
if(!check_rights(R_DEBUG)) return
verbs -= debug_verbs
remove_verb(src, debug_verbs)
feedback_add_details("admin_verb","hDV") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
+3 -3
View File
@@ -47,6 +47,6 @@
set desc = "Give this guy possess/release verbs"
set category = "Debug"
set name = "Give Possessing Verbs"
M.verbs += /proc/possess
M.verbs += /proc/release
feedback_add_details("admin_verb","GPV") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
add_verb(M, /proc/possess)
add_verb(M, /proc/release)
feedback_add_details("admin_verb","GPV") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
+2 -2
View File
@@ -324,7 +324,7 @@ Ccomp's first proc.
if(config.antag_hud_allowed)
for(var/mob/observer/dead/g in get_ghosts())
if(!g.client.holder) //Remove the verb from non-admin ghosts
g.verbs -= /mob/observer/dead/verb/toggle_antagHUD
remove_verb(g, /mob/observer/dead/verb/toggle_antagHUD)
if(g.antagHUD)
g.antagHUD = 0 // Disable it on those that have it enabled
g.has_enabled_antagHUD = 2 // We'll allow them to respawn
@@ -335,7 +335,7 @@ Ccomp's first proc.
else
for(var/mob/observer/dead/g in get_ghosts())
if(!g.client.holder) // Add the verb back for all non-admin ghosts
g.verbs += /mob/observer/dead/verb/toggle_antagHUD
add_verb(g, /mob/observer/dead/verb/toggle_antagHUD)
to_chat(g, span_blue("<B>The Administrator has enabled AntagHUD </B>")) // Notify all observers they can now use AntagHUD
config.antag_hud_allowed = 1
action = "enabled"
+2 -2
View File
@@ -449,7 +449,7 @@
if(!verb || verb == "Cancel")
return
else
H.verbs += verb
add_verb(H, verb)
else if(href_list["remverb"])
if(!check_rights(R_DEBUG)) return
@@ -466,7 +466,7 @@
if(!verb)
return
else
H.verbs -= verb
remove_verb(H, verb)
else if(href_list["addorgan"])
if(!check_rights(R_SPAWN)) return
+8 -7
View File
@@ -70,13 +70,14 @@ var/list/overminds = list()
overminds -= src
return ..()
/mob/observer/blob/Stat()
..()
if(statpanel("Status"))
if(blob_core)
stat(null, "Core Health: [blob_core.integrity]")
stat(null, "Power Stored: [blob_points]/[max_blob_points]")
stat(null, "Total Blobs: [GLOB.all_blobs.len]")
/mob/observer/blob/get_status_tab_items()
. = ..()
. += ""
. += "BLOB STATUS"
if(blob_core)
. += "Core Health: [blob_core.integrity]"
. += "Power Stored: [blob_points]/[max_blob_points]"
. += "Total Blobs: [GLOB.all_blobs.len]"
/mob/observer/blob/Move(var/atom/NewLoc, Dir = 0)
if(placed)
+19
View File
@@ -36,6 +36,8 @@
////////////////
//ADMIN THINGS//
////////////////
/// hides the byond verb panel as we use our own custom version
show_verb_panel = FALSE
///Contains admin info. Null if client is not an admin.
var/datum/admins/holder = null
var/datum/admins/deadmin_holder = null
@@ -113,6 +115,23 @@
// Runechat messages
var/list/seen_messages
/// our current tab
var/stat_tab
/// list of all tabs
var/list/panel_tabs = list()
/// list of tabs containing spells and abilities
var/list/spell_tabs = list()
/// list of misc tabs from mob
var/list/misc_tabs = list()
///A lazy list of atoms we've examined in the last RECENT_EXAMINE_MAX_WINDOW (default 2) seconds, so that we will call [/atom/proc/examine_more] instead of [/atom/proc/examine] on them when examining
var/list/recent_examines
///Our object window datum. It stores info about and handles behavior for the object tab
var/datum/object_window_info/obj_window
var/list/misc_cache = list()
var/atom/examine_icon //Holder for examine icon, useful for statpanel
//Hide top bars
var/fullscreen = FALSE
+54
View File
@@ -113,6 +113,8 @@
log_and_message_admins("[ckey] failed to register their Discord ID. Their Discord snowflake ID is: [their_id]. Is the database connected?")
return
//VOREStation Add End
if(href_list["reload_statbrowser"])
stat_panel.reinitialize()
//Logs all hrefs
if(config && config.log_hrefs && href_logfile)
@@ -181,6 +183,10 @@
GLOB.clients += src
GLOB.directory[ckey] = src
// Instantiate stat panel
stat_panel = new(src, "statbrowser")
stat_panel.subscribe(src, .proc/on_stat_panel_message)
// Instantiate tgui panel
tgui_say = new(src, "tgui_say")
initialize_commandbar_spy()
@@ -218,6 +224,14 @@
if(prefs)
prefs.selecting_slots = FALSE
// Initialize stat panel
stat_panel.initialize(
inline_html = file2text('html/statbrowser.html'),
inline_js = file2text('html/statbrowser.js'),
inline_css = file2text('html/statbrowser.css'),
)
addtimer(CALLBACK(src, PROC_REF(check_panel_loaded)), 30 SECONDS)
// Initialize tgui panel
tgui_say.initialize()
tgui_panel.initialize()
@@ -652,3 +666,43 @@
to_chat(src, span_warning("No recorded playtime found!"))
return
to_chat(src, span_info("Your department hours:" + department_hours))
/// compiles a full list of verbs and sends it to the browser
/client/proc/init_verbs()
if(IsAdminAdvancedProcCall())
return
var/list/verblist = list()
panel_tabs.Cut()
for(var/thing in (verbs + mob?.verbs))
var/procpath/verb_to_init = thing
if(!verb_to_init)
continue
if(verb_to_init.hidden)
continue
if(!istext(verb_to_init.category))
continue
panel_tabs |= verb_to_init.category
verblist[++verblist.len] = list(verb_to_init.category, verb_to_init.name, verb_to_init.desc)
src.stat_panel.send_message("init_verbs", list(panel_tabs = panel_tabs, verblist = verblist))
/client/proc/check_panel_loaded()
if(stat_panel && stat_panel.is_ready())
return
to_chat(src, "<span class='danger'>Statpanel failed to load, click <a href='?src=[REF(src)];reload_statbrowser=1'>here</a> to reload the panel. If this does not work, reconnecting will reassign a new panel.</span>")
/**
* Handles incoming messages from the stat-panel TGUI.
*/
/client/proc/on_stat_panel_message(type, payload)
switch(type)
if("Update-Verbs")
init_verbs()
if("Remove-Tabs")
panel_tabs -= payload["tab"]
if("Send-Tabs")
panel_tabs |= payload["tab"]
if("Reset-Tabs")
panel_tabs = list()
if("Set-Tab")
stat_tab = payload["tab"]
SSstatpanels.immediate_send_stat_data(src)
+6
View File
@@ -275,3 +275,9 @@
INVOKE_ASYNC(src, VERB_REF(fit_viewport))
else //Delayed to avoid wingets from Login calls.
addtimer(CALLBACK(src, VERB_REF(fit_viewport), 1 SECONDS))
/client/verb/fix_stat_panel()
set name = "Fix Stat Panel"
set hidden = TRUE
init_verbs()
@@ -234,28 +234,6 @@
/obj/item/rig_module/proc/accepts_item(var/obj/item/input_device)
return 0
/mob/living/carbon/human/Stat()
. = ..()
if(. && istype(back,/obj/item/rig))
var/obj/item/rig/R = back
SetupStat(R)
else if(. && istype(belt,/obj/item/rig))
var/obj/item/rig/R = belt
SetupStat(R)
/mob/proc/SetupStat(var/obj/item/rig/R)
if(R && !R.canremove && R.installed_modules.len && statpanel("Hardsuit Modules"))
var/cell_status = R.cell ? "[R.cell.charge]/[R.cell.maxcharge]" : "ERROR"
stat("Suit charge", cell_status)
for(var/obj/item/rig_module/module in R.installed_modules)
{
for(var/stat_rig_module/SRM in module.stat_modules)
if(SRM.CanUse())
stat(SRM.module.interface_name,SRM)
}
/stat_rig_module
parent_type = /atom/movable
var/module_mode = ""
@@ -46,13 +46,6 @@
else
integrated_ai.get_rig_stats = 0
/mob/living/Stat()
. = ..()
if(. && get_rig_stats)
var/obj/item/rig/rig = get_rig()
if(rig)
SetupStat(rig)
/obj/item/rig_module/ai_container/proc/update_verb_holder()
if(!verb_holder)
verb_holder = new(src)
+4 -40
View File
@@ -5,7 +5,6 @@
This means that this file can be unchecked, along with the other examine files, and can be removed entirely with no effort.
*/
#define EXAMINE_PANEL_PADDING " "
/atom/
var/description_info = null //Helpful blue text.
@@ -34,7 +33,7 @@
// Quickly adds the boilerplate code to add an image and padding for the image.
/proc/desc_panel_image(var/icon_state)
return "[bicon(description_icons[icon_state])][EXAMINE_PANEL_PADDING]"
return "[icon2html(description_icons[icon_state], usr)]&emsp;"
/mob/living/get_description_fluff()
if(flavor_text) //Get flavor text for the green text.
@@ -50,50 +49,16 @@
/client/var/description_holders[0]
/client/proc/update_description_holders(atom/A, update_antag_info=0)
examine_icon = null
description_holders["info"] = A.get_description_info()
description_holders["fluff"] = A.get_description_fluff()
description_holders["antag"] = (update_antag_info)? A.get_description_antag() : ""
description_holders["interactions"] = A.get_description_interaction()
description_holders["name"] = "[A.name]"
description_holders["icon"] = "[icon2html(A.examine_icon(),src)]"
description_holders["icon"] = A
description_holders["desc"] = A.desc
/mob/Stat()
. = ..()
if(client && statpanel("Examine"))
var/description_holders = client.description_holders
stat(null,"[description_holders["icon"]] <font size='5'>[description_holders["name"]]</font>") //The name, written in big letters.
stat(null,"[description_holders["desc"]]") //the default examine text.
var/color_i = "#084B8A"
var/color_f = "#298A08"
var/color_a = "#8A0808"
/*
The infowindow colours are set in code\modules\vchat\js\vchat.js file
Unfortunately, I cannot think of a way to do this elegantly where there's this central define that we can easily track.
As of 2023/08/05 13:10, the lightmode colour for vchat tabBackgroundColor is "none", this is also defined in interface\skin.dmf .
The darkmode colour for vchat tabBackgroundColor is "#272727".
Since it's possible that one day we'll have option to modify the user's preferred tabBackgroundColor
I will assume the lightmode colour will be left untouched - therefore, we are checking for none.
*/
if(!(winget(src, "infowindow", "background-color") == "none"))
color_i = "#709ec9d8"
color_f = "#76d357"
color_a = "#c94d4d"
if(description_holders["info"])
stat(null,"<font color=[color_i]><b>[description_holders["info"]]</b></font>") //Blue, informative text.
if(description_holders["interactions"])
for(var/line in description_holders["interactions"])
stat(null, "<font color=[color_i]><b>[line]</b></font>")
if(description_holders["fluff"])
stat(null,"<font color=[color_f]><b>[description_holders["fluff"]]</b></font>") //Yellow, fluff-related text.
if(description_holders["antag"])
stat(null,"<font color=[color_a]><b>[description_holders["antag"]]</b></font>") //Red, malicious antag-related text
//override examinate verb to update description holders when things are examined
//mob verbs are faster than object verbs. See http://www.byond.com/forum/?post=1326139&page=2#comment8198716 for why this isn't atom/verb/examine()
/mob/verb/examinate(atom/A as mob|obj|turf in _validate_atom(A))
@@ -122,6 +87,7 @@
if(client)
var/is_antag = ((mind && mind.special_role) || isobserver(src)) //ghosts don't have minds
client.update_description_holders(A, is_antag)
SSstatpanels.set_examine_tab(client)
/mob/verb/mob_examine()
@@ -198,5 +164,3 @@
results = list("You were unable to examine that. Tell a developer!")
to_chat(src, jointext(results, "<br>"))
update_examine_panel(B)
#undef EXAMINE_PANEL_PADDING
+2 -2
View File
@@ -36,11 +36,11 @@ var/list/mentor_verbs_default = list(
/client/proc/add_mentor_verbs()
if(mentorholder)
verbs += mentor_verbs_default
add_verb(src, mentor_verbs_default)
/client/proc/remove_mentor_verbs()
if(mentorholder)
verbs -= mentor_verbs_default
remove_verb(src, mentor_verbs_default)
/client/proc/make_mentor()
set category = "Special Verbs"
+14 -9
View File
@@ -61,17 +61,22 @@ GLOBAL_DATUM_INIT(mhelp_tickets, /datum/mentor_help_tickets, new)
//Tickets statpanel
/datum/mentor_help_tickets/proc/stat_entry()
SHOULD_CALL_PARENT(TRUE)
SHOULD_NOT_SLEEP(TRUE)
var/list/L = list()
var/num_disconnected = 0
stat("== Mentor Tickets ==")
stat("Active Tickets:", astatclick.update("[active_tickets.len]"))
L[++L.len] = list("== Mentor Tickets ==", "", null, null)
L[++L.len] = list("Active Tickets:", "[astatclick.update("[active_tickets.len]")]", null, REF(astatclick))
astatclick.update("[active_tickets.len]")
for(var/datum/mentor_help/MH as anything in active_tickets)
if(MH.initiator)
stat("#[MH.id]. [MH.initiator_ckey]:", MH.statclick.update())
L[++L.len] = list("#[MH.id]. [MH.initiator_ckey]:", "[MH.statclick.update()]", REF(MH))
else
++num_disconnected
if(num_disconnected)
stat("Disconnected:", astatclick.update("[num_disconnected]"))
stat("Resolved Tickets:", rstatclick.update("[resolved_tickets.len]"))
L[++L.len] = list("Disconnected:", "[astatclick.update("[num_disconnected]")]", null, REF(astatclick))
L[++L.len] = list("Resolved Tickets:", "[rstatclick.update("[resolved_tickets.len]")]", null, REF(rstatclick))
return L
//Reassociate still open ticket if one exists
/datum/mentor_help_tickets/proc/ClientLogin(client/C)
@@ -439,9 +444,9 @@ GLOBAL_DATUM_INIT(mhelp_tickets, /datum/mentor_help_tickets, new)
"Send to discord?", list("Admin-help!", "Still mentorhelp!", "Cancel"))
if(choice == "Admin-help!")
usr.client.adminhelp(msg)
src.verbs -= /client/verb/mentorhelp
remove_verb(src, /client/verb/mentorhelp)
spawn(1200)
src.verbs += /client/verb/mentorhelp // 2 minute cd to prevent abusing this to spam admins.
add_verb(src, /client/verb/mentorhelp) // 2 minute cd to prevent abusing this to spam admins.
return
else if(!choice || choice == "Cancel")
return
@@ -449,9 +454,9 @@ GLOBAL_DATUM_INIT(mhelp_tickets, /datum/mentor_help_tickets, new)
//remove out adminhelp verb temporarily to prevent spamming of admins.
src.verbs -= /client/verb/mentorhelp
remove_verb(src, /client/verb/mentorhelp)
spawn(600)
src.verbs += /client/verb/mentorhelp // 1 minute cool-down for mentorhelps
add_verb(src, /client/verb/mentorhelp) // 1 minute cool-down for mentorhelps
feedback_add_details("admin_verb","Mentorhelp") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
if(current_mentorhelp)
+10 -10
View File
@@ -208,7 +208,7 @@ Works together with spawning an observer, noted above.
if(ghost.client)
ghost.client.time_died_as_mouse = ghost.timeofdeath
if(ghost.client && !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/observer/dead/verb/toggle_antagHUD // Poor guys, don't know what they are missing!
remove_verb(ghost, /mob/observer/dead/verb/toggle_antagHUD) // Poor guys, don't know what they are missing!
return ghost
/*
@@ -249,13 +249,13 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
/mob/observer/dead/can_use_hands() return 0
/mob/observer/dead/is_active() return 0
/mob/observer/dead/Stat()
..()
if(statpanel("Status"))
if(emergency_shuttle)
var/eta_status = emergency_shuttle.get_status_panel_eta()
if(eta_status)
stat(null, eta_status)
/mob/observer/dead/get_status_tab_items()
. = ..()
if(emergency_shuttle)
var/eta_status = emergency_shuttle.get_status_panel_eta()
if(eta_status)
. += ""
. += "[eta_status]"
/mob/observer/dead/verb/reenter_corpse()
set category = "Ghost"
@@ -798,8 +798,8 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
/mob/observer/dead/proc/manifest(mob/user)
is_manifest = TRUE
verbs |= /mob/observer/dead/proc/toggle_visibility
verbs |= /mob/observer/dead/proc/ghost_whisper
add_verb(src, /mob/observer/dead/proc/toggle_visibility)
add_verb(src, /mob/observer/dead/proc/ghost_whisper)
to_chat(src, span_filter_notice("[span_purple("As you are now in the realm of the living, you can whisper to the living with the <b>Spectral Whisper</b> verb, inside the IC tab.")]"))
if(plane != PLANE_WORLD)
user.visible_message( \
+2 -2
View File
@@ -130,7 +130,7 @@
/datum/language/proc/broadcast(var/mob/living/speaker,var/message,var/speaker_mask)
log_say("(HIVE) [message]", speaker)
speaker.verbs |= /mob/proc/adjust_hive_range
add_verb(speaker, /mob/proc/adjust_hive_range)
if(!speaker_mask) speaker_mask = speaker.real_name
message = "[get_spoken_verb(message)], \"[format_message(message, get_spoken_verb(message))]\""
@@ -205,7 +205,7 @@
languages.Add(new_language)
//VOREStation Addition Start
if(new_language.flags & HIVEMIND)
verbs |= /mob/proc/adjust_hive_range
add_verb(src, /mob/proc/adjust_hive_range)
//VOREStation Addition End
return 1
+2 -2
View File
@@ -562,13 +562,13 @@
/mob/living/bot/Login()
no_vore = FALSE // ROBOT VORE
init_vore() // ROBOT VORE
verbs |= /mob/proc/insidePanel
add_verb(src, /mob/proc/insidePanel)
return ..()
/mob/living/bot/Logout()
release_vore_contents()
verbs -= /mob/proc/insidePanel
remove_verb(src, /mob/proc/insidePanel)
no_vore = TRUE
devourable = FALSE
feeding = FALSE
@@ -27,8 +27,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)
instance_num = rand(1, 1000)
name = "[initial(name)] ([instance_num])"
@@ -66,4 +66,3 @@
else if(ending == "?")
verb = "hisses curiously"
return verb
@@ -54,7 +54,7 @@ var/list/_nymph_default_emotes = list(
species = GLOB.all_species[SPECIES_DIONA]
add_language(LANGUAGE_ROOTGLOBAL)
add_language(LANGUAGE_GALCOM)
verbs += /mob/living/carbon/alien/diona/proc/merge
add_verb(src, /mob/living/carbon/alien/diona/proc/merge)
/mob/living/carbon/alien/diona/put_in_hands(var/obj/item/W) // No hands.
W.loc = get_turf(src)
@@ -9,7 +9,7 @@
return
if(istype(src.loc,/mob/living/carbon))
src.verbs -= /mob/living/carbon/alien/diona/proc/merge
remove_verb(src, /mob/living/carbon/alien/diona/proc/merge)
return
var/list/choices = list()
@@ -35,8 +35,8 @@
to_chat(H, "You feel your being twine with that of \the [src] as it merges with your biomass.")
to_chat(src, "You feel your being twine with that of \the [H] as you merge with its biomass.")
loc = H
verbs += /mob/living/carbon/alien/diona/proc/split
verbs -= /mob/living/carbon/alien/diona/proc/merge
add_verb(src, /mob/living/carbon/alien/diona/proc/split)
remove_verb(src, /mob/living/carbon/alien/diona/proc/merge)
return 1
/mob/living/carbon/alien/diona/proc/split()
@@ -49,7 +49,7 @@
return
if(!(istype(src.loc,/mob/living/carbon)))
src.verbs -= /mob/living/carbon/alien/diona/proc/split
remove_verb(src, /mob/living/carbon/alien/diona/proc/split)
return
to_chat(src.loc, "You feel a pang of loss as [src] splits away from your biomass.")
@@ -58,8 +58,8 @@
var/mob/living/M = src.loc
src.loc = get_turf(src)
src.verbs -= /mob/living/carbon/alien/diona/proc/split
src.verbs += /mob/living/carbon/alien/diona/proc/merge
remove_verb(src, /mob/living/carbon/alien/diona/proc/split)
add_verb(src, /mob/living/carbon/alien/diona/proc/merge)
if(istype(M))
for(var/atom/A in M.contents)
@@ -1,7 +1,8 @@
/mob/living/carbon/alien/diona/Stat() //Specified where progression is at, doesn't work right for some things in carbon/alien
/mob/living/carbon/alien/diona/get_status_tab_items() //Specified where progression is at, doesn't work right for some things in carbon/alien
. = ..()
if(. && statpanel("Status"))
stat("Growth", "[round(amount_grown)]/[max_grown]")
if(.)
. += ""
. += "Diona Growth: [round(amount_grown)]/[max_grown]"
/mob/living/carbon/alien/diona/confirm_evolution()
@@ -1,7 +1,8 @@
/mob/living/carbon/alien/larva/Stat() //Specified where progression stats come from, because for some reason it doesn't work right in carbon/alien
/mob/living/carbon/alien/larva/get_status_tab_items() //Specified where progression stats come from, because for some reason it doesn't work right in carbon/alien
. = ..()
if(. && statpanel("Status"))
stat("Growth", "[round(amount_grown)]/[max_grown]")
if(.)
. += ""
. += "Larva Growth: [round(amount_grown)]/[max_grown]"
/mob/living/carbon/alien/larva/confirm_evolution()
@@ -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)
@@ -12,9 +12,9 @@
B.detatch()
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("ERROR NO BORER OR BRAINMOB DETECTED IN THIS MOB, THIS IS A BUG !"))
@@ -77,7 +77,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))
+70 -37
View File
@@ -66,7 +66,6 @@
dna.real_name = real_name
sync_organ_dna()
//verbs |= /mob/living/proc/toggle_selfsurgery //VOREStation Removal
AddComponent(/datum/component/personal_crafting)
/mob/living/carbon/human/Destroy()
@@ -84,42 +83,76 @@
QDEL_NULL(vessel)
return ..()
/mob/living/carbon/human/Stat()
..()
if(statpanel("Status"))
stat("Intent:", "[a_intent]")
stat("Move Mode:", "[m_intent]")
if(emergency_shuttle)
var/eta_status = emergency_shuttle.get_status_panel_eta()
if(eta_status)
stat(null, eta_status)
/mob/living/carbon/human/get_status_tab_items()
. = ..()
. += ""
. += "Intent: [a_intent]"
. += "Move Mode: [m_intent]"
if(emergency_shuttle)
var/eta_status = emergency_shuttle.get_status_panel_eta()
if(eta_status)
. += "[eta_status]"
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)
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/xenos/plasmavessel/P = internal_organs_by_name[O_PLASMA] //Xenomorphs. Mech.
if(P)
stat(null, "Phoron Stored: [P.stored_plasma]/[P.max_plasma]")
var/obj/item/organ/internal/xenos/plasmavessel/P = internal_organs_by_name[O_PLASMA] //Xenomorphs. Mech.
if(P)
. += "Phoron Stored: [P.stored_plasma]/[P.max_plasma]"
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(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]"
. += "Suit charge: [cell_status]"
if(mind)
if(mind.changeling)
. += "Chemical Storage: [mind.changeling.chem_charges]"
. += "Genetic Damage Time: [mind.changeling.geneticdamage]"
. += "Re-Adaptations: [mind.changeling.readapts]/[mind.changeling.max_readapts]"
if(mind)
if(mind.changeling)
stat("Chemical Storage", mind.changeling.chem_charges)
stat("Genetic Damage Time", mind.changeling.geneticdamage)
stat("Re-Adaptations", "[mind.changeling.readapts]/[mind.changeling.max_readapts]")
if(species)
species.Stat(src)
species.get_status_tab_items(src)
/mob/proc/RigPanel(var/obj/item/rig/R)
if(R && !R.canremove && R.installed_modules.len)
var/list/L = list()
var/cell_status = R.cell ? "[R.cell.charge]/[R.cell.maxcharge]" : "ERROR"
L[++L.len] = list("Suit charge: [cell_status]", null, null, null, null)
for(var/obj/item/rig_module/module in R.installed_modules)
{
for(var/stat_rig_module/SRM in module.stat_modules)
if(SRM.CanUse())
L[++L.len] = list(SRM.module.interface_name,null,null,SRM.name,REF(SRM))
}
misc_tabs["Hardsuit Modules"] = L
/mob/living/update_misc_tabs()
..()
if(get_rig_stats)
var/obj/item/rig/rig = get_rig()
if(rig)
RigPanel(rig)
/mob/living/carbon/human/update_misc_tabs()
..()
if(species)
species.update_misc_tabs(src)
if(istype(back,/obj/item/rig))
var/obj/item/rig/R = back
RigPanel(R)
else if(istype(belt,/obj/item/rig))
var/obj/item/rig/R = belt
RigPanel(R)
/mob/living/carbon/human/ex_act(severity)
if(!blinded)
@@ -847,7 +880,7 @@
return
if(!(mMorph in mutations))
src.verbs -= /mob/living/carbon/human/proc/morph
remove_verb(src, /mob/living/carbon/human/proc/morph)
return
var/new_facial = input(usr, "Please select facial hair color.", "Character Generation",rgb(r_facial,g_facial,b_facial)) as color
@@ -922,7 +955,7 @@
return
if(!(mRemotetalk in src.mutations))
src.verbs -= /mob/living/carbon/human/proc/remotesay
remove_verb(src, /mob/living/carbon/human/proc/remotesay)
return
var/list/creatures = list()
for(var/mob/living/carbon/h in mob_list)
@@ -953,7 +986,7 @@
if(!(mRemote in src.mutations))
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)
@@ -1088,7 +1121,7 @@
blood_DNA[M.dna.unique_enzymes] = M.dna.b_type
hand_blood_color = blood_color
update_bloodied()
verbs += /mob/living/carbon/human/proc/bloody_doodle
add_verb(src, /mob/living/carbon/human/proc/bloody_doodle)
return 1 //we applied blood to the item
/mob/living/carbon/human/proc/get_full_print()
@@ -1317,7 +1350,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."))
@@ -1682,7 +1715,7 @@
/mob/living/carbon/human/examine_icon()
var/icon/I = get_cached_examine_icon(src)
if(!I)
I = getFlatIcon(src, defdir = SOUTH, no_anim = TRUE)
I = getFlatIcon(src, defdir = SOUTH, no_anim = TRUE, force_south = TRUE)
set_cached_examine_icon(src, I, 50 SECONDS)
return I
@@ -73,13 +73,13 @@
// Called in robotize(), replaced() and removed() to update our modular limb verbs.
/mob/living/carbon/human/proc/refresh_modular_limb_verbs()
if(length(get_modular_limbs(return_first_found = TRUE, validate_proc = /obj/item/organ/external/proc/can_attach_modular_limb_here)))
verbs |= /mob/living/carbon/human/proc/attach_limb_verb
add_verb(src, /mob/living/carbon/human/proc/attach_limb_verb)
else
verbs -= /mob/living/carbon/human/proc/attach_limb_verb
remove_verb(src, /mob/living/carbon/human/proc/attach_limb_verb)
if(length(get_modular_limbs(return_first_found = TRUE, validate_proc = /obj/item/organ/external/proc/can_remove_modular_limb)))
verbs |= /mob/living/carbon/human/proc/detach_limb_verb
add_verb(src, /mob/living/carbon/human/proc/detach_limb_verb)
else
verbs -= /mob/living/carbon/human/proc/detach_limb_verb
remove_verb(src, /mob/living/carbon/human/proc/detach_limb_verb)
// Proc helper for attachment verb.
/mob/living/carbon/human/proc/check_can_attach_modular_limb(var/obj/item/organ/external/E)
@@ -191,8 +191,8 @@
qdel(Org)
// Purge the diona verbs.
verbs -= /mob/living/carbon/human/proc/diona_split_nymph
verbs -= /mob/living/carbon/human/proc/regenerate
remove_verb(src, /mob/living/carbon/human/proc/diona_split_nymph)
remove_verb(src, /mob/living/carbon/human/proc/regenerate)
for(var/obj/item/organ/external/E in organs) // Just fall apart.
E.droplimb(TRUE)
@@ -114,7 +114,7 @@
H.ability_master = new /obj/screen/movable/ability_master/lleill(H)
for(var/datum/power/lleill/P in lleill_ability_datums)
if(!(P.verbpath in H.verbs))
H.verbs += P.verbpath
add_verb(H, P.verbpath)
H.ability_master.add_lleill_ability(
object_given = H,
verb_given = P.verbpath,
@@ -206,7 +206,7 @@
H.ability_master = new /obj/screen/movable/ability_master/lleill(H)
for(var/datum/power/lleill/P in lleill_ability_datums)
if(!(P.verbpath in H.verbs))
H.verbs += P.verbpath
add_verb(H, P.verbpath)
H.ability_master.add_lleill_ability(
object_given = H,
verb_given = P.verbpath,
@@ -239,4 +239,3 @@
/datum/species/lleill/add_inherent_verbs(var/mob/living/carbon/human/H)
..()
add_lleill_abilities(H)
@@ -476,8 +476,8 @@
new_mob.vore_organs = list()
new_mob.name = M.name
new_mob.real_name = M.real_name
new_mob.verbs |= /mob/living/proc/revert_beast_form
new_mob.verbs |= /mob/living/proc/set_size
add_verb(new_mob, /mob/living/proc/revert_beast_form)
add_verb(new_mob, /mob/living/proc/set_size)
for(var/lang in M.languages)
new_mob.languages |= lang
M.copy_vore_prefs_to_mob(new_mob)
@@ -654,8 +654,8 @@
new_mob.vore_organs = list()
new_mob.name = M.name
new_mob.real_name = M.real_name
new_mob.verbs |= /mob/living/proc/revert_beast_form
new_mob.verbs |= /mob/living/proc/set_size
add_verb(new_mob, /mob/living/proc/revert_beast_form)
add_verb(new_mob, /mob/living/proc/set_size)
new_mob.hasthermals = 0
new_mob.health = M.health
new_mob.maxHealth = M.health
@@ -61,7 +61,7 @@
/datum/reagent/glamour_scaling/affect_blood(var/mob/living/carbon/target, var/removed)
if(!(/mob/living/proc/set_size in target.verbs))
to_chat(target, span_warning("You feel as though you could change size at any moment."))
target.verbs |= /mob/living/proc/set_size
add_verb(target, /mob/living/proc/set_size)
target.bloodstr.clear_reagents() //instantly clears reagents afterwards
target.ingested.clear_reagents()
target.touching.clear_reagents()
@@ -144,7 +144,7 @@
H.ability_master = new /obj/screen/movable/ability_master/shadekin(H)
for(var/datum/power/shadekin/P in shadekin_ability_datums)
if(!(P.verbpath in H.verbs))
H.verbs += P.verbpath
add_verb(H, P.verbpath)
H.ability_master.add_shadekin_ability(
object_given = H,
verb_given = P.verbpath,
@@ -341,4 +341,4 @@
new_copy.energy_dark = energy_dark
return new_copy
return new_copy
@@ -29,7 +29,7 @@
/mob/living/carbon/human/proc/phase_shift()
set name = "Phase Shift (100)"
set desc = "Shift yourself out of alignment with realspace to travel quickly to different areas."
set category = "Shadekin"
set category = "Abilities.Shadekin"
var/ability_cost = 100
@@ -181,7 +181,7 @@
/mob/living/carbon/human/proc/regenerate_other()
set name = "Regenerate Other (50)"
set desc = "Spend energy to heal physical wounds in another creature."
set category = "Shadekin"
set category = "Abilities.Shadekin"
var/ability_cost = 50
@@ -250,7 +250,7 @@
/mob/living/carbon/human/proc/create_shade()
set name = "Create Shade (25)"
set desc = "Create a field of darkness that follows you."
set category = "Shadekin"
set category = "Abilities.Shadekin"
var/ability_cost = 25
@@ -458,13 +458,13 @@
/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)
return
/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)
return
/datum/species/proc/handle_post_spawn(var/mob/living/carbon/human/H) //Handles anything not already covered by basic species assignment.
@@ -556,8 +556,8 @@
return FALSE
// Allow species to display interesting information in the human stat panels
/datum/species/proc/Stat(var/mob/living/carbon/human/H)
return
/datum/species/proc/get_status_tab_items(var/mob/living/carbon/human/H)
return ""
/datum/species/proc/handle_water_damage(var/mob/living/carbon/human/H, var/amount = 0)
amount *= 1 - H.get_water_protection()
@@ -584,3 +584,6 @@
/datum/species/proc/post_spawn_special(mob/living/carbon/human/H)
return
/datum/species/proc/update_misc_tabs(var/mob/living/carbon/human/H)
return
@@ -393,8 +393,8 @@
var/selection = tgui_input_list(src, "Choose your character's fruit type. Choosing nothing will result in a default of apples.", "Fruit Type", acceptable_fruit_types)
if(selection)
fruit_gland.fruit_type = selection
verbs |= /mob/living/carbon/human/proc/alraune_fruit_pick
verbs -= /mob/living/carbon/human/proc/alraune_fruit_select
add_verb(src, /mob/living/carbon/human/proc/alraune_fruit_pick)
remove_verb(src, /mob/living/carbon/human/proc/alraune_fruit_select)
fruit_gland.organ_owner = src
fruit_gland.emote_descriptor = list("fruit right off of [fruit_gland.organ_owner]!", "a fruit from [fruit_gland.organ_owner]!")
@@ -42,15 +42,14 @@
/decl/emote/visible/floorspin
)
/mob/living/simple_mob/slime/promethean/Initialize(mapload, null)
//verbs -= /mob/living/proc/ventcrawl
verbs += /mob/living/simple_mob/slime/promethean/proc/prommie_blobform
verbs += /mob/living/proc/set_size
verbs += /mob/living/proc/hide
verbs += /mob/living/simple_mob/proc/animal_nom
verbs += /mob/living/proc/shred_limb
verbs += /mob/living/simple_mob/slime/promethean/proc/toggle_expand
verbs += /mob/living/simple_mob/slime/promethean/proc/prommie_select_colour
verbs += /mob/living/simple_mob/slime/promethean/proc/toggle_shine
add_verb(src, /mob/living/simple_mob/slime/promethean/proc/prommie_blobform)
add_verb(src, /mob/living/proc/set_size)
add_verb(src, /mob/living/proc/hide)
add_verb(src, /mob/living/simple_mob/proc/animal_nom)
add_verb(src, /mob/living/proc/shred_limb)
add_verb(src, /mob/living/simple_mob/slime/promethean/proc/toggle_expand)
add_verb(src, /mob/living/simple_mob/slime/promethean/proc/prommie_select_colour)
add_verb(src, /mob/living/simple_mob/slime/promethean/proc/toggle_shine)
update_mood()
if(rad_glow)
rad_glow = CLAMP(rad_glow,0,250)
@@ -81,11 +80,6 @@
QDEL_NULL(stored_blob)
return ..()
/mob/living/simple_mob/slime/promethean/Stat()
..()
if(humanform)
humanform.species.Stat(humanform)
/mob/living/simple_mob/slime/promethean/handle_special() // Should disable default slime healing, we'll use nutrition based heals instead.
if(rad_glow)
rad_glow = CLAMP(rad_glow,0,250)
@@ -409,8 +403,8 @@
new_hat.forceMove(src)
blob.update_icon()
blob.verbs -= /mob/living/proc/ventcrawl // Absolutely not.
blob.verbs -= /mob/living/simple_mob/proc/set_name // We already have a name.
remove_verb(blob, /mob/living/proc/ventcrawl) // Absolutely not.
remove_verb(blob, /mob/living/simple_mob/proc/set_name) // We already have a name.
temporary_form = blob
//Mail them to nullspace
moveToNullspace()
@@ -63,8 +63,8 @@
humanform = H
updatehealth()
refactory = locate() in humanform.internal_organs
verbs |= /mob/living/proc/ventcrawl
verbs |= /mob/living/proc/hide
add_verb(src, /mob/living/proc/ventcrawl)
add_verb(src, /mob/living/proc/hide)
else
update_icon()
@@ -99,10 +99,10 @@
/mob/living/simple_mob/protean_blob/isSynthetic()
return TRUE // yup
/mob/living/simple_mob/protean_blob/Stat()
..()
/mob/living/simple_mob/protean_blob/update_misc_tabs()
. = ..()
if(humanform)
humanform.species.Stat(humanform)
humanform.species.update_misc_tabs(src)
/mob/living/simple_mob/protean_blob/update_icon()
if(humanform)
@@ -323,10 +323,6 @@ var/global/list/disallowed_protean_accessories = list(
to_chat(src,span_warning("You can't change forms while inside something."))
return
var/panel_was_up = FALSE
if(client?.statpanel == "Protean")
panel_was_up = TRUE
handle_grasp() //It's possible to blob out before some key parts of the life loop. This results in things getting dropped at null. TODO: Fix the code so this can be done better.
remove_micros(src, src) //Living things don't fare well in roblobs.
if(buckled)
@@ -405,9 +401,6 @@ var/global/list/disallowed_protean_accessories = list(
//We can still speak our languages!
blob.languages = languages.Copy()
//Flip them to the protean panel
if(panel_was_up)
client?.statpanel = "Protean"
//Return our blob in case someone wants it
return blob
@@ -427,10 +420,6 @@ var/global/list/disallowed_protean_accessories = list(
to_chat(blob,span_warning("You can't change forms while inside something."))
return
var/panel_was_up = FALSE
if(client?.statpanel == "Protean")
panel_was_up = TRUE
if(buckled)
buckled.unbuckle_mob()
if(LAZYLEN(buckled_mobs))
@@ -483,10 +472,6 @@ var/global/list/disallowed_protean_accessories = list(
//Get rid of friend blob
qdel(blob)
//Flip them to the protean panel
if(panel_was_up)
client?.statpanel = "Protean"
//Return ourselves in case someone wants it
return src
@@ -212,22 +212,32 @@
/datum/species/protean/get_additional_examine_text(var/mob/living/carbon/human/H)
return ..() //Hmm, what could be done here?
/datum/species/protean/Stat(var/mob/living/carbon/human/H)
/datum/species/protean/update_misc_tabs(var/mob/living/carbon/human/H)
..()
if(statpanel("Protean"))
var/obj/item/organ/internal/nano/refactory/refactory = H.nano_get_refactory()
if(refactory && !(refactory.status & ORGAN_DEAD))
stat(null, "- -- --- Refactory Metal Storage --- -- -")
var/max = refactory.max_storage
for(var/material in refactory.materials)
var/amount = refactory.get_stored_material(material)
stat("[capitalize(material)]", "[amount]/[max]")
else
stat(null, "- -- --- REFACTORY ERROR! --- -- -")
var/list/L = list()
var/obj/item/organ/internal/nano/refactory/refactory = H.nano_get_refactory()
if(refactory && !(refactory.status & ORGAN_DEAD))
L[++L.len] = list("- -- --- Refactory Metal Storage --- -- -", null, null, null, null)
var/max = refactory.max_storage
for(var/material in refactory.materials)
var/amount = refactory.get_stored_material(material)
L[++L.len] = list("[capitalize(material)]: [amount]/[max]", null, null, null, null)
else
L[++L.len] = list("- -- --- REFACTORY ERROR! --- -- -", null, null, null, null)
stat(null, "- -- --- Abilities (Shift+LMB Examines) --- -- -")
for(var/obj/effect/protean_ability/A as anything in abilities)
stat("[A.ability_name]",A.atom_button_text())
L[++L.len] = list("- -- --- Abilities (Shift+LMB Examines) --- -- -", null, null, null, null)
for(var/obj/effect/protean_ability/A as anything in abilities)
var/client/C = H.client
var/img
if(C && istype(C)) //sanity checks
if(A.ability_name in C.misc_cache)
img = C.misc_cache[A.ability_name]
else
img = icon2html(A,C,sourceonly=TRUE)
C.misc_cache[A.ability_name] = img
L[++L.len] = list("[A.ability_name]", A.ability_name, img, A.atom_button_text(), REF(A))
H.misc_tabs["Protean"] = L
// Various modifiers
/datum/modifier/protean
@@ -633,8 +633,8 @@
qdel(Org)
// Purge the diona verbs.
H.verbs -= /mob/living/carbon/human/proc/diona_split_nymph
H.verbs -= /mob/living/carbon/human/proc/regenerate
remove_verb(H, /mob/living/carbon/human/proc/diona_split_nymph)
remove_verb(H, /mob/living/carbon/human/proc/regenerate)
return
@@ -57,7 +57,7 @@
// Was dead, still dead.
else
to_chat(src, span_notice("Consciousness begins to stir as your new body awakens, ready to hatch."))
verbs |= /mob/living/carbon/human/proc/hatch
add_verb(src, /mob/living/carbon/human/proc/hatch)
revive_ready = REVIVING_DONE
src << sound('sound/effects/mob_effects/xenochimera/hatch_notification.ogg',0,0,0,30)
clear_alert("regen")
@@ -79,7 +79,7 @@
to_chat(src, span_notice("Consciousness begins to stir as your new body awakens, ready to hatch.."))
else
to_chat(src, span_warning("Consciousness begins to stir as your battered body struggles to recover from its ordeal.."))
verbs |= /mob/living/carbon/human/proc/hatch
add_verb(src, /mob/living/carbon/human/proc/hatch)
revive_ready = REVIVING_DONE
src << sound('sound/effects/mob_effects/xenochimera/hatch_notification.ogg',0,0,0,30)
clear_alert("regen")
@@ -110,7 +110,7 @@
if(revive_ready != REVIVING_DONE)
//Hwhat?
verbs -= /mob/living/carbon/human/proc/hatch
remove_verb(src, /mob/living/carbon/human/proc/hatch)
return
var/confirm = tgui_alert(usr, "Are you sure you want to hatch right now? This will be very obvious to anyone in view.", "Confirm Regeneration", list("Yes", "No"))
@@ -138,7 +138,7 @@
clear_alert("hatch")
/mob/living/carbon/human/proc/chimera_hatch()
verbs -= /mob/living/carbon/human/proc/hatch
remove_verb(src, /mob/living/carbon/human/proc/hatch)
to_chat(src, span_notice("Your new body awakens, bursting free from your old skin."))
//Modify and record values (half nutrition and braindamage)
var/old_nutrition = nutrition
@@ -108,7 +108,7 @@
/datum/trait/neutral/bloodsucker/apply(var/datum/species/S,var/mob/living/carbon/human/H)
..()
H.verbs |= /mob/living/carbon/human/proc/bloodsuck
add_verb(H, /mob/living/carbon/human/proc/bloodsuck)
/datum/trait/neutral/bloodsucker_freeform
name = "Bloodsucker"
@@ -129,7 +129,7 @@
/datum/trait/neutral/bloodsucker_freeform/apply(var/datum/species/S,var/mob/living/carbon/human/H)
..()
H.verbs |= /mob/living/carbon/human/proc/bloodsuck
add_verb(H, /mob/living/carbon/human/proc/bloodsuck)
/datum/trait/neutral/succubus_drain
name = "Succubus Drain"
@@ -139,9 +139,9 @@
/datum/trait/neutral/succubus_drain/apply(var/datum/species/S,var/mob/living/carbon/human/H)
..()
H.verbs |= /mob/living/carbon/human/proc/succubus_drain
H.verbs |= /mob/living/carbon/human/proc/succubus_drain_finalize
H.verbs |= /mob/living/carbon/human/proc/succubus_drain_lethal
add_verb(H, /mob/living/carbon/human/proc/succubus_drain)
add_verb(H, /mob/living/carbon/human/proc/succubus_drain_finalize)
add_verb(H, /mob/living/carbon/human/proc/succubus_drain_lethal)
/datum/trait/neutral/venom_bite
name = "Venomous Injection"
@@ -169,7 +169,7 @@
/datum/trait/neutral/venom_bite/apply(var/datum/species/S,var/mob/living/carbon/human/H)
..()
H.verbs |= /mob/living/proc/injection
add_verb(H, /mob/living/proc/injection)
H.trait_injection_reagents += "microcillin" // get small
H.trait_injection_reagents += "macrocillin" // get BIG
H.trait_injection_reagents += "normalcillin" // normal
@@ -201,7 +201,7 @@
/datum/trait/neutral/long_vore/apply(var/datum/species/S,var/mob/living/carbon/human/H)
..()
H.verbs |= /mob/living/proc/long_vore
add_verb(H, /mob/living/proc/long_vore)
/datum/trait/neutral/feeder
name = "Feeder"
@@ -211,7 +211,7 @@
/datum/trait/neutral/feeder/apply(var/datum/species/S,var/mob/living/carbon/human/H)
..()
H.verbs |= /mob/living/carbon/human/proc/slime_feed
add_verb(H, /mob/living/carbon/human/proc/slime_feed)
/datum/trait/neutral/stuffing_feeder
name = "Food Stuffer"
@@ -222,7 +222,7 @@
/datum/trait/neutral/stuffing_feeder/apply(var/datum/species/S,var/mob/living/carbon/human/H)
..()
H.verbs |= /mob/living/proc/toggle_stuffing_mode
add_verb(H, /mob/living/proc/toggle_stuffing_mode)
/datum/trait/neutral/hard_vore
name = "Brutal Predation"
@@ -232,7 +232,7 @@
/datum/trait/neutral/hard_vore/apply(var/datum/species/S,var/mob/living/carbon/human/H)
..()
H.verbs |= /mob/living/proc/shred_limb
add_verb(H, /mob/living/proc/shred_limb)
/datum/trait/neutral/trashcan
name = "Trash Can"
@@ -243,8 +243,8 @@
/datum/trait/neutral/trashcan/apply(var/datum/species/S,var/mob/living/carbon/human/H)
..()
H.verbs |= /mob/living/proc/eat_trash
H.verbs |= /mob/living/proc/toggle_trash_catching //Ported from chompstation
add_verb(H, /mob/living/proc/eat_trash)
add_verb(H, /mob/living/proc/toggle_trash_catching) //Ported from chompstation
/datum/trait/neutral/gem_eater
name = "Expensive Taste"
@@ -255,7 +255,7 @@
/datum/trait/neutral/gem_eater/apply(var/datum/species/S,var/mob/living/carbon/human/H)
..()
H.verbs |= /mob/living/proc/eat_minerals
add_verb(H, /mob/living/proc/eat_minerals)
/datum/trait/neutral/synth_chemfurnace
name = "Biofuel Processor"
@@ -292,7 +292,7 @@
/datum/trait/neutral/glowing_eyes/apply(var/datum/species/S,var/mob/living/carbon/human/H)
..()
H.verbs |= /mob/living/carbon/human/proc/toggle_eye_glow
add_verb(H, /mob/living/carbon/human/proc/toggle_eye_glow)
/datum/trait/neutral/glowing_body
name = "Glowing Body"
@@ -304,8 +304,8 @@
/datum/trait/neutral/glowing_body/apply(var/datum/species/S,var/mob/living/carbon/human/H)
..()
H.verbs |= /mob/living/proc/glow_toggle
H.verbs |= /mob/living/proc/glow_color
add_verb(H, /mob/living/proc/glow_toggle)
add_verb(H, /mob/living/proc/glow_color)
//Allergen traits! Not available to any species with a base allergens var.
/datum/trait/neutral/allergy
@@ -733,7 +733,7 @@
/datum/trait/neutral/dominate_predator/apply(var/datum/species/S,var/mob/living/carbon/human/H)
..()
H.verbs |= /mob/proc/dominate_predator
add_verb(H, /mob/proc/dominate_predator)
/datum/trait/neutral/dominate_prey
name = "Dominate Prey"
@@ -743,7 +743,7 @@
/datum/trait/neutral/dominate_prey/apply(var/datum/species/S,var/mob/living/carbon/human/H)
..()
H.verbs |= /mob/living/proc/dominate_prey
add_verb(H, /mob/living/proc/dominate_prey)
/datum/trait/neutral/submit_to_prey
name = "Submit To Prey"
@@ -753,7 +753,7 @@
/datum/trait/neutral/submit_to_prey/apply(var/datum/species/S,var/mob/living/carbon/human/H)
..()
H.verbs |= /mob/living/proc/lend_prey_control
add_verb(H, /mob/living/proc/lend_prey_control)
/datum/trait/neutral/vertical_nom
name = "Vertical Nom"
@@ -763,7 +763,7 @@
/datum/trait/neutral/vertical_nom/apply(var/datum/species/S,var/mob/living/carbon/human/H)
..()
H.verbs |= /mob/living/proc/vertical_nom
add_verb(H, /mob/living/proc/vertical_nom)
/datum/trait/neutral/micro_size_down
name = "Light Frame"
@@ -859,7 +859,7 @@
/datum/trait/neutral/synth_cosmetic_pain/apply(var/datum/species/S,var/mob/living/carbon/human/H, var/trait_prefs = null)
..()
H.verbs |= /mob/living/carbon/human/proc/toggle_pain_module
add_verb(H, /mob/living/carbon/human/proc/toggle_pain_module)
//Food preferences ported from RogueStar
@@ -125,9 +125,9 @@
/datum/trait/positive/winged_flight/apply(var/datum/species/S,var/mob/living/carbon/human/H)
..()
H.verbs |= /mob/living/proc/flying_toggle
H.verbs |= /mob/living/proc/flying_vore_toggle
H.verbs |= /mob/living/proc/start_wings_hovering
add_verb(H, /mob/living/proc/flying_toggle)
add_verb(H, /mob/living/proc/flying_vore_toggle)
add_verb(H, /mob/living/proc/start_wings_hovering)
/datum/trait/positive/soft_landing
name = "Soft Landing"
@@ -151,7 +151,7 @@
/datum/trait/positive/antiseptic_saliva/apply(var/datum/species/S,var/mob/living/carbon/human/H)
..()
H.verbs |= /mob/living/carbon/human/proc/lick_wounds
add_verb(H, /mob/living/carbon/human/proc/lick_wounds)
/datum/trait/positive/traceur
name = "Traceur"
@@ -179,11 +179,11 @@
/datum/trait/positive/weaver/apply(var/datum/species/S,var/mob/living/carbon/human/H)
..()
H.verbs |= /mob/living/carbon/human/proc/check_silk_amount
H.verbs |= /mob/living/carbon/human/proc/toggle_silk_production
H.verbs |= /mob/living/carbon/human/proc/weave_structure
H.verbs |= /mob/living/carbon/human/proc/weave_item
H.verbs |= /mob/living/carbon/human/proc/set_silk_color
add_verb(H, /mob/living/carbon/human/proc/check_silk_amount)
add_verb(H, /mob/living/carbon/human/proc/toggle_silk_production)
add_verb(H, /mob/living/carbon/human/proc/weave_structure)
add_verb(H, /mob/living/carbon/human/proc/weave_item)
add_verb(H, /mob/living/carbon/human/proc/set_silk_color)
/datum/trait/positive/aquatic
name = "Aquatic"
@@ -195,8 +195,8 @@
/datum/trait/positive/aquatic/apply(var/datum/species/S,var/mob/living/carbon/human/H)
..()
H.verbs |= /mob/living/carbon/human/proc/water_stealth
H.verbs |= /mob/living/carbon/human/proc/underwater_devour
add_verb(H, /mob/living/carbon/human/proc/water_stealth)
add_verb(H, /mob/living/carbon/human/proc/underwater_devour)
/datum/trait/positive/cocoon_tf
name = "Cocoon Spinner"
@@ -207,7 +207,7 @@
/datum/trait/positive/cocoon_tf/apply(var/datum/species/S,var/mob/living/carbon/human/H)
..()
H.verbs |= /mob/living/carbon/human/proc/enter_cocoon
add_verb(H, /mob/living/carbon/human/proc/enter_cocoon)
/datum/trait/positive/linguist
name = "Linguist"
@@ -33,7 +33,7 @@
S.vars[trait] = trait_prefs[trait]
if(TRAIT_VAREDIT_TARGET_MOB)
H.vars[trait] = trait_prefs[trait]
H.verbs |= /mob/living/carbon/human/proc/trait_tutorial
add_verb(H, /mob/living/carbon/human/proc/trait_tutorial)
return
//Applying trait to preferences rather than just us.
@@ -85,7 +85,7 @@
if(!config.aliens_allowed)
to_chat(src, "You begin to lay an egg, but hesitate. You suspect it isn't allowed.")
verbs -= /mob/living/carbon/human/proc/lay_egg
remove_verb(src, /mob/living/carbon/human/proc/lay_egg)
return
if(locate(/obj/structure/ghost_pod/automatic/xenomorph_egg) in get_turf(src))
@@ -1387,8 +1387,8 @@ var/global/list/damage_icon_parts = list() //see UpdateDamageIcon()
working.pixel_y = tail_style.offset_y
if(taurtype.can_ride && !riding_datum)
riding_datum = new /datum/riding/taur(src)
verbs |= /mob/living/carbon/human/proc/taur_mount
verbs |= /mob/living/proc/toggle_rider_reins
add_verb(src, /mob/living/carbon/human/proc/taur_mount)
add_verb(src, /mob/living/proc/toggle_rider_reins)
else if(islongtail(tail_style))
working.pixel_x = tail_style.offset_x
working.pixel_y = tail_style.offset_y
+1 -1
View File
@@ -365,7 +365,7 @@
/mob/living/proc/embed(var/obj/O, var/def_zone=null)
O.loc = src
src.embedded += O
src.verbs += /mob/proc/yank_out_object
add_verb(src, /mob/proc/yank_out_object)
throw_alert("embeddedobject", /obj/screen/alert/embeddedobject)
//This is called when the mob is thrown into a dense turf
+6 -6
View File
@@ -15,14 +15,14 @@
AddComponent(/datum/component/character_setup)
// Vore stuff
verbs |= /mob/living/proc/escapeOOC
verbs |= /mob/living/proc/lick
verbs |= /mob/living/proc/smell
verbs |= /mob/living/proc/switch_scaling
verbs |= /mob/living/proc/center_offset
add_verb(src, /mob/living/proc/escapeOOC)
add_verb(src, /mob/living/proc/lick)
add_verb(src, /mob/living/proc/smell)
add_verb(src, /mob/living/proc/switch_scaling)
add_verb(src, /mob/living/proc/center_offset)
if(!no_vore)
verbs |= /mob/living/proc/vorebelly_printout
add_verb(src, /mob/living/proc/vorebelly_printout)
if(!vorePanel)
AddComponent(/datum/component/vore_panel)
//VOREStation Add Start
+25 -24
View File
@@ -99,12 +99,12 @@ var/list/ai_verbs_default = list(
can_be_antagged = TRUE
/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/New(loc, var/datum/ai_laws/L, var/obj/item/mmi/B, var/safety = 0)
announcement = new()
@@ -238,26 +238,27 @@ var/list/ai_verbs_default = list(
return ..()
/mob/living/silicon/ai/Stat()
..()
if(statpanel("Status"))
if(!stat) // Make sure we're not unconscious/dead.
stat(null, text("System integrity: [(health+100)/2]%"))
stat(null, text("Connected synthetics: [connected_robots.len]"))
for(var/mob/living/silicon/robot/R in connected_robots)
var/robot_status = "Nominal"
if(R.shell)
robot_status = "AI SHELL"
else if(R.stat || !R.client)
robot_status = "OFFLINE"
else if(!R.cell || R.cell.charge <= 0)
robot_status = "DEPOWERED"
//Name, Health, Battery, Module, Area, and Status! Everything an AI wants to know about its borgies!
stat(null, text("[R.name] | S.Integrity: [R.health]% | Cell: [R.cell ? "[R.cell.charge]/[R.cell.maxcharge]" : "Empty"] | \
Module: [R.modtype] | Loc: [get_area_name(R, TRUE)] | Status: [robot_status]"))
stat(null, text("AI shell beacons detected: [LAZYLEN(GLOB.available_ai_shells)]")) //Count of total AI shells
else
stat(null, text("Systems nonfunctional"))
/mob/living/silicon/ai/get_status_tab_items()
. = ..()
. += ""
if(!stat) // Make sure we're not unconscious/dead.
. += "System integrity: [(health+100)/2]%"
. += "Connected synthetics: [connected_robots.len]"
for(var/mob/living/silicon/robot/R in connected_robots)
var/robot_status = "Nominal"
if(R.shell)
robot_status = "AI SHELL"
else if(R.stat || !R.client)
robot_status = "OFFLINE"
else if(!R.cell || R.cell.charge <= 0)
robot_status = "DEPOWERED"
//Name, Health, Battery, Module, Area, and Status! Everything an AI wants to know about its borgies!
. += "[R.name] | S.Integrity: [R.health]% | Cell: [R.cell ? "[R.cell.charge]/[R.cell.maxcharge]" : "Empty"] | \
Module: [R.modtype] | Loc: [get_area_name(R, TRUE)] | Status: [robot_status]"
. += "AI shell beacons detected: [LAZYLEN(GLOB.available_ai_shells)]" //Count of total AI shells
else
. += "Systems nonfunctional"
/mob/living/silicon/ai/proc/setup_icon()
@@ -3,7 +3,7 @@
/mob/living/silicon/ai/Initialize()
if(config.allow_ai_shells)
verbs += /mob/living/silicon/ai/proc/deploy_to_shell_act
add_verb(src, /mob/living/silicon/ai/proc/deploy_to_shell_act)
return ..()
/mob/living/silicon/ai/proc/deploy_to_shell(var/mob/living/silicon/robot/target)
+17 -15
View File
@@ -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.")
@@ -109,29 +109,31 @@
// Shows capacitor charge and hardware integrity information to the AI in Status tab.
/mob/living/silicon/ai/show_system_integrity()
. = ""
if(!src.stat)
stat(null, text("Hardware integrity: [hardware_integrity()]%"))
stat(null, text("Internal capacitor: [backup_capacitor()]%"))
. += "Hardware integrity: [hardware_integrity()]%"
. += "Internal capacitor: [backup_capacitor()]%"
else
stat(null, text("Systems nonfunctional"))
. += "Systems nonfunctional"
// Shows AI Malfunction related information to the AI.
/mob/living/silicon/ai/show_malf_ai()
. = ""
if(src.is_malf())
if(src.hacked_apcs)
stat(null, "Hacked APCs: [src.hacked_apcs.len]")
stat(null, "System Status: [src.hacking ? "Busy" : "Stand-By"]")
. += "Hacked APCs: [src.hacked_apcs.len]"
. += "System Status: [src.hacking ? "Busy" : "Stand-By"]"
if(src.research)
stat(null, "Available CPU: [src.research.stored_cpu] TFlops")
stat(null, "Maximal CPU: [src.research.max_cpu] TFlops")
stat(null, "CPU generation rate: [src.research.cpu_increase_per_tick * 10] TFlops/s")
stat(null, "Current research focus: [src.research.focus ? src.research.focus.name : "None"]")
. += "Available CPU: [src.research.stored_cpu] TFlops"
. += "Maximal CPU: [src.research.max_cpu] TFlops"
. += "CPU generation rate: [src.research.cpu_increase_per_tick * 10] TFlops/s"
. += "Current research focus: [src.research.focus ? src.research.focus.name : "None"]"
if(src.research.focus)
stat(null, "Research completed: [round(src.research.focus.invested, 0.1)]/[round(src.research.focus.price)]")
. += "Research completed: [round(src.research.focus.invested, 0.1)]/[round(src.research.focus.price)]"
if(system_override == 1)
stat(null, "SYSTEM OVERRIDE INITIATED")
. += "SYSTEM OVERRIDE INITIATED"
else if(system_override == 2)
stat(null, "SYSTEM OVERRIDE COMPLETED")
. += "SYSTEM OVERRIDE COMPLETED"
// Cleaner proc for creating powersupply for an AI.
/mob/living/silicon/ai/proc/create_powersupply()
+13 -13
View File
@@ -130,8 +130,8 @@
add_language(LANGUAGE_TERMINUS, 1)
add_language(LANGUAGE_SIGN, 1)
verbs += /mob/living/silicon/pai/proc/choose_chassis
verbs += /mob/living/silicon/pai/proc/choose_verbs
add_verb(src, /mob/living/silicon/pai/proc/choose_chassis)
add_verb(src, /mob/living/silicon/pai/proc/choose_verbs)
//PDA
pda = new(src)
@@ -157,16 +157,16 @@
// 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)
var/timeleft = round((silence_time - world.timeofday)/10 ,1)
stat(null, "Communications system reboot in -[(timeleft / 60) % 60]:[add_zero(num2text(timeleft % 60), 2)]")
. += "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()
/mob/living/silicon/pai/get_status_tab_items()
. = ..()
. += ""
. += show_silenced()
/mob/living/silicon/pai/check_eye(var/mob/user as mob)
if (!src.current)
@@ -304,8 +304,8 @@
var/turf/T = get_turf(src)
if(istype(T)) T.visible_message(span_filter_notice("<b>[src]</b> folds outwards, expanding into a mobile form."))
verbs |= /mob/living/silicon/pai/proc/pai_nom
verbs |= /mob/living/proc/vertical_nom
add_verb(src, /mob/living/silicon/pai/proc/pai_nom)
add_verb(src, /mob/living/proc/vertical_nom)
update_icon()
/mob/living/silicon/pai/verb/fold_up()
@@ -340,7 +340,7 @@
finalized = tgui_alert(usr, "Look at your sprite. Is this what you wish to use?","Choose Chassis",list("No","Yes"))
chassis = possible_chassis[choice]
verbs |= /mob/living/proc/hide
add_verb(src, /mob/living/proc/hide)
//VOREStation Removal End
*/
@@ -477,8 +477,8 @@
icon_state = "[chassis]"
if(isopenspace(card.loc))
fall()
verbs -= /mob/living/silicon/pai/proc/pai_nom
verbs -= /mob/living/proc/vertical_nom
remove_verb(src, /mob/living/silicon/pai/proc/pai_nom)
remove_verb(src, /mob/living/proc/vertical_nom)
// No binary for pAIs.
/mob/living/silicon/pai/binarycheck()
@@ -71,10 +71,10 @@
/mob/living/silicon/pai/Initialize()
. = ..()
verbs |= /mob/proc/dominate_predator
verbs |= /mob/living/proc/dominate_prey
verbs |= /mob/living/proc/set_size
verbs |= /mob/living/proc/shred_limb
add_verb(src, /mob/proc/dominate_predator)
add_verb(src, /mob/living/proc/dominate_prey)
add_verb(src, /mob/living/proc/set_size)
add_verb(src, /mob/living/proc/shred_limb)
/mob/living/silicon/pai/Login()
. = ..()
@@ -104,8 +104,8 @@ var/list/mob_hat_cache = list()
/mob/living/silicon/robot/drone/New()
..()
verbs += /mob/living/proc/ventcrawl
verbs += /mob/living/proc/hide
add_verb(src, /mob/living/proc/ventcrawl)
add_verb(src, /mob/living/proc/hide)
remove_language("Robot Talk")
add_language("Robot Talk", 0)
add_language("Drone Talk", 1)
@@ -123,7 +123,7 @@ var/list/mob_hat_cache = list()
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)
if(can_pick_shell)
var/random = pick(shell_types)
@@ -146,7 +146,7 @@ var/list/mob_hat_cache = list()
/mob/living/silicon/robot/drone/Login()
. = ..()
if(can_pick_shell)
to_chat(src, "<b>You can select a shell using the 'Robot Commands' > 'Customize Appearance'</b>")
to_chat(src, "<b>You can select a shell using the 'Abilities.Silicon' > 'Customize Appearance'</b>")
//Redefining some robot procs...
/mob/living/silicon/robot/drone/SetName(pickedName as text)
@@ -172,7 +172,7 @@ var/list/mob_hat_cache = list()
/mob/living/silicon/robot/drone/verb/pick_shell()
set name = "Customize Appearance"
set category = "Robot Commands"
set category = "Abilities.Silicon"
if(!can_pick_shell)
to_chat(src, span_warning("You already selected a shell or this drone type isn't customizable."))
@@ -395,10 +395,10 @@ var/list/mob_hat_cache = list()
to_chat(src, "Use <b>say ;Hello</b> to talk to other drones and <b>say Hello</b> to speak silently to your nearby fellows.")
/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/construction/welcome_drone()
to_chat(src, "<b>You are a construction drone, an autonomous engineering and fabrication system.</b>.")
@@ -2,7 +2,7 @@
/mob/living/silicon/robot/drone/verb/set_mail_tag()
set name = "Set Mail Tag"
set desc = "Tag yourself for delivery through the disposals system."
set category = "Robot Commands"
set category = "Abilities.Silicon"
var/new_tag = tgui_input_list(usr, "Select the desired destination.", "Set Mail Tag", GLOB.tagger_locations)
@@ -267,7 +267,7 @@
set name = "Drop Item"
set desc = "Release an item from your magnetic gripper."
set category = "Robot Commands"
set category = "Abilities.Silicon"
drop_item()
@@ -1,5 +1,5 @@
/mob/living/silicon/robot/verb/cmd_show_laws()
set category = "Robot Commands"
set category = "Abilities.Silicon"
set name = "Show Laws"
show_laws()
@@ -51,6 +51,6 @@
return
/mob/living/silicon/robot/proc/robot_checklaws()
set category = "Robot Commands"
set category = "Abilities.Silicon"
set name = "State Laws"
subsystem_law_manager()
+33 -31
View File
@@ -280,11 +280,13 @@
if (!rbPDA)
rbPDA = new/obj/item/pda/ai(src)
rbPDA.set_name_and_job(name,"[modtype] [braintype]")
add_verb(src, /obj/item/pda/ai/verb/cmd_pda_open_ui)
/mob/living/silicon/robot/proc/setup_communicator()
if (!communicator)
communicator = new/obj/item/communicator/integrated(src)
communicator.register_device(name, "[modtype] [braintype]")
add_verb(src, /obj/item/communicator/integrated/verb/activate)
//If there's an MMI in the robot, have it ejected when the mob goes away. --NEO
//Improved /N
@@ -424,7 +426,7 @@
/mob/living/silicon/robot/verb/namepick()
set name = "Pick Name"
set category = "Robot Commands"
set category = "Abilities.Silicon"
if(custom_name)
to_chat(usr, "You can't pick another custom name. [isshell(src) ? "" : "Go ask for a name change."]")
@@ -442,7 +444,7 @@
/mob/living/silicon/robot/verb/extra_customization()
set name = "Customize Appearance"
set category = "Robot Commands"
set category = "Abilities.Silicon"
set desc = "Customize your appearance (assuming your chosen sprite allows)."
if(!sprite_datum || !sprite_datum.has_extra_customization)
@@ -463,7 +465,7 @@
return dat
/mob/living/silicon/robot/verb/toggle_lights()
set category = "Robot Commands"
set category = "Abilities.Silicon"
set name = "Toggle Lights"
lights_on = !lights_on
@@ -472,7 +474,7 @@
update_icon()
/mob/living/silicon/robot/verb/self_diagnosis_verb()
set category = "Robot Commands"
set category = "Abilities.Silicon"
set name = "Self Diagnosis"
if(!is_component_functioning("diagnosis unit"))
@@ -486,7 +488,7 @@
/mob/living/silicon/robot/verb/toggle_component()
set category = "Robot Commands"
set category = "Abilities.Silicon"
set name = "Toggle Component"
set desc = "Toggle a component, conserving power."
@@ -510,7 +512,7 @@
to_chat(src, span_red("You enable [C.name]."))
/mob/living/silicon/robot/verb/spark_plug() //So you can still sparkle on demand without violence.
set category = "Robot Commands"
set category = "Abilities.Silicon"
set name = "Emit Sparks"
to_chat(src, span_filter_notice("You harmlessly spark."))
spark_system.start()
@@ -520,8 +522,8 @@
// if you have a jetpack, show the internal tank pressure
var/obj/item/tank/jetpack/current_jetpack = installed_jetpack()
if (current_jetpack)
stat("Internal Atmosphere Info", current_jetpack.name)
stat("Tank Pressure", current_jetpack.air_contents.return_pressure())
. = "Internal Atmosphere Info: [current_jetpack.name]"
. += "Tank Pressure: [current_jetpack.air_contents.return_pressure()]"
// this function returns the robots jetpack, if one is installed
@@ -534,11 +536,11 @@
// 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"))
. = "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
stat(null, text("No Cell Inserted!"))
. = "No Cell Inserted!"
// function to toggle VTEC once installed
/mob/living/silicon/robot/proc/toggle_vtec()
@@ -549,15 +551,15 @@
to_chat(src, span_filter_notice("VTEC module [vtec_active ? "enabled" : "disabled"]."))
// update the status screen display
/mob/living/silicon/robot/Stat()
..()
if (statpanel("Status"))
show_cell_power()
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]")
/mob/living/silicon/robot/get_status_tab_items()
. = ..()
. += ""
. += show_cell_power()
. += show_jetpack_pressure()
. += "Lights: [lights_on ? "ON" : "OFF"]"
if(module)
for(var/datum/matter_synth/ms in module.synths)
. += "[ms.name]: [ms.energy]/[ms.max_energy]"
/mob/living/silicon/robot/restrained()
return 0
@@ -843,7 +845,7 @@
/mob/living/silicon/robot/proc/ColorMate()
set name = "Recolour Module"
set category = "Robot Commands"
set category = "Abilities.Silicon"
set desc = "Allows to recolour once."
if(!has_recoloured)
@@ -1191,7 +1193,7 @@
/mob/living/silicon/robot/proc/ResetSecurityCodes()
set category = "Robot Commands"
set category = "Abilities.Silicon"
set name = "Reset Identity Codes"
set desc = "Scrambles your security and identification codes and resets your current buffers. Unlocks you and permenantly severs you from your AI and the robotics console and will deactivate your camera system."
@@ -1200,7 +1202,7 @@
if(R)
R.UnlinkSelf()
to_chat(R, span_filter_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 = 1)
// They stay locked down if their wire is cut.
@@ -1289,7 +1291,7 @@
/mob/living/silicon/robot/proc/sensor_mode() //Medical/Security HUD controller for borgs
set name = "Toggle Sensor Augmentation" //VOREStation Add
set category = "Robot Commands"
set category = "Abilities.Silicon"
set desc = "Augment visual feed with internal sensor overlays."
sensor_type = !sensor_type //VOREStation Add
to_chat(usr, "You [sensor_type ? "enable" : "disable"] your sensors.") //VOREStation Add
@@ -1299,16 +1301,16 @@
return
/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)
if(config.allow_robot_recolor)
src.verbs |= /mob/living/silicon/robot/proc/ColorMate
add_verb(src, /mob/living/silicon/robot/proc/ColorMate)
/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)
if(config.allow_robot_recolor)
src.verbs |= /mob/living/silicon/robot/proc/ColorMate
remove_verb(src, /mob/living/silicon/robot/proc/ColorMate)
// Uses power from cyborg's cell. Returns 1 on success or 0 on failure.
// Properly converts using CELLRATE now! Amount is in Joules.
@@ -167,10 +167,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)
@@ -65,7 +65,7 @@ GLOBAL_LIST_EMPTY(available_ai_shells)
lawsync()
// Give button to leave.
verbs += /mob/living/silicon/robot/proc/undeploy_act
add_verb(src, /mob/living/silicon/robot/proc/undeploy_act)
to_chat(AI, span_notice("You have connected to an AI Shell remotely, and are now in control of it.<br>\
To return to your core, use the <b>Release Control</b> verb."))
@@ -110,7 +110,7 @@ GLOBAL_LIST_EMPTY(available_ai_shells)
/mob/living/silicon/robot/proc/undeploy_act()
set name = "Release Control"
set desc = "Release control of a remote drone."
set category = "Robot Commands"
set category = "Abilities.Silicon"
undeploy("Remote session terminated.")
@@ -25,7 +25,7 @@
/obj/item/robot_module/robot/platform/verb/set_eye_colour()
set name = "Set Eye Colour"
set desc = "Select an eye colour to use."
set category = "Robot Commands"
set category = "Abilities.Silicon"
set src in usr
var/new_pupil_color = input(usr, "Select a pupil colour.", "Pupil Colour Selection") as color|null
@@ -106,7 +106,7 @@
/mob/living/silicon/robot/platform/verb/drop_stored_atom_verb()
set name = "Eject Cargo"
set category = "Robot Commands"
set category = "Abilities.Silicon"
set desc = "Drop something from your internal storage."
if(incapacitated())
+10 -10
View File
@@ -130,30 +130,30 @@
// this function shows the health of the AI in the Status panel
/mob/living/silicon/proc/show_system_integrity()
if(!src.stat)
stat(null, text("System integrity: [round((health/getMaxHealth())*100)]%"))
. = "System integrity: [round((health/getMaxHealth())*100)]%"
else
stat(null, text("Systems nonfunctional"))
. = "Systems nonfunctional"
// This is a pure virtual function, it should be overwritten by all subclasses
/mob/living/silicon/proc/show_malf_ai()
return 0
return ""
// this function displays the shuttles ETA in the status panel if the shuttle has been called
/mob/living/silicon/proc/show_emergency_shuttle_eta()
if(emergency_shuttle)
var/eta_status = emergency_shuttle.get_status_panel_eta()
if(eta_status)
stat(null, eta_status)
. = "[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()
show_malf_ai()
..()
/mob/living/silicon/get_status_tab_items()
. = ..()
. += ""
. += show_emergency_shuttle_eta()
. += show_system_integrity()
. += show_malf_ai()
/* VOREStation Removal
// this function displays the stations manifest in a separate window
+7 -7
View File
@@ -51,7 +51,7 @@
********************/
/mob/living/silicon/proc/subsystem_alarm_monitor()
set name = "Alarm Monitor"
set category = "Subystems"
set category = "Abilities.Silicon"
alarm_monitor.tgui_interact(usr)
@@ -59,7 +59,7 @@
* Atmos Control *
********************/
/mob/living/silicon/proc/subsystem_atmos_control()
set category = "Subystems"
set category = "Abilities.Silicon"
set name = "Atmospherics Control"
atmos_control.tgui_interact(usr)
@@ -68,7 +68,7 @@
* Crew Manifest *
********************/
/mob/living/silicon/proc/subsystem_crew_manifest()
set category = "Subystems"
set category = "Abilities.Silicon"
set name = "Crew Manifest"
crew_manifest.tgui_interact(usr)
@@ -77,7 +77,7 @@
* Crew Monitor *
********************/
/mob/living/silicon/proc/subsystem_crew_monitor()
set category = "Subystems"
set category = "Abilities.Silicon"
set name = "Crew Monitor"
crew_monitor.tgui_interact(usr)
@@ -87,7 +87,7 @@
****************/
/mob/living/silicon/proc/subsystem_law_manager()
set name = "Law Manager"
set category = "Subystems"
set category = "Abilities.Silicon"
law_manager.tgui_interact(usr)
@@ -95,7 +95,7 @@
* Power Monitor *
********************/
/mob/living/silicon/proc/subsystem_power_monitor()
set category = "Subystems"
set category = "Abilities.Silicon"
set name = "Power Monitor"
power_monitor.tgui_interact(usr)
@@ -104,7 +104,7 @@
* RCON *
************/
/mob/living/silicon/proc/subsystem_rcon()
set category = "Subystems"
set category = "Abilities.Silicon"
set name = "RCON"
rcon.tgui_interact(usr)
@@ -180,7 +180,7 @@
var/isthermal = 0
/mob/living/simple_mob/Initialize()
verbs -= /mob/verb/observe
remove_verb(src, /mob/verb/observe)
health = maxHealth
if(ID_provided) //VOREStation Edit
@@ -199,7 +199,7 @@
organ_names = GET_DECL(organ_names)
if(config.allow_simple_mob_recolor)
verbs |= /mob/living/simple_mob/proc/ColorMate
add_verb(src, /mob/living/simple_mob/proc/ColorMate)
return ..()
@@ -226,7 +226,7 @@
. = ..()
to_chat(src,"<b>You are \the [src].</b> [player_msg]")
if(hasthermals)
verbs |= /mob/living/simple_mob/proc/hunting_vision //So that maint preds can see prey through walls, to make it easier to find them.
add_verb(src, /mob/living/simple_mob/proc/hunting_vision) //So that maint preds can see prey through walls, to make it easier to find them.
/mob/living/simple_mob/SelfMove(turf/n, direct, movetime)
var/turf/old_turf = get_turf(src)
@@ -286,11 +286,10 @@
. += ..()
/mob/living/simple_mob/Stat()
..()
if(statpanel("Status") && show_stat_health)
stat(null, "Health: [round((health / getMaxHealth()) * 100)]%")
/mob/living/simple_mob/get_status_tab_items()
. = ..()
. += ""
. += "Health: [round((health / getMaxHealth()) * 100)]%"
/mob/living/simple_mob/lay_down()
..()
@@ -212,16 +212,16 @@
return
if(!IsAdvancedToolUser())
verbs |= /mob/living/simple_mob/proc/animal_nom
verbs |= /mob/living/proc/shred_limb
add_verb(src, /mob/living/simple_mob/proc/animal_nom)
add_verb(src, /mob/living/proc/shred_limb)
if(LAZYLEN(vore_organs))
return
// Since they have bellies, add verbs to toggle settings on them.
verbs |= /mob/living/simple_mob/proc/toggle_digestion
verbs |= /mob/living/simple_mob/proc/toggle_fancygurgle
verbs |= /mob/living/proc/vertical_nom
add_verb(src, /mob/living/simple_mob/proc/toggle_digestion)
add_verb(src, /mob/living/simple_mob/proc/toggle_fancygurgle)
add_verb(src, /mob/living/proc/vertical_nom)
//A much more detailed version of the default /living implementation
var/obj/belly/B = new /obj/belly(src)
@@ -137,9 +137,9 @@
/mob/living/simple_mob/vore/alienanimals/catslug/Initialize()
. = ..()
verbs += /mob/living/proc/ventcrawl
verbs += /mob/living/proc/hide
verbs += /mob/living/simple_mob/vore/alienanimals/catslug/proc/catslug_color
add_verb(src, /mob/living/proc/ventcrawl)
add_verb(src, /mob/living/proc/hide)
add_verb(src, /mob/living/simple_mob/vore/alienanimals/catslug/proc/catslug_color)
/mob/living/simple_mob/vore/alienanimals/catslug/Destroy()
if(hat)
@@ -358,9 +358,9 @@
/mob/living/simple_mob/vore/alienanimals/catslug/custom/Initialize()
. = ..()
verbs += /mob/living/proc/ventcrawl
verbs += /mob/living/proc/hide
verbs -= /mob/living/simple_mob/vore/alienanimals/catslug/proc/catslug_color //Most of these have custom sprites with colour already, so we'll not let them have this.
add_verb(src, /mob/living/proc/ventcrawl)
add_verb(src, /mob/living/proc/hide)
remove_verb(src, /mob/living/simple_mob/vore/alienanimals/catslug/proc/catslug_color) //Most of these have custom sprites with colour already, so we'll not let them have this.
/datum/category_item/catalogue/fauna/catslug/custom/spaceslug
@@ -1080,7 +1080,7 @@
/mob/living/simple_mob/vore/alienanimals/catslug/suslug/Initialize()
. = ..()
verbs += /mob/living/simple_mob/vore/alienanimals/catslug/suslug/proc/assussinate
add_verb(src, /mob/living/simple_mob/vore/alienanimals/catslug/suslug/proc/assussinate)
update_icon()
/mob/living/simple_mob/vore/alienanimals/catslug/suslug/update_icon()
@@ -69,8 +69,8 @@
/mob/living/simple_mob/vore/overmap/stardog/Login()
. = ..()
verbs -= /mob/living/simple_mob/proc/set_name
verbs -= /mob/living/simple_mob/proc/set_desc
remove_verb(src, /mob/living/simple_mob/proc/set_name)
remove_verb(src, /mob/living/simple_mob/proc/set_desc)
/mob/living/simple_mob/vore/overmap/stardog/attack_hand(mob/living/user)
if(!(user.pickup_pref && user.pickup_active))
@@ -164,10 +164,10 @@
weather_areas -= anything
return ..()
/mob/living/simple_mob/vore/overmap/stardog/Stat()
..()
if(statpanel("Status"))
stat(null, "Affinity: [round(affinity)]")
/mob/living/simple_mob/vore/overmap/stardog/get_status_tab_items()
. = ..()
. += ""
. += "Affinity: [round(affinity)]"
/mob/living/simple_mob/vore/overmap/stardog/start_pulling(var/atom/movable/AM)
if(!istype(loc, /turf/unsimulated/map)) //Don't pull stuff on the overmap
@@ -333,11 +333,11 @@ GLOBAL_VAR_INIT(teppi_count, 0) // How mant teppi DO we have?
real_name = name
if(!teppi_adult)
nutrition = 0
verbs += /mob/living/proc/ventcrawl
verbs += /mob/living/proc/hide
add_verb(src, /mob/living/proc/ventcrawl)
add_verb(src, /mob/living/proc/hide)
else
verbs += /mob/living/simple_mob/vore/alienanimals/teppi/proc/produce_offspring
verbs += /mob/living/simple_mob/vore/alienanimals/teppi/proc/toggle_producing_offspring
add_verb(src, /mob/living/simple_mob/vore/alienanimals/teppi/proc/produce_offspring)
add_verb(src, /mob/living/simple_mob/vore/alienanimals/teppi/proc/toggle_producing_offspring)
// teppi_id = rand(1,100000)
@@ -57,8 +57,8 @@
/mob/living/simple_mob/animal/borer/Initialize()
add_language("Cortical Link")
verbs += /mob/living/proc/ventcrawl
verbs += /mob/living/proc/hide
add_verb(src, /mob/living/proc/ventcrawl)
add_verb(src, /mob/living/proc/hide)
true_name = "[pick("Primary","Secondary","Tertiary","Quaternary")] [rand(1000,9999)]"
@@ -99,15 +99,9 @@
if(prob(host.brainloss/20))
host.say("*[pick(list("blink","blink_r","choke","aflap","drool","twitch","twitch_v","gasp"))]")
/mob/living/simple_mob/animal/borer/Stat()
..()
if(client.statpanel == "Status")
statpanel("Status")
if(emergency_shuttle)
var/eta_status = emergency_shuttle.get_status_panel_eta()
if(eta_status)
stat(null, eta_status)
stat("Chemicals", chemicals)
/mob/living/simple_mob/animal/borer/get_status_tab_items()
. = ..()
. += "Chemicals: [chemicals]"
/mob/living/simple_mob/animal/borer/proc/detatch()
if(!host || !controlling)
@@ -122,9 +116,9 @@
controlling = FALSE
host.remove_language("Cortical Link")
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)
// these are here so bans and multikey warnings are not triggered on the wrong people when ckey is changed.
@@ -55,9 +55,9 @@
to_chat(H, span_danger("With an immense exertion of will, you regain control of your body!"))
to_chat(B.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."))
B.detatch()
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)
return
@@ -165,12 +165,12 @@
H.add_language("Cortical Link")
if(host.stat == 2)
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
add_verb(H, /mob/living/carbon/human/proc/psychic_whisper)
add_verb(H, /mob/living/carbon/human/proc/tackle)
if(antag)
H.verbs |= /mob/living/carbon/proc/spawn_larvae
add_verb(H, /mob/living/carbon/proc/spawn_larvae)
if(H.client)
H.ghostize(0)
@@ -331,10 +331,10 @@
controlling = 1
host.verbs += /mob/living/carbon/proc/release_control
host.verbs += /mob/living/carbon/proc/punish_host
add_verb(host, /mob/living/carbon/proc/release_control)
add_verb(host, /mob/living/carbon/proc/punish_host)
if(antag)
host.verbs += /mob/living/carbon/proc/spawn_larvae
add_verb(host, /mob/living/carbon/proc/spawn_larvae)
return
@@ -347,7 +347,7 @@
to_chat(usr, "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()
@@ -47,8 +47,8 @@
/mob/living/simple_mob/animal/passive/mouse/New()
..()
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)])"
@@ -185,8 +185,8 @@
/mob/living/simple_mob/animal/passive/opossum/Initialize()
. = ..()
verbs += /mob/living/proc/ventcrawl
verbs += /mob/living/proc/hide
add_verb(src, /mob/living/proc/ventcrawl)
add_verb(src, /mob/living/proc/hide)
/mob/living/simple_mob/animal/passive/opossum/poppy
name = "Poppy the Safety Possum"
@@ -85,8 +85,8 @@
/mob/living/simple_mob/animal/sif/frostfly/Initialize()
. = ..()
smoke_special = new
verbs += /mob/living/proc/ventcrawl
verbs += /mob/living/proc/hide
add_verb(src, /mob/living/proc/ventcrawl)
add_verb(src, /mob/living/proc/hide)
/datum/say_list/frostfly
speak = list("Zzzz.", "Kss.", "Zzt?")
@@ -110,15 +110,9 @@
if(energy < max_energy)
energy++
/mob/living/simple_mob/animal/sif/frostfly/Stat()
..()
if(client.statpanel == "Status")
statpanel("Status")
if(emergency_shuttle)
var/eta_status = emergency_shuttle.get_status_panel_eta()
if(eta_status)
stat(null, eta_status)
stat("Energy", energy)
/mob/living/simple_mob/animal/sif/frostfly/get_status_tab_items()
. = ..()
. += "Energy: [energy]"
/mob/living/simple_mob/animal/sif/frostfly/should_special_attack(atom/A)
if(energy >= 20)
@@ -526,11 +526,10 @@ var/global/list/wounds_being_tended_by_drakes = list()
else
remove_modifiers_of_type(/datum/modifier/ace)
/mob/living/simple_mob/animal/sif/grafadreka/Stat()
/mob/living/simple_mob/animal/sif/grafadreka/get_status_tab_items()
. = ..()
if(statpanel("Status"))
stat("Nutrition:", "[nutrition]/[max_nutrition]")
stat("Stored sap:", "[stored_sap]/[max_stored_sap]")
. += "Nutrition: [nutrition]/[max_nutrition]"
. += "Stored sap: [stored_sap]/[max_stored_sap]"
/mob/living/simple_mob/animal/sif/grafadreka/proc/can_bite(var/mob/living/M)
return istype(M) && (M.lying || M.confused || M.incapacitated())
@@ -119,18 +119,12 @@
/mob/living/simple_mob/animal/sif/leech/Initialize()
. = ..()
verbs += /mob/living/proc/ventcrawl
verbs += /mob/living/proc/hide
add_verb(src, /mob/living/proc/ventcrawl)
add_verb(src, /mob/living/proc/hide)
/mob/living/simple_mob/animal/sif/leech/Stat()
..()
if(client.statpanel == "Status")
statpanel("Status")
if(emergency_shuttle)
var/eta_status = emergency_shuttle.get_status_panel_eta()
if(eta_status)
stat(null, eta_status)
stat("Chemicals", chemicals)
/mob/living/simple_mob/animal/sif/leech/get_status_tab_items()
. = ..()
. += "Chemicals: [chemicals]"
/mob/living/simple_mob/animal/sif/leech/do_special_attack(atom/A)
. = TRUE
@@ -119,8 +119,8 @@
/mob/living/simple_mob/animal/sif/tymisian/Initialize()
. = ..()
smoke_spore = new
verbs += /mob/living/proc/ventcrawl
verbs += /mob/living/proc/hide
add_verb(src, /mob/living/proc/ventcrawl)
add_verb(src, /mob/living/proc/hide)
/mob/living/simple_mob/animal/sif/tymisian/handle_special()
..()
@@ -128,15 +128,9 @@
if(energy < max_energy)
energy++
/mob/living/simple_mob/animal/sif/tymisian/Stat()
..()
if(client.statpanel == "Status")
statpanel("Status")
if(emergency_shuttle)
var/eta_status = emergency_shuttle.get_status_panel_eta()
if(eta_status)
stat(null, eta_status)
stat("Energy", energy)
/mob/living/simple_mob/animal/sif/tymisian/get_status_tab_items()
. = ..()
. += "Energy: [energy]"
/mob/living/simple_mob/animal/sif/tymisian/should_special_attack(atom/A)
if(energy >= 20)
@@ -153,8 +153,8 @@
/mob/living/simple_mob/animal/sif/sakimm/Initialize()
. = ..()
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(randomize_size)
adjust_scale(rand(8, 11) / 10)
@@ -91,7 +91,7 @@ var/list/_slime_default_emotes = list(
emote_hear = list("squishes")
/mob/living/simple_mob/slime/Initialize()
verbs += /mob/living/proc/ventcrawl
add_verb(src, /mob/living/proc/ventcrawl)
update_mood()
glow_color = color
handle_light()
@@ -240,15 +240,15 @@ I think I covered everything.
. = ..()
if(!riding_datum)
riding_datum = new /datum/riding/simple_mob(src)
verbs |= /mob/living/simple_mob/proc/animal_mount
verbs |= /mob/living/proc/toggle_rider_reins
verbs |= /mob/living/simple_mob/vore/bigdragon/proc/set_style
verbs |= /mob/living/simple_mob/vore/bigdragon/proc/toggle_glow
verbs |= /mob/living/simple_mob/vore/bigdragon/proc/sprite_toggle
verbs |= /mob/living/simple_mob/vore/bigdragon/proc/flame_toggle
verbs |= /mob/living/simple_mob/vore/bigdragon/proc/special_toggle
//verbs |= /mob/living/simple_mob/vore/bigdragon/proc/set_name //Implemented upstream
//verbs |= /mob/living/simple_mob/vore/bigdragon/proc/set_desc //Implemented upstream
add_verb(src, /mob/living/simple_mob/proc/animal_mount)
add_verb(src, /mob/living/proc/toggle_rider_reins)
add_verb(src, /mob/living/simple_mob/vore/bigdragon/proc/set_style)
add_verb(src, /mob/living/simple_mob/vore/bigdragon/proc/toggle_glow)
add_verb(src, /mob/living/simple_mob/vore/bigdragon/proc/sprite_toggle)
add_verb(src, /mob/living/simple_mob/vore/bigdragon/proc/flame_toggle)
add_verb(src, /mob/living/simple_mob/vore/bigdragon/proc/special_toggle)
//add_verb(src, /mob/living/simple_mob/vore/bigdragon/proc/set_name) //Implemented upstream
//add_verb(src, /mob/living/simple_mob/vore/bigdragon/proc/set_desc) //Implemented upstream
faction = FACTION_NEUTRAL
/mob/living/simple_mob/vore/bigdragon/Initialize()
@@ -113,8 +113,8 @@
. = ..()
if(!riding_datum)
riding_datum = new /datum/riding/simple_mob(src)
verbs |= /mob/living/simple_mob/proc/animal_mount
verbs |= /mob/living/proc/toggle_rider_reins
add_verb(src, /mob/living/simple_mob/proc/animal_mount)
add_verb(src, /mob/living/proc/toggle_rider_reins)
movement_cooldown = 0
/mob/living/simple_mob/vore/aggressive/corrupthound/MouseDrop_T(mob/living/M, mob/living/user)
@@ -64,8 +64,8 @@
. = ..()
if(!riding_datum)
riding_datum = new /datum/riding/simple_mob(src)
verbs |= /mob/living/simple_mob/proc/animal_mount
verbs |= /mob/living/proc/toggle_rider_reins
add_verb(src, /mob/living/simple_mob/proc/animal_mount)
add_verb(src, /mob/living/proc/toggle_rider_reins)
movement_cooldown = -1
/mob/living/simple_mob/vore/cryptdrake/init_vore()
@@ -74,8 +74,8 @@
. = ..()
if(!riding_datum)
riding_datum = new /datum/riding/simple_mob(src)
verbs |= /mob/living/simple_mob/proc/animal_mount
verbs |= /mob/living/proc/toggle_rider_reins
add_verb(src, /mob/living/simple_mob/proc/animal_mount)
add_verb(src, /mob/living/proc/toggle_rider_reins)
movement_cooldown = 0
/mob/living/simple_mob/vore/aggressive/deathclaw/MouseDrop_T(mob/living/M, mob/living/user)
@@ -32,7 +32,7 @@
return
. = ..()
lets_register_our_signals()
verbs |= /mob/living/dominated_brain/proc/resist_control
add_verb(src, /mob/living/dominated_brain/proc/resist_control)
/mob/living/dominated_brain/Life()
. = ..()
@@ -114,7 +114,7 @@
prey_goes_here.ooc_notes = prey_ooc_notes
prey_goes_here.ooc_notes_likes = prey_ooc_likes
prey_goes_here.ooc_notes_dislikes = prey_ooc_dislikes
prey_goes_here.verbs |= /mob/living/dominated_brain/proc/cease_this_foolishness
add_verb(prey_goes_here, /mob/living/dominated_brain/proc/cease_this_foolishness)
else //The prey body does not exist, let's put them in the back seat instead!
@@ -134,7 +134,7 @@
///////////////////
// Handle Pred
pred_body.verbs -= /mob/proc/release_predator
remove_verb(pred_body, /mob/proc/release_predator)
//Now actually put the people in the mobs
prey_goes_here.ckey = src.prey_ckey
@@ -166,7 +166,7 @@
langlist -= languages
for(var/datum/language/L in langlist)
if(L.flags & HIVEMIND)
verbs |= /mob/proc/adjust_hive_range
add_verb(src, /mob/proc/adjust_hive_range)
temp_languages |= langlist
languages |= langlist
@@ -259,7 +259,7 @@
pred.ooc_notes_likes = pred_brain.prey_ooc_likes
pred.ooc_notes_dislikes = pred_brain.prey_ooc_dislikes
pred.verbs |= /mob/proc/release_predator
add_verb(pred, /mob/proc/release_predator)
//Now actually put the people in the mobs
pred_brain.ckey = pred_brain.pred_ckey
@@ -286,7 +286,7 @@
else
continue
to_chat(src, span_danger("You haven't been taken over, and shouldn't have this verb. I'll clean that up for you. Report this on the github, it is a bug."))
verbs -= /mob/proc/release_predator
remove_verb(src, /mob/proc/release_predator)
/mob/living/dominated_brain/proc/resist_control()
set category = "Abilities"
@@ -368,7 +368,7 @@
db.ooc_notes_dislikes = M.ooc_notes_dislikes
db.prey_ooc_likes = M.ooc_notes_likes
db.prey_ooc_dislikes = M.ooc_notes_dislikes
db.verbs |= /mob/living/dominated_brain/proc/cease_this_foolishness
add_verb(db, /mob/living/dominated_brain/proc/cease_this_foolishness)
absorb_langs()
@@ -402,7 +402,7 @@
to_chat(src, span_warning("You can sense your body... but it is not contained within [pred_body]... You cannot return to it at this time."))
else
to_chat(src, span_warning("Your body seems to no longer exist, so, you cannot return to it."))
verbs -= /mob/living/dominated_brain/proc/cease_this_foolishness
remove_verb(src, /mob/living/dominated_brain/proc/cease_this_foolishness)
/mob/living/proc/lend_prey_control()
set category = "Abilities"
@@ -489,7 +489,7 @@
pred.ooc_notes_likes = pred_brain.prey_ooc_likes
pred.ooc_notes_dislikes = pred_brain.prey_ooc_dislikes
pred.verbs |= /mob/proc/release_predator
add_verb(pred, /mob/proc/release_predator)
//Now actually put the people in the mobs
pred_brain.ckey = pred_brain.pred_ckey
@@ -105,8 +105,8 @@
. = ..()
if(!riding_datum)
riding_datum = new /datum/riding/simple_mob(src)
verbs |= /mob/living/simple_mob/proc/animal_mount
verbs |= /mob/living/proc/toggle_rider_reins
add_verb(src, /mob/living/simple_mob/proc/animal_mount)
add_verb(src, /mob/living/proc/toggle_rider_reins)
movement_cooldown = 0
/mob/living/simple_mob/vore/aggressive/dragon/MouseDrop_T(mob/living/M, mob/living/user)
@@ -93,8 +93,8 @@
. = ..()
if(!riding_datum)
riding_datum = new /datum/riding/simple_mob(src)
verbs |= /mob/living/simple_mob/proc/animal_mount
verbs |= /mob/living/proc/toggle_rider_reins
add_verb(src, /mob/living/simple_mob/proc/animal_mount)
add_verb(src, /mob/living/proc/toggle_rider_reins)
movement_cooldown = -1.5
/mob/living/simple_mob/vore/greatwolf/MouseDrop_T(mob/living/M, mob/living/user)
@@ -70,8 +70,8 @@
. = ..()
if(!riding_datum)
riding_datum = new /datum/riding/simple_mob(src)
verbs |= /mob/living/simple_mob/proc/animal_mount
verbs |= /mob/living/proc/toggle_rider_reins
add_verb(src, /mob/living/simple_mob/proc/animal_mount)
add_verb(src, /mob/living/proc/toggle_rider_reins)
movement_cooldown = 0
/mob/living/simple_mob/vore/hippo/MouseDrop_T(mob/living/M, mob/living/user)
@@ -72,8 +72,8 @@
. = ..()
if(!riding_datum)
riding_datum = new /datum/riding/simple_mob(src)
verbs |= /mob/living/simple_mob/proc/animal_mount
verbs |= /mob/living/proc/toggle_rider_reins
add_verb(src, /mob/living/simple_mob/proc/animal_mount)
add_verb(src, /mob/living/proc/toggle_rider_reins)
movement_cooldown = -2
/mob/living/simple_mob/vore/horse/MouseDrop_T(mob/living/M, mob/living/user)
@@ -66,8 +66,8 @@
. = ..()
if(!riding_datum)
riding_datum = new /datum/riding/simple_mob(src)
verbs |= /mob/living/simple_mob/proc/animal_mount
verbs |= /mob/living/proc/toggle_rider_reins
add_verb(src, /mob/living/simple_mob/proc/animal_mount)
add_verb(src, /mob/living/proc/toggle_rider_reins)
movement_cooldown = -1
/mob/living/simple_mob/vore/leopardmander/Initialize()
@@ -141,7 +141,7 @@
/mob/living/simple_mob/vore/leopardmander/exotic/New()
..()
verbs |= /mob/living/simple_mob/vore/leopardmander/exotic/proc/toggle_glow
add_verb(src, /mob/living/simple_mob/vore/leopardmander/exotic/proc/toggle_glow)
/mob/living/simple_mob/vore/leopardmander/exotic/init_vore()
. = ..()
@@ -4,4 +4,4 @@
/mob/living/simple_mob/clowns/big/c_shift/New()
..()
verbs += /mob/living/simple_mob/clowns/big/c_shift/proc/phase_shift
add_verb(src, /mob/living/simple_mob/clowns/big/c_shift/proc/phase_shift)
@@ -62,10 +62,10 @@
/obj/effect))
/mob/living/simple_mob/vore/morph/Initialize()
verbs += /mob/living/proc/ventcrawl
verbs += /mob/living/simple_mob/vore/morph/proc/take_over_prey
add_verb(src, /mob/living/proc/ventcrawl)
add_verb(src, /mob/living/simple_mob/vore/morph/proc/take_over_prey)
if(!istype(src, /mob/living/simple_mob/vore/morph/dominated_prey))
verbs += /mob/living/simple_mob/vore/morph/proc/morph_color
add_verb(src, /mob/living/simple_mob/vore/morph/proc/morph_color)
return ..()

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