From c1e84774aca9172b37c3b6bb8f70461aae376d2b Mon Sep 17 00:00:00 2001 From: skoglol <33292112+kriskog@users.noreply.github.com> Date: Thu, 11 Jul 2019 17:29:36 +0200 Subject: [PATCH] one-hand shit --- code/datums/status_effects/debuffs.dm | 4 +- code/game/objects/items/twohanded.dm | 2 +- .../mining/equipment/kinetic_crusher.dm | 76 +++++++++++++----- code/modules/mining/machine_vending.dm | 4 +- .../hostile/megafauna/megafauna.dm | 2 +- .../mob/inhands/weapons/hammers_lefthand.dmi | Bin 1272 -> 3207 bytes .../mob/inhands/weapons/hammers_righthand.dmi | Bin 1254 -> 3491 bytes 7 files changed, 60 insertions(+), 28 deletions(-) diff --git a/code/datums/status_effects/debuffs.dm b/code/datums/status_effects/debuffs.dm index e930c77c36..d8bfbd0353 100644 --- a/code/datums/status_effects/debuffs.dm +++ b/code/datums/status_effects/debuffs.dm @@ -259,9 +259,9 @@ status_type = STATUS_EFFECT_REPLACE alert_type = null var/mutable_appearance/marked_underlay - var/obj/item/twohanded/required/kinetic_crusher/hammer_synced + var/obj/item/twohanded/kinetic_crusher/hammer_synced -/datum/status_effect/crusher_mark/on_creation(mob/living/new_owner, obj/item/twohanded/required/kinetic_crusher/new_hammer_synced) +/datum/status_effect/crusher_mark/on_creation(mob/living/new_owner, obj/item/twohanded/kinetic_crusher/new_hammer_synced) . = ..() if(.) hammer_synced = new_hammer_synced diff --git a/code/game/objects/items/twohanded.dm b/code/game/objects/items/twohanded.dm index 82bf2c6b5f..96b7f7bd31 100644 --- a/code/game/objects/items/twohanded.dm +++ b/code/game/objects/items/twohanded.dm @@ -35,7 +35,7 @@ if(!wielded || !user) return wielded = 0 - if(force_unwielded) + if(!isnull(force_unwielded)) force = force_unwielded var/sf = findtext(name," (Wielded)") if(sf) diff --git a/code/modules/mining/equipment/kinetic_crusher.dm b/code/modules/mining/equipment/kinetic_crusher.dm index b4afaac17f..e055eff631 100644 --- a/code/modules/mining/equipment/kinetic_crusher.dm +++ b/code/modules/mining/equipment/kinetic_crusher.dm @@ -1,42 +1,43 @@ /*********************Mining Hammer****************/ -/obj/item/twohanded/required/kinetic_crusher +/obj/item/twohanded/kinetic_crusher icon = 'icons/obj/mining.dmi' - icon_state = "mining_hammer1" - item_state = "mining_hammer1" + icon_state = "crusher" + item_state = "crusher0" lefthand_file = 'icons/mob/inhands/weapons/hammers_lefthand.dmi' righthand_file = 'icons/mob/inhands/weapons/hammers_righthand.dmi' name = "proto-kinetic crusher" desc = "An early design of the proto-kinetic accelerator, it is little more than an combination of various mining tools cobbled together, forming a high-tech club. \ While it is an effective mining tool, it did little to aid any but the most skilled and/or suicidal miners against local fauna." - force = 20 //As much as a bone spear, but this is significantly more annoying to carry around due to requiring the use of both hands at all times + force = 0 //You can't hit stuff unless wielded w_class = WEIGHT_CLASS_BULKY slot_flags = ITEM_SLOT_BACK - force_unwielded = 20 //It's never not wielded so these are the same + force_unwielded = 0 force_wielded = 20 throwforce = 5 throw_speed = 4 - light_range = 7 - light_power = 2 armour_penetration = 10 materials = list(MAT_METAL=1150, MAT_GLASS=2075) hitsound = 'sound/weapons/bladeslice.ogg' attack_verb = list("smashed", "crushed", "cleaved", "chopped", "pulped") sharpness = IS_SHARP + actions_types = list(/datum/action/item_action/toggle_light) var/list/trophies = list() var/charged = TRUE var/charge_time = 15 var/detonation_damage = 50 var/backstab_bonus = 30 + var/light_on = FALSE + var/brightness_on = 7 -/obj/item/twohanded/required/kinetic_crusher/Initialize() +/obj/item/twohanded/kinetic_crusher/Initialize() . = ..() AddComponent(/datum/component/butchering, 60, 110) //technically it's huge and bulky, but this provides an incentive to use it -/obj/item/twohanded/required/kinetic_crusher/Destroy() +/obj/item/twohanded/kinetic_crusher/Destroy() QDEL_LIST(trophies) return ..() -/obj/item/twohanded/required/kinetic_crusher/examine(mob/living/user) +/obj/item/twohanded/kinetic_crusher/examine(mob/living/user) ..() to_chat(user, "Mark a large creature with the destabilizing force, then hit them in melee to do [force + detonation_damage] damage.") to_chat(user, "Does [force + detonation_damage + backstab_bonus] damage if the target is backstabbed, instead of [force + detonation_damage].") @@ -44,7 +45,7 @@ var/obj/item/crusher_trophy/T = t to_chat(user, "It has \a [T] attached, which causes [T.effect_desc()].") -/obj/item/twohanded/required/kinetic_crusher/attackby(obj/item/I, mob/living/user) +/obj/item/twohanded/kinetic_crusher/attackby(obj/item/I, mob/living/user) if(istype(I, /obj/item/crowbar)) if(LAZYLEN(trophies)) to_chat(user, "You remove [src]'s trophies.") @@ -60,7 +61,11 @@ else return ..() -/obj/item/twohanded/required/kinetic_crusher/attack(mob/living/target, mob/living/carbon/user) +/obj/item/twohanded/kinetic_crusher/attack(mob/living/target, mob/living/carbon/user) + if(!wielded) + to_chat(user, "[src] is too heavy to use with one hand. You fumble and drop everything.") + user.drop_all_held_items() + return var/datum/status_effect/crusher_damage/C = target.has_status_effect(STATUS_EFFECT_CRUSHERDAMAGETRACKING) var/target_health = target.health ..() @@ -71,11 +76,13 @@ if(!QDELETED(C) && !QDELETED(target)) C.total_damage += target_health - target.health //we did some damage, but let's not assume how much we did -/obj/item/twohanded/required/kinetic_crusher/afterattack(atom/target, mob/living/user, proximity_flag, clickparams) +/obj/item/twohanded/kinetic_crusher/afterattack(atom/target, mob/living/user, proximity_flag, clickparams) . = ..() if(istype(target, /obj/item/crusher_trophy)) var/obj/item/crusher_trophy/T = target T.add_to(src, user) + if(!wielded) + return if(!proximity_flag && charged)//Mark a target, or mine a tile. var/turf/proj_turf = user.loc if(!isturf(proj_turf)) @@ -122,12 +129,37 @@ if(user && lavaland_equipment_pressure_check(get_turf(user))) //CIT CHANGE - makes sure below only happens in low pressure environments user.adjustStaminaLoss(-30)//CIT CHANGE - makes crushers heal stamina -/obj/item/twohanded/required/kinetic_crusher/proc/Recharge() +/obj/item/twohanded/kinetic_crusher/proc/Recharge() if(!charged) charged = TRUE icon_state = "mining_hammer1" playsound(src.loc, 'sound/weapons/kenetic_reload.ogg', 60, 1) +/obj/item/twohanded/kinetic_crusher/ui_action_click(mob/user, actiontype) + light_on = !light_on + playsound(user, 'sound/weapons/empty.ogg', 100, TRUE) + update_brightness(user) + update_icon() + +/obj/item/twohanded/kinetic_crusher/proc/update_brightness(mob/user = null) + if(light_on) + set_light(brightness_on) + else + set_light(0) + +/obj/item/twohanded/kinetic_crusher/update_icon() + ..() + cut_overlays() + if(!charged) + add_overlay("[icon_state]_uncharged") + if(light_on) + add_overlay("[icon_state]_lit") + spawn(1) + for(var/X in actions) + var/datum/action/A = X + A.UpdateButtonIcon() + item_state = "crusher[wielded]" + //destablizing force /obj/item/projectile/destabilizer name = "destabilizing force" @@ -138,7 +170,7 @@ flag = "bomb" range = 6 log_override = TRUE - var/obj/item/twohanded/required/kinetic_crusher/hammer_synced + var/obj/item/twohanded/kinetic_crusher/hammer_synced /obj/item/projectile/destabilizer/Destroy() hammer_synced = null @@ -177,12 +209,12 @@ return "errors" /obj/item/crusher_trophy/attackby(obj/item/A, mob/living/user) - if(istype(A, /obj/item/twohanded/required/kinetic_crusher)) + if(istype(A, /obj/item/twohanded/kinetic_crusher)) add_to(A, user) else ..() -/obj/item/crusher_trophy/proc/add_to(obj/item/twohanded/required/kinetic_crusher/H, mob/living/user) +/obj/item/crusher_trophy/proc/add_to(obj/item/twohanded/kinetic_crusher/H, mob/living/user) for(var/t in H.trophies) var/obj/item/crusher_trophy/T = t if(istype(T, denied_type) || istype(src, T.denied_type)) @@ -194,7 +226,7 @@ to_chat(user, "You attach [src] to [H].") return TRUE -/obj/item/crusher_trophy/proc/remove_from(obj/item/twohanded/required/kinetic_crusher/H, mob/living/user) +/obj/item/crusher_trophy/proc/remove_from(obj/item/twohanded/kinetic_crusher/H, mob/living/user) forceMove(get_turf(H)) H.trophies -= src return TRUE @@ -281,12 +313,12 @@ /obj/item/crusher_trophy/legion_skull/effect_desc() return "a kinetic crusher to recharge [bonus_value*0.1] second\s faster" -/obj/item/crusher_trophy/legion_skull/add_to(obj/item/twohanded/required/kinetic_crusher/H, mob/living/user) +/obj/item/crusher_trophy/legion_skull/add_to(obj/item/twohanded/kinetic_crusher/H, mob/living/user) . = ..() if(.) H.charge_time -= bonus_value -/obj/item/crusher_trophy/legion_skull/remove_from(obj/item/twohanded/required/kinetic_crusher/H, mob/living/user) +/obj/item/crusher_trophy/legion_skull/remove_from(obj/item/twohanded/kinetic_crusher/H, mob/living/user) . = ..() if(.) H.charge_time += bonus_value @@ -339,7 +371,7 @@ /obj/item/crusher_trophy/demon_claws/effect_desc() return "melee hits to do [bonus_value * 0.2] more damage and heal you for [bonus_value * 0.1], with 5X effect on mark detonation" -/obj/item/crusher_trophy/demon_claws/add_to(obj/item/twohanded/required/kinetic_crusher/H, mob/living/user) +/obj/item/crusher_trophy/demon_claws/add_to(obj/item/twohanded/kinetic_crusher/H, mob/living/user) . = ..() if(.) H.force += bonus_value * 0.2 @@ -347,7 +379,7 @@ H.force_wielded += bonus_value * 0.2 H.detonation_damage += bonus_value * 0.8 -/obj/item/crusher_trophy/demon_claws/remove_from(obj/item/twohanded/required/kinetic_crusher/H, mob/living/user) +/obj/item/crusher_trophy/demon_claws/remove_from(obj/item/twohanded/kinetic_crusher/H, mob/living/user) . = ..() if(.) H.force -= bonus_value * 0.2 diff --git a/code/modules/mining/machine_vending.dm b/code/modules/mining/machine_vending.dm index 38d2e3e100..5a48538161 100644 --- a/code/modules/mining/machine_vending.dm +++ b/code/modules/mining/machine_vending.dm @@ -30,7 +30,7 @@ new /datum/data/mining_equipment("500 Point Transfer Card", /obj/item/card/mining_point_card/mp500, 500), new /datum/data/mining_equipment("Tracking Implant Kit", /obj/item/storage/box/minertracker, 600), new /datum/data/mining_equipment("Jaunter", /obj/item/wormhole_jaunter, 750), - new /datum/data/mining_equipment("Kinetic Crusher", /obj/item/twohanded/required/kinetic_crusher, 750), + new /datum/data/mining_equipment("Kinetic Crusher", /obj/item/twohanded/kinetic_crusher, 750), new /datum/data/mining_equipment("Kinetic Accelerator", /obj/item/gun/energy/kinetic_accelerator, 750), new /datum/data/mining_equipment("Survival Medipen", /obj/item/reagent_containers/hypospray/medipen/survival, 750), new /datum/data/mining_equipment("Brute First-Aid Kit", /obj/item/storage/firstaid/brute, 800), @@ -172,7 +172,7 @@ new /obj/item/stack/marker_beacon/thirty(drop_location) if("Crusher Kit") new /obj/item/extinguisher/mini(drop_location) - new /obj/item/twohanded/required/kinetic_crusher(drop_location) + new /obj/item/twohanded/kinetic_crusher(drop_location) if("Mining Conscription Kit") new /obj/item/storage/backpack/duffelbag/mining_conscript(drop_location) diff --git a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm index 301b270e36..d62f59cdd7 100644 --- a/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm +++ b/code/modules/mob/living/simple_animal/hostile/megafauna/megafauna.dm @@ -127,7 +127,7 @@ var/client/C = L.client SSmedals.UnlockMedal("Boss [BOSS_KILL_MEDAL]", C) SSmedals.UnlockMedal("[medaltype] [BOSS_KILL_MEDAL]", C) - if(crusher_kill && istype(L.get_active_held_item(), /obj/item/twohanded/required/kinetic_crusher)) + if(crusher_kill && istype(L.get_active_held_item(), /obj/item/twohanded/kinetic_crusher)) SSmedals.UnlockMedal("[medaltype] [BOSS_KILL_MEDAL_CRUSHER]", C) SSmedals.SetScore(BOSS_SCORE, C, 1) SSmedals.SetScore(score_type, C, 1) diff --git a/icons/mob/inhands/weapons/hammers_lefthand.dmi b/icons/mob/inhands/weapons/hammers_lefthand.dmi index 0ea340f1f3ee7498110eac329c0fa0f7aeb21ed8..306fd0db8ade530c7e3ea64dac269400d740e376 100644 GIT binary patch delta 3103 zcmaJ@c{J307yn65ve&4|Yb_#)gzU>?%aUZ@XDlOyEZG%)QfSD&g*2r^j6s=+Fj5$j zEzisp4P#9hV<~1d^v-jh_m9qd-sk7ZzmId?cimEn#u&H>edAlVkSsGA# z8iwBQB6k}A_$w?;jT~dg=+x_1#VL|JtBjVD_c9?`0TK}-r3DqZKIN=KBsqRRK3>Hv zrz`i*`UxR7V8`k{+GaP(A6t5FWlqtSmEszG209M28%Lm{QG?c90u>D@#u6$Q#XyK~ zX>-4Jwg2XX4=oD(K#F4zAYPF*3Vn#67Z2*iHxn4_WT6~m+9|t#B6xidmmz> z4kPQ%j~eUxImL_U^`yC~lA|;Mzcc{QJ0FY@4Z<}A>Nc^)vkxT_BEBgOKCliFsN7OT zVwSG$ThRY>stCj@rS%RO&3+C0`q8PkRYb?*@Z=r6Vk~qT-*h?dvz`tTp2ki4(ATsX zx2p-zHrT-rbV|q}{zE>KdiB@cqZ=6Il&*ngo$*hqWWjaR`LCUb&aB2uiLD$WT#5S> zwi-5j941=k6w(tkzm>ofv`9<2s$Pc$wF<6Cs0%^W`TrvUl^eB(&7C zMuQYv;+!_bUe%_86T1SGp+sBPeab#t`8qmDEQa_4e|(_72@K(|(*9wximA)JeDkY@ z9o+(SZZ8Vy;$Z~(w#T_txk|e6*UfPO3a?ExKML>wGO#r985cf!kbS~>pfveDd$-#? z&#PHOhGljf&DFbhI$$@hF4j2iMhUAW&wfh^{(?Cz|e4{VHYX6f+iMp~YWXp-Vzt7KUQ<0CeT42;40z>Xvlbv&2jx!?Qt*&!FU|XmD13$2i)q=~e9?q2wgiBZ zQ^rAp1H3_yw)OQ3?qJYWT(kCNG&}sY@OuFoo*JUlP0UE6<*A>mv+~!v(XtWXnSTwOvgUX(PEY#|ST-<}`kGPqOshNmbHWW&-@7e7U zJ#g^5U=8-8-dbUM{ZR zqf*2JZTmFMj0bjc{n!Xd5bo{S5W~~OyeM2}eS({1D>XblJAIbYbz<7F^+45_nTbHM z1HEEczSXF~)Cr7TKdMa*#uLK6#4D8zK;fgkDCOzZde~d$pOO^H809eZ z<|c8q`~=ua+f4Yft*rk_1i<K>D(%||TT zwh6SOVPVx5L`Xd+3axkni{p?KB$Y~amle3inoRWpfPFkXBtf7M5~OkPyFt^UvZ0BI ziA;W<_U^<3B_mlLTrdX08yOQ5WG(-8csK_Dmd@>8ymoZlq2}TX0|~&d4Ak~F^5oO7 z_qh8H(9gH2aw~XW_19wm^jHS0_a;_nA4bBfBy|l82D0oVPW6=bbzDWxn`2n8{Vtz! zC)?_ejO{!*fDV3F^~++WlSjG>A3QEfgq$}w@1C7Kj%i$?(@COBfKW25Jp+78RVcT~ z7#Xn}+#{DaDRC-ddC%b>H+>R?ul2qPk-};BRM?KA5qLzQH z>XHXMYnOx=918L$PCO0=5A401)TaSH*GO#d8v7xnn(9NVQ}1us8ju=KZ>&(C zJ8~z(0GQ7xUzuq4_;cx~Eh`6Fz;mv!FH~|bztg5nT@+Nsi*Roph>Mgp zjCBzU8d&lx;O?xgw5+`SXyWN;fZf0mZR^BezVPeDx`hv&pF4k*llk8Oe-Bpx&xse6 z#B`+Yy^1M?uKPw*;-l0lIq?Nteb>n57!R6r(y zNnQFHT$`#A3-pfdlvwXe`&q@)A71m)+Oplkzt#W=K^{kfpC~< z{A*E5gg>NT{Ze*yIoAit`~iQ)YY)fL4A)5O5IE&gdo>3n0VAC~6yucc?w*Is; zn7A`ZabYs7<+{YC~t8t+X1e{qCg?1<-#1)O2^b#OJ@+zL5XoAdm%aL5U%?2L98z0>1LQRkVW#w&ejE^lRj{%U36 z5UH?vwG_Iz^xLW3O9kj+=r{EwrGr-u9`?`i{ZPBCcD+VP_;mly+(z8OYlL+Q957Nd&o^2+)TNYVY|XLMFvyt8=a4^ZC6qPT?4{QoFF|j*QW}Y)`>MNlZHYH k?*hI{O9cIU(Ets6HdL89AgNT$`RoIhW;Ui+WAEgD147;b1ONa4 delta 1153 zcmV-{1b+L68Tbi*iBL{Q4GJ0x0000DNk~Le0001>0001>2m=5B0K5^G9{>OVW>8F2 zMF0Q*N^M|ete9GvhgpMjI#WtRNJ}m;GkJV|cTE8p93QcF1Gu=jMJWLr|K=B@iZC1y za7`s8B_*$~uWc3o0sr5cHUDaAYCk_e$Fx{gRaLl;J#=v;V4$F&|LO(j=jXkx0KUGy zVOgLC00001bW%=J06^y0W&i*HlaVEef4EdBE4cc(fCCEv-x^sCs=`g5000A_NklEvRF_#G^I$SlQd1~R!|cokxsHKOBPdAIu=rnRyq-aR1U@Ue@rrE z1!<%kK^lj$-?SbilO~aI><6p#QV^!@ayZ_&bH7@omtuPd8k~-Mzdn!riop<;sc(K8XGkx_EqvBJ7;&2c00000 z004lgtOg#<0ez`4MZl630#3jZ+M285vs`;aEGY zyv8Fgo9>gZ#c|C){bnqJ&19)!P|e6#VuWMua37s{vZi)Zs7E$-r#UX z78{|d1oxp>l}s@>n2`lWX!cFJ32ek=l4Z&^Cce$s7}1O5a{>SW00000Kn$+DZhVe6 zE&ubrp4(p$kmF6u{~YrxFLgXJBln97lKWVzsJ`z)9>*qkbIBtg~%N5g-f{4_XDFvUU=$*fAYU@O1A$x42%}X zd{|)T&j0qgr`AfYFIZXCr!Tj`sy-Y&f?HSqx6cnpU-2`?!%=fsR#kPX-3G-dtIvay zjy!IkUoLw&Ree6!b#rJQT-4d~(^FZVA5W^ovJ|WINA#N2gdAl>adw`<0Cic`vaYBL zfjHa^s3-B<{&jIZG9IvWGwf8hE2CK^S(2iJEu~g>pw!D_( zHQmt==&!9(PptP)TP|c7vkGmcoGGZh?262%hl?WIb<>5OUPK810000003*1*PKreO z`c3B0lp>M7e*dL%XiAYt6Z$j7X#D-$ey+EvDjhc|M=O05Q-V|uZ&xWtEZqpwIJ{k% zzHjNINn~#JetWUQ@#+qLWDY0e-mipj1YjaYvpBnIx^yIZJ5&0b%}xOT06@V%&!;R> T?}1!_00000NkvXXu0mjf6x1X( diff --git a/icons/mob/inhands/weapons/hammers_righthand.dmi b/icons/mob/inhands/weapons/hammers_righthand.dmi index dbe34513eabf08eed283821f7d916a81d1a8f831..674e4d510b006a3bdd20de6cc7a9a8ecf8c8373d 100644 GIT binary patch literal 3491 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 T0001>2m=5B0K5^G9{>OVX;4g5 zMgRZ*N^M|ete9GvhgpMjI#WtRNJ}m;Gj~k^d3=7ccLNw4AGo-VE_OBprD}t>ILWL=f1wa zy{!N#bY9>90004WQchCP~m<|NoI2-U%kbn_QW8<~$!PaJeUk5a@W?AOHXW z@Vi*OLWD)Mm0B~1O+{ElJE^t5*i?i?v=!rfrPZg>6Ssbz~WrGOWVJvx0TI0c1Gl@_g#`4*pI^@87k;L2cDuYg} z*Ue{3w-f#tgR52Z+0yLD*XPI}bqQ-%6x-XbA`Zi7Fi3xXH4gcHpH;;24gX_qu@22^ z1^@s600000+}JG8;loCdTf}k>x4|ZVaWI%{Wal#M60s*Y?M1Tl7<1-Jt5V*Gw|zjL z!u?x!mtDRg&qPn-@=nMJ6l908ClR|R#_~0|5nFkKx8$3=l{a}?&*8HMN3obL8|w~t z=k(=7ya&~iA{vyui=_Gyhn?KZq+m6C|c1C5?(W8-dWWE00000004j$Q|x7p!x;0w zSt&y>XN~wc^S{|(P#4TuBR=N*Z#Edz26NVkk2n9D3kJm~nCr1dd>e6a%Kr}9n<-3% zzCHwVJ=TcNJO7&>f6QJC!CZ%bHRAj5%Ktu0<3ALJGlD*t>#;_B2ao*kU>aXjcsT2E z-!Mtd#k%Bw#%VIo-!eEn^bLN0mvGJh2;)zKxffv^W})!`00000006*&W&dH1jzh$^ zAZ`)gk~l?t3*s2@(Kx0@OEpU~bI~#4BasKk&y%H^ol|3VF5)|;=3X;@sXAeKQC>dH z28;4^Hfz}G?8tnCEhq{>ZhaHBncCEV~*n!9tnmW!;yRnM8gx2F4fhxctis)k0p>$1}~- z&{dn-jkctULUxlnT7yM@G4;?^G_#nG#-J_vYIRf){k2`=3mZI?nj4wB%tG5)k3?$E zyQb-3dy|8^ZaC`YIkW%(00000@C;wC5MdE*rT#LAO+{ElJE?#EVp96SsdOumWn|>gu~&}{%m6zMfldC zALff>d|Lwts0&29qF%Vl=+CdlA