From 79de55c58c4f8b4b191611b9fcaebcc58b8dd102 Mon Sep 17 00:00:00 2001 From: necromanceranne <40847847+necromanceranne@users.noreply.github.com> Date: Thu, 25 Mar 2021 09:07:52 +1100 Subject: [PATCH 1/3] First part of the largescale shield cleanup, including ensuring shields respect their various counters and strengths appropriately. --- code/__DEFINES/_flags/shields.dm | 31 ++++-- code/_globalvars/bitfields.dm | 7 ++ code/game/objects/items/shields.dm | 91 +++++++++++++----- .../research/designs/weapon_designs.dm | 16 +-- icons/obj/shields.dmi | Bin 4654 -> 5286 bytes 5 files changed, 108 insertions(+), 37 deletions(-) diff --git a/code/__DEFINES/_flags/shields.dm b/code/__DEFINES/_flags/shields.dm index f6de4226e8..72c2f996e2 100644 --- a/code/__DEFINES/_flags/shields.dm +++ b/code/__DEFINES/_flags/shields.dm @@ -1,18 +1,35 @@ /// Transparent, let beams pass #define SHIELD_TRANSPARENT (1<<0) + +/// Flammable, takes more damage from fire +#define SHIELD_ENERGY_WEAK (1<<1) +/// Fragile, takes more damage from brute +#define SHIELD_KINETIC_WEAK (1<<2) +/// Strong against kinetic, weak against energy +#define SHIELD_KINETIC_STRONG (1<<3) +/// Strong against energy, weak against kinetic +#define SHIELD_ENERGY_STRONG (1<<4) +/// Disabler and other stamina based energy weapons boost the damage done to the sheld +#define SHIELD_DISABLER_DISRUPTED (1<<5) + +/// Doesn't block ranged attacks whatsoever +#define SHIELD_NO_RANGED (1<<6) +/// Doesn't block melee attacks whatsoever +#define SHIELD_NO_MELEE (1<<7) + /// Can shield bash -#define SHIELD_CAN_BASH (1<<1) +#define SHIELD_CAN_BASH (1<<8) /// Shield bash knockdown on wall hit -#define SHIELD_BASH_WALL_KNOCKDOWN (1<<2) +#define SHIELD_BASH_WALL_KNOCKDOWN (1<<9) /// Shield bash always knockdown -#define SHIELD_BASH_ALWAYS_KNOCKDOWN (1<<3) +#define SHIELD_BASH_ALWAYS_KNOCKDOWN (1<<10) /// Shield bash disarm on wall hit -#define SHIELD_BASH_WALL_DISARM (1<<4) +#define SHIELD_BASH_WALL_DISARM (1<<11) /// Shield bash always disarm -#define SHIELD_BASH_ALWAYS_DISARM (1<<5) +#define SHIELD_BASH_ALWAYS_DISARM (1<<12) /// You can shieldbash target someone on the ground for ground slam -#define SHIELD_BASH_GROUND_SLAM (1<<6) +#define SHIELD_BASH_GROUND_SLAM (1<<13) /// Shield bashing someone on the ground will disarm -#define SHIELD_BASH_GROUND_SLAM_DISARM (1<<7) +#define SHIELD_BASH_GROUND_SLAM_DISARM (1<<14) #define SHIELD_FLAGS_DEFAULT (SHIELD_CAN_BASH | SHIELD_BASH_WALL_KNOCKDOWN | SHIELD_BASH_WALL_DISARM | SHIELD_BASH_GROUND_SLAM) diff --git a/code/_globalvars/bitfields.dm b/code/_globalvars/bitfields.dm index 3fc275d436..b9cbfb7e35 100644 --- a/code/_globalvars/bitfields.dm +++ b/code/_globalvars/bitfields.dm @@ -259,6 +259,13 @@ GLOBAL_LIST_INIT(bitfields, list( ), "shield_flags" = list( "SHIELD_TRANSPARENT" = SHIELD_TRANSPARENT, + "SHIELD_ENERGY_WEAK" = SHIELD_ENERGY_WEAK, + "SHIELD_KINETIC_WEAK" = SHIELD_KINETIC_WEAK, + "SHIELD_KINETIC_STRONG" = SHIELD_KINETIC_STRONG, + "SHIELD_ENERGY_STRONG" = SHIELD_ENERGY_STRONG, + "SHIELD_DISABLER_DISRUPTED" = SHIELD_DISABLER_DISRUPTED, + "SHIELD_NO_RANGED" = SHIELD_NO_RANGED, + "SHIELD_NO_MELEE" = SHIELD_NO_MELEE, "SHIELD_CAN_BASH" = SHIELD_CAN_BASH, "SHIELD_BASH_WALL_KNOCKDOWN" = SHIELD_BASH_WALL_KNOCKDOWN, "SHIELD_BASH_ALWAYS_KNOCKDOWN" = SHIELD_BASH_ALWAYS_KNOCKDOWN, diff --git a/code/game/objects/items/shields.dm b/code/game/objects/items/shields.dm index 5c3e4fd612..d11a7ba0c8 100644 --- a/code/game/objects/items/shields.dm +++ b/code/game/objects/items/shields.dm @@ -174,6 +174,10 @@ var/atom/movable/AM = object if(CHECK_BITFIELD(shield_flags, SHIELD_TRANSPARENT) && (AM.pass_flags & PASSGLASS)) return BLOCK_NONE + if(CHECK_BITFIELD(shield_flags, SHIELD_NO_RANGED) && (attack_type & ATTACK_TYPE_PROJECTILE)) + return BLOCK_NONE + if(CHECK_BITFIELD(shield_flags, SHIELD_NO_MELEE) && (attack_type & ATTACK_TYPE_MELEE)) + return BLOCK_NONE if(attack_type & ATTACK_TYPE_THROWN) final_block_chance += 30 if(attack_type & ATTACK_TYPE_TACKLE) @@ -238,30 +242,73 @@ new /obj/item/shard((get_turf(src))) /obj/item/shield/riot/on_shield_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return) + var/final_damage = damage + + if(attack_type & ATTACK_TYPE_MELEE) + var/obj/hittingthing = object + if(hittingthing.damtype == BURN) + if(CHECK_BITFIELD(shield_flags, SHIELD_ENERGY_WEAK)) + final_damage *= 2 + else if(CHECK_BITFIELD(shield_flags, SHIELD_ENERGY_STRONG)) + final_damage *= 0.5 + + if(hittingthing.damtype == BRUTE) + if(CHECK_BITFIELD(shield_flags, SHIELD_KINETIC_WEAK)) + final_damage *= 2 + else if(CHECK_BITFIELD(shield_flags, SHIELD_KINETIC_STRONG)) + final_damage *= 0.5 + + if(hittingthing.damtype == STAMINA || hittingthing.damtype == TOX || hittingthing.damtype == CLONE || hittingthing.damtype == BRAIN || hittingthing.damtype == OXY) + final_damage = 0 + + if(attack_type & ATTACK_TYPE_PROJECTILE) + var/obj/item/projectile/shootingthing = object + if(is_energy_reflectable_projectile(shootingthing)) + if(CHECK_BITFIELD(shield_flags, SHIELD_ENERGY_WEAK)) + final_damage *= 2 + else if(CHECK_BITFIELD(shield_flags, SHIELD_ENERGY_STRONG)) + final_damage *= 0.5 + + if(!is_energy_reflectable_projectile(object)) + if(CHECK_BITFIELD(shield_flags, SHIELD_KINETIC_WEAK)) + final_damage *= 2 + else if(CHECK_BITFIELD(shield_flags, SHIELD_KINETIC_STRONG)) + final_damage *= 0.5 + + if(shootingthing.damage_type == STAMINA) + if(CHECK_BITFIELD(shield_flags, SHIELD_DISABLER_DISRUPTED)) + final_damage *= 3 //disablers melt these kinds of shields. Really meant more for holoshields. + else + final_damage = 0 + + if(shootingthing.damage_type == TOX || shootingthing.damage_type == CLONE || shootingthing.damage_type == BRAIN || shootingthing.damage_type == OXY) + final_damage = 0 + if(can_shatter && (obj_integrity <= damage)) var/turf/T = get_turf(owner) T.visible_message("[attack_text] destroys [src]!") shatter(owner) qdel(src) return FALSE - take_damage(damage) + take_damage(final_damage) return ..() -/obj/item/shield/riot/laser_proof - name = "laser resistant shield" - desc = "A far more frail shield made of dark glass meant to block lasers but suffers from being being weak to ballistic projectiles." +/obj/item/shield/riot/energy_proof + name = "energy resistant shield" + desc = "An ablative shield designed to absorb and disperse energy attacks. This comes at significant cost to its ability to withstand ballistics and kinetics, breaking apart easily." armor = list("melee" = 30, "bullet" = -10, "laser" = 80, "energy" = 80, "bomb" = -40, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 50) icon_state = "riot_laser" item_state = "riot_laser" lefthand_file = 'icons/mob/inhands/equipment/shields_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/shields_righthand.dmi' - shield_flags = SHIELD_FLAGS_DEFAULT + shield_flags = SHIELD_FLAGS_DEFAULT | SHIELD_ENERGY_STRONG | SHIELD_KINETIC_WEAK max_integrity = 300 -/obj/item/shield/riot/bullet_proof - name = "bullet resistant shield" - desc = "A far more frail shield made of resistant plastics and kevlar meant to block ballistics." +/obj/item/shield/riot/kinetic_proof + name = "kinetic resistant shield" + desc = "A polymer and ceramic shield designed to absorb ballistic projectiles and kinetic force. It doesn't do very well into energy attacks, especially from weapons that inflict burns." armor = list("melee" = 30, "bullet" = 80, "laser" = 0, "energy" = 0, "bomb" = -40, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 50) + shield_flags = SHIELD_FLAGS_DEFAULT | SHIELD_KINETIC_STRONG | SHIELD_ENERGY_WEAK max_integrity = 300 /obj/item/shield/riot/roman @@ -277,8 +324,8 @@ /obj/item/shield/riot/roman/fake desc = "Bears an inscription on the inside: \"Romanes venio domus\". It appears to be a bit flimsy." - block_chance = 0 armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) + shield_flags = SHIELD_ENERGY_WEAK | SHIELD_KINETIC_WEAK | SHIELD_NO_RANGED max_integrity = 40 /obj/item/shield/riot/roman/shatter(mob/living/carbon/human/owner) @@ -295,8 +342,7 @@ custom_materials = list(/datum/material/wood = MINERAL_MATERIAL_AMOUNT * 10) resistance_flags = FLAMMABLE repair_material = /obj/item/stack/sheet/mineral/wood - block_chance = 30 - shield_flags = SHIELD_FLAGS_DEFAULT + shield_flags = SHIELD_FLAGS_DEFAULT | SHIELD_ENERGY_WEAK max_integrity = 150 /obj/item/shield/riot/buckler/shatter(mob/living/carbon/human/owner) @@ -348,7 +394,7 @@ /obj/item/shield/makeshift name = "metal shield" - desc = "A large shield made of wired and welded sheets of metal. The handle is made of cloth and leather making it unwieldy." + desc = "A large shield made of wired and welded sheets of metal. The handle is made of cloth and leather, making it unwieldy." armor = list("melee" = 25, "bullet" = 25, "laser" = 5, "energy" = 0, "bomb" = 30, "bio" = 0, "rad" = 0, "fire" = 70, "acid" = 80) lefthand_file = 'icons/mob/inhands/equipment/shields_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/shields_righthand.dmi' @@ -362,33 +408,34 @@ /obj/item/shield/riot/tower name = "tower shield" - desc = "A massive shield that can block a lot of attacks, can take a lot of abuse before braking." + desc = "An immense tower shield. Designed to ensure maximum protection to the user, at the expense of mobility." armor = list("melee" = 95, "bullet" = 95, "laser" = 75, "energy" = 60, "bomb" = 90, "bio" = 90, "rad" = 0, "fire" = 90, "acid" = 10) //Armor for the item, dosnt transfer to user item_state = "metal" icon_state = "metal" force = 16 slowdown = 2 - throwforce = 15 //Massive pice of metal + throwforce = 15 //Massive piece of metal + max_integrity = 600 w_class = WEIGHT_CLASS_HUGE - item_flags = SLOWS_WHILE_IN_HAND + item_flags = SLOWS_WHILE_IN_HAND | ITEM_CAN_BLOCK shield_flags = SHIELD_FLAGS_DEFAULT /obj/item/shield/riot/tower/swat name = "swat shield" - desc = "A massive, heavy shield that can block a lot of attacks, can take a lot of abuse before breaking." max_integrity = 250 /obj/item/shield/riot/implant - name = "telescoping shield implant" - desc = "A compact, arm-mounted telescopic shield. While nigh-indestructible when powered by a host user, it will eventually overload from damage. Recharges while inside its implant." - item_state = "metal" - icon_state = "metal" + name = "hardlight shield implant" + desc = "A hardlight plane of force projected from the implant. While it is capable of withstanding immense amounts of abuse, it will eventually overload from sustained impacts, especially against energy attacks. Recharges while retracted." + item_state = "holoshield" + icon_state = "holoshield" slowdown = 1 shield_flags = SHIELD_FLAGS_DEFAULT max_integrity = 100 obj_integrity = 100 can_shatter = FALSE - item_flags = SLOWS_WHILE_IN_HAND | ITEM_CAN_BLOCK + item_flags = ITEM_CAN_BLOCK + shield_flags = SHIELD_FLAGS_DEFAULT | SHIELD_KINETIC_STRONG | SHIELD_DISABLER_DISRUPTED var/recharge_timerid var/recharge_delay = 15 SECONDS @@ -400,7 +447,7 @@ if(obj_integrity == 0) if(ismob(loc)) var/mob/living/L = loc - playsound(src, 'sound/effects/glassbr3.ogg', 100) + playsound(src, 'sound/effects/zap.ogg', 100) L.visible_message("[src] overloads from the damage sustained!") L.dropItemToGround(src) //implant component catch hook will grab it. diff --git a/code/modules/research/designs/weapon_designs.dm b/code/modules/research/designs/weapon_designs.dm index 11dd29a416..f7ba9e7e63 100644 --- a/code/modules/research/designs/weapon_designs.dm +++ b/code/modules/research/designs/weapon_designs.dm @@ -457,23 +457,23 @@ category = list("Weapons") departmental_flags = DEPARTMENTAL_FLAG_SECURITY -/datum/design/laser_shield - name = "Laser Resistant Riot Shield" - desc = "An advanced riot shield made of darker glasses to prevent laser fire from passing through." +/datum/design/energy_shield + name = "Energy Resistant Shield" + desc = "An ablative shield designed to stop energy-based attacks dead in their tracks, but shatter easily against kinetic blows." id = "laser_shield" build_type = PROTOLATHE materials = list(/datum/material/iron = 4000, /datum/material/glass = 1000, /datum/material/plastic = 4000, /datum/material/silver = 800, /datum/material/titanium = 600, /datum/material/plasma = 5000) - build_path = /obj/item/shield/riot/laser_proof + build_path = /obj/item/shield/riot/energy_proof category = list("Weapons") departmental_flags = DEPARTMENTAL_FLAG_SECURITY -/datum/design/bullet_shield - name = "Bullet Resistant Riot Shield" - desc = "An advanced riot shield made bullet resistant plastics and heavy metals to protect against projectile harm." +/datum/design/kinetic_shield + name = "Kinetic Resistant Shield" + desc = "An advanced polymer shield designed to stop kinetic-based attacks with ease, but splinter apart against energy-based attacks." id = "bullet_shield" build_type = PROTOLATHE materials = list(/datum/material/iron = 4000, /datum/material/glass = 1000, /datum/material/silver = 2000, /datum/material/titanium = 1200, /datum/material/plastic = 2500) - build_path = /obj/item/shield/riot/bullet_proof + build_path = /obj/item/shield/riot/kinetic_proof category = list("Weapons") departmental_flags = DEPARTMENTAL_FLAG_SECURITY diff --git a/icons/obj/shields.dmi b/icons/obj/shields.dmi index c8b1110e1a0fa8f6f0f39521daee398f9c166c4d..c641f0e0c677ba08b6c42ddb5071d5a2dbfbc56b 100644 GIT binary patch literal 5286 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 aNrsR%w(dpT!jdk405A=G^>Q`)$o~MXfc Date: Fri, 26 Mar 2021 07:07:48 +1100 Subject: [PATCH 2/3] Adds the shield flags to the ratvaran shield, adds the remaining sprites for the kinetic/energy/holo shields --- code/game/objects/items/shields.dm | 4 +++- .../clock_weapons/ratvarian_shield.dm | 2 +- .../inhands/equipment/shields_lefthand.dmi | Bin 12039 -> 14350 bytes .../inhands/equipment/shields_righthand.dmi | Bin 12561 -> 14974 bytes icons/obj/shields.dmi | Bin 5286 -> 5814 bytes 5 files changed, 4 insertions(+), 2 deletions(-) diff --git a/code/game/objects/items/shields.dm b/code/game/objects/items/shields.dm index d11a7ba0c8..9ba994746a 100644 --- a/code/game/objects/items/shields.dm +++ b/code/game/objects/items/shields.dm @@ -308,6 +308,8 @@ name = "kinetic resistant shield" desc = "A polymer and ceramic shield designed to absorb ballistic projectiles and kinetic force. It doesn't do very well into energy attacks, especially from weapons that inflict burns." armor = list("melee" = 30, "bullet" = 80, "laser" = 0, "energy" = 0, "bomb" = -40, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 50) + icon_state = "riot_bullet" + item_state = "riot_bullet" shield_flags = SHIELD_FLAGS_DEFAULT | SHIELD_KINETIC_STRONG | SHIELD_ENERGY_WEAK max_integrity = 300 @@ -447,7 +449,7 @@ if(obj_integrity == 0) if(ismob(loc)) var/mob/living/L = loc - playsound(src, 'sound/effects/zap.ogg', 100) + playsound(src, "sparks", 100, TRUE) L.visible_message("[src] overloads from the damage sustained!") L.dropItemToGround(src) //implant component catch hook will grab it. diff --git a/code/modules/antagonists/clockcult/clock_items/clock_weapons/ratvarian_shield.dm b/code/modules/antagonists/clockcult/clock_items/clock_weapons/ratvarian_shield.dm index fb7b4f8a94..1b6979300f 100644 --- a/code/modules/antagonists/clockcult/clock_items/clock_weapons/ratvarian_shield.dm +++ b/code/modules/antagonists/clockcult/clock_items/clock_weapons/ratvarian_shield.dm @@ -8,7 +8,7 @@ desc = "A resilient shield made out of brass.. It feels warm to the touch." var/clockwork_desc = "A powerful shield of ratvarian making. It absorbs blocked attacks to charge devastating bashes." armor = list("melee" = 80, "bullet" = 70, "laser" = -10, "energy" = -20, "bomb" = 60, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100) - shield_flags = SHIELD_FLAGS_DEFAULT + shield_flags = SHIELD_FLAGS_DEFAULT | SHIELD_KINETIC_STRONG | SHIELD_ENERGY_WEAK max_integrity = 300 //High integrity, extremely strong against melee / bullets, but still quite easy to destroy with lasers and energy repair_material = /obj/item/stack/tile/brass var/dam_absorbed = 0 diff --git a/icons/mob/inhands/equipment/shields_lefthand.dmi b/icons/mob/inhands/equipment/shields_lefthand.dmi index 850bbaa0434d647175077957c15352087443e61a..26658559d497be37545089444fedc8e41fa84a92 100644 GIT binary patch literal 14350 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 literal 12039 zcmai4WmH^2vK}m0a1ZVwcyK2K4Fq=&5IjhbAcGU!-623iaCdiicNieZ;O_HocK7Vt zAMc&z%-rdkxl~t|d{teyLzNX}FwkD1fj}S(Iax_n5D1Ry?;GU>2n50pDDwqApdRYl z&XS*XYsw7^r6L(@!sfJKv8d+X8K5vg)aUWIqUgs7Wb*w7#aqWi6L2S-}$H zFGmOcAvngV%36P_bVkT2vqK_zN=NpYGp682Ax~a*d_E)rb)-cXqUQwrTD<2OMRLRi(Gu?4|L96VX?muJ~nQaLr6-0skL)is%q z>Cg)z;}j649DZ#IX^#{xXg<}J2`#Nq?#j>Sr*d|2f!;5JCFVMtqppm_tI)Br^60Xk z|HKw<{Y*MIF@By3$haftFfx5N_J|1*2QK<$);&AcSl*7yw<*ngn}61XKNN|5@jn5- zdW)>*oDKHob=2=p+}d@x`;EL^3D8*GqN|0siOw>z|&NtT|m0b~q;nRNIkMnrN zQS1iC8|@MpbQ!)Yc6?yZwV+-TR2{?Saaj5I?tA(0Dn*EE^QTe~fAwmCNr+Y0tkjXH z{E59{N1Y2hys}n34R=C1r{g4({@ou6sw0$xwYRhu-a^*Tv;^YG5H|w@Elv)eNS}8| zHuqFWd~8SJrr%S>zx0Wn6`Quox)F`o)#v^Gje;4Bpjphb-M{IO15mEb296`7=jRm` z!|6@1>v&U_&N>5p&3Wqs&4i}f4D(dMbOkM)o~igh-259%#$ZEh?4c zt|3(~A2|qS{w^(*a&mGSu+c0g*y@W6n1^c2s2sXB+qEqw8oO+MZ8Wac{a)H{U7Oq3 zNTOJv=C~TBdXq%5W!Q#QN@M{^Ti2Id)+?u-Uh}(_j)rI#7UEL49Xf(6-Nfr2^VXle zYX;2(M~g>VFovr(AAA-#H@-H<+zLaru~9)u>_$-<#hR6{ezIPM3|~POl7&Vmi)aC= z4%kPp!v)TK^VjkWQbcYEpPlnK!uCW<0{f+>Pd+O7me%f4`o5+^&c`*Kmv^FD4FdEb!T zR9(0-J?Z9ut3?a-8nsVyDm0A+q@sA_iwQJ=e5II(pl2_6Y1F4Ex$-T)>{|S;Sj6yT z^fnb;)4Rg!J>>iJ!rvRrmPN}?gC*w9Z1>YiL02xrYI7rsEBtqFFzd5|7j30SL+#I^ z17Jk+hUrl_^{%G^nx(n~-_GIq>8YlCc)U`=f^@k!kZ=Ex`uuX_o1s1FL*;+a zd9y^S=0}>?+X7z1E-3hJ33zTmmFlN-ZusO^wd)q%H)orb^#W9NH))FZW-}GxByrGNY(VTSwX*4m(wDjic{6sqxEdgVYLLqc!;*aeD2^uA zX^_twP;z5nb5(a%M_u_3qsU4!PIR&|s88mucoe4t@aBD9+-bQABM(CSMKFER5Ycp_ z#v$A(>U8}eA4GywOQ!H{?Y-87<84*U?VWt@jN{vV58O0jnI|D8OZx{3(1dF(djGS$ zzfx10^2ocwLRonp#S`n~G6?huw+!t~HIPeqKZw&&6VbzJ<)&tf8ZQkBsVKN`YQqH-lB4fSnOk>*o zU_r$8&2>{XFm%=B!N#SMx#>sM61PJxMz@b~_XIu{o196RVzfrTbSqabHTp+qi_44X zF{=h3ksXZJP+bktgEqbnHWJetD+jm2d3Necea7X|%r3)7mmFCMbie z(*J+w{r{*1WLcc4^(Y;NAypzE6H&V73m1BH_Z|&A8Jl_*w&mYa0=2qIM$)JQ8+JPS zb>zP6)11@?o@vk`xYzO&u@Fs`cD0+#qom%?q>Cps@d299edwOI_zOa%b2!j-Q_J-0 zNSnazZiSQ!$?Sjf$$@W{p_ZfZghWt?DYVGFR@JAa&wd`VtCx3eZtbt0&Sljijpq9x z{=yj$X&h7&2xPJbn+Wz>S|iNMtU!}q`uoK6bmrA+<3XkzA;$r{0TJ}1jG@udNTF0j zNT%6YPr_0(ZVabEL=xC;go5lbG%*ko+3f0y7U>=FW6GAd+m?4L3rRj{4d7sY?E^~u z5Kzke^2C!G4 z1zTRXR>PKdmnZn2XJ4J1=)>tRLyLg~aqiLjyKwWHr@jr@33z z+|ylC+`|qzv+!Mo>npL9%NQ^n{_XPjNx{$g4PQNMeIORqi!rIGs6eI*?}Z0m<@4bq zBMQJ=y=N?h=x@2W-Y1zNJG4OiW+1-`b(b18ULmbrq#=;^OB1`CD1GDUk zFGFG3hkozhdgtWCRieoZ7NrDUz#uI>ee=u>zyIP6Y-wkQsnaKP2YQi(V1l|4uO#X> z7fO{1JsvI6D3*9Wie4B{%0FFQHB0BQpES=NM~?0f(77OF&HPJ7_akJF2Lt36O;ROp zwrF$3psoJsbdYTQy0=hTTG|5a;jsyB1MsD0P)#N5MC3D^15W>#TzVfCpGZ&Kc%{?S zue82!zxe>4W}Fc4x&C%TUw55eewwt87wiJ&t+VF=Q86;IFIu=g!3C|j&abe6U@t*q z%O^+omN!WW%* z8QjmUgzp_sQHawmqZsWRrRJqw=?)hJthR198CEF?(3P5KD(>gPPud>FxUFYiTfx@8 zFoAwm?GzRk-X1rf;QL7Hw5a4s%N?HVv|pI)AtH)jOa?2?iPSWf-RlFhF-~xya-MH@ zBgQG!xJDD#H{{xE8JL2xMT)3GH#5n)w$7rkh}|%Mi#>o12Ju08K*$9g^~a5@sU>Yh zg9We^L=i-dw9a#u8l)=#pPW5ur8#_6IzFGsQsR9=&^;5Jr2_x) z-1P`E=GQlDLR#A*Vq{;#ku2;&KRly$oc?J#NNJw3tuL|@lk+GrNG6=DCrG#J~2O81Cx>X`BW z*=zg<=7dNzHa5n^6*wGtiAb`%7dG!j(YE+qUe4EBtq*n69T*)=G#}M-K7T5OmLv2e z#?Hd&X;nc@&M%uy8M^*%RP@{au~CU@Ic!Z#JVx&EYuS>z*TigL=v`JZ>6Lf22=6a( z4{rl0H2&4fnOmuF+F`8Cy>6F9uH9XmpM9LEgap>B5 z({ul;lHGpW{6yQ$P@1**gdT2*^G^x3TsMej^~?0lt8CzP{o<=0`L#3nPzx*L#-b=( zLVGJOuU0FA{S%i9suoM_IQ0wRbGOO`Y1si`Vy3&-y)Hx%M}m)D7imzSwA^-W{(i_- z(c?7kPao#`Me?sSe{Sl_jHsY)=v_u?q~&dGhBu)yQS>i5n~j@{uWL6}2GbHZhubOk ze2VrOb`#7!r|Lx(XG>e&^Z+P)PWUJOi9FLo zWCzk{w_L%h*HvcBbdCpBh=2f_%NM*XNfR=cGshP&=*8W{R4xl#QgOeR` ziKz8W@67)r-cJ+JTrCvoVpr*9Z-)wvzd8vT%S^-RnIp zAGzWa5Oi)jbXeEIQ;NIh`59tOc zX4E_Ys1gC7I+=K9SWc9hn!2~Q=i9%9Q%6Cs-CwO+>IPV59^_*H0Iml4_uhCX!OXaM zsMN=gk#=G!Po+<*c6|D5$zXMg?JEzUV&8CWCg>+4xaM=Bc=~y{w*FkS>}sLy)f4`J zGO%@))7ZF}4Tn^zTM7W6;(f5vn0Yld7Z)BdGl1`e;q(hCGZ8Peg#}s}DRW@8?W=ad z)B7*&%AuL{o39>uK|TVRiUmbDF;nf6=$e$i?Q9<1B5;2lsd{`D?|$>tP5AT<+?0Y~ zyiGp7d(pXjK|iDNZ*D%p^aw)VjwKBY$Xg8AGwky__7(hqr2w?+@k%JBd=MnXC=*2_ z?n~f5G*kj`cOfciYg@a#8MRr!DH^4T_W$cgNIvT==6=6vzkI07)AWm~#P<`Ry0fu{ zpfZ&hKkdIJ290Q+cMY9>K9ub7k~y%(N@!o&x>}3KZZzIOUgo1SY@kc2-2R?u`>;#! z%<;#was03G<5%sHpWEC=;ZX$9a6>R!=_sY=IPDNBeCArDQ2V(Ka5#34ZVYj2G3~1h z2CfE=Z6tdcmvFu^)GQzIhALp@ZWVV%xw)r{NTHA+UGRE_%}}74`rL?7JS2zPrapda zHIdUc^Ea-%;>Cp=g=#Tpge4J~>{dPLxKcEivD%bNaU)j;e^p&|wh6OVd&S z1vSv+{rY+{bm;f30@f#tC%7LuuQgzYQz_6ZuP*^rpgi!J$NnS5_N2}V!M_xhmI+!wJ z9tm`TcH>}#T-)wVQu>7F@kZJWfnL7k>u=UP95HZ&=8?ovxstTC4|Vj;zD>mCCheoj zLwKGw(IIrJp91dj+auqD?roARb#*z?uHqc9m1FaH<2Uto$kYyeMq+Ss5^Va}VmaC{ z>qE|qe@>x6pYsK3hzPm`i`LZ8-5~7!3n~cZ2hNwgo_%H$CXZaZbv+Ra&AG}=tb=A{ z{?Sp;3|%s6kC=NtaP1WJAO?ygDJiLnPgv>(GAP%`)v%%wKPap?Y>2~r(W!_n^GLi0@0|Ob3IR)SKD5MxcxU&JNBIqAfyxf z&iCzSa1CqjLfWFmvqeP_uFWF*%RdQ=v2vO--JDwU)~{t|)r}9-K{L-K6b;4a{X3J- zML{Wi>)>j{+Z#AFu0uHyP8+~pKgS5aMGJtWKawy4jkKW=;wY>-dyW-s;TBO$3gH1S z(%(;4!9I@MV+b^XbQttG#93~&kVe_|_-DT*BVmnZ<0n+F(|bN^pGsUo zyry60v~53C3jg{!&UGdA@U}(Qc^GO3cER?%`mtfE$SLNv(I<;8)dy%iz|*e(2h}f% zIvxt?CUOLUgP~o9{;x=|3BZ+aq8PKb z?F51aJXr>W^y+?rViH7?nN&x#ym|C)>U+%oHvwbaxI7+5|0D&uxX6dRwgEAD>c|aL z_04|P#x>39-uZP2Xvq7bx57pz z6cH4k#kPOIhKZ=0+jM}p8a$Z8W)JGC~j_qK9*UcL(-=ItPWpYF6A;3$u1gyiKgkF znE6EvQ8ZEf<7ya#5}EJ$HmB#cEh^}^B@YBT-BugMn0;1|mJT{~;b&X}9rC{hi&U1t z<&Mq%+1|c%v%fvo?m`^^Vy1rgh+_Ot+3GHAe)rMIvv!$;$LlHnr>^0Q1wC}C0tU{S_Mzcipnl7T?!RsEVb?E&Z++GzO zxZzvuH%LFA6EvN@w16&qR@s1J*V1y&d;Fj(=7#>!OuczEDmRygpA1vGRP%79639P? zzO&ZfyEnyERB(WD1d_tHz4K{2i4WuEsQ(~f_B%?6_v}n53X9{T^TEdo1OA|vviQFr za{H`qZbQmuW@eYfB)wl-)uVsx2b@(~%n_G8?PPf#H#XGkM4B<~S>|P*ZqphOKJ)#T z{+$GAJP{DI%4+pAA6u_&PjBKQSKF1+-~O1lKlJy9-yah~i%RIHmsCk|W7!t=jAz~P1VBfh5s69Zo&Bp;>X1qY4;#stU z=|XG7{9t=m9&IlW${d1yoxyX1^+6J!J0zx=%@dKW#-L~7va~#E1&EymF+) zV{^jh`ms)T@EKbZ$9WZO6U%2qFbr7aZhleG8_-^Cemtw@c`SRpJU^U^_S*`lUB#K% z*-q$H*PS$4#uz?Os{r(;-LcHQir33VM-^rp#dtqtuGb%yjW9ULEUq?zTE+Pnicata zhR;(`q2AhdXn;#d_TxA#VCxq&ATI|{E~llX#|XbI8}vc`2;{rvQt;l;XU~X_IQPl# zxJOwQ#q(enc%)Sa>Mv7y5Jz%-xIL_F*AlW}5}wh&~Z%4*ZtKT@BTT@4VpCSVuO2$?nBL zT`PTqAhcWd&X7bfO{6zS5%u?f;Ht#MUtCQ#oB0o1m6%ue?h&eabKW!Q^2D7XD+d>J zuO#`%9Rr4l&^G1fcB!kV_yJxV`q6>;?%_GNs%k1fIH3iR;|Mg{`G;j{hIK8Hc<(Lki)o||duE`!&+ri6& zs)do1AKP$jGgw;E8YB!82IaW)qJhMb9H6!^B9(Hv*P1QV&^fE>%;uy-*#gB( zw7W^OUa}Ine4gjP^@2HqNW>M&HN%fPJF05#jm`%%OreXlC6Zxv;e<-Utaaa!=NQgx zZD{B=p3Ump5m^#^mAaRUUCvAjUCtn~M=+}z_slg&=u!~HI8wO!4{74Nfvbft9Je01 zv0ezsKO6NMAkL7m>ClY(`pK~pb}o7SS$GP<3_7I?O$z4Mu9!(at=S!iyYh9a|7urG)2~37eUtJcY);* z!E;K2oKkX6BFDprhnt^QJtmjeSg8mH=y{Y3o;s-5o9`_3w-|9A2%lpgoE@Tq1`ErP z;qxfRn@?ykd`HdS2Rt~>2*g>QMR4E8LWhsoDN9F$E3n?Pc~PD>fw#9<+4`_SKq;n$ zdDyMHF?TAr56CnA5E$X>G3+g!hK?(MHZ{G+xI6w6)Wn$a1xpx&PYD10yXC;>k>QJ+ z9I*UI6dqGn#^jPwj~%i6jE5DhhFl2bti-Q3UxsApf$FwT&&{GY*ZQ*KN<*Wy&c{ty z0LSSaXEp{qWgiJrvGL?*i?etUT=>U9n$aEqQFC-QQ>B8MMcWQPgy%r~ozTRy93E8J6dVIJQXWw=IraS&9?Gk zjSIlUb*{M%t6_ezSN-%}T3jA9UDnaVs@F&-7dL437VcS2miA?L?E(MbVGe_FGvY`o zN=E(GnOn@CvrFQ;{O?Z&jtSL)dA;%1C&>!+tLE^&zs|o7qR8~VdiBb;1F@yTW&01j zoV5>Lg$lg#OPJ0WXyeL*HVPaR`1FPIl*D&_+d{HGj8WvNrpL8amxw(nFdL)wMa)8K z%vWgvS`Q3tmg0dtG{_d7OdrP`AbY{`E$MDd38QeNU!Qq0#k`7O%?{Zz3|%dq$zHi!92b8})v_3ezdI{O zE@~<_rail>tjN@!%tzrY8byh9pss6R{uO*dJ`++~KFr)kanOfoo4m%Ft#`Jqw(OgA z)GIi2_-%OWAfmOGE9`mV*>-;a{(Z1A@M}Fh=Mrq<$L~QIIpMWjLkyqwgSTo`>^180 z+k3$}@F}i|N&C6p3LUOiE{iLt&<5X)BVznWM3Y`F_)=*`nGeGrBb8Q>^pT6j!`R;B zMA)`4!+52ZGq**-vm4-O#PHv<0Mk!_xvDHy){fyXS?39`ny7WYrH3p$#l;&n6bE0Q z?7T2>q|bJPr21OD2_w?TZlTT9qzs|=Et3wV`6J}kHyyUOjo?hlGc)`;Hc~&gwU3K} znhtI92JXZ4{eMUPQpa{{eR#s6#{0R~(D3he!S6!e(%AJ^sy{Di#hTr)$a%n<+ytZg zD1X{Icq{3FU$x|>ZIE>7Io<;RwM{Brts&*6{LGVYAma~1yN-M&)P{Bdjq7Z0?LQ4> zm5v?v>ciQ_YbN(*2Ils1b>T7Pig+3#E`IEEHe#2gJsi8AJZ>AeB1hkW;#6WHeQwMa zk&=AI5Bqg~9>W-ZsH=%PkM}CKciKeHO&bBl{go8|wKJN?Dt6RsqKm~->(A`WpKjs_ zcqDY12pf17$3G{pC&kM-H9GX}_Yf3RKTHn5`AxnX>4!*$Sp>#n#fKX|^smfG4t!H` zk}C1Fl$M2$TbIkec`Zx9zNkbGddy^173iY0;ojfJ?TP2e>*c~N9kRdlpn*R@&1@|} z#J;t}Z;kNw-WDa#$ous50P5GV7c7!FV_yBE(@XGxOb!6|S5E_1SJ#Y!^l;fhBB^mu zGK};`0;du77TCe0y+~LQytjd>_@Iw`9+;THv8S+>d6e z7T4}=$L+KDBOrBfClAB)uR+(`a_OTl$oK(p?RyFwls$`}*;;!5h1gRPW|t~4(t%>~ z3#nndpYP6hgu5MMv$L}&c+up<1q1|635mi{$hTS9<}`58M2BuW{ETx^6(yKuMMWTk z5hPrF*v+QEZO{44Q+^0d);>Y>lsdQ&^VuSeCTrN^BbbSqnfV7D9UYu|c=-D)R#tzP zBi&6oHp5O#E$xt?75)51{pW2pZ4`XMu8ZU5qOE^JpgKot5zzlH);_=6j#rA2#l?;D zt&zplrE6T{E@MM?f9Wt_r?v351NM4ddz>YjaNGg-^K&$_2;`fRKJBk{J zWrt11`*zKjV1{)KIl{Z&QleI5&!Z!_GWNid__A;im$DytK9xjWPCU~&cHt@uuU~sa zQL^Jzv~H}PHxej`eh*{JK8R(BO1R&3L0e;uF6O!>9DjW;{}A7UB7mp+eAMGvKZt0X z06(8X4&WgLW>1>$(bPdzLJTmFmX~~jW!V{3Ts@ntpPd{+sVGbq{-K{-j7rk9*^HS=<8j?{e$ zKb5RTSIJ(xfFpfW#1Oi-2g)gnAK3a;P>|Quq&x3L-$DVj?;4Z&`1tB&;6LO?!M&?D zoBbd>7~Cofju1Mwx6Naq4Ekbkq@%VbQ&(rQRAWWmj6D78W4x}OUc5$rzNL)~Is?)q8X8)@BrcZe0*-PGz?R43 zO`4+C52upme%aS+4S8SV#0Ecj5M>3r(NWSydIRQ@j0oHwjFdTtdnpJH|A;r--QVCz zM;TvuKz&VXv?ee|{zyvixI<@EL~Z8_kdaOWhn&$b86=9j`+#8+DS2I8-3uSL6pl~+ z`1{{lw-U*^e*V0p^q*N=9Aq_@pw0Ok{gX1)MV)^fw2|Y1hpqs~06}g1RzrkNPK~cJ zHs;ZOD_V~L{8ZoG%DfHBKk+yZg>=|sA>ob3D`_wma(g8oASPsIvw!~l8BSa^PMJH7 zo9DKCu!m2lM7Q<>-!h3jpdw2Nf{v5$qTsPgJ0JhDlXTR(9j&=spjq7`Eh@c2&IJ#2 ztXS^A=Yxy`LqihY-feb41uXlgilQ$rlyAYr_I|fms0N{!>RMXqukS+g-oTNId9Ta> zh_P(nP7VObga;zs?58}icfgUM+|4;v_sedOR}&1ApRsz@>742F$JIno zN8^;MT-(PotF~5{JWuzMgi$Lg@6KoJk2>2`aBrG}jst;}e^)p-pL1?{qwTGt+Fna4 z@UFl2cl?BO+=NPn+1S%SwE1^NYUwO6&67ckW4ldtDWq9fKS-oUsfi-y146FE_)Z%YaOXNx4NRIz;1@O^t_*Eus?$<2W;nS<+i^$Q`St zz9)jd0pn73Gf+`|tqPIcpFKV6qYtF(t4KECSY^a&YFxt_*zS-h#3c2Um+)wyROBzk zWu&)^d)>`QB`rxaVfu9+Lp~#SxNOz~5}TDpadsYHIlMJFIq6qd$D3bJz^E%cN?h6^ zPT4?BvcJB4(}mg(4Knk6wjcd8LmIbVCxIH8OjvKm({-c`x3wCV_LH{_!ZTcf$ zp~pwLk=5pJP~NkF!d1i8a%RJ5Bm3C%APkAMig&2rWZhY4H!4RzoRyrIarCh2M8<*d znXfx7GCx7^nHdx-gPgn!fAYZSv= zZ{LDItgNiS{(|4_)OZCN*FQ6Dn(c{aNR&Hd_!j^U{#8?%XNfhpaEg);=Ki%f)4e46Y&Fhy{)YTD#yWxswU!89`@GApU zv%%s;-l40I-N0~n7OVY19fSt899;#sP%q06)@LE;*e0?-l641Zv3eefHFmoPq3*PwS?GB1R>*C5dRbFA@=-SD8l@0`bOt_3}CW{+U+V=8Ul*hk4Qg6Ae) zy+mUA)Nh;=b~3|^cU#{rP?l?=}S#J-;Xds9ibOT#+jc0 zd2iJUk$v7=83V&k#ZK1(8uHRmLU}uY)V0;@f~@{SHCc4R$TOb?JH|4FXvaK(#v7TC z>&rrtAwfCdX`4|dKTg$QYx|SN{ChbnSA$dF8KK5JE7qnH&h3QQ{@vj;?_=RifJJs4 zocQStIaCj>VsL7rF;u(K&`6h3zd(f{??l&g>hj8_QMKfY=Bs!MFQ;W?#Rg#_+mRGb zk)%jsPI!>R^`Q>8_xex%KOM}wcx+m4C5zD4`l2bZfbLpYS5#L8CY8}I-Xt6=4OhS| zS%UbnLiW(pUy67PkUn-OWtd0-c0L6p`Ri?XyUS<5Fu})-!ENAnxmz{5ySvhaM8p1{ z+9Ne!%<(*F)e5^5k`tX{0>Om44Q!Os7Qj7#wy9xHWwneS&+o!d$FNzGz{e8f7sMlg zf#`TuR+f30d#l^7ByXb4fA!=UJ!4&yFmWJLuhw4YTiKtvOijLj&hstdYPsF|G&N3y z(V6{0gcGY>V!M6_47OL4|C)wQs?&oyU zQRyA@zi=#7j?3Hb(R}X#gMN(i_S8npcnpfk(_$30MTWjyr$~aAF*C^yA!gRhZ=X~{ z7IJJe_!rME<@&9Oi^Nj}pJwvlJ$cUU%1dv$L+Jch`pM+?m$mYo&IbG@FKy{?*95jR zsn#YxlxTajzfL^DWcr6Qe5=}T^X<{@Qc97}$2*Pq`JKo|SYfIuL%Nt&A~26M&Z^xo jZwBXoOQe0DXEFPY+M4cqBX{6rJ4jASQL;?J*#Cb3Z|1hQ diff --git a/icons/mob/inhands/equipment/shields_righthand.dmi b/icons/mob/inhands/equipment/shields_righthand.dmi index d4db35b9b22a92c83b3960d043eccca271b43a32..2bf98e4aa4875a35022d1e0e4794fe8bd459c6a0 100644 GIT binary patch literal 14974 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 XX-${i3kc>R8lWJnDpT?LeenMP!%aCX literal 5286 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 Date: Fri, 26 Mar 2021 08:45:14 +1100 Subject: [PATCH 3/3] Ports #42721 which happened to resolve this already --- .../recipes/recipes_weapon_and_ammo.dm | 2 +- code/game/objects/items/shields.dm | 67 +++++++++++++++++++ code/modules/assembly/flash.dm | 64 ------------------ code/modules/cargo/bounties/security.dm | 2 +- code/modules/cargo/exports/weapons.dm | 4 +- 5 files changed, 71 insertions(+), 68 deletions(-) diff --git a/code/datums/components/crafting/recipes/recipes_weapon_and_ammo.dm b/code/datums/components/crafting/recipes/recipes_weapon_and_ammo.dm index 0135cab77f..95361c3da2 100644 --- a/code/datums/components/crafting/recipes/recipes_weapon_and_ammo.dm +++ b/code/datums/components/crafting/recipes/recipes_weapon_and_ammo.dm @@ -16,7 +16,7 @@ /datum/crafting_recipe/strobeshield name = "Strobe Shield" - result = /obj/item/assembly/flash/shield + result = /obj/item/shield/riot/flash reqs = list(/obj/item/wallframe/flasher = 1, /obj/item/assembly/flash/handheld = 1, /obj/item/shield/riot = 1) diff --git a/code/game/objects/items/shields.dm b/code/game/objects/items/shields.dm index 9ba994746a..84faf27242 100644 --- a/code/game/objects/items/shields.dm +++ b/code/game/objects/items/shields.dm @@ -351,6 +351,73 @@ playsound(owner, 'sound/effects/bang.ogg', 50) new /obj/item/stack/sheet/mineral/wood(get_turf(src)) +/obj/item/shield/riot/flash + name = "strobe shield" + desc = "A shield with a built in, high intensity light capable of blinding and disorienting suspects. Takes regular handheld flashes as bulbs." + icon_state = "flashshield" + item_state = "flashshield" + var/obj/item/assembly/flash/handheld/embedded_flash + +/obj/item/shield/riot/flash/Initialize() + . = ..() + embedded_flash = new(src) + +/obj/item/shield/riot/flash/ComponentInitialize() + . = .. () + AddElement(/datum/element/update_icon_updates_onmob) + +/obj/item/shield/riot/flash/attack(mob/living/M, mob/user) + . = embedded_flash.attack(M, user) + update_icon() + +/obj/item/shield/riot/flash/attack_self(mob/living/carbon/user) + . = embedded_flash.attack_self(user) + update_icon() + +/obj/item/shield/riot/flash/on_shield_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return) + . = ..() + if (. && !embedded_flash.crit_fail) + embedded_flash.activate() + update_icon() + + +/obj/item/shield/riot/flash/attackby(obj/item/W, mob/user) + if(istype(W, /obj/item/assembly/flash/handheld)) + var/obj/item/assembly/flash/handheld/flash = W + if(flash.crit_fail) + to_chat(user, "No sense replacing it with a broken bulb!") + return + else + to_chat(user, "You begin to replace the bulb...") + if(do_after(user, 20, target = user)) + if(flash.crit_fail || !flash || QDELETED(flash)) + return + playsound(src, 'sound/items/deconstruct.ogg', 50, TRUE) + qdel(embedded_flash) + embedded_flash = flash + flash.forceMove(src) + update_icon() + return + ..() + +/obj/item/shield/riot/flash/emp_act(severity) + . = ..() + embedded_flash.emp_act(severity) + update_icon() + +/obj/item/shield/riot/flash/update_icon_state() + if(!embedded_flash || embedded_flash.crit_fail) + icon_state = "riot" + item_state = "riot" + else + icon_state = "flashshield" + item_state = "flashshield" + +/obj/item/shield/riot/flash/examine(mob/user) + . = ..() + if (embedded_flash?.crit_fail) + . += "The mounted bulb has burnt out. You can try replacing it with a new one." + /obj/item/shield/riot/tele name = "telescopic shield" desc = "An advanced riot shield made of lightweight materials that collapses for easy storage." diff --git a/code/modules/assembly/flash.dm b/code/modules/assembly/flash.dm index 07a9f499f8..5eb1f77fd7 100644 --- a/code/modules/assembly/flash.dm +++ b/code/modules/assembly/flash.dm @@ -262,70 +262,6 @@ /obj/item/assembly/flash/armimplant/proc/cooldown() overheat = FALSE -/obj/item/assembly/flash/shield - name = "strobe shield" - desc = "A shield with a built in, high intensity light capable of blinding and disorienting suspects. Takes regular handheld flashes as bulbs." - icon = 'icons/obj/items_and_weapons.dmi' - icon_state = "flashshield" - item_state = "flashshield" - lefthand_file = 'icons/mob/inhands/equipment/shields_lefthand.dmi' - righthand_file = 'icons/mob/inhands/equipment/shields_righthand.dmi' - slot_flags = ITEM_SLOT_BACK - force = 10 - throwforce = 5 - throw_speed = 2 - throw_range = 3 - w_class = WEIGHT_CLASS_BULKY - custom_materials = list(/datum/material/glass=7500, /datum/material/iron=1000) - attack_verb = list("shoved", "bashed") - block_chance = 50 - armor = list("melee" = 50, "bullet" = 50, "laser" = 50, "energy" = 0, "bomb" = 30, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 70) - -/obj/item/assembly/flash/shield/flash_recharge(interval=10) - if(times_used >= 4) - burn_out() - return FALSE - return TRUE - -/obj/item/assembly/flash/shield/attackby(obj/item/W, mob/user) - if(istype(W, /obj/item/assembly/flash/handheld)) - var/obj/item/assembly/flash/handheld/flash = W - if(flash.crit_fail) - to_chat(user, "No sense replacing it with a broken bulb.") - return - else - to_chat(user, "You begin to replace the bulb.") - if(do_after(user, 20, target = src)) - if(flash.crit_fail || !flash || QDELETED(flash)) - return - crit_fail = FALSE - times_used = 0 - playsound(src, 'sound/items/deconstruct.ogg', 50, TRUE) - update_icon() - flash.crit_fail = TRUE - flash.update_icon() - return - ..() - -/obj/item/assembly/flash/shield/update_icon(flash = FALSE) - icon_state = "flashshield" - item_state = "flashshield" - - if(crit_fail) - icon_state = "riot" - item_state = "riot" - else if(flash) - icon_state = "flashshield_flash" - item_state = "flashshield_flash" - addtimer(CALLBACK(src, /atom/.proc/update_icon), 5) - - if(holder) - holder.update_icon() - -/obj/item/assembly/flash/shield/run_block(mob/living/owner, atom/object, damage, attack_text, attack_type, armour_penetration, mob/attacker, def_zone, final_block_chance, list/block_return) - activate() - return ..() - //ported from tg - check to make sure it can't appear where it's not supposed to. /obj/item/assembly/flash/hypnotic desc = "A modified flash device, programmed to emit a sequence of subliminal flashes that can send a vulnerable target into a hypnotic trance." diff --git a/code/modules/cargo/bounties/security.dm b/code/modules/cargo/bounties/security.dm index 6ed86cd4b7..5ddf456573 100644 --- a/code/modules/cargo/bounties/security.dm +++ b/code/modules/cargo/bounties/security.dm @@ -23,7 +23,7 @@ name = "Strobe Shield" description = "One of our Emergency Response Agents thinks there's vampires in a local station. Send him something to help with his fear of the dark and protect him, too." reward = 3000 - wanted_types = list(/obj/item/assembly/flash/shield) + wanted_types = list(/obj/item/shield/riot/flash) /datum/bounty/item/security/sechuds name = "Sec HUDs" diff --git a/code/modules/cargo/exports/weapons.dm b/code/modules/cargo/exports/weapons.dm index dc2703c146..c973ceed26 100644 --- a/code/modules/cargo/exports/weapons.dm +++ b/code/modules/cargo/exports/weapons.dm @@ -16,7 +16,7 @@ /datum/export/weapon/riot_shield cost = 70 unit_name = "flash shield" - export_types = list(/obj/item/assembly/flash/shield) + export_types = list(/obj/item/shield/riot/flash) /datum/export/weapon/tele_shield cost = 100 @@ -138,7 +138,7 @@ export_types = list(/obj/item/gun/energy/xray) /datum/export/weapon/ioncarbine - cost = 200 + cost = 200 unit_name = "ion carbine" export_types = list(/obj/item/gun/energy/ionrifle/carbine)