mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-08-28 06:28:01 +01:00
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:
co-authored by
Kashargul
parent
ed5fc193f7
commit
c07027136e
@@ -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
|
||||
)
|
||||
))
|
||||
|
||||
@@ -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
|
||||
)
|
||||
))
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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//////////////
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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!
|
||||
|
||||
|
||||
@@ -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!
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)] "
|
||||
|
||||
/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
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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( \
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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))
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
+24
-14
@@ -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
|
||||
|
||||
|
||||
+4
-4
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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())
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
Reference in New Issue
Block a user