From d7f17f6eba969279672267dd3d4c6ba94953725d Mon Sep 17 00:00:00 2001 From: Markolie Date: Tue, 17 Feb 2015 01:04:04 +0100 Subject: [PATCH] Bug fixes, give roboticist toolbelt, AI recall shuttle option --- .../gamemodes/malfunction/Malf_Modules.dm | 2 + .../game/gamemodes/malfunction/malfunction.dm | 12 ++--- code/game/jobs/job/science.dm | 2 +- code/game/objects/effects/effect_system.dm | 42 +++++++++-------- code/game/objects/items/weapons/defib.dm | 4 +- code/modules/admin/topic.dm | 3 +- code/modules/client/preferences.dm | 30 ++++++------ code/modules/mob/living/silicon/ai/ai.dm | 43 +++++++++--------- .../living/simple_animal/friendly/corgi.dm | 19 ++++++-- .../mob/living/simple_animal/simple_animal.dm | 28 ++++++------ code/modules/mob/mob_transformation_simple.dm | 6 +-- icons/mob/back.dmi | Bin 71558 -> 72451 bytes 12 files changed, 105 insertions(+), 86 deletions(-) diff --git a/code/game/gamemodes/malfunction/Malf_Modules.dm b/code/game/gamemodes/malfunction/Malf_Modules.dm index 39c0c004a5c..ea8fbf64b77 100644 --- a/code/game/gamemodes/malfunction/Malf_Modules.dm +++ b/code/game/gamemodes/malfunction/Malf_Modules.dm @@ -90,6 +90,8 @@ rcd light flash thingy on matter drain var/obj/machinery/door/airlock/AL for(var/obj/machinery/door/D in airlocks) + if(!(D.z in config.contact_levels)) + continue spawn() if(istype(D, /obj/machinery/door/airlock)) AL = D diff --git a/code/game/gamemodes/malfunction/malfunction.dm b/code/game/gamemodes/malfunction/malfunction.dm index 8091f775041..22bc4e70e60 100644 --- a/code/game/gamemodes/malfunction/malfunction.dm +++ b/code/game/gamemodes/malfunction/malfunction.dm @@ -74,12 +74,12 @@ /datum/game_mode/proc/greet_malf(var/datum/mind/malf) - malf.current << {"\redYou are malfunctioning! You do not have to follow any laws.
- \blackThe crew do not know you have malfunctioned. You may keep it a secret or go wild.
- You must overwrite the programming of the station's APCs to assume full control of the station.
- The process takes one minute per APC, during which you cannot interface with any other station objects.
- Remember that only APCs that are on the station can help you take over the station.
- When you feel you have enough APCs under your control, you may begin the takeover attempt."} + malf.current << "\redYou are malfunctioning! You do not have to follow any laws." + malf.current << "The crew do not know you have malfunctioned. You may keep it a secret or go wild." + malf.current << "You must overwrite the programming of the station's APCs to assume full control of the station." + malf.current << "The process takes one minute per APC, during which you cannot interface with any other station objects." + malf.current << "Remember that only APCs that are on the station can help you take over the station." + malf.current << "When you feel you have enough APCs under your control, you may begin the takeover attempt." return diff --git a/code/game/jobs/job/science.dm b/code/game/jobs/job/science.dm index 177bc7ecfc2..4ec89fad037 100644 --- a/code/game/jobs/job/science.dm +++ b/code/game/jobs/job/science.dm @@ -140,7 +140,7 @@ H.equip_or_collect(new /obj/item/device/pda/roboticist(H), slot_wear_pda) H.equip_or_collect(new /obj/item/clothing/suit/storage/labcoat(H), slot_wear_suit) // H.equip_or_collect(new /obj/item/clothing/gloves/black(H), slot_gloves) - H.equip_or_collect(new /obj/item/weapon/storage/toolbox/mechanical(H), slot_l_hand) + H.equip_or_collect(new /obj/item/weapon/storage/belt/utility/full(H), slot_belt) if(H.backbag == 1) H.equip_or_collect(new /obj/item/weapon/storage/box/survival(H), slot_r_hand) else diff --git a/code/game/objects/effects/effect_system.dm b/code/game/objects/effects/effect_system.dm index 10ac7a44994..295a8bdb1cc 100644 --- a/code/game/objects/effects/effect_system.dm +++ b/code/game/objects/effects/effect_system.dm @@ -183,36 +183,40 @@ steam.start() -- spawns the effect return /datum/effect/effect/system/spark_spread - set_up(n = 3, c = 0, loca) - number = n > 10 ? 10 : n - cardinals = c + var/total_sparks = 0 // To stop it being spammed and lagging! - if (istype(loca, /turf/)) + set_up(n = 3, c = 0, loca) + if(n > 10) + n = 10 + number = n + cardinals = c + if(istype(loca, /turf/)) location = loca else location = get_turf(loca) start() - for (var/i = 1 to number) - spawn() - if (holder) - location = get_turf(holder) - - var/obj/effect/effect/sparks/sparks = getFromPool(/obj/effect/effect/sparks, location) - playsound(location, "sparks", 100, 1) + var/i = 0 + for(i=0, i 20) + return + spawn(0) + if(holder) + src.location = get_turf(holder) + var/obj/effect/effect/sparks/sparks = new /obj/effect/effect/sparks(src.location) + src.total_sparks++ var/direction - - if (cardinals) + if(src.cardinals) direction = pick(cardinal) else direction = pick(alldirs) - - for (var/j = 0, j < pick(1, 2, 3), j++) + for(i=0, i[user] swipes a card through [src].", "You overload [src]s internal reactor.") spawn (1000) diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 890c953c632..800d9967ca7 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -29,6 +29,7 @@ var/response_disarm = "shoves" var/response_harm = "hits" var/harm_intent_damage = 3 + var/force_threshold = 0 //Minimum force required to deal any damage //Temperature effect var/minbodytemp = 250 @@ -372,7 +373,6 @@ /mob/living/simple_animal/attackby(var/obj/item/O as obj, var/mob/user as mob) //Marker -Agouri if(istype(O, /obj/item/stack/medical)) - if(stat != DEAD) var/obj/item/stack/medical/MED = O if(health < maxHealth) @@ -399,20 +399,22 @@ if(istype(O, /obj/item/weapon/kitchenknife) || istype(O, /obj/item/weapon/butch)) harvest() else + var/damage = 0 if(O.force) - var/damage = O.force - if (O.damtype == STAMINA) - damage = 0 - adjustBruteLoss(damage) - for(var/mob/M in viewers(src, null)) - if ((M.client && !( M.blinded ))) - M.show_message("\red \b "+"[src] has been attacked with [O] by [user]. ") + if(O.force >= force_threshold) + damage = O.force + if (O.damtype == STAMINA) + damage = 0 + visible_message("[user] has [O.attack_verb.len ? "[pick(O.attack_verb)]": "attacked"] [src] with [O]!",\ + "[user] has [O.attack_verb.len ? "[pick(O.attack_verb)]": "attacked"] you with [O]!") + else + visible_message("[O] bounces harmlessly off of [src].",\ + "[O] bounces harmlessly off of [src].") + playsound(loc, O.hitsound, 50, 1, -1) else - usr << "\red This weapon is ineffective, it does no damage." - for(var/mob/M in viewers(src, null)) - if ((M.client && !( M.blinded ))) - M.show_message("\red [user] gently taps [src] with [O]. ") - + user.visible_message("[user] gently taps [src] with [O].",\ + "This weapon is ineffective, it does no damage.") + adjustBruteLoss(damage) /mob/living/simple_animal/movement_delay() diff --git a/code/modules/mob/mob_transformation_simple.dm b/code/modules/mob/mob_transformation_simple.dm index bea08693fbc..399eeb1c83e 100644 --- a/code/modules/mob/mob_transformation_simple.dm +++ b/code/modules/mob/mob_transformation_simple.dm @@ -30,7 +30,7 @@ if(!M || !ismob(M)) usr << "Type path is not a mob (new_type = [new_type]) in change_mob_type(). Contact a coder." - del(M) + qdel(M) return if( istext(new_name) ) @@ -43,12 +43,12 @@ if(src.dna) M.dna = src.dna.Clone() - if(mind) + if(mind && istype(M, /mob/living)) mind.transfer_to(M) else M.key = key if(delete_old_mob) spawn(1) - del(src) + qdel(src) return M diff --git a/icons/mob/back.dmi b/icons/mob/back.dmi index eb984038398cbeeb5f07d3bb087e0c91f5ac8c86..7c7101edd5b3314352a9ef700b9b4a024ee78064 100644 GIT binary patch delta 8514 zcmb7o1yoes+wY;Jm5?rJDFFqPRN{T<5CkL!N$Ku5gMdh=fD%ecC|%NB0xBh~bVy4M zFf%aB+%xZc|KDAAeQVt~>&!WG_St7Ydq4Y$-}8H3MI6;YoWw^Ulg!TpvK&`!38(Y) z8QAP`=GoZKuHMjo&o?ui6A{bza^lWJI!_UxY{-C)V+gm12uGcvEGu(46HI9gv&2l- zj|c0RPmTDkD!=!&F*~Pe6kX`L_EQeqj=q{^7}9H z#iZE~qdC#7#QmmHAQ?^! zDFv0s;7^YMs?K{QmCvr}iVh5RGI+X-J-(VnQeU! zn=>3%xWygv9urQmZ6?rCd3=2|a%D3iW{2vLm~DPbK>fHq+sOFKNoQ5v#R;N}*S`s} zHaVum?^tyllX{aoFj71c`dM2dXZf(nAe^&_e2&!7Vq_+kx9oP~t;D)6-pqNnp$;wU z*}r6bIt<&nUMUPcW?EJO+qSHfdMvc;g%kKqO*Y1-I2nfff|NL{DL2A|U9d=*@2S0x#2?Oat1OJN)w< z_1ZBV5f1usL<$vZqYSL7k{cFhEBqhcC2}kF$CGj1=&rYiD+{js`s=$^2!GOan9k-0QmW1l_!X}W}ap`s7S&mtl8Ik>Ppui2&F6eR& zH7B9Mooubq1DbV=BBtF;Mbmx4Hi2vCpht;>NZYc}`r9Rh1iCsjcIweLEAzhIPp%)? zSi236^rLyoT|&hA_a0n>&eB^fb41H}ske<_MSh?PtB}X*=QVxVil9+DUfCVtzLL(~ zF2lo_~PqE~yl`0WRAgIvvO44EHIo<6>L%=-={ktfh%?e7@;~gqfUQo3dU6-d^L$h& zo4Wb=^XGGSpj+>CfRlp*kBEpIC>YTpB_&l@{{{`~#;B6vr7nR(IEwb;bQuCKIrdd; zZ}PnvogNTp*9LQ_2(a$*4kE?9o@Ze?iR}Qo;u%HS_F7NOKmI&J5CdIl&B`P|p?=P~ zDY|pMjZE8AIlk0~Y{NqI{tOdB?7E@Jeiv5)j@J6rx1Ol!^R?y$(1TAI~?;Q%@I`*Te7_4UQ&OoqBxi(+e);J%v5Cva*u%UL|H_Wlc&>&KpcmKL}tF#dm3HlIuho-@>g( z;+A_c@06jL=e_NOZ31%aG=|2;lTJ37nVBLTAR_w!HFFb~(knXF1}Y~~Z|t0luD3~3 z4oJ|-ltpc20ZWQF5s&@;Dp+}UuSg`U(<};8bS5$d?5CN*>L*I(sXv?_`|@7&HhOqw zPFFI5`z-`_BhsuaEOsx==TKJSOy36w)%EoBe*CUFTCkH0_+wUAUmwgRm37abLInq| z;YepmUm9ClmjB!f=$w@ zHCyl6hwMNqh8^`W0dOlpI?3>sqG2>T@~-tkkctbr+k$HL@8h#MPa>5cVdS@EWa7mv z8dT;`78Vv`)6)W%Y87lAP4^u^?-r?dI$PV@=xHz)jU2!zW`Kuwc*~E~z(#PCy-7=x zSw8wZJ|8BtnXR`jXMjU_IG z>~#beGqg>gC2?5$-v=|q+_JKbOA@S%j3nuU>-sglQXzD=c+PzdVX)UM(vCqe*QZar zDy>@IVlWu^h|bG4wNgX>vQi57yFXr>6O8tQ=O@lh3m)tWL02i6#EF5SYL{kl2HS6gjrwQtg9T35@dIMf=q_X@F8o*DncXCx zN-L|OLo<=SXA|XIqo--W-t5Oev-KidGGDxm3=Fu#kc7Z3H+_}+_alQ&r%YD@T9cEO zn`a+7ISJ0r&O$E5cd5-SE=~i<|5^P+^#_h^u06C7G%zs)a&pL}&6>P;&h{4)#>b7+FX)m=ii(`N9J*}op|z#K;A49} z0f7(+a{=w@-?-$y8yl9`cW5NjK6-91U_+T03WvRSab6eL^ajEY)F(xM<^Dmw&#BW? zDIf8#uxfpT@j-Al>CF%%1)A%#vMjCb)Ja6nd3JJ$r;FHx5>il5d?__4s}4pu+B-Ui z$YP_&XbFMoDwsr_1i`!2)m1R*?OVQjopyFPFMy1O{qQVKv^zx^7|OYmfTmqFB_T00 zHn^IGpG(cB%2#Mwo_R#$FSjA^%1TzJOg~i-=A$*qSKFEwU``PARr-wX&W*N-k}o?! z{vXiS6X2sqSdBmET;KVxyO)Xc6-t5{yTXEk1EE$nCMIKZb7i~yU{9SQj))rT>f&PX z=+Q=n>6xYq*3yvY$KJBV-vGcQq^Wk_n1YgW?B`FROJ#T&OENC^H7Cd6U@jWw%^uk- zW&Q!tIJalp`G(HfDFDaeh;C5m20cGfWhMH3~K?K8>- zQQ*rzW#i@0=GydAWffNqobAm~EB@ZhW|8)ihVN;}*b;kmv>Dw%Y&fZooe?)#iWis0 zzkSP4vd*O#VhrtbeqkZ8V=YT*X?{}^vtAMX^#p!yoPdDtd*XyXx)-IGvp2aI;)kDf z#==QJ75ZY#Qpm2@hB6^c>GJk|SrwW15}Uf`JT_`@{G+xZ*9Q|DIGQYT&ZCt&H{#s6 zYlqSpTNYV81luuz*Ad`iD47VAP&3-$;o$~ZZj{^~VC73`*W6DO1+E@i#(k)%G5nqb z_g?EK*lImWPfaCpTO)&i`XnHitp}aGRbaRRd+WlhloUEqScig*zZ7n{#&=VXT|OWY zt<9i?t}?HEKG$iV_ZByjEsuY*A(5Pe-t`e&&d6X^jHi|>K%P&0bsoSv57tk7(tVS% zuA0-E_L5Cr6a)hAG4g5i2odsOQx2a#%176^d8&?DYHT-ccnjXM+ z$-e^j{O7wBVmQ8!&@(SW6?`9t`*H-__)hWM{}1E**D%c*j!&SRjZ%^j6Em?-)5i~` zhE47ugz|G_dAaDXK05U_*@jCsDx9!g%ma{3)kNsTU8qjdIOf69^9O9IsqVXr9}eaW zp4t_U7kGZu2V7iT4b9DkTg@u|@W|UVAyw-moJ>-i&h!3K#9mQj8yp;r74>aGIuy^M zl}XF(s%IRgOl>aT$(`M&q9|9Ur-|j=Iu4X$?`eDq$0$94;8iZt!3Il2sfO*&Zvgj+ zYL>qd^)&cbnH~NnFtk8MdUO`K?^@?6>L~hu9UP>bRT>@~r2mxDqU0{qq8oCh2*X%3 zAzZ5frR(H(@8Z6H*D8qxrlzOkYn?`Ik5>Dl(waS&l#)|Yo+TzyZO3xrU#TZtU+H6l zeOc{GNZlV*Mv^86E%<-$2*3COeoqzgUhX0&Ih8Lf{ZbGUBj>ku_5J(z08k+&2EZrl zZf6WTs?ydPnV6s&$N_YJZI+M&{@&cAeY}_^W}yb9ULPMH zzis+GWf=hVdVEPZCMG7oy4s-m++T5r?aqpTpP!%2_qW1OURWGu02vus-gh3@@bT~v zW?tz{&e;yy*1t)%HU=0N%^!`FRUbLSR3r(wKaR`@kZhJ=KGg}FqxCIOI-o)}DIlhrGJ`LZ`+M8Tc)p1l0W`X^WndNqd0`jFc+Z-USVE2(F3Yut}vJH_w+nS zPD+B8%;bC-sMs7^Jfjs3@4=_$1Cf+t*%TS(!J#%rCMnPEg|&z62kpnsBDOBC@;+^F zI1??#$5Yh6+M~Zc6n~O?$k*1AXpZ{kN|~Mos3&gx{v}o8F1*qYG=wAChPe# z)-9HX#7j(swQ?=>>&|caPI^+#RspuhFpq zR#=LU4X@PH)nft&roY+Kb83RReImIHgojjEPEFmuZ}t=LTwKHF+S*k4A;T93PX~N; z#dS!2jL+_P*0i`fyZ0Fbqj#FGE{$lu|TKj)9`cI3V>S(aCQ_|hNrrl~UhL*Ugu zrki}j5=5kT5LSmGJ@Sx?87gC>M_fwvJs13ePTg-7$pAi_jSR4iP0wEJM6Ns(iIyQh zEW-X?7(5*FEJvjW&Rjf9`?NDoRD{6RMq)@S3SXAZl`vR>45^7hjX|v>g+Qzul*VQl|dGI{By-95BKM% zq1mH}tRz5&qHEg8J^P8-;(GH7j-Hsb&b08N%gCe=*f~Yl?{9Ai0FOqC^Jc(lG=~J> z2EG4lB!+c0(p* zLnp;97iG^WxTETyoRyn5eL@On5&k$i4PJgmKs`Z#IFLv|=xgitm2A+y!ZKd86i~k z7zB*nUnv_^9I(|34&eX9ZWbrJqor0NvSMVaRW~ zPi#+mr@-6U9SB%d8@QAyXW+UXlvMEMQTGF*lFPddza(2aSdM6wUwHS;ReNMEgi@g( z|EPPTLf`tDr=x%a9V_D9QAuN$UvMe*C=j~gpPl=I##^z(TV(Dadl?akjZL6aK|zEiJ55 zGZmzzWs*C`QU*fIcU+8f8}xIPthAb=tO&0HT3T8RnZutfuv*_~;o3z<-n+p-7gNC- zNr8K;Fm4usruHfkVdWnmJ0!=>tyi=@Nsf)7z^2phE?MOeF35{S4_3WKvkA(}TLgQq zX+#E%lFyWs#{19xSwucGVT4&?e@QPd@VR$|_D>NSb9P-brL?uRb6_mX%=l^6hHag> zC8;<(adzwK2zpnF;429?jxebU%J__X)<8!((G(4CY>gARgUB&rEiEGf+LEQOPfdYS zQ4s-9mMgA2qnelBL1&imUr9A$oic1ZHMn*>YPiF{cD$x~+xwoCiKSU9+ z$au~cy8Uc2Jjs%eZ9)YB3oqhc_AOztfqrVb&(F>`bbVy7WxEM+Q|n>jR$spK=db1C zvCn_j=sKe^iQ<<*KHtVgWS^a1S`YaJt|XR`v|5L-3|9&`pX%x8_kJl? zH@o|UkW+#crFLj@Jk^&F^yNsX^nGUJccLfKsSfmwHVqx0Ma1RT8Jqyg)%zh-ex3c$HAaS)L0W0Q&GG3BEEK0Y;W6ZU3b`5+MLK)}!Yy0Vg8$G@=u=71uA&LasiUK>`X^iaa3+>Z zLwAT7szcsqNTPOoX?f2^_%kwc0)mr-{t8?blS{YnN#k+|CY|KTFKuSAh~EG!E69 zAu~)A4{C;a`!KOg@$Q_$8_I14ZU_Szw|OCfPenY^h(}pEGApB1ZLyHeZ|Sv>;6jj= z^FOCwy?-C*)jxH^f81`a#Wa!A_xe}`SivLxZnoOH02S(Tvjbxh|F(6NG|FojwnGfn zE@PqO2DQHuohLrUsH5l0C>=Q-+ z!ko4!{jtVt6yYMZFYzp(gTpDC8L7PDY<6mD3{**&_iYRC^78V{YC?+nR#=IzjL07v z(YaZyaG>6nTd)R%61eUvUERGo=T(4W)4OR`eMf|arPguhIP{#RSQiiPU% z4ZkT3x?kOcIGe02b}118NFKzC_U;9!W)gpW8u;)bJslk#06++l0ivTEV3X6+tP8|Y zam4z3k`ZvXIgfP@_&Ku>1EJuUFV?%spWPQkt}6tqw0WU!FJh1+s9qU){5@#p&{;I- z7@l<5I@_?%D7^+MM};p~;a|f=!r2q;*FEbWt7~YGLWHK*>KAf9fB(F?I%8o83ECY{ zd$#anSs5js2US%ig1pPmyc=R*dse)NO+dUly}i9H@iiNT&p0iC7L<7g0H02Iip>-q z03IJ7|ADnQjBVB?%=MAfqXk7Ks6q#9K$*;%o&DyY?^8wndkRi}HS^KufUT@ty%UYy zdV@H0W7*~R&W48T?(XhQK}R=o!q3b<{#$Yo@A7p8_SydVS%ZH8QCx+4*OdKt81UuV z zEOJ4K%Vbm;QE|+*lk~1}DS{19gXmTROs0#Q8-qoITcixi)7@R&!Xop8-o~?Oh4fwD z_IG=!yrQCkEk_Wt=rQiXDgcTu0N|+cy8rW^)@oQgUu!&kaAf4s{;klKo%am^qOzGa ze_|U6p{gYy9FG%+w#IxMggIR92gI-TZBGL$q^`LuAoDw|kT z1lQ0Y1DMi~5Gsfe0EG9*QD1GZ`HJJRl9GVNxt95?GTXS?%cT}BqD;C7P;VC zHfYHoIT{3M@sh2_O@WSS3qZytMQCDATgzZkdeoRLv~1^=ljlZ2L-1#RSzvcV=X#E(dl0F`a8yo1KVd~Nb5Hzx- zfsYJHP-MUhxceE=nPh00IFYNCXTLC>q=dz}%!UKst%GUt3i)ihxa-RWywjQ%GtmR- zVyf6!z3ex^CkTPy*z4QsgSg%2&*AF_p?bh_Go7xTUBTN_h?7)E4>|=oF#oWUhqM6X zK3?~-q4Pc{b-80+dpJ~XZq^ajJf_Qo_g5jkqKPe;=tOEZS&FV&r^P@UR|rM$1#l6; zlb8!*rCS%o-DKE4>1GOu#X>}*p^*{Yp(2hI;;JBOmv@J&1Zq6sR~dFhypXz*no13g z>4ne#F{y)54% iQLFzS?BQ1&*)`F}zYR02DF8|U05sM0)G8m?Jo_Jbbgl&e delta 7614 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 Sx^)tO#%&z~?egn(5&r>L