mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-10 22:54:32 +01:00
VV refactor: dropdown actions. (#29673)
* VV refactor: dropdown actions. * helps if it builds * append to list cuz we have multiple separators * fix datumrefresh * tiny cleanup * fix jump to turf * Apply suggestions from code review Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> Signed-off-by: warriorstar-orion <orion@snowfrost.garden> * Apply suggestions from code review Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> Signed-off-by: warriorstar-orion <orion@snowfrost.garden> * fix typo --------- Signed-off-by: warriorstar-orion <orion@snowfrost.garden> Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com>
This commit is contained in:
committed by
GitHub
parent
ce0a9924ea
commit
6c2aa06eb3
@@ -1454,3 +1454,78 @@ so that different stomachs can handle things in different ways VB*/
|
||||
|
||||
/mob/living/carbon/proc/get_thermal_protection() // Xenos got nothin
|
||||
return 0
|
||||
|
||||
/mob/living/carbon/vv_get_dropdown()
|
||||
. = ..()
|
||||
|
||||
VV_DROPDOWN_OPTION(VV_HK_GIVEMARTIALART, "Give Martial Art")
|
||||
VV_DROPDOWN_OPTION(VV_HK_ADDORGAN, "Add Organ")
|
||||
VV_DROPDOWN_OPTION(VV_HK_REMORGAN, "Remove Organ")
|
||||
|
||||
/mob/living/carbon/vv_do_topic(list/href_list)
|
||||
. = ..()
|
||||
|
||||
if(!.)
|
||||
return
|
||||
|
||||
if(href_list[VV_HK_GIVEMARTIALART])
|
||||
if(!check_rights(R_SERVER|R_EVENT))
|
||||
return
|
||||
|
||||
var/list/artpaths = subtypesof(/datum/martial_art)
|
||||
var/list/artnames = list()
|
||||
for(var/i in artpaths)
|
||||
var/datum/martial_art/M = i
|
||||
artnames[initial(M.name)] = M
|
||||
|
||||
var/result = tgui_input_list(usr, "Choose the martial art to teach", "JUDO CHOP", artnames)
|
||||
if(!usr)
|
||||
return
|
||||
if(QDELETED(src))
|
||||
to_chat(usr, "<span class='notice'>Mob doesn't exist anymore.</span>")
|
||||
return
|
||||
|
||||
if(result)
|
||||
var/chosenart = artnames[result]
|
||||
var/datum/martial_art/MA = new chosenart
|
||||
MA.teach(src)
|
||||
|
||||
href_list["datumrefresh"] = UID()
|
||||
else if(href_list[VV_HK_ADDORGAN])
|
||||
if(!check_rights(R_SPAWN))
|
||||
return
|
||||
|
||||
var/new_organ = tgui_input_list(usr, "Please choose an organ to add.", "Organ", subtypesof(/obj/item/organ))
|
||||
if(!new_organ)
|
||||
return
|
||||
|
||||
if(QDELETED(src))
|
||||
to_chat(usr, "<span class='notice'>Mob doesn't exist anymore.</span>")
|
||||
return
|
||||
|
||||
if(locateUID(new_organ) in internal_organs)
|
||||
to_chat(usr, "<span class='notice'>Mob already has that organ.</span>")
|
||||
return
|
||||
var/obj/item/organ/internal/organ = new new_organ
|
||||
organ.insert(src)
|
||||
message_admins("[key_name_admin(usr)] has given [key_name_admin(src)] the organ [new_organ]")
|
||||
log_admin("[key_name(usr)] has given [key_name(src)] the organ [new_organ]")
|
||||
|
||||
else if(href_list[VV_HK_REMORGAN])
|
||||
if(!check_rights(R_SPAWN)) return
|
||||
|
||||
var/obj/item/organ/internal/rem_organ = tgui_input_list(usr, "Please choose an organ to remove.", "Organ", internal_organs)
|
||||
|
||||
if(QDELETED(src))
|
||||
to_chat(usr, "<span class='notice'>Mob doesn't exist anymore.</span>")
|
||||
return
|
||||
|
||||
if(!(rem_organ in internal_organs))
|
||||
to_chat(usr, "<span class='notice'>Mob does not have that organ.</span>")
|
||||
return
|
||||
|
||||
to_chat(usr, "<span class='notice'>Removed [rem_organ] from [src].</span>")
|
||||
rem_organ.remove(src)
|
||||
message_admins("[key_name_admin(usr)] has removed the organ [rem_organ] from [key_name_admin(src)]")
|
||||
log_admin("[key_name(usr)] has removed the organ [rem_organ] from [key_name(src)]")
|
||||
qdel(rem_organ)
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
/mob/living/carbon/human/vv_get_dropdown()
|
||||
. = ..()
|
||||
|
||||
VV_DROPDOWN_OPTION(VV_HK_MAKE_SKELETON, "Make 2spooky")
|
||||
VV_DROPDOWN_OPTION(VV_HK_HALLUCINATE, "Hallucinate")
|
||||
|
||||
/mob/living/carbon/human/vv_do_topic(list/href_list)
|
||||
. = ..()
|
||||
|
||||
if(!.)
|
||||
return
|
||||
|
||||
if(href_list[VV_HK_MAKE_SKELETON])
|
||||
if(!check_rights(R_SERVER|R_EVENT))
|
||||
return
|
||||
|
||||
if(tgui_alert(usr, "Are you sure you want to turn this mob into a skeleton?", "Confirm Skeleton Transformation", list("Yes", "No")) != "Yes")
|
||||
return
|
||||
|
||||
makeSkeleton()
|
||||
message_admins("[key_name(usr)] has turned [key_name(src)] into a skeleton")
|
||||
log_admin("[key_name_admin(usr)] has turned [key_name_admin(src)] into a skeleton")
|
||||
href_list["datumrefresh"] = UID()
|
||||
|
||||
if(href_list[VV_HK_HALLUCINATE])
|
||||
if(!check_rights(R_SERVER | R_EVENT))
|
||||
return
|
||||
|
||||
var/haltype = tgui_input_list(usr, "Select Hallucination Type", "Hallucinate", (subtypesof(/obj/effect/hallucination) + subtypesof(/datum/hallucination_manager)))
|
||||
if(!haltype)
|
||||
return
|
||||
invoke_hallucination(haltype)
|
||||
message_admins("[key_name(usr)] has given [key_name(src)] the [haltype] hallucination")
|
||||
log_admin("[key_name_admin(usr)] has given [key_name_admin(src)] the [haltype] hallucination")
|
||||
href_list["datumrefresh"] = UID()
|
||||
@@ -1152,6 +1152,68 @@
|
||||
if(A.light_range > 0)
|
||||
A.extinguish_light(force)
|
||||
|
||||
/mob/living/vv_get_header()
|
||||
. = ..()
|
||||
. += {"
|
||||
<br><font size='1'>
|
||||
BRUTE:<font size='1'><a href='byond://?_src_=vars;[VV_HK_TARGET]=[UID()];adjustDamage=brute'>[getBruteLoss()]</a>
|
||||
FIRE:<font size='1'><a href='byond://?_src_=vars;[VV_HK_TARGET]=[UID()];adjustDamage=fire'>[getFireLoss()]</a>
|
||||
TOXIN:<font size='1'><a href='byond://?_src_=vars;[VV_HK_TARGET]=[UID()];adjustDamage=toxin'>[getToxLoss()]</a>
|
||||
OXY:<font size='1'><a href='byond://?_src_=vars;[VV_HK_TARGET]=[UID()];adjustDamage=oxygen'>[getOxyLoss()]</a>
|
||||
CLONE:<font size='1'><a href='byond://?_src_=vars;[VV_HK_TARGET]=[UID()];adjustDamage=clone'>[getCloneLoss()]</a>
|
||||
BRAIN:<font size='1'><a href='byond://?_src_=vars;[VV_HK_TARGET]=[UID()];adjustDamage=brain'>[getBrainLoss()]</a>
|
||||
STAMINA:<font size='1'><a href='byond://?_src_=vars;[VV_HK_TARGET]=[UID()];adjustDamage=stamina'>[getStaminaLoss()]</a>
|
||||
</font>
|
||||
"}
|
||||
|
||||
/mob/living/vv_do_topic(list/href_list)
|
||||
. = ..()
|
||||
|
||||
if(!.)
|
||||
return
|
||||
|
||||
if(href_list["adjustDamage"])
|
||||
if(!check_rights(R_DEBUG|R_ADMIN|R_EVENT)) return
|
||||
|
||||
var/Text = href_list["adjustDamage"]
|
||||
var/amount = tgui_input_number(usr, "Deal how much damage to mob? (Negative values here heal)", "Adjust [Text]loss")
|
||||
|
||||
if(QDELETED(src))
|
||||
to_chat(usr, "<span class='notice'>Mob doesn't exist anymore.</span>")
|
||||
return
|
||||
|
||||
switch(Text)
|
||||
if("brute")
|
||||
if(ishuman(src))
|
||||
var/mob/living/carbon/human/H = src
|
||||
H.adjustBruteLoss(amount, robotic = TRUE)
|
||||
else
|
||||
adjustBruteLoss(amount)
|
||||
if("fire")
|
||||
if(ishuman(src))
|
||||
var/mob/living/carbon/human/H = src
|
||||
H.adjustFireLoss(amount, robotic = TRUE)
|
||||
else
|
||||
adjustFireLoss(amount)
|
||||
if("toxin")
|
||||
adjustToxLoss(amount)
|
||||
if("oxygen")
|
||||
adjustOxyLoss(amount)
|
||||
if("brain")
|
||||
adjustBrainLoss(amount)
|
||||
if("clone")
|
||||
adjustCloneLoss(amount)
|
||||
if("stamina")
|
||||
adjustStaminaLoss(amount)
|
||||
else
|
||||
to_chat(usr, "<span class='notice'>You caused an error. DEBUG: Text:[Text] Mob:[src]</span>")
|
||||
return
|
||||
|
||||
if(amount != 0)
|
||||
log_admin("[key_name(usr)] dealt [amount] amount of [Text] damage to [src]")
|
||||
message_admins("[key_name_admin(usr)] dealt [amount] amount of [Text] damage to [src]")
|
||||
href_list["datumrefresh"] = UID()
|
||||
|
||||
/mob/living/vv_edit_var(var_name, var_value)
|
||||
switch(var_name)
|
||||
if("stat")
|
||||
|
||||
@@ -1294,34 +1294,6 @@ GLOBAL_LIST_INIT(slot_equipment_priority, list( \
|
||||
|
||||
target += new_log
|
||||
|
||||
/mob/vv_get_dropdown()
|
||||
. = ..()
|
||||
.["Show player panel"] = "byond://?_src_=vars;mob_player_panel=[UID()]"
|
||||
|
||||
.["Give Spell"] = "byond://?_src_=vars;give_spell=[UID()]"
|
||||
.["Give Martial Art"] = "byond://?_src_=vars;givemartialart=[UID()]"
|
||||
.["Give Disease"] = "byond://?_src_=vars;give_disease=[UID()]"
|
||||
.["Toggle Godmode"] = "byond://?_src_=vars;godmode=[UID()]"
|
||||
.["Toggle Build Mode"] = "byond://?_src_=vars;build_mode=[UID()]"
|
||||
|
||||
.["Make 2spooky"] = "byond://?_src_=vars;make_skeleton=[UID()]"
|
||||
.["Hallucinate"] = "byond://?_src_=vars;hallucinate=[UID()]"
|
||||
|
||||
.["Assume Direct Control"] = "byond://?_src_=vars;direct_control=[UID()]"
|
||||
.["Offer Control to Ghosts"] = "byond://?_src_=vars;offer_control=[UID()]"
|
||||
.["Drop Everything"] = "byond://?_src_=vars;drop_everything=[UID()]"
|
||||
|
||||
.["Regenerate Icons"] = "byond://?_src_=vars;regenerateicons=[UID()]"
|
||||
.["Add Language"] = "byond://?_src_=vars;addlanguage=[UID()]"
|
||||
.["Remove Language"] = "byond://?_src_=vars;remlanguage=[UID()]"
|
||||
.["Add Organ"] = "byond://?_src_=vars;addorgan=[UID()]"
|
||||
.["Remove Organ"] = "byond://?_src_=vars;remorgan=[UID()]"
|
||||
|
||||
.["Add Verb"] = "byond://?_src_=vars;addverb=[UID()]"
|
||||
.["Remove Verb"] = "byond://?_src_=vars;remverb=[UID()]"
|
||||
|
||||
.["Gib"] = "byond://?_src_=vars;gib=[UID()]"
|
||||
|
||||
///Can this mob resist (default FALSE)
|
||||
/mob/proc/can_resist()
|
||||
return FALSE //overridden in living.dm
|
||||
|
||||
@@ -0,0 +1,180 @@
|
||||
/mob/vv_get_header()
|
||||
. = ..()
|
||||
. += "<br><font size='1'><a href='byond://?_src_=vars;datumedit=[UID()];varnameedit=ckey'>[ckey ? ckey : "No ckey"]</a> / <a href='byond://?_src_=vars;rename=TRUE;[VV_HK_TARGET]=[UID()]'>[real_name ? real_name : "No real name"]</a></font>"
|
||||
|
||||
/mob/vv_get_dropdown()
|
||||
. = ..()
|
||||
|
||||
VV_DROPDOWN_OPTION(VV_HK_MOB_PLAYER_PANEL, "Show player panel")
|
||||
VV_DROPDOWN_OPTION(VV_HK_GIVE_SPELL, "Give Spell")
|
||||
VV_DROPDOWN_OPTION(VV_HK_GIVE_DISEASE, "Give Disease")
|
||||
VV_DROPDOWN_OPTION(VV_HK_GODMODE, "Toggle Godmode")
|
||||
VV_DROPDOWN_OPTION(VV_HK_BUILD_MODE, "Toggle Build Mode")
|
||||
VV_DROPDOWN_OPTION(VV_HK_DIRECT_CONTROL, "Assume Direct Control")
|
||||
VV_DROPDOWN_OPTION(VV_HK_OFFER_CONTROL, "Offer Control to Ghosts")
|
||||
VV_DROPDOWN_OPTION(VV_HK_DROP_EVERYTHING, "Drop Everything")
|
||||
VV_DROPDOWN_OPTION(VV_HK_REGENERATEICONS, "Regenerate Icons")
|
||||
VV_DROPDOWN_OPTION(VV_HK_ADDLANGUAGE, "Add Language")
|
||||
VV_DROPDOWN_OPTION(VV_HK_REMLANGUAGE, "Remove Language")
|
||||
VV_DROPDOWN_OPTION(VV_HK_ADDVERB, "Add Verb")
|
||||
VV_DROPDOWN_OPTION(VV_HK_REMVERB, "Remove Verb")
|
||||
VV_DROPDOWN_OPTION(VV_HK_GIB, "Gib")
|
||||
|
||||
/mob/vv_do_topic(list/href_list)
|
||||
. = ..()
|
||||
|
||||
if(!.)
|
||||
return
|
||||
|
||||
//~CARN: for renaming mobs (updates their name, real_name, mind.name, their ID/PDA and datacore records).
|
||||
if(href_list["rename"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
|
||||
var/new_name = reject_bad_name(sanitize(copytext_char(input(usr, "What would you like to name this mob?", "Input a name", real_name) as text|null, 1, MAX_NAME_LEN)), allow_numbers = TRUE)
|
||||
if(!new_name || QDELETED(src))
|
||||
return
|
||||
|
||||
message_admins("Admin [key_name_admin(usr)] renamed [key_name_admin(src)] to [new_name].")
|
||||
rename_character(real_name, new_name)
|
||||
href_list["datumrefresh"] = UID()
|
||||
if(href_list[VV_HK_MOB_PLAYER_PANEL])
|
||||
if(!check_rights(R_ADMIN|R_MOD))
|
||||
return
|
||||
|
||||
usr.client.holder.show_player_panel(src)
|
||||
href_list["datumrefresh"] = UID()
|
||||
if(href_list[VV_HK_GIVE_SPELL])
|
||||
if(!check_rights(R_SERVER|R_EVENT))
|
||||
return
|
||||
|
||||
usr.client.give_spell(src)
|
||||
href_list["datumrefresh"] = UID()
|
||||
if(href_list[VV_HK_GIVE_DISEASE])
|
||||
if(!check_rights(R_SERVER|R_EVENT))
|
||||
return
|
||||
|
||||
usr.client.give_disease(src)
|
||||
href_list["datumrefresh"] = UID()
|
||||
if(href_list[VV_HK_GODMODE])
|
||||
if(!check_rights(R_EVENT))
|
||||
return
|
||||
|
||||
usr.client.cmd_admin_godmode(src)
|
||||
href_list["datumrefresh"] = UID()
|
||||
if(href_list[VV_HK_GIB])
|
||||
if(!check_rights(R_ADMIN|R_EVENT))
|
||||
return
|
||||
|
||||
usr.client.cmd_admin_gib(src)
|
||||
if(href_list[VV_HK_BUILD_MODE])
|
||||
if(!check_rights(R_BUILDMODE))
|
||||
return
|
||||
|
||||
togglebuildmode(src)
|
||||
href_list["datumrefresh"] = UID()
|
||||
if(href_list[VV_HK_DROP_EVERYTHING])
|
||||
if(!check_rights(R_DEBUG|R_ADMIN))
|
||||
return
|
||||
|
||||
if(usr.client)
|
||||
usr.client.cmd_admin_drop_everything(src)
|
||||
if(href_list[VV_HK_DIRECT_CONTROL])
|
||||
if(!check_rights(R_DEBUG|R_ADMIN))
|
||||
return
|
||||
|
||||
if(usr.client)
|
||||
usr.client.cmd_assume_direct_control(src)
|
||||
if(href_list[VV_HK_OFFER_CONTROL])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
|
||||
offer_control(src)
|
||||
if(href_list[VV_HK_REGENERATEICONS])
|
||||
if(!check_rights(0))
|
||||
return
|
||||
|
||||
regenerate_icons()
|
||||
if(href_list[VV_HK_ADDLANGUAGE])
|
||||
if(!check_rights(R_SPAWN))
|
||||
return
|
||||
|
||||
var/new_language = tgui_input_list(usr, "Please choose a language to add.", "Language", GLOB.all_languages)
|
||||
|
||||
if(!new_language)
|
||||
return
|
||||
|
||||
if(QDELETED(src))
|
||||
to_chat(usr, "<span class='notice'>Mob doesn't exist anymore.</span>")
|
||||
return
|
||||
|
||||
if(add_language(new_language, TRUE))
|
||||
to_chat(usr, "<span class='notice'>Added [new_language] to [src].</span>")
|
||||
message_admins("[key_name_admin(usr)] has given [key_name_admin(src)] the language [new_language]")
|
||||
log_admin("[key_name(usr)] has given [key_name(src)] the language [new_language]")
|
||||
else
|
||||
to_chat(usr, "<span class='notice'>Mob already knows that language.</span>")
|
||||
if(href_list[VV_HK_REMLANGUAGE])
|
||||
if(!check_rights(R_SPAWN))
|
||||
return
|
||||
|
||||
if(!length(languages))
|
||||
to_chat(usr, "<span class='notice'>This mob knows no languages.</span>")
|
||||
return
|
||||
|
||||
var/datum/language/rem_language = tgui_input_list(usr, "Please choose a language to remove.", "Language", src.languages)
|
||||
|
||||
if(!rem_language)
|
||||
return
|
||||
|
||||
if(QDELETED(src))
|
||||
to_chat(usr, "<span class='notice'>Mob doesn't exist anymore.</span>")
|
||||
return
|
||||
|
||||
if(remove_language(rem_language.name, TRUE))
|
||||
to_chat(usr, "<span class='notice'>Removed [rem_language] from [src].</span>")
|
||||
message_admins("[key_name_admin(usr)] has removed language [rem_language] from [key_name_admin(src)]")
|
||||
log_admin("[key_name(usr)] has removed language [rem_language] from [key_name(src)]")
|
||||
else
|
||||
to_chat(usr, "<span class='notice'>Mob doesn't know that language.</span>")
|
||||
if(href_list[VV_HK_ADDVERB])
|
||||
if(!check_rights(R_DEBUG))
|
||||
return
|
||||
|
||||
var/list/possibleverbs = list()
|
||||
possibleverbs += "Cancel" // One for the top...
|
||||
possibleverbs += typesof(/mob/proc, /mob/verb, /mob/living/proc, /mob/living/verb)
|
||||
switch(type) // Horrid
|
||||
if(/mob/living/carbon/human)
|
||||
possibleverbs += typesof(/mob/living/carbon/proc, /mob/living/carbon/verb, /mob/living/carbon/human/verb, /mob/living/carbon/human/proc)
|
||||
if(/mob/living/silicon/robot)
|
||||
possibleverbs += typesof(/mob/living/silicon/proc, /mob/living/silicon/robot/proc, /mob/living/silicon/robot/verb)
|
||||
if(/mob/living/silicon/ai)
|
||||
possibleverbs += typesof(/mob/living/silicon/proc, /mob/living/silicon/ai/proc, /mob/living/silicon/ai/verb)
|
||||
possibleverbs -= verbs
|
||||
possibleverbs += "Cancel" // ...And one for the bottom
|
||||
|
||||
var/verb = input("Select a verb!", "Verbs",null) as anything in possibleverbs
|
||||
if(QDELETED(src))
|
||||
to_chat(usr, "<span class='notice'>Mob doesn't exist anymore.</span>")
|
||||
return
|
||||
if(!verb || verb == "Cancel")
|
||||
return
|
||||
else
|
||||
add_verb(src, verb)
|
||||
message_admins("[key_name_admin(usr)] has given [key_name_admin(src)] the verb [verb]")
|
||||
log_admin("[key_name(usr)] has given [key_name(src)] the verb [verb]")
|
||||
if(href_list[VV_HK_REMVERB])
|
||||
if(!check_rights(R_DEBUG))
|
||||
return
|
||||
|
||||
var/verb = tgui_input_list(usr, "Please choose a verb to remove.", "Verbs", src.verbs)
|
||||
if(QDELETED(src))
|
||||
to_chat(usr, "<span class='notice'>Mob doesn't exist anymore.</span>")
|
||||
return
|
||||
if(!verb)
|
||||
return
|
||||
else
|
||||
remove_verb(src, verb)
|
||||
message_admins("[key_name_admin(usr)] has removed verb [verb] from [key_name_admin(src)]")
|
||||
log_admin("[key_name(usr)] has removed verb [verb] from [key_name(src)]")
|
||||
Reference in New Issue
Block a user