From 78069156195a7293cef1ef61278da29ba81fa22d Mon Sep 17 00:00:00 2001 From: Chinsky Date: Sun, 19 May 2013 17:56:29 +0400 Subject: [PATCH] Added organ mutations. Only have sprites for humans yet. Added is_usable() proc that checks for both limb missing or being a tentacle --- code/modules/mob/living/carbon/carbon.dm | 10 ++- .../mob/living/carbon/human/update_icons.dm | 26 +++---- code/modules/organs/organ.dm | 3 + code/modules/organs/organ_external.dm | 72 +++++++++++++----- code/setup.dm | 1 + config/admins.txt | 2 +- config/moderators.txt | 1 - icons/mob/human_races/r_def_human.dmi | Bin 0 -> 8739 bytes icons/mob/human_races/r_def_lizard.dmi | Bin 0 -> 5673 bytes icons/mob/human_races/r_def_skrell.dmi | Bin 0 -> 1897 bytes icons/mob/human_races/r_def_tajaran.dmi | Bin 0 -> 2221 bytes icons/mob/human_races/r_skeleton.dmi | Bin 2221 -> 987 bytes 12 files changed, 73 insertions(+), 42 deletions(-) create mode 100644 icons/mob/human_races/r_def_human.dmi create mode 100644 icons/mob/human_races/r_def_lizard.dmi create mode 100644 icons/mob/human_races/r_def_skrell.dmi create mode 100644 icons/mob/human_races/r_def_tajaran.dmi diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index a905e5d90aa..c730a175b95 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -54,8 +54,8 @@ var/datum/organ/external/temp = M:organs_by_name["r_hand"] if (M.hand) temp = M:organs_by_name["l_hand"] - if(temp && temp.status & ORGAN_DESTROYED) - M << "\red Yo- wait a minute." + if(temp && !temp.is_usable()) + M << "\red You can't use your [temp.display_name]" return for(var/datum/disease/D in viruses) @@ -80,8 +80,8 @@ var/datum/organ/external/temp = M:organs_by_name["r_hand"] if (M.hand) temp = M:organs_by_name["l_hand"] - if(temp && temp.status & ORGAN_DESTROYED) - M << "\red Yo- wait a minute." + if(temp && !temp.is_usable()) + M << "\red You can't use your [temp.display_name]" return for(var/datum/disease/D in viruses) @@ -187,6 +187,8 @@ status += "numb" if(org.status & ORGAN_DESTROYED) status = "MISSING!" + if(org.status & ORGAN_MUTATED) + status = "weirdly shapen." if(status == "") status = "OK" src.show_message(text("\t []My [] is [].",status=="OK"?"\blue ":"\red ",org.display_name,status),1) diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index da0a999fdf5..18f4d643c7f 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -126,7 +126,8 @@ Please contact me on #coderbus IRC. ~Carn x var/list/overlays_lying[TOTAL_LAYERS] var/list/overlays_standing[TOTAL_LAYERS] var/previous_damage_appearance // store what the body last looked like, so we only have to update it if something changed - var/race_icon + var/icon/race_icon + var/icon/deform_icon //UPDATES OVERLAYS FROM OVERLAYS_LYING/OVERLAYS_STANDING //this proc is messy as I was forced to include some old laggy cloaking code to it so that I don't break cloakers @@ -239,7 +240,6 @@ proc/get_damage_icon_part(damage_state, body_part) if(husk) stand_icon.ColorTone(husk_color_mod) else if(hulk) -// stand_icon.ColorTone(hulk_color_mod) var/list/TONE = ReadRGB(hulk_color_mod) stand_icon.MapColors(rgb(TONE[1],0,0),rgb(0,TONE[2],0),rgb(0,0,TONE[3])) else if(plant) @@ -254,29 +254,19 @@ proc/get_damage_icon_part(damage_state, body_part) for(var/datum/organ/external/part in organs) if(!istype(part, /datum/organ/external/chest) && !(part.status & ORGAN_DESTROYED)) - var/icon/temp - if(istype(part, /datum/organ/external/groin)) - if(skeleton) - temp = new /icon(race_icon, "groin") - else - temp = new /icon(race_icon, "groin_[g]") - else if(istype(part, /datum/organ/external/head)) - if(skeleton) - temp = new /icon(race_icon, "head") - else - temp = new /icon(race_icon, "head_[g]") - else - temp = new /icon(race_icon, "[part.icon_name]") + var/icon/temp = part.get_icon() + if(part.status & ORGAN_ROBOT) temp.GrayScale() + if(part.status & ORGAN_DEAD) temp.ColorTone(necrosis_color_mod) temp.SetIntensity(0.7) + else if(!skeleton) if(husk) temp.ColorTone(husk_color_mod) else if(hulk) -// temp.ColorTone(hulk_color_mod) var/list/TONE = ReadRGB(hulk_color_mod) temp.MapColors(rgb(TONE[1],0,0),rgb(0,TONE[2],0),rgb(0,0,TONE[3])) else if(plant) @@ -442,12 +432,16 @@ proc/get_damage_icon_part(damage_state, body_part) switch(dna.mutantrace) if("tajaran") race_icon = 'icons/mob/human_races/r_tajaran.dmi' + deform_icon = 'icons/mob/human_races/r_def_tajaran.dmi' if("lizard") race_icon = 'icons/mob/human_races/r_lizard.dmi' + deform_icon = 'icons/mob/human_races/r_def_lizard.dmi' if("skrell") race_icon = 'icons/mob/human_races/r_skrell.dmi' + deform_icon = 'icons/mob/human_races/r_def_skrell.dmi' else race_icon = 'icons/mob/human_races/r_human.dmi' + deform_icon = 'icons/mob/human_races/r_def_human.dmi' else icon = 'icons/mob/human_races/r_human.dmi' diff --git a/code/modules/organs/organ.dm b/code/modules/organs/organ.dm index e0d73cfdbb0..160554d4181 100644 --- a/code/modules/organs/organ.dm +++ b/code/modules/organs/organ.dm @@ -11,6 +11,9 @@ proc/receive_chem(chemical as obj) return 0 +/datum/organ/proc/get_icon() + return icon('icons/mob/human.dmi',"blank") + //Handles chem traces /mob/living/carbon/human/proc/handle_trace_chems() //New are added for reagents to random organs. diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index 8e646c830f6..e7c71525826 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -547,6 +547,11 @@ if(T) T.robotize() +/datum/organ/external/proc/mutate() + src.status |= ORGAN_MUTATED + owner << "Something is not right with your [display_name]..." + owner.update_body() + /datum/organ/external/proc/get_damage() //returns total damage return max(brute_dam + burn_dam - perma_injury, perma_injury) //could use health? @@ -556,6 +561,15 @@ return 1 return 0 +/datum/organ/external/get_icon() + if (status & ORGAN_MUTATED) + . = new /icon(owner.deform_icon, "[icon_name]") + else + . = new /icon(owner.race_icon, "[icon_name]") + +/datum/organ/external/proc/is_usable() + return !(status & (ORGAN_DESTROYED|ORGAN_MUTATED|ORGAN_DEAD)) + /**************************************************** ORGAN DEFINES ****************************************************/ @@ -576,6 +590,14 @@ min_broken_damage = 70 body_part = LOWER_TORSO +/datum/organ/external/groin/get_icon() + var/g = "m" + if(owner.gender == FEMALE) g = "f" + if (status & ORGAN_MUTATED) + . = new /icon(owner.deform_icon, "[icon_name]_[g]") + else + . = new /icon(owner.race_icon, "[icon_name]_[g]") + /datum/organ/external/l_arm name = "l_arm" display_name = "left arm" @@ -653,27 +675,37 @@ body_part = HEAD var/disfigured = 0 - take_damage(brute, burn, sharp, used_weapon = null, list/forbidden_limbs = list()) - ..(brute, burn, sharp, used_weapon, forbidden_limbs) - if (!disfigured) - if (brute_dam > 40) - if (prob(50)) - disfigure("brute") - if (burn_dam > 40) - disfigure("burn") +/datum/organ/external/head/get_icon() + if (!owner) + return ..() + var/g = "m" + if(owner.gender == FEMALE) g = "f" + if (status & ORGAN_MUTATED) + . = new /icon(owner.deform_icon, "[icon_name]_[g]") + else + . = new /icon(owner.race_icon, "[icon_name]_[g]") - proc/disfigure(var/type = "brute") - if (disfigured) - return - if(type == "brute") - owner.visible_message("\red You hear a sickening cracking sound coming from \the [owner]'s face.", \ - "\red Your face becomes unrecognizible mangled mess!", \ - "\red You hear a sickening crack.") - else - owner.visible_message("\red [owner]'s face melts away, turning into mangled mess!", \ - "\red Your face melts off!", \ - "\red You hear a sickening sizzle.") - disfigured = 1 +/datum/organ/external/head/take_damage(brute, burn, sharp, used_weapon = null, list/forbidden_limbs = list()) + ..(brute, burn, sharp, used_weapon, forbidden_limbs) + if (!disfigured) + if (brute_dam > 40) + if (prob(50)) + disfigure("brute") + if (burn_dam > 40) + disfigure("burn") + +/datum/organ/external/head/proc/disfigure(var/type = "brute") + if (disfigured) + return + if(type == "brute") + owner.visible_message("\red You hear a sickening cracking sound coming from \the [owner]'s face.", \ + "\red Your face becomes unrecognizible mangled mess!", \ + "\red You hear a sickening crack.") + else + owner.visible_message("\red [owner]'s face melts away, turning into mangled mess!", \ + "\red Your face melts off!", \ + "\red You hear a sickening sizzle.") + disfigured = 1 /**************************************************** EXTERNAL ORGAN ITEMS diff --git a/code/setup.dm b/code/setup.dm index 35fe8827a4f..ac602bf60b7 100644 --- a/code/setup.dm +++ b/code/setup.dm @@ -582,6 +582,7 @@ var/list/TAGGERLOCATIONS = list("Disposals", #define ORGAN_SPLINTED 256 #define SALVED 512 #define ORGAN_DEAD 1024 +#define ORGAN_MUTATED 2048 #define ROUNDSTART_LOGOUT_REPORT_TIME 6000 //Amount of time (in deciseconds) after the rounds starts, that the player disconnect report is issued. diff --git a/config/admins.txt b/config/admins.txt index b2ff2178a4c..765a954884b 100644 --- a/config/admins.txt +++ b/config/admins.txt @@ -5,7 +5,7 @@ # Ranks can be anything defined in admin_ranks.txt ~Carn # ###################################################################### -abi79 - Game Master +chinsky - Game Master arcalane - Game Admin asanadas - Game Admin bobbehluvspropane - Game Admin diff --git a/config/moderators.txt b/config/moderators.txt index d4874564c24..3e4c5e39202 100644 --- a/config/moderators.txt +++ b/config/moderators.txt @@ -16,7 +16,6 @@ roaper searif sparklysheep themij -chinsky danny220 ; Why u no keep list in alphabetical order?! Lazies! Lazies! -Abi ; Imma best alphabetiser - Erthilo diff --git a/icons/mob/human_races/r_def_human.dmi b/icons/mob/human_races/r_def_human.dmi new file mode 100644 index 0000000000000000000000000000000000000000..4bdcb4ee0d84a2c00b681539fdc8cc29db3ee990 GIT binary patch literal 8739 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 literal 0 HcmV?d00001 diff --git a/icons/mob/human_races/r_def_skrell.dmi b/icons/mob/human_races/r_def_skrell.dmi new file mode 100644 index 0000000000000000000000000000000000000000..b2156aefcff20ee3ef1ac11bc830b7706222af0b GIT binary patch literal 1897 zcmY+Ec{J1u8^?cRG}(r1x5%2va+9Sbrm|l9ma$Ko7L_`dEZs598eTKDsH8-$%TN*7 zCRxVFMNAAs$fOz95{4K}wv2go-*Zpr{pWeU&p+Sq=RD^*582z(2`Z&31poll#o6Hu z0DyKR2#^5pwCfdt@ST?7?GAUO)9H2{5g8-JR&^H=`f{$mBi{pncL1;qw>Zy8^q|H3 z)`>yTF{FWl>+e#pF;hc&2p<680sut!-nqqkfbM%hVC5wZ7GV2xV|%lR1CQfbcL@WJ z!h6X?RvxB5_k1e>$9kAJSfJpFNqPT7+Son5KU>xc8Q*vJ%m8X9-A5mw(P;bk?}ups z!Hhe|ADD4xJbeM1nbFHTLp>TE80Qccdodd46rWU0t zoPP4Fwv9SnQ`?#o70%$^93?$(L|Vx{$;(ZhDTR4~sdXtGCVABlb!5_vy~aPj9gVEX ztX6Z%){s{$R!P$>A*H(=51~S0q;633P}fDIHGG5rVn0T-1kOb?5FuXB9sXV2 zE)KSERQ_TC_7+=Dsbd$!C1Q+H`l0bv9dQhE zLaIeeXDB{tkDY{e672UO$!i);u^is{khWW_1G=RwqnU;(UWWf$}M16$(4S7D`-19`kpgAf1N+p zfwnn_tCr3B0%D#72~Bj~_IE7^+DA3#=0*IJL~)teE$z)4q}OVlK|Y;lZpKV91x`Ca z|4{ub4v&sG&NyP;+%>U3V0GL;m7~!)a%4rQUG&$Mgb07Jc30?g6cr=pot5@+eORq; zPxXA*m#(5L4_&Uec?Md!5L#dJa{u%ifZcQMQ9v@9ka6e_-`W`oUBfEZUinn_dqx&c z`nRlq=KZS@@&eVJ`)+twVT*>Vyr_TrL_K^pQ|zIEMU}J$WUirwPq7d7$A!oG_O>;<}TC%9EWXZ~7HnBRf_ zhxtLI>KNvg1$>=aR#Q(%-9svzj3R?59V!TGGK0amlzv>*V^B&V%1jUKXs=&obO=cV z9n+SOc%QWIghIDf(6-b*tsRrMv0;mNpppkMAUy4_p_xre9HCIiHN1M0?3)Ok-8tWK z%!Y%(#&Mi^BjGP+uLWnQXX@;$fRD%(Yu{5%OIj(!^OKiwyS$Et!&IdctEWii)NS;T zTzYk+ndfw?hq8if?^tsDjX?uh#!O@UN81Q&6n)`a@9cqT`@KDQxoPre>Gzfm0?5KD zdlbqaZ>G{tzZq*G4h<&wi;6^o)@Mpa>_m+%BwfH~jtnoYo)nMM{uat>t-}>=!^V;| zp%3H0^YaV{M({hA>SOuWrF}ri%Szk>qFg^APX^JEa+hUD%rcVm~gwj;430ma`$ z>%~%(d->-0AMKml7AHQb{wExZS8Q@mIGV-Z!j*4^B7;AjKFO8oF@(EW_p4?e9|?X{ zek8NrJg|MB5?(~b$(Qig$i`Be{V|2HG9Yet$@M%~CW7D+*ehB?@JNaVAp zk9qWrXkXI=H@k41aY4m%O|{XGv|si&5jQ{4r??h=IP1CM!`=a{kB3W=c0VfT8S%A} zR&D3B;6ZrPHbS)TN(toJ|ImJ3eZG99n^#Al!BRo{k%{acqe-+Vu?Gts0`?jbfXINd zvzV{wheR3CRYmD)-lXD7449&Gl(TIoG*_QgGmB=;UdbXP!!{sN+*s#HrBNZXNyuU1 z`Tm$zh%41>%DWMMEmz?r@<#GlgQvyo3i;kLn;8A2nU~EIt4l|a6do7*eKNPnQ)U1o zRssfj(!cCMjbUdmEkt11!tA3Pi>K?0i8fND7v0+@Ctk2WZE%Vi;7I9vwGj!Hm{;SC z+qk9{w_HxjM9g!T)|8X$xiG{MbakzJgIokIWs literal 0 HcmV?d00001 diff --git a/icons/mob/human_races/r_def_tajaran.dmi b/icons/mob/human_races/r_def_tajaran.dmi new file mode 100644 index 0000000000000000000000000000000000000000..7fe00fe9a017d87593bc600b46c3ab21ba2b30e0 GIT binary patch literal 2221 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 Q&Y#n@Ip<(eVdfk65503nV=-0C=2@ z(#;CPAPfNDvp$8i_p!h0E~BONu)cx_{z7XY%J%xJ^{~@0w*)>D6Ya%woaRLgubICM zrT|eq#Qk*U>=ShMdvd#S=1p)u*Cb_?%^r3r6>c48I$$b?IJ2lWQ{u}{tt5rgtEdUZ zNX#LGNK>+Xx9TimhSfO22o#0V0%Srl63c)IXo|3p>e~D8Mzx=+AVSZB{cYKcaT$(3 z`~}vr%8vpZQR)By0=!8?K~#90?cH5^n=lZCVT8K?0 zSjFe(6QzRk+tzQ>mV%z~rL{H{^x_Ct7W9nY@Q!`Cg7)R@kYnA$*%gRQzYqWb00000 zjn=KoEnU}V{FeTX3$^tO!zyKr`&(l!eEt`oUn_of4!M}3G30-?W0H58( zzV$foul29MesSZLCkh?rw!HuPd3F&I@3uTd={UFH{q1&k5s|AMq04>jDF^^QpQ|;f ze5Rndl|Ji*kx4=8_;fy*F1I2808Ol$2$I_n_RSv`e~+G(;by(a|Gr*A`#Ih7lm3hg z@jklv{6XXU=RYcp&UlPH)P7F){NcB|y+sq2_b};Jbk86B6#ZIRdno;!?)kYr6xBzl zDL?&G8WUO{+t&Q_h2)f1&ho7ZTl241kg_J+J3nFl>EAma004Y@diVDd;_u*0wXKwDu*fp+c!+iBi9)iY`Kt=1Ynhrb-npa~P?j zwI}4nGNg3c(b^JA5s5vW#M;nIg4(|HkNLjud^0_#=gc4XKIc96-uJ%ed7iucc+SgR z38D=Ffj~+K4;Q2aXFfK0SxK*L7CkEgQnKF#tV?8E#Er|>u$QmKfJe44M>IYg4P8bD0i$)tac0-v)5e**SXm;^* z4@cydy^f_Nxb4provGVBZ`?u(xLX*YMAzDsHO>0LEs}fmH3%fvjc{@FODtZQw93?p z)OoeGmu4`bR_2wTrbIx|N}^6}lg>YG)P0Xg0cI z!W1^`ZiULzcYHZ}$`K1tifM0c|Bq>ES4yg4?y=ZxbNu9#h0=g+K$0M$?`tgqo~-vx zoB3O@_w_xyyA}SO-IsFTlzB%BSBeHW9nAHkXh(3Vl1K(Q%y;MJI31*lL@e^dwfpKs zWp79DAt{+Oc@>qz4h|Whe;62f5E-r2MiBEKq;!xJs3kMbz-i`MiVSO=DUf6TYV{vR zp4WfL8oeHduj1xsALo?B`KX^S;Uh44g-)@1O@dxSe+K~`iN4U=*cTo=1{Z&em_1#| z*NWc434-vCmTnQJaJ@o!6>PYR{w&uYAS=HHfliyB*Zx`D6uo{|oGE0sP|T;mj~TMYd_HQ498 zK^}3|n{Y!wfzkjhpr{ z=?%;Feu9|ZO8$k1kxj}G3EvfQ9@p4Y1F57U38zjv(*JWB2Zqp&x6OY#1=AKPVlm>1 zobF4F?>B0R9*pg?YInwnLU{9sn(n1snGD09ZR2>I>wc>GxmZ5qXX$C*->md=Pv9oT ze!tn>t|&-z%>Ct>+7V`)aLW4RzC5hN_-7i{+AN=aK$Au)TFZ}AfeMnU2YK0+xF#4= zxWl2ZZxLeON41#pgMX*nTc)$XeN&pE;EdJPT-$xV)3Z}J;gn!{JTedvVW@lcS!Pu}H zCg(S>d*gFZ%Tbd~2urWKmIwgcHJcjLcCB*|HYiAvN;dVjl5DCpY-StNK#_W4(F&zx z$Jprjiy$_*APy{y{=)2}g67gC8CV#>P;_!85zYVzTP)jv{^?QPhNQq3v#XsO!e*N7 z?&HmuI)c5fcRlVdgG#VSPaJ-KZrscln(a}d>A-v4NgaP==TpZM^yCn z^RdK5_Yl#B2Wkjh-=-z_1#wZ?`0Qe&{G+RX=WlH}R>cwxTot(4&oU;cK?k5Pxz`*D zk(av_Up~;(+&tpjsm(Q1{PVKS$_6`!7?{x-ZlCiH1v`ftm{l~~&hdv(l*2|hh5S^{ zsQtnS)k8?=vX&(;o{j7{qH`|DxN|e2o<+)OkAi1Q-+$~TNUI{<>G}{h!QOs)>?=Lw z$h>J(hJt$iV`cncgHcYd8@PJ<%buR}H)~GtKR5myKeGwP5(?miD}t?N?I~@+F5-GIf$;@xC*wKapyTk{pK@~i=1JnF>aSfOxt zW1_DXV)c$K$J)qNNJO(pN5l)7LhTyhzkX!~y%VAp2m;w1gLu{|5-+>g7`J6qfRD>;A?s