From 1097cc8e7c2889914c024d43a7a85cc1bd835ade Mon Sep 17 00:00:00 2001 From: cib Date: Fri, 2 Mar 2012 14:44:47 -0800 Subject: [PATCH 1/5] Added skill field specialization. --- code/modules/mob/living/carbon/human/human.dm | 1 + code/modules/mob/new_player/preferences.dm | 44 ++++++++++++++----- code/modules/mob/new_player/savefile.dm | 2 + code/modules/mob/new_player/skill.dm | 22 +++++----- 4 files changed, 48 insertions(+), 21 deletions(-) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index d0dc91c830e..19d3fe0f3ba 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -22,6 +22,7 @@ var/s_tone = 0.0 var/age = 30.0 var/used_skillpoints = 0 + var/skill_specialization = null var/list/skills = null // var/b_type diff --git a/code/modules/mob/new_player/preferences.dm b/code/modules/mob/new_player/preferences.dm index ba6b5dd97d8..09b86aab34a 100644 --- a/code/modules/mob/new_player/preferences.dm +++ b/code/modules/mob/new_player/preferences.dm @@ -116,6 +116,7 @@ datum/preferences disabilities = 0 used_skillpoints = 0 + skill_specialization = null list/skills = list() // skills can range from 0 to 3 New() @@ -129,6 +130,22 @@ datum/preferences if(!skills.Find(S.ID) || forced) skills[S.ID] = SKILL_NONE + proc/CalculateSkillPoints() + used_skillpoints = 0 + for(var/V in SKILLS) for(var/datum/skill/S in SKILLS[V]) + var/multiplier = 2 + if(skill_specialization == S.field || S.field == "Misc") + multiplier = 1 + switch(skills[S.ID]) + if(SKILL_NONE) + used_skillpoints += 0 * multiplier + if(SKILL_BASIC) + used_skillpoints += 1 * multiplier + if(SKILL_ADEPT) + used_skillpoints += 3 * multiplier + if(SKILL_EXPERT) + used_skillpoints += 8 * multiplier + proc/GetSkillClass(points) // skill classes describe how your character compares in total points switch(points) @@ -136,19 +153,19 @@ datum/preferences return "Unconfigured" if(1 to 3) return "Talentless" - if(4 to 6) + if(3 to 6) return "Below Average" - if(7 to 9) + if(7 to 10) return "Average" - if(10 to 12) + if(11 to 12) return "Talented" if(13 to 15) return "Extremely Talented" if(16 to 18) return "Genius" - if(19 to 21) + if(19 to 20) return "True Genius" - if(22 to 1000) + if(21 to 1000) return "God" proc/SetSkills(mob/user) @@ -165,7 +182,8 @@ datum/preferences HTML += "Use preconfigured skillset
" HTML += "" for(var/V in SKILLS) - HTML += "" + HTML += "" for(var/datum/skill/S in SKILLS[V]) var/level = skills[S.ID] HTML += "" @@ -507,9 +525,8 @@ datum/preferences else if(link_tags["setskill"]) var/datum/skill/S = locate(link_tags["setskill"]) var/value = text2num(link_tags["newvalue"]) - var/current_value = skills[S.ID] - used_skillpoints += value - current_value skills[S.ID] = value + CalculateSkillPoints() SetSkills(user) else if(link_tags["preconfigured"]) var/selected = input(user, "Select a skillset", "Skillset") as null|anything in SKILL_PRE @@ -517,10 +534,16 @@ datum/preferences ZeroSkills(1) for(var/V in SKILL_PRE[selected]) + if(V == "field") + skill_specialization = SKILL_PRE[selected]["field"] + continue skills[V] = SKILL_PRE[selected][V] - used_skillpoints = 0 - for(var/V in skills) used_skillpoints += skills[V] + CalculateSkillPoints() + SetSkills(user) + else if(link_tags["setspecialization"]) + skill_specialization = link_tags["setspecialization"] + CalculateSkillPoints() SetSkills(user) else SetSkills(user) @@ -869,6 +892,7 @@ datum/preferences character.underwear = underwear == 1 ? pick(1,2,3,4,5) : 0 character.used_skillpoints = used_skillpoints + character.skill_specialization = skill_specialization character.skills = skills character.update_face() diff --git a/code/modules/mob/new_player/savefile.dm b/code/modules/mob/new_player/savefile.dm index 15e0a018c57..f5656d8fba2 100644 --- a/code/modules/mob/new_player/savefile.dm +++ b/code/modules/mob/new_player/savefile.dm @@ -143,6 +143,7 @@ datum/preferences/proc/savefile_save(mob/user, slot) F["used_skillpoints"] << src.used_skillpoints F["skills"] << src.skills + F["skill_specialization"] << src.skill_specialization return 1 @@ -217,6 +218,7 @@ datum/preferences/proc/savefile_load(mob/user, slot) F["used_skillpoints"] >> src.used_skillpoints F["skills"] >> src.skills + F["skill_specialization"] >> src.skill_specialization if(!src.skills) src.skills = list() if(!src.used_skillpoints) src.used_skillpoints= 0 diff --git a/code/modules/mob/new_player/skill.dm b/code/modules/mob/new_player/skill.dm index 8cbfec6fe7d..fafdf41eba5 100644 --- a/code/modules/mob/new_player/skill.dm +++ b/code/modules/mob/new_player/skill.dm @@ -1,8 +1,8 @@ var/global/const SKILL_NONE = 0 SKILL_BASIC = 1 - SKILL_ADEPT = 3 - SKILL_EXPERT = 6 + SKILL_ADEPT = 2 + SKILL_EXPERT = 3 datum/skill/var ID = "none" // ID of the skill, used in code @@ -11,10 +11,10 @@ datum/skill/var field = "Misc" // the field under which the skill will be listed var/global/list/SKILLS = null -var/list/SKILL_ENGINEER = list("EVA" = SKILL_BASIC, "construction" = SKILL_ADEPT, "electrical" = SKILL_BASIC, "engines" = SKILL_ADEPT) -var/list/SKILL_ROBOTICIST = list("devices" = SKILL_ADEPT, "electrical" = SKILL_BASIC, "computer" = SKILL_ADEPT, "anatomy" = SKILL_BASIC) -var/list/SKILL_SECURITY_OFFICER = list("combat" = SKILL_BASIC, "weapons" = SKILL_ADEPT, "law" = SKILL_ADEPT, "forensics" = SKILL_BASIC) -var/list/SKILL_CHEMIST = list("chemistry" = SKILL_ADEPT, "science" = SKILL_ADEPT, "medical" = SKILL_BASIC, "devices" = SKILL_BASIC) +var/list/SKILL_ENGINEER = list("field" = "Engineering", "EVA" = SKILL_BASIC, "construction" = SKILL_ADEPT, "electrical" = SKILL_BASIC, "engines" = SKILL_ADEPT) +var/list/SKILL_ROBOTICIST = list("field" = "Science", "devices" = SKILL_ADEPT, "electrical" = SKILL_BASIC, "computer" = SKILL_ADEPT, "anatomy" = SKILL_BASIC) +var/list/SKILL_SECURITY_OFFICER = list("field" = "Security", "combat" = SKILL_BASIC, "weapons" = SKILL_ADEPT, "law" = SKILL_ADEPT, "forensics" = SKILL_BASIC) +var/list/SKILL_CHEMIST = list("field" = "Science", "chemistry" = SKILL_ADEPT, "science" = SKILL_ADEPT, "medical" = SKILL_BASIC, "devices" = SKILL_BASIC) var/global/list/SKILL_PRE = list("Engineer" = SKILL_ENGINEER, "Roboticist" = SKILL_ROBOTICIST, "Security Officer" = SKILL_SECURITY_OFFICER, "Chemist" = SKILL_CHEMIST) datum/skill/management @@ -106,24 +106,24 @@ datum/skill/pilot datum/skill/medical ID = "medical" - name = "Medical" + name = "Medicine" desc = "Covers an understanding of the human body and medicine. At a low level, this skill is vital to perform basic first aid, such as CPR or applying bandages. At a high level, this skill implies a good understanding of the various medicines that can be found on a space station." - field = "Science" + field = "Medical" datum/skill/anatomy ID = "anatomy" name = "Anatomy" desc = "Gives you a detailed insight of the human body. A high skill in this is required to perform surgery.This skill may also help in examining alien biology." - field = "Science" + field = "Medical" datum/skill/virology ID = "virology" name = "Virology" desc = "This skill implies an understanding of microorganisms and their effects on humans." - field = "Science" + field = "Medical" datum/skill/genetics - ID = "genaetics" + ID = "genetics" name = "Genetics" desc = "Implies an understanding of how DNA works and the structure of the human DNA." field = "Science" From af5e5d933e6b8ab777bee5c798bf4d6d5e44ff43 Mon Sep 17 00:00:00 2001 From: Ren Erthilo Date: Sat, 3 Mar 2012 15:15:11 +0000 Subject: [PATCH 2/5] Hacky quickfix for invisible jetpacks. --- icons/obj/tank.dmi | Bin 2398 -> 2554 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/obj/tank.dmi b/icons/obj/tank.dmi index bc523dd9d20d7966cf878b32aabf126abf3f1beb..e3841ad07643619dba62bf8ba488b08508742687 100644 GIT binary patch delta 2113 zcmV-H2)_5;68aO67Y?8Z0{{R3yb+fl0005Ju_Z+TlW+lJEkMWa!bPMTnhF(q1SpyS z0sjX&Iy%6>z`Oq*yZ`_I0d!JMQvg8b*k%9#0Q8gh0Um#iZizwEr5l4WF7yhd(gCWa zkaqmx_Et%h1=zZqnY`Cb`=wL5+3xm7njH4z2HJ>P(KTJpA`;vM$I>>7m;@z=qQtH- z$PjEfsUK|tYC-}ow6TLZ33AOU=;{x~6c{W4Mdm~s$xOwZ*cq^4*~OQOe8KrJXz$NK zvi3C&dlr9GpzQ->t@Hd3nSv_BA2_eCCkcNDXwXS_xuv-`sGVfSlrRWx@Ky`%8()ug zN7#eiF|NYZ*E~t_hxc(0&6HD^){@XOhWhyV?zg0CuK8K*)9o5cs-#dU~H@ z2w;C_DxJw>Qk_f!aR2koM`3)Iuec3HV;j9`b+XD_F`gl+bRr2%-RSpC!gh!T1jL`}0|h zBaU(ipnMlY|CYvO`8Xg@6&jjoBD9<3D?9~=`qua>mqp_b;R8VXr*O;`@FD=mPtbsf z@2r2NlL%jDimG3ui;p=4Jk|_&>U27N`jn9`8un2rKjF@gmtIEr(kY4$0Nu(>aQS}$ zIu$x2sGzT(5X|3BYwaWWIG{cBU?fhAP=HV&642M*L-PS3+~3kEoX-NZYBw^006KHi zD7pY<2)`@YL#)phAl%>5DU@#uAXdSm7oZrz@9OO#>StHb|NgcWuwYk^LlRwF6m+q_ z-_@HW_}qs;+^>(p0zQkKjx!8%@D+bzp+@{J5YfK%7)|+&6%btqt%s<5(KL&B{Beu& zm6R)Z)qJmGMKf;$qB)hw5 zz{yD*(DKkz6!W{-07d!T>zLniK&AXH4#0r<9a`bI0HyM~H~^LMyC?wL#<%@6`AYd+ z6oA|L#+y%2%I_io3^)d5^SggKpy*B_4;W2;mq?IL3rc`-WSu7cLyD zhXOz zefBxcMp$3BWAQu&sR}C@E^}E&QN??W--1{2atdKy3a5=+NVLtRos6(3nKn9 zEYz#@TitDGK%{?*;X!dXb(zQq($dn}IYse)aVxdi(Xr`03gdH$@;McMv%@r@UDI@rLi${yeD3PC zC+pXr68@8G>rbyE{wCj-w&f$NZ#5vu=ahWA+58`W<|%)`{9k_~K9?w;Q}XR*`Tj!+ z5cj!6`J9p;MHh?mIVIn2mj9oF0>phTQ9h^SI{?Q|(10h76M({ePQ{O8f1)U#Q}LY& zoe@>=3{^o({zP1=`JM9n#{#M5 zcR}(!@%}`LPc6R-lJ7C``^N;JVz?6|`~lT!YJl?jo#P)lO5}UMm&wQys^)h=@;%Nc zO&CiT*D?bGYJl?jU66b)3P9=nPISEs*e?sHn%{8+%J%>;t5`wl{7!Ve4cMQ}X4L?t z^SeO#oHIEGzNZc-pWg+__f+mA%K2TOe6LoMe_Bw^ r?^>VlspfaB&-YaGJDu-o{SWmoq2H>N0|cV700000NkvXXu0mjfE_598 delta 1957 zcmV;W2U__06W$V#7Y=|30{{R3ySxSN^0*L3=&3%WZTla%gH3AuwdqEU29*UON255cjr%_=5d1){95ZwxX7 zTl&qjD?$0h<3bxdh=_OAtcJcGFs8s@1t=EN?5Ei10!Trm0$+PyeP*1gBU z#DW^Me_gEToaYZ@2C5W);Jmrz68;d-pp)+N$j-At?Ia7Pgh6nF_eSv9u}olhG@D>E znz^)2HrtJZ_=oGhO)&=TaA6UN?(6*@9fMH zSoVICWH(?>_v4(LJ$##)-?{VTG9yH!NKd7wptb>h#CBrD!y&|_O^D* z+QIl8q@5ONL#b+tKa)s2+u3Fb2CySZB0{lAfW+6;-QDw?U;sOksdPG>><~==?tFgz ze^VpA%h%QWLZXxL`y^k#1K6+zcI_JQJ~iUk_;^7{49Pf7}Q7 zB%tbg)DuUC5g)Tk-~!kU_??MvFh4thw7#X1 zEZ-_XE`kLwK%oJ@v!@%xPessweOnEfR}qwupot5HCieF`dlG=p-30RfN*~PgqgXeb zW!VF-fQg#%J4v8^XB&6fe}m2@Dp#=WLXO{VAwQ6^d9T*5b)sPB6hO`{tar_R zFv8)r^5G)_8mv^i^U#dndf7SonX{YqBSnf7DN>~WxhyLt)s$cJ>Uqas#{67N{#gx@ zzsT2KJIVA8SA0GBIblluB41WsA{pM{`ONt_Qd=7YgueD*5xiMPeoiVLf5(93ve84Y z08{7ZUVV+t&pCXF1SBk1Dr^nfL$4syn4i;pkdVq}YtSBg1)6m=aXiu0g#pLLctFQP zuRzn3zk6B$U+1zI)zLAE% zZ_M8X1+1%y5xgmXrvXhXe@QSv)cp13=i+g=TWIAd4kbU=%C%U8lAkM=`Tdgi&@0%C z@^g_QMT!(DB$ZE|I)(i4(`U|X6pNqAZ&WI8PVoNt*~!VbrWkXtQcJ+Jh;M9qdgg7; zC%$vDvvcowemyu?0`FAT^2qoXS3l}H7AsiY~eDt}nf4I2*-^Jnboj=b3 zD!vOBynus4LxVNG)&Z{Y&G-YZ@XdJu=jXFoYS{(S;(K`p@cj=iUHTBzZt?^0iTTBv z@(keRD<3Ug{rK7^TyTwl6+gZG6vp!y%ncR=+&A3ia>cr$-X>E>+?@KdSJK4$?9 zz9=6oLcZ~XMUGDbf8KWaIKVINEZtqY^Cerq$*1-$jv&6Xlf@B+&jECGivhg!)xEp- zzP`@_7<{Myl}fn(l}i461ekXT7q~w7&9~Ho-|>Lh*YjWTC>$Rbi${I=G~j}4;aeQw zgNM~e)$gydfY2|y zK;WOmeB!i$uTH?9e*WcG1jzdnm1!_P3o$i0>pMSt0F_ukasRj90Uz=wW~M>>2yku| z#c$0hX6M1C^;lSK6EhW-kNhW7bCZZ~)hOmC>ZY~BvfA4wNWgzGMFM5eM7^-G)ZGqy zHxsk0twDTJf0p{729$%u_w-u;JvLmjGWim4jY0bBFfJ#x7#+AYuoNq$i5alTzL8Vm8Bb3nf%vA_($xdhE&5ae63*>#qR9J_uCsR^YuK z9ME3@S45*2%3DF$en^1weBtsxU?OhX*MM*(F%Z%wNgdzgw^KoUMOcNq1+1X=gIjuk rSk(~lesJsW4+p&;9Gy>$^dHo}NKN*|%_dx500000NkvXXu0mjfz=qws From c3e2bec97f8e41f23dcb6820288ce9bf0d2f39f8 Mon Sep 17 00:00:00 2001 From: cib Date: Sat, 3 Mar 2012 07:44:25 -0800 Subject: [PATCH 3/5] Bloodloss now uses brute instead of burn. --- code/modules/mob/living/carbon/human/life.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 5665301948c..7323802d91f 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -139,7 +139,7 @@ else if(health < 0) var/pr = 15 if(prob(pr)) - take_overall_damage(0, 1, used_weapon = "Bloodloss") + take_overall_damage(1, 0, used_weapon = "Bloodloss") else if (stat != 0) if(!lying) lying = 1 //Seriously, stay down :x From d786d8642f3c895c211e3bc887125e1be2ea24b6 Mon Sep 17 00:00:00 2001 From: Ren Erthilo Date: Sat, 3 Mar 2012 18:06:40 +0000 Subject: [PATCH 4/5] Fixed roller bed. --- code/game/objects/stool.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/objects/stool.dm b/code/game/objects/stool.dm index dd5fc6bc9c1..62a2ff59579 100644 --- a/code/game/objects/stool.dm +++ b/code/game/objects/stool.dm @@ -296,7 +296,7 @@ if (!ticker) user << "You can't buckle anyone in before the game starts." return 0 - if ((!( istype(M, /mob) ) || get_dist(src, user) >= 1 || M.loc != src.loc || user.restrained() || usr.stat || M.buckled)) + if ((!( istype(M, /mob) ) || get_dist(src, user) > 1 || M.loc != src.loc || user.restrained() || usr.stat || M.buckled)) return 0 if (M == usr) M.visible_message(\ From a5c3dc204b1b2f23ba395648f373d3d575e8af5f Mon Sep 17 00:00:00 2001 From: Ren Erthilo Date: Sat, 3 Mar 2012 21:22:11 +0000 Subject: [PATCH 5/5] Fixed Super Bite Burger recipe. --- code/modules/food/recipes_microwave.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/modules/food/recipes_microwave.dm b/code/modules/food/recipes_microwave.dm index 7060477a596..ca4fc6b3efb 100644 --- a/code/modules/food/recipes_microwave.dm +++ b/code/modules/food/recipes_microwave.dm @@ -1037,7 +1037,7 @@ result = /obj/item/weapon/reagent_containers/food/snacks/mint /datum/recipe/superbiteburger - reagents = list("salt" = 5, "pepper" = 5) + reagents = list("sodiumchloride" = 5, "blackpepper" = 5) items = list( /obj/item/weapon/reagent_containers/food/snacks/unfinished_superbiteburger, /obj/item/weapon/reagent_containers/food/snacks/grown/tomato,
[V]
[V]" + HTML += "