From fde6b6cc5606ad4bfe52ffed7869e49d1a4c1545 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Wed, 12 Nov 2014 23:14:40 -0500 Subject: [PATCH 01/16] Fixes door projectile damage --- code/game/machinery/doors/door.dm | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index 0290d49ace..4980f3cef8 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -23,7 +23,7 @@ var/normalspeed = 1 var/heat_proof = 0 // For glass airlocks/opacity firedoors var/air_properties_vary_with_direction = 0 - var/maxhealth = 500 + var/maxhealth = 300 var/health var/min_force = 10 //minimum amount of force needed to damage the door with a melee weapon var/hitsound = 'sound/weapons/smash.ogg' //sound door makes when hit with a weapon @@ -127,13 +127,14 @@ return /obj/machinery/door/bullet_act(var/obj/item/projectile/Proj) + ..() + //Tasers and the like should not damage doors. if(Proj.damage_type == HALLOSS) return if(Proj.damage) - take_damage(round(Proj.damage * 4)) - ..() + take_damage(Proj.damage) /obj/machinery/door/hitby(AM as mob|obj) From 7757c53fbee152fe90f17c347b5461a3ff4433db Mon Sep 17 00:00:00 2001 From: mwerezak Date: Wed, 12 Nov 2014 23:57:16 -0500 Subject: [PATCH 02/16] Makes helmet icon south state consistent with east/west states. --- icons/mob/head.dmi | Bin 125123 -> 121969 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/icons/mob/head.dmi b/icons/mob/head.dmi index 0f5c3a5604429f26c67cf9386644cc63d4d05fde..56fbb33331195b377e414ed994ad4ca943eeb50d 100644 GIT binary patch literal 121969 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'_HD6S#5rF=^LnqcesSTc_&*Mv?&u@#v2b3 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 literal 125123 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 From 5c66480259abe9b9ae9a7f538a7bce6e25e3d5a9 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Thu, 13 Nov 2014 00:41:25 -0500 Subject: [PATCH 03/16] Makes vending machine coffee price in line with other items --- code/game/machinery/vending.dm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index aaf8283a00..b9c8c62e5a 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -657,7 +657,7 @@ vend_power_usage = 85000 //85 kJ to heat a 250 mL cup of coffee products = list(/obj/item/weapon/reagent_containers/food/drinks/coffee = 25,/obj/item/weapon/reagent_containers/food/drinks/tea = 25,/obj/item/weapon/reagent_containers/food/drinks/h_chocolate = 25) contraband = list(/obj/item/weapon/reagent_containers/food/drinks/ice = 10) - prices = list(/obj/item/weapon/reagent_containers/food/drinks/coffee = 25, /obj/item/weapon/reagent_containers/food/drinks/tea = 25, /obj/item/weapon/reagent_containers/food/drinks/h_chocolate = 25) + prices = list(/obj/item/weapon/reagent_containers/food/drinks/coffee = 3, /obj/item/weapon/reagent_containers/food/drinks/tea = 3, /obj/item/weapon/reagent_containers/food/drinks/h_chocolate = 3) From b7429a76eaff60ae753bcd072dbfd7b8f93fd6ae Mon Sep 17 00:00:00 2001 From: mwerezak Date: Thu, 13 Nov 2014 01:03:29 -0500 Subject: [PATCH 04/16] Adds tajaran/unathi tacticool sprite sheets No more clipping into muzzles. --- code/modules/clothing/head/helmet.dm | 6 +++++- code/modules/clothing/masks/boxing.dm | 8 ++++++++ icons/mob/species/tajaran/helmet.dmi | Bin 11286 -> 11801 bytes icons/mob/species/tajaran/mask.dmi | Bin 0 -> 570 bytes icons/mob/species/unathi/helmet.dmi | Bin 11230 -> 11164 bytes icons/mob/species/unathi/mask.dmi | Bin 0 -> 570 bytes 6 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 icons/mob/species/tajaran/mask.dmi create mode 100644 icons/mob/species/unathi/mask.dmi diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm index ce2d677da5..1556b01ddc 100644 --- a/code/modules/clothing/head/helmet.dm +++ b/code/modules/clothing/head/helmet.dm @@ -82,7 +82,11 @@ icon_state = "swathelm" item_state = "helmet" flags = FPRINT|TABLEPASS|HEADCOVERSEYES - + sprite_sheets = list( + "Tajara" = 'icons/mob/species/tajaran/helmet.dmi', + "Unathi" = 'icons/mob/species/unathi/helmet.dmi', + ) + armor = list(melee = 62, bullet = 50, laser = 50,energy = 35, bomb = 10, bio = 2, rad = 0) flags_inv = HIDEEARS siemens_coefficient = 0.7 diff --git a/code/modules/clothing/masks/boxing.dm b/code/modules/clothing/masks/boxing.dm index 0a3b8e08b7..eeaf55c557 100644 --- a/code/modules/clothing/masks/boxing.dm +++ b/code/modules/clothing/masks/boxing.dm @@ -7,6 +7,10 @@ flags_inv = HIDEFACE body_parts_covered = FACE w_class = 2 + sprite_sheets = list( + "Tajara" = 'icons/mob/species/tajaran/helmet.dmi', + "Unathi" = 'icons/mob/species/unathi/helmet.dmi', + ) /obj/item/clothing/mask/balaclava/tactical name = "green balaclava" @@ -16,6 +20,10 @@ flags = FPRINT|TABLEPASS|BLOCKHAIR flags_inv = HIDEFACE w_class = 2 + sprite_sheets = list( + "Tajara" = 'icons/mob/species/tajaran/helmet.dmi', + "Unathi" = 'icons/mob/species/unathi/helmet.dmi', + ) /obj/item/clothing/mask/luchador name = "Luchador Mask" diff --git a/icons/mob/species/tajaran/helmet.dmi b/icons/mob/species/tajaran/helmet.dmi index 988512b58c98cb4a9818cd4a314355b37d1b576c..81a64acdf48bd40b46c00d12b85b012926c9d360 100644 GIT binary patch literal 11801 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 KvGT>+5B~$6ulGIx literal 11230 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 diff --git a/icons/mob/species/unathi/mask.dmi b/icons/mob/species/unathi/mask.dmi new file mode 100644 index 0000000000000000000000000000000000000000..cf3be6425fe4e4304566eb7ac4c55f0b0c76ebca GIT binary patch literal 570 zcmV-A0>%A_P)V=-0C=2JR&a84_w-Y6@%7{?OD!tS%+FJ>RWQ*r;NmRL zOex6#a*U0*I5Sc+(=$pSoZ^zil2jm5DJd~0F*zr(EK!MzGbOXA7^IPlGp#5wHx^u2 zroJ{gaQKAouq_TpydPbV4RWl{Ocz2-sUOo5ZvYbHLRjtyq=-xpWIiQ9Z~`Qz$MV*6 zT+0~=aD|Q3^z1xI*&v7$ho8~_S?X|m!Q=6GR>PkEs^Hz8|6#cV=h!(aY18Rub7H?$o=meB>*!+AU&&x$C;yG>Y@1?L0i`k8F0-u3dQZ@)JjjQ@MBxg);j z{~)N?pl$4+YS~LXw6$a5x4~fkFM7v(SM&!Ex*pEs@%$4$0fRtYk Date: Thu, 13 Nov 2014 01:20:16 -0500 Subject: [PATCH 05/16] Cleans up slime saycode clutter It was cluttering saycode used by every living mob in the game with something that only applies to slimes. Also, code that really applies to hearing a message shouldn't have been mixed up with code for speaking a message. Really awful. --- code/modules/mob/living/carbon/metroid/say.dm | 13 +++++++++++++ code/modules/mob/living/say.dm | 6 ------ 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/code/modules/mob/living/carbon/metroid/say.dm b/code/modules/mob/living/carbon/metroid/say.dm index 89708595da..f4de10ceb7 100644 --- a/code/modules/mob/living/carbon/metroid/say.dm +++ b/code/modules/mob/living/carbon/metroid/say.dm @@ -21,3 +21,16 @@ return 1 return ..() +/mob/living/carbon/slime/hear_say(var/message, var/verb = "says", var/datum/language/language = null, var/alt_name = "", var/italics = 0, var/mob/speaker = null, var/sound/speech_sound, var/sound_vol) + if (speaker in Friends) + speech_buffer = list() + speech_buffer.Add(speaker) + speech_buffer.Add(lowertext(html_decode(message))) + ..() + +/mob/living/carbon/slime/hear_radio(var/message, var/verb="says", var/datum/language/language=null, var/part_a, var/part_b, var/mob/speaker = null, var/hard_to_hear = 0, var/vname ="") + if (speaker in Friends) + speech_buffer = list() + speech_buffer.Add(speaker) + speech_buffer.Add(lowertext(html_decode(message))) + ..() diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm index 2623af1a04..4ff66b3403 100644 --- a/code/modules/mob/living/say.dm +++ b/code/modules/mob/living/say.dm @@ -117,12 +117,6 @@ proc/get_radio_key_from_channel(var/channel) hearturfs += M.locs[1] for(var/obj/O in M.contents) listening_obj |= O - if (isslime(I)) - var/mob/living/carbon/slime/S = I - if (src in S.Friends) - S.speech_buffer = list() - S.speech_buffer.Add(src) - S.speech_buffer.Add(lowertext(html_decode(message))) else if(istype(I, /obj/)) var/obj/O = I hearturfs += O.locs[1] From ba12d873887fbef380d8e30ac2b69ef207ed7d20 Mon Sep 17 00:00:00 2001 From: Raptor1628 Date: Thu, 13 Nov 2014 01:28:15 -0500 Subject: [PATCH 06/16] ERT Update Bevy of ERT changes and updates, outlined in a forum thread here: --- code/game/objects/items/devices/PDA/PDA.dm | 6 + .../objects/items/weapons/storage/belt.dm | 4 +- code/modules/clothing/spacesuits/ert.dm | 6 +- code/modules/reagents/Chemistry-Machinery.dm | 18 ++ icons/mob/back.dmi | Bin 42097 -> 43949 bytes maps/tgstation2.dmm | 168 +++++++++++------- 6 files changed, 126 insertions(+), 76 deletions(-) diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index b43035509a..eae3c09592 100755 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -144,6 +144,12 @@ var/global/list/obj/item/device/pda/PDAs = list() detonate = 0 //toff = 1 +/obj/item/device/pda/ert + default_cartridge = /obj/item/weapon/cartridge/captain + icon_state = "pda-h" + detonate = 0 + hidden = 1 + /obj/item/device/pda/cargo default_cartridge = /obj/item/weapon/cartridge/quartermaster icon_state = "pda-cargo" diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm index be98962411..ae7469577e 100644 --- a/code/game/objects/items/weapons/storage/belt.dm +++ b/code/game/objects/items/weapons/storage/belt.dm @@ -82,7 +82,7 @@ max_w_class = 3 max_combined_w_class = 21 can_hold = list( - "/obj/item/weapon/grenade/flashbang", + "/obj/item/weapon/grenade", "/obj/item/weapon/reagent_containers/spray/pepper", "/obj/item/weapon/handcuffs", "/obj/item/device/flash", @@ -140,4 +140,4 @@ item_state = "swatbelt" storage_slots = 9 max_w_class = 3 - max_combined_w_class = 21 + max_combined_w_class = 21 diff --git a/code/modules/clothing/spacesuits/ert.dm b/code/modules/clothing/spacesuits/ert.dm index ab2f48c182..0568dacf6a 100644 --- a/code/modules/clothing/spacesuits/ert.dm +++ b/code/modules/clothing/spacesuits/ert.dm @@ -27,13 +27,9 @@ icon_state = "ert_commander" item_state = "suit-command" w_class = 3 - allowed = list(/obj/item/weapon/gun,/obj/item/ammo_magazine,/obj/item/ammo_casing,/obj/item/weapon/melee/baton,/obj/item/weapon/melee/energy/sword,/obj/item/weapon/handcuffs,/obj/item/weapon/tank/emergency_oxygen) slowdown = 1 armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 100, rad = 100) - allowed = list(/obj/item/device/flashlight, /obj/item/weapon/tank, /obj/item/device/t_scanner, /obj/item/weapon/rcd, /obj/item/weapon/crowbar, \ - /obj/item/weapon/screwdriver, /obj/item/weapon/weldingtool, /obj/item/weapon/wirecutters, /obj/item/weapon/wrench, /obj/item/device/multitool, \ - /obj/item/device/radio, /obj/item/device/analyzer, /obj/item/weapon/gun/energy/laser, /obj/item/weapon/gun/energy/pulse_rifle, \ - /obj/item/weapon/gun/energy/taser, /obj/item/weapon/melee/baton, /obj/item/weapon/gun/energy/gun) + allowed = list(/obj/item/device/flashlight, /obj/item/weapon/tank, /obj/item/device/t_scanner, /obj/item/weapon/rcd, /obj/item/weapon/crowbar, /obj/item/weapon/screwdriver, /obj/item/weapon/weldingtool, /obj/item/weapon/wirecutters, /obj/item/weapon/wrench, /obj/item/device/multitool, /obj/item/device/radio, /obj/item/device/analyzer, /obj/item/weapon/melee/baton, /obj/item/weapon/gun, /obj/item/ammo_magazine, /obj/item/ammo_casing, /obj/item/weapon/handcuffs, /obj/item/weapon/storage/briefcase/inflatable) siemens_coefficient = 0.6 //Commander diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm index 4c6b26f19e..77a1426c38 100644 --- a/code/modules/reagents/Chemistry-Machinery.dm +++ b/code/modules/reagents/Chemistry-Machinery.dm @@ -230,6 +230,24 @@ dispensable_reagents -= list("goldschlager","patron","watermelonjuice","berryjuice") hackedcheck = 0 return + +/obj/machinery/chem_dispenser/meds + name = "chem dispenser magic" + density = 1 + anchored = 1 + icon = 'icons/obj/chemical.dmi' + icon_state = "dispenser" + use_power = 0 + idle_power_usage = 40 + ui_title = "Chem Dispenser 9000" + energy = 100 + max_energy = 100 + amount = 30 + accept_glass = 0 //At 0 ONLY accepts glass containers. Kinda misleading varname. + beaker = null + recharged = 0 + hackedcheck = 0 + dispensable_reagents = list("inaprovaline","ryetalyn","paracetamol","tramadol","oxycodone","sterilizine","leporazine","kelotane","dermaline","dexalin","dexalinp","tricordrazine","anti_toxin","synaptizine","hyronalin","arithrazine","alkysine","imidazoline","peridaxon","bicaridine","hyperzine","rezadone","spaceacillin","ethylredoxrazine","stoxin","chloralhydrate","cryoxadone","clonexadone") ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/icons/mob/back.dmi b/icons/mob/back.dmi index 4e21b4ef9c6b2be05d51bd62bfeda1ec9884c736..f160af9933ec3c1d1a3c2b0013e4cf3c2f37e249 100644 GIT binary patch delta 23105 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 Uab^vE1s)Lw*D=6DOWXryN798&3$ zj-eZdnYoAe{r>m6_db{BVa_>wpS{o8v0|_FTg79(pRpgN!h20DwWxW zag?vl_NI2eN$izcy}zDL4FB~iI1|TjyvJfzgW-R#{%IvLWN~$E!{800B__YU z`a2%#^vpZC%#6zPs&(|NoY?6H){w){9X6PH4&|F$EH+JcQbpBoN)-Qar*h5gi}0^M ztE~^Epl9R&1|Ni<6p3#;rOgmGT1`=}FAEvjlv-HyQ@B-1vQ4l^QYmhT7b`#h?vec2&da-raQb%4(>cfun7||+bSN0Agv&>>LZ}5)|rwl?q2bV3` zgQ1Be#j??r*|gcg@XsILOZHtXeJ8CaG%N3&BWaUs9QMfMAGYE3&=Z;!_QX(iV5GY-_u&dH1W$R|CG~jEtWF z8lOU6=CmUbM*?}OgFWi^9uj|gS$3a|nCMBU2IakhohZw=H|5E#+cE=atDOP2*2PEhlDt*(Q(N>PI5kBm*9q)Mfns&Gea+>Z!By<2u*%fV&(OsluKV zP{?4RzTiC`p0FI1_=i)}{3dlemrtgR-nw-WF?$4cu@)KeXY-Waj0)ln~v` zPrEkR=u=~$^Zl+YoTw@DI~&0Nush$q-s^NgZPs>I7eS9s%&nVstOCiM?~1-VUIRMNJv3Y=g^%4}%V zJxUQHu^|(=m)P7Z^NeZcD8)ywXKr~`M5f&6bl-h#gwpI&;IKD}0vM*0c#|ylyuzx_ zevU}gZdCP&!-f<`;rZYPSJ%pwttIG03PX!dh@h?r^p~=fYR6sn`#y~W{Vq-L2ovqb zW;DFSZGHHvrl#h$;DON3k%4x4KD`ghk!<;{rn;pc=8&@BYTY?v6O~p<&~Ax;HB$HP zw2tMwjFSE{j4-6c5GV}Gd2^9;O=ZmO@jJ+L?~~6au468{qEqy1;Th2QpS*&C9s_|y zr6QESt&!*?o%-WRJ5hx`{siXJO>$r4lchw#7&J3Cb3pNIoe)iJs;mz~u~F4i%xJOm z;hJWp;|vS<*fLRJJrhDw%u#RA8L20zC8aA`c%38dQ?JcD(3^dSDgQcDx3#zWs=P~E zm>*OGx)L7iXITS zpB#c@Aeg!9=ZMw|NfSlhwYRq))y=$4m2&$SBGBX}anoP=N4ErJo=wS!9dhvCdHW&) zV_;QmwFQ)SQ<~`_q*wm#jtoj}%|z)cX^tpZweL%VyX|rd=EIg{j}-*l3W%D{4pzAW zH5kYPZ!BD#9mLv}CbM&))e2hmpFR!PPZZQH?c?n(IvI>r@%?+`URY#M_S6ScTmyl` z3z}TcKpAXKE(M$)@R1nOa5QSHMP0iE%%M=Dt>4Ny0pAW=aJ7zi<`8)-jPxRAl+fcn zI9bLF+Ub2-*0L8Xq&Fa@HoQT`3noW?`ucQb^N+`zZ%Bppz-t;#>wz@-Io}hLoU+uX z%VrwjTKDY6e*1PCT{t;Ki}e2|o%`CVarTj-=ASJ++tDIs_pQmGR;ce)t}6h@y2M;p zsDUGTu#kIs5bo|?&2a0M_9A5hLdB))dunQNVmxm5lEFg1e9;`fr9Mj?W$3(oQPBJD z^twY@eDZID$u^8=otm!?_14s>$J!vJqp&qnH4aV}{mZswYUMGerNm`O=l9KqAJCH? zN|O^h1|khsB;>aD?Co&CK>Ag?MjTU_`_0T%s&aU3m5J@s_8i{P5|cuZ8z_~dINGD{ zDm#Ij>51JadKd%f#zsf~w6wOiL-q@5v%A`|h)7Brz6YO~nVA()?82YNPPF|#ne6~? z*WGnFzbqX_nHIbf8Z(W-h4gCdzxneT3Ynfuo-afa*_N4o09JTL6AAh&n~abT!Dd}X zVxqU*eJ|8T23&POMz%X0s^2j)FLC*`&^U1;Hw>UbQCtn7u9fHLdFXb=d&iK`Jm;T~ z%ZjSm2;~SmQKTLG^gO<{{Twy!R*cAyJhZVaPGe*e7|)={Wea{XSNtKEA4)i9O?&TG zsi}J*Z9*_N9x-nnL<@$!KK>%|j_%3L zn>PbTDx}=l$7FT}OLq13Ejq$!A%o?XD!tZCp_}hCtZ(cyyh~x}dOu>@PcFIs@Km9X z(b&zX7%AjWOG|t9&x`kONo$51Ex+5auFREJ&z?QYW+GvtrPZVoqpa=pl}n1bs*<|Y zqVx@{dG^(rG$uUgHPGce+_}-R%~E9EZt;qwt9MX zOuy7IkQqtra&hX+ChsTnL5ZnV|J~E&GtQD2Onk61 zkiL`W77c*6mOSgsEv5j@O>PuzORF&LjN<_z{ zpi{2V`Hs-BL%?zZkrt)dgPZ4%x4gFRWLx#nGlIGz&;PEqo&pyOk((BD<$ zkMCwVuMcw{V#a9F0lefnaD)j7|F((Z3nYE0lSa_$C*nJQINWGa>OG-0d6pE?M$I7? zu~xDQiUaLw5gFlsoxX0XtY4@d00mGh()rRGu6r=B23LQyR9IGN#a9sYj!+wXo$S)? z?-n~EA|-h42?)HYv>oZe9WaKHLVldEaa*pk@~eqPRofftT1NsYqksrp)>tPH92<#$ zUyljf^3VGSD69Mel}>jxVI(1KYE*UUP=&R6!cM^VW|szya>2(()X0l5d^? zg53UzA-9W`Dm_rTzHnWSEx!W-g0% zU%!40@FMSubn)BtBTHcy1;1WKXr2Qej1h^<-GOlrc=%8BO-mBzxvq6L^cAq@Ug~3O z4%_`8oHfDnYgE*jnBz3BxjA62VPFt?|4q_Mz~jeihxp2->5miF)Pt;#ovbdSSTkN8 zP0g$soV@S(lk+1CnSujBJzcKYmKT+uH?)m6KD&q)Cb8P~4A_eGG4V2W{AX@+3o-UV z>S#-{61F(UuTY9Wy+feHHi15!zdN;MvA$}dwR;X9;RuI$iafXp7m)i<4)IG(`Wyg_ z->DWx-BFD+!f-#4h&ZzOc%$*rG3O(tZt*vKzC=y{Y#WZLCouw9*)$D5EaGIhSUfdv_3;?4W!t#4;NXCioWyTNp;GYZ_U(l zXa@J-!_EU4o+}WrkILuQ>V&>ROvXrzj=`O{_vZs(9ViHmzvJ}105+iCY)s%$O}Gv6 zjlepPtCq?}iyQ}b0?y75%)w^M``O=cX94(v^_wJWg`x>%grz7xgg?oKl95r80TN!j z)%XM<`(EN==k=J|P`w9C!Ys9nuu(=hxD6%R^8dfq(5xO)+@} zPhwC8%s`nGS?OU}-Am3wio|vUE`yDGckW~k>LQp+)%r|`l=U8edJSqvwZ5&AfXlwD z{#U_{OhDrzK5lO2K47v18x^=f_%PF~LB-xA5MdD!_L>-N%|D=Uv17}s#(o|;mY?B+ z{QE@4aU)sYF^r7EQ$eDNkR}Qc>)Y{Ynayt6Xc1=L3#Jpd;>GQq*Xu&3-fcZFm_NeN zjLrFRzE)A0`DBg1I7^DXIudWq^c#PS)z~|m%MPz_UVNcxU|_JgL&v~i4vM}zpd9Lv zVwU%70Lg7?4`bZxV1<1!G&H=!$EQ;0U0=0W)yYYKHLQ&kGODFY0YQ#4b&}Nt`Lk|y zr_)`tO4uAyYfG;rW)cqc-WXc=L&MLxgEbB&hkPru2R59Z3MedlLwxKu<`A4KeQEa@ z_)RRls1B^uZ{e^<72aiW-;c)aSpQs@9*xg-ZK6hcD~&$y5C(`UYuuxcsNcD)pz{xJ zi-?E>nMj+#EO_n#@JEwbUHfGVi;Gp@iSX-Vi;hqM<7yqB1`5VUbVL2`LaXkC@X>GhL%cmBzjpIn4J=LmOmMSLr7aj+q zXkOUZJV2hUuuktU6Ys4@9AuC2^1+GpKL?>7Z)k_yvfUE{kS3xIruC}fZ{ROklX2${6?Ur_$zSZEc`Q?Jt5c)O?sE+hjv;D9p;eC2RQqhD+I?9${3lzC@`^(( zpG4{0f#e{#xetR1ROal)m;opKIeB(>UuGw5`6?o+i+KI@RWM z;Z}CBzypB*w;`{dDe82~M}MCh`o3K7?fVohV6v}%;b1OtZ2#cJN$&BaiPq=8;6hXu zh-eg?UN>_8n=MQi0n$6w;GVc>t@Qq&y27N?HNvV>HM(clY|O%yMf#kOdAqW6prZ-zSPY^XTg__uo97dz>n?f5c&MEPvqi z9@%uB@>xO{`fh@NZtWWLc{g5}mhi;pJNF`cqTry1D$jJyym0Uv%$KarNL?&@?lEDl z%z{a*m}h&+iP^W)wI%v&pYTkluVI|oJ0-K)t@tA;I+8hGgT_oP>1uga9C+h?L;(87 zCd1J50CgC4uVsg+9nHaGWknUiUk zg*ZXR(A6{_we0NdP*%s^L`nByy8MRaR}$6bzUUPjaY-&PKS`UoI_TdaQhytK0BwQm z`Q67xC49JF{dD2~r`M&6I z9)Hv#*ER{836YhZ@RAsO#ihDTT~=MDvz@R-8K8FE?B`!Xy{R3P2;zKoG_X`Eon#ag zLwp?+wol1HuDl~HZA{{?PW1l$?`@S=uV^1Xeyr7*PC$!*8@d?4u6{BXcVFBnnhN97 zd&w@Ckbqf8h9R5Bog;E0Ec9;+eU8#@34N&M)u1N9*h^{VKK4_KcL1(y87x$f(dfPw zC3-@w6s9uvd|K6Hse^@R`GP*D&>k z;hwwWwdHpo0mU)_^o;41@DvrkD4p|(De2ObNkT!Do-e=NDL#&?WgGH7SSS}A9CV#0 zh@;-RMUK1~vn~1HP{QUu|Bt0dVo!=F;rEM7iTGEF4%Dq8CF}K#QumCLGWrB&l}6Y8 z8q=b3E}251K?VYGI^HzAI6?r=EnF1|mRmziCZ&M)ku7-Qt{&bobm$v&(2C>xj5d<} z9DmEo0xhL;rHqr5@~95Z!+tY%9y$fR!O73ct=Gr?02Dnd3A>go$*14MV8>6&Y`0(T zHJ58HfbV=8rhrMGXT2et-{z$6W$M=q4(CL?dFW>#@c^EPz9E)>YWDd3g{Mu`<2Bv5 zdSHCe={osRN~!nN(uD&&b(Y$mmzSF#?r3b+{n~Yi=Vn=FB?5&v>TiNn8hUMeNIOC+ zI46r_p46|fAZm<%D!nkwS$6N@t$1Ji(6x)V^;i^p$@n1aR%ahq*HF3X>=yJC3a}_AQ`_!}m<1u2p{J0}j`J1XPR0RRtC>(QZ>XDKr$Ot8hT7hTm z0ojujUVi>(pdl(OEIchg2eQq!OY3_fN~QX{W@!>9GajLD=WfdSxGNkm2mphikv1JY zNV>8Wyl1UqJ6>)XHtK;^B8Jo<|Ip*kV~xrTxIqgjBz?dp0)afg?s*M-#ZUpWq%6<; zus_aNHx({_-mS5>6XkAzuNg0Xb@V*x(+*aJ%0>F(KP%F>qqsM#@2s6GRNtFF^d_~X z)a{^f9J?&bJ1hN~67X7MS0Rv^--*<#cNiC-g=ChkN2D^DFTbNM-!Vv(klGVr@0V)`1^MDv<(JY7tY}Swb4qL?(-kB^Hspn@4ib9 z4GNXv2?#|~GSy$<;gkX(8}@c}4axw1;G$*|_GByGeX0gPU+PxkRf@`ZQ}0*3Jw3zd zsovh+J#@g;xY0{LYjHyZ8;$%$=?cc=o0===6P3BxZ8h@pl8h6e;D>vCTtLV3OdN^Y z>39YA9bom$B27j8zJ!OmY+m?Cw}X>Mr+p9T>Uyc7 zy;mBY1@QH``j*=N@SHzmOF2LG;hz61(`FPuSMhOrk$Y~TdsY1BQm>5i2@3q(0-xqR zyKA)KR>why%SCX8DG_=shd1ROlWpa&ieO{5?CHPH z3pw!x&>T6YIKj^&qRQen7VYLgqIF@efW;WUL5d&hM%^QC=pWLVqz|Un9V`L2c+@hy z=G@jq4vFej^5f-{I28_%7^j7{YrS!`AhQi2-%zkQNRc}a5d`|vWqJ8Zrm!S}*D~60XZ_O8sBlkM3nRn!|NvLU&9*9ip!5g7AJ}?XFi>)x52lg z!dSp}8kJOk1(>5{6Wk;q0SiGt(Xk{uMehwa-&SRv)rZC{E6_U%MEUkN(RdVj;6{y8GvYsv15^qGc~n$F!F#rR~8 zSw(7RFiJSecKKbLlbWmrA5{B5GImCSkotZOz>35=^)$ZF^FlN+7n7+H|41v&L_@>h ztL|X5b|y{``UtdZbI-5@0g89E9!xB1hE-2?7Ucdu-)0XEKK9=%vn^;I^95`C#4{fq zT0uy=*qQ-Di;p>S?*Cq&vcwdo)-#97-1d1gCwkhTzAv>F683x5Krm71)Zy!pzBd6F z!}zq(Wg*1KX~%=Y%0mteKO?Z&h|jZ4{%TsvyU9bw+toBqSJ|>^eo}oPUW)DJ=<}dL zZfloO+X|m-)s$h+R&)64kC47=f|lK*n(Q~UwYA&3`;s54j|HJDjHO8KOZzAE4n&An zPD@k1IS!BcGtMkyYY}`m-{P$yeqkJVD`2Nu^2@xV@6{$HN7dujX!K+BawkjKBuLc% zw^%Sz^a)7FgzVzdy<|5N`>ARw3Q9>?gLh1m2Cai)(yk2lX(befQ8V$Q*kiMQtuz*& z%sx<1Djo0yUhR{7=ge9l|67B?ENd0T`~+8?R8vZC3vg|YA2}#h6J}fV@`6f-4hU@J zxD)raST3|>MM+p$@XrWlkr&<&=a1ytHfbecpJ?PM2i&&R$t#ww6`LRTGLCTZgI2)- z1F7tYI|{W8FK%SoUlngnVUW^6`<=1*fP>qIm(~T!8RBXWs*W=cj#B?mrEvRNA&@V_ zS@h_qx*l-Z)N|tmpms4@(|C+s4jY;p)JdbUIuxs%>~GcfN=su#>O_zU1twNF=v|rh zCrKzO)qG=0b%N8yU)$BS+Y_D5l-v<7C>w>$92sG+L!5eEtrg7Dy?eXs3pGufJTiN` zEBoJ9@<$aCaUNi`x;kL=GdpsCcK!evt5Gi}ryMx2$I$16(tJ}zy0LLE$1JU2X}0)# zr~d5#5QG75{!gt@cjT_+rLE?53Yupd#>$N(25M@NUESTZ;F0R`(nVqgPYp~-VYBHA zoyrI!!5sL`rq_?p#&F6CpuZ^N>)`p#PwW72exzIz(0B~%!n4Z`NOl)@tY2;cqj3_^ zgwmaux$rN?Xrxz#5Dy0y@KxB5zLU%3D?0MC_5HEDiQo-MNy*H^@zlZZ$FH{t-o8-= z>GEx>xUdKV0*OvU32)*qtr>SpH9%PCUkzvmi<^msQVdq5#kHL2oYcU zC-FN3H{{_vTkBI{$p?Y?=5B)rcBJVx#ttXi!0r-~9XHw=Y1U%!6+ zP!4}em~TQHa2;qdcRa&B9Z!*T$q+BRK=7|$b-v@X^2rFB9?wG%zTsweEbr4nl;3D* z-!{q6vVuYZ^)&kl&KIv=fBi64l8RlOjN`0PWURdoK&jeuFqs>h$+eNH z*8M4pV8Ej?2|f68fsKCvZw*ZgZZKpaZQ%cQ6WKwF)AxOpgyd4wN%hs90YqH$B*=Oz z2=Tel4t{h?uP5_-VJrI(FtVDNgSmRyPFZ$F-Kh z5eLE%Rb8GGfW2QxQ0j;pb5D^m+@mW>4=QVsF=13EVVW$n7$<`@XmZ(6!lGs(Jrs<% z8;}IEjlcPxMZoR%)`{OP>Ij(Tc+*cS;8(oXTKE;Kl)$5$M`ZP8VWQrgnn9^KGJ%MMf`{_mTy!@0!`2~SBwZR~Iw2;vhzV}=i zAdR>h{4?j*udj{R$R8vcdKR{}1s{rSg|1ylT{+wD6(n(zm6QRhjlgw@`|(2uL0HT_ zX#W2Fdp7d?=!fWieQkP~lxct`mF8DDK|36oRPb+p2`{}47mCG+d$a!UW8ryvLIN*` zYGUB{xB*|!_xoaE3^cz~fv4u?nLm`i=QI{T1JCO)B?sO8;>lJ1Cq2=9i9^g2B1)&gB`^m!5rc4CO@&TQlG36ENe(=&*Qsw&-)*XEHN8Rfqifxl&hpAk43hfS1Gbab?Y*M9bl z<=^h^7#>hjI+$$?vmF7z=%E*9-Q@^t3w>tx4j_qKNkDdN0q{w*P1RrBXf2bp$#>rRs z`LPFpPOCdw4@5<)Cg)*1Y~F{AmqDXTYlQg!Wsa}{(du<2`dG;OT#AmQ2ZxtYr)d4U zk}&YQ8P}gQ8;Atm?-Qb|x4V7kPKYo`ALw&3V+ywNkQFT}*Ar=y#69jkT+52O4*4*b zFUyg9kgzz`+QLoIp1+_C@t41try&}_Ue-@UC13jMZ0RVu&>JjnCXC=>wMVi`vjNxy zOT*vqe}2#*x?~v0?m(2sg3eyPzfy#%)w?>Jn0}wM$M&=5cTedv7zB)Xr98I76B3y0 zC-%i{qNau+Vk`Rcw~X-=8FfFFwBijGgcw}A?LK_3$h2{C|J!?} z;A)FbYD#t~I@YKEQiKO~hkm`0-un1F$h|i6sf+jNhPR9O#X1aeM_!&YO|+BhOY2q* zRR_3AnCbdF03&tR@g>_MeVq?yXJ@B>=1iZDCD)rh?UCrk!X_xk1J7te$3*6S%-+*o z{2R|+;iB7F=@RU8FllLSzo0bSsVA!DJMmar-%T}9^ml6qRSgjo*vw09l=gp+S7^JY z)yVPGEv}c*WUT$S^J1yZpZnyH+V58RMr(Da$WH_QUO+ISm!4j6&!BJDZU4hHQ!mG= zv7}a3(VMlLOQSaT(PL6CdlDYO1>|qUq5bnIpChc1`EL>k3ZDUPEmoMBT`wm=xx(VU zswMBGzo6P{tNhyzs;0E+-8##gQPqUKu%+Dy25 zmvI2twPXs8<8dw`x*5N9k4gZ9r7VBFF5vj`ZED=QBzD=WK79A8!HuTPgy`!>H&(J; z=Kp(Vg{gJo9tfHccBI-&q1R$>*$_@+W?(HZnCDYlpwy)>VJx>AO);PU9<=a9nFHoD z-|GslhR;HDr=2Vv^Q~JJCedy;G$0kgfm24z(}W%cohgHdpA%Cj93E-<|)2;tkIH3Od#?wQd1^R zQxoSgg(M*uSrOf-MIBj^H4lhOORWLu$tnokN9*fe-bl=wWVn+?y4Am+0C1lr${fc& zT>d|H*mP-9Pj9I+$;uh201Ng!C%+~EuN29jFr(Hp&ytqU&(@%K?uxS7$s=nNM*Xcs|-zl ze8p>(qj>Kmd^Px-^7%uPF?)sf+|?EHmT-yupMMz>_0wza!h^0C1}HDIUW+>>>?F^Q zqCIZUN;_6c!;5|WQlU7+mUB{ksYXu!P5_&*UxT}Elo>q$u%T#+VIOBXfptZbi;W0R zw%$1od^0QTM=z5_@8rC>>O%bpM?GSS^*h&Mr=9amz5c%oXJvGYj%6A=&F7+_5|5R- zVC)&=aY;|XPiw440W&2-cj}ZS%*mc-m@MLdbD7^kB7YNEKk^L@Fk#gE0We?tJX>8E zIZ~(}=C}wDNFh~^pabJvIz=H#9mXf!jhVe~<{|zFv6(0^SS=okQVB*3#{GC~;u^l8 zvFd`npr6f)c3R@NAc~+_Uq)wuvwWYYe07My^Oeyh&7;thE#1cUD8;F|9L#V zYsxYz|Ci%x{i94bWyu{X3Fn0??nS)qI~;t^`wM(U@g<;H3NsV5UiOnoc4pu#I%NP= zp@!~P9ZKlWty$-+=bkZ6>+=-;`>mx_q@|~Gc+E>3+EtH7tuq9-m(Sn$)nifAWZu~5F$P@;9sim!bNx0Mg(kswWF$8M6p|einCa#Gg z{D`f=%7$4ETlDSwE|emWcIvN9UvBa2#!Qhdwtcx3%1)=b?#JiGyhm$wu`b2`c8Xe^ zzZmzl>7jK~Lt=flJic_>2o0QSGrBVGMW^N%1kCeQzIn;ab567VnUI2wI^4AkF(NTY zzU8yK<>veNBq(|Qu+`q;=G@2%(n$o_SRx3{zQx(TF)mj?=JU)g#On2f<6wKx1Q{>0 zAR8VYW}6{YRz7j)jAS>ccQ0P)vxDi zB>I?Jt{{%i2>AH1{Da7oSwat;t;iFO@iJOIy`s_vGi$^dX)$v0OIus&Lfm+kgx-yy zU;2))F0~YiPou@gQzkD`FVSV-k}Djn^a()SL6iUb_3Ph24-i_zc6R&6MDyRjI(rLY zf>M4K%QRzW`i;-h%|_(EZ-#Bj8~EY%mz_Vi3htNye$4)bvx>)~H$ONDQ!4#&GZBK1 zq?TaJ|K@3y`ZOla+kmQQe!!a7J6Mo8y_vUlsI}AS&64QRxxAYk*=9X#;BWnH>8=uy z{c7x<(pd9pBBQkOL(f4S9%8m5)x&`G%3B)Kq3-2q1%a>NUqEZi8?!C z{`%>yZHt;+IyAQmGgxi9bEQ}tf<3N7^3K)wffM;~uAXYnbWFdeyyjvLsLX<1T-y_G z_yUrod_e_USYrgV{2U%Z7rP6xlz<&9Yp+2GKfCuF6cx|qR{E})cnh=x!LZj|$Uo5P zB!#$cj?;o(qPBpm6hClOr`HXsWZ|@$Tj(2B9-abx^`Rh5KXvQHj?RJN$*N{>el+yl zHMK1F|JFG6%7shogrAKJw27u7IEc>%_Bh#GoOQkrOx2n`Y-Oa?EM*h2Ms0}1EDsQ_ z=~2G>4~XdMh1vAwjgEZG5cDO$;OIg0>>1Uk5)3hf62vy`ya_hDa@gFG)=T|fvK&Mo z36~O@wR0))hp17=F=*_4Jx-lmER&21n!e6`r>eo>cM4Kd9P`JGotv9`(9NW+gW72h zz#YwGVCu*#@#Et}as0{*2hNOiOIIr?2ht}lK^LoX+kAx4dO{T`P#VcTm382jx_8<2 zrAZn2mgpJX1&EIDn3bdknXAOr7(8PQ{!}7U-iCw4btNPa@VNXfJ)H&w6>NvzxjQwk zYpP*JP%`E{Ms>I}F+4KlC8gmA5A43iB(fr>3i7<|x$m7!1^CH~I4^IP3#@^Znl19; z0)7z74S*qTwhAg?aU@8-sW>v&3hnjDK`IPinNcZ`Vh)qK-c9O{()rR}`RJX!PAGd< zvG$k1_}gh^&fv#j)#PbZ5%%>HyOXI*9Fp+`t z=dy})LnTfBcFqcoit^|uW%5TVG8$Yv={R|($lwJMl8sG176}48 zr|RTnS`{wgs~4w1uVo7d%7Jl!)1s81_=gY>Amb@b(?3?X%iM%N8=wi4#9BIZ<9p%8 zp_A@S2g-KC8-3vY!T>&CEfe?`l-MX_wWnwQit`H;F&&b*RzH+a5aj2Sw`oytk2{QJ zs_-lvV^2zzHiKG>=~bY{3Bhv!43W|o0R!Ps=H}-AvLi}YuK_h=6#Gt?SpE7HJ}Mc7%Ss__1@iBC1(vf6x z7dNH#x=XfrHBVOPSqyXsOGx$T-a7@lEhh zOOZ`TV-coc^zbP0ORV%;mzI9o9)=8~b59h)M}x&pA0c5$$blx9{I41+l&3;F=b% zHfR4A1!exPX?{Bb)*I(ARBmb9K)~PUh9wT5(R3gxx;$j>!NZ5IC(d4O0&bfq-=Ymb z!zA>mB@tM(AF_tj>D3RoNjJ<|$C7c3e`>v|pjyM>nX?SJ_%I6Fz3!jjNFV~#>bJ={ zjHFifffu1It@7=miXnCc%aApODW*IRrmqmlf1~W$9yq$k^3Osmrv#0vxytJa{+P1Z zbmt?^c8C$4?(q!%v*Q-aVnyRXG)20fXqgSu>7p_E%lxznsk5^;HPVIM0PRG({oR|Ir5QwrGj*KvQ zz$G{3!&tp_UbSrDZUa!6*Bvz_!>Fs^6XgwOD;jOCm`{&@Ekv1Xt@{Z|*A=)dMBspf zzMmiHXXf@F*H@xQm&Z!3)#2lz^&R_oALMn?cfEXO0}(JyO^wjS_ z#(?gA6Jvp=J-7))=a+)mV!FMN3FU?~e$LI!HG(`f-iYndZ#o^^4mgV*bB6&xy!&o_ zq@bX9?3%}yP~ge^)@@PR_Al>=F9;7F?(|p);w{wDyo=p=y9wZ~j8G=r0;P@~25ek5 zhESZ`Vyqg+jAa6Cm0vn#W&#c6w)L_d9qq+SO(vQr(XJhnx}yW ztNyr+d_!Ug{`9c-!h-wGa*-4xH;7;4ha#tGryi$~WFx6T5>m7*N)Ms0Au4bQ#UHUI zZJ@DX54!@oY^b9D?3(-+-MeSsPR&}mlxa~j z7qfJ0=j3rmEc|XgO?Wc(Oa0tmB*Mj|SY%w&U+qoIE)U+fx$jUzJooc+*(yvMy;jz9 zuR`e9q^?Mh)#fIR0*zKp<`!fb8@HxjfeN*(jD*-Ucr||2A&&0BC*{U9P`LTXCIC=S z0r!7LmJ#~f@b#sHO&|kTlf-O_es^PYaq387qvcE0NHrcKL&9+V|4&=5fms@dJ=dLJ za3Tn(Te}7ZLTYIr@^+Cxp1r6pD{RPUxpc>+7cEJ;(0yGDsjDjj(n$2$LD>CgP!*hX z0Cu3@0b41*dUeg!L|IQS&O)migxfxNuvfPyN~t75sWjDyHA&{9;sDpog3!%*?b@}> zje#`jIraU0mc!GZ{c}gqT!@w0RuUrn64q5gE1W3${6+P(4+Zd(ZI2n&k^~VG@JFAx^luu-o-CIXOAo@~8h%bBg=ZOw-^{B>XO(D)fqozg;<5?f1p_iPnOk zFIrB{odl}V$3ugzYs7q->#;EVO^7FQL)7D;UU)Z%zS~5JloEi^6L}4jdiUpxr9vtE z4-|)@?`}`k*iYPXkX?T+{)Kj?KI`8g7evASWP7+%+&W;(PtkmINP-{TFFd_5Merso zm2_FrG19nHWSCcL|50TBJZ_epZ*#fawQ_`mTs&VH;WQF~SS>VRUM&R2iCP`lM1ii? z-g8(i50LKtnpMOq{2OzfYQ4t}Ls%(mFEx9BB*uLE!ZI9sWbzF}rnQvZSaGliu_gZJ zN9jEC`t!9z`|iVApz9CPM9Vr4o{vsAr0vA#RFj5X@`sTA^#Ba+;e5=da3TU-0E zIg5MrBsbg99}q))4+Y466geU8t{8g^FvNA14pxVBYS4YzbuRNK;z0k zZ*EG33BLIP);UmxJeW8=ZvnSmL1$$>=`o=|V-uAdEC(D|?u%xQby)5MH^RzJB@gMi__pORrO636hlvUEFHyE^g^R zFj{hPWPj^_eDJRMl+ZNBpwQVi#O#-3?MRd%vTk9>a%|Dxjh2@&9H`jur<}2DdhIqC;Z{E4TeI0wy<5B(TndYj=6-aRR85>3df@ z#wNgK9UzL+-PB~}!$r8F0uFSk5jgzf*;_}$!dWbj!98x=c98Pz^wblfKU9KP?v1wt zVbkVk`^(d7Qf&YEaB$&9=gzpOADG7QJxY9kC8j|}I=EQ8qCZZ+7~JHExG_pFCBgm@ z&AJ~Da{Eh6N|0PkMi4tdq5t^h|KvU}bP=MqX4xUTOWNvZjcoL3UgtJM5HLB0>szON zj=~sfX0d|s$&4^!MkwY?$I(z?5o*3zL0?kzTQ4iKPvy3f!V+a-g_rM1JF_RJ7_edy zk+0&Gy7RGrzX9|i^ z*y`yfs_|kA#Z9CNvO)OTEIT+ZBBx^DB8HorSL$OMPTIKIzRWcUG}ONE5hf?eDK{I{~ z$oqN1sZqaYN${lz!pFci0jENJh_+k5vhGS@H*FrAa{L-Xp<(3RsNG9BvfDao@J-Y} znNlVJ3BsYTcUln~IzS=v>4G4|8KC;|rG`7$(49@2Ch)7buKXF=uA!7r1&WCOhTy1_ zibdX~F}hdSEn}02oF7hz+y)+|!`0U0bvyn~n2t(0m0B^050}<*=fcO+W0_AL%xN<& z*~B1d?RaV*y#{lHa(YGQoPT<6jBMk5?j|#KEbQ9xTo8_idJ|Q}@{xc! zdejA`m-UV=VY58uv}NBnb{Fg==B6`%J0mHzvvGnjSq2dHFLmIbGQ$3oHvAY%6M7(l zcr)Go;{W80{r#{y5<5XSHzO>AoM%D6gy72#P@hgN$4nfF2W+ChmFp`(? zJjFrZ0zr{Gro2S;KViK~*NskAZwNjT*S^Xw-J6{$*Iynz!qgNR+Lar?;Jgsi2)*5a zZFG-ci2Z}PyB~BJjf2<0*LF^qirL;G3#(>wJaY=Dg?@LT^O(&uL0ygQYpQD>3Yt8`zjBJ z`Y*_KzMElVL3N|4Lgce}psch@pudxBT*oKJ^(z{t)K5lJ>ZMrhh?kck_kKt?w_K3{ zF>{f=yU#7ff9emU4adRyiEkP{XsCvcBYo>3{=V4bT9}H8O5yQC3*7mUdC!jr!?}5l z5f$*Wk3;~Z(fjD*oS6N%P^VhFu><%*tXR0-@h6;zTp<==!@^>xAbCZNK<0T7f46;y zP$`->y1IyBd+^AFG%1kCEaJ&qY9T3CMUOzvt?1R)gTHJf`%SJZB{R6|5APnr zF#-b5$AZw`lz--`At-!~H@|?{&|Kh=;h^e37VtfHtz!Q)f?gIhsjHln0I7KjrsF(@ zpE~t+&Vck^j^Q$MLdfG-&8)=dps=!%4l{;ev~nsZ#&R0rU`5v|9lV)o=M@e*6rOo9 z3+GDu+~SndSV_go5FVUw`53m6O{wA1^M0 zO$RFNr)i5`k<58g>gX}c7mCM}p|uxwh{jQjn!){n8w(hZ_hdIY$HEMulV0#*ZQ z#eHeA#uzZ40d$jJrZfX8o#q6kT*5%{%r7E^#a)#Tbne&amm?knePRxm*vTtvmHFDd6Ty;Y5h!}t6!TCM{e9Z{=LrD27YjbP&;@ckIXNJxJ)=@Js=R{J+R zCQ2C2LF5EwL_csg-`5%YyA4Lq+AAvNKA%~VW_D{Ezhu4)2rcYY(tEle`-E=OZkKd^ zE!#L$-2y$95v+nPJQ)FBTi+rj)=T47`^Q{TyYixO9@ld4^2mK(0lV0rUcrc#mZ#(N zEv_afQjUO@)^{+|UJ1k`(0)b?{pxh8Y#{x;(wX(Gs%NlVk9l&DZ;r+@H83cM2m<1M zvij2H=Wv$R(?XLmv8YdLFa6EVzfSIa%CX1_WogHsSfD@XG}aqt!Of&^?VX*o&(F zpTO2=wbiPvafM5jf|5Zo5&D%h`=1{Vw4X>@DcYKE-_Si^c-axf37goTAk^99;nGpR z_R&M&VczHJ&OeOo!DupRdU1H@dECX&&kRepuk%lE#xE{i(Jh9Ym}TxS1Lm6=X9ULuIA^ z-@Y%Pz2|9y^%@we5CPQG)EI(-fE%{O(yLcPhbJ1s)(ovEVif==^#}_MHEFokX{0)EImpyv^OkG7ZD^vr~wp330>(` zsz{TP1Q5xxlz;(3ha@C9!+z(Szmj*ZT+^<3C(k_h?;cCb*W~rV2BK$5Q#k9EeULH} zXd;VBSI(P9ymzX$_gNmQ|9)ZjMz3QCj@7ek8%w!p);aMmIPV`LR5uuWgJy&@1Z=ad?S2K8HiIzw{ z3g}69K!-kgQ$K~Xg7$VJz*FxhSeI@wLIcxZ-SgP|MVue`C>|>&ySyEOF)tkrB01yt{s9NG($~I(jc8jeZSlRDJgj$#$7xd3x$iO zX=T9)jG$vTOno9puN+)1J!lcNT_+Eh{`2$tia2W1;rEuxX$@yarf$w<5h+d6P(a1Q zVY7|={0(~YBM;sENX+GW`Yrvqc((PxGAC0`7}XaIzjp|{V3OV4-EY8wXP=muF$lyS z|J?#li-SGv4MWRtyg?rA-7!cRpbX&p0Uxo6b?N}wlQ8^kHA|28{dmvCW`(TXRa23^ zVn>23f6)MYGq7o7b7bM^>KihvSbK^x)N^lifz+p425b?F6naLiW^h)dYH%xEk&#Vi zWoxqFu)VLdy3XKW!=i(W5db6uthsq3>B{Thr~9-h!Z2+J^*7A-uXC3zEf0f@EGBpo zZ9MK`ocjc`fbNU*tiBXui?w}A^|5;LOV}m=8}+R#3(T$?e*LuZ7bWYR3Z04cT|E3# z=vLc3T}UXA$N6kb$L^sm8CoYlx081^yuzAwBD>2 z*WnNW4KARJV=rQXb$ULah80S{Jc%sQ^K7$W)L+`(D*F#P&wpT6yk#kQo*0vGL- z!83;!>ui>2Eyg%xnCH^0b+R$X5nJwH1_ITB#V~zE$GQ=!LX2slyJ42{k5-Pe#9wT! zkJ<RbN-RQTC9RH~fab9SlHYbO0RNF=aM7RQM~(pQ0rF$s(r zw5y?}#|VAWzyQ`FJRWmoNoQt0q3H6APi&vbRL^0Me;WdNb*wU9Rmp{hHLcA?a?V5S z!HUHb)udx(OFydPlamka-AWN17Z*3vA3R#-GR|SM2-1_~Zd7}m$~K+iHzudOw-}ry z@ziK|NqRB`GMuloyp}6^LK~BILm>BhBF{a2%e@4k=y4!RQ3rCib(*kgmDz^S<3W(~Ji|cjyDxZa39IXZv>p#Ow1VRv?#rkX zMQg+ZU$w)JJDi%lac6ppvo7MYXefE`ARm@r z1te^*T{~=gyjOS+YcnrHV)J4o4*uFT-xDscSq%pMTt4L8aSWSlqX&WDxkEt+NefCi zf_Ju3Bx8N&HI%BWSj8utDY@~92F#oDQhL5v^(G)s0bG6taIINcS-0GDt`nILMrxcW z7SpO;^^|X`d#L@OvF!7J#>-FZDYq6vB5#s~CTL`T(}E9nIWLZXs%j_J^!^*|0Arp@ z#K)t~lmk>~bvK!%&CYw%RAX0lzVfHv?9Stbk|oHYuFEI6GZDDE9GJu<0yXWfd8Gk@ zG=B{)P_`FLJot;YU-IXv69fGbVu=OC7^0l1RzT!*wXw-KA8@zO5F&+XD2_>yQ}DW-rK~ivtJ}$kmOBR?KJ2KALKu1P z(`V1N?yB+{cN9GSPbXQc{W+ZXZ<&i9UHLae9>3h@`bgSDLTzHR7SAG)jsQydD`6J5 zb~-j!q%O^TYMj&cj>coyT*2ltQgYzEA8uBJh50M|{c9b%!98t#&c8)ywML|*Oyeyy zyVOh#k)x=$DerOyPFeiZPFi&6gLcvXOXMWeIRca1tqAYX&Ct`rA@&51W1BAgvPN2k zio?QxbhiK6wmpMD7&i>fOXR9yrd#N~JJR?a=Kk#gFl%Xg=!$pKnTcZ#2AErJ^HKqF z>ndccOzJ2A!g*kN0jLc8mt~y?ZZ@!K1&(r4mj0Huu;&#oKrk*P%wXH&L31x zEtsv;ZAw`0+*;%}wi#I{y0^>0-UsiN$=-G_wj#avdnO*D_PdvcqCL!X<^Md<0YG$uK`7tOB}_BVz)QCDoNq)cd;JB6lRp) zG5_B!=gl#BWv`NA&4?rUF^BjYix(6phpcv|eJ94|6lw0QI=s9(=w`3W2r|2(xXDKY zHL>XjRC#%}w?=rBQtvF3Io1CQQIpckOumpjL2LhJTNY9C?25soFZ^;mY}8<3Uf3;L zXRsRoNY5^d*j`rEWY7PIMsJ6f>N95xZSfci*pVs z{&J!|H@9VIwJ^36xxh_q&WZfWTNZKF8;1EqcKf<>t#gIOc>)yKT*q1ZZ@ouwCGnu> z=ajq+)9@{HD2Zx^$l@c|f^3dMZxniG(88Sa5QJiq5zTs+k~(y)IBkqH&T4>Zrl!ak zuHY1RDhxe+B7IqHqSn1@acFGYrIT1)+_`aTjg*j0qKaMF+UQv>-DDW$C#2}JD+W;R z{V$=hj`bC<`{xO5uRzhSM>@pN5Lnoq%Ehsygc} z5)<15kFnwV)`tUl1d%^TVRW?w<85eP*Rzj`JhlyQpX2yGQ#?oYEu32Dt6^d@i3CRX z(h{oZLS;g>p^~gVo}O2D;$2XDI`Hg_E*Tj0gs@TNBoy_(KWQ|8o+aCwq*zg^_|fPR zNL*Z8o~_U(U}4Y@;*=mcDcV)|pW)Fc0kKX{v=JB_g+himjjY^MhCkVHS-NY~> zo5Kfepo!Db&nREB9ewtFGG>TT-{$AHFRSLS1Zu0>q?TSadMbRs_Ro$4Yp7|}D2(wg zd^1VkmlIFxn2mJ)I(9d+hced9Y|AX1*u}}5t8FW*7w!_&#-Q=h^pDdW@vxJqrjgd9 zCnrj@TA!vb49EvTKQ9i;o0r0L9Vvh;|1=a1c;a?YfK)weuQ{1~=C)_prWd(;JFwUV z*eynD{Sjx)svc$6O!A=z?OEltZzdEAg=5{itGE0X8`cEM{Hb@NOGUdt)H-1pZynOs zx;2f>H#^WYylpX3f~C{!+WNC~S51Zx&o;-)nQBT9j0t}l&M}sOd4}R1gqO4)uKzv0WWsQ;ZmQ6Z zI4{wwT+PK7#5j!g7kh39K2e;2_3r3=>|APgL{P|;u^QFIK|WmiJzI0sD^=bgFKcqG zEW}rToHQk1q^17zdkoG;&gpqb$68w?7SRwOWCDZ1`}REQW&oB<{Y^?OSBH^5$jorv zAd+YYbQ^c!&#Xi2Beav)!Kvf@)yZfBQnOtVkAiTpDx1)8;qsHCRYuF#jO;6~NUAk> z1Nr;ks>3*1VMC%aPyP@LyvSEkzH zqUN4!gFmVO8tKkA@d4|v>7aE3Tv+4~FhNWmZ}!{NMTAcJNduk4nJWD-p_^#wAV~u* zlRXPYQOS%G zW8;rFo>6_N#KAO(;y0THy6O#g6zIiC*wZDf1TJD3{e}ZQ=4o-V*{GX$Q$c7Pk7T?} zwI%G8`^N{F)XcpeF5@cA>2ksTs_?RpI3)B>G- - - S.perunit) S.amount = round(stored_material[mat] / S.perunit) - S.loc = loc + S.loc = loc diff --git a/code/game/machinery/bots/bots.dm b/code/game/machinery/bots/bots.dm index d41405aed3..9f98f89dee 100644 --- a/code/game/machinery/bots/bots.dm +++ b/code/game/machinery/bots/bots.dm @@ -52,18 +52,6 @@ user << "[src]'s parts look very loose!" return -/obj/machinery/bot/attack_animal(var/mob/living/simple_animal/M as mob) - if(M.melee_damage_upper == 0) return - src.health -= M.melee_damage_upper - src.visible_message("\red [M] has [M.attacktext] [src]!") - M.attack_log += text("\[[time_stamp()]\] attacked [src.name]") - if(prob(10)) - new /obj/effect/decal/cleanable/blood/oil(src.loc) - healthcheck() - - - - /obj/machinery/bot/attackby(obj/item/weapon/W as obj, mob/user as mob) if(istype(W, /obj/item/weapon/screwdriver)) if(!locked) diff --git a/code/game/machinery/bots/medbot.dm b/code/game/machinery/bots/medbot.dm index 5a0e424e15..c7381a5cd1 100644 --- a/code/game/machinery/bots/medbot.dm +++ b/code/game/machinery/bots/medbot.dm @@ -96,9 +96,6 @@ src.icon_state = "medibot[src.on]" src.updateUsrDialog() -/obj/machinery/bot/medbot/attack_paw(mob/user as mob) - return attack_hand(user) - /obj/machinery/bot/medbot/attack_hand(mob/user as mob) . = ..() if (.) diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index dc1ee050aa..aa5d7a02f1 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -121,8 +121,7 @@ /obj/machinery/clonepod/attack_ai(mob/user as mob) src.add_hiddenprint(user) return attack_hand(user) -/obj/machinery/clonepod/attack_paw(mob/user as mob) - return attack_hand(user) + /obj/machinery/clonepod/attack_hand(mob/user as mob) if ((isnull(src.occupant)) || (stat & NOPOWER)) return diff --git a/code/game/machinery/computer/HolodeckControl.dm b/code/game/machinery/computer/HolodeckControl.dm index 3c153b58d1..2e186781e1 100644 --- a/code/game/machinery/computer/HolodeckControl.dm +++ b/code/game/machinery/computer/HolodeckControl.dm @@ -43,9 +43,6 @@ var/global/list/holodeck_programs = list( attack_ai(var/mob/user as mob) return src.attack_hand(user) - attack_paw(var/mob/user as mob) - return - attack_hand(var/mob/user as mob) if(..()) @@ -316,15 +313,6 @@ var/global/list/holodeck_programs = list( return // HOLOFLOOR DOES NOT GIVE A FUCK - - - - - - - - - /obj/structure/table/holotable name = "table" desc = "A square piece of metal standing on four metal legs. It can not move." @@ -335,13 +323,6 @@ var/global/list/holodeck_programs = list( layer = 2.8 throwpass = 1 //You can throw objects over this, despite it's density. - -/obj/structure/table/holotable/attack_paw(mob/user as mob) - return attack_hand(user) - -/obj/structure/table/holotable/attack_animal(mob/living/user as mob) //Removed code for larva since it doesn't work. Previous code is now a larva ability. /N - return attack_hand(user) - /obj/structure/table/holotable/attack_hand(mob/user as mob) return // HOLOTABLE DOES NOT GIVE A FUCK @@ -529,10 +510,6 @@ var/global/list/holodeck_programs = list( user << "The station AI is not to interact with these devices!" return -/obj/machinery/readybutton/attack_paw(mob/user as mob) - user << "You are too primitive to use this device." - return - /obj/machinery/readybutton/New() ..() diff --git a/code/game/machinery/computer/aifixer.dm b/code/game/machinery/computer/aifixer.dm index 5c628354d1..77e5dc977c 100644 --- a/code/game/machinery/computer/aifixer.dm +++ b/code/game/machinery/computer/aifixer.dm @@ -24,9 +24,6 @@ /obj/machinery/computer/aifixer/attack_ai(var/mob/user as mob) return attack_hand(user) -/obj/machinery/computer/aifixer/attack_paw(var/mob/user as mob) - return attack_hand(user) - /obj/machinery/computer/aifixer/attack_hand(var/mob/user as mob) if(..()) return diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm index 11bebd70b6..2915bf0761 100644 --- a/code/game/machinery/computer/arcade.dm +++ b/code/game/machinery/computer/arcade.dm @@ -56,9 +56,6 @@ /obj/machinery/computer/arcade/attack_ai(mob/user as mob) return src.attack_hand(user) -/obj/machinery/computer/arcade/attack_paw(mob/user as mob) - return src.attack_hand(user) - /obj/machinery/computer/arcade/attack_hand(mob/user as mob) if(..()) return diff --git a/code/game/machinery/computer/camera.dm b/code/game/machinery/computer/camera.dm index c57ab0de54..14c7847c6a 100644 --- a/code/game/machinery/computer/camera.dm +++ b/code/game/machinery/computer/camera.dm @@ -15,11 +15,6 @@ attack_ai(var/mob/user as mob) return attack_hand(user) - - attack_paw(var/mob/user as mob) - return attack_hand(user) - - check_eye(var/mob/user as mob) if (user.stat || ((get_dist(user, src) > 1 || !( user.canmove ) || user.blinded) && !istype(user, /mob/living/silicon))) //user can't see - not sure why canmove is here. return null diff --git a/code/game/machinery/computer/card.dm b/code/game/machinery/computer/card.dm index 9341aca674..4342778f9a 100644 --- a/code/game/machinery/computer/card.dm +++ b/code/game/machinery/computer/card.dm @@ -72,9 +72,6 @@ /obj/machinery/computer/card/attack_ai(var/mob/user as mob) return attack_hand(user) -/obj/machinery/computer/card/attack_paw(var/mob/user as mob) - return attack_hand(user) - /obj/machinery/computer/card/attack_hand(mob/user as mob) if(..()) return if(stat & (NOPOWER|BROKEN)) return diff --git a/code/game/machinery/computer/cloning.dm b/code/game/machinery/computer/cloning.dm index d8ea79da1d..dadda5cfd7 100644 --- a/code/game/machinery/computer/cloning.dm +++ b/code/game/machinery/computer/cloning.dm @@ -69,9 +69,6 @@ ..() return -/obj/machinery/computer/cloning/attack_paw(mob/user as mob) - return attack_hand(user) - /obj/machinery/computer/cloning/attack_ai(mob/user as mob) return attack_hand(user) diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index a6047cf534..0af60a14c7 100644 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -276,11 +276,6 @@ /obj/machinery/computer/communications/attack_ai(var/mob/user as mob) return src.attack_hand(user) - -/obj/machinery/computer/communications/attack_paw(var/mob/user as mob) - return src.attack_hand(user) - - /obj/machinery/computer/communications/attack_hand(var/mob/user as mob) if(..()) return diff --git a/code/game/machinery/computer/medical.dm b/code/game/machinery/computer/medical.dm index a23c717a7b..f21322a3e2 100644 --- a/code/game/machinery/computer/medical.dm +++ b/code/game/machinery/computer/medical.dm @@ -44,9 +44,6 @@ /obj/machinery/computer/med_data/attack_ai(user as mob) return src.attack_hand(user) -/obj/machinery/computer/med_data/attack_paw(user as mob) - return src.attack_hand(user) - /obj/machinery/computer/med_data/attack_hand(mob/user as mob) if(..()) return diff --git a/code/game/machinery/computer/pod.dm b/code/game/machinery/computer/pod.dm index 5a33b62cb8..042555fe00 100644 --- a/code/game/machinery/computer/pod.dm +++ b/code/game/machinery/computer/pod.dm @@ -110,11 +110,6 @@ /obj/machinery/computer/pod/attack_ai(var/mob/user as mob) return attack_hand(user) - -/obj/machinery/computer/pod/attack_paw(var/mob/user as mob) - return attack_hand(user) - - /obj/machinery/computer/pod/attack_hand(var/mob/user as mob) if(..()) return diff --git a/code/game/machinery/computer/prisoner.dm b/code/game/machinery/computer/prisoner.dm index 3bd94c747a..56f093276a 100644 --- a/code/game/machinery/computer/prisoner.dm +++ b/code/game/machinery/computer/prisoner.dm @@ -17,11 +17,6 @@ attack_ai(var/mob/user as mob) return src.attack_hand(user) - - attack_paw(var/mob/user as mob) - return - - attack_hand(var/mob/user as mob) if(..()) return diff --git a/code/game/machinery/computer/prisonshuttle.dm b/code/game/machinery/computer/prisonshuttle.dm index 25607ab66f..f1c57104cc 100644 --- a/code/game/machinery/computer/prisonshuttle.dm +++ b/code/game/machinery/computer/prisonshuttle.dm @@ -21,19 +21,9 @@ var/prison_shuttle_timeleft = 0 var/allowedtocall = 0 var/prison_break = 0 - - attackby(I as obj, user as mob) - return src.attack_hand(user) - - attack_ai(var/mob/user as mob) return src.attack_hand(user) - - attack_paw(var/mob/user as mob) - return src.attack_hand(user) - - attackby(I as obj, user as mob) if(istype(I, /obj/item/weapon/screwdriver)) playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1) diff --git a/code/game/machinery/computer/robot.dm b/code/game/machinery/computer/robot.dm index f8029b0e96..43e65b1273 100644 --- a/code/game/machinery/computer/robot.dm +++ b/code/game/machinery/computer/robot.dm @@ -20,11 +20,6 @@ /obj/machinery/computer/robotics/attack_ai(var/mob/user as mob) return src.attack_hand(user) -/obj/machinery/computer/robotics/attack_paw(var/mob/user as mob) - - return src.attack_hand(user) - return - /obj/machinery/computer/robotics/attack_hand(var/mob/user as mob) if(..()) return @@ -197,10 +192,10 @@ else if (href_list["magbot"]) if(src.allowed(usr)) var/mob/living/silicon/robot/R = locate(href_list["magbot"]) - + // whatever weirdness this is supposed to be, but that is how the href gets added, so here it is again if(istype(R) && istype(usr, /mob/living/silicon) && usr.mind.special_role && (usr.mind.original == usr) && !R.emagged) - + var/choice = input("Are you certain you wish to hack [R.name]?") in list("Confirm", "Abort") if(choice == "Confirm") if(R && istype(R)) diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm index fde49fb7e3..f1f866864a 100644 --- a/code/game/machinery/computer/security.dm +++ b/code/game/machinery/computer/security.dm @@ -50,9 +50,6 @@ /obj/machinery/computer/secure_data/attack_ai(mob/user as mob) return attack_hand(user) -/obj/machinery/computer/secure_data/attack_paw(mob/user as mob) - return attack_hand(user) - //Someone needs to break down the dat += into chunks instead of long ass lines. /obj/machinery/computer/secure_data/attack_hand(mob/user as mob) if(..()) diff --git a/code/game/machinery/computer/skills.dm b/code/game/machinery/computer/skills.dm index 6d2a4857c5..21d584fe8b 100644 --- a/code/game/machinery/computer/skills.dm +++ b/code/game/machinery/computer/skills.dm @@ -33,9 +33,6 @@ /obj/machinery/computer/skills/attack_ai(mob/user as mob) return attack_hand(user) -/obj/machinery/computer/skills/attack_paw(mob/user as mob) - return attack_hand(user) - //Someone needs to break down the dat += into chunks instead of long ass lines. /obj/machinery/computer/skills/attack_hand(mob/user as mob) if(..()) diff --git a/code/game/machinery/computer/specops_shuttle.dm b/code/game/machinery/computer/specops_shuttle.dm index bc050c6d1d..ba44553b16 100644 --- a/code/game/machinery/computer/specops_shuttle.dm +++ b/code/game/machinery/computer/specops_shuttle.dm @@ -248,9 +248,6 @@ var/specops_shuttle_timeleft = 0 /obj/machinery/computer/specops_shuttle/attack_ai(var/mob/user as mob) return attack_hand(user) -/obj/machinery/computer/specops_shuttle/attack_paw(var/mob/user as mob) - return attack_hand(user) - /obj/machinery/computer/specops_shuttle/attackby(I as obj, user as mob) if(istype(I,/obj/item/weapon/card/emag)) user << "\blue The electronic systems in this console are far too advanced for your primitive hacking peripherals." diff --git a/code/game/machinery/computer/syndicate_specops_shuttle.dm b/code/game/machinery/computer/syndicate_specops_shuttle.dm index 7ba21efbcf..970a68b64a 100644 --- a/code/game/machinery/computer/syndicate_specops_shuttle.dm +++ b/code/game/machinery/computer/syndicate_specops_shuttle.dm @@ -184,9 +184,6 @@ var/syndicate_elite_shuttle_timeleft = 0 /obj/machinery/computer/syndicate_elite_shuttle/attack_ai(var/mob/user as mob) return attack_hand(user) -/obj/machinery/computer/syndicate_elite_shuttle/attack_paw(var/mob/user as mob) - return attack_hand(user) - /obj/machinery/computer/syndicate_elite_shuttle/attackby(I as obj, user as mob) if(istype(I,/obj/item/weapon/card/emag)) user << "\blue The electronic systems in this console are far too advanced for your primitive hacking peripherals." diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm index 48321f9fc8..dd94a88bc6 100644 --- a/code/game/machinery/cryopod.dm +++ b/code/game/machinery/cryopod.dm @@ -20,9 +20,6 @@ var/global/list/frozen_items = list() circuit = "/obj/item/weapon/circuitboard/cryopodcontrol" var/mode = null -/obj/machinery/computer/cryopod/attack_paw() - src.attack_hand() - /obj/machinery/computer/cryopod/attack_ai() src.attack_hand() diff --git a/code/game/machinery/door_control.dm b/code/game/machinery/door_control.dm index 496c55ecb6..05b8cb7f8c 100644 --- a/code/game/machinery/door_control.dm +++ b/code/game/machinery/door_control.dm @@ -41,9 +41,6 @@ else user << "Error, no route to host." -/obj/machinery/door_control/attack_paw(mob/user as mob) - return src.attack_hand(user) - /obj/machinery/door_control/attackby(obj/item/weapon/W, mob/user as mob) /* For later implementation if (istype(W, /obj/item/weapon/screwdriver)) @@ -155,9 +152,6 @@ /obj/machinery/driver_button/attack_ai(mob/user as mob) return src.attack_hand(user) -/obj/machinery/driver_button/attack_paw(mob/user as mob) - return src.attack_hand(user) - /obj/machinery/driver_button/attackby(obj/item/weapon/W, mob/user as mob) if(istype(W, /obj/item/device/detective_scanner)) diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 65a1010089..4f015975fe 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -606,8 +606,6 @@ About the new airlock wires panel: s.set_up(5, 1, src) s.start() return ..() -/obj/machinery/door/airlock/attack_paw(mob/user as mob) - return src.attack_hand(user) /obj/machinery/door/airlock/attack_hand(mob/user as mob) if(!istype(usr, /mob/living/silicon)) diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index 0290d49ace..540d3facbf 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -152,11 +152,6 @@ /obj/machinery/door/attack_ai(mob/user as mob) return src.attack_hand(user) - -/obj/machinery/door/attack_paw(mob/user as mob) - return src.attack_hand(user) - - /obj/machinery/door/attack_hand(mob/user as mob) return src.attackby(user, user) diff --git a/code/game/machinery/embedded_controller/embedded_controller_base.dm b/code/game/machinery/embedded_controller/embedded_controller_base.dm index ec41175380..e6fb2c0332 100644 --- a/code/game/machinery/embedded_controller/embedded_controller_base.dm +++ b/code/game/machinery/embedded_controller/embedded_controller_base.dm @@ -3,7 +3,7 @@ name = "Embedded Controller" anchored = 1 - + use_power = 1 idle_power_usage = 10 @@ -29,10 +29,6 @@ /obj/machinery/embedded_controller/attack_ai(mob/user as mob) src.ui_interact(user) -/obj/machinery/embedded_controller/attack_paw(mob/user as mob) - user << "You do not have the dexterity to use this." - return - /obj/machinery/embedded_controller/attack_hand(mob/user as mob) src.ui_interact(user) @@ -44,7 +40,7 @@ icon_state = "airlock_control_standby" power_channel = ENVIRON density = 0 - + var/id_tag //var/radio_power_use = 50 //power used to xmit signals diff --git a/code/game/machinery/flasher.dm b/code/game/machinery/flasher.dm index 345d9f44d5..632fee8215 100644 --- a/code/game/machinery/flasher.dm +++ b/code/game/machinery/flasher.dm @@ -122,9 +122,6 @@ /obj/machinery/flasher_button/attack_ai(mob/user as mob) return src.attack_hand(user) -/obj/machinery/flasher_button/attack_paw(mob/user as mob) - return src.attack_hand(user) - /obj/machinery/flasher_button/attackby(obj/item/weapon/W, mob/user as mob) return src.attack_hand(user) diff --git a/code/game/machinery/holosign.dm b/code/game/machinery/holosign.dm index 073973cdee..a4bd1456cf 100644 --- a/code/game/machinery/holosign.dm +++ b/code/game/machinery/holosign.dm @@ -47,8 +47,6 @@ /obj/machinery/holosign_switch/attack_ai(mob/user as mob) return src.attack_hand(user) / -obj/machinery/holosign_switch/attack_paw(mob/user as mob) - return src.attack_hand(user) /obj/machinery/holosign_switch/attackby(obj/item/weapon/W, mob/user as mob) if(istype(W, /obj/item/device/detective_scanner)) diff --git a/code/game/machinery/igniter.dm b/code/game/machinery/igniter.dm index dcc67a5af2..500c2cf061 100755 --- a/code/game/machinery/igniter.dm +++ b/code/game/machinery/igniter.dm @@ -13,9 +13,6 @@ /obj/machinery/igniter/attack_ai(mob/user as mob) return src.attack_hand(user) -/obj/machinery/igniter/attack_paw(mob/user as mob) - return - /obj/machinery/igniter/attack_hand(mob/user as mob) if(..()) return @@ -63,7 +60,7 @@ /obj/machinery/sparker/power_change() ..() if ( !(stat & NOPOWER) && disable == 0 ) - + icon_state = "[base_state]" // src.sd_SetLuminosity(2) else @@ -121,9 +118,6 @@ /obj/machinery/ignition_switch/attack_ai(mob/user as mob) return src.attack_hand(user) -/obj/machinery/ignition_switch/attack_paw(mob/user as mob) - return src.attack_hand(user) - /obj/machinery/ignition_switch/attackby(obj/item/weapon/W, mob/user as mob) return src.attack_hand(user) diff --git a/code/game/machinery/kitchen/gibber.dm b/code/game/machinery/kitchen/gibber.dm index b74d3a587a..a005d0e9d4 100644 --- a/code/game/machinery/kitchen/gibber.dm +++ b/code/game/machinery/kitchen/gibber.dm @@ -62,9 +62,6 @@ else src.overlays += image('icons/obj/kitchen.dmi', "gridle") -/obj/machinery/gibber/attack_paw(mob/user as mob) - return src.attack_hand(user) - /obj/machinery/gibber/relaymove(mob/user as mob) src.go_out() return diff --git a/code/game/machinery/kitchen/juicer.dm b/code/game/machinery/kitchen/juicer.dm index dc62b875ee..a5a15fb876 100644 --- a/code/game/machinery/kitchen/juicer.dm +++ b/code/game/machinery/kitchen/juicer.dm @@ -53,9 +53,6 @@ src.updateUsrDialog() return 0 -/obj/machinery/juicer/attack_paw(mob/user as mob) - return src.attack_hand(user) - /obj/machinery/juicer/attack_ai(mob/user as mob) return 0 diff --git a/code/game/machinery/kitchen/microwave.dm b/code/game/machinery/kitchen/microwave.dm index 0ade94a93f..4af48a539b 100644 --- a/code/game/machinery/kitchen/microwave.dm +++ b/code/game/machinery/kitchen/microwave.dm @@ -138,9 +138,6 @@ return 1 src.updateUsrDialog() -/obj/machinery/microwave/attack_paw(mob/user as mob) - return src.attack_hand(user) - /obj/machinery/microwave/attack_ai(mob/user as mob) return 0 diff --git a/code/game/machinery/kitchen/smartfridge.dm b/code/game/machinery/kitchen/smartfridge.dm index 2350b8120c..52ca3debd9 100644 --- a/code/game/machinery/kitchen/smartfridge.dm +++ b/code/game/machinery/kitchen/smartfridge.dm @@ -218,9 +218,6 @@ ..() -/obj/machinery/smartfridge/attack_paw(mob/user as mob) - return attack_hand(user) - /obj/machinery/smartfridge/attack_ai(mob/user as mob) return 0 diff --git a/code/game/machinery/lightswitch.dm b/code/game/machinery/lightswitch.dm index f7c1bcfa8f..1c9a9bd21d 100644 --- a/code/game/machinery/lightswitch.dm +++ b/code/game/machinery/lightswitch.dm @@ -41,10 +41,6 @@ if(..(user, 1)) user << "A light switch. It is [on? "on" : "off"]." - -/obj/machinery/light_switch/attack_paw(mob/user) - src.attack_hand(user) - /obj/machinery/light_switch/attack_hand(mob/user) on = !on diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index 3f08862d9a..32c1071cd2 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -232,9 +232,6 @@ Class Procs: else return src.attack_hand(user) -/obj/machinery/attack_paw(mob/user as mob) - return src.attack_hand(user) - /obj/machinery/attack_hand(mob/user as mob) if(inoperable(MAINT)) return 1 diff --git a/code/game/machinery/navbeacon.dm b/code/game/machinery/navbeacon.dm index 71f450e70f..140e4eb5c4 100644 --- a/code/game/machinery/navbeacon.dm +++ b/code/game/machinery/navbeacon.dm @@ -126,9 +126,6 @@ attack_ai(var/mob/user) interact(user, 1) - attack_paw() - return - attack_hand(var/mob/user) interact(user, 0) diff --git a/code/game/machinery/newscaster.dm b/code/game/machinery/newscaster.dm index c9a1ddb657..0468c264f2 100644 --- a/code/game/machinery/newscaster.dm +++ b/code/game/machinery/newscaster.dm @@ -773,11 +773,6 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co /obj/machinery/newscaster/attack_ai(mob/user as mob) return src.attack_hand(user) //or maybe it'll have some special functions? No idea. - -/obj/machinery/newscaster/attack_paw(mob/user as mob) - user << "The newscaster controls are far too complicated for your tiny brain!" - return - /datum/news_photo var/is_synth = 0 var/obj/item/weapon/photo/photo = null diff --git a/code/game/machinery/pipe/pipe_dispenser.dm b/code/game/machinery/pipe/pipe_dispenser.dm index e57ccfe1ed..49f566af57 100644 --- a/code/game/machinery/pipe/pipe_dispenser.dm +++ b/code/game/machinery/pipe/pipe_dispenser.dm @@ -7,9 +7,6 @@ var/unwrenched = 0 var/wait = 0 -/obj/machinery/pipedispenser/attack_paw(user as mob) - return src.attack_hand(user) - /obj/machinery/pipedispenser/attack_hand(user as mob) if(..()) return diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm index 6cdedefe7f..8a949f7272 100644 --- a/code/game/machinery/recharger.dm +++ b/code/game/machinery/recharger.dm @@ -65,9 +65,6 @@ obj/machinery/recharger/attack_hand(mob/user as mob) charging = null update_icon() -obj/machinery/recharger/attack_paw(mob/user as mob) - return attack_hand(user) - obj/machinery/recharger/process() if(stat & (NOPOWER|BROKEN) || !anchored) update_use_power(0) diff --git a/code/game/machinery/robot_fabricator.dm b/code/game/machinery/robot_fabricator.dm index 085f455deb..0c3ae56115 100644 --- a/code/game/machinery/robot_fabricator.dm +++ b/code/game/machinery/robot_fabricator.dm @@ -32,9 +32,6 @@ else user << "The robot part maker is full. Please remove metal from the robot part maker in order to insert more." -/obj/machinery/robotic_fabricator/attack_paw(user as mob) - return src.attack_hand(user) - /obj/machinery/robotic_fabricator/attack_hand(user as mob) var/dat if (..()) diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm index bee250fd29..05a5a84eb3 100644 --- a/code/game/machinery/suit_storage_unit.dm +++ b/code/game/machinery/suit_storage_unit.dm @@ -559,12 +559,6 @@ /obj/machinery/suit_storage_unit/attack_ai(mob/user as mob) return src.attack_hand(user) - -/obj/machinery/suit_storage_unit/attack_paw(mob/user as mob) - user << "The console controls are far too complicated for your tiny brain!" - return - - //////////////////////////////REMINDER: Make it lock once you place some fucker inside. //God this entire file is fucking awful @@ -657,10 +651,6 @@ /obj/machinery/suit_cycler/attack_ai(mob/user as mob) return src.attack_hand(user) -/obj/machinery/suit_cycler/attack_paw(mob/user as mob) - user << "\blue The console controls are far too complicated for your tiny brain!" - return - /obj/machinery/suit_cycler/attackby(obj/item/I as obj, mob/user as mob) if(electrified != 0) diff --git a/code/game/machinery/teleporter.dm b/code/game/machinery/teleporter.dm index b247f17919..acd89ee17c 100644 --- a/code/game/machinery/teleporter.dm +++ b/code/game/machinery/teleporter.dm @@ -77,9 +77,6 @@ return -/obj/machinery/computer/teleporter/attack_paw() - src.attack_hand() - /obj/machinery/teleport/station/attack_ai() src.attack_hand() @@ -311,9 +308,6 @@ /obj/machinery/teleport/station/attackby(var/obj/item/weapon/W) src.attack_hand() -/obj/machinery/teleport/station/attack_paw() - src.attack_hand() - /obj/machinery/teleport/station/attack_ai() src.attack_hand() diff --git a/code/game/machinery/turrets.dm b/code/game/machinery/turrets.dm index f9e8a94747..07936e2685 100644 --- a/code/game/machinery/turrets.dm +++ b/code/game/machinery/turrets.dm @@ -338,19 +338,6 @@ spawn(13) del(src) -/obj/machinery/turret/attack_animal(mob/living/M as mob) - if(M.melee_damage_upper == 0) return - if(!(stat & BROKEN)) - visible_message("\red [M] [M.attacktext] [src]!") - M.attack_log += text("\[[time_stamp()]\] attacked [src.name]") - //src.attack_log += text("\[[time_stamp()]\] was attacked by [M.name] ([M.ckey])") - src.health -= M.melee_damage_upper - if (src.health <= 0) - src.die() - else - M << "\red That object is useless to you." - return - /obj/structure/turret/gun_turret name = "Gun Turret" density = 1 diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm index aaf8283a00..d94b483c4c 100644 --- a/code/game/machinery/vending.dm +++ b/code/game/machinery/vending.dm @@ -274,10 +274,6 @@ else usr << "\icon[src]Error: Unable to access your account. Please contact technical support if problem persists." - -/obj/machinery/vending/attack_paw(mob/user as mob) - return attack_hand(user) - /obj/machinery/vending/attack_ai(mob/user as mob) return attack_hand(user) diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index 2a33539bc8..c8b22dda28 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -444,28 +444,6 @@ src.log_append_to_last("Armor saved.") return -/obj/mecha/attack_paw(mob/user as mob) - return src.attack_hand(user) - -/obj/mecha/attack_animal(mob/living/user as mob) - src.log_message("Attack by simple animal. Attacker - [user].",1) - if(user.melee_damage_upper == 0) - user.emote("[user.friendly] [src]") - else - if(!prob(src.deflect_chance)) - var/damage = rand(user.melee_damage_lower, user.melee_damage_upper) - src.take_damage(damage) - src.check_for_internal_damage(list(MECHA_INT_TEMP_CONTROL,MECHA_INT_TANK_BREACH,MECHA_INT_CONTROL_LOST)) - visible_message("\red [user] [user.attacktext] [src]!") - user.attack_log += text("\[[time_stamp()]\] attacked [src.name]") - else - src.log_append_to_last("Armor saved.") - playsound(src.loc, 'sound/weapons/slash.ogg', 50, 1, -1) - src.occupant_message("\blue The [user]'s attack is stopped by the armor.") - visible_message("\blue The [user] rebounds off [src.name]'s armor!") - user.attack_log += text("\[[time_stamp()]\] attacked [src.name]") - return - /obj/mecha/hitby(atom/movable/A as mob|obj) //wrapper ..() src.log_message("Hit by [A].",1) diff --git a/code/game/mecha/mecha_control_console.dm b/code/game/mecha/mecha_control_console.dm index da461662f8..051f2e8129 100644 --- a/code/game/mecha/mecha_control_console.dm +++ b/code/game/mecha/mecha_control_console.dm @@ -11,9 +11,6 @@ attack_ai(var/mob/user as mob) return src.attack_hand(user) - attack_paw(var/mob/user as mob) - return src.attack_hand(user) - attack_hand(var/mob/user as mob) if(..()) return diff --git a/code/game/objects/effects/aliens.dm b/code/game/objects/effects/aliens.dm index 0ee04f0230..56e5327079 100644 --- a/code/game/objects/effects/aliens.dm +++ b/code/game/objects/effects/aliens.dm @@ -127,9 +127,6 @@ healthcheck() return -/obj/effect/alien/resin/attack_paw() - return attack_hand() - /obj/effect/alien/resin/attackby(obj/item/weapon/W as obj, mob/user as mob) var/aforce = W.force diff --git a/code/game/objects/effects/effect_system.dm b/code/game/objects/effects/effect_system.dm index ee82396788..e67288a52b 100644 --- a/code/game/objects/effects/effect_system.dm +++ b/code/game/objects/effects/effect_system.dm @@ -653,10 +653,6 @@ steam.start() -- spawns the effect if(metal==1 || prob(50)) del(src) - attack_paw(var/mob/user) - attack_hand(user) - return - attack_hand(var/mob/user) if ((HULK in user.mutations) || (prob(75 - metal*25))) user << "\blue You smash through the metal foam wall." diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 33b6159a8c..4544156923 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -152,30 +152,6 @@ user.put_in_active_hand(src) return - -/obj/item/attack_paw(mob/user as mob) - - if (istype(src.loc, /obj/item/weapon/storage)) - for(var/mob/M in range(1, src.loc)) - if (M.s_active == src.loc) - if (M.client) - M.client.screen -= src - src.throwing = 0 - if (src.loc == user) - //canremove==0 means that object may not be removed. You can still wear it. This only applies to clothing. /N - if(istype(src, /obj/item/clothing) && !src:canremove) - return - else - user.u_equip(src) - else - if(istype(src.loc, /mob/living)) - return - src.pickup(user) - user.next_move = max(user.next_move+2,world.time + 2) - - user.put_in_active_hand(src) - return - // Due to storage type consolidation this should get used more now. // I have cleaned it up a little, but it could probably use more. -Sayu /obj/item/attackby(obj/item/weapon/W as obj, mob/user as mob) diff --git a/code/game/objects/items/devices/powersink.dm b/code/game/objects/items/devices/powersink.dm index 72e39b7063..106316dc87 100644 --- a/code/game/objects/items/devices/powersink.dm +++ b/code/game/objects/items/devices/powersink.dm @@ -58,11 +58,6 @@ else ..() - - - attack_paw() - return - attack_ai() return diff --git a/code/game/objects/items/devices/radio/intercom.dm b/code/game/objects/items/devices/radio/intercom.dm index 28646e2105..22976e9cb5 100644 --- a/code/game/objects/items/devices/radio/intercom.dm +++ b/code/game/objects/items/devices/radio/intercom.dm @@ -24,10 +24,6 @@ spawn (0) attack_self(user) -/obj/item/device/radio/intercom/attack_paw(mob/user as mob) - return src.attack_hand(user) - - /obj/item/device/radio/intercom/attack_hand(mob/user as mob) src.add_fingerprint(user) spawn (0) diff --git a/code/game/objects/items/weapons/dna_injector.dm b/code/game/objects/items/weapons/dna_injector.dm index 95cf77dd21..e41b29364e 100644 --- a/code/game/objects/items/weapons/dna_injector.dm +++ b/code/game/objects/items/weapons/dna_injector.dm @@ -28,9 +28,6 @@ SetValue(src.value) //testing("[name]: DNA2 SE blocks after SetValue: [english_list(buf.dna.SE)]") -/obj/item/weapon/dnainjector/attack_paw(mob/user as mob) - return attack_hand(user) - /obj/item/weapon/dnainjector/proc/GetRealBlock(var/selblock) if(selblock==0) return block diff --git a/code/game/objects/items/weapons/grenades/grenade.dm b/code/game/objects/items/weapons/grenades/grenade.dm index c7df55f3e0..2ff3114423 100644 --- a/code/game/objects/items/weapons/grenades/grenade.dm +++ b/code/game/objects/items/weapons/grenades/grenade.dm @@ -108,7 +108,4 @@ /obj/item/weapon/grenade/attack_hand() walk(src, null, null) ..() - return - -/obj/item/weapon/grenade/attack_paw(mob/user as mob) - return attack_hand(user) + return \ No newline at end of file diff --git a/code/game/objects/items/weapons/storage/secure.dm b/code/game/objects/items/weapons/storage/secure.dm index 079b0c9fb2..b3e94bf4d9 100644 --- a/code/game/objects/items/weapons/storage/secure.dm +++ b/code/game/objects/items/weapons/storage/secure.dm @@ -31,9 +31,6 @@ if(..(user, 1)) user << text("The service panel is [src.open ? "open" : "closed"].") - attack_paw(mob/user as mob) - return attack_hand(user) - attackby(obj/item/weapon/W as obj, mob/user as mob) if(locked) if ( (istype(W, /obj/item/weapon/card/emag)||istype(W, /obj/item/weapon/melee/energy/blade)) && (!src.emagged)) diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm index bed3cb9de0..3fedae810b 100644 --- a/code/game/objects/structures.dm +++ b/code/game/objects/structures.dm @@ -22,15 +22,6 @@ visible_message("[H] slices [src] apart!") destroy() -/obj/structure/attack_animal(mob/living/user) - if(breakable) - if(user.wall_smash) - visible_message("[user] smashes [src] apart!") - destroy() - -/obj/structure/attack_paw(mob/user) - if(breakable) attack_hand(user) - /obj/structure/blob_act() if(prob(50)) del(src) diff --git a/code/game/objects/structures/bedsheet_bin.dm b/code/game/objects/structures/bedsheet_bin.dm index 3e6348d5ec..8a3cccae46 100644 --- a/code/game/objects/structures/bedsheet_bin.dm +++ b/code/game/objects/structures/bedsheet_bin.dm @@ -108,7 +108,7 @@ LINEN BINS /obj/structure/bedsheetbin/examine(mob/user) ..(user) - + if(amount < 1) user << "There are no bed sheets in the bin." return @@ -138,12 +138,6 @@ LINEN BINS hidden = I user << "You hide [I] among the sheets." - - -/obj/structure/bedsheetbin/attack_paw(mob/user as mob) - return attack_hand(user) - - /obj/structure/bedsheetbin/attack_hand(mob/user as mob) if(amount >= 1) amount-- diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index ce8f8523d9..6be83616f6 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -174,13 +174,6 @@ return -/obj/structure/closet/attack_animal(mob/living/user as mob) - if(user.wall_smash) - visible_message("\red [user] destroys the [src]. ") - for(var/atom/movable/A as mob|obj in src) - A.loc = src.loc - del(src) - // this should probably use dump_contents() /obj/structure/closet/blob_act() if(prob(75)) @@ -267,10 +260,6 @@ spawn(30) lastbang = 0 - -/obj/structure/closet/attack_paw(mob/user as mob) - return src.attack_hand(user) - /obj/structure/closet/attack_hand(mob/user as mob) src.add_fingerprint(user) src.toggle(user) diff --git a/code/game/objects/structures/crates_lockers/closets/fireaxe.dm b/code/game/objects/structures/crates_lockers/closets/fireaxe.dm index 87eb2cb811..5ce93c76a4 100644 --- a/code/game/objects/structures/crates_lockers/closets/fireaxe.dm +++ b/code/game/objects/structures/crates_lockers/closets/fireaxe.dm @@ -181,10 +181,6 @@ usr << "\blue The [src.name] is closed." update_icon() - attack_paw(mob/user as mob) - attack_hand(user) - return - attack_ai(mob/user as mob) if(src.smashed) user << "\red The security of the cabinet is compromised." diff --git a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm index f6ce5d6d81..479fdcb262 100644 --- a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm +++ b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm @@ -104,9 +104,6 @@ else src.toggle(user) -/obj/structure/closet/secure_closet/attack_paw(mob/user as mob) - return src.attack_hand(user) - /obj/structure/closet/secure_closet/verb/verb_togglelock() set src in oview(1) // One square distance set category = "Object" diff --git a/code/game/objects/structures/displaycase.dm b/code/game/objects/structures/displaycase.dm index c6cf316b2b..f30e0e2545 100644 --- a/code/game/objects/structures/displaycase.dm +++ b/code/game/objects/structures/displaycase.dm @@ -76,9 +76,6 @@ ..() return -/obj/structure/displaycase/attack_paw(mob/user as mob) - return src.attack_hand(user) - /obj/structure/displaycase/attack_hand(mob/user as mob) if (src.destroyed && src.occupied) new /obj/item/weapon/gun/energy/laser/captain( src.loc ) diff --git a/code/game/objects/structures/extinguisher.dm b/code/game/objects/structures/extinguisher.dm index 3ba3c79a37..cf61e68b50 100644 --- a/code/game/objects/structures/extinguisher.dm +++ b/code/game/objects/structures/extinguisher.dm @@ -54,11 +54,6 @@ opened = !opened update_icon() -/obj/structure/extinguisher_cabinet/attack_paw(mob/user) - attack_hand(user) - return - - /obj/structure/extinguisher_cabinet/update_icon() if(!opened) icon_state = "extinguisher_closed" diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm index 93f4777adb..b8d811efb6 100644 --- a/code/game/objects/structures/girders.dm +++ b/code/game/objects/structures/girders.dm @@ -169,13 +169,6 @@ return return ..() - attack_animal(mob/living/simple_animal/user) - if(user.wall_smash) - visible_message("[user] smashes [src] apart!") - dismantle() - return - return ..() - blob_act() if(prob(40)) del(src) diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm index e1f0804c0e..ce645d6afe 100644 --- a/code/game/objects/structures/grille.dm +++ b/code/game/objects/structures/grille.dm @@ -26,10 +26,6 @@ /obj/structure/grille/Bumped(atom/user) if(ismob(user)) shock(user, 70) - -/obj/structure/grille/attack_paw(mob/user as mob) - attack_hand(user) - /obj/structure/grille/attack_hand(mob/user as mob) playsound(loc, 'sound/effects/grillehit.ogg', 80, 1) @@ -59,33 +55,6 @@ health -= damage_dealt healthcheck() -/obj/structure/grille/attack_slime(mob/user as mob) - var/mob/living/carbon/slime/S = user - if (!S.is_adult) - return - - playsound(loc, 'sound/effects/grillehit.ogg', 80, 1) - user.visible_message("[user] smashes against [src].", \ - "You smash against [src].", \ - "You hear twisting metal.") - - health -= rand(2,3) - healthcheck() - return - -/obj/structure/grille/attack_animal(var/mob/living/simple_animal/M as mob) - if(M.melee_damage_upper == 0) return - - playsound(loc, 'sound/effects/grillehit.ogg', 80, 1) - M.visible_message("[M] smashes against [src].", \ - "You smash against [src].", \ - "You hear twisting metal.") - - health -= M.melee_damage_upper - healthcheck() - return - - /obj/structure/grille/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) if(air_group || (height==0)) return 1 if(istype(mover) && mover.checkpass(PASSGRILLE)) diff --git a/code/game/objects/structures/inflatable.dm b/code/game/objects/structures/inflatable.dm index 8b586c9461..06544dfca8 100644 --- a/code/game/objects/structures/inflatable.dm +++ b/code/game/objects/structures/inflatable.dm @@ -75,8 +75,6 @@ //world << "glass at [x],[y],[z] Mhit" deflate(1) - attack_paw(mob/user as mob) - return attack_generic(user, 15) attack_hand(mob/user as mob) add_fingerprint(user) @@ -91,20 +89,6 @@ else //for nicer text~ user.visible_message("[user] tears at [src]!") - attack_animal(mob/user as mob) - if(!isanimal(user)) return - var/mob/living/simple_animal/M = user - if(M.melee_damage_upper <= 0) return - attack_generic(M, M.melee_damage_upper) - - - attack_slime(mob/user as mob) - var/mob/living/carbon/slime/S = user - if (!S.is_adult) - return - attack_generic(user, rand(10, 15)) - - attackby(obj/item/weapon/W as obj, mob/user as mob) if(!istype(W)) return @@ -188,9 +172,6 @@ if(get_dist(user,src) <= 1) //not remotely though return TryToSwitchState(user) - attack_paw(mob/user as mob) - return TryToSwitchState(user) - attack_hand(mob/user as mob) return TryToSwitchState(user) diff --git a/code/game/objects/structures/kitchen_spike.dm b/code/game/objects/structures/kitchen_spike.dm index f0060dfe93..40becb871f 100644 --- a/code/game/objects/structures/kitchen_spike.dm +++ b/code/game/objects/structures/kitchen_spike.dm @@ -12,8 +12,6 @@ var/meattype = 0 // 0 - Nothing, 1 - Monkey, 2 - Xeno /obj/structure/kitchenspike - attack_paw(mob/user as mob) - return src.attack_hand(usr) attackby(obj/item/weapon/grab/G as obj, mob/user as mob) if(!istype(G, /obj/item/weapon/grab)) diff --git a/code/game/objects/structures/ladders.dm b/code/game/objects/structures/ladders.dm index a10448cfcc..cce8a064c0 100644 --- a/code/game/objects/structures/ladders.dm +++ b/code/game/objects/structures/ladders.dm @@ -66,8 +66,5 @@ add_fingerprint(user) -/obj/structure/ladder/attack_paw(mob/user as mob) - return attack_hand(user) - /obj/structure/ladder/attackby(obj/item/weapon/W, mob/user as mob) return attack_hand(user) \ No newline at end of file diff --git a/code/game/objects/structures/lamarr_cage.dm b/code/game/objects/structures/lamarr_cage.dm index 83df96a728..14377992bb 100644 --- a/code/game/objects/structures/lamarr_cage.dm +++ b/code/game/objects/structures/lamarr_cage.dm @@ -72,9 +72,6 @@ ..() return -/obj/structure/lamarr/attack_paw(mob/user as mob) - return src.attack_hand(user) - /obj/structure/lamarr/attack_hand(mob/user as mob) if (src.destroyed) return diff --git a/code/game/objects/structures/mineral_doors.dm b/code/game/objects/structures/mineral_doors.dm index aa07d1621a..5db0947e9b 100644 --- a/code/game/objects/structures/mineral_doors.dm +++ b/code/game/objects/structures/mineral_doors.dm @@ -39,9 +39,6 @@ if(get_dist(user,src) <= 1) //not remotely though return TryToSwitchState(user) - attack_paw(mob/user as mob) - return TryToSwitchState(user) - attack_hand(mob/user as mob) return TryToSwitchState(user) diff --git a/code/game/objects/structures/mirror.dm b/code/game/objects/structures/mirror.dm index 99df613ace..83112a0021 100644 --- a/code/game/objects/structures/mirror.dm +++ b/code/game/objects/structures/mirror.dm @@ -93,25 +93,4 @@ shatter() else visible_message("[user] hits [src] with [I]!") - playsound(src.loc, 'sound/effects/Glasshit.ogg', 70, 1) - -/obj/structure/mirror/attack_animal(mob/user as mob) - if(!isanimal(user)) return - var/mob/living/simple_animal/M = user - if(M.melee_damage_upper <= 0) return - if(shattered) - playsound(src.loc, 'sound/effects/hit_on_shattered_glass.ogg', 70, 1) - return - user.visible_message("[user] smashes [src]!") - shatter() - - -/obj/structure/mirror/attack_slime(mob/user as mob) - var/mob/living/carbon/slime/S = user - if (!S.is_adult) - return - if(shattered) - playsound(src.loc, 'sound/effects/hit_on_shattered_glass.ogg', 70, 1) - return - user.visible_message("[user] smashes [src]!") - shatter() \ No newline at end of file + playsound(src.loc, 'sound/effects/Glasshit.ogg', 70, 1) \ No newline at end of file diff --git a/code/game/objects/structures/morgue.dm b/code/game/objects/structures/morgue.dm index eea0358763..538149688c 100644 --- a/code/game/objects/structures/morgue.dm +++ b/code/game/objects/structures/morgue.dm @@ -57,9 +57,6 @@ /obj/structure/morgue/alter_health() return src.loc -/obj/structure/morgue/attack_paw(mob/user as mob) - return src.attack_hand(user) - /obj/structure/morgue/attack_hand(mob/user as mob) if (src.connected) for(var/atom/movable/A as mob|obj in src.connected.loc) @@ -137,9 +134,6 @@ anchored = 1 throwpass = 1 -/obj/structure/m_tray/attack_paw(mob/user as mob) - return src.attack_hand(user) - /obj/structure/m_tray/attack_hand(mob/user as mob) if (src.connected) for(var/atom/movable/A as mob|obj in src.loc) @@ -222,9 +216,6 @@ /obj/structure/crematorium/alter_health() return src.loc -/obj/structure/crematorium/attack_paw(mob/user as mob) - return src.attack_hand(user) - /obj/structure/crematorium/attack_hand(mob/user as mob) // if (cremating) AWW MAN! THIS WOULD BE SO MUCH MORE FUN ... TO WATCH // user.show_message("\red Uh-oh, that was a bad idea.", 1) @@ -353,9 +344,6 @@ anchored = 1 throwpass = 1 -/obj/structure/c_tray/attack_paw(mob/user as mob) - return src.attack_hand(user) - /obj/structure/c_tray/attack_hand(mob/user as mob) if (src.connected) for(var/atom/movable/A as mob|obj in src.loc) diff --git a/code/game/objects/structures/stool_bed_chair_nest/bed.dm b/code/game/objects/structures/stool_bed_chair_nest/bed.dm index d4f9356c56..a3f99324b7 100644 --- a/code/game/objects/structures/stool_bed_chair_nest/bed.dm +++ b/code/game/objects/structures/stool_bed_chair_nest/bed.dm @@ -29,9 +29,6 @@ ..() return -/obj/structure/stool/bed/attack_paw(mob/user as mob) - return src.attack_hand(user) - /obj/structure/stool/bed/attack_hand(mob/user as mob) manual_unbuckle(user) return diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 4db3ed1078..4b39e9d3b6 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -150,29 +150,10 @@ "You hear a knocking sound.") return - -/obj/structure/window/attack_paw(mob/user as mob) - return attack_hand(user) - - /obj/structure/window/proc/attack_generic(mob/user as mob, damage = 0) //used by attack_animal and attack_slime user.visible_message("[user] smashes into [src]!") take_damage(damage) -/obj/structure/window/attack_animal(mob/user as mob) - if(!isanimal(user)) return - var/mob/living/simple_animal/M = user - if(M.melee_damage_upper <= 0) return - attack_generic(M, M.melee_damage_upper) - - -/obj/structure/window/attack_slime(mob/user as mob) - var/mob/living/carbon/slime/S = user - if (!S.is_adult) - return - attack_generic(user, rand(10, 15)) - - /obj/structure/window/attackby(obj/item/W as obj, mob/user as mob) if(!istype(W)) return//I really wish I did not need this if(W.flags & NOBLUDGEON) return diff --git a/code/game/supplyshuttle.dm b/code/game/supplyshuttle.dm index 80850522f4..349be88f5d 100644 --- a/code/game/supplyshuttle.dm +++ b/code/game/supplyshuttle.dm @@ -294,19 +294,12 @@ var/list/mechtoys = list( /obj/item/weapon/paper/manifest name = "Supply Manifest" - /obj/machinery/computer/ordercomp/attack_ai(var/mob/user as mob) return attack_hand(user) -/obj/machinery/computer/ordercomp/attack_paw(var/mob/user as mob) - return attack_hand(user) - /obj/machinery/computer/supplycomp/attack_ai(var/mob/user as mob) return attack_hand(user) -/obj/machinery/computer/supplycomp/attack_paw(var/mob/user as mob) - return attack_hand(user) - /obj/machinery/computer/ordercomp/attack_hand(var/mob/user as mob) if(..()) return diff --git a/code/game/turfs/simulated/floor.dm b/code/game/turfs/simulated/floor.dm index 5a74c80b6f..f3dc6f5eb1 100644 --- a/code/game/turfs/simulated/floor.dm +++ b/code/game/turfs/simulated/floor.dm @@ -192,10 +192,6 @@ turf/simulated/floor/proc/update_icon() else return 0 - -/turf/simulated/floor/attack_paw(mob/user as mob) - return src.attack_hand(user) - /turf/simulated/floor/attack_hand(mob/user as mob) if (is_light_floor()) var/obj/item/stack/tile/light/T = floor_tile diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm index 91f96113cb..e960b9720d 100644 --- a/code/game/turfs/simulated/walls.dm +++ b/code/game/turfs/simulated/walls.dm @@ -226,40 +226,6 @@ return 0 //Interactions - -/turf/simulated/wall/attack_paw(mob/user as mob) - if ((HULK in user.mutations)) - if (prob(40)) - usr << text("\blue You smash through the wall.") - usr.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" )) - dismantle_wall(1) - return - else - usr << text("\blue You punch the wall.") - take_damage(rand(25, 75)) - return - - return src.attack_hand(user) - - -/turf/simulated/wall/attack_animal(mob/living/M as mob) - if(M.wall_smash) - if (istype(src, /turf/simulated/wall/r_wall) && !rotting) - M << text("\blue This wall is far too strong for you to destroy.") - return - else - if (prob(40) || rotting) - M << text("\blue You smash through the wall.") - dismantle_wall(1) - return - else - M << text("\blue You smash against the wall.") - take_damage(rand(25, 75)) - return - - M << "\blue You push the wall but nothing happens!" - return - /turf/simulated/wall/attack_hand(mob/user as mob) if (HULK in user.mutations) if (prob(40) || rotting) diff --git a/code/game/turfs/space/space.dm b/code/game/turfs/space/space.dm index 7b1a17abac..0dcd0dd8a7 100644 --- a/code/game/turfs/space/space.dm +++ b/code/game/turfs/space/space.dm @@ -11,9 +11,6 @@ if(!istype(src, /turf/space/transit)) icon_state = "[((x + y) ^ ~(x * y) + z) % 25]" -/turf/space/attack_paw(mob/user as mob) - return src.attack_hand(user) - /turf/space/attack_hand(mob/user as mob) if ((user.restrained() || !( user.pulling ))) return diff --git a/code/game/turfs/unsimulated/floor.dm b/code/game/turfs/unsimulated/floor.dm index 1d391eee1c..68ac083f15 100644 --- a/code/game/turfs/unsimulated/floor.dm +++ b/code/game/turfs/unsimulated/floor.dm @@ -3,9 +3,6 @@ icon = 'icons/turf/floors.dmi' icon_state = "Floor3" -/turf/unsimulated/floor/attack_paw(user as mob) - return src.attack_hand(user) - /turf/unsimulated/floor/attack_hand(var/mob/user as mob) if ((!( user.canmove ) || user.restrained() || !( user.pulling ))) return diff --git a/code/modules/clothing/masks/miscellaneous.dm b/code/modules/clothing/masks/miscellaneous.dm index 8cc12fb172..cca2dff7de 100644 --- a/code/modules/clothing/masks/miscellaneous.dm +++ b/code/modules/clothing/masks/miscellaneous.dm @@ -8,15 +8,6 @@ w_class = 2 gas_transfer_coefficient = 0.90 -//Monkeys can not take the muzzle off of themself! Call PETA! -/obj/item/clothing/mask/muzzle/attack_paw(mob/user as mob) - if (src == user.wear_mask) - return - else - ..() - return - - /obj/item/clothing/mask/surgical name = "sterile mask" desc = "A sterile mask designed to help prevent the spread of diseases." diff --git a/code/modules/hydroponics/seed_machines.dm b/code/modules/hydroponics/seed_machines.dm index 0ca5fe74b6..8b4295d72b 100644 --- a/code/modules/hydroponics/seed_machines.dm +++ b/code/modules/hydroponics/seed_machines.dm @@ -58,9 +58,6 @@ if(world.time > last_action + action_time) finished_task() -/obj/machinery/botany/attack_paw(mob/user as mob) - return attack_hand(user) - /obj/machinery/botany/attack_ai(mob/user as mob) return attack_hand(user) diff --git a/code/modules/hydroponics/vines.dm b/code/modules/hydroponics/vines.dm index ed8f5c338e..b25c03080e 100644 --- a/code/modules/hydroponics/vines.dm +++ b/code/modules/hydroponics/vines.dm @@ -73,10 +73,6 @@ manual_unbuckle(user) - -/obj/effect/plantsegment/attack_paw(mob/user as mob) - manual_unbuckle(user) - /obj/effect/plantsegment/proc/unbuckle() if(buckled_mob) if(buckled_mob.buckled == src) //this is probably unneccesary, but it doesn't hurt diff --git a/code/modules/mob/living/carbon/alien/alien_attacks.dm b/code/modules/mob/living/carbon/alien/alien_attacks.dm index 45a486adf7..b67299c0d4 100644 --- a/code/modules/mob/living/carbon/alien/alien_attacks.dm +++ b/code/modules/mob/living/carbon/alien/alien_attacks.dm @@ -14,77 +14,6 @@ updatehealth() return -/mob/living/carbon/alien/attack_animal(mob/living/M as mob) - - if(istype(M,/mob/living/simple_animal)) - var/mob/living/simple_animal/S = M - if(S.melee_damage_upper == 0) - S.emote("[S.friendly] [src]") - else - for(var/mob/O in viewers(src, null)) - O.show_message("\red [S] [S.attacktext] [src]!", 1) - var/damage = rand(S.melee_damage_lower, S.melee_damage_upper) - adjustBruteLoss(damage) - S.attack_log += text("\[[time_stamp()]\] attacked [src.name] ([src.ckey])") - src.attack_log += text("\[[time_stamp()]\] was attacked by [S.name] ([S.ckey])") - updatehealth() - -/mob/living/carbon/alien/attack_paw(mob/living/carbon/monkey/M as mob) - if(!(istype(M, /mob/living/carbon/monkey))) return//Fix for aliens receiving double messages when attacking other aliens. - - if (!ticker) - M << "You cannot attack people before the game has started." - return - - if (istype(loc, /turf) && istype(loc.loc, /area/start)) - M << "No attacking people at spawn, you jackass." - return - ..() - - switch(M.a_intent) - - if ("help") - help_shake_act(M) - else - if (istype(wear_mask, /obj/item/clothing/mask/muzzle)) - return - if (health > 0) - playsound(loc, 'sound/weapons/bite.ogg', 50, 1, -1) - for(var/mob/O in viewers(src, null)) - if ((O.client && !( O.blinded ))) - O.show_message(text("\red [M.name] has bit [src]!"), 1) - adjustBruteLoss(rand(1, 3)) - updatehealth() - return - - -/mob/living/carbon/alien/attack_slime(mob/living/carbon/slime/M as mob) - if (!ticker) - M << "You cannot attack people before the game has started." - return - - if(M.Victim) return // can't attack while eating! - - if (health > -100) - - for(var/mob/O in viewers(src, null)) - if ((O.client && !( O.blinded ))) - O.show_message(text("\red The [M.name] glomps []!", src), 1) - - var/damage = rand(1, 3) - - if(M.is_adult) - damage = rand(20, 40) - else - damage = rand(5, 35) - - adjustBruteLoss(damage) - - - updatehealth() - - return - /mob/living/carbon/alien/attack_hand(mob/living/carbon/human/M as mob) if (!ticker) M << "You cannot attack people before the game has started." diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index c529cc9154..c915b6f7b5 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -83,22 +83,6 @@ return - -/mob/living/carbon/attack_paw(mob/M as mob) - if(!istype(M, /mob/living/carbon)) return - - for(var/datum/disease/D in viruses) - - if(D.spread_by_touch()) - M.contract_disease(D, 0, 1, CONTACT_HANDS) - - for(var/datum/disease/D in M.viruses) - - if(D.spread_by_touch()) - contract_disease(D, 0, 1, CONTACT_HANDS) - - return - /mob/living/carbon/electrocute_act(var/shock_damage, var/obj/source, var/siemens_coeff = 1.0, var/def_zone = null) if(status_flags & GODMODE) return 0 //godmode shock_damage *= siemens_coeff diff --git a/code/modules/mob/living/carbon/human/alien/alien_facehugger.dm b/code/modules/mob/living/carbon/human/alien/alien_facehugger.dm index 58831c870e..b3c855f290 100644 --- a/code/modules/mob/living/carbon/human/alien/alien_facehugger.dm +++ b/code/modules/mob/living/carbon/human/alien/alien_facehugger.dm @@ -24,10 +24,6 @@ var/const/MAX_ACTIVE_TIME = 400 var/strength = 5 var/attached = 0 -/obj/item/clothing/mask/facehugger/attack_paw(user as mob) //can be picked up by aliens - attack_hand(user) - return - /obj/item/clothing/mask/facehugger/attack_hand(user as mob) if((stat == CONSCIOUS && !sterile)) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index abc5c9b683..4c58f67a79 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -186,25 +186,6 @@ updatehealth() return - -/mob/living/carbon/human/attack_animal(mob/living/M as mob) - if(M.melee_damage_upper == 0) - M.emote("[M.friendly] [src]") - else - if(M.attack_sound) - playsound(loc, M.attack_sound, 50, 1, 1) - for(var/mob/O in viewers(src, null)) - O.show_message("\red [M] [M.attacktext] [src]!", 1) - M.attack_log += text("\[[time_stamp()]\] attacked [src.name] ([src.ckey])") - src.attack_log += text("\[[time_stamp()]\] was attacked by [M.name] ([M.ckey])") - var/damage = rand(M.melee_damage_lower, M.melee_damage_upper) - var/dam_zone = pick("chest", "l_hand", "r_hand", "l_leg", "r_leg") - var/datum/organ/external/affecting = get_organ(ran_zone(dam_zone)) - var/armor = run_armor_check(affecting, "melee") - apply_damage(damage, BRUTE, affecting, armor) - if(armor >= 2) return - - /mob/living/carbon/human/proc/implant_loyalty(mob/living/carbon/human/M, override = FALSE) // Won't override by default. if(!config.use_loyalty_implants && !override) return // Nuh-uh. @@ -223,69 +204,6 @@ return 1 return 0 -/mob/living/carbon/human/attack_slime(mob/living/carbon/slime/M as mob) - if(M.Victim) return // can't attack while eating! - - if (health > -100) - - for(var/mob/O in viewers(src, null)) - if ((O.client && !( O.blinded ))) - O.show_message(text("\red The [M.name] glomps []!", src), 1) - - var/damage = rand(1, 3) - - if(M.is_adult) - damage = rand(10, 35) - else - damage = rand(5, 25) - - - var/dam_zone = pick("head", "chest", "l_arm", "r_arm", "l_leg", "r_leg", "groin") - - var/datum/organ/external/affecting = get_organ(ran_zone(dam_zone)) - var/armor_block = run_armor_check(affecting, "melee") - apply_damage(damage, BRUTE, affecting, armor_block) - - - if(M.powerlevel > 0) - var/stunprob = 10 - var/power = M.powerlevel + rand(0,3) - - switch(M.powerlevel) - if(1 to 2) stunprob = 20 - if(3 to 4) stunprob = 30 - if(5 to 6) stunprob = 40 - if(7 to 8) stunprob = 60 - if(9) stunprob = 70 - if(10) stunprob = 95 - - if(prob(stunprob)) - M.powerlevel -= 3 - if(M.powerlevel < 0) - M.powerlevel = 0 - - for(var/mob/O in viewers(src, null)) - if ((O.client && !( O.blinded ))) - O.show_message(text("\red The [M.name] has shocked []!", src), 1) - - Weaken(power) - if (stuttering < power) - stuttering = power - Stun(power) - - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread - s.set_up(5, 1, src) - s.start() - - if (prob(stunprob) && M.powerlevel >= 8) - adjustFireLoss(M.powerlevel * rand(6,10)) - - - updatehealth() - - return - - /mob/living/carbon/human/restrained() if (handcuffed) return 1 @@ -293,8 +211,6 @@ return 1 return 0 - - /mob/living/carbon/human/var/co2overloadtime = null /mob/living/carbon/human/var/temperature_resistance = T0C+75 diff --git a/code/modules/mob/living/carbon/human/human_attackpaw.dm b/code/modules/mob/living/carbon/human/human_attackpaw.dm deleted file mode 100644 index 8d01ca3e8f..0000000000 --- a/code/modules/mob/living/carbon/human/human_attackpaw.dm +++ /dev/null @@ -1,23 +0,0 @@ -/mob/living/carbon/human/attack_paw(mob/M as mob) - ..() - if (M.a_intent == "help") - help_shake_act(M) - else - if (istype(wear_mask, /obj/item/clothing/mask/muzzle)) - return - - for(var/mob/O in viewers(src, null)) - O.show_message(text("\red [M.name] has bit []!", src), 1) - - var/damage = rand(1, 3) - var/dam_zone = pick("chest", "l_hand", "r_hand", "l_leg", "r_leg") - var/datum/organ/external/affecting = get_organ(ran_zone(dam_zone)) - apply_damage(damage, BRUTE, affecting, run_armor_check(affecting, "melee")) - - for(var/datum/disease/D in M.viruses) - if(istype(D, /datum/disease/jungle_fever)) - var/mob/living/carbon/human/H = src - src = null - src = H.monkeyize() - contract_disease(D,1,0) - return diff --git a/code/modules/mob/living/carbon/metroid/life.dm b/code/modules/mob/living/carbon/metroid/life.dm index 7820e2a416..9610b8a39b 100644 --- a/code/modules/mob/living/carbon/metroid/life.dm +++ b/code/modules/mob/living/carbon/metroid/life.dm @@ -82,8 +82,8 @@ spawn(45) Atkcool = 0 - if(Target.Adjacent(src)) - Target.attack_slime(src) + //if(Target.Adjacent(src)) + //Target.attack_slime(src) return if(!Target.lying && prob(80)) @@ -93,8 +93,8 @@ spawn(45) Atkcool = 0 - if(Target.Adjacent(src)) - Target.attack_slime(src) + //if(Target.Adjacent(src)) + //Target.attack_slime(src) else if(!Atkcool && Target.Adjacent(src)) diff --git a/code/modules/mob/living/carbon/metroid/metroid.dm b/code/modules/mob/living/carbon/metroid/metroid.dm index df9d22c5dc..dbd5faa707 100644 --- a/code/modules/mob/living/carbon/metroid/metroid.dm +++ b/code/modules/mob/living/carbon/metroid/metroid.dm @@ -119,7 +119,7 @@ if(istype(AM, /obj/structure/window) || istype(AM, /obj/structure/grille)) if(nutrition <= get_hunger_nutrition() && !Atkcool) if (is_adult || prob(5)) - AM.attack_slime(src) + //AM.attack_slime(src) spawn() Atkcool = 1 sleep(45) @@ -253,76 +253,6 @@ updatehealth() return -/mob/living/carbon/slime/attack_slime(mob/living/carbon/slime/M as mob) - if (!ticker) - M << "You cannot attack people before the game has started." - return - - if (Victim) return // can't attack while eating! - - if (health > -100) - - visible_message(" The [M.name] has glomped [src]!", \ - " The [M.name] has glomped [src]!") - var/damage = rand(1, 3) - attacked += 5 - - if(M.is_adult) - damage = rand(1, 6) - else - damage = rand(1, 3) - - adjustBruteLoss(damage) - - updatehealth() - return - -/mob/living/carbon/slime/attack_animal(mob/living/M as mob) - if(M.melee_damage_upper == 0) - M.emote("[M.friendly] [src]") - else - if(M.attack_sound) - playsound(loc, M.attack_sound, 50, 1, 1) - visible_message("[M] [M.attacktext] [src]!", \ - "[M] [M.attacktext] [src]!") - M.attack_log += text("\[[time_stamp()]\] attacked [src.name] ([src.ckey])") - src.attack_log += text("\[[time_stamp()]\] was attacked by [M.name] ([M.ckey])") - var/damage = rand(M.melee_damage_lower, M.melee_damage_upper) - attacked += 10 - adjustBruteLoss(damage) - updatehealth() - -/mob/living/carbon/slime/attack_paw(mob/living/carbon/monkey/M as mob) - if(!(istype(M, /mob/living/carbon/monkey))) - return // Fix for aliens receiving double messages when attacking other aliens. - - if (!ticker) - M << "You cannot attack people before the game has started." - return - - if (istype(loc, /turf) && istype(loc.loc, /area/start)) - M << "No attacking people at spawn, you jackass." - return - - ..() - - switch(M.a_intent) - - if ("help") - help_shake_act(M) - else - if (istype(wear_mask, /obj/item/clothing/mask/muzzle)) - return - if (health > 0) - attacked += 10 - //playsound(loc, 'sound/weapons/bite.ogg', 50, 1, -1) - visible_message("[M.name] has attacked [src]!", \ - "[M.name] has attacked [src]!") - adjustBruteLoss(rand(1, 3)) - updatehealth() - return - - /mob/living/carbon/slime/attack_hand(mob/living/carbon/human/M as mob) if (!ticker) M << "You cannot attack people before the game has started." @@ -910,6 +840,10 @@ mob/living/carbon/slime/var/temperature_resistance = T0C+75 /mob/living/carbon/slime/has_eyes() return 0 + +/mob/living/carbon/slime/UnarmedAttack(var/atom/A) + return + //////////////////////////////Old shit from metroids/RoRos, and the old cores, would not take much work to re-add them//////////////////////// /* diff --git a/code/modules/mob/living/carbon/monkey/monkey.dm b/code/modules/mob/living/carbon/monkey/monkey.dm index 4371c68f8f..bd12e4b154 100644 --- a/code/modules/mob/living/carbon/monkey/monkey.dm +++ b/code/modules/mob/living/carbon/monkey/monkey.dm @@ -143,31 +143,6 @@ health = 100 - getOxyLoss() - getToxLoss() - getFireLoss() - getBruteLoss() return -//mob/living/carbon/monkey/bullet_act(var/obj/item/projectile/Proj)taken care of in living - - -/mob/living/carbon/monkey/attack_paw(mob/M as mob) - ..() - - if (M.a_intent == "help") - help_shake_act(M) - else - if ((M.a_intent == "hurt" && !( istype(wear_mask, /obj/item/clothing/mask/muzzle) ))) - if ((prob(75) && health > 0)) - playsound(loc, 'sound/weapons/bite.ogg', 50, 1, -1) - for(var/mob/O in viewers(src, null)) - O.show_message("\red [M.name] has bit [name]!", 1) - var/damage = rand(1, 5) - adjustBruteLoss(damage) - health = 100 - getOxyLoss() - getToxLoss() - getFireLoss() - getBruteLoss() - for(var/datum/disease/D in M.viruses) - if(istype(D, /datum/disease/jungle_fever)) - contract_disease(D,1,0) - else - for(var/mob/O in viewers(src, null)) - O.show_message("\red [M.name] has attempted to bite [name]!", 1) - return - /mob/living/carbon/monkey/attack_hand(mob/living/carbon/human/M as mob) if (!ticker) M << "You cannot attack people before the game has started." @@ -254,82 +229,6 @@ O.show_message(text("\red [] has disarmed [name]!", M), 1) return -/mob/living/carbon/monkey/attack_animal(mob/living/M as mob) - - if(M.melee_damage_upper == 0) - M.emote("[M.friendly] [src]") - else - if(M.attack_sound) - playsound(loc, M.attack_sound, 50, 1, 1) - for(var/mob/O in viewers(src, null)) - O.show_message("\red [M] [M.attacktext] [src]!", 1) - M.attack_log += text("\[[time_stamp()]\] attacked [src.name] ([src.ckey])") - src.attack_log += text("\[[time_stamp()]\] was attacked by [M.name] ([M.ckey])") - var/damage = rand(M.melee_damage_lower, M.melee_damage_upper) - adjustBruteLoss(damage) - updatehealth() - - -/mob/living/carbon/monkey/attack_slime(mob/living/carbon/slime/M as mob) - if (!ticker) - M << "You cannot attack people before the game has started." - return - - if(M.Victim) return // can't attack while eating! - - if (health > -100) - - for(var/mob/O in viewers(src, null)) - if ((O.client && !( O.blinded ))) - O.show_message(text("\red The [M.name] glomps []!", src), 1) - - var/damage = rand(1, 3) - - if(M.is_adult) - damage = rand(20, 40) - else - damage = rand(5, 35) - - adjustBruteLoss(damage) - - if(M.powerlevel > 0) - var/stunprob = 10 - var/power = M.powerlevel + rand(0,3) - - switch(M.powerlevel) - if(1 to 2) stunprob = 20 - if(3 to 4) stunprob = 30 - if(5 to 6) stunprob = 40 - if(7 to 8) stunprob = 60 - if(9) stunprob = 70 - if(10) stunprob = 95 - - if(prob(stunprob)) - M.powerlevel -= 3 - if(M.powerlevel < 0) - M.powerlevel = 0 - - for(var/mob/O in viewers(src, null)) - if ((O.client && !( O.blinded ))) - O.show_message(text("\red The [M.name] has shocked []!", src), 1) - - Weaken(power) - if (stuttering < power) - stuttering = power - Stun(power) - - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread - s.set_up(5, 1, src) - s.start() - - if (prob(stunprob) && M.powerlevel >= 8) - adjustFireLoss(M.powerlevel * rand(6,10)) - - - updatehealth() - - return - /mob/living/carbon/monkey/Stat() ..() statpanel("Status") @@ -413,3 +312,6 @@ message = capitalize(trim_left(message)) ..(message, speaking, verb, alt_name, italics, message_range, used_radios) + +/mob/living/carbon/monkey/UnarmedAttack(var/atom/A) + return \ No newline at end of file diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm index 5f815a3451..ded0990e20 100644 --- a/code/modules/mob/living/silicon/ai/ai.dm +++ b/code/modules/mob/living/silicon/ai/ai.dm @@ -542,20 +542,6 @@ var/list/ai_verbs_default = list( updatehealth() return 2 -/mob/living/silicon/ai/attack_animal(mob/living/M as mob) - if(M.melee_damage_upper == 0) - M.emote("[M.friendly] [src]") - else - if(M.attack_sound) - playsound(loc, M.attack_sound, 50, 1, 1) - for(var/mob/O in viewers(src, null)) - O.show_message("\red [M] [M.attacktext] [src]!", 1) - M.attack_log += text("\[[time_stamp()]\] attacked [src.name] ([src.ckey])") - src.attack_log += text("\[[time_stamp()]\] was attacked by [M.name] ([M.ckey])") - var/damage = rand(M.melee_damage_lower, M.melee_damage_upper) - adjustBruteLoss(damage) - updatehealth() - /mob/living/silicon/ai/reset_view(atom/A) if(camera) camera.SetLuminosity(0) diff --git a/code/modules/mob/living/silicon/robot/drone/drone_console.dm b/code/modules/mob/living/silicon/robot/drone/drone_console.dm index 82ee8c50a2..749d9fea05 100644 --- a/code/modules/mob/living/silicon/robot/drone/drone_console.dm +++ b/code/modules/mob/living/silicon/robot/drone/drone_console.dm @@ -14,11 +14,6 @@ /obj/machinery/computer/drone_control/attack_ai(var/mob/user as mob) return src.attack_hand(user) -/obj/machinery/computer/drone_control/attack_paw(var/mob/user as mob) - - return src.attack_hand(user) - return - /obj/machinery/computer/drone_control/attack_hand(var/mob/user as mob) if(..()) return diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index caf76cbf0b..42259b5fd3 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -871,81 +871,6 @@ var/list/robot_verbs_default = list( spark_system.start() return ..() - - -/mob/living/silicon/robot/attack_slime(mob/living/carbon/slime/M as mob) - if (!ticker) - M << "You cannot attack people before the game has started." - return - - if(M.Victim) return // can't attack while eating! - - if (health > -100) - - for(var/mob/O in viewers(src, null)) - if ((O.client && !( O.blinded ))) - O.show_message(text("\red The [M.name] glomps []!", src), 1) - - var/damage = rand(1, 3) - - if(M.is_adult) - damage = rand(20, 40) - else - damage = rand(5, 35) - - damage = round(damage / 2) // borgs recieve half damage - adjustBruteLoss(damage) - - - if(M.powerlevel > 0) - var/stunprob = 10 - - switch(M.powerlevel) - if(1 to 2) stunprob = 20 - if(3 to 4) stunprob = 30 - if(5 to 6) stunprob = 40 - if(7 to 8) stunprob = 60 - if(9) stunprob = 70 - if(10) stunprob = 95 - - if(prob(stunprob)) - M.powerlevel -= 3 - if(M.powerlevel < 0) - M.powerlevel = 0 - - for(var/mob/O in viewers(src, null)) - if ((O.client && !( O.blinded ))) - O.show_message(text("\red The [M.name] has electrified []!", src), 1) - - flick("noise", flash) - - var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread - s.set_up(5, 1, src) - s.start() - - if (prob(stunprob) && M.powerlevel >= 8) - adjustBruteLoss(M.powerlevel * rand(6,10)) - - - updatehealth() - - return - -/mob/living/silicon/robot/attack_animal(mob/living/M as mob) - if(M.melee_damage_upper == 0) - M.emote("[M.friendly] [src]") - else - if(M.attack_sound) - playsound(loc, M.attack_sound, 50, 1, 1) - for(var/mob/O in viewers(src, null)) - O.show_message("\red [M] [M.attacktext] [src]!", 1) - M.attack_log += text("\[[time_stamp()]\] attacked [src.name] ([src.ckey])") - src.attack_log += text("\[[time_stamp()]\] was attacked by [M.name] ([M.ckey])") - var/damage = rand(M.melee_damage_lower, M.melee_damage_upper) - adjustBruteLoss(damage) - updatehealth() - - /mob/living/silicon/robot/attack_hand(mob/user) add_fingerprint(user) diff --git a/code/modules/mob/living/simple_animal/constructs.dm b/code/modules/mob/living/simple_animal/constructs.dm index 21a731b041..307cdfa839 100644 --- a/code/modules/mob/living/simple_animal/constructs.dm +++ b/code/modules/mob/living/simple_animal/constructs.dm @@ -86,25 +86,6 @@ step(AM, t) now_pushing = null - -/mob/living/simple_animal/construct/attack_animal(mob/living/M as mob) - if(istype(M, /mob/living/simple_animal/construct/builder)) - health += 5 - M.emote("mends some of \the [src]'s wounds.") - else - if(M.melee_damage_upper <= 0) - M.emote("[M.friendly] \the [src]") - else - if(M.attack_sound) - playsound(loc, M.attack_sound, 50, 1, 1) - for(var/mob/O in viewers(src, null)) - O.show_message("\The [M] [M.attacktext] \the [src]!", 1) - M.attack_log += text("\[[time_stamp()]\] attacked [src.name] ([src.ckey])") - src.attack_log += text("\[[time_stamp()]\] was attacked by [M.name] ([M.ckey])") - - var/damage = rand(M.melee_damage_lower, M.melee_damage_upper) - adjustBruteLoss(damage) - /mob/living/simple_animal/construct/attackby(var/obj/item/O as obj, var/mob/user as mob) if(O.force) var/damage = O.force diff --git a/code/modules/mob/living/simple_animal/friendly/corgi.dm b/code/modules/mob/living/simple_animal/friendly/corgi.dm index 8c98daaa87..b35db8eeca 100644 --- a/code/modules/mob/living/simple_animal/friendly/corgi.dm +++ b/code/modules/mob/living/simple_animal/friendly/corgi.dm @@ -307,11 +307,11 @@ else dir = SOUTH - if(isturf(movement_target.loc) ) - movement_target.attack_animal(src) - else if(ishuman(movement_target.loc) ) - if(prob(20)) - emote("stares at the [movement_target] that [movement_target.loc] has with a sad puppy-face") + //if(isturf(movement_target.loc) ) + //movement_target.attack_animal(src) + //else if(ishuman(movement_target.loc) ) + //if(prob(20)) + //emote("stares at the [movement_target] that [movement_target.loc] has with a sad puppy-face") if(prob(1)) emote(pick("dances around","chases its tail")) diff --git a/code/modules/mob/living/simple_animal/hostile/bear.dm b/code/modules/mob/living/simple_animal/hostile/bear.dm index 0036d3c153..15786b6751 100644 --- a/code/modules/mob/living/simple_animal/hostile/bear.dm +++ b/code/modules/mob/living/simple_animal/hostile/bear.dm @@ -141,10 +141,10 @@ var/mob/living/L = target_mob L.adjustBruteLoss(damage) return L - else if(istype(target_mob,/obj/mecha)) - var/obj/mecha/M = target_mob - M.attack_animal(src) - return M + //else if(istype(target_mob,/obj/mecha)) + //var/obj/mecha/M = target_mob + //M.attack_animal(src) + //return M diff --git a/code/modules/mob/living/simple_animal/hostile/hostile.dm b/code/modules/mob/living/simple_animal/hostile/hostile.dm index 3aaaf8ec97..4e281e4be6 100644 --- a/code/modules/mob/living/simple_animal/hostile/hostile.dm +++ b/code/modules/mob/living/simple_animal/hostile/hostile.dm @@ -89,17 +89,17 @@ /mob/living/simple_animal/hostile/proc/AttackingTarget() if(!Adjacent(target_mob)) return - if(isliving(target_mob)) - var/mob/living/L = target_mob - L.attack_animal(src) - return L - if(istype(target_mob,/obj/mecha)) - var/obj/mecha/M = target_mob - M.attack_animal(src) - return M - if(istype(target_mob,/obj/machinery/bot)) - var/obj/machinery/bot/B = target_mob - B.attack_animal(src) + //if(isliving(target_mob)) + //var/mob/living/L = target_mob + //L.attack_animal(src) + //return L + //if(istype(target_mob,/obj/mecha)) + //var/obj/mecha/M = target_mob + //M.attack_animal(src) + //return M + //if(istype(target_mob,/obj/machinery/bot)) + //var/obj/machinery/bot/B = target_mob + //B.attack_animal(src) /mob/living/simple_animal/hostile/proc/LoseTarget() stance = HOSTILE_STANCE_IDLE @@ -193,10 +193,10 @@ /mob/living/simple_animal/hostile/proc/DestroySurroundings() if(prob(break_stuff_probability)) for(var/dir in cardinal) // North, South, East, West - for(var/obj/structure/window/obstacle in get_step(src, dir)) - if(obstacle.dir == reverse_dir[dir]) // So that windows get smashed in the right order - obstacle.attack_animal(src) - return - var/obj/structure/obstacle = locate(/obj/structure, get_step(src, dir)) - if(istype(obstacle, /obj/structure/window) || istype(obstacle, /obj/structure/closet) || istype(obstacle, /obj/structure/table) || istype(obstacle, /obj/structure/grille)) - obstacle.attack_animal(src) + //for(var/obj/structure/window/obstacle in get_step(src, dir)) + //if(obstacle.dir == reverse_dir[dir]) // So that windows get smashed in the right order + //obstacle.attack_animal(src) + //return + //var/obj/structure/obstacle = locate(/obj/structure, get_step(src, dir)) + //if(istype(obstacle, /obj/structure/window) || istype(obstacle, /obj/structure/closet) || istype(obstacle, /obj/structure/table) || istype(obstacle, /obj/structure/grille)) + //obstacle.attack_animal(src) diff --git a/code/modules/mob/living/simple_animal/parrot.dm b/code/modules/mob/living/simple_animal/parrot.dm index 000b125673..89e0094dae 100644 --- a/code/modules/mob/living/simple_animal/parrot.dm +++ b/code/modules/mob/living/simple_animal/parrot.dm @@ -232,22 +232,6 @@ drop_held_item(0) return -/mob/living/simple_animal/parrot/attack_paw(mob/living/carbon/monkey/M as mob) - attack_hand(M) - -//Simple animals -/mob/living/simple_animal/parrot/attack_animal(mob/living/M as mob) - if(client) return - - - if(parrot_state == PARROT_PERCH) - parrot_sleep_dur = parrot_sleep_max //Reset it's sleep timer if it was perched - - if(M.melee_damage_upper > 0) - parrot_interest = M - parrot_state = PARROT_SWOOP | PARROT_ATTACK //Attack other animals regardless - icon_state = "parrot_fly" - //Mobs with objects /mob/living/simple_animal/parrot/attackby(var/obj/item/O as obj, var/mob/user as mob) ..() diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index e06d1af938..e43b57fcff 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -209,19 +209,6 @@ if(act == "scream") act = "whimper" //ugly hack to stop animals screaming when crushed :P ..(act, type, desc) -/mob/living/simple_animal/attack_animal(mob/living/M as mob) - if(M.melee_damage_upper == 0) - M.emote("[M.friendly] [src]") - else - if(M.attack_sound) - playsound(loc, M.attack_sound, 50, 1, 1) - for(var/mob/O in viewers(src, null)) - O.show_message("\red [M] [M.attacktext] [src]!", 1) - M.attack_log += text("\[[time_stamp()]\] attacked [src.name] ([src.ckey])") - src.attack_log += text("\[[time_stamp()]\] was attacked by [M.name] ([M.ckey])") - var/damage = rand(M.melee_damage_lower, M.melee_damage_upper) - adjustBruteLoss(damage) - /mob/living/simple_animal/bullet_act(var/obj/item/projectile/Proj) if(!Proj || Proj.nodamage) return @@ -266,29 +253,6 @@ return - -/mob/living/simple_animal/attack_slime(mob/living/carbon/slime/M as mob) - if (!ticker) - M << "You cannot attack people before the game has started." - return - - if(M.Victim) return // can't attack while eating! - - visible_message("\red The [M.name] glomps [src]!") - - var/damage = rand(1, 3) - - if(M.is_adult) - damage = rand(20, 40) - else - damage = rand(5, 35) - - adjustBruteLoss(damage) - - - return - - /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)) diff --git a/code/modules/paperwork/paperbin.dm b/code/modules/paperwork/paperbin.dm index 8f0f71a0ab..43ed04b0d0 100644 --- a/code/modules/paperwork/paperbin.dm +++ b/code/modules/paperwork/paperbin.dm @@ -21,11 +21,6 @@ return - -/obj/item/weapon/paper_bin/attack_paw(mob/user as mob) - return attack_hand(user) - - /obj/item/weapon/paper_bin/attack_hand(mob/user as mob) if (hasorgans(user)) var/datum/organ/external/temp = user:organs_by_name["r_hand"] diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm index fc4668ec25..ce867e818a 100644 --- a/code/modules/paperwork/photocopier.dm +++ b/code/modules/paperwork/photocopier.dm @@ -18,9 +18,6 @@ attack_ai(mob/user as mob) return attack_hand(user) - attack_paw(mob/user as mob) - return attack_hand(user) - attack_hand(mob/user as mob) user.set_machine(src) diff --git a/code/modules/paperwork/stamps.dm b/code/modules/paperwork/stamps.dm index 1717560c56..51ec0002dd 100644 --- a/code/modules/paperwork/stamps.dm +++ b/code/modules/paperwork/stamps.dm @@ -64,12 +64,7 @@ icon_state = "stamp-cent" item_color = "centcomm" - -/obj/item/weapon/stamp/attack_paw(mob/user as mob) - return attack_hand(user) - // Syndicate stamp to forge documents. - /obj/item/weapon/stamp/chameleon/attack_self(mob/user as mob) var/list/stamp_types = typesof(/obj/item/weapon/stamp) - src.type // Get all stamp types except our own diff --git a/code/modules/power/engine.dm b/code/modules/power/engine.dm index 59227bf7cb..c0f761254e 100644 --- a/code/modules/power/engine.dm +++ b/code/modules/power/engine.dm @@ -1,6 +1,3 @@ -/turf/simulated/floor/engine/attack_paw(var/mob/user as mob) - return src.attack_hand(user) - /turf/simulated/floor/engine/attack_hand(var/mob/user as mob) if ((!( user.canmove ) || user.restrained() || !( user.pulling ))) return diff --git a/code/modules/power/gravitygenerator.dm b/code/modules/power/gravitygenerator.dm index 73a0fce4ec..53599073b2 100644 --- a/code/modules/power/gravitygenerator.dm +++ b/code/modules/power/gravitygenerator.dm @@ -63,10 +63,6 @@ break return foundgenerator - -/obj/machinery/computer/gravity_control_computer/attack_paw(mob/user as mob) - return attack_hand(user) - /obj/machinery/computer/gravity_control_computer/attack_ai(mob/user as mob) return attack_hand(user) diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index 0cc94399b3..168f56e131 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -87,7 +87,7 @@ /obj/machinery/light_construct/examine(mob/user) if(!..(user, 2)) return - + switch(src.stage) if(1) user << "It's an empty frame." @@ -452,19 +452,8 @@ src.flicker(1) return -/obj/machinery/light/attack_animal(mob/living/M) - if(M.melee_damage_upper == 0) return - if(status == LIGHT_EMPTY||status == LIGHT_BROKEN) - M << "\red That object is useless to you." - return - else if (status == LIGHT_OK||status == LIGHT_BURNED) - for(var/mob/O in viewers(src)) - O.show_message("\red [M.name] smashed the light!", 3, "You hear a tinkle of breaking glass", 2) - broken() - return // attack with hand - remove tube/bulb // if hands aren't protected and the light is on, burn the player - /obj/machinery/light/attack_hand(mob/user) add_fingerprint(user) diff --git a/code/modules/power/port_gen.dm b/code/modules/power/port_gen.dm index edcb764de4..0799900909 100644 --- a/code/modules/power/port_gen.dm +++ b/code/modules/power/port_gen.dm @@ -266,9 +266,6 @@ display round(lastgen) and phorontank amount /obj/machinery/power/port_gen/pacman/attack_ai(mob/user as mob) interact(user) -/obj/machinery/power/port_gen/pacman/attack_paw(mob/user as mob) - interact(user) - /obj/machinery/power/port_gen/pacman/interact(mob/user) if (get_dist(src, user) > 1 ) if (!istype(user, /mob/living/silicon/ai)) diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm index 4c6b26f19e..70c706b951 100644 --- a/code/modules/reagents/Chemistry-Machinery.dm +++ b/code/modules/reagents/Chemistry-Machinery.dm @@ -172,9 +172,6 @@ /obj/machinery/chem_dispenser/attack_ai(mob/user as mob) return src.attack_hand(user) -/obj/machinery/chem_dispenser/attack_paw(mob/user as mob) - return src.attack_hand(user) - /obj/machinery/chem_dispenser/attack_hand(mob/user as mob) if(stat & BROKEN) return @@ -460,9 +457,6 @@ /obj/machinery/chem_master/attack_ai(mob/user as mob) return src.attack_hand(user) -/obj/machinery/chem_master/attack_paw(mob/user as mob) - return src.attack_hand(user) - /obj/machinery/chem_master/attack_hand(mob/user as mob) if(stat & BROKEN) return @@ -686,9 +680,6 @@ /obj/machinery/computer/pandemic/attack_ai(mob/user as mob) return src.attack_hand(user) -/obj/machinery/computer/pandemic/attack_paw(mob/user as mob) - return src.attack_hand(user) - /obj/machinery/computer/pandemic/attack_hand(mob/user as mob) if(stat & (NOPOWER|BROKEN)) return @@ -922,9 +913,6 @@ src.updateUsrDialog() return 0 -/obj/machinery/reagentgrinder/attack_paw(mob/user as mob) - return src.attack_hand(user) - /obj/machinery/reagentgrinder/attack_ai(mob/user as mob) return 0 diff --git a/code/modules/reagents/reagent_containers/food/snacks.dm b/code/modules/reagents/reagent_containers/food/snacks.dm index 63944b8157..e21fb0617e 100644 --- a/code/modules/reagents/reagent_containers/food/snacks.dm +++ b/code/modules/reagents/reagent_containers/food/snacks.dm @@ -127,7 +127,7 @@ if(istype(W,/obj/item/weapon/storage)) ..() // -> item/attackby() return - + // Eating with forks if(istype(W,/obj/item/weapon/kitchen/utensil)) var/obj/item/weapon/kitchen/utensil/U = W @@ -156,16 +156,16 @@ if (reagents.total_volume <= 0) del(src) return - + if (is_sliceable()) //these are used to allow hiding edge items in food that is not on a table/tray var/can_slice_here = isturf(src.loc) && ((locate(/obj/structure/table) in src.loc) || (locate(/obj/machinery/optable) in src.loc) || (locate(/obj/item/weapon/tray) in src.loc)) var/hide_item = !has_edge(W) || !can_slice_here - + if (hide_item) if (W.w_class >= src.w_class || W.is_robot_module()) return - + user << "\red You slip [W] inside [src]." user.u_equip(W) if ((user.client && user.s_active != src)) @@ -174,19 +174,19 @@ add_fingerprint(user) contents += W return - + if (has_edge(W)) if (!can_slice_here) user << "\red You cannot slice [src] here! You need a table or at least a tray to do it." return - + var/slices_lost = 0 if (W.w_class > 3) user.visible_message("\blue [user] crudely slices \the [src] with [W]!", "\blue You crudely slice \the [src] with your [W]!") slices_lost = rand(1,min(1,round(slices_num/2))) else user.visible_message("\blue [user] slices \the [src]!", "\blue You slice \the [src]!") - + var/reagents_per_slice = reagents.total_volume/slices_num for(var/i=1 to (slices_num-slices_lost)) var/obj/slice = new slice_path (src.loc) @@ -195,7 +195,7 @@ return /obj/item/weapon/reagent_containers/food/snacks/proc/is_sliceable() - return (slices_num <= 0 || !slices_num || !slice_path) + return (slices_num <= 0 || !slices_num || !slice_path) /obj/item/weapon/reagent_containers/food/snacks/Del() if(contents) @@ -203,25 +203,6 @@ something.loc = get_turf(src) ..() -/obj/item/weapon/reagent_containers/food/snacks/attack_animal(var/mob/M) - if(isanimal(M)) - if(iscorgi(M)) - if(bitecount == 0 || prob(50)) - M.emote("nibbles away at the [src]") - bitecount++ - if(bitecount >= 5) - var/sattisfaction_text = pick("burps from enjoyment", "yaps for more", "woofs twice", "looks at the area where the [src] was") - if(sattisfaction_text) - M.emote("[sattisfaction_text]") - del(src) - if(ismouse(M)) - var/mob/living/simple_animal/mouse/N = M - N << text("\blue You nibble away at [src].") - if(prob(50)) - N.visible_message("[N] nibbles away at [src].", "") - //N.emote("nibbles away at the [src]") - N.health = min(N.health + 1, N.maxHealth) - //////////////////////////////////////////////////////////////////////////////// /// FOOD END //////////////////////////////////////////////////////////////////////////////// diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm index 810b523078..49348a22a0 100644 --- a/code/modules/reagents/reagent_containers/hypospray.dm +++ b/code/modules/reagents/reagent_containers/hypospray.dm @@ -14,10 +14,6 @@ flags = FPRINT | TABLEPASS | OPENCONTAINER slot_flags = SLOT_BELT -/obj/item/weapon/reagent_containers/hypospray/attack_paw(mob/user as mob) - return src.attack_hand(user) - - /obj/item/weapon/reagent_containers/hypospray/New() //comment this to make hypos start off empty ..() reagents.add_reagent("tricordrazine", 30) diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm index 5617a3802e..744e212e78 100644 --- a/code/modules/reagents/reagent_containers/syringes.dm +++ b/code/modules/reagents/reagent_containers/syringes.dm @@ -45,9 +45,6 @@ ..() update_icon() - attack_paw() - return attack_hand() - attackby(obj/item/I as obj, mob/user as mob) return @@ -308,9 +305,6 @@ ..() update_icon() - attack_paw() - return attack_hand() - attackby(obj/item/I as obj, mob/user as mob) return diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm index 035c16e70e..ebf10843d9 100644 --- a/code/modules/recycling/disposal.dm +++ b/code/modules/recycling/disposal.dm @@ -204,16 +204,6 @@ update() return - -// monkeys can only pull the flush lever -/obj/machinery/disposal/attack_paw(mob/user as mob) - if(stat & BROKEN) - return - - flush = !flush - update() - return - // ai as human but can't flush /obj/machinery/disposal/attack_ai(mob/user as mob) interact(user, 1) diff --git a/code/modules/security levels/keycard authentication.dm b/code/modules/security levels/keycard authentication.dm index 33f40e4193..bda06182ef 100644 --- a/code/modules/security levels/keycard authentication.dm +++ b/code/modules/security levels/keycard authentication.dm @@ -24,10 +24,6 @@ user << "The station AI is not to interact with these devices." return -/obj/machinery/keycard_auth/attack_paw(mob/user as mob) - user << "You are too primitive to use this device." - return - /obj/machinery/keycard_auth/attackby(obj/item/weapon/W as obj, mob/user as mob) if(stat & (NOPOWER|BROKEN)) user << "This device is not powered." diff --git a/code/modules/shieldgen/shield_capacitor.dm b/code/modules/shieldgen/shield_capacitor.dm index ed68d6ce81..2893f11b89 100644 --- a/code/modules/shieldgen/shield_capacitor.dm +++ b/code/modules/shieldgen/shield_capacitor.dm @@ -64,12 +64,6 @@ else ..() -/obj/machinery/shield_capacitor/attack_paw(user as mob) - return src.attack_hand(user) - -/obj/machinery/shield_capacitor/attack_ai(user as mob) - return src.attack_hand(user) - /obj/machinery/shield_capacitor/attack_hand(mob/user) if(stat & (BROKEN)) return diff --git a/code/modules/shieldgen/shield_gen.dm b/code/modules/shieldgen/shield_gen.dm index b330b7cac9..0573770dc7 100644 --- a/code/modules/shieldgen/shield_gen.dm +++ b/code/modules/shieldgen/shield_gen.dm @@ -80,9 +80,6 @@ else ..() -/obj/machinery/shield_gen/attack_paw(user as mob) - return src.attack_hand(user) - /obj/machinery/shield_gen/attack_ai(user as mob) return src.attack_hand(user) @@ -146,16 +143,16 @@ //figure out how much energy we need to draw from the capacitor if(active && owned_capacitor && owned_capacitor.active) var/target_renwick_increase = min(target_field_strength - average_field_strength, strengthen_rate) + renwick_upkeep_per_field //per field tile - + var/required_energy = field.len * target_renwick_increase / energy_conversion_rate var/assumed_charge = min(owned_capacitor.stored_charge, required_energy) total_renwick_increase = assumed_charge * energy_conversion_rate owned_capacitor.stored_charge -= assumed_charge else renwick_upkeep_per_field = max(renwick_upkeep_per_field, 0.5) - + var/renwick_increase_per_field = total_renwick_increase/field.len //per field tile - + average_field_strength = 0 //recalculate the average field strength for(var/obj/effect/energy_field/E in field) var/amount_to_strengthen = renwick_increase_per_field - renwick_upkeep_per_field @@ -164,7 +161,7 @@ E.ticks_recovering -= 1 else E.Strengthen(amount_to_strengthen) - + average_field_strength += E.strength average_field_strength /= field.len @@ -190,7 +187,7 @@ strengthen_rate = between(0, strengthen_rate + text2num(href_list["strengthen_rate"]), max_strengthen_rate) else if( href_list["target_field_strength"] ) target_field_strength = between(1, target_field_strength + text2num(href_list["target_field_strength"]), max_field_strength) - + updateDialog() /obj/machinery/shield_gen/ex_act(var/severity) @@ -236,24 +233,24 @@ //grab the border tiles in a circle around this machine /obj/machinery/shield_gen/proc/get_shielded_turfs() var/list/out = list() - + var/turf/gen_turf = get_turf(src) if (!gen_turf) return - + var/turf/T for (var/x_offset = -field_radius; x_offset <= field_radius; x_offset++) T = locate(gen_turf.x + x_offset, gen_turf.y - field_radius, gen_turf.z) if (T) out += T - + T = locate(gen_turf.x + x_offset, gen_turf.y + field_radius, gen_turf.z) if (T) out += T - + for (var/y_offset = -field_radius+1; y_offset < field_radius; y_offset++) T = locate(gen_turf.x - field_radius, gen_turf.y + y_offset, gen_turf.z) if (T) out += T - + T = locate(gen_turf.x + field_radius, gen_turf.y + y_offset, gen_turf.z) if (T) out += T - + return out diff --git a/code/modules/supermatter/supermatter.dm b/code/modules/supermatter/supermatter.dm index 9260c44346..8e74323d6e 100644 --- a/code/modules/supermatter/supermatter.dm +++ b/code/modules/supermatter/supermatter.dm @@ -7,10 +7,10 @@ /* How to tweak the SM - + POWER_FACTOR directly controls how much power the SM puts out at a given level of excitation (power var). Making this lower means you have to work the SM harder to get the same amount of power. CRITICAL_TEMPERATURE The temperature at which the SM starts taking damage. - + CHARGING_FACTOR Controls how much emitter shots excite the SM. DAMAGE_RATE_LIMIT Controls the maximum rate at which the SM will take damage due to high temperatures. */ @@ -77,7 +77,7 @@ var/config_hallucination_power = 0.1 var/obj/item/device/radio/radio - + var/debug = 0 shard //Small subtype, less efficient and more sensitive, but less boom. @@ -203,7 +203,7 @@ //If chain reacting at oxygen == 1, we want the power at 800 K to stabilize at a power level of 250 equilibrium_power = 250 icon_state = base_icon_state - + temp_factor = ( (equilibrium_power/DECAY_FACTOR)**3 )/800 power = max( (removed.temperature * temp_factor) * oxygen + power, 0) @@ -216,13 +216,13 @@ var/heat_capacity = removed.heat_capacity() removed.adjust_multi("phoron", max(device_energy / PHORON_RELEASE_MODIFIER, 0), \ "oxygen", max((device_energy + removed.temperature - T0C) / OXYGEN_RELEASE_MODIFIER, 0)) - + var/thermal_power = THERMAL_RELEASE_MODIFIER * device_energy if (debug) var/heat_capacity_new = removed.heat_capacity() visible_message("[src]: Releasing [round(thermal_power)] W.") visible_message("[src]: Releasing additional [round((heat_capacity_new - heat_capacity)*removed.temperature)] W with exhaust gasses.") - + removed.add_thermal_energy(thermal_power) removed.temperature = between(0, removed.temperature, 10000) @@ -255,11 +255,6 @@ damage += Proj.damage * config_bullet_energy return 0 - -/obj/machinery/power/supermatter/attack_paw(mob/user as mob) - return attack_hand(user) - - /obj/machinery/power/supermatter/attack_robot(mob/user as mob) if(Adjacent(user)) return attack_hand(user) @@ -282,7 +277,7 @@ var/distance = get_dist(R, src) if(distance <= 15) //for collectors using standard phoron tanks at 1013 kPa, the actual power generated will be this power*POWER_FACTOR*20*29 = power*POWER_FACTOR*580 - R.receive_pulse(power * POWER_FACTOR * (min(3/distance, 1))**2) + R.receive_pulse(power * POWER_FACTOR * (min(3/distance, 1))**2) return /obj/machinery/power/supermatter/attackby(obj/item/weapon/W as obj, mob/living/user as mob) diff --git a/code/modules/vehicles/vehicle.dm b/code/modules/vehicles/vehicle.dm index c15c587efd..741393c656 100644 --- a/code/modules/vehicles/vehicle.dm +++ b/code/modules/vehicles/vehicle.dm @@ -100,15 +100,6 @@ else ..() -/obj/vehicle/attack_animal(var/mob/living/simple_animal/M as mob) - if(M.melee_damage_upper == 0) return - health -= M.melee_damage_upper - src.visible_message("\red [M] has [M.attacktext] [src]!") - M.attack_log += text("\[[time_stamp()]\] attacked [src.name]") - if(prob(10)) - new /obj/effect/decal/cleanable/blood/oil(src.loc) - healthcheck() - /obj/vehicle/bullet_act(var/obj/item/projectile/Proj) health -= Proj.damage ..() diff --git a/code/modules/virus2/curer.dm b/code/modules/virus2/curer.dm index 44a0fd348b..d87f579d31 100644 --- a/code/modules/virus2/curer.dm +++ b/code/modules/virus2/curer.dm @@ -32,16 +32,11 @@ state("The [src.name] Buzzes", "blue") return ..() - return + return /obj/machinery/computer/curer/attack_ai(var/mob/user as mob) return src.attack_hand(user) -/obj/machinery/computer/curer/attack_paw(var/mob/user as mob) - - return src.attack_hand(user) - return - /obj/machinery/computer/curer/attack_hand(var/mob/user as mob) if(..()) return diff --git a/code/modules/virus2/diseasesplicer.dm b/code/modules/virus2/diseasesplicer.dm index 47a4402ab4..cbab5f5f7d 100644 --- a/code/modules/virus2/diseasesplicer.dm +++ b/code/modules/virus2/diseasesplicer.dm @@ -36,9 +36,6 @@ /obj/machinery/computer/diseasesplicer/attack_ai(var/mob/user as mob) return src.attack_hand(user) -/obj/machinery/computer/diseasesplicer/attack_paw(var/mob/user as mob) - return src.attack_hand(user) - /obj/machinery/computer/diseasesplicer/attack_hand(var/mob/user as mob) if(..()) return ui_interact(user) From 4090f048394b12f34a71d04ef18e9c50765a58e5 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Thu, 13 Nov 2014 17:46:37 +1030 Subject: [PATCH 08/16] Readded monkey dexterity checks in each attack_hand as appropriate. --- baystation12.dme | 1 - code/_onclick/other_mobs.dm | 7 +++++++ .../game/machinery/computer/HolodeckControl.dm | 4 ++++ .../embedded_controller_base.dm | 4 ++++ code/game/machinery/navbeacon.dm | 4 ++++ code/game/machinery/newscaster.dm | 5 +++++ code/game/machinery/suit_storage_unit.dm | 5 +++++ code/game/objects/items/stacks/sheets/glass.dm | 2 -- code/modules/clothing/masks/miscellaneous.dm | 6 ++++++ code/modules/mob/living/carbon/human/human.dm | 9 ++++++--- .../modules/mob/living/carbon/monkey/monkey.dm | 11 +++++------ code/modules/mob/mob.dm | 4 ++-- code/modules/power/apc.dm | 1 - code/modules/projectiles/gun.dm | 1 - .../projectiles/guns/projectile/launcher.dm | 1 - code/modules/recycling/disposal.dm | 18 ++++++++++++------ .../security levels/keycard authentication.dm | 2 ++ 17 files changed, 62 insertions(+), 23 deletions(-) diff --git a/baystation12.dme b/baystation12.dme index d13c553649..2af4e4e2cd 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -981,7 +981,6 @@ #include "code\modules\mob\living\carbon\human\examine.dm" #include "code\modules\mob\living\carbon\human\human.dm" #include "code\modules\mob\living\carbon\human\human_attackhand.dm" -#include "code\modules\mob\living\carbon\human\human_attackpaw.dm" #include "code\modules\mob\living\carbon\human\human_damage.dm" #include "code\modules\mob\living\carbon\human\human_defense.dm" #include "code\modules\mob\living\carbon\human\human_defines.dm" diff --git a/code/_onclick/other_mobs.dm b/code/_onclick/other_mobs.dm index 6ac412ec88..2d3f3c45da 100644 --- a/code/_onclick/other_mobs.dm +++ b/code/_onclick/other_mobs.dm @@ -14,6 +14,7 @@ return A.attack_hand(src) + /atom/proc/attack_hand(mob/user as mob) return @@ -54,6 +55,12 @@ Monkeys */ + +//TODO: Disease spreading and unarmed damage against mobs. +/mob/living/carbon/monkey/UnarmedAttack(var/atom/A, var/proximity) + if(!proximity) + A.attack_hand(src) + /* Monkey RestrainedClickOn() was apparently the one and only use of all of the restrained click code diff --git a/code/game/machinery/computer/HolodeckControl.dm b/code/game/machinery/computer/HolodeckControl.dm index 2e186781e1..9ebc550119 100644 --- a/code/game/machinery/computer/HolodeckControl.dm +++ b/code/game/machinery/computer/HolodeckControl.dm @@ -518,10 +518,14 @@ var/global/list/holodeck_programs = list( user << "The device is a solid button, there's nothing you can do with it!" /obj/machinery/readybutton/attack_hand(mob/user as mob) + if(user.stat || stat & (NOPOWER|BROKEN)) user << "This device is not powered." return + if(!user.IsAdvancedToolUser()) + return 0 + currentarea = get_area(src.loc) if(!currentarea) del(src) diff --git a/code/game/machinery/embedded_controller/embedded_controller_base.dm b/code/game/machinery/embedded_controller/embedded_controller_base.dm index e6fb2c0332..84fa419265 100644 --- a/code/game/machinery/embedded_controller/embedded_controller_base.dm +++ b/code/game/machinery/embedded_controller/embedded_controller_base.dm @@ -30,6 +30,10 @@ src.ui_interact(user) /obj/machinery/embedded_controller/attack_hand(mob/user as mob) + + if(!user.IsAdvancedToolUser()) + return 0 + src.ui_interact(user) /obj/machinery/embedded_controller/ui_interact() diff --git a/code/game/machinery/navbeacon.dm b/code/game/machinery/navbeacon.dm index 140e4eb5c4..16e1cc032d 100644 --- a/code/game/machinery/navbeacon.dm +++ b/code/game/machinery/navbeacon.dm @@ -127,6 +127,10 @@ interact(user, 1) attack_hand(var/mob/user) + + if(!user.IsAdvancedToolUser()) + return 0 + interact(user, 0) interact(var/mob/user, var/ai = 0) diff --git a/code/game/machinery/newscaster.dm b/code/game/machinery/newscaster.dm index 0468c264f2..5e278bf2f5 100644 --- a/code/game/machinery/newscaster.dm +++ b/code/game/machinery/newscaster.dm @@ -243,8 +243,13 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co return src.attack_hand(user) /obj/machinery/newscaster/attack_hand(mob/user as mob) //########### THE MAIN BEEF IS HERE! And in the proc below this...############ + if(!src.ispowered || src.isbroken) return + + if(!user.IsAdvancedToolUser()) + return 0 + if(istype(user, /mob/living/carbon/human) || istype(user,/mob/living/silicon) ) var/mob/living/human_or_robot_user = user var/dat diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm index 05a5a84eb3..68da5f0ef1 100644 --- a/code/game/machinery/suit_storage_unit.dm +++ b/code/game/machinery/suit_storage_unit.dm @@ -94,6 +94,8 @@ return if(stat & NOPOWER) return + if(!user.IsAdvancedToolUser()) + return 0 if(src.panelopen) //The maintenance panel is open. Time for some shady stuff dat+= "Suit storage unit: Maintenance panel" dat+= "Maintenance panel controls


" @@ -776,6 +778,9 @@ if(..() || stat & (BROKEN|NOPOWER)) return + if(!user.IsAdvancedToolUser()) + return 0 + if(electrified != 0) if(src.shock(user, 100)) return diff --git a/code/game/objects/items/stacks/sheets/glass.dm b/code/game/objects/items/stacks/sheets/glass.dm index c1126464f5..f65442e462 100644 --- a/code/game/objects/items/stacks/sheets/glass.dm +++ b/code/game/objects/items/stacks/sheets/glass.dm @@ -64,7 +64,6 @@ if(!user || !src) return 0 if(!istype(user.loc,/turf)) return 0 if(!user.IsAdvancedToolUser()) - user << "\red You don't have the dexterity to do this!" return 0 var/title = "Sheet-Glass" title += " ([src.amount] sheet\s left)" @@ -145,7 +144,6 @@ if(!user || !src) return 0 if(!istype(user.loc,/turf)) return 0 if(!user.IsAdvancedToolUser()) - user << "\red You don't have the dexterity to do this!" return 0 var/title = "Sheet Reinf. Glass" title += " ([src.amount] sheet\s left)" diff --git a/code/modules/clothing/masks/miscellaneous.dm b/code/modules/clothing/masks/miscellaneous.dm index cca2dff7de..3f3094c794 100644 --- a/code/modules/clothing/masks/miscellaneous.dm +++ b/code/modules/clothing/masks/miscellaneous.dm @@ -8,6 +8,12 @@ w_class = 2 gas_transfer_coefficient = 0.90 +// Clumsy folks can't take the mask off themselves. +/obj/item/clothing/mask/muzzle/attack_hand(mob/user as mob) + if(user.wear_mask == src && !user.IsAdvancedToolUser()) + return 0 + ..() + /obj/item/clothing/mask/surgical name = "sterile mask" desc = "A sterile mask designed to help prevent the spread of diseases." diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 4c58f67a79..2b6ec75ac0 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -691,9 +691,12 @@ return number -/mob/living/carbon/human/IsAdvancedToolUser() - return species.has_fine_manipulation - +/mob/living/carbon/human/IsAdvancedToolUser(var/silent) + if(species.has_fine_manipulation) + return 1 + if(!silent) + src << "You don't have the dexterity to use [src]!" + return 0 /mob/living/carbon/human/abiotic(var/full_body = 0) if(full_body && ((src.l_hand && !( src.l_hand.abstract )) || (src.r_hand && !( src.r_hand.abstract )) || (src.back || src.wear_mask || src.head || src.shoes || src.w_uniform || src.wear_suit || src.glasses || src.l_ear || src.r_ear || src.gloves))) diff --git a/code/modules/mob/living/carbon/monkey/monkey.dm b/code/modules/mob/living/carbon/monkey/monkey.dm index bd12e4b154..4d5f88095e 100644 --- a/code/modules/mob/living/carbon/monkey/monkey.dm +++ b/code/modules/mob/living/carbon/monkey/monkey.dm @@ -292,8 +292,10 @@ del(src) return - -/mob/living/carbon/monkey/IsAdvancedToolUser()//Unless its monkey mode monkeys cant use advanced tools +//Unless its monkey mode monkeys cant use advanced tools +/mob/living/carbon/monkey/IsAdvancedToolUser(var/silent) + if(!silent) + src << "You don't have the dexterity to use [src]!" return 0 /mob/living/carbon/monkey/say(var/message, var/datum/language/speaking = null, var/verb="says", var/alt_name="", var/italics=0, var/message_range = world.view, var/list/used_radios = list()) @@ -311,7 +313,4 @@ message = capitalize(trim_left(message)) - ..(message, speaking, verb, alt_name, italics, message_range, used_radios) - -/mob/living/carbon/monkey/UnarmedAttack(var/atom/A) - return \ No newline at end of file + ..(message, speaking, verb, alt_name, italics, message_range, used_radios) \ No newline at end of file diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 9577a476f6..1233923ca5 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -921,10 +921,10 @@ note dizziness decrements automatically in the mob's Life() proc. return facedir(SOUTH) -/mob/proc/IsAdvancedToolUser()//This might need a rename but it should replace the can this mob use things check +//This might need a rename but it should replace the can this mob use things check +/mob/proc/IsAdvancedToolUser() return 0 - /mob/proc/Stun(amount) if(status_flags & CANSTUN) stunned = max(max(stunned,amount),0) //can't go below 0, getting a low amount of stun doesn't lower your current stun diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index 12b16a54ef..e906bf99b0 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -819,7 +819,6 @@ if(inoperable()) return 0 if(!user.IsAdvancedToolUser()) - user << "You don't have the dexterity to use [src]!" return 0 if(user.restrained()) user << "You must have free hands to use [src]." diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 3d4ea67c3b..c7a62e7f5c 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -74,7 +74,6 @@ return if (!user.IsAdvancedToolUser()) - user << "\red You don't have the dexterity to do this!" return if(istype(user, /mob/living)) var/mob/living/M = user diff --git a/code/modules/projectiles/guns/projectile/launcher.dm b/code/modules/projectiles/guns/projectile/launcher.dm index c367780a5e..5f9d9fdfde 100644 --- a/code/modules/projectiles/guns/projectile/launcher.dm +++ b/code/modules/projectiles/guns/projectile/launcher.dm @@ -39,7 +39,6 @@ /obj/item/weapon/gun/launcher/Fire(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, params, reflex = 0) if (!user.IsAdvancedToolUser()) - user << "\red You don't have the dexterity to do this!" return 0 add_fingerprint(user) diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm index ebf10843d9..bf77c47d59 100644 --- a/code/modules/recycling/disposal.dm +++ b/code/modules/recycling/disposal.dm @@ -210,15 +210,21 @@ // human interact with machine /obj/machinery/disposal/attack_hand(mob/user as mob) + + if(stat & BROKEN) + return + if(user && user.loc == src) usr << "\red You cannot reach the controls from inside." return - /* - if(mode==-1) - usr << "\red The disposal units power is disabled." - return - */ - interact(user, 0) + + // Clumsy folks can only flush it. + if(user.IsAdvancedToolUser(1)) + interact(user, 0) + else + flush = !flush + update() + return // user interaction /obj/machinery/disposal/interact(mob/user, var/ai=0) diff --git a/code/modules/security levels/keycard authentication.dm b/code/modules/security levels/keycard authentication.dm index bda06182ef..87514a5473 100644 --- a/code/modules/security levels/keycard authentication.dm +++ b/code/modules/security levels/keycard authentication.dm @@ -49,6 +49,8 @@ if(user.stat || stat & (NOPOWER|BROKEN)) user << "This device is not powered." return + if(!user.IsAdvancedToolUser()) + return 0 if(busy) user << "This device is busy." return From efcfa5199b08caeaf739a26af90b5e1ce3c7e95d Mon Sep 17 00:00:00 2001 From: Atlantiscze Date: Thu, 13 Nov 2014 08:42:55 +0100 Subject: [PATCH 09/16] Robot analyzers can now be placed into tool belts. --- code/game/objects/items/weapons/storage/belt.dm | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm index be98962411..a5bb76b43e 100644 --- a/code/game/objects/items/weapons/storage/belt.dm +++ b/code/game/objects/items/weapons/storage/belt.dm @@ -24,7 +24,8 @@ "/obj/item/stack/cable_coil", "/obj/item/device/t_scanner", "/obj/item/device/analyzer", - "/obj/item/taperoll/engineering") + "/obj/item/taperoll/engineering", + "/obj/item/device/robotanalyzer") /obj/item/weapon/storage/belt/utility/full/New() From 59077c5b51ea74d74707779cad8dfa48813fe228 Mon Sep 17 00:00:00 2001 From: Atlantiscze Date: Thu, 13 Nov 2014 08:45:45 +0100 Subject: [PATCH 10/16] Buildable robot analyzers - Robot analyzers can now be built using Protolathe. They are low-mid level tech, requiring quite small research levels and no rare materials. --- code/modules/mob/living/silicon/robot/analyzer.dm | 4 ++-- code/modules/research/designs.dm | 9 +++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/silicon/robot/analyzer.dm b/code/modules/mob/living/silicon/robot/analyzer.dm index 98d7da00ea..eaef5607cb 100644 --- a/code/modules/mob/living/silicon/robot/analyzer.dm +++ b/code/modules/mob/living/silicon/robot/analyzer.dm @@ -12,8 +12,8 @@ w_class = 2.0 throw_speed = 5 throw_range = 10 - matter = list("metal" = 200) - origin_tech = "magnets=1;biotech=1" + matter = list("metal" = 500, "glass" = 200) + origin_tech = "magnets=2;biotech=1;engineering=2" var/mode = 1; /obj/item/device/robotanalyzer/attack(mob/living/M as mob, mob/living/user as mob) diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm index 451978609b..a3e39b3fea 100644 --- a/code/modules/research/designs.dm +++ b/code/modules/research/designs.dm @@ -1321,6 +1321,15 @@ datum/design/batteryrack ////////////Medical Tools//////////////// ///////////////////////////////////////// +datum/design/robot_scanner + name = "Cyborg Analyzer" + desc = "A hand-held scanner able to diagnose robotic injuries. " + id = "robot_scanner" + req_tech = list("magnets" = 3, "biotech" = 2, "engineering" = 3) + build_type = PROTOLATHE + materials = list("$metal" = 500, "$glass" = 200) + build_path = "/obj/item/device/robotanalyzer" + datum/design/mass_spectrometer name = "Mass-Spectrometer" desc = "A device for analyzing chemicals in the blood." From 4bb4145f5d84d5443b8830484f681e168629f868 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Thu, 13 Nov 2014 19:18:34 +1030 Subject: [PATCH 11/16] Readded interactions for slimes and monkeys using attack_generic proc. --- code/_onclick/click.dm | 17 +- code/_onclick/other_mobs.dm | 70 ++- code/game/machinery/turrets.dm | 12 + code/game/mecha/mecha.dm | 21 + code/game/objects/structures.dm | 16 +- .../structures/crates_lockers/closets.dm | 9 +- code/game/objects/structures/girders.dm | 415 +++++++++--------- code/game/objects/structures/grille.dm | 20 +- code/game/objects/structures/inflatable.dm | 307 ++++++------- code/game/objects/structures/mirror.dm | 24 +- code/game/objects/structures/window.dm | 4 +- code/game/turfs/simulated/walls.dm | 17 + .../living/carbon/human/human_attackhand.dm | 17 +- .../mob/living/carbon/metroid/metroid.dm | 4 - code/modules/mob/living/living_defense.dm | 11 + .../modules/mob/living/silicon/robot/robot.dm | 4 + .../mob/living/simple_animal/parrot.dm | 11 + code/modules/power/lighting.dm | 10 + code/modules/vehicles/vehicle.dm | 12 +- 19 files changed, 590 insertions(+), 411 deletions(-) diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index 586b262259..bf5d635208 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -154,7 +154,6 @@ /mob/proc/DblClickOn(var/atom/A, var/params) ClickOn(A,params) - /* Translates into attack_hand, etc. @@ -168,6 +167,22 @@ /mob/proc/UnarmedAttack(var/atom/A, var/proximity_flag) return +/mob/living/UnarmedAttack(var/atom/A, var/proximity_flag) + + if(!ticker) + src << "You cannot attack people before the game has started." + return 0 + + if (istype(get_area(src), /area/start)) + src << "No attacking people at spawn, you jackass." + return 0 + + if(stat) + return + + if(!proximity_flag) + return 0 + /* Ranged unarmed attack: diff --git a/code/_onclick/other_mobs.dm b/code/_onclick/other_mobs.dm index 2d3f3c45da..5f4d9fc8df 100644 --- a/code/_onclick/other_mobs.dm +++ b/code/_onclick/other_mobs.dm @@ -1,3 +1,6 @@ +// Generic damage proc (slimes and monkeys). +/atom/proc/attack_generic(mob/user as mob) + return /* Humans: Adds an exception for gloves, to allow special glove types like the ninja ones. @@ -5,12 +8,15 @@ Otherwise pretty standard. */ /mob/living/carbon/human/UnarmedAttack(var/atom/A, var/proximity) - var/obj/item/clothing/gloves/G = gloves // not typecast specifically enough in defines + + if(!..()) + return // Special glove functions: // If the gloves do anything, have them return 1 to stop // normal attack_hand() here. - if(proximity && istype(G) && G.Touch(A,1)) + var/obj/item/clothing/gloves/G = gloves // not typecast specifically enough in defines + if(istype(G) && G.Touch(A,1)) return A.attack_hand(src) @@ -42,12 +48,6 @@ return A.attack_tk(src) -/* - Animals & All Unspecified -*/ -/mob/living/UnarmedAttack(var/atom/A) - return - /mob/living/RestrainedClickOn(var/atom/A) return @@ -58,7 +58,13 @@ //TODO: Disease spreading and unarmed damage against mobs. /mob/living/carbon/monkey/UnarmedAttack(var/atom/A, var/proximity) - if(!proximity) + + if(!..()) + return + + if(a_intent == "harm") + A.attack_generic(src,rand(1,3),"bites") + else A.attack_hand(src) /* @@ -104,6 +110,52 @@ /mob/living/carbon/slime/RestrainedClickOn(var/atom/A) return +/mob/living/carbon/slime/UnarmedAttack(var/atom/A, var/proximity) + + if(!..()) + return + + // Eating + if(Victim) + return + + // Basic attack. + A.attack_generic(src, (is_adult ? rand(20,40) : rand(5,25)), "glomps") + + // Handle mob shocks. + var/mob/living/M = A + if(istype(M) && powerlevel > 0 && !istype(A,/mob/living/carbon/slime)) + + if(ishuman(M)) + var/mob/living/carbon/human/H = M + if(H.species.flags & IS_SYNTHETIC || H.species.insulated) + return + + var/power = max(0,min(10,(powerlevel+rand(0,3)))) + + var/stunprob = 10 + switch(power*10) + if(1 to 2) stunprob = 20 + if(3 to 4) stunprob = 30 + if(5 to 6) stunprob = 40 + if(7 to 8) stunprob = 60 + if(9) stunprob = 70 + if(10) stunprob = 95 + + if(prob(stunprob)) + powerlevel = max(0,powerlevel-3) + src.visible_message("\red The [name] has shocked [M]!") + M.Weaken(power) + M.Stun(power) + if (M.stuttering < power) M.stuttering = power + + var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread + s.set_up(5, 1, M) + s.start() + + if(prob(stunprob) && powerlevel >= 8) + M.adjustFireLoss(powerlevel * rand(6,10)) + M.updatehealth() /* New Players: Have no reason to click on anything at all. diff --git a/code/game/machinery/turrets.dm b/code/game/machinery/turrets.dm index 07936e2685..48f2dcab17 100644 --- a/code/game/machinery/turrets.dm +++ b/code/game/machinery/turrets.dm @@ -338,6 +338,18 @@ spawn(13) del(src) +/obj/machinery/turret/attack_generic(var/mob/user, var/damage, var/attack_message) + if(!damage) + return + if(stat & BROKEN) + user << "That object is useless to you." + return + visible_message("[user] [attack_message] the [src]!") + user.attack_log += text("\[[time_stamp()]\] attacked [src.name]") + src.health -= damage + if (src.health <= 0) + src.die() + /obj/structure/turret/gun_turret name = "Gun Turret" density = 1 diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index c8b22dda28..e45fa114e8 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -1703,6 +1703,27 @@ icon_state = initial(icon_state) return icon_state +/obj/mecha/attack_generic(var/mob/user, var/damage, var/attack_message) + + if(!damage) + return + + src.log_message("Attack by an animal. Attacker - [user].",1) + + if(!prob(src.deflect_chance)) + src.take_damage(damage) + src.check_for_internal_damage(list(MECHA_INT_TEMP_CONTROL,MECHA_INT_TANK_BREACH,MECHA_INT_CONTROL_LOST)) + visible_message("\red [user] [attack_message] [src]!") + user.attack_log += text("\[[time_stamp()]\] attacked [src.name]") + else + src.log_append_to_last("Armor saved.") + playsound(src.loc, 'sound/weapons/slash.ogg', 50, 1, -1) + src.occupant_message("\blue The [user]'s attack is stopped by the armor.") + visible_message("\blue The [user] rebounds off [src.name]'s armor!") + user.attack_log += text("\[[time_stamp()]\] attacked [src.name]") + return + + ////////////////////////////////////////// //////// Mecha global iterators //////// ////////////////////////////////////////// diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm index 3fedae810b..b6e9406b51 100644 --- a/code/game/objects/structures.dm +++ b/code/game/objects/structures.dm @@ -1,5 +1,6 @@ /obj/structure icon = 'icons/obj/structures.dmi' + var/climbable var/breakable var/parts @@ -14,13 +15,12 @@ if(breakable) if(HULK in user.mutations) user.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" )) - visible_message("[user] smashes the [src] apart!") - destroy() + attack_generic(user,1,"smashes") else if(istype(user,/mob/living/carbon/human)) var/mob/living/carbon/human/H = user if(H.species.can_shred(user)) - visible_message("[H] slices [src] apart!") - destroy() + attack_generic(user,1,"slices") + return /obj/structure/blob_act() if(prob(50)) @@ -166,4 +166,10 @@ if (issilicon(user)) user << "You need hands for this." return 0 - return 1 \ No newline at end of file + return 1 + +/obj/structure/attack_generic(var/mob/user, var/damage, var/attack_verb, var/wallbreaker) + if(!breakable || !damage || !wallbreaker) + return + visible_message("[user] [attack_verb] the [src] apart!") + destroy() \ No newline at end of file diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index 6be83616f6..33ad8abc15 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -297,4 +297,11 @@ for (var/atom/A in src) if(istype(A,/obj/)) var/obj/O = A - O.hear_talk(M, text) \ No newline at end of file + O.hear_talk(M, text) + +/obj/structure/closet/attack_generic(var/mob/user, var/damage, var/attack_message = "destroys", var/wallbreaker) + if(!damage || !wallbreaker) + return + visible_message("[user] [attack_message] the [src]!") + dump_contents() + del(src) \ No newline at end of file diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm index b8d811efb6..d6628f0023 100644 --- a/code/game/objects/structures/girders.dm +++ b/code/game/objects/structures/girders.dm @@ -6,193 +6,198 @@ var/state = 0 var/health = 200 +/obj/structure/girder/attack_generic(var/mob/user, var/damage, var/attack_message = "smashes apart", var/wallbreaker) + if(!damage || !wallbreaker) + return + visible_message("[user] [attack_message] the [src]!") + dismantle() - bullet_act(var/obj/item/projectile/Proj) - if(istype(Proj, /obj/item/projectile/beam)) - health -= Proj.damage - ..() - if(health <= 0) - new /obj/item/stack/sheet/metal(get_turf(src)) - del(src) +/obj/structure/girder/bullet_act(var/obj/item/projectile/Proj) + if(istype(Proj, /obj/item/projectile/beam)) + health -= Proj.damage + ..() + if(health <= 0) + new /obj/item/stack/sheet/metal(get_turf(src)) + del(src) - return + return - attackby(obj/item/W as obj, mob/user as mob) - if(istype(W, /obj/item/weapon/wrench) && state == 0) - if(anchored && !istype(src,/obj/structure/girder/displaced)) - playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1) - user << "\blue Now disassembling the girder" - if(do_after(user,40)) - if(!src) return - user << "\blue You dissasembled the girder!" - dismantle() - else if(!anchored) - playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1) - user << "\blue Now securing the girder" - if(get_turf(user, 40)) - user << "\blue You secured the girder!" - new/obj/structure/girder( src.loc ) - del(src) - - else if(istype(W, /obj/item/weapon/pickaxe/plasmacutter)) - user << "\blue Now slicing apart the girder" - if(do_after(user,30)) +/obj/structure/girder/attackby(obj/item/W as obj, mob/user as mob) + if(istype(W, /obj/item/weapon/wrench) && state == 0) + if(anchored && !istype(src,/obj/structure/girder/displaced)) + playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1) + user << "\blue Now disassembling the girder" + if(do_after(user,40)) if(!src) return - user << "\blue You slice apart the girder!" + user << "\blue You dissasembled the girder!" dismantle() - - else if(istype(W, /obj/item/weapon/pickaxe/diamonddrill)) - user << "\blue You drill through the girder!" - dismantle() - - else if(istype(W, /obj/item/weapon/screwdriver) && state == 2 && istype(src,/obj/structure/girder/reinforced)) - playsound(src.loc, 'sound/items/Screwdriver.ogg', 100, 1) - user << "\blue Now unsecuring support struts" - if(do_after(user,40)) - if(!src) return - user << "\blue You unsecured the support struts!" - state = 1 - - else if(istype(W, /obj/item/weapon/wirecutters) && istype(src,/obj/structure/girder/reinforced) && state == 1) - playsound(src.loc, 'sound/items/Wirecutter.ogg', 100, 1) - user << "\blue Now removing support struts" - if(do_after(user,40)) - if(!src) return - user << "\blue You removed the support struts!" + else if(!anchored) + playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1) + user << "\blue Now securing the girder" + if(get_turf(user, 40)) + user << "\blue You secured the girder!" new/obj/structure/girder( src.loc ) del(src) - else if(istype(W, /obj/item/weapon/crowbar) && state == 0 && anchored ) - playsound(src.loc, 'sound/items/Crowbar.ogg', 100, 1) - user << "\blue Now dislodging the girder" - if(do_after(user, 40)) - if(!src) return - user << "\blue You dislodged the girder!" - new/obj/structure/girder/displaced( src.loc ) - del(src) + else if(istype(W, /obj/item/weapon/pickaxe/plasmacutter)) + user << "\blue Now slicing apart the girder" + if(do_after(user,30)) + if(!src) return + user << "\blue You slice apart the girder!" + dismantle() - else if(istype(W, /obj/item/stack/sheet)) + else if(istype(W, /obj/item/weapon/pickaxe/diamonddrill)) + user << "\blue You drill through the girder!" + dismantle() - var/obj/item/stack/sheet/S = W - switch(S.type) + else if(istype(W, /obj/item/weapon/screwdriver) && state == 2 && istype(src,/obj/structure/girder/reinforced)) + playsound(src.loc, 'sound/items/Screwdriver.ogg', 100, 1) + user << "\blue Now unsecuring support struts" + if(do_after(user,40)) + if(!src) return + user << "\blue You unsecured the support struts!" + state = 1 - if(/obj/item/stack/sheet/metal, /obj/item/stack/sheet/metal/cyborg) - if(!anchored) - if(S.use(2)) - user << "You create a false wall! Push on it to open or close the passage." - new /obj/structure/falsewall (src.loc) + else if(istype(W, /obj/item/weapon/wirecutters) && istype(src,/obj/structure/girder/reinforced) && state == 1) + playsound(src.loc, 'sound/items/Wirecutter.ogg', 100, 1) + user << "\blue Now removing support struts" + if(do_after(user,40)) + if(!src) return + user << "\blue You removed the support struts!" + new/obj/structure/girder( src.loc ) + del(src) + + else if(istype(W, /obj/item/weapon/crowbar) && state == 0 && anchored ) + playsound(src.loc, 'sound/items/Crowbar.ogg', 100, 1) + user << "\blue Now dislodging the girder" + if(do_after(user, 40)) + if(!src) return + user << "\blue You dislodged the girder!" + new/obj/structure/girder/displaced( src.loc ) + del(src) + + else if(istype(W, /obj/item/stack/sheet)) + + var/obj/item/stack/sheet/S = W + switch(S.type) + + if(/obj/item/stack/sheet/metal, /obj/item/stack/sheet/metal/cyborg) + if(!anchored) + if(S.use(2)) + user << "You create a false wall! Push on it to open or close the passage." + new /obj/structure/falsewall (src.loc) + del(src) + else + if(S.get_amount() < 2) return ..() + user << "Now adding plating..." + if (do_after(user,40)) + if (S.use(2)) + user << "You added the plating!" + var/turf/Tsrc = get_turf(src) + Tsrc.ChangeTurf(/turf/simulated/wall) + for(var/turf/simulated/wall/X in Tsrc.loc) + if(X) X.add_hiddenprint(usr) del(src) - else - if(S.get_amount() < 2) return ..() - user << "Now adding plating..." - if (do_after(user,40)) - if (S.use(2)) - user << "You added the plating!" + return + + if(/obj/item/stack/sheet/plasteel) + if(!anchored) + if(S.use(2)) + user << "\blue You create a false wall! Push on it to open or close the passage." + new /obj/structure/falserwall (src.loc) + del(src) + else + if (src.icon_state == "reinforced") //I cant believe someone would actually write this line of code... + if(S.get_amount() < 1) return ..() + user << "Now finalising reinforced wall." + if(do_after(user, 50)) + if (S.use(1)) + user << "Wall fully reinforced!" var/turf/Tsrc = get_turf(src) - Tsrc.ChangeTurf(/turf/simulated/wall) - for(var/turf/simulated/wall/X in Tsrc.loc) + Tsrc.ChangeTurf(/turf/simulated/wall/r_wall) + for(var/turf/simulated/wall/r_wall/X in Tsrc.loc) if(X) X.add_hiddenprint(usr) del(src) return - - if(/obj/item/stack/sheet/plasteel) - if(!anchored) - if(S.use(2)) - user << "\blue You create a false wall! Push on it to open or close the passage." - new /obj/structure/falserwall (src.loc) - del(src) else - if (src.icon_state == "reinforced") //I cant believe someone would actually write this line of code... - if(S.get_amount() < 1) return ..() - user << "Now finalising reinforced wall." - if(do_after(user, 50)) - if (S.use(1)) - user << "Wall fully reinforced!" - var/turf/Tsrc = get_turf(src) - Tsrc.ChangeTurf(/turf/simulated/wall/r_wall) - for(var/turf/simulated/wall/r_wall/X in Tsrc.loc) - if(X) X.add_hiddenprint(usr) - del(src) - return - else - if(S.get_amount() < 1) return ..() - user << "Now reinforcing girders..." - if (do_after(user,60)) - if(S.use(1)) - user << "Girders reinforced!" - new/obj/structure/girder/reinforced( src.loc ) - del(src) - return + if(S.get_amount() < 1) return ..() + user << "Now reinforcing girders..." + if (do_after(user,60)) + if(S.use(1)) + user << "Girders reinforced!" + new/obj/structure/girder/reinforced( src.loc ) + del(src) + return - if(S.sheettype) - var/M = S.sheettype - if(!anchored) - if(S.amount < 2) return + if(S.sheettype) + var/M = S.sheettype + if(!anchored) + if(S.amount < 2) return + S.use(2) + user << "\blue You create a false wall! Push on it to open or close the passage." + var/F = text2path("/obj/structure/falsewall/[M]") + new F (src.loc) + del(src) + else + if(S.amount < 2) return ..() + user << "\blue Now adding plating..." + if (do_after(user,40)) + if(!src || !S || S.amount < 2) return S.use(2) - user << "\blue You create a false wall! Push on it to open or close the passage." - var/F = text2path("/obj/structure/falsewall/[M]") - new F (src.loc) + user << "\blue You added the plating!" + var/turf/Tsrc = get_turf(src) + Tsrc.ChangeTurf(text2path("/turf/simulated/wall/mineral/[M]")) + for(var/turf/simulated/wall/mineral/X in Tsrc.loc) + if(X) X.add_hiddenprint(usr) del(src) - else - if(S.amount < 2) return ..() - user << "\blue Now adding plating..." - if (do_after(user,40)) - if(!src || !S || S.amount < 2) return - S.use(2) - user << "\blue You added the plating!" - var/turf/Tsrc = get_turf(src) - Tsrc.ChangeTurf(text2path("/turf/simulated/wall/mineral/[M]")) - for(var/turf/simulated/wall/mineral/X in Tsrc.loc) - if(X) X.add_hiddenprint(usr) - del(src) - return + return - add_hiddenprint(usr) + add_hiddenprint(usr) - else if(istype(W, /obj/item/pipe)) - var/obj/item/pipe/P = W - if (P.pipe_type in list(0, 1, 5)) //simple pipes, simple bends, and simple manifolds. - user.drop_item() - P.loc = src.loc - user << "\blue You fit the pipe into the [src]!" - else - ..() + else if(istype(W, /obj/item/pipe)) + var/obj/item/pipe/P = W + if (P.pipe_type in list(0, 1, 5)) //simple pipes, simple bends, and simple manifolds. + user.drop_item() + P.loc = src.loc + user << "\blue You fit the pipe into the [src]!" + else + ..() - proc/dismantle() - new /obj/item/stack/sheet/metal(get_turf(src)) +/obj/structure/girder/proc/dismantle() + new /obj/item/stack/sheet/metal(get_turf(src)) + del(src) + +/obj/structure/girder/attack_hand(mob/user as mob) + if (HULK in user.mutations) + visible_message("[user] smashes [src] apart!") + dismantle() + return + return ..() + +/obj/structure/girder/blob_act() + if(prob(40)) del(src) - attack_hand(mob/user as mob) - if (HULK in user.mutations) - visible_message("[user] smashes [src] apart!") - dismantle() - return - return ..() - blob_act() - if(prob(40)) +/obj/structure/girder/ex_act(severity) + switch(severity) + if(1.0) del(src) - - - ex_act(severity) - switch(severity) - if(1.0) + return + if(2.0) + if (prob(30)) + var/remains = pick(/obj/item/stack/rods,/obj/item/stack/sheet/metal) + new remains(loc) del(src) - return - if(2.0) - if (prob(30)) - var/remains = pick(/obj/item/stack/rods,/obj/item/stack/sheet/metal) - new remains(loc) - del(src) - return - if(3.0) - if (prob(5)) - var/remains = pick(/obj/item/stack/rods,/obj/item/stack/sheet/metal) - new remains(loc) - del(src) - return - else - return + return + if(3.0) + if (prob(5)) + var/remains = pick(/obj/item/stack/rods,/obj/item/stack/sheet/metal) + new remains(loc) + del(src) + return + else + return /obj/structure/girder/displaced icon_state = "displaced" @@ -212,54 +217,54 @@ layer = 2 var/health = 250 - attackby(obj/item/W as obj, mob/user as mob) - if(istype(W, /obj/item/weapon/wrench)) - playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1) - user << "\blue Now disassembling the girder" - if(do_after(user,40)) - user << "\blue You dissasembled the girder!" - new /obj/effect/decal/remains/human(get_turf(src)) - del(src) - - else if(istype(W, /obj/item/weapon/pickaxe/plasmacutter)) - user << "\blue Now slicing apart the girder" - if(do_after(user,30)) - user << "\blue You slice apart the girder!" +/obj/structure/cultgirder/attackby(obj/item/W as obj, mob/user as mob) + if(istype(W, /obj/item/weapon/wrench)) + playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1) + user << "\blue Now disassembling the girder" + if(do_after(user,40)) + user << "\blue You dissasembled the girder!" new /obj/effect/decal/remains/human(get_turf(src)) del(src) - else if(istype(W, /obj/item/weapon/pickaxe/diamonddrill)) - user << "\blue You drill through the girder!" - new /obj/effect/decal/remains/human(get_turf(src)) + else if(istype(W, /obj/item/weapon/pickaxe/plasmacutter)) + user << "\blue Now slicing apart the girder" + if(do_after(user,30)) + user << "\blue You slice apart the girder!" + new /obj/effect/decal/remains/human(get_turf(src)) + del(src) + + else if(istype(W, /obj/item/weapon/pickaxe/diamonddrill)) + user << "\blue You drill through the girder!" + new /obj/effect/decal/remains/human(get_turf(src)) + del(src) + +/obj/structure/cultgirder/blob_act() + if(prob(40)) + del(src) + +/obj/structure/cultgirder/bullet_act(var/obj/item/projectile/Proj) //No beam check- How else will you destroy the cult girder with silver bullets????? + health -= Proj.damage + ..() + if(health <= 0) + new /obj/item/stack/sheet/metal(get_turf(src)) + del(src) + + return + +/obj/structure/cultgirder/ex_act(severity) + switch(severity) + if(1.0) del(src) - - blob_act() - if(prob(40)) - del(src) - - bullet_act(var/obj/item/projectile/Proj) //No beam check- How else will you destroy the cult girder with silver bullets????? - health -= Proj.damage - ..() - if(health <= 0) - new /obj/item/stack/sheet/metal(get_turf(src)) - del(src) - - return - - ex_act(severity) - switch(severity) - if(1.0) + return + if(2.0) + if (prob(30)) + new /obj/effect/decal/remains/human(loc) del(src) - return - if(2.0) - if (prob(30)) - new /obj/effect/decal/remains/human(loc) - del(src) - return - if(3.0) - if (prob(5)) - new /obj/effect/decal/remains/human(loc) - del(src) - return - else - return \ No newline at end of file + return + if(3.0) + if (prob(5)) + new /obj/effect/decal/remains/human(loc) + del(src) + return + else + return \ No newline at end of file diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm index ce645d6afe..8d8c0469c2 100644 --- a/code/game/objects/structures/grille.dm +++ b/code/game/objects/structures/grille.dm @@ -30,19 +30,13 @@ playsound(loc, 'sound/effects/grillehit.ogg', 80, 1) - var/damage_dealt + var/damage_dealt = 1 + var/attack_message = "kicks" if(istype(user,/mob/living/carbon/human)) var/mob/living/carbon/human/H = user if(H.species.can_shred(H)) + attack_message = "mangles" damage_dealt = 5 - user.visible_message("[user] mangles [src].", \ - "You mangle [src].", \ - "You hear twisting metal.") - - if(!damage_dealt) - user.visible_message("[user] kicks [src].", \ - "You kick [src].", \ - "You hear twisting metal.") if(shock(user, 70)) return @@ -52,8 +46,7 @@ else damage_dealt += 1 - health -= damage_dealt - healthcheck() + attack_generic(user,damage_dealt,attack_message) /obj/structure/grille/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) if(air_group || (height==0)) return 1 @@ -195,3 +188,8 @@ health -= 1 healthcheck() ..() + +/obj/structure/grille/attack_generic(var/mob/user, var/damage, var/attack_verb) + visible_message("[user] [attack_verb] the [src]!") + health -= damage + healthcheck() \ No newline at end of file diff --git a/code/game/objects/structures/inflatable.dm b/code/game/objects/structures/inflatable.dm index 06544dfca8..fad90eebdf 100644 --- a/code/game/objects/structures/inflatable.dm +++ b/code/game/objects/structures/inflatable.dm @@ -26,112 +26,103 @@ var/health = 50.0 - New(location) - ..() - update_nearby_tiles(need_rebuild=1) +/obj/structure/inflatable/New(location) + ..() + update_nearby_tiles(need_rebuild=1) - Del() - update_nearby_tiles() - ..() +/obj/structure/inflatable/Del() + update_nearby_tiles() + ..() - proc/update_nearby_tiles(need_rebuild) //Copypasta from airlock code - if(!air_master) - return 0 - air_master.mark_for_update(get_turf(src)) - return 1 - - - - CanPass(atom/movable/mover, turf/target, height=0, air_group=0) +/obj/structure/inflatable/proc/update_nearby_tiles(need_rebuild) //Copypasta from airlock code + if(!air_master) return 0 + air_master.mark_for_update(get_turf(src)) + return 1 - bullet_act(var/obj/item/projectile/Proj) - health -= Proj.damage - ..() - if(health <= 0) +/obj/structure/inflatable/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) + return 0 + +/obj/structure/inflatable/bullet_act(var/obj/item/projectile/Proj) + health -= Proj.damage + ..() + if(health <= 0) + deflate(1) + return + +/obj/structure/inflatable/ex_act(severity) + switch(severity) + if(1.0) + del(src) + return + if(2.0) deflate(1) - return - - - ex_act(severity) - switch(severity) - if(1.0) - del(src) - return - if(2.0) + return + if(3.0) + if(prob(50)) deflate(1) return - if(3.0) - if(prob(50)) - deflate(1) - return +/obj/structure/inflatable/blob_act() + deflate(1) - blob_act() - deflate(1) +/obj/structure/inflatable/meteorhit() + deflate(1) - - meteorhit() - //world << "glass at [x],[y],[z] Mhit" - deflate(1) - - - attack_hand(mob/user as mob) +/obj/structure/inflatable/attack_hand(mob/user as mob) add_fingerprint(user) return +/obj/structure/inflatable/attackby(obj/item/weapon/W as obj, mob/user as mob) + if(!istype(W)) return - proc/attack_generic(mob/user as mob, damage = 0) //used by attack_animal and attack_slime - health -= damage - if(health <= 0) - user.visible_message("[user] tears open [src]!") - deflate(1) - else //for nicer text~ - user.visible_message("[user] tears at [src]!") + if (can_puncture(W)) + visible_message("\red [user] pierces [src] with [W]!") + deflate(1) + if(W.damtype == BRUTE || W.damtype == BURN) + hit(W.force) + ..() + return - attackby(obj/item/weapon/W as obj, mob/user as mob) - if(!istype(W)) return +/obj/structure/inflatable/proc/hit(var/damage, var/sound_effect = 1) + health = max(0, health - damage) + if(sound_effect) + playsound(loc, 'sound/effects/Glasshit.ogg', 75, 1) + if(health <= 0) + deflate(1) - if (can_puncture(W)) - visible_message("\red [user] pierces [src] with [W]!") - deflate(1) - if(W.damtype == BRUTE || W.damtype == BURN) - hit(W.force) - ..() - return - - proc/hit(var/damage, var/sound_effect = 1) - health = max(0, health - damage) - if(sound_effect) - playsound(loc, 'sound/effects/Glasshit.ogg', 75, 1) - if(health <= 0) - deflate(1) - - - proc/deflate(var/violent=0) - playsound(loc, 'sound/machines/hiss.ogg', 75, 1) - if(violent) - visible_message("[src] rapidly deflates!") - var/obj/item/inflatable/torn/R = new /obj/item/inflatable/torn(loc) +/obj/structure/inflatable/proc/deflate(var/violent=0) + playsound(loc, 'sound/machines/hiss.ogg', 75, 1) + if(violent) + visible_message("[src] rapidly deflates!") + var/obj/item/inflatable/torn/R = new /obj/item/inflatable/torn(loc) + src.transfer_fingerprints_to(R) + del(src) + else + //user << "\blue You slowly deflate the inflatable wall." + visible_message("[src] slowly deflates.") + spawn(50) + var/obj/item/inflatable/R = new /obj/item/inflatable(loc) src.transfer_fingerprints_to(R) del(src) - else - //user << "\blue You slowly deflate the inflatable wall." - visible_message("[src] slowly deflates.") - spawn(50) - var/obj/item/inflatable/R = new /obj/item/inflatable(loc) - src.transfer_fingerprints_to(R) - del(src) - verb/hand_deflate() - set name = "Deflate" - set category = "Object" - set src in oview(1) +/obj/structure/inflatable/verb/hand_deflate() + set name = "Deflate" + set category = "Object" + set src in oview(1) - if(isobserver(usr)) //to stop ghosts from deflating - return + if(isobserver(usr)) //to stop ghosts from deflating + return - deflate() + deflate() + +/obj/structure/inflatable/attack_generic(var/mob/user, var/damage, var/attack_verb) + health -= damage + if(health <= 0) + user.visible_message("[user] [attack_verb] open the [src]!") + deflate(1) + else + user.visible_message("[user] [attack_verb] at [src]!") /obj/item/inflatable/door/ name = "inflatable door" @@ -159,94 +150,84 @@ var/state = 0 //closed, 1 == open var/isSwitchingStates = 0 - //Bumped(atom/user) - // ..() - // if(!state) - // return TryToSwitchState(user) - // return +/obj/structure/inflatable/door/attack_ai(mob/user as mob) //those aren't machinery, they're just big fucking slabs of a mineral + if(isAI(user)) //so the AI can't open it + return + else if(isrobot(user)) //but cyborgs can + if(get_dist(user,src) <= 1) //not remotely though + return TryToSwitchState(user) - attack_ai(mob/user as mob) //those aren't machinery, they're just big fucking slabs of a mineral - if(isAI(user)) //so the AI can't open it - return - else if(isrobot(user)) //but cyborgs can - if(get_dist(user,src) <= 1) //not remotely though - return TryToSwitchState(user) +/obj/structure/inflatable/door/attack_hand(mob/user as mob) + return TryToSwitchState(user) - attack_hand(mob/user as mob) - return TryToSwitchState(user) +/obj/structure/inflatable/door/CanPass(atom/movable/mover, turf/target, height=0, air_group=0) + if(air_group) + return state + if(istype(mover, /obj/effect/beam)) + return !opacity + return !density - CanPass(atom/movable/mover, turf/target, height=0, air_group=0) - if(air_group) - return state - if(istype(mover, /obj/effect/beam)) - return !opacity - return !density - - proc/TryToSwitchState(atom/user) - if(isSwitchingStates) return - if(ismob(user)) - var/mob/M = user - if(world.time - user.last_bumped <= 60) return //NOTE do we really need that? - if(M.client) - if(iscarbon(M)) - var/mob/living/carbon/C = M - if(!C.handcuffed) - SwitchState() - else +/obj/structure/inflatable/door/proc/TryToSwitchState(atom/user) + if(isSwitchingStates) return + if(ismob(user)) + var/mob/M = user + if(world.time - user.last_bumped <= 60) return //NOTE do we really need that? + if(M.client) + if(iscarbon(M)) + var/mob/living/carbon/C = M + if(!C.handcuffed) SwitchState() - else if(istype(user, /obj/mecha)) - SwitchState() + else + SwitchState() + else if(istype(user, /obj/mecha)) + SwitchState() - proc/SwitchState() - if(state) - Close() - else - Open() - update_nearby_tiles() - - proc/Open() - isSwitchingStates = 1 - //playsound(loc, 'sound/effects/stonedoor_openclose.ogg', 100, 1) - flick("door_opening",src) - sleep(10) - density = 0 - opacity = 0 - state = 1 - update_icon() - isSwitchingStates = 0 - - proc/Close() - isSwitchingStates = 1 - //playsound(loc, 'sound/effects/stonedoor_openclose.ogg', 100, 1) - flick("door_closing",src) - sleep(10) - density = 1 - opacity = 0 - state = 0 - update_icon() - isSwitchingStates = 0 +/obj/structure/inflatable/door/proc/SwitchState() + if(state) + Close() + else + Open() + update_nearby_tiles() +/obj/structure/inflatable/door/proc/Open() + isSwitchingStates = 1 + flick("door_opening",src) + sleep(10) + density = 0 + opacity = 0 + state = 1 update_icon() - if(state) - icon_state = "door_open" - else - icon_state = "door_closed" + isSwitchingStates = 0 - deflate(var/violent=0) - playsound(loc, 'sound/machines/hiss.ogg', 75, 1) - if(violent) - visible_message("[src] rapidly deflates!") - var/obj/item/inflatable/door/torn/R = new /obj/item/inflatable/door/torn(loc) +/obj/structure/inflatable/door/proc/Close() + isSwitchingStates = 1 + flick("door_closing",src) + sleep(10) + density = 1 + opacity = 0 + state = 0 + update_icon() + isSwitchingStates = 0 + +/obj/structure/inflatable/door/update_icon() + if(state) + icon_state = "door_open" + else + icon_state = "door_closed" + +/obj/structure/inflatable/door/deflate(var/violent=0) + playsound(loc, 'sound/machines/hiss.ogg', 75, 1) + if(violent) + visible_message("[src] rapidly deflates!") + var/obj/item/inflatable/door/torn/R = new /obj/item/inflatable/door/torn(loc) + src.transfer_fingerprints_to(R) + del(src) + else + visible_message("[src] slowly deflates.") + spawn(50) + var/obj/item/inflatable/door/R = new /obj/item/inflatable/door(loc) src.transfer_fingerprints_to(R) del(src) - else - //user << "\blue You slowly deflate the inflatable wall." - visible_message("[src] slowly deflates.") - spawn(50) - var/obj/item/inflatable/door/R = new /obj/item/inflatable/door(loc) - src.transfer_fingerprints_to(R) - del(src) - /obj/item/inflatable/torn name = "torn inflatable wall" diff --git a/code/game/objects/structures/mirror.dm b/code/game/objects/structures/mirror.dm index 83112a0021..b685c9ed83 100644 --- a/code/game/objects/structures/mirror.dm +++ b/code/game/objects/structures/mirror.dm @@ -8,7 +8,6 @@ anchored = 1 var/shattered = 0 - /obj/structure/mirror/attack_hand(mob/user as mob) if(shattered) return @@ -17,14 +16,10 @@ var/mob/living/carbon/human/H = user if(H.a_intent == "hurt") - if(shattered) - playsound(src.loc, 'sound/effects/hit_on_shattered_glass.ogg', 70, 1) - return if(prob(30) || H.species.can_shred(H)) - user.visible_message("[user] smashes [src]!") - shatter() + attack_generic(user,1) else - user.visible_message("[user] hits [src] and bounces off!") + attack_generic(user) return var/userloc = H.loc @@ -82,7 +77,6 @@ playsound(src, 'sound/effects/hit_on_shattered_glass.ogg', 70, 1) ..() - /obj/structure/mirror/attackby(obj/item/I as obj, mob/user as mob) if(shattered) playsound(src.loc, 'sound/effects/hit_on_shattered_glass.ogg', 70, 1) @@ -93,4 +87,16 @@ shatter() else visible_message("[user] hits [src] with [I]!") - playsound(src.loc, 'sound/effects/Glasshit.ogg', 70, 1) \ No newline at end of file + playsound(src.loc, 'sound/effects/Glasshit.ogg', 70, 1) + +/obj/structure/mirror/attack_generic(var/mob/user, var/damage) + + if(shattered) + playsound(src.loc, 'sound/effects/hit_on_shattered_glass.ogg', 70, 1) + return + + if(damage) + user.visible_message("[user] smashes [src]!") + shatter() + else + user.visible_message("[user] hits [src] and bounces off!") diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 4b39e9d3b6..19001a0ae8 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -150,7 +150,9 @@ "You hear a knocking sound.") return -/obj/structure/window/proc/attack_generic(mob/user as mob, damage = 0) //used by attack_animal and attack_slime +/obj/structure/window/attack_generic(var/mob/user, var/damage) + if(!damage) + return user.visible_message("[user] smashes into [src]!") take_damage(damage) diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm index e960b9720d..32caff5636 100644 --- a/code/game/turfs/simulated/walls.dm +++ b/code/game/turfs/simulated/walls.dm @@ -248,6 +248,23 @@ src.add_fingerprint(user) return +/turf/simulated/wall/attack_generic(var/mob/user, var/damage, var/wallbreaker) + + if(!damage || !wallbreaker) + user << "You push the wall but nothing happens." + return + + if(istype(src,/turf/simulated/wall/r_wall) && !rotting) + user << "This wall is far too strong for you to destroy." + + if(rotting || prob(40)) + user << "You smash through the wall!" + dismantle_wall(1) + else + user << "You smash against the wall." + take_damage(rand(25,75)) + return + /turf/simulated/wall/attackby(obj/item/weapon/W as obj, mob/user as mob) if (!(istype(user, /mob/living/carbon/human) || ticker) && ticker.mode.name != "monkey") diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm index b8030886c3..5a06c40b87 100644 --- a/code/modules/mob/living/carbon/human/human_attackhand.dm +++ b/code/modules/mob/living/carbon/human/human_attackhand.dm @@ -222,4 +222,19 @@ return /mob/living/carbon/human/proc/afterattack(atom/target as mob|obj|turf|area, mob/living/user as mob|obj, inrange, params) - return \ No newline at end of file + return + +/mob/living/carbon/human/attack_generic(var/mob/user, var/damage, var/attack_message) + + if(!damage) + return + + user.attack_log += text("\[[time_stamp()]\] attacked [src.name] ([src.ckey])") + src.attack_log += text("\[[time_stamp()]\] was attacked by [user.name] ([user.ckey])") + src.visible_message("[user] has [attack_message] [src]!") + + var/dam_zone = pick("head", "chest", "l_arm", "r_arm", "l_leg", "r_leg", "groin") + var/datum/organ/external/affecting = get_organ(ran_zone(dam_zone)) + var/armor_block = run_armor_check(affecting, "melee") + apply_damage(damage, BRUTE, affecting, armor_block) + updatehealth() \ No newline at end of file diff --git a/code/modules/mob/living/carbon/metroid/metroid.dm b/code/modules/mob/living/carbon/metroid/metroid.dm index dbd5faa707..3b6bd746ff 100644 --- a/code/modules/mob/living/carbon/metroid/metroid.dm +++ b/code/modules/mob/living/carbon/metroid/metroid.dm @@ -840,10 +840,6 @@ mob/living/carbon/slime/var/temperature_resistance = T0C+75 /mob/living/carbon/slime/has_eyes() return 0 - -/mob/living/carbon/slime/UnarmedAttack(var/atom/A) - return - //////////////////////////////Old shit from metroids/RoRos, and the old cores, would not take much work to re-add them//////////////////////// /* diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index 3e895c73c2..810227ddf7 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -179,3 +179,14 @@ return 0 // End BS12 momentum-transfer code. + +/mob/living/attack_generic(var/mob/user, var/damage, var/attack_message) + + if(!damage) + return + + adjustBruteLoss(damage) + user.attack_log += text("\[[time_stamp()]\] attacked [src.name] ([src.ckey])") + src.attack_log += text("\[[time_stamp()]\] was attacked by [user.name] ([user.ckey])") + src.visible_message("[user] has [attack_message] [src]!") + updatehealth() \ No newline at end of file diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 42259b5fd3..c7abbb3d5a 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -892,6 +892,10 @@ var/list/robot_verbs_default = list( user << "You remove \the [broken_device]." user.put_in_active_hand(broken_device) +//Robots take half damage from basic attacks. +/mob/living/silicon/robot/attack_generic(var/mob/user, var/damage, var/attack_message) + return ..(user,Floor(damage/2),attack_message) + /mob/living/silicon/robot/proc/allowed(mob/M) //check if it doesn't require any access at all if(check_access(null)) diff --git a/code/modules/mob/living/simple_animal/parrot.dm b/code/modules/mob/living/simple_animal/parrot.dm index 89e0094dae..2ef60f7393 100644 --- a/code/modules/mob/living/simple_animal/parrot.dm +++ b/code/modules/mob/living/simple_animal/parrot.dm @@ -737,3 +737,14 @@ if(!message || stat) return speech_buffer.Add(message) + +/mob/living/simple_animal/parrot/attack_generic(var/mob/user, var/damage, var/attack_message) + ..() + if(client) return + if(parrot_state == PARROT_PERCH) + parrot_sleep_dur = parrot_sleep_max //Reset it's sleep timer if it was perched + if(!damage) + return + parrot_interest = user + parrot_state = PARROT_SWOOP | PARROT_ATTACK //Attack other animals regardless + icon_state = "parrot_fly" \ No newline at end of file diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index 168f56e131..9ad0997f73 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -307,6 +307,16 @@ if(on != on_gs) on_gs = on +/obj/machinery/light/attack_generic(var/mob/user, var/damage) + if(!damage) + return + if(status == LIGHT_EMPTY||status == LIGHT_BROKEN) + user << "That object is useless to you." + return + if(!(status == LIGHT_OK||status == LIGHT_BURNED)) + return + visible_message("[user] smashes the light!") + broken() // attempt to set the light's on/off status // will not switch on if broken/burned/empty diff --git a/code/modules/vehicles/vehicle.dm b/code/modules/vehicles/vehicle.dm index 741393c656..a07ea901ef 100644 --- a/code/modules/vehicles/vehicle.dm +++ b/code/modules/vehicles/vehicle.dm @@ -346,4 +346,14 @@ // Stat update procs //------------------------------------------------------- /obj/vehicle/proc/update_stats() - return \ No newline at end of file + return + +/obj/vehicle/attack_generic(var/mob/user, var/damage, var/attack_message) + if(!damage) + return + visible_message("[user] [attack_message] the [src]!") + user.attack_log += text("\[[time_stamp()]\] attacked [src.name]") + src.health -= damage + if(prob(10)) + new /obj/effect/decal/cleanable/blood/oil(src.loc) + healthcheck() \ No newline at end of file From 82090d2de265703c14cf1be425b97ab90509add5 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Thu, 13 Nov 2014 21:01:55 +1030 Subject: [PATCH 12/16] Fixed some issues with previous commits, gave aliens and animals an attack proc, removed now-unused stungloves from attack_hand procs. --- code/_onclick/click.dm | 5 +- code/_onclick/other_mobs.dm | 35 ++++- code/game/turfs/simulated/walls.dm | 2 +- code/modules/mob/living/carbon/alien/alien.dm | 6 - .../mob/living/carbon/alien/alien_attacks.dm | 47 +----- .../carbon/alien/diona/diona_attacks.dm | 21 +-- .../mob/living/carbon/alien/larva/larva.dm | 2 - .../living/carbon/human/human_attackhand.dm | 138 ++++++++---------- .../mob/living/carbon/metroid/metroid.dm | 19 --- .../mob/living/carbon/monkey/monkey.dm | 26 ---- code/modules/mob/living/living_defines.dm | 10 +- .../mob/living/simple_animal/simple_animal.dm | 11 +- 12 files changed, 110 insertions(+), 212 deletions(-) diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index bf5d635208..a50bdce685 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -178,11 +178,10 @@ return 0 if(stat) - return - - if(!proximity_flag) return 0 + return 1 + /* Ranged unarmed attack: diff --git a/code/_onclick/other_mobs.dm b/code/_onclick/other_mobs.dm index 5f4d9fc8df..1b2f9c23b1 100644 --- a/code/_onclick/other_mobs.dm +++ b/code/_onclick/other_mobs.dm @@ -1,6 +1,7 @@ // Generic damage proc (slimes and monkeys). /atom/proc/attack_generic(mob/user as mob) return + /* Humans: Adds an exception for gloves, to allow special glove types like the ninja ones. @@ -56,16 +57,12 @@ */ -//TODO: Disease spreading and unarmed damage against mobs. /mob/living/carbon/monkey/UnarmedAttack(var/atom/A, var/proximity) if(!..()) return - if(a_intent == "harm") - A.attack_generic(src,rand(1,3),"bites") - else - A.attack_hand(src) + A.attack_hand(src) /* Monkey RestrainedClickOn() was apparently the @@ -96,12 +93,18 @@ /* Aliens - Defaults to same as monkey in most places */ /mob/living/carbon/alien/RestrainedClickOn(var/atom/A) return +/mob/living/carbon/alien/UnarmedAttack(var/atom/A, var/proximity) + + if(!..()) + return 0 + + A.attack_generic(src,rand(5,6),"bitten") + /* Slimes Nothing happening here @@ -120,7 +123,7 @@ return // Basic attack. - A.attack_generic(src, (is_adult ? rand(20,40) : rand(5,25)), "glomps") + A.attack_generic(src, (is_adult ? rand(20,40) : rand(5,25)), "glomped") // Handle mob shocks. var/mob/living/M = A @@ -162,3 +165,21 @@ */ /mob/new_player/ClickOn() return + +/* + Animals +*/ +/mob/living/simple_animal/UnarmedAttack(var/atom/A, var/proximity) + + if(!..()) + return + + if(melee_damage_upper == 0 && istype(A,/mob/living)) + emote("[friendly] [src]") + return + + if(loc && attack_sound) + playsound(loc, attack_sound, 50, 1, 1) + + var/damage = rand(melee_damage_lower, melee_damage_upper) + A.attack_generic(src,damage,attacktext,wall_smash) \ No newline at end of file diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm index 32caff5636..2827059dda 100644 --- a/code/game/turfs/simulated/walls.dm +++ b/code/game/turfs/simulated/walls.dm @@ -248,7 +248,7 @@ src.add_fingerprint(user) return -/turf/simulated/wall/attack_generic(var/mob/user, var/damage, var/wallbreaker) +/turf/simulated/wall/attack_generic(var/mob/user, var/damage, var/attack_message, var/wallbreaker) if(!damage || !wallbreaker) user << "You push the wall but nothing happens." diff --git a/code/modules/mob/living/carbon/alien/alien.dm b/code/modules/mob/living/carbon/alien/alien.dm index 5d48ec1f3c..1e1748e1cc 100644 --- a/code/modules/mob/living/carbon/alien/alien.dm +++ b/code/modules/mob/living/carbon/alien/alien.dm @@ -5,12 +5,6 @@ icon = 'icons/mob/alien.dmi' icon_state = "alien" pass_flags = PASSTABLE - melee_damage_lower = 1 - melee_damage_upper = 3 - attacktext = "bites" - attack_sound = null - friendly = "nuzzles" - wall_smash = 0 health = 100 maxHealth = 100 diff --git a/code/modules/mob/living/carbon/alien/alien_attacks.dm b/code/modules/mob/living/carbon/alien/alien_attacks.dm index b67299c0d4..4957a2d95f 100644 --- a/code/modules/mob/living/carbon/alien/alien_attacks.dm +++ b/code/modules/mob/living/carbon/alien/alien_attacks.dm @@ -14,57 +14,14 @@ updatehealth() return -/mob/living/carbon/alien/attack_hand(mob/living/carbon/human/M as mob) - if (!ticker) - M << "You cannot attack people before the game has started." - return - - if (istype(loc, /turf) && istype(loc.loc, /area/start)) - M << "No attacking people at spawn, you jackass." - return +/mob/living/carbon/alien/attack_hand(mob/living/carbon/M as mob) ..() - if(M.gloves && istype(M.gloves,/obj/item/clothing/gloves)) - var/obj/item/clothing/gloves/G = M.gloves - if(G.cell) - if(M.a_intent == "hurt")//Stungloves. Any contact will stun the alien. - if(G.cell.charge >= 2500) - G.cell.use(2500) - - Weaken(5) - if (stuttering < 5) - stuttering = 5 - Stun(5) - - for(var/mob/O in viewers(src, null)) - if ((O.client && !( O.blinded ))) - O.show_message("\red [src] has been touched with the stun gloves by [M]!", 1, "\red You hear someone fall.", 2) - return - else - M << "\red Not enough charge! " - return - switch(M.a_intent) if ("help") - if (health > 0) - help_shake_act(M) - else - if (M.health >= -75.0) - if ((M.head && M.head.flags & 4) || (M.wear_mask && !( M.wear_mask.flags & 32 )) ) - M << "\blue Remove that mask!" - return - var/obj/effect/equip_e/human/O = new /obj/effect/equip_e/human( ) - O.source = M - O.target = src - O.s_loc = M.loc - O.t_loc = loc - O.place = "CPR" - requests += O - spawn( 0 ) - O.process() - return + help_shake_act(M) if ("grab") if (M == src) diff --git a/code/modules/mob/living/carbon/alien/diona/diona_attacks.dm b/code/modules/mob/living/carbon/alien/diona/diona_attacks.dm index 108333bf86..82f7a78902 100644 --- a/code/modules/mob/living/carbon/alien/diona/diona_attacks.dm +++ b/code/modules/mob/living/carbon/alien/diona/diona_attacks.dm @@ -1,14 +1,15 @@ /mob/living/carbon/alien/diona/attack_hand(mob/living/carbon/human/M as mob) - //Let people pick the little buggers up. - if(M.a_intent == "help") - if(M.species && M.species.name == "Diona") - M << "You feel your being twine with that of [src] as it merges with your biomass." - src << "You feel your being twine with that of [M] as you merge with its biomass." - src.verbs += /mob/living/carbon/alien/diona/proc/split - src.verbs -= /mob/living/carbon/alien/diona/proc/merge - src.loc = M - else - get_scooped(M) + if(istype(M)) + //Let people pick the little buggers up. + if(M.a_intent == "help") + if(M.species && M.species.name == "Diona") + M << "You feel your being twine with that of [src] as it merges with your biomass." + src << "You feel your being twine with that of [M] as you merge with its biomass." + src.verbs += /mob/living/carbon/alien/diona/proc/split + src.verbs -= /mob/living/carbon/alien/diona/proc/merge + src.loc = M + else + get_scooped(M) ..() \ No newline at end of file diff --git a/code/modules/mob/living/carbon/alien/larva/larva.dm b/code/modules/mob/living/carbon/alien/larva/larva.dm index 4e71095ca0..8dd64654b7 100644 --- a/code/modules/mob/living/carbon/alien/larva/larva.dm +++ b/code/modules/mob/living/carbon/alien/larva/larva.dm @@ -5,8 +5,6 @@ speak_emote = list("hisses") icon_state = "larva" language = "Hivemind" - melee_damage_lower = 3 - melee_damage_upper = 6 amount_grown = 0 max_grown = 200 diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm index 5a06c40b87..3042e7ad9f 100644 --- a/code/modules/mob/living/carbon/human/human_attackhand.dm +++ b/code/modules/mob/living/carbon/human/human_attackhand.dm @@ -1,93 +1,72 @@ -/mob/living/carbon/human/attack_hand(mob/living/carbon/human/M as mob) - if (istype(loc, /turf) && istype(loc.loc, /area/start)) - M << "No attacking people at spawn, you jackass." - return +/mob/living/carbon/human/attack_hand(mob/living/carbon/M as mob) - var/datum/organ/external/temp = M:organs_by_name["r_hand"] - if (M.hand) - temp = M:organs_by_name["l_hand"] - if(temp && !temp.is_usable()) - M << "\red You can't use your [temp.display_name]." - return + var/mob/living/carbon/human/H = M + if(istype(H)) + var/datum/organ/external/temp = H.organs_by_name["r_hand"] + if(H.hand) + temp = H.organs_by_name["l_hand"] + if(temp && !temp.is_usable()) + H << "\red You can't use your [temp.display_name]." + return ..() - if((M != src) && check_shields(0, M.name)) - visible_message("\red [M] attempted to touch [src]!") - return 0 + // Should this all be in Touch()? + if(istype(H)) + if((H != src) && check_shields(0, H.name)) + visible_message("\red [H] attempted to touch [src]!") + return 0 - - if(M.gloves && istype(M.gloves,/obj/item/clothing/gloves)) - var/obj/item/clothing/gloves/G = M.gloves - if(G.cell) - if(M.a_intent == "hurt")//Stungloves. Any contact will stun the alien. - if(G.cell.charge >= 2500) - G.cell.use(2500) - visible_message("\red [src] has been touched with the stun gloves by [M]!") - M.attack_log += text("\[[time_stamp()]\] Stungloved [src.name] ([src.ckey])") - src.attack_log += text("\[[time_stamp()]\] Has been stungloved by [M.name] ([M.ckey])") - - msg_admin_attack("[M.name] ([M.ckey]) stungloved [src.name] ([src.ckey]) (JMP)") - - var/armorblock = run_armor_check(M.zone_sel.selecting, "energy") - apply_effects(5,5,0,0,5,0,0,armorblock) - return 1 - else - M << "\red Not enough charge! " - visible_message("\red [src] has been touched with the stun gloves by [M]!") - return - - if(istype(M.gloves , /obj/item/clothing/gloves/boxing/hologlove)) + if(istype(H.gloves, /obj/item/clothing/gloves/boxing/hologlove)) var/damage = rand(0, 9) if(!damage) playsound(loc, 'sound/weapons/punchmiss.ogg', 25, 1, -1) - visible_message("\red [M] has attempted to punch [src]!") + visible_message("\red [H] has attempted to punch [src]!") return 0 - var/datum/organ/external/affecting = get_organ(ran_zone(M.zone_sel.selecting)) + var/datum/organ/external/affecting = get_organ(ran_zone(H.zone_sel.selecting)) var/armor_block = run_armor_check(affecting, "melee") - if(HULK in M.mutations) damage += 5 + if(HULK in H.mutations) + damage += 5 playsound(loc, "punch", 25, 1, -1) - visible_message("\red [M] has punched [src]!") + visible_message("\red [H] has punched [src]!") apply_damage(damage, HALLOSS, affecting, armor_block) if(damage >= 9) - visible_message("\red [M] has weakened [src]!") + visible_message("\red [H] has weakened [src]!") apply_effect(4, WEAKEN, armor_block) return - else - if(istype(M,/mob/living/carbon)) -// log_debug("No gloves, [M] is truing to infect [src]") - M.spread_disease_to(src, "Contact") + if(istype(M,/mob/living/carbon)) + M.spread_disease_to(src, "Contact") switch(M.a_intent) if("help") - if(health >= config.health_threshold_crit) + + if(istype(H) && health < config.health_threshold_crit) + + if((H.head && (H.head.flags & HEADCOVERSMOUTH)) || (H.wear_mask && (H.wear_mask.flags & MASKCOVERSMOUTH))) + H << "\blue Remove your mask!" + return 0 + if((head && (head.flags & HEADCOVERSMOUTH)) || (wear_mask && (wear_mask.flags & MASKCOVERSMOUTH))) + H << "\blue Remove [src]'s mask!" + return 0 + + var/obj/effect/equip_e/human/O = new /obj/effect/equip_e/human() + O.source = M + O.target = src + O.s_loc = M.loc + O.t_loc = loc + O.place = "CPR" + requests += O + spawn(0) + O.process() + else help_shake_act(M) - return 1 -// if(M.health < -75) return 0 - - if((M.head && (M.head.flags & HEADCOVERSMOUTH)) || (M.wear_mask && (M.wear_mask.flags & MASKCOVERSMOUTH))) - M << "\blue Remove your mask!" - return 0 - if((head && (head.flags & HEADCOVERSMOUTH)) || (wear_mask && (wear_mask.flags & MASKCOVERSMOUTH))) - M << "\blue Remove his mask!" - return 0 - - var/obj/effect/equip_e/human/O = new /obj/effect/equip_e/human() - O.source = M - O.target = src - O.s_loc = M.loc - O.t_loc = loc - O.place = "CPR" - requests += O - spawn(0) - O.process() return 1 if("grab") @@ -111,42 +90,43 @@ if("hurt") + if(!istype(H)) + attack_generic(H,rand(1,3),"punched") + return + // See if they can attack, and which attacks to use. - var/datum/unarmed_attack/attack = M.species.unarmed - if(!attack.is_usable(M)) - attack = M.species.secondary_unarmed - if(!attack.is_usable(M)) + var/datum/unarmed_attack/attack = H.species.unarmed + if(!attack.is_usable(H)) + attack = H.species.secondary_unarmed + if(!attack.is_usable(H)) return 0 - M.attack_log += text("\[[time_stamp()]\] [pick(attack.attack_verb)]ed [src.name] ([src.ckey])") - src.attack_log += text("\[[time_stamp()]\] Has been [pick(attack.attack_verb)]ed by [M.name] ([M.ckey])") - msg_admin_attack("[key_name(M)] [pick(attack.attack_verb)]ed [key_name(src)]") + H.attack_log += text("\[[time_stamp()]\] [pick(attack.attack_verb)]ed [src.name] ([src.ckey])") + src.attack_log += text("\[[time_stamp()]\] Has been [pick(attack.attack_verb)]ed by [H.name] ([M.ckey])") + msg_admin_attack("[key_name(H)] [pick(attack.attack_verb)]ed [key_name(src)]") var/damage = rand(0, 5)//BS12 EDIT if(!damage) playsound(loc, attack.miss_sound, 25, 1, -1) - visible_message("\red [M] tried to [pick(attack.attack_verb)] [src]!") + visible_message("\red [H] tried to [pick(attack.attack_verb)] [src]!") return 0 - - var/datum/organ/external/affecting = get_organ(ran_zone(M.zone_sel.selecting)) + var/datum/organ/external/affecting = get_organ(ran_zone(H.zone_sel.selecting)) var/armor_block = run_armor_check(affecting, "melee") - if(HULK in M.mutations) damage += 5 - + if(HULK in H.mutations) damage += 5 playsound(loc, attack.attack_sound, 25, 1, -1) - visible_message("\red [M] [pick(attack.attack_verb)]ed [src]!") + visible_message("\red [H] [pick(attack.attack_verb)]ed [src]!") //Rearranged, so claws don't increase weaken chance. if(damage >= 5 && prob(50)) - visible_message("\red [M] has weakened [src]!") + visible_message("\red [H] has weakened [src]!") apply_effect(3, WEAKEN, armor_block) damage += attack.damage apply_damage(damage, BRUTE, affecting, armor_block, sharp=attack.sharp, edge=attack.edge) - if("disarm") M.attack_log += text("\[[time_stamp()]\] Disarmed [src.name] ([src.ckey])") src.attack_log += text("\[[time_stamp()]\] Has been disarmed by [M.name] ([M.ckey])") diff --git a/code/modules/mob/living/carbon/metroid/metroid.dm b/code/modules/mob/living/carbon/metroid/metroid.dm index 3b6bd746ff..757f857cca 100644 --- a/code/modules/mob/living/carbon/metroid/metroid.dm +++ b/code/modules/mob/living/carbon/metroid/metroid.dm @@ -254,13 +254,6 @@ return /mob/living/carbon/slime/attack_hand(mob/living/carbon/human/M as mob) - if (!ticker) - M << "You cannot attack people before the game has started." - return - - if (istype(loc, /turf) && istype(loc.loc, /area/start)) - M << "No attacking people at spawn, you jackass." - return ..() @@ -317,18 +310,6 @@ return - if(M.gloves && istype(M.gloves,/obj/item/clothing/gloves)) - var/obj/item/clothing/gloves/G = M.gloves - if(G.cell) - if(M.a_intent == "hurt")//Stungloves. Any contact will stun the alien. - if(G.cell.charge >= 2500) - G.cell.use(2500) - visible_message("[src] has been touched with the stun gloves by [M]!") - return - else - M << "\red Not enough charge! " - return - switch(M.a_intent) if ("help") diff --git a/code/modules/mob/living/carbon/monkey/monkey.dm b/code/modules/mob/living/carbon/monkey/monkey.dm index 4d5f88095e..9e337e5f80 100644 --- a/code/modules/mob/living/carbon/monkey/monkey.dm +++ b/code/modules/mob/living/carbon/monkey/monkey.dm @@ -144,32 +144,6 @@ return /mob/living/carbon/monkey/attack_hand(mob/living/carbon/human/M as mob) - if (!ticker) - M << "You cannot attack people before the game has started." - return - - if (istype(loc, /turf) && istype(loc.loc, /area/start)) - M << "No attacking people at spawn, you jackass." - return - - if(M.gloves && istype(M.gloves,/obj/item/clothing/gloves)) - var/obj/item/clothing/gloves/G = M.gloves - if(G.cell) - if(M.a_intent == "hurt")//Stungloves. Any contact will stun the alien. - if(G.cell.charge >= 2500) - G.cell.use(2500) - Weaken(5) - if (stuttering < 5) - stuttering = 5 - Stun(5) - - for(var/mob/O in viewers(src, null)) - if (O.client) - O.show_message("\red [src] has been touched with the stun gloves by [M]!", 1, "\red You hear someone fall", 2) - return - else - M << "\red Not enough charge! " - return if (M.a_intent == "help") help_shake_act(M) diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm index 1ac5faa11f..3c1c8a935c 100644 --- a/code/modules/mob/living/living_defines.dm +++ b/code/modules/mob/living/living_defines.dm @@ -37,12 +37,4 @@ var/tod = null // Time of death var/update_slimes = 1 - var/silent = null //Can't talk. Value goes down every life proc. - - // Putting these here for attack_animal(). - var/melee_damage_lower = 0 - var/melee_damage_upper = 0 - var/attacktext = "attacks" - var/attack_sound = null - var/friendly = "nuzzles" - var/wall_smash = 0 \ No newline at end of file + var/silent = null //Can't talk. Value goes down every life proc. \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index e43b57fcff..515d04a885 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -47,11 +47,12 @@ var/speed = 0 //LETS SEE IF I CAN SET SPEEDS FOR SIMPLE MOBS WITHOUT DESTROYING EVERYTHING. Higher speed is slower, negative speed is faster //LETTING SIMPLE ANIMALS ATTACK? WHAT COULD GO WRONG. Defaults to zero so Ian can still be cuddly - melee_damage_lower = 0 - melee_damage_upper = 0 - attacktext = "attacks" - attack_sound = null - friendly = "nuzzles" //If the mob does no damage with it's attack + var/melee_damage_lower = 0 + var/melee_damage_upper = 0 + var/attacktext = "attacks" + var/attack_sound = null + var/friendly = "nuzzles" + var/wall_smash = 0 /mob/living/simple_animal/New() ..() From 31b6cc19ad82b9d28b59bc8c8b2ce9410dad9725 Mon Sep 17 00:00:00 2001 From: Zuhayr Date: Thu, 13 Nov 2014 21:41:02 +1030 Subject: [PATCH 13/16] Fixed up weird sound-playing by simple animals, changed all simple animal attack strings to past tense so they gel with other harm intent actions. Readded simple_animal eating food, tested everything. --- .../Cael_Aislinn/Jungle/jungle_animals.dm | 4 ++-- code/_onclick/other_mobs.dm | 10 ++++------ code/game/gamemodes/blob/blobs/factory.dm | 2 +- code/game/machinery/turrets.dm | 5 +++-- code/game/mecha/mecha.dm | 4 ++-- code/game/objects/structures.dm | 5 +++-- .../structures/crates_lockers/closets.dm | 3 ++- code/game/objects/structures/girders.dm | 5 +++-- code/game/objects/structures/grille.dm | 3 ++- code/game/objects/structures/inflatable.dm | 3 ++- code/game/objects/structures/mirror.dm | 3 ++- code/game/objects/structures/window.dm | 1 + code/game/turfs/simulated/walls.dm | 4 ++-- .../mob/living/carbon/human/human_attackhand.dm | 3 ++- code/modules/mob/living/carbon/metroid/life.dm | 8 ++++---- .../mob/living/carbon/metroid/metroid.dm | 2 +- code/modules/mob/living/living_defense.dm | 3 ++- .../mob/living/simple_animal/borer/borer.dm | 2 +- .../mob/living/simple_animal/constructs.dm | 8 ++++---- .../mob/living/simple_animal/friendly/corgi.dm | 9 ++++----- .../simple_animal/friendly/farm_animals.dm | 8 ++++---- .../mob/living/simple_animal/friendly/lizard.dm | 3 +-- .../living/simple_animal/friendly/spiderbot.dm | 3 +-- .../mob/living/simple_animal/hostile/alien.dm | 2 +- .../mob/living/simple_animal/hostile/carp.dm | 2 +- .../living/simple_animal/hostile/creature.dm | 2 +- .../living/simple_animal/hostile/faithless.dm | 2 +- .../mob/living/simple_animal/hostile/hivebot.dm | 2 +- .../mob/living/simple_animal/hostile/mimic.dm | 4 ++-- .../mob/living/simple_animal/hostile/pirate.dm | 2 +- .../simple_animal/hostile/retaliate/clown.dm | 2 +- .../mob/living/simple_animal/hostile/russian.dm | 2 +- .../living/simple_animal/hostile/syndicate.dm | 6 +++--- .../mob/living/simple_animal/hostile/tree.dm | 2 +- code/modules/mob/living/simple_animal/parrot.dm | 17 ++++++++++++----- code/modules/mob/living/simple_animal/shade.dm | 2 +- .../mob/living/simple_animal/simple_animal.dm | 2 +- code/modules/mob/living/simple_animal/worm.dm | 2 +- code/modules/power/lighting.dm | 1 + .../reagents/reagent_containers/food/snacks.dm | 16 ++++++++++++---- .../genetics/prehistoric_animals.dm | 6 +++--- code/modules/vehicles/vehicle.dm | 3 ++- 42 files changed, 100 insertions(+), 78 deletions(-) diff --git a/code/WorkInProgress/Cael_Aislinn/Jungle/jungle_animals.dm b/code/WorkInProgress/Cael_Aislinn/Jungle/jungle_animals.dm index a2e1f1c4b9..4c95b5be1c 100644 --- a/code/WorkInProgress/Cael_Aislinn/Jungle/jungle_animals.dm +++ b/code/WorkInProgress/Cael_Aislinn/Jungle/jungle_animals.dm @@ -68,7 +68,7 @@ harm_intent_damage = 8 melee_damage_lower = 15 melee_damage_upper = 15 - attacktext = "slashes" + attacktext = "slashed" attack_sound = 'sound/weapons/bite.ogg' layer = 3.1 //so they can stay hidde under the /obj/structure/bush @@ -126,7 +126,7 @@ harm_intent_damage = 2 melee_damage_lower = 3 melee_damage_upper = 10 - attacktext = "bites" + attacktext = "bitten" attack_sound = 'sound/weapons/bite.ogg' layer = 3.1 //so they can stay hidde under the /obj/structure/bush diff --git a/code/_onclick/other_mobs.dm b/code/_onclick/other_mobs.dm index 1b2f9c23b1..4f4224b04b 100644 --- a/code/_onclick/other_mobs.dm +++ b/code/_onclick/other_mobs.dm @@ -1,6 +1,6 @@ // Generic damage proc (slimes and monkeys). /atom/proc/attack_generic(mob/user as mob) - return + return 0 /* Humans: @@ -175,11 +175,9 @@ return if(melee_damage_upper == 0 && istype(A,/mob/living)) - emote("[friendly] [src]") + custom_emote(1,"[friendly] [src]!") return - if(loc && attack_sound) - playsound(loc, attack_sound, 50, 1, 1) - var/damage = rand(melee_damage_lower, melee_damage_upper) - A.attack_generic(src,damage,attacktext,wall_smash) \ No newline at end of file + if(A.attack_generic(src,damage,attacktext,wall_smash) && loc && attack_sound) + playsound(loc, attack_sound, 50, 1, 1) \ No newline at end of file diff --git a/code/game/gamemodes/blob/blobs/factory.dm b/code/game/gamemodes/blob/blobs/factory.dm index b388396639..bb8de8184e 100644 --- a/code/game/gamemodes/blob/blobs/factory.dm +++ b/code/game/gamemodes/blob/blobs/factory.dm @@ -34,7 +34,7 @@ maxHealth = 20 melee_damage_lower = 4 melee_damage_upper = 8 - attacktext = "hits" + attacktext = "hit" attack_sound = 'sound/weapons/genhit1.ogg' var/obj/effect/blob/factory/factory = null faction = "blob" diff --git a/code/game/machinery/turrets.dm b/code/game/machinery/turrets.dm index 48f2dcab17..567afc0d6d 100644 --- a/code/game/machinery/turrets.dm +++ b/code/game/machinery/turrets.dm @@ -340,15 +340,16 @@ /obj/machinery/turret/attack_generic(var/mob/user, var/damage, var/attack_message) if(!damage) - return + return 0 if(stat & BROKEN) user << "That object is useless to you." - return + return 0 visible_message("[user] [attack_message] the [src]!") user.attack_log += text("\[[time_stamp()]\] attacked [src.name]") src.health -= damage if (src.health <= 0) src.die() + return 1 /obj/structure/turret/gun_turret name = "Gun Turret" diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index e45fa114e8..558d1d6076 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -1706,7 +1706,7 @@ /obj/mecha/attack_generic(var/mob/user, var/damage, var/attack_message) if(!damage) - return + return 0 src.log_message("Attack by an animal. Attacker - [user].",1) @@ -1721,7 +1721,7 @@ src.occupant_message("\blue The [user]'s attack is stopped by the armor.") visible_message("\blue The [user] rebounds off [src.name]'s armor!") user.attack_log += text("\[[time_stamp()]\] attacked [src.name]") - return + return 1 ////////////////////////////////////////// diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm index b6e9406b51..a4c9a2bc85 100644 --- a/code/game/objects/structures.dm +++ b/code/game/objects/structures.dm @@ -170,6 +170,7 @@ /obj/structure/attack_generic(var/mob/user, var/damage, var/attack_verb, var/wallbreaker) if(!breakable || !damage || !wallbreaker) - return + return 0 visible_message("[user] [attack_verb] the [src] apart!") - destroy() \ No newline at end of file + spawn(1) destroy() + return 1 \ No newline at end of file diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index 33ad8abc15..44c2c3b900 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -304,4 +304,5 @@ return visible_message("[user] [attack_message] the [src]!") dump_contents() - del(src) \ No newline at end of file + spawn(1) del(src) + return 1 \ No newline at end of file diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm index d6628f0023..e3ae4353dd 100644 --- a/code/game/objects/structures/girders.dm +++ b/code/game/objects/structures/girders.dm @@ -8,9 +8,10 @@ /obj/structure/girder/attack_generic(var/mob/user, var/damage, var/attack_message = "smashes apart", var/wallbreaker) if(!damage || !wallbreaker) - return + return 0 visible_message("[user] [attack_message] the [src]!") - dismantle() + spawn(1) dismantle() + return 1 /obj/structure/girder/bullet_act(var/obj/item/projectile/Proj) if(istype(Proj, /obj/item/projectile/beam)) diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm index 8d8c0469c2..716fca4503 100644 --- a/code/game/objects/structures/grille.dm +++ b/code/game/objects/structures/grille.dm @@ -192,4 +192,5 @@ /obj/structure/grille/attack_generic(var/mob/user, var/damage, var/attack_verb) visible_message("[user] [attack_verb] the [src]!") health -= damage - healthcheck() \ No newline at end of file + spawn(1) healthcheck() + return 1 \ No newline at end of file diff --git a/code/game/objects/structures/inflatable.dm b/code/game/objects/structures/inflatable.dm index fad90eebdf..7d4700abb9 100644 --- a/code/game/objects/structures/inflatable.dm +++ b/code/game/objects/structures/inflatable.dm @@ -120,9 +120,10 @@ health -= damage if(health <= 0) user.visible_message("[user] [attack_verb] open the [src]!") - deflate(1) + spawn(1) deflate(1) else user.visible_message("[user] [attack_verb] at [src]!") + return 1 /obj/item/inflatable/door/ name = "inflatable door" diff --git a/code/game/objects/structures/mirror.dm b/code/game/objects/structures/mirror.dm index b685c9ed83..b82a3495df 100644 --- a/code/game/objects/structures/mirror.dm +++ b/code/game/objects/structures/mirror.dm @@ -93,10 +93,11 @@ if(shattered) playsound(src.loc, 'sound/effects/hit_on_shattered_glass.ogg', 70, 1) - return + return 0 if(damage) user.visible_message("[user] smashes [src]!") shatter() else user.visible_message("[user] hits [src] and bounces off!") + return 1 \ No newline at end of file diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 19001a0ae8..4df313fe91 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -155,6 +155,7 @@ return user.visible_message("[user] smashes into [src]!") take_damage(damage) + return 1 /obj/structure/window/attackby(obj/item/W as obj, mob/user as mob) if(!istype(W)) return//I really wish I did not need this diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm index 2827059dda..b1a0966dad 100644 --- a/code/game/turfs/simulated/walls.dm +++ b/code/game/turfs/simulated/walls.dm @@ -259,11 +259,11 @@ if(rotting || prob(40)) user << "You smash through the wall!" - dismantle_wall(1) + spawn(1) dismantle_wall(1) else user << "You smash against the wall." take_damage(rand(25,75)) - return + return 1 /turf/simulated/wall/attackby(obj/item/weapon/W as obj, mob/user as mob) diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm index 3042e7ad9f..f7dd2cefac 100644 --- a/code/modules/mob/living/carbon/human/human_attackhand.dm +++ b/code/modules/mob/living/carbon/human/human_attackhand.dm @@ -217,4 +217,5 @@ var/datum/organ/external/affecting = get_organ(ran_zone(dam_zone)) var/armor_block = run_armor_check(affecting, "melee") apply_damage(damage, BRUTE, affecting, armor_block) - updatehealth() \ No newline at end of file + updatehealth() + return 1 \ No newline at end of file diff --git a/code/modules/mob/living/carbon/metroid/life.dm b/code/modules/mob/living/carbon/metroid/life.dm index 9610b8a39b..0552892025 100644 --- a/code/modules/mob/living/carbon/metroid/life.dm +++ b/code/modules/mob/living/carbon/metroid/life.dm @@ -82,8 +82,8 @@ spawn(45) Atkcool = 0 - //if(Target.Adjacent(src)) - //Target.attack_slime(src) + if(Target.Adjacent(src)) + UnarmedAttack(Target) return if(!Target.lying && prob(80)) @@ -93,8 +93,8 @@ spawn(45) Atkcool = 0 - //if(Target.Adjacent(src)) - //Target.attack_slime(src) + if(Target.Adjacent(src)) + UnarmedAttack(Target) else if(!Atkcool && Target.Adjacent(src)) diff --git a/code/modules/mob/living/carbon/metroid/metroid.dm b/code/modules/mob/living/carbon/metroid/metroid.dm index 757f857cca..b5f9cf970f 100644 --- a/code/modules/mob/living/carbon/metroid/metroid.dm +++ b/code/modules/mob/living/carbon/metroid/metroid.dm @@ -119,7 +119,7 @@ if(istype(AM, /obj/structure/window) || istype(AM, /obj/structure/grille)) if(nutrition <= get_hunger_nutrition() && !Atkcool) if (is_adult || prob(5)) - //AM.attack_slime(src) + UnarmedAttack(AM) spawn() Atkcool = 1 sleep(45) diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm index 810227ddf7..4ac03cdf5f 100644 --- a/code/modules/mob/living/living_defense.dm +++ b/code/modules/mob/living/living_defense.dm @@ -189,4 +189,5 @@ user.attack_log += text("\[[time_stamp()]\] attacked [src.name] ([src.ckey])") src.attack_log += text("\[[time_stamp()]\] was attacked by [user.name] ([user.ckey])") src.visible_message("[user] has [attack_message] [src]!") - updatehealth() \ No newline at end of file + spawn(1) updatehealth() + return 1 diff --git a/code/modules/mob/living/simple_animal/borer/borer.dm b/code/modules/mob/living/simple_animal/borer/borer.dm index 36d57d1225..593c41b742 100644 --- a/code/modules/mob/living/simple_animal/borer/borer.dm +++ b/code/modules/mob/living/simple_animal/borer/borer.dm @@ -16,7 +16,7 @@ a_intent = "harm" stop_automated_movement = 1 status_flags = CANPUSH - attacktext = "nips" + attacktext = "nipped" friendly = "prods" wander = 0 pass_flags = PASSTABLE diff --git a/code/modules/mob/living/simple_animal/constructs.dm b/code/modules/mob/living/simple_animal/constructs.dm index 307cdfa839..ffcc48bd40 100644 --- a/code/modules/mob/living/simple_animal/constructs.dm +++ b/code/modules/mob/living/simple_animal/constructs.dm @@ -120,7 +120,7 @@ harm_intent_damage = 0 melee_damage_lower = 30 melee_damage_upper = 30 - attacktext = "smashes their armoured gauntlet into" + attacktext = "smashed their armoured gauntlet into" speed = 3 wall_smash = 1 attack_sound = 'sound/weapons/punch3.ogg' @@ -195,7 +195,7 @@ health = 75 melee_damage_lower = 25 melee_damage_upper = 25 - attacktext = "slashes" + attacktext = "slashed" speed = -1 see_in_dark = 7 attack_sound = 'sound/weapons/bladeslice.ogg' @@ -220,7 +220,7 @@ harm_intent_damage = 5 melee_damage_lower = 5 melee_damage_upper = 5 - attacktext = "rams" + attacktext = "rammed" speed = 0 wall_smash = 1 attack_sound = 'sound/weapons/punch2.ogg' @@ -247,7 +247,7 @@ harm_intent_damage = 0 melee_damage_lower = 50 melee_damage_upper = 50 - attacktext = "brutally crushes" + attacktext = "brutally crushed" speed = 5 wall_smash = 1 attack_sound = 'sound/weapons/punch4.ogg' diff --git a/code/modules/mob/living/simple_animal/friendly/corgi.dm b/code/modules/mob/living/simple_animal/friendly/corgi.dm index b35db8eeca..a7b7cbc622 100644 --- a/code/modules/mob/living/simple_animal/friendly/corgi.dm +++ b/code/modules/mob/living/simple_animal/friendly/corgi.dm @@ -307,11 +307,10 @@ else dir = SOUTH - //if(isturf(movement_target.loc) ) - //movement_target.attack_animal(src) - //else if(ishuman(movement_target.loc) ) - //if(prob(20)) - //emote("stares at the [movement_target] that [movement_target.loc] has with a sad puppy-face") + if(isturf(movement_target.loc) ) + UnarmedAttack(movement_target) + else if(ishuman(movement_target.loc) && prob(20)) + custom_emote(1,"stares at the [movement_target] that [movement_target.loc] has with sad puppy eyes.") if(prob(1)) emote(pick("dances around","chases its tail")) diff --git a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm index 3fa82adfcf..ef9731bb0b 100644 --- a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm +++ b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm @@ -18,7 +18,7 @@ response_disarm = "gently pushes aside the" response_harm = "kicks the" faction = "goat" - attacktext = "kicks" + attacktext = "kicked" health = 40 melee_damage_lower = 1 melee_damage_upper = 5 @@ -102,7 +102,7 @@ response_help = "pets the" response_disarm = "gently pushes aside the" response_harm = "kicks the" - attacktext = "kicks" + attacktext = "kicked" health = 50 var/datum/reagents/udder = null @@ -163,7 +163,7 @@ response_help = "pets the" response_disarm = "gently pushes aside the" response_harm = "kicks the" - attacktext = "kicks" + attacktext = "kicked" health = 1 var/amount_grown = 0 pass_flags = PASSTABLE | PASSGRILLE @@ -204,7 +204,7 @@ var/global/chicken_count = 0 response_help = "pets the" response_disarm = "gently pushes aside the" response_harm = "kicks the" - attacktext = "kicks" + attacktext = "kicked" health = 10 var/eggsleft = 0 var/body_color diff --git a/code/modules/mob/living/simple_animal/friendly/lizard.dm b/code/modules/mob/living/simple_animal/friendly/lizard.dm index 171e96fc62..d4677ef5d3 100644 --- a/code/modules/mob/living/simple_animal/friendly/lizard.dm +++ b/code/modules/mob/living/simple_animal/friendly/lizard.dm @@ -9,8 +9,7 @@ speak_emote = list("hisses") health = 5 maxHealth = 5 - attacktext = "bites" - attacktext = "bites" + attacktext = "bitten" melee_damage_lower = 1 melee_damage_upper = 2 response_help = "pets" diff --git a/code/modules/mob/living/simple_animal/friendly/spiderbot.dm b/code/modules/mob/living/simple_animal/friendly/spiderbot.dm index 3027819403..bf64e9265b 100644 --- a/code/modules/mob/living/simple_animal/friendly/spiderbot.dm +++ b/code/modules/mob/living/simple_animal/friendly/spiderbot.dm @@ -26,8 +26,7 @@ health = 10 maxHealth = 10 - attacktext = "shocks" - attacktext = "shocks" + attacktext = "shocked" melee_damage_lower = 1 melee_damage_upper = 3 diff --git a/code/modules/mob/living/simple_animal/hostile/alien.dm b/code/modules/mob/living/simple_animal/hostile/alien.dm index b46cdb58a7..ab6874276a 100644 --- a/code/modules/mob/living/simple_animal/hostile/alien.dm +++ b/code/modules/mob/living/simple_animal/hostile/alien.dm @@ -16,7 +16,7 @@ harm_intent_damage = 5 melee_damage_lower = 25 melee_damage_upper = 25 - attacktext = "slashes" + attacktext = "slashed" a_intent = "harm" attack_sound = 'sound/weapons/bladeslice.ogg' min_oxy = 0 diff --git a/code/modules/mob/living/simple_animal/hostile/carp.dm b/code/modules/mob/living/simple_animal/hostile/carp.dm index 7fb6ee9854..8708b1009e 100644 --- a/code/modules/mob/living/simple_animal/hostile/carp.dm +++ b/code/modules/mob/living/simple_animal/hostile/carp.dm @@ -20,7 +20,7 @@ harm_intent_damage = 8 melee_damage_lower = 15 melee_damage_upper = 15 - attacktext = "bites" + attacktext = "bitten" attack_sound = 'sound/weapons/bite.ogg' //Space carp aren't affected by atmos. diff --git a/code/modules/mob/living/simple_animal/hostile/creature.dm b/code/modules/mob/living/simple_animal/hostile/creature.dm index 45464bf895..07ad06619a 100644 --- a/code/modules/mob/living/simple_animal/hostile/creature.dm +++ b/code/modules/mob/living/simple_animal/hostile/creature.dm @@ -10,7 +10,7 @@ maxHealth = 80 melee_damage_lower = 25 melee_damage_upper = 50 - attacktext = "chomps" + attacktext = "chomped" attack_sound = 'sound/weapons/bite.ogg' faction = "creature" speed = 4 \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/hostile/faithless.dm b/code/modules/mob/living/simple_animal/hostile/faithless.dm index 5613c21ac3..d69ac01012 100644 --- a/code/modules/mob/living/simple_animal/hostile/faithless.dm +++ b/code/modules/mob/living/simple_animal/hostile/faithless.dm @@ -16,7 +16,7 @@ harm_intent_damage = 10 melee_damage_lower = 15 melee_damage_upper = 15 - attacktext = "grips" + attacktext = "gripped" attack_sound = 'sound/hallucinations/growl1.ogg' min_oxy = 0 diff --git a/code/modules/mob/living/simple_animal/hostile/hivebot.dm b/code/modules/mob/living/simple_animal/hostile/hivebot.dm index b0b02f656f..26d69933e8 100644 --- a/code/modules/mob/living/simple_animal/hostile/hivebot.dm +++ b/code/modules/mob/living/simple_animal/hostile/hivebot.dm @@ -13,7 +13,7 @@ maxHealth = 15 melee_damage_lower = 2 melee_damage_upper = 3 - attacktext = "claws" + attacktext = "clawed" projectilesound = 'sound/weapons/Gunshot.ogg' projectiletype = /obj/item/projectile/hivebotbullet faction = "hivebot" diff --git a/code/modules/mob/living/simple_animal/hostile/mimic.dm b/code/modules/mob/living/simple_animal/hostile/mimic.dm index d239e88c6d..6e43df9378 100644 --- a/code/modules/mob/living/simple_animal/hostile/mimic.dm +++ b/code/modules/mob/living/simple_animal/hostile/mimic.dm @@ -20,7 +20,7 @@ harm_intent_damage = 5 melee_damage_lower = 8 melee_damage_upper = 12 - attacktext = "attacks" + attacktext = "attacked" attack_sound = 'sound/weapons/bite.ogg' min_oxy = 0 @@ -56,7 +56,7 @@ // Aggro when you try to open them. Will also pickup loot when spawns and drop it when dies. /mob/living/simple_animal/hostile/mimic/crate - attacktext = "bites" + attacktext = "bitten" stop_automated_movement = 1 wander = 0 diff --git a/code/modules/mob/living/simple_animal/hostile/pirate.dm b/code/modules/mob/living/simple_animal/hostile/pirate.dm index 0e0e50c07e..2ccf788893 100644 --- a/code/modules/mob/living/simple_animal/hostile/pirate.dm +++ b/code/modules/mob/living/simple_animal/hostile/pirate.dm @@ -17,7 +17,7 @@ harm_intent_damage = 5 melee_damage_lower = 30 melee_damage_upper = 30 - attacktext = "slashes" + attacktext = "slashed" attack_sound = 'sound/weapons/bladeslice.ogg' min_oxy = 5 diff --git a/code/modules/mob/living/simple_animal/hostile/retaliate/clown.dm b/code/modules/mob/living/simple_animal/hostile/retaliate/clown.dm index 68d0e3c5cd..2bb2610f66 100644 --- a/code/modules/mob/living/simple_animal/hostile/retaliate/clown.dm +++ b/code/modules/mob/living/simple_animal/hostile/retaliate/clown.dm @@ -21,7 +21,7 @@ harm_intent_damage = 8 melee_damage_lower = 10 melee_damage_upper = 10 - attacktext = "attacks" + attacktext = "attacked" attack_sound = 'sound/items/bikehorn.ogg' min_oxy = 5 diff --git a/code/modules/mob/living/simple_animal/hostile/russian.dm b/code/modules/mob/living/simple_animal/hostile/russian.dm index d89db259b3..8c2a470dcd 100644 --- a/code/modules/mob/living/simple_animal/hostile/russian.dm +++ b/code/modules/mob/living/simple_animal/hostile/russian.dm @@ -17,7 +17,7 @@ harm_intent_damage = 5 melee_damage_lower = 15 melee_damage_upper = 15 - attacktext = "punches" + attacktext = "punched" a_intent = "harm" var/corpse = /obj/effect/landmark/mobcorpse/russian var/weapon1 = /obj/item/weapon/kitchenknife diff --git a/code/modules/mob/living/simple_animal/hostile/syndicate.dm b/code/modules/mob/living/simple_animal/hostile/syndicate.dm index ff9aba71a4..11a81284f2 100644 --- a/code/modules/mob/living/simple_animal/hostile/syndicate.dm +++ b/code/modules/mob/living/simple_animal/hostile/syndicate.dm @@ -17,7 +17,7 @@ harm_intent_damage = 5 melee_damage_lower = 10 melee_damage_upper = 10 - attacktext = "punches" + attacktext = "punched" a_intent = "harm" var/corpse = /obj/effect/landmark/mobcorpse/syndicatesoldier var/weapon1 @@ -55,7 +55,7 @@ icon_living = "syndicatemelee" weapon1 = /obj/item/weapon/melee/energy/sword/red weapon2 = /obj/item/weapon/shield/energy - attacktext = "slashes" + attacktext = "slashed" status_flags = 0 /mob/living/simple_animal/hostile/syndicate/melee/attackby(var/obj/item/O as obj, var/mob/user as mob) @@ -144,7 +144,7 @@ maxHealth = 15 melee_damage_lower = 15 melee_damage_upper = 15 - attacktext = "cuts" + attacktext = "cut" attack_sound = 'sound/weapons/bladeslice.ogg' faction = "syndicate" min_oxy = 0 diff --git a/code/modules/mob/living/simple_animal/hostile/tree.dm b/code/modules/mob/living/simple_animal/hostile/tree.dm index 7f44f8a9b1..b263cd2112 100644 --- a/code/modules/mob/living/simple_animal/hostile/tree.dm +++ b/code/modules/mob/living/simple_animal/hostile/tree.dm @@ -21,7 +21,7 @@ harm_intent_damage = 5 melee_damage_lower = 8 melee_damage_upper = 12 - attacktext = "bites" + attacktext = "bitten" attack_sound = 'sound/weapons/bite.ogg' //Space carp aren't affected by atmos. diff --git a/code/modules/mob/living/simple_animal/parrot.dm b/code/modules/mob/living/simple_animal/parrot.dm index 2ef60f7393..21833161ad 100644 --- a/code/modules/mob/living/simple_animal/parrot.dm +++ b/code/modules/mob/living/simple_animal/parrot.dm @@ -739,12 +739,19 @@ speech_buffer.Add(message) /mob/living/simple_animal/parrot/attack_generic(var/mob/user, var/damage, var/attack_message) - ..() - if(client) return + + var/success = ..() + + if(client) + return success + if(parrot_state == PARROT_PERCH) parrot_sleep_dur = parrot_sleep_max //Reset it's sleep timer if it was perched - if(!damage) - return + + if(!success) + return 0 + parrot_interest = user parrot_state = PARROT_SWOOP | PARROT_ATTACK //Attack other animals regardless - icon_state = "parrot_fly" \ No newline at end of file + icon_state = "parrot_fly" + return success \ No newline at end of file diff --git a/code/modules/mob/living/simple_animal/shade.dm b/code/modules/mob/living/simple_animal/shade.dm index ae0fc99e5d..ed5f35d55b 100644 --- a/code/modules/mob/living/simple_animal/shade.dm +++ b/code/modules/mob/living/simple_animal/shade.dm @@ -16,7 +16,7 @@ response_harm = "punches the" melee_damage_lower = 5 melee_damage_upper = 15 - attacktext = "drains the life from" + attacktext = "drained the life from" minbodytemp = 0 maxbodytemp = 4000 min_oxy = 0 diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm index 515d04a885..078159c12d 100644 --- a/code/modules/mob/living/simple_animal/simple_animal.dm +++ b/code/modules/mob/living/simple_animal/simple_animal.dm @@ -49,7 +49,7 @@ //LETTING SIMPLE ANIMALS ATTACK? WHAT COULD GO WRONG. Defaults to zero so Ian can still be cuddly var/melee_damage_lower = 0 var/melee_damage_upper = 0 - var/attacktext = "attacks" + var/attacktext = "attacked" var/attack_sound = null var/friendly = "nuzzles" var/wall_smash = 0 diff --git a/code/modules/mob/living/simple_animal/worm.dm b/code/modules/mob/living/simple_animal/worm.dm index 387ac33bf2..6dad3655e3 100644 --- a/code/modules/mob/living/simple_animal/worm.dm +++ b/code/modules/mob/living/simple_animal/worm.dm @@ -57,7 +57,7 @@ melee_damage_lower = 10 melee_damage_upper = 15 - attacktext = "bites" + attacktext = "bitten" animate_movement = SLIDE_STEPS diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm index 9ad0997f73..f6cfe8f3ca 100644 --- a/code/modules/power/lighting.dm +++ b/code/modules/power/lighting.dm @@ -317,6 +317,7 @@ return visible_message("[user] smashes the light!") broken() + return 1 // attempt to set the light's on/off status // will not switch on if broken/burned/empty diff --git a/code/modules/reagents/reagent_containers/food/snacks.dm b/code/modules/reagents/reagent_containers/food/snacks.dm index e21fb0617e..3735aed0cf 100644 --- a/code/modules/reagents/reagent_containers/food/snacks.dm +++ b/code/modules/reagents/reagent_containers/food/snacks.dm @@ -207,15 +207,23 @@ /// FOOD END //////////////////////////////////////////////////////////////////////////////// +/obj/item/weapon/reagent_containers/food/snacks/attack_generic(var/mob/living/user) + if(isanimal(user) || isalien(user)) + if(bitecount == 0 || prob(50)) + user.custom_emote(1,"nibbles away at the [src]") + bitecount++ + if(reagents && user.reagents) + reagents.trans_to_ingest(user, bitesize) + spawn(5) + if(!src && !user.client) + user.custom_emote(1,"[pick("burps", "cries for more", "burps twice", "looks at the area where the food was")]") + del(src) - - - - + On_Consume(user) ////////////////////////////////////////////////// ////////////////////////////////////////////Snacks diff --git a/code/modules/research/xenoarchaeology/genetics/prehistoric_animals.dm b/code/modules/research/xenoarchaeology/genetics/prehistoric_animals.dm index c9022726a6..df2ff6d852 100644 --- a/code/modules/research/xenoarchaeology/genetics/prehistoric_animals.dm +++ b/code/modules/research/xenoarchaeology/genetics/prehistoric_animals.dm @@ -12,7 +12,7 @@ speed = 2 melee_damage_lower = 5 melee_damage_upper = 15 - attacktext = "mauls" + attacktext = "mauled" cold_damage_per_tick = 0 speak_chance = 5 speak = list("Hruuugh!","Hrunnph") @@ -33,7 +33,7 @@ speed = 1 melee_damage_lower = 1 melee_damage_upper = 8 - attacktext = "gouges" + attacktext = "gouged" cold_damage_per_tick = 0 speak_chance = 5 speak = list("Awrr?","Aowrl!","Worrl") @@ -54,7 +54,7 @@ speed = 1 melee_damage_lower = 3 melee_damage_upper = 12 - attacktext = "gouges" + attacktext = "gouged" cold_damage_per_tick = 0 speak_chance = 5 speak = list("Shuhn","Shrunnph?","Shunpf") diff --git a/code/modules/vehicles/vehicle.dm b/code/modules/vehicles/vehicle.dm index a07ea901ef..5b40c9e5fc 100644 --- a/code/modules/vehicles/vehicle.dm +++ b/code/modules/vehicles/vehicle.dm @@ -356,4 +356,5 @@ src.health -= damage if(prob(10)) new /obj/effect/decal/cleanable/blood/oil(src.loc) - healthcheck() \ No newline at end of file + spawn(1) healthcheck() + return 1 \ No newline at end of file From 7bf33f98e4ec17557552264fb4b557d441646f00 Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Thu, 13 Nov 2014 12:42:08 +0100 Subject: [PATCH 14/16] Research Safety Research build paths are now type safe. ensuring the object type that is to be constructed always exists. --- code/modules/research/designs.dm | 394 +++++++++++++++---------------- 1 file changed, 197 insertions(+), 197 deletions(-) diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm index 451978609b..d3fa195fb3 100644 --- a/code/modules/research/designs.dm +++ b/code/modules/research/designs.dm @@ -48,7 +48,7 @@ datum/design //Datum for object designs, used in construction var/reliability = 100 //Reliability of the device. var/build_type = null //Flag as to what kind machine the design is built in. See defines. var/list/materials = list() //List of materials. Format: "id" = amount. - var/build_path = "" //The file path of the object that gets created + var/build_path = null //The path of the object that gets created var/locked = 0 //If true it will spawn inside a lockbox with currently sec access var/category = null //Primarily used for Mech Fabricators, but can be used for anything @@ -74,7 +74,7 @@ datum/design/seccamera req_tech = list("programming" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/security" + build_path = /obj/item/weapon/circuitboard/security datum/design/aicore name = "Circuit Design (AI Core)" @@ -83,7 +83,7 @@ datum/design/aicore req_tech = list("programming" = 4, "biotech" = 3) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/aicore" + build_path = /obj/item/weapon/circuitboard/aicore datum/design/aiupload name = "Circuit Design (AI Upload)" @@ -92,7 +92,7 @@ datum/design/aiupload req_tech = list("programming" = 4) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/aiupload" + build_path = /obj/item/weapon/circuitboard/aiupload datum/design/borgupload name = "Circuit Design (Cyborg Upload)" @@ -101,7 +101,7 @@ datum/design/borgupload req_tech = list("programming" = 4) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/borgupload" + build_path = /obj/item/weapon/circuitboard/borgupload datum/design/med_data name = "Circuit Design (Medical Records)" @@ -110,7 +110,7 @@ datum/design/med_data req_tech = list("programming" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/med_data" + build_path = /obj/item/weapon/circuitboard/med_data datum/design/operating name = "Circuit Design (Operating Computer)" @@ -119,7 +119,7 @@ datum/design/operating req_tech = list("programming" = 2, "biotech" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/operating" + build_path = /obj/item/weapon/circuitboard/operating datum/design/pandemic name = "Circuit Design (PanD.E.M.I.C. 2200)" @@ -128,7 +128,7 @@ datum/design/pandemic req_tech = list("programming" = 2, "biotech" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/pandemic" + build_path = /obj/item/weapon/circuitboard/pandemic datum/design/scan_console name = "Circuit Design (DNA Machine)" @@ -137,7 +137,7 @@ datum/design/scan_console req_tech = list("programming" = 2, "biotech" = 3) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/scan_consolenew" + build_path = /obj/item/weapon/circuitboard/scan_consolenew datum/design/comconsole name = "Circuit Design (Communications)" @@ -146,7 +146,7 @@ datum/design/comconsole req_tech = list("programming" = 2, "magnets" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/communications" + build_path = /obj/item/weapon/circuitboard/communications datum/design/idcardconsole name = "Circuit Design (ID Computer)" @@ -155,7 +155,7 @@ datum/design/idcardconsole req_tech = list("programming" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/card" + build_path = /obj/item/weapon/circuitboard/card datum/design/crewconsole name = "Circuit Design (Crew monitoring computer)" @@ -164,7 +164,7 @@ datum/design/crewconsole req_tech = list("programming" = 3, "magnets" = 2, "biotech" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/crew" + build_path = /obj/item/weapon/circuitboard/crew datum/design/teleconsole name = "Circuit Design (Teleporter Console)" @@ -173,7 +173,7 @@ datum/design/teleconsole req_tech = list("programming" = 3, "bluespace" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/teleporter" + build_path = /obj/item/weapon/circuitboard/teleporter datum/design/secdata name = "Circuit Design (Security Records Console)" @@ -182,7 +182,7 @@ datum/design/secdata req_tech = list("programming" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/secure_data" + build_path = /obj/item/weapon/circuitboard/secure_data datum/design/atmosalerts name = "Circuit Design (Atmosphere Alert)" @@ -191,7 +191,7 @@ datum/design/atmosalerts req_tech = list("programming" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/atmos_alert" + build_path = /obj/item/weapon/circuitboard/atmos_alert datum/design/air_management name = "Circuit Design (Atmospheric Monitor)" @@ -200,7 +200,7 @@ datum/design/air_management req_tech = list("programming" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/air_management" + build_path = /obj/item/weapon/circuitboard/air_management /* Uncomment if someone makes these buildable datum/design/general_alert @@ -210,7 +210,7 @@ datum/design/general_alert req_tech = list("programming" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/general_alert" + build_path = /obj/item/weapon/circuitboard/general_alert" */ datum/design/robocontrol @@ -220,7 +220,7 @@ datum/design/robocontrol req_tech = list("programming" = 4) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/robotics" + build_path = /obj/item/weapon/circuitboard/robotics datum/design/dronecontrol name = "Circuit Design (Drone Control Console)" @@ -229,7 +229,7 @@ datum/design/dronecontrol req_tech = list("programming" = 4) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/drone_control" + build_path = /obj/item/weapon/circuitboard/drone_control datum/design/clonecontrol name = "Circuit Design (Cloning Machine Console)" @@ -238,7 +238,7 @@ datum/design/clonecontrol req_tech = list("programming" = 3, "biotech" = 3) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/cloning" + build_path = /obj/item/weapon/circuitboard/cloning datum/design/clonepod name = "Circuit Design (Clone Pod)" @@ -247,7 +247,7 @@ datum/design/clonepod req_tech = list("programming" = 3, "biotech" = 3) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/clonepod" + build_path = /obj/item/weapon/circuitboard/clonepod datum/design/clonescanner name = "Circuit Design (Cloning Scanner)" @@ -256,7 +256,7 @@ datum/design/clonescanner req_tech = list("programming" = 3, "biotech" = 3) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/clonescanner" + build_path = /obj/item/weapon/circuitboard/clonescanner datum/design/arcademachine name = "Circuit Design (Arcade Machine)" @@ -265,7 +265,7 @@ datum/design/arcademachine req_tech = list("programming" = 1) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/arcade" + build_path = /obj/item/weapon/circuitboard/arcade datum/design/powermonitor name = "Circuit Design (Power Monitor)" @@ -274,7 +274,7 @@ datum/design/powermonitor req_tech = list("programming" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/powermonitor" + build_path = /obj/item/weapon/circuitboard/powermonitor datum/design/solarcontrol name = "Circuit Design (Solar Control)" @@ -283,7 +283,7 @@ datum/design/solarcontrol req_tech = list("programming" = 2, "powerstorage" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/solar_control" + build_path = /obj/item/weapon/circuitboard/solar_control datum/design/prisonmanage name = "Circuit Design (Prisoner Management Console)" @@ -292,7 +292,7 @@ datum/design/prisonmanage req_tech = list("programming" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/prisoner" + build_path = /obj/item/weapon/circuitboard/prisoner datum/design/mechacontrol name = "Circuit Design (Exosuit Control Console)" @@ -301,7 +301,7 @@ datum/design/mechacontrol req_tech = list("programming" = 3) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/mecha_control" + build_path = /obj/item/weapon/circuitboard/mecha_control datum/design/mechapower name = "Circuit Design (Mech Bay Power Control Console)" @@ -310,7 +310,7 @@ datum/design/mechapower req_tech = list("programming" = 2, "powerstorage" = 3) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/mech_bay_power_console" + build_path = /obj/item/weapon/circuitboard/mech_bay_power_console datum/design/rdconsole name = "Circuit Design (R&D Console)" @@ -319,7 +319,7 @@ datum/design/rdconsole req_tech = list("programming" = 4) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/rdconsole" + build_path = /obj/item/weapon/circuitboard/rdconsole datum/design/ordercomp name = "Circuit Design (Supply ordering console)" @@ -328,7 +328,7 @@ datum/design/ordercomp req_tech = list("programming" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/ordercomp" + build_path = /obj/item/weapon/circuitboard/ordercomp datum/design/supplycomp name = "Circuit Design (Supply shuttle console)" @@ -337,7 +337,7 @@ datum/design/supplycomp req_tech = list("programming" = 3) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/supplycomp" + build_path = /obj/item/weapon/circuitboard/supplycomp datum/design/comm_monitor name = "Circuit Design (Telecommunications Monitoring Console)" @@ -346,7 +346,7 @@ datum/design/comm_monitor req_tech = list("programming" = 3) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/comm_monitor" + build_path = /obj/item/weapon/circuitboard/comm_monitor datum/design/comm_server name = "Circuit Design (Telecommunications Server Monitoring Console)" @@ -355,7 +355,7 @@ datum/design/comm_server req_tech = list("programming" = 3) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/comm_server" + build_path = /obj/item/weapon/circuitboard/comm_server datum/design/message_monitor name = "Circuit Design (Messaging Monitor Console)" @@ -364,7 +364,7 @@ datum/design/message_monitor req_tech = list("programming" = 5) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/message_monitor" + build_path = /obj/item/weapon/circuitboard/message_monitor datum/design/aifixer name = "Circuit Design (AI Integrity Restorer)" @@ -373,7 +373,7 @@ datum/design/aifixer req_tech = list("programming" = 3, "biotech" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/aifixer" + build_path = /obj/item/weapon/circuitboard/aifixer // VERY VERY EXPENSIVE (needs diamonds and stuff) datum/design/smes_cell @@ -383,7 +383,7 @@ datum/design/smes_cell req_tech = list("powerstorage" = 7, "engineering" = 5) // Higher than obtained by deconstructing existing boards. Needs more RnD effor to make build_type = IMPRINTER materials = list("$glass" = 4000, "sacid" = 40, "$gold" = 1000, "$silver" = 1000, "$diamond" = 500) - build_path = "/obj/item/weapon/circuitboard/smes" + build_path = /obj/item/weapon/circuitboard/smes /////////////////////////////////// //////////AI Module Disks////////// @@ -395,7 +395,7 @@ datum/design/safeguard_module req_tech = list("programming" = 3, "materials" = 4) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20, "$gold" = 100) - build_path = "/obj/item/weapon/aiModule/safeguard" + build_path = /obj/item/weapon/aiModule/safeguard datum/design/onehuman_module name = "Module Design (OneHuman)" @@ -404,7 +404,7 @@ datum/design/onehuman_module req_tech = list("programming" = 4, "materials" = 6) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20, "$diamond" = 100) - build_path = "/obj/item/weapon/aiModule/oneHuman" + build_path = /obj/item/weapon/aiModule/oneHuman datum/design/protectstation_module name = "Module Design (ProtectStation)" @@ -413,7 +413,7 @@ datum/design/protectstation_module req_tech = list("programming" = 3, "materials" = 6) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20, "$gold" = 100) - build_path = "/obj/item/weapon/aiModule/protectStation" + build_path = /obj/item/weapon/aiModule/protectStation datum/design/notele_module name = "Module Design (TeleporterOffline Module)" @@ -422,7 +422,7 @@ datum/design/notele_module req_tech = list("programming" = 3) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20, "$gold" = 100) - build_path = "/obj/item/weapon/aiModule/teleporterOffline" + build_path = /obj/item/weapon/aiModule/teleporterOffline datum/design/quarantine_module name = "Module Design (Quarantine)" @@ -431,7 +431,7 @@ datum/design/quarantine_module req_tech = list("programming" = 3, "biotech" = 2, "materials" = 4) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20, "$gold" = 100) - build_path = "/obj/item/weapon/aiModule/quarantine" + build_path = /obj/item/weapon/aiModule/quarantine datum/design/oxygen_module name = "Module Design (OxygenIsToxicToHumans)" @@ -440,7 +440,7 @@ datum/design/oxygen_module req_tech = list("programming" = 3, "biotech" = 2, "materials" = 4) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20, "$gold" = 100) - build_path = "/obj/item/weapon/aiModule/oxygen" + build_path = /obj/item/weapon/aiModule/oxygen datum/design/freeform_module name = "Module Design (Freeform)" @@ -449,7 +449,7 @@ datum/design/freeform_module req_tech = list("programming" = 4, "materials" = 4) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20, "$gold" = 100) - build_path = "/obj/item/weapon/aiModule/freeform" + build_path = /obj/item/weapon/aiModule/freeform datum/design/reset_module name = "Module Design (Reset)" @@ -458,7 +458,7 @@ datum/design/reset_module req_tech = list("programming" = 3, "materials" = 6) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20, "$gold" = 100) - build_path = "/obj/item/weapon/aiModule/reset" + build_path = /obj/item/weapon/aiModule/reset datum/design/purge_module name = "Module Design (Purge)" @@ -467,7 +467,7 @@ datum/design/purge_module req_tech = list("programming" = 4, "materials" = 6) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20, "$diamond" = 100) - build_path = "/obj/item/weapon/aiModule/purge" + build_path = /obj/item/weapon/aiModule/purge datum/design/freeformcore_module name = "Core Module Design (Freeform)" @@ -476,7 +476,7 @@ datum/design/freeformcore_module req_tech = list("programming" = 4, "materials" = 6) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20, "$diamond" = 100) - build_path = "/obj/item/weapon/aiModule/freeformcore" + build_path = /obj/item/weapon/aiModule/freeformcore datum/design/asimov name = "Core Module Design (Asimov)" @@ -485,7 +485,7 @@ datum/design/asimov req_tech = list("programming" = 3, "materials" = 6) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20, "$diamond" = 100) - build_path = "/obj/item/weapon/aiModule/asimov" + build_path = /obj/item/weapon/aiModule/asimov datum/design/paladin_module name = "Core Module Design (P.A.L.A.D.I.N.)" @@ -494,7 +494,7 @@ datum/design/paladin_module req_tech = list("programming" = 4, "materials" = 6) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20, "$diamond" = 100) - build_path = "/obj/item/weapon/aiModule/paladin" + build_path = /obj/item/weapon/aiModule/paladin datum/design/tyrant_module name = "Core Module Design (T.Y.R.A.N.T.)" @@ -503,7 +503,7 @@ datum/design/tyrant_module req_tech = list("programming" = 4, "syndicate" = 2, "materials" = 6) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20, "$diamond" = 100) - build_path = "/obj/item/weapon/aiModule/tyrant" + build_path = /obj/item/weapon/aiModule/tyrant @@ -517,7 +517,7 @@ datum/design/subspace_receiver req_tech = list("programming" = 4, "engineering" = 3, "bluespace" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/telecomms/receiver" + build_path = /obj/item/weapon/circuitboard/telecomms/receiver datum/design/telecomms_bus name = "Circuit Design (Bus Mainframe)" @@ -526,7 +526,7 @@ datum/design/telecomms_bus req_tech = list("programming" = 4, "engineering" = 4) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/telecomms/bus" + build_path = /obj/item/weapon/circuitboard/telecomms/bus datum/design/telecomms_hub name = "Circuit Design (Hub Mainframe)" @@ -535,7 +535,7 @@ datum/design/telecomms_hub req_tech = list("programming" = 4, "engineering" = 4) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/telecomms/hub" + build_path = /obj/item/weapon/circuitboard/telecomms/hub datum/design/telecomms_relay name = "Circuit Design (Relay Mainframe)" @@ -544,7 +544,7 @@ datum/design/telecomms_relay req_tech = list("programming" = 3, "engineering" = 4, "bluespace" = 3) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/telecomms/relay" + build_path = /obj/item/weapon/circuitboard/telecomms/relay datum/design/telecomms_processor name = "Circuit Design (Processor Unit)" @@ -553,7 +553,7 @@ datum/design/telecomms_processor req_tech = list("programming" = 4, "engineering" = 4) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/telecomms/processor" + build_path = /obj/item/weapon/circuitboard/telecomms/processor datum/design/telecomms_server name = "Circuit Design (Server Mainframe)" @@ -562,7 +562,7 @@ datum/design/telecomms_server req_tech = list("programming" = 4, "engineering" = 4) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/telecomms/server" + build_path = /obj/item/weapon/circuitboard/telecomms/server datum/design/subspace_broadcaster name = "Circuit Design (Subspace Broadcaster)" @@ -571,7 +571,7 @@ datum/design/subspace_broadcaster req_tech = list("programming" = 4, "engineering" = 4, "bluespace" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/telecomms/broadcaster" + build_path = /obj/item/weapon/circuitboard/telecomms/broadcaster /////////////////////////////////// @@ -585,7 +585,7 @@ datum/design/intellicard req_tech = list("programming" = 4, "materials" = 4) build_type = PROTOLATHE materials = list("$glass" = 1000, "$gold" = 200) - build_path = "/obj/item/device/aicard" + build_path = /obj/item/device/aicard datum/design/paicard name = "Personal Artificial Intelligence Card" @@ -594,7 +594,7 @@ datum/design/paicard req_tech = list("programming" = 2) build_type = PROTOLATHE materials = list("$glass" = 500, "$metal" = 500) - build_path = "/obj/item/device/paicard" + build_path = /obj/item/device/paicard datum/design/posibrain name = "Positronic Brain" @@ -604,7 +604,7 @@ datum/design/posibrain build_type = PROTOLATHE materials = list("$metal" = 2000, "$glass" = 1000, "$silver" = 1000, "$gold" = 500, "$phoron" = 500, "$diamond" = 100) - build_path = "/obj/item/device/mmi/posibrain" + build_path = /obj/item/device/mmi/posibrain /////////////////////////////////// //////////Mecha Module Disks/////// @@ -617,7 +617,7 @@ datum/design/ripley_main req_tech = list("programming" = 3) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/mecha/ripley/main" + build_path = /obj/item/weapon/circuitboard/mecha/ripley/main datum/design/ripley_peri name = "Circuit Design (APLU \"Ripley\" Peripherals Control module)" @@ -626,7 +626,7 @@ datum/design/ripley_peri req_tech = list("programming" = 3) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/mecha/ripley/peripherals" + build_path = /obj/item/weapon/circuitboard/mecha/ripley/peripherals datum/design/odysseus_main name = "Circuit Design (\"Odysseus\" Central Control module)" @@ -635,7 +635,7 @@ datum/design/odysseus_main req_tech = list("programming" = 3,"biotech" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/mecha/odysseus/main" + build_path = /obj/item/weapon/circuitboard/mecha/odysseus/main datum/design/odysseus_peri name = "Circuit Design (\"Odysseus\" Peripherals Control module)" @@ -644,7 +644,7 @@ datum/design/odysseus_peri req_tech = list("programming" = 3,"biotech" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/mecha/odysseus/peripherals" + build_path = /obj/item/weapon/circuitboard/mecha/odysseus/peripherals datum/design/gygax_main name = "Circuit Design (\"Gygax\" Central Control module)" @@ -653,7 +653,7 @@ datum/design/gygax_main req_tech = list("programming" = 4) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/mecha/gygax/main" + build_path = /obj/item/weapon/circuitboard/mecha/gygax/main datum/design/gygax_peri name = "Circuit Design (\"Gygax\" Peripherals Control module)" @@ -662,7 +662,7 @@ datum/design/gygax_peri req_tech = list("programming" = 4) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/mecha/gygax/peripherals" + build_path = /obj/item/weapon/circuitboard/mecha/gygax/peripherals datum/design/gygax_targ name = "Circuit Design (\"Gygax\" Weapons & Targeting Control module)" @@ -671,7 +671,7 @@ datum/design/gygax_targ req_tech = list("programming" = 4, "combat" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/mecha/gygax/targeting" + build_path = /obj/item/weapon/circuitboard/mecha/gygax/targeting datum/design/durand_main name = "Circuit Design (\"Durand\" Central Control module)" @@ -680,7 +680,7 @@ datum/design/durand_main req_tech = list("programming" = 4) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/mecha/durand/main" + build_path = /obj/item/weapon/circuitboard/mecha/durand/main datum/design/durand_peri name = "Circuit Design (\"Durand\" Peripherals Control module)" @@ -689,7 +689,7 @@ datum/design/durand_peri req_tech = list("programming" = 4) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/mecha/durand/peripherals" + build_path = /obj/item/weapon/circuitboard/mecha/durand/peripherals datum/design/durand_targ name = "Circuit Design (\"Durand\" Weapons & Targeting Control module)" @@ -698,7 +698,7 @@ datum/design/durand_targ req_tech = list("programming" = 4, "combat" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/mecha/durand/targeting" + build_path = /obj/item/weapon/circuitboard/mecha/durand/targeting datum/design/honker_main name = "Circuit Design (\"H.O.N.K\" Central Control module)" @@ -707,7 +707,7 @@ datum/design/honker_main req_tech = list("programming" = 3) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/mecha/honker/main" + build_path = /obj/item/weapon/circuitboard/mecha/honker/main datum/design/honker_peri name = "Circuit Design (\"H.O.N.K\" Peripherals Control module)" @@ -716,7 +716,7 @@ datum/design/honker_peri req_tech = list("programming" = 3) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/mecha/honker/peripherals" + build_path = /obj/item/weapon/circuitboard/mecha/honker/peripherals datum/design/honker_targ name = "Circuit Design (\"H.O.N.K\" Weapons & Targeting Control module)" @@ -725,7 +725,7 @@ datum/design/honker_targ req_tech = list("programming" = 3) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/mecha/honker/targeting" + build_path = /obj/item/weapon/circuitboard/mecha/honker/targeting //////////////////////////////////////// /////////// Mecha Equpment ///////////// @@ -737,7 +737,7 @@ datum/design/mech_scattershot id = "mech_scattershot" build_type = MECHFAB req_tech = list("combat" = 4) - build_path = "/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot" + build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/scattershot category = "Exosuit Equipment" datum/design/mech_laser @@ -746,7 +746,7 @@ datum/design/mech_laser id = "mech_laser" build_type = MECHFAB req_tech = list("combat" = 3, "magnets" = 3) - build_path = "/obj/item/mecha_parts/mecha_equipment/weapon/energy/laser" + build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser category = "Exosuit Equipment" datum/design/mech_laser_rigged @@ -755,7 +755,7 @@ datum/design/mech_laser_rigged id = "mech_laser_rigged" build_type = MECHFAB req_tech = list("combat" = 2, "magnets" = 2) - build_path = "/obj/item/mecha_parts/mecha_equipment/weapon/energy/riggedlaser" + build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/riggedlaser category = "Exosuit Equipment" datum/design/mech_laser_heavy @@ -764,7 +764,7 @@ datum/design/mech_laser_heavy id = "mech_laser_heavy" build_type = MECHFAB req_tech = list("combat" = 4, "magnets" = 4) - build_path = "/obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/heavy" + build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/laser/heavy category = "Exosuit Equipment" datum/design/mech_ion @@ -773,7 +773,7 @@ datum/design/mech_ion id = "mech_ion" build_type = MECHFAB req_tech = list("combat" = 4, "magnets" = 4) - build_path = "/obj/item/mecha_parts/mecha_equipment/weapon/energy/ion" + build_path = /obj/item/mecha_parts/mecha_equipment/weapon/energy/ion category = "Exosuit Equipment" datum/design/mech_grenade_launcher @@ -782,7 +782,7 @@ datum/design/mech_grenade_launcher id = "mech_grenade_launcher" build_type = MECHFAB req_tech = list("combat" = 3) - build_path = "/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang" + build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang category = "Exosuit Equipment" datum/design/clusterbang_launcher @@ -791,7 +791,7 @@ datum/design/clusterbang_launcher id = "clusterbang_launcher" build_type = MECHFAB req_tech = list("combat"= 5, "materials" = 5, "syndicate" = 3) - build_path = "/obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang/clusterbang/limited" + build_path = /obj/item/mecha_parts/mecha_equipment/weapon/ballistic/missile_rack/flashbang/clusterbang/limited category = "Exosuit Equipment" datum/design/mech_wormhole_gen @@ -800,7 +800,7 @@ datum/design/mech_wormhole_gen id = "mech_wormhole_gen" build_type = MECHFAB req_tech = list("bluespace" = 3, "magnets" = 2) - build_path = "/obj/item/mecha_parts/mecha_equipment/wormhole_generator" + build_path = /obj/item/mecha_parts/mecha_equipment/wormhole_generator category = "Exosuit Equipment" datum/design/mech_teleporter @@ -809,7 +809,7 @@ datum/design/mech_teleporter id = "mech_teleporter" build_type = MECHFAB req_tech = list("bluespace" = 10, "magnets" = 5) - build_path = "/obj/item/mecha_parts/mecha_equipment/teleporter" + build_path = /obj/item/mecha_parts/mecha_equipment/teleporter category = "Exosuit Equipment" datum/design/mech_rcd @@ -818,7 +818,7 @@ datum/design/mech_rcd id = "mech_rcd" build_type = MECHFAB req_tech = list("materials" = 4, "bluespace" = 3, "magnets" = 4, "powerstorage"=4, "engineering" = 4) - build_path = "/obj/item/mecha_parts/mecha_equipment/tool/rcd" + build_path = /obj/item/mecha_parts/mecha_equipment/tool/rcd category = "Exosuit Equipment" datum/design/mech_gravcatapult @@ -827,7 +827,7 @@ datum/design/mech_gravcatapult id = "mech_gravcatapult" build_type = MECHFAB req_tech = list("bluespace" = 2, "magnets" = 3, "engineering" = 3) - build_path = "/obj/item/mecha_parts/mecha_equipment/gravcatapult" + build_path = /obj/item/mecha_parts/mecha_equipment/gravcatapult category = "Exosuit Equipment" datum/design/mech_repair_droid @@ -836,7 +836,7 @@ datum/design/mech_repair_droid id = "mech_repair_droid" build_type = MECHFAB req_tech = list("magnets" = 3, "programming" = 3, "engineering" = 3) - build_path = "/obj/item/mecha_parts/mecha_equipment/repair_droid" + build_path = /obj/item/mecha_parts/mecha_equipment/repair_droid category = "Exosuit Equipment" datum/design/mech_phoron_generator @@ -845,7 +845,7 @@ datum/design/mech_phoron_generator id = "mech_phoron_generator" build_type = MECHFAB req_tech = list("phorontech" = 2, "powerstorage"= 2, "engineering" = 2) - build_path = "/obj/item/mecha_parts/mecha_equipment/phoron_generator" + build_path = /obj/item/mecha_parts/mecha_equipment/generator category = "Exosuit Equipment" datum/design/mech_energy_relay @@ -854,7 +854,7 @@ datum/design/mech_energy_relay id = "mech_energy_relay" build_type = MECHFAB req_tech = list("magnets" = 4, "powerstorage" = 3) - build_path = "/obj/item/mecha_parts/mecha_equipment/tesla_energy_relay" + build_path = /obj/item/mecha_parts/mecha_equipment/tesla_energy_relay category = "Exosuit Equipment" datum/design/mech_ccw_armor @@ -863,7 +863,7 @@ datum/design/mech_ccw_armor id = "mech_ccw_armor" build_type = MECHFAB req_tech = list("materials" = 5, "combat" = 4) - build_path = "/obj/item/mecha_parts/mecha_equipment/anticcw_armor_booster" + build_path = /obj/item/mecha_parts/mecha_equipment/anticcw_armor_booster category = "Exosuit Equipment" datum/design/mech_proj_armor @@ -872,7 +872,7 @@ datum/design/mech_proj_armor id = "mech_proj_armor" build_type = MECHFAB req_tech = list("materials" = 5, "combat" = 5, "engineering"=3) - build_path = "/obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster" + build_path = /obj/item/mecha_parts/mecha_equipment/antiproj_armor_booster category = "Exosuit Equipment" datum/design/mech_syringe_gun @@ -881,7 +881,7 @@ datum/design/mech_syringe_gun id = "mech_syringe_gun" build_type = MECHFAB req_tech = list("materials" = 3, "biotech"=4, "magnets"=4, "programming"=3) - build_path = "/obj/item/mecha_parts/mecha_equipment/tool/syringe_gun" + build_path = /obj/item/mecha_parts/mecha_equipment/tool/syringe_gun category = "Exosuit Equipment" datum/design/mech_diamond_drill @@ -890,7 +890,7 @@ datum/design/mech_diamond_drill id = "mech_diamond_drill" build_type = MECHFAB req_tech = list("materials" = 4, "engineering" = 3) - build_path = "/obj/item/mecha_parts/mecha_equipment/tool/drill/diamonddrill" + build_path = /obj/item/mecha_parts/mecha_equipment/tool/drill/diamonddrill category = "Exosuit Equipment" datum/design/mech_generator_nuclear @@ -899,7 +899,7 @@ datum/design/mech_generator_nuclear id = "mech_generator_nuclear" build_type = MECHFAB req_tech = list("powerstorage"= 3, "engineering" = 3, "materials" = 3) - build_path = "/obj/item/mecha_parts/mecha_equipment/generator/nuclear" + build_path = /obj/item/mecha_parts/mecha_equipment/generator/nuclear category = "Exosuit Equipment" @@ -913,7 +913,7 @@ datum/design/design_disk req_tech = list("programming" = 1) build_type = PROTOLATHE | AUTOLATHE materials = list("$metal" = 30, "$glass" = 10) - build_path = "/obj/item/weapon/disk/design_disk" + build_path = /obj/item/weapon/disk/design_disk datum/design/tech_disk name = "Technology Data Storage Disk" @@ -922,7 +922,7 @@ datum/design/tech_disk req_tech = list("programming" = 1) build_type = PROTOLATHE | AUTOLATHE materials = list("$metal" = 30, "$glass" = 10) - build_path = "/obj/item/weapon/disk/tech_disk" + build_path = /obj/item/weapon/disk/tech_disk //////////////////////////////////////// /////////////Stock Parts//////////////// @@ -935,7 +935,7 @@ datum/design/basic_capacitor req_tech = list("powerstorage" = 1) build_type = PROTOLATHE | AUTOLATHE materials = list("$metal" = 50, "$glass" = 50) - build_path = "/obj/item/weapon/stock_parts/capacitor" + build_path = /obj/item/weapon/stock_parts/capacitor datum/design/basic_sensor name = "Basic Sensor Module" @@ -944,7 +944,7 @@ datum/design/basic_sensor req_tech = list("magnets" = 1) build_type = PROTOLATHE | AUTOLATHE materials = list("$metal" = 50, "$glass" = 20) - build_path = "/obj/item/weapon/stock_parts/scanning_module" + build_path = /obj/item/weapon/stock_parts/scanning_module datum/design/micro_mani name = "Micro Manipulator" @@ -953,7 +953,7 @@ datum/design/micro_mani req_tech = list("materials" = 1, "programming" = 1) build_type = PROTOLATHE | AUTOLATHE materials = list("$metal" = 30) - build_path = "/obj/item/weapon/stock_parts/manipulator" + build_path = /obj/item/weapon/stock_parts/manipulator datum/design/basic_micro_laser name = "Basic Micro-Laser" @@ -962,7 +962,7 @@ datum/design/basic_micro_laser req_tech = list("magnets" = 1) build_type = PROTOLATHE | AUTOLATHE materials = list("$metal" = 10, "$glass" = 20) - build_path = "/obj/item/weapon/stock_parts/micro_laser" + build_path = /obj/item/weapon/stock_parts/micro_laser datum/design/basic_matter_bin name = "Basic Matter Bin" @@ -971,7 +971,7 @@ datum/design/basic_matter_bin req_tech = list("materials" = 1) build_type = PROTOLATHE | AUTOLATHE materials = list("$metal" = 80) - build_path = "/obj/item/weapon/stock_parts/matter_bin" + build_path = /obj/item/weapon/stock_parts/matter_bin datum/design/adv_capacitor name = "Advanced Capacitor" @@ -980,7 +980,7 @@ datum/design/adv_capacitor req_tech = list("powerstorage" = 3) build_type = PROTOLATHE materials = list("$metal" = 50, "$glass" = 50) - build_path = "/obj/item/weapon/stock_parts/capacitor/adv" + build_path = /obj/item/weapon/stock_parts/capacitor/adv datum/design/adv_sensor name = "Advanced Sensor Module" @@ -989,7 +989,7 @@ datum/design/adv_sensor req_tech = list("magnets" = 3) build_type = PROTOLATHE materials = list("$metal" = 50, "$glass" = 20) - build_path = "/obj/item/weapon/stock_parts/scanning_module/adv" + build_path = /obj/item/weapon/stock_parts/scanning_module/adv datum/design/nano_mani name = "Nano Manipulator" @@ -998,7 +998,7 @@ datum/design/nano_mani req_tech = list("materials" = 3, "programming" = 2) build_type = PROTOLATHE materials = list("$metal" = 30) - build_path = "/obj/item/weapon/stock_parts/manipulator/nano" + build_path = /obj/item/weapon/stock_parts/manipulator/nano datum/design/high_micro_laser name = "High-Power Micro-Laser" @@ -1007,7 +1007,7 @@ datum/design/high_micro_laser req_tech = list("magnets" = 3) build_type = PROTOLATHE materials = list("$metal" = 10, "$glass" = 20) - build_path = "/obj/item/weapon/stock_parts/micro_laser/high" + build_path = /obj/item/weapon/stock_parts/micro_laser/high datum/design/adv_matter_bin name = "Advanced Matter Bin" @@ -1016,7 +1016,7 @@ datum/design/adv_matter_bin req_tech = list("materials" = 3) build_type = PROTOLATHE materials = list("$metal" = 80) - build_path = "/obj/item/weapon/stock_parts/matter_bin/adv" + build_path = /obj/item/weapon/stock_parts/matter_bin/adv datum/design/super_capacitor name = "Super Capacitor" @@ -1026,7 +1026,7 @@ datum/design/super_capacitor build_type = PROTOLATHE reliability_base = 71 materials = list("$metal" = 50, "$glass" = 50, "$gold" = 20) - build_path = "/obj/item/weapon/stock_parts/capacitor/super" + build_path = /obj/item/weapon/stock_parts/capacitor/super datum/design/phasic_sensor name = "Phasic Sensor Module" @@ -1036,7 +1036,7 @@ datum/design/phasic_sensor build_type = PROTOLATHE materials = list("$metal" = 50, "$glass" = 20, "$silver" = 10) reliability_base = 72 - build_path = "/obj/item/weapon/stock_parts/scanning_module/phasic" + build_path = /obj/item/weapon/stock_parts/scanning_module/phasic datum/design/pico_mani name = "Pico Manipulator" @@ -1046,7 +1046,7 @@ datum/design/pico_mani build_type = PROTOLATHE materials = list("$metal" = 30) reliability_base = 73 - build_path = "/obj/item/weapon/stock_parts/manipulator/pico" + build_path = /obj/item/weapon/stock_parts/manipulator/pico datum/design/ultra_micro_laser name = "Ultra-High-Power Micro-Laser" @@ -1056,7 +1056,7 @@ datum/design/ultra_micro_laser build_type = PROTOLATHE materials = list("$metal" = 10, "$glass" = 20, "$uranium" = 10) reliability_base = 70 - build_path = "/obj/item/weapon/stock_parts/micro_laser/ultra" + build_path = /obj/item/weapon/stock_parts/micro_laser/ultra datum/design/super_matter_bin name = "Super Matter Bin" @@ -1066,7 +1066,7 @@ datum/design/super_matter_bin build_type = PROTOLATHE materials = list("$metal" = 80) reliability_base = 75 - build_path = "/obj/item/weapon/stock_parts/matter_bin/super" + build_path = /obj/item/weapon/stock_parts/matter_bin/super @@ -1077,7 +1077,7 @@ datum/design/subspace_ansible req_tech = list("programming" = 3, "magnets" = 4, "materials" = 4, "bluespace" = 2) build_type = PROTOLATHE materials = list("$metal" = 80, "$silver" = 20) - build_path = "/obj/item/weapon/stock_parts/subspace/ansible" + build_path = /obj/item/weapon/stock_parts/subspace/ansible datum/design/hyperwave_filter name = "Hyperwave Filter" @@ -1086,7 +1086,7 @@ datum/design/hyperwave_filter req_tech = list("programming" = 3, "magnets" = 3) build_type = PROTOLATHE materials = list("$metal" = 40, "$silver" = 10) - build_path = "/obj/item/weapon/stock_parts/subspace/filter" + build_path = /obj/item/weapon/stock_parts/subspace/filter datum/design/subspace_amplifier name = "Subspace Amplifier" @@ -1095,7 +1095,7 @@ datum/design/subspace_amplifier req_tech = list("programming" = 3, "magnets" = 4, "materials" = 4, "bluespace" = 2) build_type = PROTOLATHE materials = list("$metal" = 10, "$gold" = 30, "$uranium" = 15) - build_path = "/obj/item/weapon/stock_parts/subspace/amplifier" + build_path = /obj/item/weapon/stock_parts/subspace/amplifier datum/design/subspace_treatment name = "Subspace Treatment Disk" @@ -1104,7 +1104,7 @@ datum/design/subspace_treatment req_tech = list("programming" = 3, "magnets" = 2, "materials" = 4, "bluespace" = 2) build_type = PROTOLATHE materials = list("$metal" = 10, "$silver" = 20) - build_path = "/obj/item/weapon/stock_parts/subspace/treatment" + build_path = /obj/item/weapon/stock_parts/subspace/treatment datum/design/subspace_analyzer name = "Subspace Analyzer" @@ -1113,7 +1113,7 @@ datum/design/subspace_analyzer req_tech = list("programming" = 3, "magnets" = 4, "materials" = 4, "bluespace" = 2) build_type = PROTOLATHE materials = list("$metal" = 10, "$gold" = 15) - build_path = "/obj/item/weapon/stock_parts/subspace/analyzer" + build_path = /obj/item/weapon/stock_parts/subspace/analyzer datum/design/subspace_crystal name = "Ansible Crystal" @@ -1122,7 +1122,7 @@ datum/design/subspace_crystal req_tech = list("magnets" = 4, "materials" = 4, "bluespace" = 2) build_type = PROTOLATHE materials = list("$glass" = 1000, "$silver" = 20, "$gold" = 20) - build_path = "/obj/item/weapon/stock_parts/subspace/crystal" + build_path = /obj/item/weapon/stock_parts/subspace/crystal datum/design/subspace_transmitter name = "Subspace Transmitter" @@ -1131,7 +1131,7 @@ datum/design/subspace_transmitter req_tech = list("magnets" = 5, "materials" = 5, "bluespace" = 3) build_type = PROTOLATHE materials = list("$glass" = 100, "$silver" = 10, "$uranium" = 15) - build_path = "/obj/item/weapon/stock_parts/subspace/transmitter" + build_path = /obj/item/weapon/stock_parts/subspace/transmitter //////////////////////////////////////// //////////////////Power///////////////// @@ -1144,7 +1144,7 @@ datum/design/basic_cell req_tech = list("powerstorage" = 1) build_type = PROTOLATHE | AUTOLATHE |MECHFAB materials = list("$metal" = 700, "$glass" = 50) - build_path = "/obj/item/weapon/cell" + build_path = /obj/item/weapon/cell category = "Misc" datum/design/high_cell @@ -1154,7 +1154,7 @@ datum/design/high_cell req_tech = list("powerstorage" = 2) build_type = PROTOLATHE | AUTOLATHE | MECHFAB materials = list("$metal" = 700, "$glass" = 60) - build_path = "/obj/item/weapon/cell/high" + build_path = /obj/item/weapon/cell/high category = "Misc" datum/design/super_cell @@ -1165,7 +1165,7 @@ datum/design/super_cell reliability_base = 75 build_type = PROTOLATHE | MECHFAB materials = list("$metal" = 700, "$glass" = 70) - build_path = "/obj/item/weapon/cell/super" + build_path = /obj/item/weapon/cell/super category = "Misc" datum/design/hyper_cell @@ -1176,7 +1176,7 @@ datum/design/hyper_cell reliability_base = 70 build_type = PROTOLATHE | MECHFAB materials = list("$metal" = 400, "$gold" = 150, "$silver" = 150, "$glass" = 70) - build_path = "/obj/item/weapon/cell/hyper" + build_path = /obj/item/weapon/cell/hyper category = "Misc" datum/design/light_replacer @@ -1186,7 +1186,7 @@ datum/design/light_replacer req_tech = list("magnets" = 3, "materials" = 4) build_type = PROTOLATHE materials = list("$metal" = 1500, "$silver" = 150, "$glass" = 3000) - build_path = "/obj/item/device/lightreplacer" + build_path = /obj/item/device/lightreplacer //////////////////////////////////////// //////////////MISC Boards/////////////// @@ -1199,7 +1199,7 @@ datum/design/destructive_analyzer req_tech = list("programming" = 2, "magnets" = 2, "engineering" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/destructive_analyzer" + build_path = /obj/item/weapon/circuitboard/destructive_analyzer datum/design/protolathe name = "Protolathe Board" @@ -1208,7 +1208,7 @@ datum/design/protolathe req_tech = list("programming" = 2, "engineering" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/protolathe" + build_path = /obj/item/weapon/circuitboard/protolathe datum/design/circuit_imprinter name = "Circuit Imprinter Board" @@ -1217,7 +1217,7 @@ datum/design/circuit_imprinter req_tech = list("programming" = 2, "engineering" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/circuit_imprinter" + build_path = /obj/item/weapon/circuitboard/circuit_imprinter datum/design/autolathe name = "Autolathe Board" @@ -1226,7 +1226,7 @@ datum/design/autolathe req_tech = list("programming" = 2, "engineering" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/autolathe" + build_path = /obj/item/weapon/circuitboard/autolathe datum/design/rdservercontrol name = "R&D Server Control Console Board" @@ -1235,7 +1235,7 @@ datum/design/rdservercontrol req_tech = list("programming" = 3) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/rdservercontrol" + build_path = /obj/item/weapon/circuitboard/rdservercontrol datum/design/rdserver name = "R&D Server Board" @@ -1244,7 +1244,7 @@ datum/design/rdserver req_tech = list("programming" = 3) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/rdserver" + build_path = /obj/item/weapon/circuitboard/rdserver datum/design/mechfab name = "Exosuit Fabricator Board" @@ -1253,7 +1253,7 @@ datum/design/mechfab req_tech = list("programming" = 3, "engineering" = 3) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/mechfab" + build_path = /obj/item/weapon/circuitboard/mechfab datum/design/gas_heater name = "Gas Heating System Board" @@ -1262,7 +1262,7 @@ datum/design/gas_heater req_tech = list("powerstorage" = 2, "engineering" = 1) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/unary_atmos/heater" + build_path = /obj/item/weapon/circuitboard/unary_atmos/heater datum/design/gas_cooler name = "Gas Cooling System Board" @@ -1271,7 +1271,7 @@ datum/design/gas_cooler req_tech = list("magnets" = 2, "engineering" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/unary_atmos/cooler" + build_path = /obj/item/weapon/circuitboard/unary_atmos/cooler ///////////////////////////////////////// ////////////Power Stuff////////////////// @@ -1285,7 +1285,7 @@ datum/design/pacman build_type = IMPRINTER reliability_base = 79 materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/pacman" + build_path = /obj/item/weapon/circuitboard/pacman datum/design/superpacman name = "SUPERPACMAN-type Generator Board" @@ -1295,7 +1295,7 @@ datum/design/superpacman build_type = IMPRINTER reliability_base = 76 materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/pacman/super" + build_path = /obj/item/weapon/circuitboard/pacman/super datum/design/mrspacman name = "MRSPACMAN-type Generator Board" @@ -1305,7 +1305,7 @@ datum/design/mrspacman build_type = IMPRINTER reliability_base = 74 materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/pacman/mrs" + build_path = /obj/item/weapon/circuitboard/pacman/mrs datum/design/batteryrack name = "Cell rack PSU Board" @@ -1314,7 +1314,7 @@ datum/design/batteryrack req_tech = list("powerstorage" = 3, "engineering" = 2) build_type = IMPRINTER materials = list("$glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/batteryrack" + build_path = /obj/item/weapon/circuitboard/batteryrack ///////////////////////////////////////// @@ -1329,7 +1329,7 @@ datum/design/mass_spectrometer build_type = PROTOLATHE materials = list("$metal" = 30, "$glass" = 20) reliability_base = 76 - build_path = "/obj/item/device/mass_spectrometer" + build_path = /obj/item/device/mass_spectrometer datum/design/adv_mass_spectrometer name = "Advanced Mass-Spectrometer" @@ -1339,7 +1339,7 @@ datum/design/adv_mass_spectrometer build_type = PROTOLATHE materials = list("$metal" = 30, "$glass" = 20) reliability_base = 74 - build_path = "/obj/item/device/mass_spectrometer/adv" + build_path = /obj/item/device/mass_spectrometer/adv datum/design/reagent_scanner name = "Reagent Scanner" @@ -1349,7 +1349,7 @@ datum/design/reagent_scanner build_type = PROTOLATHE materials = list("$metal" = 30, "$glass" = 20) reliability_base = 76 - build_path = "/obj/item/device/reagent_scanner" + build_path = /obj/item/device/reagent_scanner datum/design/adv_reagent_scanner name = "Advanced Reagent Scanner" @@ -1359,7 +1359,7 @@ datum/design/adv_reagent_scanner build_type = PROTOLATHE materials = list("$metal" = 30, "$glass" = 20) reliability_base = 74 - build_path = "/obj/item/device/reagent_scanner/adv" + build_path = /obj/item/device/reagent_scanner/adv datum/design/mmi name = "Man-Machine Interface" @@ -1369,7 +1369,7 @@ datum/design/mmi build_type = PROTOLATHE | MECHFAB materials = list("$metal" = 1000, "$glass" = 500) reliability_base = 76 - build_path = "/obj/item/device/mmi" + build_path = /obj/item/device/mmi category = "Misc" datum/design/mmi_radio @@ -1380,7 +1380,7 @@ datum/design/mmi_radio build_type = PROTOLATHE | MECHFAB materials = list("$metal" = 1200, "$glass" = 500) reliability_base = 74 - build_path = "/obj/item/device/mmi/radio_enabled" + build_path = /obj/item/device/mmi/radio_enabled category = "Misc" datum/design/synthetic_flash @@ -1391,7 +1391,7 @@ datum/design/synthetic_flash build_type = MECHFAB materials = list("$metal" = 750, "$glass" = 750) reliability_base = 76 - build_path = "/obj/item/device/flash/synthetic" + build_path = /obj/item/device/flash/synthetic category = "Misc" datum/design/nanopaste @@ -1401,7 +1401,7 @@ datum/design/nanopaste req_tech = list("materials" = 4, "engineering" = 3) build_type = PROTOLATHE materials = list("$metal" = 7000, "$glass" = 7000) - build_path = "/obj/item/stack/nanopaste" + build_path = /obj/item/stack/nanopaste /* // Removal of loyalty implants. Can't think of a way to add this to the config option. datum/design/implant_loyal @@ -1411,7 +1411,7 @@ datum/design/implant_loyal req_tech = list("materials" = 2, "biotech" = 3) build_type = PROTOLATHE materials = list("$metal" = 7000, "$glass" = 7000) - build_path = "/obj/item/weapon/implant/loyalty" + build_path = /obj/item/weapon/implant/loyalty" */ datum/design/implant_chem @@ -1421,7 +1421,7 @@ datum/design/implant_chem req_tech = list("materials" = 2, "biotech" = 3) build_type = PROTOLATHE materials = list("$metal" = 50, "$glass" = 50) - build_path = "/obj/item/weapon/implant/chem" + build_path = /obj/item/weapon/implant/chem datum/design/implant_free name = "freedom implant" @@ -1430,7 +1430,7 @@ datum/design/implant_free req_tech = list("syndicate" = 2, "biotech" = 3) build_type = PROTOLATHE materials = list("$metal" = 50, "$glass" = 50) - build_path = "/obj/item/weapon/implant/freedom" + build_path = /obj/item/weapon/implant/freedom datum/design/chameleon name = "Chameleon Kit" @@ -1439,7 +1439,7 @@ datum/design/chameleon req_tech = list("syndicate" = 2) build_type = PROTOLATHE materials = list("$metal" = 500) - build_path = "/obj/item/weapon/storage/box/syndie_kit/chameleon" + build_path = /obj/item/weapon/storage/box/syndie_kit/chameleon datum/design/bluespacebeaker @@ -1450,7 +1450,7 @@ datum/design/bluespacebeaker build_type = PROTOLATHE materials = list("$metal" = 3000, "$phoron" = 3000, "$diamond" = 500) reliability_base = 76 - build_path = "/obj/item/weapon/reagent_containers/glass/beaker/bluespace" + build_path = /obj/item/weapon/reagent_containers/glass/beaker/bluespace datum/design/noreactbeaker name = "cryostasis beaker" @@ -1460,7 +1460,7 @@ datum/design/noreactbeaker build_type = PROTOLATHE materials = list("$metal" = 3000) reliability_base = 76 - build_path = "/obj/item/weapon/reagent_containers/glass/beaker/noreact" + build_path = /obj/item/weapon/reagent_containers/glass/beaker/noreact category = "Misc" datum/design/scalpel_laser1 @@ -1470,7 +1470,7 @@ datum/design/scalpel_laser1 req_tech = list("biotech" = 2, "materials" = 2, "magnets" = 2) build_type = PROTOLATHE materials = list("$metal" = 12500, "$glass" = 7500) - build_path = "/obj/item/weapon/scalpel/laser1" + build_path = /obj/item/weapon/scalpel/laser1 datum/design/scalpel_laser2 name = "Improved Laser Scalpel" @@ -1479,7 +1479,7 @@ datum/design/scalpel_laser2 req_tech = list("biotech" = 3, "materials" = 4, "magnets" = 4) build_type = PROTOLATHE materials = list("$metal" = 12500, "$glass" = 7500, "$silver" = 2500) - build_path = "/obj/item/weapon/scalpel/laser2" + build_path = /obj/item/weapon/scalpel/laser2 datum/design/scalpel_laser3 name = "Advanced Laser Scalpel" @@ -1488,7 +1488,7 @@ datum/design/scalpel_laser3 req_tech = list("biotech" = 4, "materials" = 6, "magnets" = 5) build_type = PROTOLATHE materials = list("$metal" = 12500, "$glass" = 7500, "$silver" = 2000, "$gold" = 1500) - build_path = "/obj/item/weapon/scalpel/laser3" + build_path = /obj/item/weapon/scalpel/laser3 datum/design/scalpel_manager name = "Incision Management System" @@ -1497,7 +1497,7 @@ datum/design/scalpel_manager req_tech = list("biotech" = 4, "materials" = 7, "magnets" = 5, "programming" = 4) build_type = PROTOLATHE materials = list ("$metal" = 12500, "$glass" = 7500, "$silver" = 1500, "$gold" = 1500, "$diamond" = 750) - build_path = "/obj/item/weapon/scalpel/manager" + build_path = /obj/item/weapon/scalpel/manager ///////////////////////////////////////// /////////////////Weapons///////////////// @@ -1511,7 +1511,7 @@ datum/design/nuclear_gun build_type = PROTOLATHE materials = list("$metal" = 5000, "$glass" = 1000, "$uranium" = 500) reliability_base = 76 - build_path = "/obj/item/weapon/gun/energy/gun/nuclear" + build_path = /obj/item/weapon/gun/energy/gun/nuclear locked = 1 datum/design/stunrevolver @@ -1521,7 +1521,7 @@ datum/design/stunrevolver req_tech = list("combat" = 3, "materials" = 3, "powerstorage" = 2) build_type = PROTOLATHE materials = list("$metal" = 4000) - build_path = "/obj/item/weapon/gun/energy/stunrevolver" + build_path = /obj/item/weapon/gun/energy/stunrevolver locked = 1 datum/design/lasercannon @@ -1531,7 +1531,7 @@ datum/design/lasercannon req_tech = list("combat" = 4, "materials" = 3, "powerstorage" = 3) build_type = PROTOLATHE materials = list("$metal" = 10000, "$glass" = 1000, "$diamond" = 2000) - build_path = "/obj/item/weapon/gun/energy/lasercannon" + build_path = /obj/item/weapon/gun/energy/lasercannon locked = 1 datum/design/decloner @@ -1541,7 +1541,7 @@ datum/design/decloner req_tech = list("combat" = 8, "materials" = 7, "biotech" = 5, "powerstorage" = 6) build_type = PROTOLATHE materials = list("$gold" = 5000,"$uranium" = 10000, "mutagen" = 40) - build_path = "/obj/item/weapon/gun/energy/decloner" + build_path = /obj/item/weapon/gun/energy/decloner locked = 1 datum/design/chemsprayer @@ -1552,7 +1552,7 @@ datum/design/chemsprayer build_type = PROTOLATHE materials = list("$metal" = 5000, "$glass" = 1000) reliability_base = 100 - build_path = "/obj/item/weapon/reagent_containers/spray/chemsprayer" + build_path = /obj/item/weapon/reagent_containers/spray/chemsprayer datum/design/rapidsyringe name = "Rapid Syringe Gun" @@ -1561,7 +1561,7 @@ datum/design/rapidsyringe req_tech = list("combat" = 3, "materials" = 3, "engineering" = 3, "biotech" = 2) build_type = PROTOLATHE materials = list("$metal" = 5000, "$glass" = 1000) - build_path = "/obj/item/weapon/gun/syringe/rapidsyringe" + build_path = /obj/item/weapon/gun/syringe/rapidsyringe /* datum/design/largecrossbow name = "Energy Crossbow" @@ -1570,7 +1570,7 @@ datum/design/largecrossbow req_tech = list("combat" = 4, "materials" = 5, "engineering" = 3, "biotech" = 4, "syndicate" = 3) build_type = PROTOLATHE materials = list("$metal" = 5000, "$glass" = 1000, "$uranium" = 1000, "$silver" = 1000) - build_path = "/obj/item/weapon/gun/energy/crossbow/largecrossbow" + build_path = /obj/item/weapon/gun/energy/crossbow/largecrossbow" */ datum/design/temp_gun name = "Temperature Gun" @@ -1579,7 +1579,7 @@ datum/design/temp_gun req_tech = list("combat" = 3, "materials" = 4, "powerstorage" = 3, "magnets" = 2) build_type = PROTOLATHE materials = list("$metal" = 5000, "$glass" = 500, "$silver" = 3000) - build_path = "/obj/item/weapon/gun/energy/temperature" + build_path = /obj/item/weapon/gun/energy/temperature locked = 1 datum/design/flora_gun @@ -1589,7 +1589,7 @@ datum/design/flora_gun req_tech = list("materials" = 2, "biotech" = 3, "powerstorage" = 3) build_type = PROTOLATHE materials = list("$metal" = 2000, "$glass" = 500, "$uranium" = 500) - build_path = "/obj/item/weapon/gun/energy/floragun" + build_path = /obj/item/weapon/gun/energy/floragun datum/design/large_grenade name = "Large Grenade" @@ -1599,7 +1599,7 @@ datum/design/large_grenade build_type = PROTOLATHE materials = list("$metal" = 3000) reliability_base = 79 - build_path = "/obj/item/weapon/grenade/chem_grenade/large" + build_path = /obj/item/weapon/grenade/chem_grenade/large datum/design/smg name = "Submachine Gun" @@ -1608,7 +1608,7 @@ datum/design/smg req_tech = list("combat" = 4, "materials" = 3) build_type = PROTOLATHE materials = list("$metal" = 8000, "$silver" = 2000, "$diamond" = 1000) - build_path = "/obj/item/weapon/gun/projectile/automatic" + build_path = /obj/item/weapon/gun/projectile/automatic locked = 1 datum/design/ammo_9mm @@ -1618,7 +1618,7 @@ datum/design/ammo_9mm req_tech = list("combat" = 4, "materials" = 3) build_type = PROTOLATHE materials = list("$metal" = 3750, "$silver" = 100) - build_path = "/obj/item/ammo_magazine/c9mm" + build_path = /obj/item/ammo_magazine/c9mm datum/design/stunshell name = "Stun Shell" @@ -1627,7 +1627,7 @@ datum/design/stunshell req_tech = list("combat" = 3, "materials" = 3) build_type = PROTOLATHE materials = list("$metal" = 4000) - build_path = "/obj/item/ammo_casing/shotgun/stunshell" + build_path = /obj/item/ammo_casing/shotgun/stunshell datum/design/phoronpistol name = "phoron pistol" @@ -1636,7 +1636,7 @@ datum/design/phoronpistol req_tech = list("combat" = 5, "phorontech" = 4) build_type = PROTOLATHE materials = list("$metal" = 5000, "$glass" = 1000, "$phoron" = 3000) - build_path = "/obj/item/weapon/gun/energy/toxgun" + build_path = /obj/item/weapon/gun/energy/toxgun ///////////////////////////////////////// /////////////////Mining////////////////// ///////////////////////////////////////// @@ -1648,7 +1648,7 @@ datum/design/jackhammer req_tech = list("materials" = 3, "powerstorage" = 2, "engineering" = 2) build_type = PROTOLATHE materials = list("$metal" = 2000, "$glass" = 500, "$silver" = 500) - build_path = "/obj/item/weapon/pickaxe/jackhammer" + build_path = /obj/item/weapon/pickaxe/jackhammer datum/design/drill name = "Mining Drill" @@ -1657,7 +1657,7 @@ datum/design/drill req_tech = list("materials" = 2, "powerstorage" = 3, "engineering" = 2) build_type = PROTOLATHE materials = list("$metal" = 6000, "$glass" = 1000) //expensive, but no need for miners. - build_path = "/obj/item/weapon/pickaxe/drill" + build_path = /obj/item/weapon/pickaxe/drill datum/design/plasmacutter name = "Plasma Cutter" @@ -1667,7 +1667,7 @@ datum/design/plasmacutter build_type = PROTOLATHE materials = list("$metal" = 1500, "$glass" = 500, "$gold" = 500, "$phoron" = 500) reliability_base = 79 - build_path = "/obj/item/weapon/pickaxe/plasmacutter" + build_path = /obj/item/weapon/pickaxe/plasmacutter datum/design/pick_diamond name = "Diamond Pickaxe" @@ -1676,7 +1676,7 @@ datum/design/pick_diamond req_tech = list("materials" = 6) build_type = PROTOLATHE materials = list("$diamond" = 3000) - build_path = "/obj/item/weapon/pickaxe/diamond" + build_path = /obj/item/weapon/pickaxe/diamond datum/design/drill_diamond name = "Diamond Mining Drill" @@ -1686,7 +1686,7 @@ datum/design/drill_diamond build_type = PROTOLATHE materials = list("$metal" = 3000, "$glass" = 1000, "$diamond" = 3750) //Yes, a whole diamond is needed. reliability_base = 79 - build_path = "/obj/item/weapon/pickaxe/diamonddrill" + build_path = /obj/item/weapon/pickaxe/diamonddrill datum/design/mesons name = "Optical Meson Scanners" @@ -1695,7 +1695,7 @@ datum/design/mesons req_tech = list("magnets" = 2, "engineering" = 2) build_type = PROTOLATHE materials = list("$metal" = 50, "$glass" = 50) - build_path = "/obj/item/clothing/glasses/meson" + build_path = /obj/item/clothing/glasses/meson ///////////////////////////////////////// //////////////Blue Space///////////////// @@ -1708,7 +1708,7 @@ datum/design/beacon req_tech = list("bluespace" = 1) build_type = PROTOLATHE materials = list ("$metal" = 20, "$glass" = 10) - build_path = "/obj/item/device/radio/beacon" + build_path = /obj/item/device/radio/beacon datum/design/bag_holding name = "Bag of Holding" @@ -1718,7 +1718,7 @@ datum/design/bag_holding build_type = PROTOLATHE materials = list("$gold" = 3000, "$diamond" = 1500, "$uranium" = 250) reliability_base = 80 - build_path = "/obj/item/weapon/storage/backpack/holding" + build_path = /obj/item/weapon/storage/backpack/holding /* datum/design/bluespace_crystal @@ -1729,7 +1729,7 @@ datum/design/bluespace_crystal build_type = PROTOLATHE materials = list("$gold" = 1500, "$diamond" = 3000, "$phoron" = 1500) reliability_base = 100 - build_path = "/obj/item/bluespace_crystal/artificial" + build_path = /obj/item/bluespace_crystal/artificial" */ ///////////////////////////////////////// @@ -1743,7 +1743,7 @@ datum/design/health_hud req_tech = list("biotech" = 2, "magnets" = 3) build_type = PROTOLATHE materials = list("$metal" = 50, "$glass" = 50) - build_path = "/obj/item/clothing/glasses/hud/health" + build_path = /obj/item/clothing/glasses/hud/health datum/design/security_hud name = "Security HUD" @@ -1752,7 +1752,7 @@ datum/design/security_hud req_tech = list("magnets" = 3, "combat" = 2) build_type = PROTOLATHE materials = list("$metal" = 50, "$glass" = 50) - build_path = "/obj/item/clothing/glasses/hud/security" + build_path = /obj/item/clothing/glasses/hud/security locked = 1 ///////////////////////////////////////// @@ -1766,7 +1766,7 @@ datum/design/security_hud build_type = PROTOLATHE req_tech = list("materials" = 1) materials = list("$gold" = 3000, "iron" = 15, "copper" = 10, "$silver" = 2500) - build_path = "/obj/item/weapon/banhammer" */ + build_path = /obj/item/weapon/banhammer" */ //////////////////////////////////////// //Disks for transporting design datums// @@ -1796,7 +1796,7 @@ datum/design/borg_syndicate_module id = "borg_syndicate_module" build_type = MECHFAB req_tech = list("combat" = 4, "syndicate" = 3) - build_path = "/obj/item/borg/upgrade/syndicate" + build_path = /obj/item/borg/upgrade/syndicate category = "Cyborg Upgrade Modules" ///////////////////////////////////////// @@ -1809,7 +1809,7 @@ datum/design/binaryencrypt req_tech = list("syndicate" = 2) build_type = PROTOLATHE materials = list("$metal" = 300, "$glass" = 300) - build_path = "/obj/item/device/encryptionkey/binary" + build_path = /obj/item/device/encryptionkey/binary datum/design/pda name = "PDA" desc = "A portable microcomputer by Thinktronic Systems, LTD. Functionality determined by a preprogrammed ROM cartridge." @@ -1817,7 +1817,7 @@ datum/design/pda req_tech = list("engineering" = 2, "powerstorage" = 3) build_type = PROTOLATHE materials = list("$metal" = 50, "$glass" = 50) - build_path = "/obj/item/device/pda" + build_path = /obj/item/device/pda datum/design/cart_basic name = "Generic Cartridge" desc = "A data cartridge for portable microcomputers." @@ -1825,7 +1825,7 @@ datum/design/cart_basic req_tech = list("engineering" = 2, "powerstorage" = 3) build_type = PROTOLATHE materials = list("$metal" = 50, "$glass" = 50) - build_path = "/obj/item/weapon/cartridge" + build_path = /obj/item/weapon/cartridge datum/design/cart_engineering name = "Power-ON Cartridge" desc = "A data cartridge for portable microcomputers." @@ -1833,7 +1833,7 @@ datum/design/cart_engineering req_tech = list("engineering" = 2, "powerstorage" = 3) build_type = PROTOLATHE materials = list("$metal" = 50, "$glass" = 50) - build_path = "/obj/item/weapon/cartridge/engineering" + build_path = /obj/item/weapon/cartridge/engineering datum/design/cart_atmos name = "BreatheDeep Cartridge" desc = "A data cartridge for portable microcomputers." @@ -1841,7 +1841,7 @@ datum/design/cart_atmos req_tech = list("engineering" = 2, "powerstorage" = 3) build_type = PROTOLATHE materials = list("$metal" = 50, "$glass" = 50) - build_path = "/obj/item/weapon/cartridge/atmos" + build_path = /obj/item/weapon/cartridge/atmos datum/design/cart_medical name = "Med-U Cartridge" desc = "A data cartridge for portable microcomputers." @@ -1849,7 +1849,7 @@ datum/design/cart_medical req_tech = list("engineering" = 2, "powerstorage" = 3) build_type = PROTOLATHE materials = list("$metal" = 50, "$glass" = 50) - build_path = "/obj/item/weapon/cartridge/medical" + build_path = /obj/item/weapon/cartridge/medical datum/design/cart_chemistry name = "ChemWhiz Cartridge" desc = "A data cartridge for portable microcomputers." @@ -1857,7 +1857,7 @@ datum/design/cart_chemistry req_tech = list("engineering" = 2, "powerstorage" = 3) build_type = PROTOLATHE materials = list("$metal" = 50, "$glass" = 50) - build_path = "/obj/item/weapon/cartridge/chemistry" + build_path = /obj/item/weapon/cartridge/chemistry datum/design/cart_security name = "R.O.B.U.S.T. Cartridge" desc = "A data cartridge for portable microcomputers." @@ -1865,7 +1865,7 @@ datum/design/cart_security req_tech = list("engineering" = 2, "powerstorage" = 3) build_type = PROTOLATHE materials = list("$metal" = 50, "$glass" = 50) - build_path = "/obj/item/weapon/cartridge/security" + build_path = /obj/item/weapon/cartridge/security locked = 1 datum/design/cart_janitor name = "CustodiPRO Cartridge" @@ -1874,7 +1874,7 @@ datum/design/cart_janitor req_tech = list("engineering" = 2, "powerstorage" = 3) build_type = PROTOLATHE materials = list("$metal" = 50, "$glass" = 50) - build_path = "/obj/item/weapon/cartridge/janitor" + build_path = /obj/item/weapon/cartridge/janitor /* datum/design/cart_clown @@ -1884,7 +1884,7 @@ datum/design/cart_clown req_tech = list("engineering" = 2, "powerstorage" = 3) build_type = PROTOLATHE materials = list("$metal" = 50, "$glass" = 50) - build_path = "/obj/item/weapon/cartridge/clown" + build_path = /obj/item/weapon/cartridge/clown" datum/design/cart_mime name = "Gestur-O 1000 Cartridge" desc = "A data cartridge for portable microcomputers." @@ -1892,7 +1892,7 @@ datum/design/cart_mime req_tech = list("engineering" = 2, "powerstorage" = 3) build_type = PROTOLATHE materials = list("$metal" = 50, "$glass" = 50) - build_path = "/obj/item/weapon/cartridge/mime" + build_path = /obj/item/weapon/cartridge/mime" */ datum/design/cart_science @@ -1902,7 +1902,7 @@ datum/design/cart_science req_tech = list("engineering" = 2, "powerstorage" = 3) build_type = PROTOLATHE materials = list("$metal" = 50, "$glass" = 50) - build_path = "/obj/item/weapon/cartridge/science" + build_path = /obj/item/weapon/cartridge/signal/science datum/design/cart_quartermaster name = "Space Parts & Space Vendors Cartridge" desc = "A data cartridge for portable microcomputers." @@ -1910,7 +1910,7 @@ datum/design/cart_quartermaster req_tech = list("engineering" = 2, "powerstorage" = 3) build_type = PROTOLATHE materials = list("$metal" = 50, "$glass" = 50) - build_path = "/obj/item/weapon/cartridge/quartermaster" + build_path = /obj/item/weapon/cartridge/quartermaster locked = 1 datum/design/cart_hop name = "Human Resources 9001 Cartridge" @@ -1919,7 +1919,7 @@ datum/design/cart_hop req_tech = list("engineering" = 2, "powerstorage" = 3) build_type = PROTOLATHE materials = list("$metal" = 50, "$glass" = 50) - build_path = "/obj/item/weapon/cartridge/hop" + build_path = /obj/item/weapon/cartridge/hop locked = 1 datum/design/cart_hos name = "R.O.B.U.S.T. DELUXE Cartridge" @@ -1928,7 +1928,7 @@ datum/design/cart_hos req_tech = list("engineering" = 2, "powerstorage" = 3) build_type = PROTOLATHE materials = list("$metal" = 50, "$glass" = 50) - build_path = "/obj/item/weapon/cartridge/hos" + build_path = /obj/item/weapon/cartridge/hos locked = 1 datum/design/cart_ce name = "Power-On DELUXE Cartridge" @@ -1937,7 +1937,7 @@ datum/design/cart_ce req_tech = list("engineering" = 2, "powerstorage" = 3) build_type = PROTOLATHE materials = list("$metal" = 50, "$glass" = 50) - build_path = "/obj/item/weapon/cartridge/ce" + build_path = /obj/item/weapon/cartridge/ce locked = 1 datum/design/cart_cmo name = "Med-U DELUXE Cartridge" @@ -1946,7 +1946,7 @@ datum/design/cart_cmo req_tech = list("engineering" = 2, "powerstorage" = 3) build_type = PROTOLATHE materials = list("$metal" = 50, "$glass" = 50) - build_path = "/obj/item/weapon/cartridge/cmo" + build_path = /obj/item/weapon/cartridge/cmo locked = 1 datum/design/cart_rd name = "Signal Ace DELUXE Cartridge" @@ -1955,7 +1955,7 @@ datum/design/cart_rd req_tech = list("engineering" = 2, "powerstorage" = 3) build_type = PROTOLATHE materials = list("$metal" = 50, "$glass" = 50) - build_path = "/obj/item/weapon/cartridge/rd" + build_path = /obj/item/weapon/cartridge/rd locked = 1 datum/design/cart_captain name = "Value-PAK Cartridge" @@ -1964,5 +1964,5 @@ datum/design/cart_captain req_tech = list("engineering" = 2, "powerstorage" = 3) build_type = PROTOLATHE materials = list("$metal" = 50, "$glass" = 50) - build_path = "/obj/item/weapon/cartridge/captain" + build_path = /obj/item/weapon/cartridge/captain locked = 1 From c1393fb3a22eaebd17867957577d93aaa40336fe Mon Sep 17 00:00:00 2001 From: PsiOmega Date: Thu, 13 Nov 2014 11:42:26 +0100 Subject: [PATCH 15/16] Relocates lasercolor snowflakes. Relocates some of the laser tag assessment code into more relevant areas. Portable turrets are no longer considered fully emagged while in lethal mode. Affects target assessment. Fixes an issue with turret control windows not refreshing. --- baystation12.dme | 1 + code/game/jobs/access.dm | 78 +----- code/game/machinery/bots/secbot.dm | 42 ++- code/game/machinery/machinery.dm | 51 +--- code/game/machinery/portable_tag_turret.dm | 128 +++++++++ code/game/machinery/portable_turret.dm | 286 +++++++++------------ code/game/machinery/turret_control.dm | 34 ++- 7 files changed, 327 insertions(+), 293 deletions(-) create mode 100644 code/game/machinery/portable_tag_turret.dm diff --git a/baystation12.dme b/baystation12.dme index d13c553649..8cca12d06b 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -325,6 +325,7 @@ #include "code\game\machinery\newscaster.dm" #include "code\game\machinery\OpTable.dm" #include "code\game\machinery\overview.dm" +#include "code\game\machinery\portable_tag_turret.dm" #include "code\game\machinery\portable_turret.dm" #include "code\game\machinery\recharger.dm" #include "code\game\machinery\rechargestation.dm" diff --git a/code/game/jobs/access.dm b/code/game/jobs/access.dm index 8441ab790b..0dc946aa16 100644 --- a/code/game/jobs/access.dm +++ b/code/game/jobs/access.dm @@ -417,76 +417,20 @@ /proc/get_all_centcom_jobs() return list("VIP Guest","Custodian","Thunderdome Overseer","Intel Officer","Medical Officer","Death Commando","Research Officer","BlackOps Commander","Supreme Commander") -//gets the actual job rank (ignoring alt titles) -//this is used solely for sechuds -/obj/proc/GetJobRealName() - if (!istype(src, /obj/item/device/pda) && !istype(src,/obj/item/weapon/card/id)) - return - - var/rank - var/assignment - if(istype(src, /obj/item/device/pda)) - if(src:id) - rank = src:id:rank - assignment = src:id:assignment - else if(istype(src, /obj/item/weapon/card/id)) - rank = src:rank - assignment = src:assignment - - if( rank in joblist ) - return rank - - if( assignment in joblist ) - return assignment - - return "Unknown" - -//gets the alt title, failing that the actual job rank -//this is unused -/obj/proc/sdsdsd() //GetJobDisplayName - if (!istype(src, /obj/item/device/pda) && !istype(src,/obj/item/weapon/card/id)) - return - - var/assignment - if(istype(src, /obj/item/device/pda)) - if(src:id) - assignment = src:id:assignment - else if(istype(src, /obj/item/weapon/card/id)) - assignment = src:assignment - - if(assignment) - return assignment - - return "Unknown" +proc/GetIdCard(var/mob/living/carbon/human/H) + if(H.wear_id) + var/id = H.wear_id.GetID() + if(id) + return id + if(H.get_active_hand()) + var/obj/item/I = H.get_active_hand() + return I.GetID() proc/FindNameFromID(var/mob/living/carbon/human/H) ASSERT(istype(H)) - var/obj/item/weapon/card/id/C = H.get_active_hand() - if( istype(C) || istype(C, /obj/item/device/pda) ) - var/obj/item/weapon/card/id/ID = C - - if( istype(C, /obj/item/device/pda) ) - var/obj/item/device/pda/pda = C - ID = pda.id - if(!istype(ID)) - ID = null - - if(ID) - return ID.registered_name - - C = H.wear_id - - if( istype(C) || istype(C, /obj/item/device/pda) ) - var/obj/item/weapon/card/id/ID = C - - if( istype(C, /obj/item/device/pda) ) - var/obj/item/device/pda/pda = C - ID = pda.id - if(!istype(ID)) - ID = null - - if(ID) - return ID.registered_name + var/obj/item/weapon/card/id/C = GetIdCard(H) + if(C) + return C.registered_name proc/get_all_job_icons() //For all existing HUD icons return joblist + list("Prisoner") diff --git a/code/game/machinery/bots/secbot.dm b/code/game/machinery/bots/secbot.dm index f6140d9102..84f3efb167 100644 --- a/code/game/machinery/bots/secbot.dm +++ b/code/game/machinery/bots/secbot.dm @@ -260,6 +260,12 @@ Auto Patrol: []"}, src.mode = 0 walk_to(src,0) + // We re-assess human targets, before bashing their head in, in case their credentials change + if(target && istype(target, /mob/living/carbon/human)) + var/threat = src.assess_perp(target, idcheck, check_records) + if(threat < 4) + target = null + if(target) // make sure target exists if(!lasercolor && Adjacent(target)) // If right next to perp. Lasertag bots do not arrest anyone, just patrol and shoot and whatnot if(istype(src.target,/mob/living/carbon)) @@ -643,7 +649,7 @@ Auto Patrol: []"}, continue if(istype(C, /mob/living/carbon/human)) - src.threatlevel = src.assess_perp(C, idcheck, check_records, lasercolor) + src.threatlevel = src.assess_perp(C, idcheck, check_records) else if(istype(M, /mob/living/simple_animal/hostile)) if(M.stat == DEAD) @@ -669,6 +675,40 @@ Auto Patrol: []"}, else continue +/obj/machinery/bot/secbot/on_assess_perp(mob/living/carbon/human/perp) + if(lasercolor) + return laser_check(perp, lasercolor) + + var/threat = 0 + threat -= laser_check(perp, "b") + threat -= laser_check(perp, "r") + + return threat + +/obj/machinery/bot/secbot/proc/laser_check(mob/living/carbon/human/perp, var/lasercolor) + var/target_suit + var/target_weapon + var/threat = 0 + //Lasertag turrets target the opposing team, how great is that? -Sieve + switch(lasercolor) + if("b") + target_suit = /obj/item/clothing/suit/redtag + target_weapon = /obj/item/weapon/gun/energy/laser/redtag + if("r") + target_suit = /obj/item/clothing/suit/bluetag + target_weapon = /obj/item/weapon/gun/energy/laser/bluetag + + if((istype(perp.r_hand, target_weapon)) || (istype(perp.l_hand, target_weapon))) + threat += 4 + + if(istype(perp, /mob/living/carbon/human)) + if(istype(perp.wear_suit, target_suit)) + threat += 4 + if(istype(perp.belt, target_weapon)) + threat += 2 + + return threat + /obj/machinery/bot/secbot/is_assess_emagged() return emagged == 2 diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm index 3f08862d9a..c7d6db5069 100644 --- a/code/game/machinery/machinery.dm +++ b/code/game/machinery/machinery.dm @@ -316,7 +316,7 @@ Class Procs: /obj/machinery/proc/is_assess_emagged() return emagged -/obj/machinery/proc/assess_perp(mob/living/carbon/human/perp, var/auth_weapons, var/check_records, var/lasercolor) +/obj/machinery/proc/assess_perp(mob/living/carbon/human/perp, var/auth_weapons, var/check_records) var/threatcount = 0 //the integer returned if(is_assess_emagged()) @@ -326,56 +326,27 @@ Class Procs: if(threatcount >= 10) return threatcount + //Agent cards lower threatlevel. + var/obj/item/weapon/card/id/id = GetIdCard(perp) + if(id && istype(id, /obj/item/weapon/card/id/syndicate)) + threatcount -= 2 + if(auth_weapons && !src.allowed(perp)) if(istype(perp.l_hand, /obj/item/weapon/gun) || istype(perp.l_hand, /obj/item/weapon/melee)) - if(!istype(perp.l_hand, /obj/item/weapon/gun/energy/laser/bluetag) \ - && !istype(perp.l_hand, /obj/item/weapon/gun/energy/laser/redtag) \ - && !istype(perp.l_hand, /obj/item/weapon/gun/energy/laser/practice)) - threatcount += 4 + threatcount += 4 if(istype(perp.r_hand, /obj/item/weapon/gun) || istype(perp.r_hand, /obj/item/weapon/melee)) - if(!istype(perp.r_hand, /obj/item/weapon/gun/energy/laser/bluetag) \ - && !istype(perp.r_hand, /obj/item/weapon/gun/energy/laser/redtag) \ - && !istype(perp.r_hand, /obj/item/weapon/gun/energy/laser/practice)) - threatcount += 4 + threatcount += 4 if(istype(perp.belt, /obj/item/weapon/gun) || istype(perp.belt, /obj/item/weapon/melee)) - if(!istype(perp.belt, /obj/item/weapon/gun/energy/laser/bluetag) \ - && !istype(perp.belt, /obj/item/weapon/gun/energy/laser/redtag) \ - && !istype(perp.belt, /obj/item/weapon/gun/energy/laser/practice)) - threatcount += 2 + threatcount += 2 if(perp.dna && perp.dna.mutantrace && perp.dna.mutantrace != "none") threatcount += 2 - - //Agent cards lower threatlevel. - if(perp.wear_id && istype(perp.wear_id.GetID(), /obj/item/weapon/card/id/syndicate)) - threatcount -= 2 - - if(lasercolor == "b")//Lasertag turrets target the opposing team, how great is that? -Sieve - threatcount = 0//They will not, however shoot at people who have guns, because it gets really fucking annoying - if(istype(perp.wear_suit, /obj/item/clothing/suit/redtag)) - threatcount += 4 - if((istype(perp.r_hand,/obj/item/weapon/gun/energy/laser/redtag)) || (istype(perp.l_hand,/obj/item/weapon/gun/energy/laser/redtag))) - threatcount += 4 - if(istype(perp.belt, /obj/item/weapon/gun/energy/laser/redtag)) - threatcount += 2 - - if(lasercolor == "r") - threatcount = 0 - if(istype(perp.wear_suit, /obj/item/clothing/suit/bluetag)) - threatcount += 4 - if((istype(perp.r_hand,/obj/item/weapon/gun/energy/laser/bluetag)) || (istype(perp.l_hand,/obj/item/weapon/gun/energy/laser/bluetag))) - threatcount += 4 - if(istype(perp.belt, /obj/item/weapon/gun/energy/laser/bluetag)) - threatcount += 2 - if(check_records) var/perpname = perp.name - if(perp.wear_id) - var/obj/item/weapon/card/id/id = perp.wear_id.GetID() - if(id) - perpname = id.registered_name + if(id) + perpname = id.registered_name var/datum/data/record/R = find_record("name", perpname, data_core.security) if(!R || (R.fields["criminal"] == "*Arrest*")) diff --git a/code/game/machinery/portable_tag_turret.dm b/code/game/machinery/portable_tag_turret.dm new file mode 100644 index 0000000000..fa4e75bfc5 --- /dev/null +++ b/code/game/machinery/portable_tag_turret.dm @@ -0,0 +1,128 @@ +#define TURRET_PRIORITY_TARGET 2 +#define TURRET_SECONDARY_TARGET 1 +#define TURRET_NOT_TARGET 0 + +/obj/machinery/porta_turret/tag + // Reasonable defaults, in case someone manually spawns us + var/lasercolor = "r" //Something to do with lasertag turrets, blame Sieve for not adding a comment. + installation = /obj/item/weapon/gun/energy/laser/redtag + +/obj/machinery/porta_turret/tag/red + +/obj/machinery/porta_turret/tag/blue + lasercolor = "b" + installation = /obj/item/weapon/gun/energy/laser/bluetag + +/obj/machinery/porta_turret/tag/New() + ..() + icon_state = "[lasercolor]grey_target_prism" + +/obj/machinery/porta_turret/tag/weapon_setup(var/obj/item/weapon/gun/energy/E) + switch(E.type) + if(/obj/item/weapon/gun/energy/laser/bluetag) + eprojectile = /obj/item/weapon/gun/energy/laser/bluetag + lasercolor = "b" + req_access = list(access_maint_tunnels, access_theatre) + check_records = 0 + auth_weapons = 1 + stun_all = 0 + check_anomalies = 0 + shot_delay = 30 + + if(/obj/item/weapon/gun/energy/laser/redtag) + eprojectile = /obj/item/weapon/gun/energy/laser/redtag + lasercolor = "r" + req_access = list(access_maint_tunnels, access_theatre) + check_records = 0 + auth_weapons = 1 + stun_all = 0 + check_anomalies = 0 + shot_delay = 30 + iconholder = 1 + +/obj/machinery/porta_turret/tag/interact(mob/user) + var/dat + + if(istype(user,/mob/living/carbon/human)) + var/mob/living/carbon/human/H = user + if(lasercolor == "b" && istype(H.wear_suit, /obj/item/clothing/suit/redtag)) + return + if(lasercolor == "r" && istype(H.wear_suit, /obj/item/clothing/suit/bluetag)) + return + dat += text({" + Automatic Portable Turret Installation

+ Status: []
"}, + + "[on ? "On" : "Off"]" ) + + + user << browse("Automatic Portable Turret Installation[dat]", "window=autosec") + onclose(user, "autosec") + return + +/obj/machinery/porta_turret/tag/update_icon() + if(!anchored) + icon_state = "turretCover" + return + if(stat & BROKEN) + icon_state = "[lasercolor]destroyed_target_prism" + else + if(powered()) + if(on) + if(iconholder) + //lasers have a orange icon + icon_state = "[lasercolor]orange_target_prism" + else + //almost everything has a blue icon + icon_state = "[lasercolor]target_prism" + else + icon_state = "[lasercolor]grey_target_prism" + else + icon_state = "[lasercolor]grey_target_prism" + +/obj/machinery/porta_turret/tag/bullet_act(obj/item/projectile/Proj) + ..() + + if(lasercolor == "b" && disabled == 0) + if(istype(Proj, /obj/item/weapon/gun/energy/laser/redtag)) + disabled = 1 + del(Proj) // qdel + sleep(100) + disabled = 0 + if(lasercolor == "r" && disabled == 0) + if(istype(Proj, /obj/item/weapon/gun/energy/laser/bluetag)) + disabled = 1 + del(Proj) // qdel + sleep(100) + disabled = 0 + +/obj/machinery/porta_turret/tag/assess_living(var/mob/living/L) + if(!L) + return TURRET_NOT_TARGET + + if(L.lying) + return TURRET_NOT_TARGET + + var/target_suit + var/target_weapon + switch(lasercolor) + if("b") + target_suit = /obj/item/clothing/suit/redtag + target_weapon = /obj/item/weapon/gun/energy/laser/redtag + if("r") + target_suit = /obj/item/clothing/suit/bluetag + target_weapon = /obj/item/weapon/gun/energy/laser/bluetag + + + if(target_suit)//Lasertag turrets target the opposing team, how great is that? -Sieve + if((istype(L.r_hand, target_weapon)) || (istype(L.l_hand, target_weapon))) + return TURRET_PRIORITY_TARGET + + if(istype(L, /mob/living/carbon/human)) + var/mob/living/carbon/human/H = L + if(istype(H.wear_suit, target_suit)) + return TURRET_PRIORITY_TARGET + if(istype(H.belt, target_weapon)) + return TURRET_SECONDARY_TARGET + + return TURRET_NOT_TARGET \ No newline at end of file diff --git a/code/game/machinery/portable_turret.dm b/code/game/machinery/portable_turret.dm index 4701669b24..94dbd8b611 100644 --- a/code/game/machinery/portable_turret.dm +++ b/code/game/machinery/portable_turret.dm @@ -3,10 +3,6 @@ This code is slightly more documented than normal, as requested by XSI on IRC. */ -#define TURRET_PRIORITY_TARGET 2 -#define TURRET_SECONDARY_TARGET 1 -#define TURRET_NOT_TARGET 0 - /obj/machinery/porta_turret name = "turret" icon = 'icons/obj/turrets.dmi' @@ -22,7 +18,6 @@ req_one_access = list(access_security, access_heads) power_channel = EQUIP //drains power from the EQUIPMENT channel - var/lasercolor = "" //Something to do with lasertag turrets, blame Sieve for not adding a comment. var/raised = 0 //if the turret cover is "open" and the turret is raised var/raising= 0 //if the turret is currently opening or closing its cover var/health = 80 //the turret's health @@ -51,6 +46,7 @@ var/attacked = 0 //if set to 1, the turret gets pissed off and shoots at people nearby (unless they have sec access!) var/on = 1 //determines if the turret is on + var/lethal = 0 //whether in lethal or stun mode var/disabled = 0 var/shot_sound //what sound should play when the turret fires @@ -60,7 +56,7 @@ /obj/machinery/porta_turret/New() ..() - icon_state = "[lasercolor]grey_target_prism" + icon_state = "grey_target_prism" //Sets up a spark system spark_system = new /datum/effect/effect/system/spark_spread spark_system.set_up(5, 0, src) @@ -71,7 +67,6 @@ setup() /obj/machinery/porta_turret/proc/setup() - var/obj/item/weapon/gun/energy/E = new installation //All energy-based weapons are applicable //var/obj/item/ammo_casing/shottype = E.projectile_type @@ -80,66 +75,66 @@ shot_sound = E.fire_sound eshot_sound = shot_sound - switch(E.type) - if(/obj/item/weapon/gun/energy/laser/bluetag) - eprojectile = /obj/item/weapon/gun/energy/laser/bluetag - lasercolor = "b" - req_access = list(access_maint_tunnels, access_theatre) - check_records = 0 - auth_weapons = 1 - stun_all = 0 - check_anomalies = 0 - shot_delay = 30 + weapon_setup(E) - if(/obj/item/weapon/gun/energy/laser/redtag) - eprojectile = /obj/item/weapon/gun/energy/laser/redtag - lasercolor = "r" - req_access = list(access_maint_tunnels, access_theatre) - check_records = 0 - auth_weapons = 1 - stun_all = 0 - check_anomalies = 0 - shot_delay = 30 - iconholder = 1 - - if(/obj/item/weapon/gun/energy/laser/practice) - iconholder = 1 - eprojectile = /obj/item/projectile/beam +/obj/machinery/porta_turret/proc/weapon_setup(var/obj/item/weapon/gun/energy/E) + if(/obj/item/weapon/gun/energy/laser/practice) + iconholder = 1 + eprojectile = /obj/item/projectile/beam // if(/obj/item/weapon/gun/energy/laser/practice/sc_laser) // iconholder = 1 // eprojectile = /obj/item/projectile/beam - if(/obj/item/weapon/gun/energy/laser/retro) - iconholder = 1 + if(/obj/item/weapon/gun/energy/laser/retro) + iconholder = 1 // if(/obj/item/weapon/gun/energy/laser/retro/sc_retro) // iconholder = 1 - if(/obj/item/weapon/gun/energy/laser/captain) - iconholder = 1 + if(/obj/item/weapon/gun/energy/laser/captain) + iconholder = 1 - if(/obj/item/weapon/gun/energy/lasercannon) - iconholder = 1 + if(/obj/item/weapon/gun/energy/lasercannon) + iconholder = 1 - if(/obj/item/weapon/gun/energy/taser) - eprojectile = /obj/item/projectile/beam - eshot_sound = 'sound/weapons/Laser.ogg' + if(/obj/item/weapon/gun/energy/taser) + eprojectile = /obj/item/projectile/beam + eshot_sound = 'sound/weapons/Laser.ogg' - if(/obj/item/weapon/gun/energy/stunrevolver) - eprojectile = /obj/item/projectile/beam - eshot_sound = 'sound/weapons/Laser.ogg' + if(/obj/item/weapon/gun/energy/stunrevolver) + eprojectile = /obj/item/projectile/beam + eshot_sound = 'sound/weapons/Laser.ogg' - if(/obj/item/weapon/gun/energy/gun) - eprojectile = /obj/item/projectile/beam //If it has, going to kill mode - eshot_sound = 'sound/weapons/Laser.ogg' - egun = 1 + if(/obj/item/weapon/gun/energy/gun) + eprojectile = /obj/item/projectile/beam //If it has, going to kill mode + eshot_sound = 'sound/weapons/Laser.ogg' + egun = 1 - if(/obj/item/weapon/gun/energy/gun/nuclear) - eprojectile = /obj/item/projectile/beam //If it has, going to kill mode - eshot_sound = 'sound/weapons/Laser.ogg' - egun = 1 + if(/obj/item/weapon/gun/energy/gun/nuclear) + eprojectile = /obj/item/projectile/beam //If it has, going to kill mode + eshot_sound = 'sound/weapons/Laser.ogg' + egun = 1 +/obj/machinery/porta_turret/update_icon() + if(!anchored) + icon_state = "turretCover" + return + if(stat & BROKEN) + icon_state = "destroyed_target_prism" + else + if(powered()) + if(on) + if(iconholder) + //lasers have a orange icon + icon_state = "orange_target_prism" + else + //almost everything has a blue icon + icon_state = "target_prism" + else + icon_state = "grey_target_prism" + else + icon_state = "grey_target_prism" /obj/machinery/porta_turret/Del() //deletes its own cover with it @@ -158,43 +153,29 @@ . = ..() if(.) return - var/dat + interact(user) - //The browse() text, similar to ED-209s and beepskies. - if(!lasercolor) //Lasertag turrets have less options - dat += text({" - Automatic Portable Turret Installation

- Status: []
- Behaviour controls are [locked ? "locked" : "unlocked"]"}, +/obj/machinery/porta_turret/interact(mob/user) + var/dat = text({" + Automatic Portable Turret Installation

+ Status: []
+ Behaviour controls are [locked ? "locked" : "unlocked"]"}, - "[on ? "On" : "Off"]" ) + "[on ? "On" : "Off"]" ) - if(!locked || issilicon(user)) - dat += text({"

- Neutralize All Non-Synthetics: []
- Check for Weapon Authorization: []
- Check Security Records: []
- Neutralize All Non-Authorized Personnel: []
- Neutralize All Unidentified Life Signs: []
"}, - - "[ai ? "Yes" : "No"]", - "[auth_weapons ? "Yes" : "No"]", - "[check_records ? "Yes" : "No"]", - "[stun_all ? "Yes" : "No"]", - "[check_anomalies ? "Yes" : "No"]" ) - else - if(istype(user,/mob/living/carbon/human)) - var/mob/living/carbon/human/H = user - if(lasercolor == "b" && istype(H.wear_suit, /obj/item/clothing/suit/redtag)) - return - if(lasercolor == "r" && istype(H.wear_suit, /obj/item/clothing/suit/bluetag)) - return - dat += text({" - Automatic Portable Turret Installation

- Status: []
"}, - - "[on ? "On" : "Off"]" ) + if(!locked || issilicon(user)) + dat += text({"

+ Neutralize All Non-Synthetics: []
+ Check for Weapon Authorization: []
+ Check Security Records: []
+ Neutralize All Non-Authorized Personnel: []
+ Neutralize All Unidentified Life Signs: []
"}, + "[ai ? "Yes" : "No"]", + "[auth_weapons ? "Yes" : "No"]", + "[check_records ? "Yes" : "No"]", + "[stun_all ? "Yes" : "No"]", + "[check_anomalies ? "Yes" : "No"]" ) user << browse("Automatic Portable Turret Installation[dat]", "window=autosec") onclose(user, "autosec") @@ -227,29 +208,13 @@ /obj/machinery/porta_turret/power_change() - - if(!anchored) - icon_state = "turretCover" - return - if(stat & BROKEN) - icon_state = "[lasercolor]destroyed_target_prism" + if(powered()) + stat &= ~NOPOWER + update_icon() else - if(powered()) - if(on) - if(iconholder) - //lasers have a orange icon - icon_state = "[lasercolor]orange_target_prism" - else - //almost everything has a blue icon - icon_state = "[lasercolor]target_prism" - else - icon_state = "[lasercolor]grey_target_prism" - stat &= ~NOPOWER - else - spawn(rand(0, 15)) - icon_state = "[lasercolor]grey_target_prism" - stat |= NOPOWER - + spawn(rand(0, 15)) + stat |= NOPOWER + update_icon() /obj/machinery/porta_turret/attackby(obj/item/I, mob/user) @@ -258,21 +223,20 @@ //If the turret is destroyed, you can remove it with a crowbar to //try and salvage its components user << "You begin prying the metal coverings off." - sleep(20) - if(prob(70)) - user << "You remove the turret and salvage some components." - if(installation) - var/obj/item/weapon/gun/energy/Gun = new installation(loc) - Gun.power_supply.charge = gun_charge - Gun.update_icon() - lasercolor = null - if(prob(50)) - new /obj/item/stack/sheet/metal(loc, rand(1,4)) - if(prob(50)) - new /obj/item/device/assembly/prox_sensor(loc) - else - user << "You remove the turret but did not manage to salvage anything." - del(src) // qdel + if(do_after(user, 20)) + if(prob(70)) + user << "You remove the turret and salvage some components." + if(installation) + var/obj/item/weapon/gun/energy/Gun = new installation(loc) + Gun.power_supply.charge = gun_charge + Gun.update_icon() + if(prob(50)) + new /obj/item/stack/sheet/metal(loc, rand(1,4)) + if(prob(50)) + new /obj/item/device/assembly/prox_sensor(loc) + else + user << "You remove the turret but did not manage to salvage anything." + del(src) // qdel if(istype(I, /obj/item/weapon/card/emag) && !emagged) //Emagging the turret makes it go bonkers and stun everyone. It also makes @@ -292,15 +256,15 @@ if(!anchored && !isinspace()) anchored = 1 invisibility = INVISIBILITY_LEVEL_TWO - icon_state = "[lasercolor]grey_target_prism" + update_icon() user << "You secure the exterior bolts on the turret." cover = new /obj/machinery/porta_turret_cover(loc) //create a new turret. While this is handled in process(), this is to workaround a bug where the turret becomes invisible for a split second cover.Parent_Turret = src //make the cover's parent src else if(anchored) anchored = 0 user << "You unsecure the exterior bolts on the turret." - icon_state = "turretCover" invisibility = 0 + update_icon() del(cover) //deletes the cover, and the turret instance itself becomes its own cover. - qdel else if(istype(I, /obj/item/weapon/card/id)||istype(I, /obj/item/device/pda)) @@ -345,20 +309,6 @@ if(health <= 0) die() //the death process :( - if(lasercolor == "b" && disabled == 0) - if(istype(Proj, /obj/item/weapon/gun/energy/laser/redtag)) - disabled = 1 - del(Proj) // qdel - sleep(100) - disabled = 0 - if(lasercolor == "r" && disabled == 0) - if(istype(Proj, /obj/item/weapon/gun/energy/laser/bluetag)) - disabled = 1 - del(Proj) // qdel - sleep(100) - disabled = 0 - - /obj/machinery/porta_turret/emp_act(severity) if(on) //if the turret is on, the EMP no matter how severe disables the turret for a while @@ -386,10 +336,10 @@ health = 0 density = 0 stat |= BROKEN //enables the BROKEN bit - icon_state = "[lasercolor]destroyed_target_prism" invisibility = 0 spark_system.start() //creates some sparks because they look cool density = 1 + update_icon() del(cover) //deletes the cover - no need on keeping it there! - del @@ -445,8 +395,9 @@ if(!L) return TURRET_NOT_TARGET - if(emagged && !isAI(L)) //if emagged, target everything (except the AI, otherwise lethal-set turrets attempt to fire at it in the core) - return TURRET_PRIORITY_TARGET + // If emagged not even the dead get a rest + if(emagged) + return L.stat ? TURRET_SECONDARY_TARGET : TURRET_PRIORITY_TARGET if(issilicon(L)) // Don't target silica return TURRET_NOT_TARGET @@ -460,26 +411,20 @@ if(ai) //If it's set to attack all non-silicons, target them! if(L.lying) - if(lasercolor) - return TURRET_NOT_TARGET - else - return TURRET_SECONDARY_TARGET - else - return TURRET_PRIORITY_TARGET + return TURRET_SECONDARY_TARGET + return TURRET_PRIORITY_TARGET if(iscuffed(L)) // If the target is handcuffed, leave it alone return TURRET_NOT_TARGET - if(isanimal(L)) // Animals are not so dangerous + if(isanimal(L) || ismonkey(L)) // Animals are not so dangerous return check_anomalies ? TURRET_SECONDARY_TARGET : TURRET_NOT_TARGET if(isxenomorph(L) || isalien(L)) // Xenos are dangerous return check_anomalies ? TURRET_PRIORITY_TARGET : TURRET_NOT_TARGET if(ishuman(L)) //if the target is a human, analyze threat level - if(assess_perp(L, auth_weapons, check_records, lasercolor) < 4) + if(assess_perp(L, auth_weapons, check_records) < 4) return TURRET_NOT_TARGET //if threat level < 4, keep going - else if(ismonkey(L)) - return TURRET_NOT_TARGET //Don't target monkeys or borgs/AIs if(L.lying) //if the perp is lying down, it's still a target but a less-important target return TURRET_SECONDARY_TARGET @@ -509,6 +454,7 @@ cover.icon_state = "openTurretCover" raised = 1 layer = 4 + update_icon() /obj/machinery/porta_turret/proc/popDown() //pops the turret down if(disabled) @@ -525,7 +471,7 @@ cover.icon_state = "turretCover" raised = 0 invisibility = 2 - icon_state = "[lasercolor]grey_target_prism" + update_icon() /obj/machinery/porta_turret/on_assess_perp(mob/living/carbon/human/perp) @@ -549,7 +495,8 @@ return /obj/machinery/porta_turret/proc/shootAt(var/mob/living/target) - if(!emagged) //if it hasn't been emagged, it has to obey a cooldown rate + //any emagged turrets will shoot extremely fast! This not only is deadly, but drains a lot power! + if(!(emagged || lethal)) //if it hasn't been emagged, it has to obey a cooldown rate if(last_fired || !raised) //prevents rapid-fire shooting, unless it's been emagged return last_fired = 1 @@ -565,20 +512,17 @@ if(!raised) //the turret has to be raised in order to fire - makes sense, right? return - //any emagged turrets will shoot extremely fast! This not only is deadly, but drains a lot power! - if(iconholder) - icon_state = "[lasercolor]orange_target_prism" - else - icon_state = "[lasercolor]target_prism" + + update_icon() var/obj/item/projectile/A - if(emagged) + if(emagged || lethal) A = new eprojectile(loc) playsound(loc, eshot_sound, 75, 1) else A = new projectile(loc) playsound(loc, shot_sound, 75, 1) A.original = target - if(!emagged) + if(!(emagged || lethal)) use_power(reqpower) else use_power(reqpower * 2) @@ -589,12 +533,12 @@ spawn(1) A.process() -/obj/machinery/porta_turret/proc/setState(var/on, var/emagged) +/obj/machinery/porta_turret/proc/setState(var/on, var/lethal) if(controllock) return src.on = on - src.emagged = emagged - src.iconholder = emagged + src.lethal = lethal + src.iconholder = lethal src.power_change() /* @@ -607,6 +551,7 @@ icon = 'icons/obj/turrets.dmi' icon_state = "turret_frame" density=1 + var/target_type = /obj/machinery/porta_turret // The type we intend to build var/build_step = 0 //the current step in the building process var/finish_name="turret" //the name applied to the product turret var/installation = null //the gun type installed @@ -686,6 +631,12 @@ installation = I.type //installation becomes I.type gun_charge = E.power_supply.charge //the gun's charge is stored in gun_charge user << "You add [I] to the turret." + + if(istype(installation, /obj/item/weapon/gun/energy/laser/bluetag) || istype(installation, /obj/item/weapon/gun/energy/laser/redtag)) + target_type = /obj/machinery/porta_turret/tag + else + target_type = /obj/machinery/porta_turret + build_step = 4 del(I) //delete the gun :( qdel return @@ -748,7 +699,7 @@ user << "You weld the turret's armor down." //The final step: create a full turret - var/obj/machinery/porta_turret/Turret = new/obj/machinery/porta_turret(loc) + var/obj/machinery/porta_turret/Turret = new target_type(loc) Turret.name = finish_name Turret.installation = installation Turret.gun_charge = gun_charge @@ -831,7 +782,7 @@ if(.) return var/dat - if(!Parent_Turret.lasercolor) + if(!istype(Parent_Turret, /obj/machinery/porta_turret/tag)) dat += text({" Automatic Portable Turret Installation

Status: []
@@ -855,9 +806,10 @@ else if(istype(user,/mob/living/carbon/human)) var/mob/living/carbon/human/H = user - if(Parent_Turret.lasercolor == "b" && istype(H.wear_suit, /obj/item/clothing/suit/redtag)) + var/obj/machinery/porta_turret/tag/laser_turret = Parent_Turret + if(laser_turret.lasercolor == "b" && istype(H.wear_suit, /obj/item/clothing/suit/redtag)) return - if(Parent_Turret.lasercolor == "r" && istype(H.wear_suit, /obj/item/clothing/suit/bluetag)) + if(laser_turret.lasercolor == "r" && istype(H.wear_suit, /obj/item/clothing/suit/bluetag)) return dat += text({" Automatic Portable Turret Installation

@@ -949,7 +901,7 @@ /obj/machinery/porta_turret/stationary - emagged = 1 + lethal = 1 New() installation = /obj/item/weapon/gun/energy/laser diff --git a/code/game/machinery/turret_control.dm b/code/game/machinery/turret_control.dm index f203186eb9..ab023eb87e 100644 --- a/code/game/machinery/turret_control.dm +++ b/code/game/machinery/turret_control.dm @@ -41,6 +41,18 @@ //don't have to check if control_area is path, since get_area_all_atoms can take path. return +/obj/machinery/turretid/proc/can_use(mob/user) + if (get_dist(src, user) > 0 && !issilicon(user)) + user << "You are too far away." + user.unset_machine() + user << browse(null, "window=turretid") + return 0 + + if(ailock && issilicon(user)) + user << "There seems to be a firewall preventing you from accessing this device." + return 0 + return 1 + /obj/machinery/turretid/attackby(obj/item/weapon/W, mob/user) if(stat & BROKEN) return if (istype(user, /mob/living/silicon)) @@ -73,17 +85,8 @@ else user << "Access denied." -/obj/machinery/turretid/attack_ai(mob/user as mob) - if(!ailock) - return attack_hand(user) - else - user << "There seems to be a firewall preventing you from accessing this device." - /obj/machinery/turretid/attack_hand(mob/user as mob) - if (get_dist(src, user) > 0 && !issilicon(user)) - user << "You are too far away." - user.unset_machine() - user << browse(null, "window=turretid") + if(!can_use(user)) return user.set_machine(src) @@ -106,7 +109,7 @@ //user << browse(t, "window=turretid") //onclose(user, "turretid") - var/datum/browser/popup = new(user, "turretid", "Turret Control Panel ([area.name])") + var/datum/browser/popup = new(user, "turretid", "Turret Control Panel ([area.name])", 500, 200) popup.set_content(t) popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state)) popup.open() @@ -115,14 +118,9 @@ if(..()) return 1 - if(ailock) - usr << "There seems to be a firewall preventing you from accessing this device." + if(!can_use(usr)) return 1 - if (src.locked) - if (!istype(usr, /mob/living/silicon)) - usr << "Control panel is locked!" - return 1 if (href_list["toggleOn"]) src.enabled = !src.enabled src.updateTurrets() @@ -131,7 +129,7 @@ src.updateTurrets() if(!nowindow) - updateDialog() + attack_hand(usr) /obj/machinery/turretid/updateDialog() if (stat & (BROKEN|MAINT)) From 89eba01493d8128ef324f04da923ea4a01579037 Mon Sep 17 00:00:00 2001 From: Raptor1628 Date: Thu, 13 Nov 2014 13:05:23 -0500 Subject: [PATCH 16/16] Moves Chargers, adds some engie portables --- maps/tgstation2.dmm | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/maps/tgstation2.dmm b/maps/tgstation2.dmm index a29c97c808..c6e22fc1e3 100644 --- a/maps/tgstation2.dmm +++ b/maps/tgstation2.dmm @@ -7259,7 +7259,7 @@ "cJE" = (/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom) "cJF" = (/turf/simulated/floor/engine/nitrogen,/area/engine/engine_room) "cJG" = (/obj/effect/landmark{name = "prisonwarp"},/turf/unsimulated/floor{name = "plating"},/area/prison/solitary) -"cJH" = (/turf/unsimulated/floor{icon_state = "floorgrime"},/area/prison/solitary) +"cJH" = (/obj/machinery/shieldwallgen,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom) "cJI" = (/turf/unsimulated/floor{icon_state = "green"; dir = 8},/area/centcom/control) "cJJ" = (/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control) "cJK" = (/turf/unsimulated/wall,/area/centcom/test) @@ -11255,6 +11255,12 @@ "eiw" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom) "eix" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/autoinjectors,/obj/item/weapon/storage/box/beakers,/obj/item/weapon/storage/box/gloves,/obj/item/weapon/storage/box/pillbottles,/obj/item/bodybag/cryobag,/obj/item/bodybag/cryobag,/obj/item/bodybag/cryobag,/obj/item/bodybag/cryobag,/obj/item/bodybag/cryobag,/obj/item/bodybag/cryobag,/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom) "eiy" = (/obj/structure/rack,/obj/item/clothing/suit/armor/vest/ert/medical,/obj/item/clothing/suit/armor/vest/ert/medical,/obj/item/clothing/suit/armor/vest/ert/medical,/obj/item/clothing/suit/armor/vest/ert/medical,/obj/item/clothing/head/helmet/ert/medical,/obj/item/clothing/head/helmet/ert/medical,/obj/item/clothing/head/helmet/ert/medical,/obj/item/clothing/head/helmet/ert/medical,/obj/item/weapon/storage/backpack/ert/medical,/obj/item/weapon/storage/backpack/ert/medical,/obj/item/weapon/storage/backpack/ert/medical,/obj/item/weapon/storage/backpack/ert/medical,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom) +"eiz" = (/obj/machinery/shield_gen,/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom) +"eiA" = (/obj/machinery/shield_capacitor,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom) +"eiB" = (/obj/machinery/shieldgen,/turf/unsimulated/floor{icon_state = "vault"; dir = 8},/area/centcom) +"eiC" = (/obj/machinery/power/emitter,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom) +"eiD" = (/obj/structure/table/reinforced,/obj/item/weapon/circuitboard/aiupload,/obj/item/weapon/circuitboard/borgupload,/obj/item/weapon/circuitboard/smes,/obj/item/weapon/aiModule/nanotrasen,/obj/item/weapon/aiModule/reset,/obj/item/weapon/aiModule/freeformcore,/obj/item/weapon/aiModule/protectStation,/obj/item/weapon/aiModule/quarantine,/obj/item/weapon/aiModule/paladin,/obj/item/weapon/aiModule/robocop,/obj/item/weapon/aiModule/safeguard,/turf/unsimulated/floor{icon_state = "vault"; dir = 1},/area/centcom) +"eiE" = (/obj/machinery/recharger/wallcharger{pixel_x = 4; pixel_y = 32},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom) (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -11642,12 +11648,12 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacFZcGacGbcGbcHocGdcIocIpcIqcGdcGncGncGncGncGncGdcGdcGdcHfcGbcGbcGrcIrcIscItcIucIkcIkcIkcIkcIvcGrcGXcGXcGXcIccIwcHJcHJcHJcIxcHJcHJcIycGFcHbcHscHtcHtcHtcHtcHtcHscGFcHdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeeJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqLdqLdqLaaacCFdEZdFncNjcCFaaacCFcFycFycFycCFaaacCFdsgdFtdFucCFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqLdqLdqLdqLdqLdqLdqLdqLdqLdqLdqL aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacFZcGacGbcGbcGbcHocGdcGdcGdcGdcGdcGdcGdcGdcGdcGdcHfcGbcGbcGbcGbcGrcGrcIzcIAcGrcGrcGrcIzcIBcIAcGrcGXcGXcGXcGrcICcIDcIDcIDcIDcIDcIEcGrcGFcHbcIFcUQcHtcHtcHtcUycIIcHccHdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeeJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqLdqLaaacCFcFycFycFycCFaaadvlcFBcFCcFDdvoaaacCFcFycFycFycCFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqLdqLdqLdqLdqLdqLdqLdqLdqLdqLdqL aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacFZcGacGbcGbcGbcGbcGbcGbcGbcGbcGbcGbcGbcGbcGbcGbcGbcGbcGbcGbcGbcGrcIJcIJcIJcIJcIJcIJcIJcIJcIJcGrcGrcIKcGrcGrcIJcIJcIJcIJcIJcIJcIJcGrcGFcHbcILcIMcINcINcINcIMcIOcHccHdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeeJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadvlcFBcFCcFDdvoaaaaaaaaaaaaaaaaaaaaadvlcFBcFCcFDdvoaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqLdqLdqLdqLdqLdqLdqLdqLdqLdqLdqL -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacFYcIPcFYcFYcFYcFYcFYcFYcIQcIQcIQcIQcIQcIQcIQcIQcIQcIQcIQcIQcIQcIQcIQcIQcIQcIQcIRcIRcIRcIRcIRcIRcIRcGrcIScITcIScGrcIRcIRcIRcIRcIRcIRcIRcIRcGFcHbcHbcIUcIVcIVcIVcIWcHbcHccHdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeeJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqLdqLdqLdqLdqLdqLdqLdqLdqLdqLdqL -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacFYeidcFYaaaaaaaaaaaacFYcJfcJgcJhcJfcJicIQcJfcJjcIQcJfcJkcIQcJlcJmcIQcJfcJjcIQcJncIRdRcdRbdRadQZcJqcGrcIScITcIScGrcJrcJscJtcJucJucIRaaaaaacGFcHbcHbcHbcHbcHbcHbcHbcHbcHccHdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeeJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqLdqLdqLdqLdqLdqLdqLdqLdqLdqL -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacFYeiicFYcFYcFYcFYcFYcFYcJGcJjcIQcJGcJHcIQcJGcJmcIQcJGcJgcIQcJGcJjcIQcJGcJicIQcJncIRcJIcJJcJJcJJcJJcGrcIScITcIScGrcJucJucJucJucJucIRaaaaaacJKcJKcJKcJKcJKcJKcJKcJKcJKcJKcJKcIRcIRcIRcIRcIRcIRcIRcIRcIRcIRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeeJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqLdqLdqLdqLdqLdqLdqLdqLdqL -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIPcIPcIPcIPcIPcFYcLteieeigeihcJceifcFYcFYcFYcFYcFYcFYcFYcIQcIQcIQcIQcIQcIQcIQcIQcIQcIQcIQcIQcJncIRcJIcJJcJJcJJcJJcGrcGrcIKcGrcGrcJucJucJucJucJucIRcJKcJKcJKcJKcJKcJKcJNcJOcJPcIRcJQcJQcJQcIRcJQcJQcJQcJQcJQcJQcJQcJQcIRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeeJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqLdqLdqLdqLdqLdqLdqLdqL -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIXcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIYcIZcJbcJTdmScLtcJEcJEcJEcJEefPcFYefOcJEcJEehVefLcFYcJYcJicIQcJfcJicIQcJZcJjcIQcJfcJmcIQcJncIRcKadQYdPKcKccKdcIRcKecKecKecIRcJucJucJucJucJucIRcKfcKgcKfcKhcKicJKcKjcKjcKjcKkcJQcJQcJQcKkcJQcKlcKmcKlcJQcKncKocKpcIRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeeJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqLdqLdqLdqLdqLdqLdqL -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacJvcJwcJwcJwcJwcJwcJwcJwcJwcJwcJwcJwcJwcJwcJxcJycJwcJwcJwcJzcJxcJAcJBcJDefMcFYefNcJEcJEcJEcJEcJVcFYeeBcJEcJEefjefLcFYcJGcJjcJhcJGcJjcIQcJGcJXcIQcJGcKtcIQcJncIRcKucIRcKvcKwcKxcIRcJJcJJcJJcIRcKvcKwcKycIRcKzcIRcKAcKBcKAcKBcKAcJKcIRcIRcIRcIRcJQcJQcJQcIRcKCcKDcKlcKEcKCcKFcKGcKGcIRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeeJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqLdqLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqLdqLdqLdqLdqLdqL +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacFYcIPcFYcFYcFYcFYcFYcFYcFYcFYcFYcFYcFYcFYcIQcIQcIQcIQcIQcIQcIQcIQcIQcIQcIQcIQcIRcIRcIRcIRcIRcIRcIRcGrcIScITcIScGrcIRcIRcIRcIRcIRcIRcIRcIRcGFcHbcHbcIUcIVcIVcIVcIWcHbcHccHdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeeJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqLdqLdqLdqLdqLdqLdqLdqLdqLdqLdqL +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacFYeidcFYaaaaaaaaaaaacFYeiBeizeiAcJHcJHcFYcJfcJjcIQcJfcJkcIQcJlcJmcIQcJfcJjcIQcJncIRdRcdRbdRadQZcJqcGrcIScITcIScGrcJrcJscJtcJucJucIRaaaaaacGFcHbcHbcHbcHbcHbcHbcHbcHbcHccHdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeeJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqLdqLdqLdqLdqLdqLdqLdqLdqLdqL +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacFYeiicFYcFYcFYcFYcFYcFYefLcJEcJEcJEeiCcFYcJGcJmcIQcJGcJgcIQcJGcJjcIQcJGcJicIQcJncIRcJIcJJcJJcJJcJJcGrcIScITcIScGrcJucJucJucJucJucIRaaaaaacJKcJKcJKcJKcJKcJKcJKcJKcJKcJKcJKcIRcIRcIRcIRcIRcIRcIRcIRcIRcIRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeeJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqLdqLdqLdqLdqLdqLdqLdqLdqL +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIPcIPcIPcIPcIPcFYcLteieeigeihcJceifcFYeiDcJEcJEcJEeiCcFYcIQcIQcIQcIQcIQcIQcIQcIQcIQcIQcIQcIQcJncIRcJIcJJcJJcJJcJJcGrcGrcIKcGrcGrcJucJucJucJucJucIRcJKcJKcJKcJKcJKcJKcJNcJOcJPcIRcJQcJQcJQcIRcJQcJQcJQcJQcJQcJQcJQcJQcIRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeeJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqLdqLdqLdqLdqLdqLdqLdqL +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIXcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIYcIZcJbcJTdmScLtcJEcJEcJEcJEefPcFYefOcJEcJEcJEehVcFYcJYcJicIQcJfcJicIQcJZcJjcIQcJfcJmcIQcJncIRcKadQYdPKcKccKdcIRcKecKecKecIRcJucJucJucJucJucIRcKfcKgcKfcKhcKicJKcKjcKjcKjcKkcJQcJQcJQcKkcJQcKlcKmcKlcJQcKncKocKpcIRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeeJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqLdqLdqLdqLdqLdqLdqL +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacJvcJwcJwcJwcJwcJwcJwcJwcJwcJwcJwcJwcJwcJwcJxcJycJwcJwcJwcJzcJxcJAcJBcJDefMcFYefNcJEcJEcJEcJEcJVcFYeeBcJEcJEcJEefjcFYcJGcJjcJhcJGcJjcIQcJGcJXcIQcJGcKtcIQcJncIRcKucIRcKvcKwcKxcIRcJJcJJcJJcIRcKvcKwcKycIRcKzcIRcKAcKBcKAcKBcKAcJKcIRcIRcIRcIRcJQcJQcJQcIRcKCcKDcKlcKEcKCcKFcKGcKGcIRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeeJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqLdqLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqLdqLdqLdqLdqLdqL aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIXcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcFYehZcJEcJEcJEcJEeiacFYeibcJEcJEeiccFYcFYcFYcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcJncIRcJJcJJcKKcKbcKbcKbcKbcKbcKbcKbcKbcKbcKLcJJcJJcKMcKAcKAcKAcKAcKAcJKcKNcKjcJNcIRcJQcJQcJQcIRcKOcKOcKPcKOcKOcKFcKGcKGcIRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeeJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqLdqLdqLdqLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqLdqLdqLdqLdqL aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIXcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIPcIYdpicJDehWcFYehXefCefCdvmcJEcFYcFYehYcJEcJEcKScFYefJefKcFYdmUdmUdmUdmUdmUdmUdmTcLacLbcIPcJncIRcJJcJJcLccLdcLecLecLecLecLecLecLecLfcJIcJJcJJcJKcLgcLhcLicLjcLkcJKcLlcKjcJOcIRcJQcJQcJQcIRcLmcLmcKjcLmcLmcKFcKGcKGcIRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeeOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqLdqLdqLdqLdqLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqLdqLdqLdqLdqL aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacJvcJwcJwcJwcJwcJwcJwcJwcJwcJwcJwcJwcJwcJwcJRcJycJwcJwcJwcJzcJRcJScJBcJDdmCcFYcIPcFYcFYcFYcJEcFYdmEcJEcJEcJEcKTcFYcKXcLrcMxdmPdmPdmPdmPdmPdmPdmBcIPcIPcIPcIPcIPcJJcJJcLccLvcLwcJJcLxcLycLzcJJcLwcLvcJIcJJcJJcJKcJKcJKcJKcJKcJKcJKcLlcKjcJOcIRcJQcJQcJQcIRcLAcLAcKjcLAcLAcKFcKGcKGcIRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeeJaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqLdqLdqLdqLdqLdqLaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadqLdqLdqLdqL @@ -11662,7 +11668,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacFYeiteiteiueiveiyeixeiwcFYdpndpndpncFYdpxdpxcFYcFYcFYcFYcMQcNrcNPcNQcNRcNScMQdRydRYdRYdRydRHdRXcJJdRzcIRcIRcIRcOacIRcIRdolaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacIRcIRcIRcIRcIRcIRcIRcIRcNdaaaaaaaaaaaaaaacNUcJQcNwcKlcKlcNxcJQcNyaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaeeSeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeOeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJeeJ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacFYcFYcFYcFYcFYcFYcFYcFYcFYcFYcFYcFYcNVcNWcNWcNVaaaaaaaaacMQcNrcNXcNYcNZcNYcMQdRydRZdRZdRydRJdRCcJJdRzcIRcJocLVcJJcLMcOhcIRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacObcJQcJQcOccOccJQcJQcObaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOdcOecOecOecOecOecOedjfdjfcOecOecOgaaacMQcNrcNrcNrcNrcNrcMQdRydRYdRYdRydRRdRCcJJdRzcIRcJIcJJcJJcJJcLccIRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOBdXUdXTcOFaaaaaaaaaaaaaaaaaaaaaaaaaaacIRcOicJQcJQcJQcJQcOjcIRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOkcOlcOmdiYeijcOqeikcOpcOpcOpcOpcOecOgcMQcMQcMQcMQcMQcMQcMQdRydRydRydRydRBdRCcJJdRzcIRdRAcORdRAdRDdRAcIRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOBdaCdiZdROdaFcOFaaaaaaaaaaaaaaaaaaaaaaaacIRcIRcIRcIRcIRcIRcIRcIRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOkcOlcOmdiYeijcOqeikcOpcOpeiEeiEcOecOgcMQcMQcMQcMQcMQcMQcMQdRydRydRydRydRBdRCcJJdRzcIRdRAcORdRAdRDdRAcIRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOBdaCdiZdROdaFcOFaaaaaaaaaaaaaaaaaaaaaaaacIRcIRcIRcIRcIRcIRcIRcIRaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOkcOleilcOpcOpcOpcOpcOpcOpcOpcOpdjbdjaaaaaaaaaaaaaaaaaaacIRdREdRydREdRydRHdRCcJJdRFdRGcJIcJJdRIcJJcMvcNdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOVdjccOMcOMdaJcOVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOkcOleimeincOHcOHcOHcOHcOHcOpcOpcOecOIaaaaaaaaaaaaaaaaaacIRdREdRydREdRydRJdRCcJJdRFdRGcKacJJcLxdRLcMXcNdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadXIcOYcOYcOYcOMdXIaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOQcOecOecOecOecOecOecOecOecOecOecOIaaaaaaaaaaaaaaaaaaaaacIRdREdRydREdRydRRdRQcMEdRTcOydRAdRSdRVdRWdRAcNdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacOVcZpcOYcOZdaNcOVdaMaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa