diff --git a/_maps/RandomRuins/SpaceRuins/medieval1.dmm b/_maps/RandomRuins/SpaceRuins/medieval1.dmm index 033164cc773..9d7e73f7b47 100644 --- a/_maps/RandomRuins/SpaceRuins/medieval1.dmm +++ b/_maps/RandomRuins/SpaceRuins/medieval1.dmm @@ -85,7 +85,7 @@ /area/ruin/space) "sn" = ( /obj/structure/table/wood/fancy, -/obj/item/shield/riot/roman/fake, +/obj/item/shield/roman/fake, /turf/open/floor/stone, /area/ruin/space) "sR" = ( diff --git a/_maps/RandomZLevels/SnowCabin.dmm b/_maps/RandomZLevels/SnowCabin.dmm index 66e63a1e580..2fdfa3fc7ce 100644 --- a/_maps/RandomZLevels/SnowCabin.dmm +++ b/_maps/RandomZLevels/SnowCabin.dmm @@ -3669,14 +3669,6 @@ }, /turf/open/misc/asteroid/snow/snow_cabin, /area/awaymission/cabin/caves) -"rm" = ( -/obj/effect/turf_decal/tile/blue/fourcorners, -/obj/structure/displaycase{ - start_showpiece_type = /obj/item/dice/d6/space; - desc = "Contains an artifact stolen from dice collector before he could enjoy his day." - }, -/turf/open/floor/iron/dark, -/area/awaymission/cabin/caves/mountain) "rH" = ( /mob/living/simple_animal/pet/penguin/emperor, /turf/open/misc/ice/smooth, @@ -3859,6 +3851,32 @@ }, /turf/open/misc/ice/smooth, /area/awaymission/cabin/caves) +"wQ" = ( +/obj/structure/statue/snow/snowman{ + anchored = 1; + name = "Who" + }, +/obj/item/clothing/head/helmet/knight/yellow{ + armor = list("melee" = 11, "bullet" = 2, "laser" = 1, "energy" = 1, "bomb" = 5, "bio" = 2, "fire" = 0, "acid" = 10); + desc = "A classic metal helmet. The cold has made it unreliable though."; + name = "old medieval helmet"; + pixel_y = 7 + }, +/obj/item/claymore/weak/ceremonial{ + desc = "Brought to you by the guys in charge of making replica katana toys!"; + force = 1; + layer = 3.01; + name = "replica claymore"; + pixel_x = 5; + pixel_y = 8; + throwforce = 2 + }, +/obj/item/shield/roman/fake{ + layer = 3.01; + pixel_x = -7 + }, +/turf/open/misc/asteroid/snow/snow_cabin, +/area/awaymission/cabin/snowforest) "xa" = ( /obj/item/paper/pamphlet/gateway, /turf/open/misc/ice/smooth, @@ -3978,32 +3996,6 @@ }, /turf/open/misc/asteroid/snow/snow_cabin, /area/awaymission/cabin/snowforest) -"zd" = ( -/obj/structure/statue/snow/snowman{ - anchored = 1; - name = "Who" - }, -/obj/item/clothing/head/helmet/knight/yellow{ - armor = list("melee" = 11, "bullet" = 2, "laser" = 1, "energy" = 1, "bomb" = 5, "bio" = 2, "fire" = 0, "acid" = 10); - desc = "A classic metal helmet. The cold has made it unreliable though."; - name = "old medieval helmet"; - pixel_y = 7 - }, -/obj/item/claymore/weak/ceremonial{ - desc = "Brought to you by the guys in charge of making replica katana toys!"; - force = 1; - layer = 3.01; - name = "replica claymore"; - pixel_x = 5; - pixel_y = 8; - throwforce = 2 - }, -/obj/item/shield/riot/roman/fake{ - layer = 3.01; - pixel_x = -7 - }, -/turf/open/misc/asteroid/snow/snow_cabin, -/area/awaymission/cabin/snowforest) "zm" = ( /obj/structure/sign/warning/no_smoking/circle, /turf/closed/wall/mineral/wood, @@ -4147,6 +4139,18 @@ slowdown = 0 }, /area/awaymission/cabin/caves) +"DS" = ( +/obj/structure/sink/kitchen/directional/south{ + desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; + name = "sink" + }, +/obj/structure/mop_bucket/janitorialcart, +/obj/item/mop, +/obj/item/reagent_containers/cup/bucket, +/obj/item/clothing/suit/caution, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/awaymission/cabin) "EM" = ( /obj/effect/turf_decal/weather/snow, /obj/item/modular_computer/tablet/pda/syndicate{ @@ -4266,6 +4270,14 @@ /obj/effect/turf_decal/tile/blue/fourcorners, /turf/open/indestructible, /area/awaymission/cabin/caves/mountain) +"IW" = ( +/obj/effect/turf_decal/tile/blue/fourcorners, +/obj/structure/displaycase{ + start_showpiece_type = /obj/item/dice/d6/space; + desc = "Contains an artifact stolen from dice collector before he could enjoy his day." + }, +/turf/open/floor/iron/dark, +/area/awaymission/cabin/caves/mountain) "JL" = ( /turf/open/misc/asteroid/snow/snow_cabin{ floor_variance = 0; @@ -4430,18 +4442,6 @@ }, /turf/open/floor/wood, /area/awaymission/cabin) -"NY" = ( -/obj/structure/sink/kitchen/directional/south{ - desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; - name = "sink" - }, -/obj/structure/mop_bucket/janitorialcart, -/obj/item/mop, -/obj/item/reagent_containers/cup/bucket, -/obj/item/clothing/suit/caution, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/awaymission/cabin) "Oe" = ( /turf/open/misc/asteroid/snow/snow_cabin, /area/awaymission/cabin/caves) @@ -14173,7 +14173,7 @@ co co co cx -rm +IW td td td @@ -26652,7 +26652,7 @@ an an an an -NY +DS hg aq ht @@ -28140,7 +28140,7 @@ ab jm Oe RC -zd +wQ RC nE RC diff --git a/_maps/map_files/Blueshift/BlueShift_upper.dmm b/_maps/map_files/Blueshift/BlueShift_upper.dmm index b9a62f63f62..6f0070c76ad 100644 --- a/_maps/map_files/Blueshift/BlueShift_upper.dmm +++ b/_maps/map_files/Blueshift/BlueShift_upper.dmm @@ -3796,12 +3796,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/aft/upper) -"aOS" = ( -/obj/effect/decal/cleanable/cobweb, -/obj/structure/mop_bucket, -/obj/item/mop, -/turf/open/floor/iron, -/area/station/maintenance/fore/upper) "aPc" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/simple/supply/hidden/layer4{ @@ -4440,11 +4434,6 @@ }, /turf/open/floor/iron/cafeteria, /area/station/command/captain_kitchen) -"bbQ" = ( -/obj/structure/table, -/obj/item/shield/riot/buckler, -/turf/open/floor/plating, -/area/station/maintenance/port/upper) "bbS" = ( /obj/effect/turf_decal/trimline/purple/filled/line, /obj/machinery/camera/directional/south{ @@ -22390,10 +22379,6 @@ }, /turf/open/floor/carpet/black, /area/station/service/barber) -"htQ" = ( -/obj/structure/mop_bucket, -/turf/open/floor/plating, -/area/station/maintenance/department/science/lower) "hul" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/simple/supply/hidden/layer4{ @@ -26143,6 +26128,11 @@ "iJV" = ( /turf/open/floor/iron, /area/station/maintenance/console_room) +"iKa" = ( +/obj/structure/table, +/obj/item/shield/buckler, +/turf/open/floor/plating, +/area/station/maintenance/port/upper) "iKc" = ( /obj/effect/turf_decal/tile/blue/darkblue, /obj/machinery/atmospherics/pipe/smart/simple/supply/hidden/layer4{ @@ -33080,6 +33070,12 @@ }, /turf/open/floor/wood, /area/station/common/pool) +"lfc" = ( +/obj/effect/decal/cleanable/cobweb, +/obj/structure/mop_bucket, +/obj/item/mop, +/turf/open/floor/iron, +/area/station/maintenance/fore/upper) "lfh" = ( /obj/structure/flora/bush/grassy, /mob/living/carbon/human/species/monkey, @@ -58222,6 +58218,10 @@ }, /turf/open/floor/iron/white, /area/station/science/cytology) +"tKj" = ( +/obj/structure/mop_bucket, +/turf/open/floor/plating, +/area/station/maintenance/department/science/lower) "tKr" = ( /obj/effect/turf_decal/trimline/blue/filled/line, /obj/machinery/atmospherics/pipe/smart/simple/scrubbers/hidden/layer2{ @@ -90983,7 +90983,7 @@ jXz vaX apl ybf -bbQ +iKa nsW xfW qIB @@ -111160,7 +111160,7 @@ jCR qVg iYf qVg -htQ +tKj paG wcF akM @@ -115145,7 +115145,7 @@ prv rJr vDD xto -aOS +lfc lLr ekA eDE diff --git a/code/_globalvars/lists/maintenance_loot.dm b/code/_globalvars/lists/maintenance_loot.dm index 5f82b22d2b8..4cfdbd71f9c 100644 --- a/code/_globalvars/lists/maintenance_loot.dm +++ b/code/_globalvars/lists/maintenance_loot.dm @@ -287,7 +287,7 @@ GLOBAL_LIST_INIT(rarity_loot, list(//rare: really good items /obj/item/melee/baton/security/cattleprod/teleprod = 1, /obj/item/pen/survival = 1, /obj/item/restraints/handcuffs = 1, - /obj/item/shield/riot/buckler = 1, + /obj/item/shield/buckler = 1, /obj/item/throwing_star = 1, /obj/item/weldingtool/hugetank = 1, /obj/item/fishing_rod/master = 1, diff --git a/code/game/objects/items/shields.dm b/code/game/objects/items/shields.dm index cd5a69beefe..c8222662fa0 100644 --- a/code/game/objects/items/shields.dm +++ b/code/game/objects/items/shields.dm @@ -1,34 +1,34 @@ +#define BATON_BASH_COOLDOWN (3 SECONDS) + /obj/item/shield name = "shield" icon = 'icons/obj/weapons/shields.dmi' - block_chance = 50 - armor = list(MELEE = 50, BULLET = 50, LASER = 50, ENERGY = 0, BOMB = 30, BIO = 0, FIRE = 80, ACID = 70) - var/transparent = FALSE // makes beam projectiles pass through the shield - -/obj/item/shield/proc/on_shield_block(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", damage = 0, attack_type = MELEE_ATTACK) - return TRUE - -/obj/item/shield/riot - name = "riot shield" - desc = "A shield adept at blocking blunt objects from connecting with the torso of the shield wielder." - icon_state = "riot" - inhand_icon_state = "riot" lefthand_file = 'icons/mob/inhands/equipment/shields_lefthand.dmi' righthand_file = 'icons/mob/inhands/equipment/shields_righthand.dmi' + block_chance = 50 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_continuous = list("shoves", "bashes") attack_verb_simple = list("shove", "bash") - var/cooldown = 0 //shield bash cooldown. based on world.time - transparent = TRUE - max_integrity = 75 + armor = list(MELEE = 50, BULLET = 50, LASER = 50, ENERGY = 0, BOMB = 30, BIO = 0, FIRE = 80, ACID = 70) + /// makes beam projectiles pass through the shield + var/transparent = FALSE + /// if the shield will break by sustaining damage + var/breakable_by_damage = TRUE + /// what the shield leaves behind when it breaks + var/shield_break_leftover = /obj/item/stack/sheet/mineral/wood + /// sound the shield makes when it breaks + var/shield_break_sound = 'sound/effects/bang.ogg' + /// baton bash cooldown + COOLDOWN_DECLARE(baton_bash) /obj/item/shield/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) + if(!breakable_by_damage) + return FALSE if(transparent && (hitby.pass_flags & PASSGLASS)) return FALSE if(attack_type == THROWN_PROJECTILE_ATTACK) @@ -39,24 +39,7 @@ if(.) on_shield_block(owner, hitby, attack_text, damage, attack_type) -/obj/item/shield/riot/attackby(obj/item/W, mob/user, params) - if(istype(W, /obj/item/melee/baton)) - if(cooldown < world.time - 25) - user.visible_message(span_warning("[user] bashes [src] with [W]!")) - playsound(user.loc, 'sound/effects/shieldbash.ogg', 50, TRUE) - cooldown = world.time - else if(istype(W, /obj/item/stack/sheet/mineral/titanium)) - if (atom_integrity >= max_integrity) - to_chat(user, span_warning("[src] is already in perfect condition.")) - else - var/obj/item/stack/sheet/mineral/titanium/T = W - T.use(1) - atom_integrity = max_integrity - to_chat(user, span_notice("You repair [src] with [T].")) - else - return ..() - -/obj/item/shield/riot/examine(mob/user) +/obj/item/shield/examine(mob/user) . = ..() var/healthpercent = round((atom_integrity/max_integrity) * 100, 1) switch(healthpercent) @@ -67,58 +50,76 @@ if(0 to 25) . += span_warning("It's falling apart!") -/obj/item/shield/riot/proc/shatter(mob/living/carbon/human/owner) - playsound(owner, 'sound/effects/glassbr3.ogg', 100) - new /obj/item/shard((get_turf(src))) +/obj/item/shield/proc/shatter(mob/living/carbon/human/owner) + playsound(owner, shield_break_sound, 50) + new shield_break_leftover(get_turf(src)) -/obj/item/shield/riot/on_shield_block(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", damage = 0, attack_type = MELEE_ATTACK) +/obj/item/shield/proc/on_shield_block(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", damage = 0, attack_type = MELEE_ATTACK) if (atom_integrity <= damage) - var/turf/T = get_turf(owner) - T.visible_message(span_warning("[hitby] destroys [src]!")) + var/turf/owner_turf = get_turf(owner) + owner_turf.visible_message(span_warning("[hitby] destroys [src]!")) shatter(owner) qdel(src) return FALSE take_damage(damage) - return ..() + return TRUE -/obj/item/shield/riot/roman +/obj/item/shield/buckler + name = "wooden buckler" + desc = "A medieval wooden buckler." + icon_state = "buckler" + inhand_icon_state = "buckler" + custom_materials = list(/datum/material/wood = MINERAL_MATERIAL_AMOUNT * 10) + resistance_flags = FLAMMABLE + block_chance = 30 + max_integrity = 55 + w_class = WEIGHT_CLASS_NORMAL + +/obj/item/shield/roman name = "\improper Roman shield" desc = "Bears an inscription on the inside: \"Romanes venio domus\"." icon_state = "roman_shield" inhand_icon_state = "roman_shield" - lefthand_file = 'icons/mob/inhands/equipment/shields_lefthand.dmi' - righthand_file = 'icons/mob/inhands/equipment/shields_righthand.dmi' - transparent = FALSE custom_materials = list(/datum/material/iron=8500) max_integrity = 65 + shield_break_sound = 'sound/effects/grillehit.ogg' + shield_break_leftover = /obj/item/stack/sheet/iron -/obj/item/shield/riot/roman/fake +/obj/item/shield/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, FIRE = 0, ACID = 0) max_integrity = 30 -/obj/item/shield/riot/roman/shatter(mob/living/carbon/human/owner) - playsound(owner, 'sound/effects/grillehit.ogg', 100) - new /obj/item/stack/sheet/iron(get_turf(src)) +/obj/item/shield/riot + name = "riot shield" + desc = "A shield adept at blocking blunt objects from connecting with the torso of the shield wielder." + icon_state = "riot" + inhand_icon_state = "riot" + custom_materials = list(/datum/material/glass=7500, /datum/material/iron=1000) + transparent = TRUE + max_integrity = 75 + shield_break_sound = 'sound/effects/glassbr3.ogg' + shield_break_leftover = /obj/item/shard -/obj/item/shield/riot/buckler - name = "wooden buckler" - desc = "A medieval wooden buckler." - icon_state = "buckler" - inhand_icon_state = "buckler" - lefthand_file = 'icons/mob/inhands/equipment/shields_lefthand.dmi' - righthand_file = 'icons/mob/inhands/equipment/shields_righthand.dmi' - custom_materials = list(/datum/material/wood = MINERAL_MATERIAL_AMOUNT * 10) - resistance_flags = FLAMMABLE - block_chance = 30 - transparent = FALSE - max_integrity = 55 - w_class = WEIGHT_CLASS_NORMAL - -/obj/item/shield/riot/buckler/shatter(mob/living/carbon/human/owner) - playsound(owner, 'sound/effects/bang.ogg', 50) - new /obj/item/stack/sheet/mineral/wood(get_turf(src)) +/obj/item/shield/riot/attackby(obj/item/attackby_item, mob/user, params) + if(istype(attackby_item, /obj/item/melee/baton)) + if(!COOLDOWN_FINISHED(src, baton_bash)) + return + user.visible_message(span_warning("[user] bashes [src] with [attackby_item]!")) + playsound(user.loc, 'sound/effects/shieldbash.ogg', 50, TRUE) + COOLDOWN_START(src, baton_bash, BATON_BASH_COOLDOWN) + return + if(istype(attackby_item, /obj/item/stack/sheet/mineral/titanium)) + if (atom_integrity >= max_integrity) + to_chat(user, span_warning("[src] is already in perfect condition.")) + return + var/obj/item/stack/sheet/mineral/titanium/titanium_sheet = attackby_item + titanium_sheet.use(1) + atom_integrity = max_integrity + to_chat(user, span_notice("You repair [src] with [titanium_sheet].")) + return + return ..() /obj/item/shield/riot/flash name = "strobe shield" @@ -181,9 +182,9 @@ owner?.update_held_items() addtimer(CALLBACK(src, TYPE_PROC_REF(/atom, update_appearance)), 0.5 SECONDS, (TIMER_UNIQUE|TIMER_OVERRIDE)) //.5 second delay so the inhands sprite finishes its anim since inhands don't support flick(). -/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 +/obj/item/shield/riot/flash/attackby(obj/item/attackby_item, mob/user) + if(istype(attackby_item, /obj/item/assembly/flash/handheld)) + var/obj/item/assembly/flash/handheld/flash = attackby_item if(flash.burnt_out) to_chat(user, span_warning("No sense replacing it with a broken bulb!")) return @@ -225,8 +226,6 @@ desc = "A shield that reflects almost all energy projectiles, but is useless against physical attacks. It can be retracted, expanded, and stored anywhere." icon_state = "eshield" inhand_icon_state = "eshield" - lefthand_file = 'icons/mob/inhands/equipment/shields_lefthand.dmi' - righthand_file = 'icons/mob/inhands/equipment/shields_righthand.dmi' w_class = WEIGHT_CLASS_TINY attack_verb_continuous = list("shoves", "bashes") attack_verb_simple = list("shove", "bash") @@ -234,7 +233,7 @@ force = 3 throwforce = 3 throw_speed = 3 - + breakable_by_damage = FALSE /// Whether the shield is currently extended and protecting the user. var/enabled = FALSE /// Force of the shield when active. @@ -280,8 +279,6 @@ icon_state = "teleriot" inhand_icon_state = "teleriot" worn_icon_state = "teleriot" - lefthand_file = 'icons/mob/inhands/equipment/shields_lefthand.dmi' - righthand_file = 'icons/mob/inhands/equipment/shields_righthand.dmi' custom_materials = list(/datum/material/iron = 3600, /datum/material/glass = 3600, /datum/material/silver = 270, /datum/material/titanium = 180) slot_flags = null force = 3 @@ -322,3 +319,5 @@ playsound(user ? user : src, 'sound/weapons/batonextend.ogg', 50, TRUE) balloon_alert(user, "[active ? "extended" : "collapsed"]") return COMPONENT_NO_DEFAULT_MESSAGE + +#undef BATON_BASH_COOLDOWN diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index b6562a94d6a..fc68233ee64 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -305,7 +305,7 @@ GLOBAL_LIST_INIT(wood_recipes, list ( \ new/datum/stack_recipe("picture frame", /obj/item/wallframe/picture, 1, time = 1 SECONDS),\ new/datum/stack_recipe("painting frame", /obj/item/wallframe/painting, 1, time = 1 SECONDS),\ new/datum/stack_recipe("display case chassis", /obj/structure/displaycase_chassis, 5, one_per_turf = TRUE, on_solid_ground = TRUE), \ - new/datum/stack_recipe("wooden buckler", /obj/item/shield/riot/buckler, 20, time = 4 SECONDS), \ + new/datum/stack_recipe("wooden buckler", /obj/item/shield/buckler, 20, time = 4 SECONDS), \ new/datum/stack_recipe("apiary", /obj/structure/beebox, 40, time = 5 SECONDS),\ new/datum/stack_recipe("tiki mask", /obj/item/clothing/mask/gas/tiki_mask, 2), \ new/datum/stack_recipe("honey frame", /obj/item/honey_frame, 5, time = 1 SECONDS),\ diff --git a/code/modules/antagonists/wizard/equipment/artefact.dm b/code/modules/antagonists/wizard/equipment/artefact.dm index 33530d9e4b2..ff6526180c6 100644 --- a/code/modules/antagonists/wizard/equipment/artefact.dm +++ b/code/modules/antagonists/wizard/equipment/artefact.dm @@ -288,7 +288,7 @@ H.equip_to_slot_or_del(new hat(H), ITEM_SLOT_HEAD) H.equip_to_slot_or_del(new /obj/item/clothing/under/costume/roman(H), ITEM_SLOT_ICLOTHING) H.equip_to_slot_or_del(new /obj/item/clothing/shoes/roman(H), ITEM_SLOT_FEET) - H.put_in_hands(new /obj/item/shield/riot/roman(H), TRUE) + H.put_in_hands(new /obj/item/shield/roman(H), TRUE) H.put_in_hands(new /obj/item/claymore(H), TRUE) H.equip_to_slot_or_del(new /obj/item/spear(H), ITEM_SLOT_BACK) diff --git a/code/modules/mob_spawn/corpses/mining_corpses.dm b/code/modules/mob_spawn/corpses/mining_corpses.dm index c92f4db87fc..23a3117186d 100644 --- a/code/modules/mob_spawn/corpses/mining_corpses.dm +++ b/code/modules/mob_spawn/corpses/mining_corpses.dm @@ -192,7 +192,7 @@ if(prob(30)) back = /obj/item/nullrod/scythe/talking else - back = /obj/item/shield/riot/buckler + back = /obj/item/shield/buckler belt = /obj/item/nullrod/claymore /datum/outfit/consumed_shadowperson diff --git a/code/modules/research/xenobiology/crossbreeding/_weapons.dm b/code/modules/research/xenobiology/crossbreeding/_weapons.dm index 2e3144a7718..0b2640733c1 100644 --- a/code/modules/research/xenobiology/crossbreeding/_weapons.dm +++ b/code/modules/research/xenobiology/crossbreeding/_weapons.dm @@ -70,6 +70,7 @@ Slimecrossing Weapons attack_verb_continuous = list("bashes", "pounds", "slams") attack_verb_simple = list("bash", "pound", "slam") item_flags = SLOWS_WHILE_IN_HAND + breakable_by_damage = FALSE /obj/item/shield/adamantineshield/Initialize(mapload) . = ..() diff --git a/code/modules/vending/autodrobe.dm b/code/modules/vending/autodrobe.dm index 67ecc9254ab..3f91e1c1fbc 100644 --- a/code/modules/vending/autodrobe.dm +++ b/code/modules/vending/autodrobe.dm @@ -207,7 +207,7 @@ /obj/item/clothing/head/helmet/roman/legionnaire/fake = 1, /obj/item/clothing/under/costume/roman = 1, /obj/item/clothing/shoes/roman = 1, - /obj/item/shield/riot/roman/fake = 1, + /obj/item/shield/roman/fake = 1, /obj/item/clothing/suit/chaplainsuit/clownpriest = 1, /obj/item/clothing/head/chaplain/clownmitre = 1, /obj/item/skub = 1, diff --git a/icons/mob/inhands/equipment/shields_lefthand.dmi b/icons/mob/inhands/equipment/shields_lefthand.dmi index 47d6be3f8c7..4075fb26a96 100644 Binary files a/icons/mob/inhands/equipment/shields_lefthand.dmi and b/icons/mob/inhands/equipment/shields_lefthand.dmi differ diff --git a/icons/mob/inhands/equipment/shields_righthand.dmi b/icons/mob/inhands/equipment/shields_righthand.dmi index af80dfeccc3..73127fb026b 100644 Binary files a/icons/mob/inhands/equipment/shields_righthand.dmi and b/icons/mob/inhands/equipment/shields_righthand.dmi differ diff --git a/icons/mob/inhands/items_lefthand.dmi b/icons/mob/inhands/items_lefthand.dmi index 25450693db3..7c74900f55e 100644 Binary files a/icons/mob/inhands/items_lefthand.dmi and b/icons/mob/inhands/items_lefthand.dmi differ diff --git a/icons/mob/inhands/items_righthand.dmi b/icons/mob/inhands/items_righthand.dmi index 2b752d6bc0e..5f5ff748e12 100644 Binary files a/icons/mob/inhands/items_righthand.dmi and b/icons/mob/inhands/items_righthand.dmi differ diff --git a/icons/obj/weapons/shields.dmi b/icons/obj/weapons/shields.dmi index c0a2d6a2993..cbf4b612bca 100644 Binary files a/icons/obj/weapons/shields.dmi and b/icons/obj/weapons/shields.dmi differ diff --git a/icons/obj/xenobiology/slimecrossing.dmi b/icons/obj/xenobiology/slimecrossing.dmi index 6d74116a18b..07bdc442022 100644 Binary files a/icons/obj/xenobiology/slimecrossing.dmi and b/icons/obj/xenobiology/slimecrossing.dmi differ diff --git a/modular_skyrat/modules/reagent_forging/code/crafting_bench_recipes.dm b/modular_skyrat/modules/reagent_forging/code/crafting_bench_recipes.dm index 4e2f3966f9f..1a9001cc154 100644 --- a/modular_skyrat/modules/reagent_forging/code/crafting_bench_recipes.dm +++ b/modular_skyrat/modules/reagent_forging/code/crafting_bench_recipes.dm @@ -97,7 +97,7 @@ recipe_requirements = list( /obj/item/forging/complete/plate = 8, ) - resulting_item = /obj/item/shield/riot/buckler/reagent_weapon/pavise + resulting_item = /obj/item/shield/buckler/reagent_weapon/pavise required_good_hits = 16 /datum/crafting_bench_recipe/buckler @@ -105,7 +105,7 @@ recipe_requirements = list( /obj/item/forging/complete/plate = 5, ) - resulting_item = /obj/item/shield/riot/buckler/reagent_weapon + resulting_item = /obj/item/shield/buckler/reagent_weapon required_good_hits = 10 /datum/crafting_bench_recipe/coil diff --git a/modular_skyrat/modules/reagent_forging/code/forge_weapons.dm b/modular_skyrat/modules/reagent_forging/code/forge_weapons.dm index 07b2bb5534f..cb9a7a6b24e 100644 --- a/modular_skyrat/modules/reagent_forging/code/forge_weapons.dm +++ b/modular_skyrat/modules/reagent_forging/code/forge_weapons.dm @@ -164,7 +164,7 @@ return user.changeNext_move(CLICK_CD_RAPID) -/obj/item/shield/riot/buckler/reagent_weapon //Same as a buckler, but metal. +/obj/item/shield/buckler/reagent_weapon //Same as a buckler, but metal. name = "reagent plated buckler shield" desc = "A small, round shield best used in tandem with a melee weapon in close-quarters combat." icon = 'modular_skyrat/modules/reagent_forging/icons/obj/forge_items.dmi' @@ -182,21 +182,18 @@ w_class = WEIGHT_CLASS_NORMAL material_flags = MATERIAL_EFFECTS | MATERIAL_ADD_PREFIX | MATERIAL_GREYSCALE | MATERIAL_AFFECT_STATISTICS skyrat_obj_flags = ANVIL_REPAIR + shield_break_sound = 'sound/effects/bang.ogg' + shield_break_leftover = /obj/item/forging/complete/plate -/obj/item/shield/riot/buckler/reagent_weapon/Initialize(mapload) +/obj/item/shield/buckler/reagent_weapon/Initialize(mapload) . = ..() AddComponent(/datum/component/reagent_weapon) -/obj/item/shield/riot/buckler/reagent_weapon/shatter(mob/living/carbon/human/owner) - owner.balloon_alert_to_viewers("shield has shattered!") - playsound(owner, 'sound/effects/bang.ogg', 50) - new /obj/item/forging/complete/plate(get_turf(src)) - -/obj/item/shield/riot/buckler/reagent_weapon/examine(mob/user) +/obj/item/shield/buckler/reagent_weapon/examine(mob/user) . = ..() . += span_notice("Using a hammer on [src] will repair its damage!") -/obj/item/shield/riot/buckler/reagent_weapon/attackby(obj/item/attacking_item, mob/user, params) +/obj/item/shield/buckler/reagent_weapon/attackby(obj/item/attacking_item, mob/user, params) if(atom_integrity >= max_integrity) return ..() if(istype(attacking_item, /obj/item/forging/hammer)) @@ -212,7 +209,7 @@ return return ..() -/obj/item/shield/riot/buckler/reagent_weapon/pavise //similar to the adamantine shield. Huge, slow, lets you soak damage and packs a wallop. +/obj/item/shield/buckler/reagent_weapon/pavise //similar to the adamantine shield. Huge, slow, lets you soak damage and packs a wallop. name = "reagent plated pavise shield" desc = "An oblong shield used by ancient crossbowmen as cover while reloading. Probably just as useful with an actual gun." icon_state = "pavise" @@ -224,7 +221,7 @@ slot_flags = ITEM_SLOT_BACK max_integrity = 300 //tanky -/obj/item/shield/riot/buckler/reagent_weapon/pavise/Initialize(mapload) +/obj/item/shield/buckler/reagent_weapon/pavise/Initialize(mapload) . = ..() AddComponent(/datum/component/two_handed, require_twohands = TRUE, force_wielded = 15) diff --git a/modular_skyrat/modules/tribal_extended/code/recipes.dm b/modular_skyrat/modules/tribal_extended/code/recipes.dm index f06bd44f8f7..7ffdd409920 100644 --- a/modular_skyrat/modules/tribal_extended/code/recipes.dm +++ b/modular_skyrat/modules/tribal_extended/code/recipes.dm @@ -70,7 +70,7 @@ /datum/crafting_recipe/goliathshield name = "Goliath shield" - result = /obj/item/shield/riot/goliath + result = /obj/item/shield/goliath reqs = list( /obj/item/stack/sheet/bone = 4, /obj/item/stack/sheet/animalhide/goliath_hide = 3, diff --git a/modular_skyrat/modules/tribal_extended/code/weapons/shield.dm b/modular_skyrat/modules/tribal_extended/code/weapons/shield.dm index af0fab67ce5..f52a8be7be9 100644 --- a/modular_skyrat/modules/tribal_extended/code/weapons/shield.dm +++ b/modular_skyrat/modules/tribal_extended/code/weapons/shield.dm @@ -1,4 +1,4 @@ -/obj/item/shield/riot/goliath +/obj/item/shield/goliath name = "goliath shield" desc = "A shield made from interwoven plates of goliath hide." icon = 'modular_skyrat/modules/tribal_extended/icons/shields.dmi' @@ -8,11 +8,7 @@ worn_icon = 'modular_skyrat/modules/tribal_extended/icons/back.dmi' worn_icon_state = "goliath_shield" inhand_icon_state = "goliath_shield" - transparent = FALSE max_integrity = 200 w_class = WEIGHT_CLASS_BULKY - -/obj/item/shield/riot/goliath/shatter(mob/living/carbon/human/owner) - playsound(owner, 'sound/effects/bang.ogg', 50) - new /obj/item/stack/sheet/animalhide/goliath_hide(get_turf(src)) - qdel(src) + shield_break_sound = 'sound/effects/bang.ogg' + shield_break_leftover = /obj/item/stack/sheet/animalhide/goliath_hide diff --git a/modular_skyrat/modules/xenoarch/code/modules/research/xenoarch/xenoarch_reward.dm b/modular_skyrat/modules/xenoarch/code/modules/research/xenoarch/xenoarch_reward.dm index ae45234cfa8..b5f4f658aa8 100644 --- a/modular_skyrat/modules/xenoarch/code/modules/research/xenoarch/xenoarch_reward.dm +++ b/modular_skyrat/modules/xenoarch/code/modules/research/xenoarch/xenoarch_reward.dm @@ -47,7 +47,7 @@ GLOBAL_LIST_INIT(weapon_reward, list( /obj/item/claymore/cutlass = 1, /obj/item/gun/ballistic/automatic/pistol = 1, /obj/item/shield/riot = 1, - /obj/item/shield/riot/roman = 1, + /obj/item/shield/roman = 1, /obj/item/pneumatic_cannon = 1, /obj/item/gun/syringe/rapidsyringe = 1, ))