diff --git a/code/modules/admin/admin.dm b/code/modules/admin/admin.dm index 81c9f081852..73e4866a838 100644 --- a/code/modules/admin/admin.dm +++ b/code/modules/admin/admin.dm @@ -1898,6 +1898,20 @@ dat += "" usr << browse(dat, "window=adminplayerinfo;size=480x480") +/obj/admins/proc/show_skills(var/mob/living/carbon/human/M as mob in world) + set category = "Admin" + set name = "Show Skills" + + if (!istype(src,/obj/admins)) + src = usr.client.holder + if (!istype(src,/obj/admins)) + usr << "Error: you are not an admin!" + return + + show_skill_window(usr, M) + + return + /obj/admins/proc/Jobbans() if ((src.rank in list( "Game Admin", "Game Master" ))) var/dat = "Job Bans!
" diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 663a015f8c6..22049a61a38 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -267,6 +267,7 @@ verbs += /client/proc/unban_panel verbs += /client/proc/jobbans verbs += /client/proc/playernotes + verbs += /obj/admins/proc/show_skills verbs += /obj/admins/proc/vmode verbs += /obj/admins/proc/votekill verbs += /client/proc/voting @@ -394,6 +395,7 @@ verbs -= /client/proc/unban_panel verbs -= /client/proc/jobbans verbs -= /client/proc/playernotes + verbs -= /obj/admins/proc/show_skills verbs -= /obj/admins/proc/vmode verbs -= /obj/admins/proc/votekill verbs -= /client/proc/voting diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index bf14fcf3de3..d0dc91c830e 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -22,7 +22,7 @@ var/s_tone = 0.0 var/age = 30.0 var/used_skillpoints = 0 - var/skills = null + var/list/skills = null // var/b_type var/obj/item/clothing/suit/wear_suit = null @@ -2642,4 +2642,4 @@ It can still be worn/put on as normal. /mob/living/carbon/human/proc/check_dna() dna.check_integrity(src) - return + return diff --git a/code/modules/mob/new_player/preferences.dm b/code/modules/mob/new_player/preferences.dm index 594050b0a18..ba6b5dd97d8 100644 --- a/code/modules/mob/new_player/preferences.dm +++ b/code/modules/mob/new_player/preferences.dm @@ -153,14 +153,7 @@ datum/preferences proc/SetSkills(mob/user) if(SKILLS == null) - SKILLS = list() - for(var/T in (typesof(/datum/skill)-/datum/skill)) - var/datum/skill/S = new T - if(S.ID != "none") - if(!SKILLS.Find(S.field)) - SKILLS[S.field] = list() - var/list/L = SKILLS[S.field] - L += S + setup_skills() if(skills.len == 0) ZeroSkills() diff --git a/code/modules/mob/new_player/skill.dm b/code/modules/mob/new_player/skill.dm index 3cf50268596..8cbfec6fe7d 100644 --- a/code/modules/mob/new_player/skill.dm +++ b/code/modules/mob/new_player/skill.dm @@ -156,3 +156,74 @@ datum/attribute/var desc = "This is a placeholder" +proc/setup_skills() + if(SKILLS == null) + SKILLS = list() + for(var/T in (typesof(/datum/skill)-/datum/skill)) + var/datum/skill/S = new T + if(S.ID != "none") + if(!SKILLS.Find(S.field)) + SKILLS[S.field] = list() + var/list/L = SKILLS[S.field] + L += S + + +mob/living/carbon/human/proc/GetSkillClass(points) + // skill classes describe how your character compares in total points + switch(points) + if(0) + return "Unconfigured" + if(1 to 3) + return "Talentless" + if(4 to 6) + return "Below Average" + if(7 to 9) + return "Average" + if(10 to 12) + return "Talented" + if(13 to 15) + return "Extremely Talented" + if(16 to 18) + return "Genius" + if(19 to 21) + return "True Genius" + if(22 to 1000) + return "God" + + +proc/show_skill_window(var/mob/user, var/mob/living/carbon/human/M) + if(!istype(M)) return + if(SKILLS == null) + setup_skills() + + if(!M.skills || M.skills.len == 0) + user << "There are no skills to display." + return + + var/HTML = "" + HTML += "Select your Skills
" + HTML += "Current skill level: [M.GetSkillClass(M.used_skillpoints)] ([M.used_skillpoints])
" + HTML += "Use preconfigured skillset
" + HTML += "
" + for(var/V in SKILLS) + HTML += "" + for(var/datum/skill/S in SKILLS[V]) + var/level = M.skills[S.ID] + HTML += "" + HTML += "" + HTML += "" + HTML += "" + HTML += "" + HTML += "" + HTML += "" + HTML += "
[V]
[S.name]\[None\]\[Basic\]\[Adept\]\[Expert\]
" + + user << browse(null, "window=show_skills") + user << browse(HTML, "window=show_skills;size=600x800") + return + +mob/living/carbon/human/verb/show_skills() + set category = "IC" + set name = "Show Own Skills" + + show_skill_window(src, src) \ No newline at end of file